KR20200113155A - 블록체인 네트워크에서의 데이터 격리 - Google Patents

블록체인 네트워크에서의 데이터 격리 Download PDF

Info

Publication number
KR20200113155A
KR20200113155A KR1020197028791A KR20197028791A KR20200113155A KR 20200113155 A KR20200113155 A KR 20200113155A KR 1020197028791 A KR1020197028791 A KR 1020197028791A KR 20197028791 A KR20197028791 A KR 20197028791A KR 20200113155 A KR20200113155 A KR 20200113155A
Authority
KR
South Korea
Prior art keywords
node
blockchain
mpt
lightweight
original
Prior art date
Application number
KR1020197028791A
Other languages
English (en)
Other versions
KR102243754B1 (ko
Inventor
차오 셴
웬빈 장
수밍 루
Original Assignee
알리바바 그룹 홀딩 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알리바바 그룹 홀딩 리미티드 filed Critical 알리바바 그룹 홀딩 리미티드
Publication of KR20200113155A publication Critical patent/KR20200113155A/ko
Application granted granted Critical
Publication of KR102243754B1 publication Critical patent/KR102243754B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Abstract

본 명세서의 구현은, 상기 블록체인 네트워크의 경량 노드로부터, 상기 경량 노드의 아이덴티티를 포함하는 동기화 요청을 수신하는 것; 상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것; 블록 높이와 연관되고 복수의 계정 레코드들을 포함하는 오리지널 세계 상태 구조를 결정하는 것; 상기 하나 이상의 권한에 기초하여, 상기 경량 노드에 의한 액세스가 인가된 상기 복수의 계정 레코드의 서브세트를 식별하는 것; 상기 오리지널 세계 상태 구조에 기초하여, 상기 경량 노드에 의한 액세스가 인가된, 상기 복수의 계정 레코드들의 서브세트만을 포함하는 격리된 세계 상태 구조를 생성하는 것; 상기 격리된 세계 상태 데이터 구조를 포함하는 응답을 상기 경량 노드에 전송하는 것을 포함한다.

Description

블록체인 네트워크에서의 데이터 격리
컨센서스(consensus) 네트워크들 및/또는 블록체인 네트워크들로서 또한 지칭되는 DLS(distributed ledger system)은 참여하는 엔티티들이 데이터를 안전하게 그리고 불변적으로 저장하는 것을 가능하게 한다. DLS들은 일반적으로 임의의 특정 사용 경우와 관계없이 블록체인 네트워크로서 지칭된다. 블록체인 네트워크들의 유형들은 공개 블록체인 네트워크들, 개인 블록체인 네트워크들 및 컨소시엄 블록체인 네트워크들을 포함할 수 있다. 모든 엔티티들이 DLS를 사용하고 컨센서스 프로세스에 참여하기 위해 공개 블록체인 네트워크가 개방되어 있다. 개인 블록체인 네트워크에는 판독 및 기록 권한들을 중앙에서 제어하는 특정 엔티티가 제공된다. 컨센서스 블록체인 네트워크에는 컨소시엄 프로세스를 제어하는 엔티티들의 선택된 그룹이 제공되며, 액세스 제어 층을 포함한다.
블록체인 네트워크들은 다른 유형들의 노드들을 포함할 수 있다. 완전-참여 노드(fully-participating node)들(이하 "블록체인 노드들"로서 지칭됨)은 블록체인에 추가할 새로운 트랜잭션들의 블록들을 구성 및 입증(validate)하도록 시도함으로써 블록체인 네트워크에 대한 컨센서스 프로세스에 참여한다. 경량 노드들은 블록체인 네트워크에 대한 컨센서스 프로세스에 참여하지 않으며 블록체인의 자체 내부 표현을 완전히 동기화할 수 없을 수 있다. 예를 들어, 경량 노드는 블록체인의 특정 블록 내의 모든 트랜잭션 데이터가 아닌 블록 헤더 정보만을 동기화할 수 있다.
개인 또는 컨소시엄 블록체인 네트워크들에서, 노드들(이를테면, 경량 노드들)은 블록체인으로부터, 예를 들어, 경량 노드와 연관된 아이덴티티(identity)가 참여하는 트랜잭션들과 같은 소정의 트랜잭션들을 판독할 수 있는 권한만을 가질 수 있다. 이러한 경우에, 경량 노드는 특정 블록에 대해 블록체인 노드에 질의할 수 있고, 그 경량 노드가 블록에서 액세스하는 트랜잭션만의 표현(예를 들어, 머클 트리(Merkle Tree))이 리턴될 수 있다. 이러한 방식으로 구성된 머클 트리는 블록의 트랜잭션을 표현하는 전체 머클 트리와 일치하지 않을 수 있으며, 이는 블록의 정확한 표현을 갖지 않는 노드로 인한 경량 노드의 에러로 이어질 수 있다.
블록체인 네트워크의 "세계 상태(world state)"는, 일반적으로 MPT(Merkle Patricia Trie)의 구조로 블록체인 노드에 저장되는 블록체인 네트워크 상의 모든 일반 계정들 및 계약 계정들의 상태들의 모음을 지칭한다. 블록체인 네트워크에서, 일부 참가자들은 컨센서스에 참여하는 블록체인 노드를 유지하는 반면, 일부 참가자들은 하나의 경량 노드만을 유지한다. 이는 비용 또는 인가, 및 컨센서스에 참여하지 않고 블록체인 노드로부터의 데이터를 동기화만하는 노드에 기인할 수 있다.
경량 노드들은 모든 블록들의 완전한 데이터 또는 블록 헤더 데이터만 저장할 수 있다. 예를 들어, 다양한 예시적인 블록체인 네트워크들은 블록 헤더 데이터만이 동기화되는 경량 노드들을 가질 수 있다. 경량 노드는 검증될 트랜잭션에 따라 블록체인 노드로부터 MPT 상의 대응하는 데이터를 풀링(pull)하고 블록체인 노드는 경량 노드가 데이터를 풀링하는 범위를 제한하지 않는다.
일부 시나리오들에서, 특히 엔터프라이즈 애플리케이션의 연합 체인 시나리오에서, 세계 상태 데이터에 대한 액세스를 제어될 수 있다. 예를 들어, 특정 엔티티는 자신이 관리하는 계정들에 대한 세계 상태 데이터에만 액세스하도록 인가될 수 있다. 그러나, 엔티티에 의해 제어되는 경량 노드들은 트랜잭션들을 검증하기 위해 전체 MPT를 수신할 수 있다. 따라서, 구성된 권한들에 따라 MPT의 정보에 대한 경량 노드의 액세스를 제어하면서, 경량 노드가 MPT에 기초한 트랜잭션들을 여전히 검증할 수 있게 하는 것이 바람직할 것이다.
본 명세서의 구현은 블록체인 네트워크의 경량 노드들에 대한 격리 요건들을 만족시키기 위한 블록체인 네트워크의 세계 상태 데이터에 대한 격리 방식에 대한 컴퓨터-구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현은 경량 노드에 의한 액세스가 인가되지 않은 데이터를 포함하지 않지만 블록체인 네트워크의 세계 상태 데이터와 여전히 일치하는 상태 MPT(Merkle Patricia Trie)(또는 "격리된 MPT")를 생성하는 것에 관한 것이다.
본 명세서에 따른 방법들은 본원에서 설명된 양상들 및 특징들의 임의의 조합을 포함할 수 있다는 것이 인지된다. 즉, 본 명세서에 따른 방법들은 본원에서 구체적으로 설명된 양상들 및 특징들의 조합들로 제한되는 것이 아니라, 제공되는 양상들 및 특징들의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 구현들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기술된다. 본 명세서의 다른 특징들 및 이점들은, 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1은 본 명세서의 구현들을 실행하는 데 사용될 수 있는 환경의 예를 도시한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처의 예를 도시한다.
도 3은 세계 상태 동기화 프로세스 동안 블록체인 네트워크의 경량 노드와 블록체인 노드 사이의 상호작용의 예를 도시한다.
도 4a는 도 3에 도시된 블록체인 노드에 대한 세계 상태 데이터 구조의 예를 도시한다.
도 4b는 도 3에 도시된 경량 노드에 대한 격리된 세계 상태 데이터 구조의 예를 도시한다.
도 5는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스의 예를 도시한다.
도 6은 본 명세서의 구현들에 따른 장치의 모듈들의 예들을 도시한다.
다양한 도면들 내의 유사한 참조 기호들은 유사한 엘리먼트들을 표시한다.
본 명세서의 구현은 블록체인 네트워크의 경량 노드들에 대한 격리 요건들을 만족시키기 위한 블록체인 네트워크의 세계 상태 데이터에 대한 격리 방식에 대한 컴퓨터-구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현은 경량 노드에 의한 액세스가 인가되지 않은 데이터를 포함하지 않지만 블록체인 네트워크의 세계 상태 데이터와 여전히 일치하는 격리된 상태 MPT(Merkle Patricia Trie)(또는 "격리된 MPT")를 생성하는 것에 관한 것이다.
방법의 일부 구현들에서, 액션들은, 블록체인 네트워크의 블록체인 노드에 의해, 블록체인 네트워크의 경량(light-weight) 노드로부터 동기화 요청을 수신하는 것 - 동기화 요청은 경량 노드의 아이덴티티(identity) 및 동기화 요청과 연관된 블록 높이를 포함함 - ; 블록체인 노드에 의해, 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것; 블록체인 노드에 의해, 블록 높이와 연관되고 복수의 계정 레코드들을 포함하는 오리지널 세계 상태 구조를 결정하는 것 - 각각의 계정 레코드는 계정 레코드와 연관된 계정에 대한 상태 정보를 저장하고, 오리지널 세계 상태 구조는 블록 높이와 연관된 블록이 블록체인에 추가된 시간에서의 블록체인 네트워크의 상태를 표현함 - ; 블록체인 노드에 의해 그리고 하나 이상의 권한에 기초하여, 경량 노드에 의한 액세스가 인가된 복수의 계정 레코드들의 서브세트를 식별하는 것; 블록체인 노드에 의해, 오리지널 세계 상태 데이터 구조에 기초하여, 격리된 세계 상태 구조를 생성하는 것 - 격리된 세계 상태 구조는 경량 노드에 의한 액세스가 인가된, 복수의 계정 레코드들의 서브세트만을 포함함 - ; 그리고 블록체인 노드에 의해, 격리된 세계 상태 데이터 구조를 포함하는 응답을 경량 노드에 전송하는 것을 포함한다.
본 명세서의 구현들에 대한 추가의 맥락을 제공하기 위해 그리고 위에서 소개된 바와 같이, 컨센서스 네트워크들(예를 들어, 피어-투-피어 노드들로 구성됨), 및 블록체인 네트워크로서 또한 지칭될 수 있는 DSL(distributed ledger system)들은, 참여 엔티티들이 안전하고 불변적으로 트랜잭션들을 수행하고 데이터를 저장하는 것을 가능하게 한다. 블록체인이라는 용어는 일반적으로 특정 네트워크들 및/또는 사용 경유들과 연관되고, 블록체인은 본원에서 어떠한 특정 사용 경우와 관계없이 DLS를 일반적으로 지칭하기 위해 사용된다.
블록체인은 트랜잭션들이 불변적인(immutable) 방식으로 트랜잭션들을 저장하는 데이터 구조이다. 따라서, 블록체인 상에 레코딩된 트랜잭션들은 신뢰성있고 믿을 수 있다. 블록체인은 하나 이상의 블록들을 포함한다. 체인 내의 각각의 블록은 이전 블록의 암호화 해시(cryptographic hash)를 포함함으로써 체인 내에 자신 바로 앞의 이전 블록에 링크된다. 각각의 블록은 또한 타임스탬프, 자체 암호화 해시 및 하나 이상의 트랜잭션들을 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된 트랜잭션들은 해시되고 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프 노드들의 데이터가 해시되고 트리의 각각의 분기(branch)의 모든 해시들이 분기의 루트에서 연접되는 데이터 구조이다. 이 프로세스는 전체 트리의 루트까지 트리에서 계속되며, 트리의 모든 데이터를 나타내는 해시를 저장한다. 트리에 저장된 트랜잭션인 것으로 간주되는 해시는 그것이 트리의 구조와 일치하는지 여부를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션들을 저장하기 위한 분산된 또는 적어도 부분적으로 분산된 데이터 구조인 반면, 블록체인 네트워크는 트랜잭션들을 브로드캐스팅, 검증 및 입증 등을 행함으로써 하나 이상의 블록체인들을 관리, 업데이트 및 유지(maintain)하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개된 바와 같이, 블록체인 네트워크는 공개 블록체인 네트워크, 개인 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 본 명세서의 구현은 컨소시엄 블록체인 네트워크를 참조하여 본원에서 더 상세히 설명된다. 그러나, 본 명세서의 구현들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 고려된다.
일반적으로 컨소시엄 블록체인 네트워크는 참여 엔티티들 사이에서 비공개(private)이다. 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는 컨센서스 노드들로서 지칭될 수 있는 노드들의 인가된 세트에 의해 제어되며, 하나 이상의 컨센서스 노드들은 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 동작된다. 예를 들어, 10개의 엔티티들(예를 들어, 금융 기관들, 보험 회사들)의 컨소시엄은 컨소시엄 블록체인 네트워크를 동작시킬 수 있으며, 이들 각각은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 동작시킨다.
일부 예들에서, 컨소시엄 블록체인 네트워크 내에서, 글로벌 블록체인은 모든 노드들에 걸쳐 복제되는 블록체인으로서 제공된다. 즉, 모든 컨센서스 노드들은 글로벌 블록체인과 관련하여 완벽한 상태 컨센서스(perfect state consensus)에 있다. 컨센서스를 달성하기 위해(예를 들어, 블록체인에의 블록의 추가에 대한 합의), 컨센서스 프로토콜은 컨소시엄 블록체인 네트워크 내에서 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는 아래에서 추가로 상세히 설명된 PBFT(practical Byzantine fault tolerance) 컨센서스를 구현할 수 있다.
머클 패트리샤 트리(Merkle Patricia Trie) 또는 "MPT"는 저장된 데이터가 신속하게 검색 및 검증될 수 있게 하는 데이터 구조이다. MPT는 머클 트리 및 패트리샤 트리(Patricia trie)의 양상들을 결합한다. 머클 트리는 데이터 아이템의 해시가 각각의 리프 노드에 저장되는 이진 트리 구조이다. 각각의 비-리프 노드는 그의 2개의 차일드 노드들의 해시들의 연접(concatenation)의 해시를 포함한다. 이 구조는, 리프 노드들에서 해시된 데이터 아이템들 중 임의의 것에 대한 변화(이는 그 노드 해시를 변경할 것임)가 또한 트리의 루트 해시의 변화를 야기할 것임을 보장한다. 따라서, 머클 트리에서 해시된 데이터 아이템의 어서트된 값(asserted value)은 어서트된 값의 해시가 트리와 일치하는지(즉, 루트 해시가 변경되는지 여부)를 체크함으로써 검증될 수 있다.
페트리샤 트리는 저장된 데이터를 표현하는 키(예를 들어, 해시)에 기초하여 리프 노드들에 저장된 데이터를 구성하는 구조이다. 트리의 각각의 비-리프 노드는 키 값들의 프리픽스와 연관된다. 각각의 리프 노드는 가장 긴 매칭되는 프리픽스를 갖는 노드의 차일드로서 저장된다. 이는, 루트로부터 시작해서 특정 키 값과 매칭하는 프리픽스 노드들의 경로를 따라 페트리샤 트리를 횡단(traversing)함으로써 특정 키 값을 가진 노드가 신속하게 발견될 수 있게 한다.
MPT는 머클 트리와 페트리샤 트리의 개념들을 결합하고 3개의 유형들의 노드들을 포함한다. 리프 노드들은 키들(예를 들어, 해시들)과 연관된 데이터를 저장한다. 분기 노드들은 다수의 값들(예를 들어, 26개의 문자들 각각 또는 16개의 16진수 숫자들 각각)을 차일드 노드에 매핑하고 거기서 끝나는 키들과 연관된 데이터를 또한 저장하는 "라우터"로서 기능한다. 차일드 노드는 리프 노드 또는 확장 노드일 수 있으며, 이는 그의 차일드 노드 모두에 공통인 키 부분을 포함하는 노드이다.
일부 경우들에서, MPT는 블록체인 네트워크에 계정들의 상태를 저장하는 데 사용될 수 있다. 예를 들어, 블록체인 내의 각각의 블록은 블록이 블록체인에 추가된 시간에 블록체인 네트워크에서의 각각의 계정에 대한 밸런스(balance)들을 포함하는 계정 레코드들을 저장하는 MPT에 대한 참조를 포함할 수 있다. 계정 레코드들은 계정과 연관된 공개 키에 기초하여 MPT에서 구성될 수 있다. 이러한 MPT는 블록이 체인에 추가된 시간에 블록체인 네트워크의 "세계 상태"에 대한 스냅샷을 제공할 수 있다.
본 명세서의 구현들은 위의 맥락을 고려하여 본원에서 추가로 상세히 설명된다. 보다 구체적으로, 그리고 위에서 소개된 바와 같이, 본 명세서의 구현들은 경량 네트워크에 의한 액세스가 인가되지 않는 세계 상태 데이터 구조 내의 데이터를 포함하지 않지만 세계 상태 데이터 구조를 표현하는 완전한 MPT와 여전히 일치하는 격리된 MPT를 생성하는 것에 관한 것이다. 격리된 MPT는 경량 상태 네트워크 상에 로컬로 저장된 MPT의 데이터 구조가 블록체인 네트워크의 세계 상태 데이터 구조와 일치하도록 세계 상태 동기화 요청에 대한 응답으로 경량 노드에 제공될 수 있다(경량 노드가 제한된 데이터에 액세스할 필요가 없음).
일부 구현들에서, 블록체인 네트워크의 경량 노드는 블록체인 네트워크의 블록체인 노드에 동기화 요청을 제공할 수 있다. 동기화 요청은 경량 노드의 아이덴티티, 예를 들어, 경량 노드를 관리하는 엔티티, 및 동기화 요청과 연관된 블록 높이를 포함할 수 있다. 블록체인 노드는 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하고, 블록체인 네트워크의 세계 상태 데이터 구조를 표현하고 동기화 요청에 의해 특정된 블록 높이 내에 있는 복수의 계정 레코드들을 포함하는 오리지널 MPT를 식별할 수 있다. 블록체인 노드는 경량 노드의 아이덴티티와 연관된 하나 이상의 권한에 기초하여 경량 노드에 의한 액세스가 인가된 복수의 계정 레코드들의 서브세트를 식별한다. 블록체인 노드는 오리지널 MPT에 기초하여 격리된 MPT를 생성한다. 격리된 MPT는 경량 노드에 의한 액세스가 인가된 계정 레코드들의 서브세트만을 포함한다. 격리된 MPT는 그 후 경량 노드에 전송되고 경량 노드에 로컬로 저장되며 블록체인 네트워크와의 세계 상태 데이터 동기화에 사용된다. 아래에서 논의되는 바와 같이, 격리된 MPT는 경량 노드에 의한 액세스가 인가 또는 권한부여되지 않은 데이터를 포함하지 않고, 블록체인 네트워크의 세계 상태 데이터 구조와 일치하는 데이터 구조를 포함할 수 있다.
도 1은 본 명세서의 구현들을 실행하는 데 사용될 수 있는 환경(100)의 예를 예시하는 도면이다. 일부 예들에서, 환경(100)은 엔티티들이 컨소시엄 블록체인 네트워크(102)에 참여하는 것을 가능하게 한다. 환경(100)은 컴퓨팅 디바이스들(106, 108) 및 네트워크(110)를 포함한다. 일부 예에서, 네트워크(110)는 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷 또는 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스들(예를 들어, 컴퓨팅 디바이스들) 및 백-엔드 시스템들을 연결한다. 일부 예들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다.
도시된 예에서, 컴퓨팅 시스템들(106, 108)은 각각 컨소시엄 블록체인 네트워크(102)에서 노드로서 참여할 수 있는 임의의 적절한 컴퓨팅 시스템을 포함할 수 있다. 컴퓨팅 디바이스들의 예들은 제한 없이, 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스 및 스마트 폰을 포함한다. 일부 예들에서, 컴퓨팅 시스템들(106, 108)은 컨소시엄 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터-구현 서비스들을 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제 1 엔티티(예를 들어, 사용자 A)가 하나 이상의 다른 엔티티들(예를 들어, 다른 사용자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 1 엔티티의 컴퓨터-구현 서비스들을 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제 2 엔티티(예를 들어, 사용자 B)가 하나 이상의 다른 엔티티들(예를 들어, 다른 사용자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 2 엔티티의 컴퓨터-구현 서비스들을 호스팅할 수 있다. 도 1의 예에서, 컨소시엄 블록체인 네트워크(102)는 노드의 피어-투-피어 네트워크로서 표현되고, 컴퓨팅 시스템들(106, 108)은 컨소시엄 블록체인 네트워크(102)에 참여하는 제 1 엔티티 및 제 2 엔티티의 노드들을 각각 제공한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처(200)의 예를 도시한다 개념 아키텍처(200)는 엔티티 층(202), 호스팅된 서비스 층(204) 및 블록체인 네트워크 층(206)을 포함한다. 도시된 예에서, 엔티티 층(202)은 3명의 참가자들인 참가자 A, 참가자 B 및 참가자 C를 포함하며, 각각의 참가자는 각각의 트랜잭션 관리 시스템(208)을 갖는다.
도시된 예에서, 호스팅된 서비스 층(204)은 각각의 트랜잭션 관리 시스템(210)에 대한 인터페이스들(210)을 포함한다. 일부 예들에서, 각각의 트랜잭션 관리 시스템(208)은 프로토콜(예를 들어, HTTPS(hypertext transfer protocol secure))을 사용하여 네트워크(예를 들어, 도 1의 네트워크(110))를 통해 각각의 인터페이스(210)와 통신한다. 일부 예들에서, 각각의 인터페이스(210)는 각각의 트랜잭션 관리 시스템(208)과 블록체인 네트워크 층(206) 사이의 통신 연결을 제공한다. 보다 구체적으로, 인터페이스(210)는 블록체인 네트워크 층(206)의 블록체인 네트워크(212)와 통신한다. 일부 예들에서, 인터페이스(210)와 블록체인 네트워크 층(206) 사이의 통신은 RPC(remote procedure call)들을 사용하여 수행된다. 일부 예들에서, 인터페이스들(210)은 각각의 트랜잭션 관리 시스템들(208)에 대한 "호스트" 블록체인 네트워크 노드들을 호스팅한다. 예를 들어, 인터페이스들(210)은 블록체인 네트워크(212)로의 액세스를 위한 API(application programming interface)를 제공한다.
본원에서 설명된 바와 같이, 블록체인 네트워크(212)는 블록체인(216)에 정보를 불변적으로 레코딩하는 복수의 노드들(214)을 포함하는 피어-투-피어 네트워크로서 제공된다. 단일 블록체인(216)이 개략적으로 도시되어 있지만, 블록체인(216)의 다수의 사본들이 제공되고 블록체인 네트워크(212)를 통해 유지된다. 예를 들어, 각각의 노드(214)는 블록체인의 사본을 저장한다. 일부 구현들에서, 블록체인(216)은 컨소시엄 블록체인 네트워크에 참여하는 둘 이상의 엔티티들 사이에서 수행되는 트랜잭션들과 연관된 정보를 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))은 블록들의 체인으로 구성되며, 각각의 블록은 데이터를 저장한다. 예를 들어, 데이터는 둘 이상의 참가자들 간의 트랜잭션을 나타내는 트랜잭션 데이터를 포함할 수 있다. 트랜잭션들이 비-제한적인 예로서 본원에서 사용되지만, 임의의 적절한 데이터가 블록체인(예를 들어, 문서들, 이미지들, 비디오들, 오디오)에 저장될 수 있는 것으로 고려된다. 예시적인 트랜잭션들은 제한 없이, 가치있는 것(예를 들어, 자산들, 제품들, 서비스들, 화폐)의 교환들을 포함한다. 트랜잭션 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 트랜잭션 데이터를 변경할 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터가 해시된다. 해싱은 트랜잭션 데이터(문자열 데이터로서 제공됨)를 고정-길이 해시 값(문자열 데이터로서 또한 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위해 해시 값을 언-해시(un-hash)하는 것을 가능하지 않다. 해싱은, 트랜잭션 데이터의 아주 약간의 변화가 완전히 상이한 해시 값을 발생시키는 것을 보장한다. 또한 그리고 위에서 언급된 바와 같이, 해시 값은 고정 길이이다. 즉, 트랜잭션 데이터의 크기에 관계없이, 해시 값의 길이는 고정된다. 해싱은, 해시 값을 생성하기 위해 해시 함수를 통해 트랜잭션 데이터를 프로세싱하는 것을 포함한다. 해시 함수의 예는 제한 없이, 256-비트 해시 값들을 출력하는 SHA(secure hash algorithm)-256을 포함한다.
다수의 트랜잭션들의 트랜잭션 데이터가 해시되고 블록에 저장된다. 예를 들어, 두 트랜잭션들의 해시 값들이 제공되며 자체로 해시되어 다른 해시를 제공한다. 블록에 저장될 모든 트랜잭션들에 대해, 단일 해시 값이 제공될 때까지 이 프로세스가 반복된다. 이 해시 값은 머클(Merkle) 루트 해시로서 지칭되며, 블록의 헤더에 저장된다. 트랜잭션들 중 임의의 것에서의 변화는 그의 해시 값의 변화, 및 궁극적으로 머클 루트 해시의 변화를 초래할 것이다.
블록들은 컨센서스 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 다수의 노드들은 컨센서스 프로토콜에 참여하고 블록체인에 블록을 추가하기 위한 작업을 수행한다. 이러한 노드들은 컨센서스 노드들로서 지칭된다. 위에서 소개된 PBFT가 컨센서스 프로토콜의 비-제한적인 예로서 사용된다. 컨센서스 노드들은 컨센서스 프로토콜을 실행하여 트랜잭션들을 블록체인에 추가하고 블록체인 네트워크의 전체 상태를 업데이트한다.
더 상세히, 컨센서스 노드는 블록 헤더를 생성하고, 블록의 모든 트랜잭션들을 해시하고, 블록의 모든 트랜잭션들에 대해 단일 해시 값이 제공될 때까지(머클 루트 해시) 추가의 해시 값을 생성하도록 쌍들의 해시 값을 결합한다. 이 해시는 블록 헤더에 추가된다. 컨센서스 노드는 또한 블록체인에서 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 결정한다. 컨센서스 노드는 또한 넌스(nonce) 값 및 타임스탬프를 블록 헤더에 추가한다.
일반적으로 PBFT는 비잔틴 장애(Byzantine fault)들(예를 들어, 오작동 노드들, 악성 노드들)을 용인(tolerate)하는 실용적인 비잔틴 상태 머신 복제를 제공한다. 이는 장애들이 발생한다고 가정(예를 들어, 독립적인 노드 장애들 및/또는 컨센서스 노드들에 의해 전송된 조작된 메시지들의 존재를 가정함)함으로써 PBFT에서 달성된다. PBFT에서, 주 컨센서스 노드 및 백업 컨센서스 노드들을 포함하는 컨센서스 노드들이 순차적으로 제공된다. 주 컨센서스 노드가 주기적으로 변경된다. 블록체인 네트워크 내의 모든 컨센서스 노드들이 블록체인 네트워크의 세계 상태에 대한 합의(agreement)에 도달함으로써 트랜잭션이 블록체인에 추가된다. 이 프로세스에서, 메시지들은 컨센서스 노드들 간에 송신되며, 각각의 컨센서스 노드들은 메시지가 특정된 피어 노드로부터 수신되었음을 판명하고 송신 동안 메시지가 수정되지 않았음을 검증한다.
PBFT에서 컨센서스 프로토콜은 다수의 페이즈들로 제공되며, 모든 컨센서스 노드들이 동일한 상태에서 시작한다. 시작을 위해, 클라이언트는 서비스 동작을 인보크하기 위해 주 컨센서스 노드에 요청을 전송한다(예를 들어, 블록체인 네트워크 내에서 트랜잭션을 실행함). 요청을 수신한 것에 대한 응답으로, 주 컨센서스 노드는 요청을 백업 컨센서스 노드들에 멀티캐스팅한다. 백업 컨센서스 노드들은 요청을 실행하고 클라이언트에 답장을 각각 전송한다. 클라이언트는 임계 수의 답장들이 수신될 때까지 대기한다. 일부 예들에서, 클라이언트는 f + 1개의 답장들이 수신되기를 기다리며, 여기서 f는 블록체인 네트워크 내에서 용인될 수 있는 장애 컨센서스 노드의 최대 수이다. 최종 결과는, 충분한 수의 컨센서스 노드들이 블록체인에 추가될 레코드 순서에 동의하고 레코드가 수락되거나 거부되는 것이다.
일부 블록체인 네트워크들에서, 암호화가 구현되어 트랜잭션의 프라이버시를 유지한다. 예를 들어, 두 노드들이 트랜잭션을 비공개로 유지하고자 하여서, 블록체인 네트워크 내의 다른 노드들이 트랜잭션의 세부사항을 구별할 수 없게 하는 경우, 노드들은 트랜잭션 데이터를 암호화할 수 있다. 암호화 방법들의 예들은 제한 없이, 대칭 암호화 및 비대칭 암호화를 포함한다. 대칭 암호화는 암호화(평문으로부터 암호문을 생성함) 및 복호화(암호문으로부터 평문을 생성함) 둘 모두에 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 동일한 키를 다수의 노드들이 이용 가능하여서, 각각의 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 개인 키와 공개 키를 각각 포함하는 키 쌍들을 사용하며, 개인 키는 각각의 노드에만 알려지고 공개 키는 블록체인 네트워크 내의 임의의 또는 모든 다른 노드들에 알려진다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있으며 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화될 수 있다. 예를 들어, 그리고 도 2를 다시 참조하면, 참가자 A는 참가자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참가자 B에게 전송할 수 있다. 참가자 B는 자신의 개인 키를 이용하여 암호화된 데이터(암호문)를 복호화하고 오리지널 데이터(평문)를 추출한다. 노드의 공개 키로 암호화된 메시지는 노드의 개인 키를 이용해서만 복호화될 수 있다.
비대칭 암호화는 트랜잭션의 유효성뿐만 아니라, 트랜잭션의 참가자들이 트랜잭션의 다른 참가자들을 확인하는 것을 가능하게 하는 디지털 서명들을 제공하는 데 사용된다. 예를 들어, 노드는 메시지에 디지털로 서명할 수 있고 다른 노드는 참가자 A의 디지털 서명에 기초하여 메시지가 노드에 의해 전송되었음을 확인할 수 있다. 디지털 서명들은 또한 메시지들이 전송 도중에 변조되지 않았음을 보장하는 데 사용될 수 있다. 예를 들어, 그리고 도 2를 재차 참조하면, 참가자 A는 참가자 B에 메시지를 전송할 것이다. 참가자 A는 메시지의 해시를 생성하고, 그 후 자신의 개인 키를 이용하여, 해시를 암호화하여 암호화된 해시로서 디지털 서명을 제공한다. 참가자 A는 메시지에 디지털 서명을 덧붙이고 디지털 서명을 한 메시지를 참가자 B에 전송한다. 참가자 B는 참가자 A의 공개 키를 사용하여 디지털 서명을 복호화하고 해시를 추출한다. 참가자 B는 메시지를 해시하고 해시들을 비교한다. 해시들이 동일한 경우, 참가자 B는 메시지가 실제로 참가자 A로부터 왔으며 변조되지 않았음을 확인할 수 있다.
도 3은 세계 상태 동기화 프로세스 동안 블록체인 네트워크 예를 들어, 도 2의 블록체인 네트워크(212)의 경량 노드(310)와 블록체인 노드(320) 사이의 상호작용의 예를 도시한다. 세계 상태 동기화 프로세스는 도 3에 도시된 단계들로 진행된다. 305에서, 경량 노드(310)는 초기에 동기화 트리거 조건을 검출한다. 예를 들어, 동기화 트리거 조건은 경량 노드(310)가 가장 최근의 동기화 포인트로부터의 설정된 임계치, 이를테면, 가장 최근 동기화 포인트로부터의 블록들의 수를 초과했음을 표시할 수 있다. 다른 예들에서, 동기화 트리거 조건은 경량 노드(310)에 의해 검출되고 동기화 프로세스를 개시하는 데 사용되는, 블록체인 노드(320)의 특정된 이벤트들일 수 있다. 예를 들어, 경량 노드(310)는 블록체인 노드(320)로부터 이벤트 메시지를 수신할 수 있고, 이에 응답하여, 이벤트 메시지의 수신에 기초하여 동기화 프로세스를 개시할 수 있다. 일부 다른 예들에서, 동기화 트리거 조건은 경량 노드(310)에 의해 제공되는 서비스 인터페이스를 통한 외부 호 트리거링을 표현할 수 있고, 사용자 또는 엔티티가 예를 들어, 수동으로 동기화 프로세스를 트리거하는 것을 가능하게 할 수 있다.
310에서, 경량 노드(310)는 단계(305)에서의 동기화 트리거 조건의 검출에 기초하여 세계 상태 동기화 요청을 생성한다. 구체적으로, 경량 노드(310)는 범위 리스트, 예를 들어 계정 레코드들이 동기화될 어드레스들 또는 식별자들의 리스트를 풀링할 수 있다. 동기화 요청은 또한 동기화를 위한 블록 높이를 식별할 수 있다. 본원에서 설명된 바와 같이, 블록 높이는 동기화될 제 1 블록과 기원 블록 사이, 즉 0 블록 높이를 갖는 블록 사이의 체인에서 블록들의 수를 표현한다.
315에서, 경량 노드(310)는 동기화 요청을 블록체인 노드(320)로 전송한다. 동기화 요청은 경량 노드(310)를 관리하거나 그렇지 않으면, 이와 연관된 엔티티의 아이덴티티를 표현하는 아이덴티티 증명서를 포함할 수 있다. 아래에서 설명되는 바와 같이, 아이덴티티 증명서는 경량 노드(310)에 의한 액세스가 인가된 블록체인 내의 데이터, 예를 들어 아이덴티티 증명서와 연관된 어드레스들을 갖는 계정 레코드뿐만 아니라, 경량 노드(310)에 의한 액세스가 인가되지 않은 블록체인 내의 데이터 예를 들어, 경량 노드(310)를 관리하는 엔티티 이외의 엔티티들에 대한 어드레스들을 갖는 계정 레코드들 결정하는 데 사용될 수 있다.
325에서, 블록체인 노드(320)는 동기화 요청 내의 블록 높이에 대응하는 블록체인의 세계 상태를 표현하는 오리지널 MPT를 식별한다. 예를 들어, 블록체인 노드는 오리지널 MPT로서 블록 높이에 대응하는 블록체인 내의 블록의 블록 헤더에 저장된 MPT를 식별할 수 있다. 블록체인 네트워크의 세계 상태 구조를 표현하는 오리지널 MPT의 예가 도 4a에 도시된다.
330에서, 블록체인 노드(320)는 오리지널 MPT의 세계 상태 구조에 포함된 어드레스들에 대응하는 리프 블록을 식별한다. 블록체인 노드(320)는 오리지널 MPT를 파싱(parse)하고 각각의 계정 레코드와 연관된 어드레스가 경량 노드(310)에 의한 액세스에 대해 인가되었는지 여부를 결정할 수 있다. 예를 들어, 블록체인 노드(320)는 그것이 경량 노드(310)의 엔티티와 연관된 어드레스를 포함하는 경우, 경량 노드(310)는 계정 레코드에 액세스하도록 인가된 것으로 결정할 수 있다.
335에서, 블록체인 노드(320)는 오리지널 MPT에 기초하여 격리된 MPT를 생성한다. 격리된 MPT는 경량 노드(310)에 의한 액세스가 인가된, 오리지널 MPT로부터의 계정 레코드들의 서브세트만을 포함한다.
일부 구현들에서, 블록체인 노드(320)는 블록체인 노드(320) 상에 저장된 액세스 제어 테이블에 액세스함으로써 격리된 MPT를 생성한다. 액세스 제어 테이블은 경량 노드(310)에 의한 액세스가 인가된, 오리지널 MPT의 세계 상태 데이터 구조에 표현된 개별 계정 레코드들을 결정하는 데 사용될 수 있다. 액세스 제어 테이블은 블록체인 네트워크의 경량 노드들과 연관된 엔티티들에 대한 권한들을 특정할 수 있다. 예를 들어, 액세스 제어 테이블은, 보안 계정 레코드들에 액세스하기 위해 상이한 아이덴티티 클래스들로 지정된 엔티티들이 상이한 권한 레벨들을 가질 수 있도록 각각의 엔티티와 연관된 아이덴티티 클래스를 특정할 수 있다. 예를 들어, 아이덴티티 클래스에 대한 하나의 권한 레벨은, 엔티티들이 특정 엔티티와 연관된 모든 계정 레코드들에 액세스하도록 인가됨을 표시할 수 있다.
일부 경우들에서, 액세스 제어 테이블에 의해 특정된 권한들은 경량 노드가 계정 데이터에 액세스하도록 인가되는 권한부여된 계정 어드레스들의 세트를 포함할 수 있다. 그러한 경우들에서, 블록체인 노드(320)는, 경량 노드(310)에 의한 액세스가 권한부여된 계정 레코드들, 예를 들어, 권한부여된 계정 어드레스를 포함하는 계정 레코드 및 권한부여되지 않은 계정 레코드, 및 경량 노드(310)에 의한 액세스가 권한부여되지 않은 계정 레코드들, 예를 들어, 권한부여된 계정 어드레스들의 세트에 포함되지 않은 계정 어드레스를 포함하는 계정 레코드들을 식별하기 위해 권한부여된 계정 어드레스들의 세트를 사용한다. 블록체인 노드(320)는 액세스가 권한부여되지 않은 계정 레코드들이 오리지널 MPT에 의해 표현된 세계 상태 데이터 구조로부터 누락되도록 격리된 MPT를 생성한다.
340에서, 블록체인 노드(320)는 단계(315)에서 수신된 동기화 요청에 대한 응답으로서 경량 노드(310)에 격리된 MPT를 전송한다. 345에서, 경량 노드(310)는 격리된 MPT에 기초하여 로컬로-유지되는 세계 상태 데이터 및 동기화 포인트를 업데이트한다. 예를 들어, 경량 노드(310)는 다음 동기화 포인트까지 로컬로 유지되는 세계 상태로서 격리된 MPT에 특정된 세계 상태 데이터 구조를 저장할 수 있다.
도 4a는 블록체인 노드에 대한 MPT(400)에 의해 표현된 세계 상태 데이터 구조의 예를 도시한다. 이 예에서, MPT(400)는 경량 노드, 예를 들어 경량 노드(310)로부터 세계 상태 동기화 요청을 수신하는 것에 대한 응답으로 블록체인 노드, 예를 들어 블록체인 노드(320)에 의해 생성된다. 일부 경우들에서, MPT(400)는 특정 블록 높이의 블록이 체인에 추가된 시간의 블록체인 네트워크의 세계 상태를 표현한다.
일부 경우들에서, MPT(400)의 세계 상태 데이터 구조는 각각의 계정 레코드에 의해 표현된 계정들을 식별하는 공개 키들에 따라 구성된다. 이전에 논의된 바와 같이, MPT는 계정 레코드들을 저장하는 리프 노드들(예를 들어, 422A, 422B), 다수의 값들(예를 들어, 26개의 문자들 각각 또는 16개의 16진수 숫자들 각각)을 차일드 노드에 매핑하고 계정 레코드를 또한 저장할 수 있는 "라우터"로서 기능하는 분기 노드들(예를 들어, 416A, 420) 및 그의 차일드 노드들 모두에 공통적인 키 부분을 포함하는 확장 노드들(예를 들어, 406B, 410A, 418B)를 포함한다. 위에서 설명된 바와 같이, MPT 내의 각각의 리프 노드(예를 들어, 422A, 422B)는 블록체인 네트워크에서 특정 계정과 연관된 공개 키 및 계정 밸런스(account balance)와 같이 특정 계정과 연관된 상태 데이터를 포함하는 계정 레코드이다. 또한, 각각의 분기 노드는 또한, MPT에서 분기 노드의 포지션에 대응하는 키를 가진 계정 레코드를 저장할 수 있다.
위에서 논의된 바와 같이, MPT(400)는 경량 노드에 의한 액세스가 인가된 계정 레코드들, 예를 들어, 경량 노드와 연관된 엔티티의 어드레스들을 포함하는 계정 레코드들, 및 경량 노드에 의한 액세스가 인가되지 않은 계정 레코드들을 포함한다.
도 4a에 도시된 예에서, MPT(400)의 영역(400B)에 포함된 계정 레코드들은 경량 노드(310)에 의한 액세스가 인가되지 않은 반면, 영역(400A)에 포함된 계정 레코드들은 경량 노드에 의한 액세스가 인가된다.
도 4b는 도 3에 도시된 경량 노드에 대한 격리된 MPT(405)에 의해 표현된 세계 상태 데이터 구조의 예를 도시한다. 이 예에서, 격리된 MPT(405)는 도 4a에 도시된 오리지널 MPT(400)에 기초하여 블록체인 노드, 예를 들어 블록체인 노드(320)에 의해 생성된다. 격리된 MPT(405)는 경량 노드가 액세스하도록 인가되지 않은 계정 레코드들을 누락한다. 예를 들어, MPT(405)는 계정 레코드(418C 및 418D)를 포함해서, MPT(400)의 영역(400B)의 모든 노드들을 누락한다. 위에서 논의된 바와 같이, 이들 계정 레코드들은 경량 노드에 의한 액세스가 인가되지 않고 이에 따라 격리된 MPT(405)로부터 누락된다.
도 4b에 도시된 예에서, 격리된 MPT(405)는 (위에서 설명된 바와 같이, 리프 및 분기 노드들에서) 오리지널 MPT(400)의 각각의 계정 레코드 및 그의 부모 및 차일드 엘리먼들을 파싱하고 계정 레코드들 또는 데이터 엘리먼트들이 경량 노드에 의한 액세스에 대해 권한부여되는지 여부를 결정하는 것에 기초하여 생성된다. 일부 경우들에서, 이 결정은 블록체인 노드 상에 저장된 액세스 제어 테이블에서 식별되는 권한부여된 어드레스들을 식별하는 것에 기초한다. 예를 들어, 계정 레코드들(422A 및 422B)에 포함된 키들 "0x3F06" 및 "0x313F"은 액세스 제어 테이블에 포함되고, 그 결과, 계정 레코드들(422A 및 422B)은 격리된 MPT(405)에 포함된다. 대조적으로, 계정 레코드(418C 및 418D)에 포함된 키들 "0x4E06" 및 "0x4E3F"는 액세스 제어 테이블에 포함되지 않고, 이에 따라 격리된 MPT(405)로부터 누락된다.
도 4b에 도시된 바와 같이, 계정 레코드들(422A 및 422B)로부터 MPT(400)의 루트 노드(402)까지의 경로 상의 중간 노드들은 격리된 MPT(405)에서 보존된다. 이들 중간 노드들은 MPT(400)의 분기 노드들(예를 들어, 416A, 420) 및 확장 노드들(예를 들어, 406B, 410A, 418B)을 포함한다.
도 5는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스(500)의 예를 도시한다. 일부 구현들에서, 프로세스(500)는 하나 이상의 컴퓨팅 디바이스들을 사용하여 실행되는 하나 이상의 컴퓨터-실행 가능 프로그램들을 사용하여 수행될 수 있다.
510에서, 블록체인 노드는 경량 노드로부터 동기화 요청을 수신한다. 예를 들어, 블록체인 네트워크의 블록체인 노드(320)는 블록체인 네트워크의 세계 상태에 대한 동기화 요청을 수신한다. 동기화 요청은 경량 노드(310)로부터 수신되고, 경량 노드(310)와 연관된 엔티티에 대한 식별자와 같은 경량 노드(310)의 아이덴티티를 포함한다. 동기화 요청은 기원 블록 예를 들어, 가장 최근의 이전의 동기화 포인트와 연관된 블록으로부터의 블록들의 수를 표현하는 블록 높이를 포함할 수 있다.
위에서 논의된 바와 같이, 동기화 요청은 동기화 트리거 조건, 이를테면, 마지막 동기화 포인트 이후 블록체인 네트워크에 추가되는 임계 수의 블록들 또는 경량 노드, 블록체인 노드 및 블록체인 네트워크 사이의 세계 상태 데이터 구조의 동기화를 필요로 하는 블록체인 네트워크에서의 특정 이벤트의 발생의 검출에 기초하여 생성될 수 있다.
520에서, 블록체인 노드는 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별한다. 일부 경우들에서, 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것은, 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들에 대한 하나 이상의 권한을 특정하는 액세스 제어 테이블에 액세스하는 것; 그리고 경량 노드의 아이덴티티에 대해 액세스 제어 테이블에 특정된 하나 이상의 권한을 식별하는 것을 포함한다. 일부 구현들에서, 액세스 제어 테이블은 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들 각각과 연관된 아이덴티티 클래스; 및 액세스 제어 테이블에 포함된 각각의 아이덴티티 클래스와 연관된 권한들을 포함한다. 일부 경우들에서, 하나 이상의 권한은 경량 노드의 아이덴티티가, 권한부여된 계정 어드레스들의 세트와 연관된 계정 레코드들에 액세스하도록 인가된다는 것을 특정하는 권한을 포함한다.
530에서, 블록체인 노드는 복수의 계정 레코드를 포함하고 블록 높이와 연관된 오리지널 세계 상태 데이터 구조(예를 들어, MPT(400))를 결정한다. 예를 들어, 블록체인 노드(320)는 블록 높이와 연관된 블록이 블록체인에 추가될 때의 시간의 블록체인 네트워크의 세계 상태 데이터 구조를 표현하는 오리지널 MPT(400)를 결정한다. 위에서 논의된 바와 같이, 오리지널 MPT(400)는 경량 노드(310)에 의한 액세스가 인가된 계정 레코드들을 포함한다.
540에서, 블록체인 노드는 경량 노드(310)에 의한 액세스가 인가된 복수의 계정 레코드들의 서브세트를 식별한다. 예를 들어, 블록체인 노드(320)는 액세스 제어 리스트에서 권한부여된 어드레스들로서 특정된 어드레스들을 포함하고 블록체인 노드(320)에 대한 액세스가 인가된 계정 레코드들을 식별한다.
550에서, 블록체인 노드는 경량 노드에 의한 액세스가 인가된, 복수의 계정 레코드들의 서브세트만을 포함하는 격리된 세계 상태 데이터를 구조를 생성한다. 예를 들어, 블록체인 노드(320)는 오리지널 MPT(400)의 영역(400B)으로부터 계정 레코드를 누락하는 격리된 MPT(405)를 생성한다. 일부 경우들에서, 격리된 MPT를 생성하는 것은 격리된 MPT를 생성하도록 오리지널 MPT를 수정하는 것을 포함하며, 이 오리지널 MPT를 수정하는 것은 오리지널 MPT로부터 경량 노드에 의해 액세스 가능하지 않은 것으로 결정된 모든 계정 레코드를 제거하는 것; 및 분기들 각각의 루트 해시만을 온전하게 남겨둔 채로 모든 계정 레코드들이 제거된, 오리지널 MPT의 분기들을 제거하는 것을 포함한다. 일부 구현들에서, 경량 노드가 계정 레코드에 대한 판독 액세스를 갖지 않는 것을 하나 이상의 권한이 표시하는 경우, 계정 레코드는 경량 노드에 의해 액세스 가능하지 않은 것으로 결정된다. 일부 경우들에서, 격리된 MPT를 생성하는 것은, 경량 노드가 액세스 가능한, 오리지널 MPT 내의 계정 레코드를 식별하는 것 - 계정 레코드는 오리지널 MPT의 특정 노드에 위치됨 - ; 계정 레코드를 저장하는 특정 노드로부터 MPT의 루트 노드까지 오리지널 MPT 내의 경로를 식별하는 것; 계정 레코드를 저장하는 특정 노드로부터 MPT의 루트 노드까지의 경로를 따라 오리지널 MPT에 위치된 중간 노드들을 식별하는 것; 그리고 격리된 MPT에 중간 노드들을 포함시키는 것을 포함한다.
560에서, 블록체인 노드는 격리된 세계 상태 데이터 구조를 포함하는, 경량 노드에 동기화 요청에 대한 응답을 전송한다. 예를 들어, 블록체인 노드(320)는 단계(510)에서 수신된 동기화 요청에 대한 응답으로서 경량 노드(310)에 격리된 MPT(405)를 전송한다. 경량 노드(310)는 다음 동기화 단계까지 블록체인 네트워크의 로컬로 저장된 세계 상태로서 격리된 MPT를 저장할 수 있다. 도 4a 및 도 4b 전반에 걸쳐 설명되고 도시된 바와 같이, 격리된 MPT(405)는, 경량 노드(310)에 의한 액세스가 인가되지 않은 계정 레코드들에 경량 노드(310)가 액세스할 필요 없이, 경량 노드(310)가 블록체인 노드(320)와 동기화될 수 있도록 오리지널 MPT와 동일한 세계 상태 데이터 구조를 특정하지만, 소정의 계정 레코드들을 누락한다.
일부 구현들에서, 격리된 MPT(405)를 수신하면, 경량 노드(310)는 격리된 MPT의 그의 로컬 버전을 블록체인 노드로부터 리턴된 격리된 MPT의 업데이트된 버전으로 대체할 수 있다.
도 6은 본 명세서의 구현들에 따른 장치(600)의 모듈들의 예들을 도시한다. 장치(600)는 컨소시엄 블록체인 네트워크와 같은 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 민감한 데이터를 보호하도록 구성된 블록체인 노드의 구현일 수 있다. 장치(600)는 위에서 설명된 구현들에 대응할 수 있고, 장치(600)는 다음 즉, 블록체인 네트워크의 경량 노드로부터 동기화 요청을 수신하기 위한 수신기 또는 수신 모듈(610) - 동기화 요청은 경량 노드의 아이덴티티를 포함함 - ; 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하기 위한 제 1 식별자 또는 식별 모듈(620); 복수의 계정 레코드들을 포함하는 오리지널 세계 상태 구조를 결정하기 위한 결정기 또는 결정 모듈(630) - 각각의 계정 레코드는 계정 레코드와 연관된 계정에 대한 상태 정보를 저장함 - ; 하나 이상의 권한에 기초하여, 경량 노드에 의한 액세스가 인가된 복수의 계정 레코드의 서브세트를 식별하기 위한 제 2 식별자 또는 식별 모듈(640); 오리지널 세계 상태 데이터 구조에 기초하여, 격리된 세계 상태 구조를 생성기 또는 생성하기 위한 생성기 또는 생성 모듈(650) - 격리된 세계 상태 구조는 경량 노드에 의한 액세스가 인가된, 복수의 계정 레코드들의 서브세트만을 포함함 - ; 및 격리된 세계 상태 데이터 구조를 포함하는 응답을 경량 노드에 전송하기 위한 전송기 또는 전송 모듈(660)을 포함한다.
이전의 구현들에서 예시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용함으로써 구현될 수 있거나, 또는 소정의 기능을 갖는 제품을 사용함으로써 구현될 수 있다. 통상적인 구현 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트폰, 개인용 디지털 보조기기, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이들 디바이스들의 임의의 조합일 수 있다.
장치 내의 각각의 유닛의 기능들 및 역할들의 구현 프로세스에 대해, 이전 방법에서 대응하는 단계들의 구현 프로세스가 참조될 수 있다. 세부사항들은 여기서 간략화를 위해 생략된다.
장치 구현은 기본적으로 방법 구현에 대응하기 때문에, 관련된 부분들에 대해, 방법 구현에서의 관련된 설명이 참조할 수 있다. 전술한 장치 구현은 단지 예일 뿐이다. 별개의 부분으로서 설명된 유닛은 물리적으로 별개일 수 있거나 또는 그렇지 않을 수 있고, 유닛으로서 디스플레이되는 부분은 물리적 유닛일 수 있거나 또는 그렇지 않을 수 있거나, 또는 하나의 포지션에 위치되거나 또는 다수의 네트워크 유닛 상에 분포될 수 있다. 본 명세서의 솔루션들의 목적들을 달성하기 위해 실제 요구들에 기초하여 모듈들 중 일부 또는 전부가 선택될 수 있다. 당업자는 창조 노력들 없이 본 명세서의 구현들을 이해하고 구현할 수 있다.
다시 도 6을 참조하면, 이는 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 민감한 데이터를 보호하도록 구성된 블록체인 노드의 내부 기능 모듈 및 구조를 예시하는 것으로서 해석될 수 있다. 본질적으로 실행 본체는 전자 디바이스일 수 있고, 전자 디바이스는 하나 이상의 프로세서; 및 하나 이상의 프로세서의 실행 가능한 명령어들을 저장하는 메모리를 포함한다.
본 명세서에 설명된 기술들은 여러 기술적 효과들을 생성한다. 예를 들어, 격리된 세계 상태 구조(예를 들어, MPT)를 생성하기 위한 기술들은 블록체인 네트워크의 경량 노드들이 블록체인 네트워크의 액세스 제어 권한들을 위반하지 않고 세계 상태 구조에 기초하여 트랜잭션들을 검증하는 것을 가능하게 한다. 이는, 블록체인 네트워크에서 데이터 액세스의 보다 효과적인 제어를 허용하며, 이는 보다 안전한 네트워크로 이어질 수 있다. 또한, 격리된 세계 상태 구조를 생성하는 기술은 비-격리 세계 상태 구조와 일치하는 구조를 발생시킨다. 이는, 경량 노드가 비-격리 세계 상태 구조와 동일한 프로세스를 사용하여 격리된 세계 상태 구조에 기초하여 트랜잭션들을 검증하도록 허용할 수 있고 그리하여 액세스 제어를 시행하기 위해 경량 노드들을 업데이트할 임의의 필요성을 완화한다. 또 다른 구현들에서, 기술들은 블록체인 네트워크들에서 투명성과 데이터--보호 사이의 균형을 유지한다. 특히, 블록체인 설계자들은 시스템 구축에 직면할 때 난제에 직면한다. 한편으로, 블록체인들은 투명한 감사 가능성이 최고여서 공유 분산 원장(shared distributed ledger)을 통해 신뢰를 달성한다. 다른 한편으로, 기업 트랜잭션들은 종종 다수의 이유들로 모든 참가자들 사이에서 공유되진 않아야 하는 민감한 데이터를 다룬다. 이 기술들은 참가자의 데이터를 보호하는 동시에 분산된 신뢰 및 투명성의 이점들을 유지한다.
청구 대상의 설명된 실시예들은 하나 이상의 특징들을 단독으로 또는 조합하여 포함할 수 있다.
일부 실시예들에서, 액션들은, 블록체인 네트워크의 블록체인 노드에 의해, 블록체인 네트워크의 경량 노드로부터 동기화 요청을 수신하는 것 - 동기화 요청은 경량 노드의 아이덴티티 및 동기화 요청과 연관된 블록 높이를 포함함 - ; 블록체인 노드에 의해, 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것; 블록체인 노드에 의해, 블록 높이와 연관되고 복수의 계정 레코드들을 포함하는 오리지널 세계 상태 구조를 결정하는 것 - 각각의 계정 레코드는 계정 레코드와 연관된 계정에 대한 상태 정보를 저장하고, 오리지널 세계 상태 구조는 블록 높이와 연관된 블록이 블록체인에 추가된 시간에서의 블록체인 네트워크의 상태를 표현함 - ; 블록체인 노드에 의해 그리고 하나 이상의 권한에 기초하여, 경량 노드에 의한 액세스가 인가된 복수의 계정 레코드들의 서브세트를 식별하는 것; 블록체인 노드에 의해, 오리지널 세계 상태 데이터 구조에 기초하여, 격리된 세계 상태 구조를 생성하는 것 - 격리된 세계 상태 구조는 경량 노드에 의한 액세스가 인가된, 복수의 계정 레코드들의 서브세트만을 포함함 - ; 그리고 블록체인 노드에 의해, 격리된 세계 상태 데이터 구조를 포함하는 응답을 경량 노드에 전송하는 것을 포함한다.
다른 실시예들은 컴퓨터 저장 디바이스들 상에 인코딩된 방법들의 액션들을 수행하도록 구성되는, 대응하는 시스템들, 장치 및 컴퓨터 프로그램들을 포함한다.
이들 및 다른 실시예들은 선택적으로 다음의 특징들 중 하나 이상을 각각 포함할 수 있다.
일부 경우들에서, 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것은, 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들에 대한 하나 이상의 권한을 특정하는 액세스 제어 테이블에 액세스하는 것; 그리고 경량 노드의 아이덴티티에 대해 액세스 제어 테이블에 특정된 하나 이상의 권한을 식별하는 것을 포함한다.
일부 실시예들에서, 액세스 제어 테이블은 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들 각각과 연관된 아이덴티티 클래스; 및 액세스 제어 테이블에 포함된 각각의 아이덴티티 클래스와 연관된 권한들을 포함한다.
일부 실시예들에서, 하나 이상의 권한은 경량 노드의 아이덴티티가, 권한부여된 계정 어드레스들의 세트와 연관된 계정 레코드들에 액세스하도록 인가된다는 것을 특정하는 권한을 포함한다.
일부 실시예들에서, 오리지널 세계 상태 구조는, 오리지널 MPT(Merkle Patricia Trie)이고 격리된 세계 상태 구조는 격리된 MPT이다.
일부 실시예들에서, 격리된 MPT를 생성하는 것은 격리된 MPT를 생성하도록 오리지널 MPT를 수정하는 것을 포함하며, 오리지널 MPT를 수정하는 것은 오리지널 MPT로부터 경량 노드에 의해 액세스 가능하지 않은 것으로 결정된 모든 계정 레코드를 제거하는 것; 및 분기들 각각의 루트 해시만을 온전하게 남겨둔 채로 모든 계정 레코드들이 제거된, 오리지널 MPT의 분기들을 제거하는 것을 포함한다.
일부 실시예들에서, 경량 노드가 계정 레코드에 대한 판독 액세스를 갖지 않는 것을 하나 이상의 권한이 표시하는 경우, 계정 레코드는 경량 노드에 의해 액세스 가능하지 않은 것으로 결정된다.
일부 실시예들에서, 격리된 MPT를 생성하는 것은, 경량 노드가 액세스 가능한, 오리지널 MPT 내의 계정 레코드를 식별하는 것 - 계정 레코드는 오리지널 MPT의 특정 노드에 위치되고, 특정 노드는 분기 노드 또는 리프 노드임 - ; 계정 레코드를 저장하는 특정 노드로부터 MPT의 루트 노드까지 오리지널 MPT 내의 경로를 식별하는 것; 계정 레코드를 저장하는 특정 노드로부터 MPT의 루트 노드까지의 경로를 따라 오리지널 MPT에 위치된 중간 노드들을 식별하는 것; 그리고 격리된 MPT에 중간 노드들을 포함시키는 것을 포함한다.
본 명세서는 또한, 하나 이상의 프로세서에 커플링되고 명령어들이 저장되어 있는 하나 이상의 비-일시적인 컴퓨터-판독 가능 저장 매체들을 제공하며, 이 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 본원에서 제공된 방법들의 실시예들에 따른 동작들을 수행하게 한다.
본 명세서는 추가로, 본원에서 제공된 방법들을 구현하기 위한 시스템을 제공한다. 시스템은, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 커플링되고 명령어들이 저장되어 있는 컴퓨터-판독 가능 저장 매체를 포함하며, 이 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 본원에서 제공된 방법들의 실시예들에 따른 동작들을 수행하게 한다.
본 명세서에서 설명된 청구대상 액션들 및 동작들의 실시예들은, 본 명세서에서 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 디지털 전자 회로로, 유형으로 구체화되는 컴퓨터 소프트웨어로 또는 펌웨어로, 컴퓨터 하드웨어로, 또는 그들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에 설명된 청구대상의 실시예들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어들 상에 인코딩된 하나 이상의 컴퓨터 프로그램들, 예를 들어, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 명령어들이 인코딩 또는 저장되어 있는 하나 이상의 컴퓨터-판독 가능 저장 매체들을 포함할 수 있다. 캐리어는 자기, 자기 광학 또는 광학 디스크, 솔리드 스테이트 드라이브, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 다른 유형들의 매체들과 같은 실재하는(tangible) 비-일시적인 컴퓨터-판독가능 매체일 수 있다. 대안적으로 또는 부가적으로, 캐리어는 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하기 위해 생성되는, 인위적으로 생성된 전파된 신호, 예를 들어, 머신-생성 전기, 광학 또는 전자기 신호일 수 있다. 컴퓨터-저장 매체는 머신-판독 가능 저장 디바이스, 머신-판독 가능 저장 기재, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들의 하나 이상의 조합이거나 그의 부분일 수 있다. 컴퓨터 저장 매체는 전파된 신호는 아니다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드로서 또한 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 인터프리팅된 언어들, 선언형 또는 절차형 언어들을 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며; 그것은 자립형 프로그램 또는 모듈, 컴포넌트, 엔진, 서브루틴 또는 컴퓨팅 환경에서 실행하기에 적합한 다른 유닛을 포함한 임의의 형태로 배포될 수 있으며, 이 환경은 하나 이상의 위치들에 있는 데이터 통신 네트워크에 의해 상호연결되는 하나 이상의 컴퓨터들을 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 대응할 필요는 없을 수 있다. 컴퓨터 프로그램은, 다른 프로그램들 또는 데이터(예를 들어, 마크업 언어 문서에 저장되는 하나 이상의 스크립트들)를 보유하는 파일의 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합된 파일들(예를 들어, 하나 이상의 모듈들, 서브-프로그램 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서들은, 예로서, 범용 및 특수-목적 마이크로프로세서들 둘 모두 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 커플링된 비-일시적인 컴퓨터-판독 가능 매체로부터의 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령어들을 수신할 것이다.
"데이터 프로세싱 장치"라는 용어는 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함해서, 데이터를 프로세싱하기 위한 모든 종류의 장치들, 디바이스들 및 머신들을 포함한다. 데이터 프로세싱 장치는 특수-목적 로직 회로, 예를 들어 FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 GPU(graphics processing unit)를 포함할 수 있다. 장치는 또한, 하드웨어 외에도, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하고 출력을 생성함으로써 동작들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 컴퓨터들 또는 프로세스들에 의해 수행될 수 있다. 프로세스 및 로직 흐름들은 또한 특수-목적 로직 회로, 예를 들어 FPGA, ASIC 또는 GPU, 또는 특수-목적 로직 회로 및 하나 이상의 프로그래밍된 컴퓨터들의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들, 또는 둘 모두 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및/또는 데이터를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령어들을 실행하기 위한 중앙 처리 장치 및 명령어들 및/또는 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들을 포함할 수 있다. 중앙 처리 장치 및 메모리는 특수-목적 로직 회로에 의해 보완되거나 또는 거기에 통합될 수 있다.
일반적으로, 컴퓨터는 또한 하나 이상의 저장 디바이스들로부터 데이터를 수신하거나 또는 이들에 데이터를 전달하도록 동작 가능하게 커플링되거나, 또는 이들을 포함할 것이다. 저장 디바이스들은 예를 들어 자기, 자기 광학 또는 광학 디스크들, 솔리드 스테이트 드라이브, 또는 임의의 다른 유형의 비-일시적인 컴퓨터-판독 가능 매체일 수 있다. 그러나 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 따라서, 컴퓨터는 로컬 및/또는 원격인 하나 이상의 메모리들과 같은 하나 이상의 저장 디바이스들에 커플링될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 통합 컴포넌트들인 하나 이상의 로컬 메모리들을 포함할 수 있거나, 또는 컴퓨터는 클라우드 네트워크에 있는 하나 이상의 원격 메모리들에 커플링될 수 있다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 몇 개만 언급하면, 모바일 전화, 개인용 디지털 보조기기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기 또는 휴대용 저장 디바이스, 예를 들어 범용 직렬 버스(USB) 플래시 드라이브에 임베딩될 수 있다.
컴포넌트들은 직접적으로 또는 하나 이상의 중간 컴포넌트들을 통해, 서로 통신 가능하게 이를테면, 전기적으로 또는 광학적으로 연결됨으로써 서로 "커플링"될 수 있다. 컴포넌트들은 또한, 컴포넌트들 중 하나가 다른 컴포넌트에 통합된 경우 서로 "커플링"될 수 있다. 예를 들어, 프로세서(예를 들어, L2 캐시 컴포넌트)에 통합된 저장 컴포넌트는 프로세서에 "커플링"된다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 청구 대상의 실시예들은 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스 예를 들어, LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 입력 디바이스, 예를 들어 키보드 및 포인팅 디바이스, 예를 들어 마우스, 트랙볼 또는 터치패드를 갖는 컴퓨터 상에 구현되거나, 이 컴퓨터와 통신하도록 구성될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백 예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 게다가, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이 디바이스로부터 문서들을 수신함으로써, 예를 들어, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 또는 사용자 디바이스 예를 들어, 스마트폰 또는 전자 태블릿 상에서 실행되는 앱과 상호작용함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지 또는 다른 형태들의 메시지를 개인용 디바이스, 예를 들어 메시징 애플리케이션을 실행하는 스마트 폰에 전송하고 답신으로 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서는 시스템들, 장치 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "~ 하도록 구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터들의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 시스템에는, 동작 시에 시스템이 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합이 설치되어 있음을 의미한다. 하나 이상의 컴퓨터 프로그램들이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 하나 이상의 프로그램들이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수-목적 로직 회로가 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 회로가 동작들 또는 액션들을 수행하는 전자 로직을 갖는다는 것을 의미한다.
본 명세서가 다수의 특정 실시예 세부사항들을 포함하지만, 이들은 청구항들 그 자체들에 의해 정의되는 청구되는 대상의 범위에 관한 제한들로서 해석되어서는 안 되며, 오히려, 특정 실시예들에 특유할 수 있는 특징들의 설명들로서 해석되어야 한다. 별개의 실시예들의 맥락에서 본 명세서에 설명된 소정의 특징들은 또한, 단일 실시예에서 조합하여 실현될 수 있다. 대조적으로, 단일 실시예의 맥락에서 설명된 다양한 특징들은 또한, 다수의 실시예들에서 개별적으로 또는 임의의 적합한 서브조합으로 실현될 수 있다. 더욱이, 특징들이 소정의 조합들로 작용하는 것으로 위에서 설명되고 심지어 초기에 이와 같이 청구될 수 있지만, 일부 경우들에서, 청구된 조합으로부터의 하나 이상의 특징들은 그 조합으로부터 제거될 수 있고, 청구항은 서브조합 또는 서브조합의 변동과 관련될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되고 청구항들에서 나열되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되지는 않아야 한다. 소정의 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하고, 그리고 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
청구대상의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에서 열거된 액션들은, 상이한 순서로 수행될 수 있으며, 그럼에도 불구하고 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 컴퓨터-구현 방법으로서,
    상기 블록체인 네트워크의 블록체인 노드에 의해, 상기 블록체인 네트워크의 경량(light-weight) 노드로부터 동기화 요청을 수신하는 단계 - 상기 동기화 요청은 상기 경량 노드의 아이덴티티(identity)를 포함함 - ;
    상기 블록체인 노드에 의해, 상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한(permission)을 식별하는 단계;
    상기 블록체인 노드에 의해, 복수의 계정 레코드(account record)들을 포함하는 오리지널 세계 상태(world state) 구조를 결정하는 단계 - 각각의 계정 레코드는 상기 계정 레코드와 연관된 계정에 대한 상태 정보를 저장함 - ;
    상기 블록체인 노드에 의해 그리고 상기 하나 이상의 권한에 기초하여, 상기 경량 노드에 의한 액세스가 인가된 복수의 계정 레코드들의 서브세트를 식별하는 단계;
    상기 블록체인 노드에 의해, 상기 오리지널 세계 상태 구조에 기초하여, 격리된 세계 상태 구조를 생성하는 단계 - 상기 격리된 세계 상태 구조는 상기 경량 노드에 의한 액세스가 인가된, 상기 복수의 계정 레코드들의 서브세트만을 포함함 - ; 및
    상기 블록체인 노드에 의해, 상기 격리된 세계 상태 구조를 포함하는 응답을 상기 경량 노드에 전송하는 단계
    를 포함하는, 컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 단계는,
    상기 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들에 대한 하나 이상의 권한을 특정하는 액세스 제어 테이블에 액세스하는 단계; 및
    상기 경량 노드의 아이덴티티에 대해 상기 액세스 제어 테이블에 특정된 하나 이상의 권한을 식별하는 단계
    를 포함하는 것인, 컴퓨터-구현 방법.
  3. 제2항에 있어서,
    상기 액세스 제어 테이블은,
    상기 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들 각각과 연관된 아이덴티티 클래스; 및
    상기 액세스 제어 테이블에 포함된 각각의 아이덴티티 클래스와 연관된 권한들
    을 포함하는 것인, 컴퓨터-구현 방법.
  4. 제2항에 있어서,
    상기 하나 이상의 권한은 상기 경량 노드의 아이덴티티가, 권한부여된 계정 어드레스들의 세트와 연관된 계정 레코드들에 액세스하도록 인가된다는 것을 특정하는 권한을 포함하는 것인, 컴퓨터-구현 방법.
  5. 제1항에 있어서,
    상기 오리지널 세계 상태 구조는 오리지널 머클 패트리샤 트리(Merkle Patricia Trie; MPT)이고 상기 격리된 세계 상태 구조는 격리된 MPT인 것인, 컴퓨터-구현 방법.
  6. 제5항에 있어서,
    상기 격리된 MPT를 생성하는 단계는 상기 격리된 MPT를 생성하도록 상기 오리지널 MPT를 수정하는 단계를 포함하고,
    상기 오리지널 MPT를 수정하는 단계는,
    상기 오리지널 MPT로부터 상기 경량 노드에 의해 액세스 가능하지 않은 것으로 결정된 모든 계정 레코드를 제거하는 단계; 및
    분기들 각각의 루트 해시만을 온전하게 남겨둔 채로 모든 계정 레코드들이 제거된, 상기 오리지널 MPT의 분기들을 제거하는 단계
    를 포함하는 것인, 컴퓨터-구현 방법.
  7. 제6항에 있어서,
    상기 경량 노드가 계정 레코드에 대한 판독 액세스를 갖지 않는 것을 상기 하나 이상의 권한이 표시하는 경우, 상기 계정 레코드는 상기 경량 노드에 의해 액세스 가능하지 않은 것으로 결정되는 것인, 컴퓨터-구현 방법.
  8. 제5항에 있어서,
    상기 격리된 MPT를 생성하는 단계는,
    상기 경량 노드가 액세스 가능한, 상기 오리지널 MPT 내의 계정 레코드를 식별하는 단계 - 상기 계정 레코드는 상기 오리지널 MPT의 특정 노드에 위치되고, 상기 특정 노드는 분기(branch) 노드 또는 리프(leaf) 노드임 - ;
    상기 계정 레코드를 저장하는 특정 노드로부터 상기 MPT의 루트 노드까지 상기 오리지널 MPT 내의 경로를 식별하는 단계;
    상기 계정 레코드를 저장하는 특정 노드로부터 상기 MPT의 루트 노드까지의 경로를 따라 상기 오리지널 MPT에 위치된 중간 노드들을 식별하는 단계; 및
    상기 격리된 MPT에 상기 중간 노드들을 포함시키는 단계
    를 포함하는 것인, 컴퓨터-구현 방법.
  9. 제1항에 있어서,
    상기 동기화 요청은 상기 동기화 요청과 연관된 블록 높이를 포함하고, 상기 오리지널 세계 상태 구조는, 상기 블록 높이에 기초하여 결정되고, 상기 블록 높이와 연관된 블록이 상기 블록체인에 추가된 때의 시간에서의 상기 블록체인 네트워크의 상태를 표현하는 것인, 컴퓨터-구현 방법.
  10. 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치로서,
    상기 블록체인 네트워크의 경량 노드로부터 동기화 요청을 수신하기 위한 수신 모듈 - 상기 동기화 요청은 상기 경량 노드의 아이덴티티를 포함함 - ;
    상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하기 위한 제 1 식별 모듈;
    복수의 계정 레코드들을 포함하는 오리지널 세계 상태 구조를 결정하기 위한 결정 모듈 - 각각의 계정 레코드는 상기 계정 레코드와 연관된 계정에 대한 상태 정보를 저장함 - ;
    상기 하나 이상의 권한에 기초하여, 상기 경량 노드에 의한 액세스가 인가된 상기 복수의 계정 레코드들의 서브세트를 식별하기 위한 식별 모듈;
    상기 오리지널 세계 상태 구조에 기초하여, 격리된 세계 상태 구조를 생성하기 위한 생성 모듈 - 상기 격리된 세계 상태 구조는 상기 경량 노드에 의한 액세스가 인가된, 상기 복수의 계정 레코드들의 서브세트만을 포함함 - ; 및
    상기 격리된 세계 상태 구조를 포함하는 응답을 상기 경량 노드에 전송하기 위한 전송 모듈
    을 포함하는, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  11. 제10항에 있어서,
    상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것은,
    상기 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들에 대한 하나 이상의 권한을 특정하는 액세스 제어 테이블에 액세스하는 것; 및
    상기 경량 노드의 아이덴티티에 대해 상기 액세스 제어 테이블에 특정된 하나 이상의 권한을 식별하는 것
    을 포함하는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  12. 제11항에 있어서,
    상기 액세스 제어 테이블은,
    상기 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들 각각과 연관된 아이덴티티 클래스; 및
    상기 액세스 제어 테이블에 포함된 각각의 아이덴티티 클래스와 연관된 권한들
    을 포함하는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  13. 제11항에 있어서,
    상기 하나 이상의 권한은 상기 경량 노드의 아이덴티티가, 권한부여된 계정 어드레스들의 세트와 연관된 계정 레코드들에 액세스하도록 인가된다는 것을 특정하는 권한을 포함하는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  14. 제10항에 있어서,
    상기 오리지널 세계 상태 구조는 오리지널 머클 패트리샤 트리(MPT)이고 상기 격리된 세계 상태 구조는 격리된 MPT인 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  15. 제14항에 있어서,
    상기 격리된 MPT를 생성하는 것은 상기 격리된 MPT를 생성하도록 상기 오리지널 MPT를 수정하는 것을 포함하고,
    상기 오리지널 MPT를 수정하는 것은,
    상기 오리지널 MPT로부터 상기 경량 노드에 의해 액세스 가능하지 않은 것으로 결정된 모든 계정 레코드를 제거하는 것; 및
    분기들 각각의 루트 해시만을 온전하게 남겨둔 채로 모든 계정 레코드들이 제거된, 상기 오리지널 MPT의 분기들을 제거하는 것
    을 포함하는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  16. 제15항에 있어서,
    상기 경량 노드가 계정 레코드에 대한 판독 액세스를 갖지 않는 것을 상기 하나 이상의 권한이 표시하는 경우, 상기 계정 레코드는 상기 경량 노드에 의해 액세스 가능하지 않은 것으로 결정되는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  17. 제14항에 있어서,
    상기 격리된 MPT를 생성하는 것은,
    상기 경량 노드가 액세스 가능한, 상기 오리지널 MPT 내의 계정 레코드를 식별하는 것 - 상기 계정 레코드는 상기 오리지널 MPT의 특정 노드에 위치되고, 상기 노드는 분기 노드 또는 리프 노드임 - ;
    상기 계정 레코드를 저장하는 특정 노드로부터 상기 MPT의 루트 노드까지 상기 오리지널 MPT 내의 경로를 식별하는 것;
    상기 계정 레코드를 저장하는 특정 노드로부터 상기 MPT의 루트 노드까지의 경로를 따라 상기 오리지널 MPT에 위치된 중간 노드들을 식별하는 것; 및
    상기 격리된 MPT에 상기 중간 노드들을 포함시키는 것
    을 포함하는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  18. 제10항에 있어서,
    상기 동기화 요청은 상기 동기화 요청과 연관된 블록 높이를 포함하고, 상기 오리지널 세계 상태 구조는, 상기 블록 높이에 기초하여 결정되고, 상기 블록 높이와 연관된 블록이 상기 블록체인에 추가된 때의 시간에서의 상기 블록체인 네트워크의 상태를 표현하는 것인, 블록체인 네트워크에 의해 유지되는 블록체인 상에 저장된 데이터를 격리하기 위한 장치.
  19. 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 커플링되고, 명령어들이 저장되어 있는 하나 이상의 컴퓨터-판독 가능 메모리
    를 포함하고,
    상기 명령어들은,
    블록체인 네트워크의 블록체인 노드에 의해, 상기 블록체인 네트워크의 경량 노드로부터 동기화 요청을 수신하고 - 상기 동기화 요청은 상기 경량 노드의 아이덴티티를 포함함 - ;
    상기 블록체인 노드에 의해, 상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하고;
    상기 블록체인 노드에 의해, 복수의 계정 레코드들을 포함하는 오리지널 세계 상태 구조를 결정하고 - 각각의 계정 레코드는 상기 계정 레코드와 연관된 계정에 대한 상태 정보를 저장함 - ;
    상기 블록체인 노드에 의해 그리고 상기 하나 이상의 권한에 기초하여, 상기 경량 노드에 의한 액세스가 인가된 복수의 계정 레코드들의 서브세트를 식별하고;
    상기 블록체인 노드에 의해, 상기 오리지널 세계 상태 구조에 기초하여, 격리된 세계 상태 구조를 생성하고 - 상기 격리된 세계 상태 구조는 상기 경량 노드에 의한 액세스가 인가된, 상기 복수의 계정 레코드들의 서브세트만을 포함함 - ;
    상기 블록체인 노드에 의해, 상기 격리된 세계 상태 구조를 포함하는 응답을 상기 경량 노드에 전송하게 하도록, 상기 하나 이상의 프로세서에 의해 실행 가능한 것인, 시스템.
  20. 제19항에 있어서,
    상기 경량 노드의 아이덴티티와 연관된 하나 이상의 권한을 식별하는 것은,
    상기 블록체인 네트워크의 복수의 경량 노드들의 복수의 아이덴티티들에 대한 하나 이상의 권한을 특정하는 액세스 제어 테이블에 액세스하는 것; 및
    상기 경량 노드의 아이덴티티에 대해 상기 액세스 제어 테이블에 특정된 하나 이상의 권한을 식별하는 것
    을 포함하는 것인, 시스템.
KR1020197028791A 2019-03-21 2019-03-21 블록체인 네트워크에서의 데이터 격리 KR102243754B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/078944 WO2019101246A2 (en) 2019-03-21 2019-03-21 Data isolation in blockchain networks

Publications (2)

Publication Number Publication Date
KR20200113155A true KR20200113155A (ko) 2020-10-06
KR102243754B1 KR102243754B1 (ko) 2021-04-26

Family

ID=66631377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197028791A KR102243754B1 (ko) 2019-03-21 2019-03-21 블록체인 네트워크에서의 데이터 격리

Country Status (10)

Country Link
US (2) US11228596B2 (ko)
EP (2) EP3610383B1 (ko)
JP (1) JP6821053B2 (ko)
KR (1) KR102243754B1 (ko)
CN (1) CN110998556B (ko)
AU (1) AU2019203869A1 (ko)
CA (1) CA3058238C (ko)
SG (1) SG11201909091TA (ko)
TW (1) TWI721691B (ko)
WO (1) WO2019101246A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022050645A1 (ko) 2020-09-04 2022-03-10 주식회사 엘지에너지솔루션 전지팩 조립 시스템 및 이를 이용한 전지팩의 조립 방법
KR20220150728A (ko) * 2021-05-04 2022-11-11 계명대학교 산학협력단 외부 저장소와 pbft 합의 알고리즘을 이용한 경량화 블록체인 제공 방법 및 장치
WO2023177136A1 (ko) * 2022-03-14 2023-09-21 계명대학교 산학협력단 서비스 제공을 위한 블록체인 데이터 저장 방법 및 저장 관리장치

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3058238C (en) * 2019-03-21 2021-03-02 Alibaba Group Holding Limited Data isolation in blockchain networks
WO2019179538A2 (en) 2019-07-11 2019-09-26 Alibaba Group Holding Limited Shared blockchain data storage
SG11202001989WA (en) 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
CN111108478B (zh) 2019-07-11 2023-11-21 创新先进技术有限公司 一种用于通信和共享区块链数据的方法、系统、和装置
CN110609872B (zh) * 2019-09-20 2021-03-05 北京海益同展信息科技有限公司 用于同步节点数据的方法和装置
US11281794B2 (en) * 2019-09-26 2022-03-22 Microsoft Technology Licensing, Llc Fine grained access control on procedural language for databases based on accessed resources
EP3769230B1 (en) * 2019-11-29 2023-10-11 Alipay (Hangzhou) Information Technology Co., Ltd. Taking snapshots of blockchain data
US11528146B1 (en) * 2019-12-10 2022-12-13 Hiro Systems Pbc Fork table of an authenticated index data structure
CN111159289B (zh) * 2019-12-17 2024-03-01 深圳前海微众银行股份有限公司 一种区块同步的方法及装置
US20230085773A1 (en) * 2020-02-18 2023-03-23 Freeverse, S.L. System and method for dynamic computation scaling in distributed ledger networks
CN111339191B (zh) * 2020-02-20 2023-05-26 百度在线网络技术(北京)有限公司 一种区块链的数据存储方法、装置、设备和介质
CN111383378B (zh) * 2020-03-11 2021-07-30 合肥鼎方信息科技有限公司 基于区块链架构的门禁识别系统信息节点互联方法
CN111447069B (zh) * 2020-03-23 2021-10-26 腾讯科技(深圳)有限公司 一种基于区块链的低频访问数据处理方法
CN111897879B (zh) * 2020-04-02 2024-03-26 支付宝(杭州)信息技术有限公司 基于区块链网络的交易记录共享方法、装置及电子设备
CN111475575B (zh) 2020-04-09 2021-08-10 腾讯科技(深圳)有限公司 基于区块链的数据同步方法、装置及计算机可读存储介质
CN112148796A (zh) * 2020-09-28 2020-12-29 中钞信用卡产业发展有限公司杭州区块链技术研究院 一种电子贸易单据共享方法、装置、设备及介质
CN112130772A (zh) * 2020-09-29 2020-12-25 合肥城市云数据中心股份有限公司 一种基于稀疏随机纠删码技术的区块链安全存储方法
CN112883117B (zh) * 2020-12-24 2022-03-15 腾讯科技(深圳)有限公司 一种数据同步方法、设备以及计算机可读存储介质
CN112714192B (zh) * 2021-03-25 2021-07-02 腾讯科技(深圳)有限公司 数据同步方法、装置、计算机可读介质及电子设备
CN112949582A (zh) * 2021-03-30 2021-06-11 吉安职业技术学院 基于区块链的生物特征采集系统
CN113765675B (zh) * 2021-06-21 2022-05-27 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置、设备以及介质
CN114531450B (zh) * 2021-12-30 2024-01-09 北京天成通链科技有限公司 一种基于高度的区块链对等网络数据同步方法
CN114357080A (zh) * 2021-12-31 2022-04-15 支付宝(杭州)信息技术有限公司 账户数据的读写方法及装置
US11954074B2 (en) * 2022-04-28 2024-04-09 Micro Focus Llc Method and apparatus for efficient file/folder synchronization
CN116614316B (zh) * 2023-07-20 2023-09-22 国网四川省电力公司信息通信公司 多终端场景的区块链数据安全控制方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170140375A1 (en) * 2015-11-15 2017-05-18 Michael Kunstel System and Method for Permissioned Distributed Block Chain
US20180349621A1 (en) * 2017-06-01 2018-12-06 Schvey, Inc. d/b/a/ Axoni Distributed privately subspaced blockchain data structures with secure access restriction management

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170132619A1 (en) * 2015-11-06 2017-05-11 SWFL, Inc., d/b/a "Filament" Systems and methods for autonomous device transacting
CN107145768B (zh) * 2016-03-01 2021-02-12 华为技术有限公司 版权管理方法和系统
US9635000B1 (en) * 2016-05-25 2017-04-25 Sead Muftic Blockchain identity management system based on public identities ledger
US20170345011A1 (en) 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
US10282558B2 (en) * 2016-09-02 2019-05-07 The Toronto-Dominion Bank System and method for maintaining a segregated database in a multiple distributed ledger system
CN106559211B (zh) * 2016-11-22 2019-12-13 中国电子科技集团公司第三十研究所 一种区块链中隐私保护智能合约方法
US10586210B2 (en) * 2016-11-30 2020-03-10 International Business Machines Corporation Blockchain checkpoints and certified checkpoints
CN106796688B (zh) * 2016-12-26 2020-12-18 深圳前海达闼云端智能科技有限公司 区块链的权限控制方法、装置、系统及节点设备
US20180247191A1 (en) * 2017-02-03 2018-08-30 Milestone Entertainment Llc Architectures, systems and methods for program defined entertainment state system, decentralized cryptocurrency system and system with segregated secure functions and public functions
AU2018230763A1 (en) * 2017-03-08 2019-10-31 Ip Oversight Corporation System and method for creating commodity asset-secured tokens from reserves
CN106899412A (zh) * 2017-03-30 2017-06-27 北京链银博科技有限责任公司 一种区块链隐私保护方法、装置及系统
US10708070B2 (en) * 2017-05-24 2020-07-07 Nxm Labs Canada Inc. System and method for utilizing connected devices to enable secure and anonymous electronic interaction in a decentralized manner
US10762079B2 (en) * 2017-09-29 2020-09-01 Oracle International Corporation System and method for managing a blockchain cloud service
CN107807984A (zh) * 2017-10-31 2018-03-16 上海分布信息科技有限公司 一种分区的区块链网络及其实现分区共识的方法
US20190158275A1 (en) * 2017-11-22 2019-05-23 Michael Beck Digital containers for smart contracts
US10783272B2 (en) * 2017-12-08 2020-09-22 Nec Corporation Method and system of preserving privacy for usage of lightweight blockchain clients
CN108230109A (zh) 2018-01-02 2018-06-29 罗梅琴 一种基于区块链技术的共享系统及方法
CN108282539A (zh) * 2018-02-06 2018-07-13 北京奇虎科技有限公司 基于双层网络的去中心化存储系统
US10365922B1 (en) * 2018-04-10 2019-07-30 Sap Se Distributed-ledger based enterprise application deployment and management
CN108563788B (zh) 2018-04-27 2023-05-23 腾讯科技(深圳)有限公司 基于区块链的数据查询方法、装置、服务器及存储介质
CN109002349B (zh) 2018-06-25 2021-01-05 百度在线网络技术(北京)有限公司 应用程序交互方法、实现方法、装置、设备和介质
CN109326337B (zh) 2018-09-06 2021-09-03 西安电子科技大学 基于区块链的电子医疗记录存储和共享的模型及方法
TWM572512U (zh) 2018-09-28 2019-01-01 彰化商業銀行股份有限公司 使用區塊鏈技術之跨行帳戶交易查詢系統
CN109492419B (zh) 2018-11-27 2022-07-01 众安信息技术服务有限公司 用于获取区块链中的数据的方法、装置及存储介质
JP6816297B2 (ja) * 2018-12-13 2021-01-20 アドバンスド ニュー テクノロジーズ カンパニー リミテッド ブロックチェーンネットワークにおけるデータ分離
CA3058238C (en) * 2019-03-21 2021-03-02 Alibaba Group Holding Limited Data isolation in blockchain networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170140375A1 (en) * 2015-11-15 2017-05-18 Michael Kunstel System and Method for Permissioned Distributed Block Chain
US20180349621A1 (en) * 2017-06-01 2018-12-06 Schvey, Inc. d/b/a/ Axoni Distributed privately subspaced blockchain data structures with secure access restriction management

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOYAO QIAN, IMPROVED AUTHENTICATIONED DATA STRUCTURES FOR BLOCKCHAIN SYNCHRONIZATION, University of Illinois (2018.)* *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022050645A1 (ko) 2020-09-04 2022-03-10 주식회사 엘지에너지솔루션 전지팩 조립 시스템 및 이를 이용한 전지팩의 조립 방법
KR20220150728A (ko) * 2021-05-04 2022-11-11 계명대학교 산학협력단 외부 저장소와 pbft 합의 알고리즘을 이용한 경량화 블록체인 제공 방법 및 장치
WO2023177136A1 (ko) * 2022-03-14 2023-09-21 계명대학교 산학협력단 서비스 제공을 위한 블록체인 데이터 저장 방법 및 저장 관리장치

Also Published As

Publication number Publication date
CN110998556B (zh) 2023-09-15
US20210385223A1 (en) 2021-12-09
EP3610383A4 (en) 2020-05-27
CA3058238C (en) 2021-03-02
CA3058238A1 (en) 2019-05-31
JP2020522036A (ja) 2020-07-27
TWI721691B (zh) 2021-03-11
US11228596B2 (en) 2022-01-18
KR102243754B1 (ko) 2021-04-26
EP3893433A1 (en) 2021-10-13
EP3610383B1 (en) 2021-07-07
US11265322B2 (en) 2022-03-01
US20200304505A1 (en) 2020-09-24
EP3893433B1 (en) 2023-12-27
WO2019101246A3 (en) 2020-01-23
CN110998556A (zh) 2020-04-10
SG11201909091TA (en) 2019-10-30
JP6821053B2 (ja) 2021-01-27
WO2019101246A2 (en) 2019-05-31
AU2019203869A1 (en) 2019-05-31
EP3610383A2 (en) 2020-02-19
TW202036419A (zh) 2020-10-01

Similar Documents

Publication Publication Date Title
KR102243754B1 (ko) 블록체인 네트워크에서의 데이터 격리
EP3610606B1 (en) Managing sensitive data elements in a blockchain network
KR102247658B1 (ko) 신뢰 실행 환경에서 실행되는 스마트 계약 동작에 기초한 블록체인 데이터의 프로세싱
US10699006B1 (en) Processing and storing blockchain data under a trusted execution environment
AU2019204712A1 (en) Managing sensitive data elements in a blockchain network
US10917249B2 (en) Processing data elements stored in blockchain networks

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant