KR20210003234A - 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 - Google Patents

분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 Download PDF

Info

Publication number
KR20210003234A
KR20210003234A KR1020207034209A KR20207034209A KR20210003234A KR 20210003234 A KR20210003234 A KR 20210003234A KR 1020207034209 A KR1020207034209 A KR 1020207034209A KR 20207034209 A KR20207034209 A KR 20207034209A KR 20210003234 A KR20210003234 A KR 20210003234A
Authority
KR
South Korea
Prior art keywords
transaction
node
block
shards
blockchain
Prior art date
Application number
KR1020207034209A
Other languages
English (en)
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
Priority claimed from GBGB1806914.6A external-priority patent/GB201806914D0/en
Priority claimed from GBGB1806907.0A external-priority patent/GB201806907D0/en
Priority claimed from GBGB1806909.6A external-priority patent/GB201806909D0/en
Priority claimed from GBGB1806911.2A external-priority patent/GB201806911D0/en
Priority claimed from GBGB1806930.2A external-priority patent/GB201806930D0/en
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20210003234A publication Critical patent/KR20210003234A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • 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
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0658Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3674Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes involving authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • 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
    • 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/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
    • 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
    • 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/3297Cryptographic 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 involving time stamps, e.g. generation of time stamps
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • H04L2209/38
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Electrotherapy Devices (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Abstract

샤딩된(sharded) 블록체인 네트워크의 노드 - 각각의 노드는 복수의 활성 샤드들 중 하나 이상의 샤드의 멤버임 - 에 걸쳐서 블록체인의 블록을 유지하는 컴퓨터 구현된 방법 및 시스템이 제공된다. 방법 및 시스템은, 블록체인의 새로운 블록을 나타내는 데이터를 생성하고 새로운 블록을 나타내는 데이터를 저장하기 위해, 복수의 활성 샤드들의 특정 서브세트의 멤버인 주어진 노드를 이용한다. 이러한 데이터는, i) 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되는 트랜잭션에 대한 트랜잭션 식별자의 리스트, 및/또는 ii) 새로운 블록에 대한 파셜 머클 트리를 포함한다.

Description

분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
본 개시는 일반적으로 블록체인 트랜잭션(transaction)을 처리하는 컴퓨터 구현되는 시스템 및 방법에 관한 것으로, 특히, 블록체인을 분할하고(partition) 분할된 블록체인의 블록 및 트랜잭션을 유효성 검증하는(validate) 시스템 및 방법에 관한 것이다.
본 문서에서, "블록체인"이라는 용어는 여러 유형의 전자적인, 컴퓨터 기반의, 분산 원장(distributed ledger)들 중 임의의 것을 일컫는다. 이들은, 합의-기반(consensus-based) 블록체인 및 트랜잭션-체인 기술, 허가형(permissioned) 및 비허가형(un-permissioned) 원장, 공유(shared) 원장 및 그 변형을 포함한다. 여타의 블록체인 구현도 제안되고 개발되어 왔지만, 블록체인 기술의 가장 널리 알려진 적용은 비트코인(Bitcoin) 블록체인이다. 본 개시에서는 편의 및 예시의 목적으로 비트코인의 예가 여기서 언급될 수 있지만, 본 개시는 비트코인 블록체인과 함께 사용하는 것에 제한되지 않으며; 대안적인 블록체인 구현 및 프로토콜이 본 개시의 범주 내에 있다는 점에 유의해야 한다. 예를 들어, 본 개시는, 트랜잭션 내에서 어떤 제약이 인코딩될 수 있는지와 관련하여 비트코인과 유사한 제한(constraints)을 갖는 다른 블록체인 구현에서 유용할 수 있다.
블록체인은 컴퓨터 기반의 탈중앙화(decentralised) 분산 시스템에 의해 생성되고 유지되는 피어 투 피어(peer-to-peer) 전자 원장이다. 원장은 블록으로 구성되며, 블럭은 다시 트랜잭션 및 기타 정보로 구성된다. 블록체인 시스템 또는 블록체인 네트워크는 복수의 블록체인 노드 및 일련의 동작을 포함한다. 블록체인 노드는 일련의 동작의 일부 또는 전체 동작을 수행하도록 구성될 수 있다. 노드 운영자에 의해 운영되는 컴퓨터 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로서 다양한 블록체인 노드가 구현될 수 있으며, 노드 운영자는 다른 노드 운영자와 독립적이고 관련 없을 수 있다. 블록체인 노드는 각각 블록체인 원장의 사본, 또는 그 일부를 유지할 수 있다. 일련의 동작은 사용자가 트랜잭션을 생성하고 블록체인 자산을 관리할 수 있도록 트랜잭션 생성, 트랜잭션 전파, 블록체인 원장 판독, 블록체인 원장 평가, 블록체인 원장에의 제안된 추가를 위한 새로운 블록 생성(채굴), 다른 블록체인 노드와의 통신, 지갑 기능 제공을 포함할 수 있다.
블록체인 원장은, 원장이 수정되는 시기를 결정하는 단일 블록체인 노드나 엔티티가 없다는 점에서, 탈중앙화 되어 있다. 대신에, 블록체인 노드 각각은, 블록체인 프로토콜의 규칙에 관한 지식으로 프로그래밍 되어, 블록체인 원장을 검증하고(verify) 다른 블록체인 노드에 의해 취해진 액션이 해당 규칙과 일치하는지를 검증한다. "블록체인"이라는 용어는, 블록체인 원장이 일련의 체인으로 연결되는 블록을 포함하고 있다는 사실을 의미할 수 있으며, 각 블록은 컴퓨터 메모리에서 데이터 구조로서 표현 가능하고 컴퓨터 프로세스에 의해 판독 가능하며 데이터 전송으로 전송될 수 있다. 블록은, 컴퓨터 메모리에서 데이터 구조로서 역시 표현 가능하고 컴퓨터 프로세스에 의해 판독 가능하며 데이터 전송으로 전송될 수 있는 하나 이상의 트랜잭션을 포함한다. 블록체인에 공식적으로 추가되는 각각의 새로운 블록이 직전 블록에 대한 불변의 참조를 포함하며, 상기 직전 블록은 그 직전 선행하는 블록에 대한 불변의 참조 등을 포함한다는 점에서, 블록은 체인으로 연결되어 있다.
주어진 트랜잭션이 블록체인에 기록된 블록에 포함되기 위해, 하나 이상의 노드가 주어진 트랜잭션을 유효성 검증하고 가능하게는 트랜잭션을 다른 노드로 전파하고, 노드는 블록이 주어진 트랜잭션을 포함하는 트랜잭션 블록을 채굴하고, 다른 노드는 블록의 유효성 및 해당 블록의 트랜잭션의 유효성을 검증한다. 채굴 노드는 이러한 규칙을 염두에 두고 프로그래밍되거나 구성되므로 채굴 노드는 블록을 무효로 하는 블록에는 트랜잭션을 포함하지 않을 것이며, 왜냐하면 그러한 블록은 다른 노드에 의해 승인되지 않고 채굴 노드는 아무런 혜택도 얻을 수 없기 때문이다. 예를 들어, 다수의 블록체인 네트워크에서, 블록은 채굴 노드의 운영자에게 특정 가치량이 할당된 "보상" 트랜잭션을 포함할 수 있다. 이러한 방식으로, 성공적인 채굴자는 블록으로 생성된 가치로 보상받는다. 또한, 트랜잭션은 거래 수수료를 포함할 수 있으며, 이는 채굴 노드의 운영자에게 또한 이익이 될 것이다.
블록체인 네트워크의 트랜잭션은 가치 단위 및 기타 데이터 요소를 포함하는, 다양한 데이터 요소를 포함한다. 가치 단위는 암호 화폐(예를 들어, Bitcoin SV)가 될 수 있지만 다른 디지털 자산을 이용하는 다른 변형도 가능하다. 탈중앙화된 분산 원장 시스템에서, 원장은 공개되어 누구나 원장을 보고 원장의 블록에 저장된 트랜잭션에 액세스할 수 있다.
예를 들어 비트코인 블록체인 네트워크 등의 블록체인 네트워크는, 각 트랜잭션이 채굴을 위해 다른 노드로 계속(onwards) 전파될 수 있기 전에 각 트랜잭션이 유효성 검증되어야 하기 때문에, 트랜잭션의 네트워크 전파에 있어서의 지연으로 인해 트랜잭션 유효성 검증과 관련된 성능 제한을 겪을 수 있다. 나아가, 블록체인의 사이즈가 커짐에 따라, 트랜잭션 및 블록을 유효성 검증하는 노드에 대한 저장(storage) 요구 사항 역시 커진다.
따라서, 분할(partitioning) 또는 샤딩(sharding)의 이용을 통해 블록체인 원장의 확장성(scalability)을 향상시키는 개선된 시스템 및 방법을 제공하는 것이 바람직하다.
블록체인 네트워크를 샤드로 분할하는 것은 사용자가 블록체인 네트워크를 통한 자신의 참여 수준을 선택하는 것을 가능하게 한다. 각 사용자는 하나 이상의 샤드의 멤버이도록 선택할 수 있다. 모든 샤드보다 적은 멤버인 사용자는 사용자가 멤버인 샤드에 할당된 트랜잭션의 모두를 저장하는 데 더 작은 저장 공간을 요구한다. 트랜잭션을 그의 트랜잭션 id를 기초로 샤드에 할당하는 것은 결과적인 샤드 크기가 거의 동일할 것이라는 장점을 제공하며, 이를 통해 더 작은 샤드의 멤버에 비해 상대적으로 더 큰 샤드의 멤버에 대해 과도한 부담을 주는 것을 방지하면서, 동시에 트랜잭션 및 연관된 검증(verifications)이 임의의 과도한 지연 없이 정확하게 수행되는 것을 가능하게 한다.
본원에서 언급된 사용자는 하나 이상의 노드 또는 컴퓨팅 디바이스와 연관될 수 있으며, 이들 노드는 또한, 분할된 블록체인 네트워크에서 클라이언트 엔티티로서 지칭될 수 있다. 이하에서, 사용자에 대한 참조는 또한, (샤딩되거나 또는 분할된 블록체인 네트워크의 일부인 노드 또는 엔티티를 소유하거나 또는 제어할 수 있는) 사용자와 연관된 노드 또는 엔티티에 대한 참조로 이해될 수 있다. 각 노드는 분할된 블록체인 네트워크에서 적어도 하나 이상의 다른 노드와 통신 가능하게 결합될 수 있다.
본 개시의 이 양상뿐만 아니라 (아래에서 논의되는) 다른 양상과 연관된 본원에서 논의된 이들 장점은 노드 및 결과적인 네트워크 토폴로지의 구조 및 네트워크의 노드와 연관된 샤딩된 블록체인 네트워크 및 프로토콜의 아키텍처에 기인한다. 이러한 샤딩된 네트워크에서 UTXO를 수신하는 것, 저장하는 것 및/또는 유효성 검증하는 것은, 각 샤드 내의 노드에 대한 유효성 검증 기술뿐만 아니라 통신, 데이터 저장, 데이터 공유를 위한 서술되고 청구된 방법, 규칙 또는 프로토콜을 사용하는 것뿐만 아니라, 상이한 샤드에 속하는 노드와의 통신을 위해 연관된 규칙 및 프로토콜을 기초로 수행된다.
이들 특정 구조, 데이터 흐름의 방법, 트랜잭션 할당 및 유효성 검증 프로토콜은 본 개시의 다양한 실시예에 대해 아래에서 더 설명될 것이다. 유리하게, 샤딩된 블록체인 네트워크 내의 트랜잭션의 할당 및 이러한 할당된 트랜잭션의 유효성 검증을 위해 본원에서 서술된 샤딩된 네트워크 구조 또는 아키텍처 및 연관된 방법은 데이터 흐름, 데이터 저장 및 UTXO 유효성 검증 검사를 위한 새로운 기술을 가능하게 한다. 나아가, 이들 기술은 구조 및 데이터 통신/유효성 검증 프로토콜의 관점에서 비트코인 블록체인에서의 시빌 공격과 같은 이중 지불 공격을 유리하게 방지한다.
따라서, 본 개시에 따르면, 샤딩된 블록체인 네트워크의 노드 - 각각의 노드는 복수의 활성 샤드들(active shards) 중 하나 이상의 샤드의 멤버임 - 에 걸쳐서 블록체인의 블록을 유지하기 위한 컴퓨터 구현되는 방법 및 시스템이 제공될 수 있다. 방법 및 시스템은, 복수의 활성 샤드들의 특정 서브세트(subset)의 멤버인 주어진 노드를 이용하며, 주어진 노드는 블록체인의 새로운 블록을 나타내는 데이터를 생성하고 새로운 블록을 나타내는 데이터를 저장하도록 구성된다. 이러한 데이터는, i) 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되는 트랜잭션에 대한 트랜잭션 식별자의 리스트, 및/또는 ii) 새로운 블록에 대한 파셜 머클 트리(Partial Merkle Tree)를 포함한다. i)의 트랜잭션 식별자의 리스트는, 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되지 않는 트랜잭션에 대한 트랜잭션 식별자를 포함하지 않는다.
실시예에서, i)의 트랜잭션 식별자의 리스트는, 새로운 블록에 포함된 데이터에 기초하여 새로운 블록에 대한 트랜잭션 식별자의 초기 리스트를 구축하고, 복수의 활성 샤드들의 특정 서브세트와 연관되지 않는 트랜잭션에 대응하는 임의의 트랜잭션 식별자를 제거하도록 트랜잭션 식별자의 초기 리스트를 처리함으로써 생성될 수 있다.
실시예에서, ii)의 파셜 머클 트리는, 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 포함하고, 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되는 트랜잭션으로부터 도출되는 해시 값은 생략한다.
실시예에서, ii)의 파셜 머클 트리는, 새로운 블록에 포함된 데이터에 기초하여 새로운 블록에 대한 풀 머클 트리(Full Merkle Tree)를 구축하고, 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되는 트랜잭션으로부터 도출되는 해시 값을 플레이스홀더(placeholders)로 대체하도록 풀 머클 트리를 처리함으로써 생성될 수 있다.
실시예에서, 풀 머클 트리를 처리하는 것은, 풀 머클 트리의 바닥 레벨로부터 루트 레벨까지 반복 처리하는 것(iterating) 및 인접-노드 쌍에 대한 두 개의 해시 값을 제거하고 부모(parent) 해시 값을 남기는 것을 더 포함할 수 있다.
실시예에서, 풀 머클 트리를 처리하는 것은, 풀 머클 트리의 바닥 레벨로부터 루트 레벨까지 반복 처리하는 것 및 복수의 활성 샤드들의 특정 서브세트와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 모두 나타내지 않는 두 개의 자식(child) 노드를 갖는 부모 트리 노드의 해시 값을 플레이스홀더로 대체하는 것을 더 포함할 수 있다.
실시예에서, 노드는, 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되지 않는 트랜잭션에 대한 액세스를 요구하지 않고 블록 유효성 검증을 위한 머클 루트 해시 값을 계산하기 위해 파셜 머클 트리를 처리하도록 동작할 수 있다.
실시예에서, 머클 루트 해시 값을 계산하기 위해 파셜 머클 트리를 처리하는 것은, 파셜 머클 트리의 바닥 레벨로부터 루트 레벨까지 반복 처리하는 것, i)의 트랜잭션 식별자 리스트로부터의 대응하는 해시 값으로 바닥 레벨의 임의의 플레이스 홀더를 대체하는 것, 및 파셜 머클 트리의 대응하는 자식 해시 값으로부터 계산된 해시 값으로 바닥 레벨 위의 레벨의 임의의 플레이스 홀더를 대체하는 것을 포함할 수 있다.
실시예에서, i)의 트랜잭션 식별자 리스트 및 ii)의 파셜 머클 트리는, 샤드들 중에서의 트랜잭션의 할당 및 노드 멤버쉽에 기초하여, 노드들 중에서 변할 수 있다.
실시예에서, 새로운 블록의 일부인 트랜잭션은 트랜잭션 식별자에 기초하여 복수의 활성 샤드들 중의 샤드와 연관(또는 샤드에 할당)될 수 있다.
다른 실시예에서, 새로운 블록의 일부인 트랜잭션은 부모 블록체인 트랜잭션에 기초하여 복수의 활성 샤드들 중의 샤드와 연관(또는 샤드에 할당)될 수 있고, 부모 트랜잭션은 자식 블록체인 트랜잭션의 입력에 대응하는 출력에 의해 정의되고, 부모 트랜잭션과 자식 트랜잭션 양쪽 모두는 동일한 샤드와 연관된다.
실시예에서, 노드에 의해 유지되는 블록 데이터는 노드가 속하지 않는 샤드(들)의 일부인 트랜잭션 데이터를 생략할 수 있으므로 노드 저장 공간을 절약할 수 있다. 따라서 일부 노드는 블록체인 트랜잭션의 제한된 서브세트에 대해서만 블록체인의 데이터 구조를 저장할 수 있으며 다른 노드는 블록체인의 모든 트랜잭션에 대한 데이터 구조를 저장한다. 이 경우, 블록체인의 제한된 서브세트에 대한 데이터 구조를 저장하는 노드의 데이터 저장 용량은 전체 블록체인에 대한 데이터 구조를 저장하는 노드의 데이터 저장 용량보다 훨씬 적을 수 있다.
실시예에서, 새로운 블록을 나타내는 데이터를 생성할 때, 노드는, 새로운 블록의 일부이고 복수의 활성(active) 샤드들의 특정 서브세트와 연관되는 트랜잭션을 유효성 검증하고, 새로운 블록의 일부이고 복수의 활성 샤드들의 특정 서브세트와 연관되지 않는 트랜잭션의 유효성 검증은 바이패스(bypassing)할 수 있다. 이러한 처리는 블록 유효성 검증 동작의 계산 작업을 줄일 수 있다. 이러한 이점은, 블록체인 네트워크의 특정 샤드에 대한 감소된 데이터 저장소 용량 요구 조건과 함께, 제한된 계산 리소스를 가진 노드가 블록체인 네트워크에 효과적으로 참여할 수 있게 허용한다.
따라서, 본 개시에 따라 첨부된 청구범위에 규정된 바와 같은 방법이 제공된다.
본 개시에 따르면, 프로세서, 컴퓨터 메모리 및 네트워크 인터페이스 디바이스를 포함하는 전자 디바이스가 제공될 수 있다. 메모리는, 실행될 때, 본원에 설명된 방법을 수행하도록 프로세서를 구성하는 컴퓨터 실행 가능한 명령어를 저장하고 있다.
본 개시에 따르면, 비일시적 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체는, 실행될 때, 본원에 설명된 방법을 수행하도록 프로세서를 구성하는 컴퓨터 실행 가능 명령어를 포함한다.
본 개시의 이들 및 다른 측면은 본원에 설명된 실시예로부터 분명해질 것이고 또한 이를 참조하여 설명될 것이다. 이제 본 개시의 일 실시예를 단지 예시로서 첨부 도면을 참조하여 설명한다. 첨부 도면에서:
도 1a는, 여러 실시예가 구현될 수 있는 블록체인 네트워크를 나타낸다.
도 1b는, 도 1a의 블록체인 네트워크에 의해 유지될 수 있는 블록체인 원장 및 대표 블록을 나타내며, 다양한 실시예가 상기 블록체인 네트워크에서 구현될 수 있다.
도 2는, 이러한 노드에 의해 유지되는 샤딩된 블록체인 원장의 데이터 구조와 함께 예시적인 샤딩된 블록체인 네트워크의 노드를 나타낸다.
도 3a 및 3b는, 총괄하여, 도 2의 샤딩된 블록체인 원장과 같은, 샤딩된 블록체인 원장의 일부로서 블록체인 트랜잭션의 생성 및 유효성 검증 및 채굴을 나타내는 흐름도이다.
도 4a 및 4b는, 총괄하여, 채굴자에 의해 생성된 새로운 블록을 유효성 검증할 때 모든 샤드의 멤버가 아닌 노드에 의해 수행되는 작업을 설명하는 흐름도이다.
도 5는, 새로운 블록에 대한 파셜 머클 트리를 구축할 때 모든 샤드의 멤버가 아닌 노드에 의해 수행되는 작업을 설명하는 흐름도이다.
도 6a 내지 6d는, 도 5의 동작의 개략도이다.
도 7a 내지 7d는, 총괄하여, 노드에 의해 유지되는 블록 데이터를 유효성 검증할 때 모든 샤드의 멤버가 아닌 노드에 의해 수행되는 작업을 설명하는 흐름도이다; 이러한 작업은 블록에 대한 파셜 머클 트리를 처리하여 파셜 머클 트리에 대한 머클 루트 해시 값을 계산한다.
도 8a 내지 8d는, 도 7a 내지 7d의 동작의 개략도이다.
도 9는, 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 나타낸다.
먼저, 본 개시의 일 실시예에 따른 블록체인과 연관된 예시적인 블록체인 네트워크(100)를 나타내는 도 1a를 참조한다. 실시예에서, 블록체인 네트워크(100)는 전체적으로 또는 부분적으로 블록체인 노드의 운영자간에 합의된 블록체인 프로토콜을 따르는 동작을 행하는 소프트웨어 및/또는 하드웨어의 인스턴스를 각각 수행하는 피어-투-피어(peer-to-peer) 분산형 전자 디바이스로서 구현될 수 있는 블록체인 노드를 포함한다. 일부 예에서, 이들 분산형 전자 디바이스는 도 1a의 노드(102)와 같이 단순히 "노드"라고 지칭된다. 블록체인 프로토콜의 일례는 비트코인 프로토콜이다.
노드(102)는, 컴퓨팅 리소스 서비스 제공자의 분산 시스템(distributed system)의 다수의 컴퓨팅 디바이스에 의해, 또는 도 9의 컴퓨팅 디바이스(2600)와 같은 임의의 적합한 전자 클라이언트 디바이스에 의해, 임의의 적합한 컴퓨팅 디바이스(예를 들어, 데이터 센터의 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰 등과 같은 클라이언트 컴퓨팅 디바이스)를 포함할 수 있다. 노드(102)는, 다른 노드에 연관된 정보뿐만 아니라 트랜잭션 및/또는 블록을 나타내는 데이터 메시지 또는 객체를 수신하도록 입력을 가질 수 있다. 노드(102)들은 트랜잭션의 상태에 대한 그들의 이해와 같은, 그들이 유지하는 정보에 대해 쿼리되어질 수 있다(queryable).
도 1a에 도시된 바와 같이, 일부 노드(102)는 하나 이상의 다른 노드(102)에 통신 가능하게 커플링된다. 어떤 노드(102)가 어떤 다른 노드와 통신할 수 있는지에 관해, 그 세부사항은 중앙에서(centrally) 결정될 필요가 없다. 메시지가 블록체인 프로토콜이 전달해야 함을 나타내는 메시지라고 가정하면, 블록체인 네트워크(100)의 활성 노드가 하나 이상의 다른 노드(102)와 통신할 수 있어 하나의 노드(102)로부터 다른 노드(102)로 건네지는 메시지가 블록체인 네트워크(100)(또는 그의 중요한(significant) 부분)를 통해 전파될 수 있으면 충분할 수 있다. 그러한 하나의 메시지는 노드(102A)들 중 하나에 의한 제안된 트랜잭션의 게시(publication)일 수 있으며, 그러면 이것은 경로(106)와 같은 경로를 따라 전파될 것이다. 또 다른 그러한 메시지는 블록체인에 포함되도록 제안된 새로운 블록의 게시일 수 있다.
노드(102)는 트랜잭션에 대응하는 데이터 및 트랜잭션의 블록에 대응하는 데이터를 포함하는 분산 블록체인 원장(또는 블록체인)을 저장할 수 있다. 노드(102)는 블록체인 원장의 완전한 사본 또는 그 일부를 저장할 수 있다. 예를 들어, 일부 노드는 전체 블록체인 원장에 대한 데이터를 저장할 수 있고, 다른 노드는 소비되지 않은 트랜잭션만에 대한 데이터를 저장할 수 있고, 다른 노드는 전체 블록체인 원장을 유지할 수 있다. 노드(102)는 수신하는 각 블록 및 그러한 블록의 트랜잭션을 유효성 검증하는 기능을 포함할 수 있다. 노드(102)들 중 일부는, 새로운 블록이 블록체인 원장에 추가될 수 있도록 트랜잭션을 수집하고 트랜잭션의 블록을 생성하는 채굴자(miner) 노드일 수 있다. 채굴자 노드는, (불량(rogue) 노드가 부적절한 블록을 용이하게 생성하는 것을 방지하기 위해) 복잡하면서 또한 (불량 노드가 복잡한 작업을 미리 수행할 수 없도록) 포함된 트랜잭션의 데이터에 의존하는 어떤 작업을 수행할 것으로 예상될 수 있으며, 이러한 작업의 성능은 다른 노드에 의해서 쉽게 검증된다(verified). 다수의 채굴자 노드는 새로운 블록을 만드는 데 필요한 작업을 수행하기 위해 경쟁할 수 있다. 이를 "작업 증명(proof-of-work)" 채굴이라 한다. 대안적으로, 새로운 블록을 위한 채굴자 노드는, 지분(stake)으로 또한 정의되는 그의 자산(wealth)에 따라 결정론적(deterministic) 방식으로 선택될 수 있다. 이를 "지분 증명(Proof of Stake)" 채굴 또는 단조(forging)라고 한다. 채굴자 노드는 유효성 검증을 위해 새로운 블록을 다른 노드로 전파한다. 다른 노드는 새로운 블록과 새로운 블록에 포함된 트랜잭션을 유효성 검증한다. 노드에 의해 수행되는 유효성 검증 작업이 성공하면, 노드는 새로운 블록을 블록체인에 추가하고 새로운 블록을 다른 노드로 전파한다. 이렇게 하면 새로운 블록이 블록체인 원장에 커밋된다.
일부 예에서, 블록은 트랜잭션의 그룹이며, 보통 타임스탬프 및 이전 블록의 "지문"(예를 들어, 해시)으로 마킹되어 있다. 이러한 방식으로, 각 블록은 이전 블록에 연결되고, 이에 의해 블록체인 원장의 블록을 연결하는 "체인"을 생성한다. 각 블록은, 블록에 대한 트랜잭션의 그룹을 참조하는 데이터(예를 들어, 트랜잭션 식별자)를 포함한다. 실시예에서, 블록체인 네트워크에 있는 노드의 합의에 의해 유효한 블록이 블록체인 원장에 추가된다. 또한, 일부 예에서, 블록체인 원장은 유효성 검증된 블록의 순서 매겨진 리스트를 포함한다. 도 1b는 3개의 블록(1221, 1223 및 1223)의 체인을 갖는 블록체인 원장(1216)을 나타낸다. 블록(1222)은, 블록(1222)에 대한 트랜잭션의 그룹을 참조하는 데이터(예를 들어, 블록 헤더(1230) 및 트랜잭션 식별자 "1231(1), 1231(2), 1231(3)…")를 포함한다.
본 개시는 분할의 이용을 통해 블록체인 원장의 확장성을 향상시키는 것을 목표로 한다. 본 기술에서 분할은 두 가지 특정 차원: 수평 및 수직을 고려한다. 수평 분할에서는, 데이터가 샤드(shard)라고 알려진 서로 다른 섹션으로 분할되며, 이것은, 효과적으로는 (인스턴스 리던던시를 할인하는) 이들 인스턴스 각각에 퍼져있는 데이터를 갖는 특정 데이터베이스 스키마의 다수의 인스턴스이다. 수직 분할에서는, 주어진 데이터베이스 스키마가 다수의 노드로 퍼지고, 이에 의해 특정 객체의 속성이 표준화(normalisation)를 이용하여 퍼진다.
본 개시는 "샤드(shards)"로 칭해지는 연관된 노드들의 그룹들 중에서 블록체인 원장의 데이터 구조에 대해 수평 분할 스키마를 채택한다. 각 샤드에는 고유의 식별자가 배정된다. 샤드 모두를 아우르는(encompass) "All Shards"라고 칭해지는 하나의 그룹이 있다. 블록체인 네트워크의 각 노드는 ("All Shards" 그룹을 포함하여) 하나 이상의 샤드에 속할 수 있다. 샤드에 속하는 노드는 그 샤드의 멤버로 칭해질 수 있다. 도 2의 예에서, 노드 A1과 A2는 샤드 A의 멤버이며(샤드 A에 속하며), 노드 B1 및 B2는 샤드 B의 멤버이며(샤드 B에 속하며), 노드 C는 샤드 A 및 B의 멤버이며(샤드 A 및 B에 속하며), 노드 D는 "All Shards" 그룹의 멤버이다("All Shards" 그룹에 속한다). 여타의 샤드(들)도 사용될 수 있다. 나아가, 각 노드는 자신이 속한 하나 이상의 샤드에 대응하는 블록체인 원장의 데이터 구조를 저장하도록 구성된다. 도 2의 예에서, 블록체인 원장의 데이터 구조는, 샤드에 대한 UTXO 세트, 샤드에 대한 트랜잭션 큐(멤풀(mempools)), 샤드에 대한 트랜잭션 데이터(TX 데이터 레이블이 지정됨) 및 샤드에 대한 블록 데이터를 포함하는, 샤드에 대한 비트코인-연관 데이터 구조를 포함한다. 샤드에 대한 UTXO 세트는 새로운 트랜잭션에 대한 입력으로서 사용될 수 있는 미사용 트랜잭션 출력(UTXO)을 나타낸다.
본원에 설명된 바와 같은 실시예에서, 주어진 노드에 의해 유지되는 블록 데이터는, 주어진 노드가 속하는 하나 이상의 샤드에 대한 블록 데이터를 포함한다. 이러한 블록 데이터는, 블록체인 원장의 블록을 나타내는 데이터를 포함하며 각 블록에 대해 다음 데이터를 포함할 수 있다: i) 블록에 대한 다른 데이터와 함께 파셜 머클 트리를 포함하는 블록 헤더, 및/또는 ii) 블록의 일부인 트랜잭션에 대한 트랜잭션 식별자의 리스트; 이 리스트는, 블록의 일부이고 주어진 노드가 속한 하나 이상의 샤드와 연관된 트랜잭션에 대해서만의 트랜잭션 식별자를 포함하고; 이 리스트는, 블록의 일부이고 주어진 노드가 속한 하나 이상의 샤드와 연관되지 않는 트랜잭션에 대한 트랜잭션 식별자를 포함하지 않는다. 블록 헤더에 저장된 파셜 머클 트리는, 블록의 일부이고 주어진 노드가 속하지 않는 하나 이상의 샤드와 연관된 트랜잭션으로부터 도출된 해시 값을 포함하며, 블록의 일부이고 주어진 노드가 속하는 하나 이상의 샤드와 연관된 트랜잭션으로부터 도출된 해시 값은 생략한다. 파셜 머클 트리는, 노드가, 블록의 일부이고 노드가 속한 하나 이상의 샤드와 연관되지 않는 트랜잭션에 액세스할 필요없이 블록 유효성 검증을 위해 블록의 머클 루트 해시 값을 계산하는 것을 허용하는데 이용할 수 있다. 이러한 방식으로, 상이한 샤드의 노드에 의해 블록 데이터의 일부로서 저장되는 주어진 블록에 대한 i)의 파셜 머클 트리 및 ii)의 리스트는 샤드들 중의 트랜잭션의 분포 및 노드 멤버쉽에 기초하여 노드들 중에서 변할 수 있다. 유리하게는, 본 실시예에서 설명된 바와 같이, 각각의 노드가 주어진 트랜잭션과 연관된 모든 UTXO를 저장하고 유효성을 검증하지 않고도 유효성을 검증하고 전파할 블록에 대한 필요한 세부 사항을 여전히 정확하게 보유하고 이용하기 위해, 각각의 노드가 저장하거나 저장하지 않을 수 있는 정보를 확립하기 위한 본원에서 설명되는 프로토콜과 함께, 블록 헤더 및 블록에 대한 다른 데이터와 연관하여 파셜 머클 트리를 사용하는 것이, 샤딩된 블록체인 네트워크의 제한의 관점에서 가능하다. 본원에서 더 설명되는 바와 같이, 블록 정보를 처리하기 위한 파셜 머클 트리의 생성 및 이용은, 노드가 연관된 샤드 외부의 하나 이상의 노드와의 통신 및 데이터 흐름을 위한 다른 프로토콜에 더하여, 샤딩된 네트워크의 이러한 구조, 및 동 샤드 내에서의 통신 및 데이터 흐름을 위해 샤딩된 네트워크 내의 노드에 의해 적용되는 프로토콜에 의해 용이하여 진다.
도 2의 예에서, 노드 A1과 A2는, 샤드 A에 대한 UTXO 세트의 사본, 샤드 A에 대한 트랜잭션 큐(멤풀)의 사본, 샤드 A에 대한 트랜잭션 데이터의 사본, 및 샤드 A에 대한 블록 데이터의 사본을 저장한다. 노드 A1 및 A2는 다음을 저장하지 않는다: (샤드 A가 아닌) 다른 샤드에 대한 UTXO 세트의 사본, (샤드 A가 아닌) 다른 샤드에 대한 트랜잭션 큐(멤풀)의 사본, (샤드 A가 아닌) 다른 샤드에 대한 트랜잭션 데이터의 사본. 또한, 샤드 A에 대한 블록 데이터는 블록체인 원장의 블록을 나타내는 데이터를 포함하며 각 블록에 대해 다음의 데이터를 포함할 수 있다: i) 블록에 대한 다른 데이터와 함께, 파셜 머클 트리를 포함하는 블록 헤더, 및 ii) 블록의 일부인 트랜잭션에 대한 트랜잭션 식별자의 리스트; 이 리스트는 블록의 일부이고 샤드 A와 연관된 트랜잭션에 대해서만 트랜잭션 식별자를 포함하고; 이 리스트는 블록의 일부이고 샤드 A와 연관되지 않는 트랜잭션에 대한 트랜잭션 식별자를 포함하지 않는다. 블록 헤더에 저장된 파셜 머클 트리는, 블록의 일부이고 샤드 A와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 포함하고, 블록의 일부이고 샤드 A와 연관된 트랜잭션으로부터 도출되는 해시 값을 생략한다.
노드 B1과 B2는 샤드 B에 대한 UTXO 세트의 사본, 샤드 B에 대한 트랜잭션 큐(멤풀)의 사본, 샤드 B에 대한 트랜잭션 데이터의 사본, 샤드 B에 대한 블록 데이터의 사본을 저장한다. 노드 B1 및 B2는 다음을 저장하지 않는다: (샤드 B가 아닌) 다른 샤드에 대한 UTXO 세트의 사본, (샤드 B가 아닌) 다른 샤드에 대한 트랜잭션 큐(멤풀)의 사본, (샤드 B가 아닌) 다른 샤드에 대한 트랜잭션 데이터의 사본. 또한, 샤드 B에 대한 블록 데이터는 블록체인 원장의 블록을 나타내는 데이터를 포함하며 각 블록에 대해 다음 데이터를 포함할 수 있다: i) 블록에 대한 다른 데이터와 함께 파셜 머클 트리를 포함하는 블록 헤더, 및 ii) 블록의 일부인 트랜잭션에 대한 트랜잭션 식별자의 리스트; 이 리스트는 블록의 일부이고 샤드 B와 연관된 트랜잭션에 대한 트랜잭션 식별자만 포함하고; 이 리스트는 블록의 일부이고 샤드 B와 연관되지 않는 트랜잭션에 대한 트랜잭션 식별자는 포함하지 않는다. 블록 헤더에 저장된 파셜 머클 트리는, 블록의 일부이고 샤드 B와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 포함하고, 블록의 일부이고 샤드 B와 연관된 트랜잭션으로부터 도출되는 해시값을 생략한다.
노드 C는 샤드 A에 대한 UTXO 세트의 사본, 샤드 B에 대한 UTXO 세트의 사본, 샤드 A에 대한 트랜잭션 큐(멤풀)의 사본, 샤드 B에 대한 트랜잭션 큐(멤풀)의 사본, 샤드 A에 대한 트랜잭션 데이터의 사본, 샤드 B에 대한 트랜잭션 데이터의 사본, 샤드 A 및 B에 대한 블록 데이터의 사본을 포함한다. 노드 C는 다음을 저장하지 않는다: (샤드 A 및 B가 아닌) 다른 샤드에 대한 UTXO 세트의 사본, (샤드 A 및 B가 아닌) 다른 샤드에 대한 트랜잭션 큐(멤풀)의 사본, (샤드 A 및 B가 아닌) 다른 샤드에 대한 트랜잭션 데이터의 사본. 더 나아가, 샤드 A 및 B에 대한 블록 데이터는 블록체인 원장의 블록을 나타내는 데이터를 포함하며 각 블록에 대해 다음 데이터를 포함할 수 있다: i) 블록에 대한 다른 데이터와 함께 파셜 머클 트리를 포함하는 블록 헤더, 및 ii) 블록의 일부인 트랜잭션에 대한 트랜잭션 식별자의 리스트; 이 리스트는 블록의 일부이고 샤드 A 또는 B와 연관된 트랜잭션에 대해서만 트랜잭션 식별자를 포함한다; 그리고 이 리스트는 블록의 일부이고 샤드 A 또는 B와 연관되지 않는 트랜잭션에 대한 트랜잭션 식별자를 포함하지 않는다. 블록 헤더에 저장된 파셜 머클 트리는, 블록의 일부이고 샤드 A 또는 B와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 포함하고, 블록의 일부이고 샤드 A 또는 B와 연관된 트랜잭션으로부터 도출되는 해시 값을 생략한다.
노드 D는 모든 샤드에 대한 UTXO 세트의 사본, 모든 샤드에 대한 트랜잭션 큐(멤풀)의 사본, 모든 샤드에 대한 트랜잭션 데이터의 사본, 및 모든 샤드에 대한 블록 데이터의 사본을 저장한다.
노드에 의해 관리되는 블록 데이터는 노드가 속하지 않는 샤드(들)의 일부인 트랜잭션 데이터를 생략할 수 있으므로, 노드 저장 공간을 절약할 수 있다. 따라서, 일부 노드(예를 들어, 노드 A1, A2, B1, B2 및 C)는 블록체인 원장의 트랜잭션의 제한된 서브세트에 대해서만 블록체인 원장의 데이터 구조를 저장하고, 다른 노드(예를 들어, 노드 D)는 블록체인 원장의 모든 트랜잭션에 대해 데이터 구조를 저장한다. 이 경우 블록체인 원장의 제한된 서브세트에 대한 데이터 구조를 저장하는 노드(예를 들어, 노드 A1, A2, B1, B2 및 C)의 데이터 저장 용량은 전체 블록체인 원장에 대한 데이터 구조를 저장하는 노드(예를 들어, 노드 D)의 데이터 저장 용량보다 훨씬 적을 수 있다. 다른 블록체인 원장에서는, 상이한 샤드에 대해 다른 데이터 구조가 저장되고 유지될 수 있음에 유의한다.
도 2의 수평 분할 방식은 노드의 운영자가 블록체인 네트워크의 하나 이상의 샤드의 멤버가 되도록 선출하거나 선택할 수 있도록 허용한다. 이것은 제한된 데이터 저장 용량을 가진 소규모 파티(party)(예를 들어, 하비스트(hobbyist))가 단일 샤드의 멤버가 되도록 선택하는 것을 허용하는 반면, 더 큰 데이터 저장 용량을 가진 대규모 파티(예를 들어, 금융 기관)는 모든 샤드의 멤버가 되거나 선택하는 것을 선출할 수 있다.
또한, 각 노드는 노드가 속한 하나 이상의 샤드와 연관된 트랜잭션만 유효성 검증하는 블록 유효성 검증 작업을 수행하도록 구성할 수 있다. 이러한 작업에서, 노드가 속하지 않는 다른 샤드와 연관된 임의의 트랜잭션의 유효성 검증은 바이패스되고 노드에 의해 블록이 유효한 것으로 간주되는지 여부에 영향을 주지 않는다. 이 경우, 단일 샤드의 멤버가 되기로 선택한 운영자는 블록체인 원장에서 제한된 트랜잭션의 세트를 유효성 검증함으로써 더 가벼운 보안 참여를 갖는 반면, 모든 샤드의 멤버가 되기로 선택한 운영자는 블록체인 원장의 모든 트랜잭션을 유효성 검증함으로써 더 큰 보안 참여를 갖는다.
노드는 시빌(Sybil) 공격을 방지하기 위해 단일 샤드 내의 여러 다른 노드와 통신하도록 구성될 수 있다. 이러한 공격은 노드로부터 전송된 트랜잭션을 효과적으로 무시하여 네트워크를 통한 전파를 방지할 수 있다. 주어진 샤드의 하나 이상의 노드는 또한 다른 샤드의 노드에 관한 정보를 교환하기 위해 배정될 수 있으며, 그러한 배정(들)은 시간에 따라 주어진 샤드의 노드들 사이에서 순환될 수 있다. 각 노드는 그가 수신하는 모든 트랜잭션을 그가 커플링된 다른 노드로 브로드캐스트할 수 있으며, 그 주어진 노드가 그 샤드의 멤버가 아닌 경우, 전체 트랜잭션 유효성 검증을 수행하는 대신, 트랜잭션을 계속 전파하기 전에 기본적인 트랜잭션-레벨의 검사를 수행한다.
상이한 또는 특정 시간/인스턴스에서, 다른 노드에 대한 세부사항도 또한, 특정 샤드에서 노드간에 공유될 수 있다. 이는 addr 프로토콜 메시지의 수정된 버전을 사용하여 본 개시의 제2 실시예에 따라 수행된다. 현재 비트코인 프로토콜의 일부로서 존재하는 addr 메시지의 일 구현은 하나 이상의 IP 주소 및 포트를 나열하거나 또는 식별하는 데 사용된다. 예를 들어, getaddr 요청은 (예를 들어, 부트스트래핑(bootstrapping)을 위한) 다수의 알려진-활성(active) 피어를 포함하는 addr 메시지를 획득하는 데 사용될 수 있다. addr 메시지는 종종, 하나의 주소만을 포함하지만, 때때로 더 많은, 일부 예시에서 최대 1000개까지 포함한다. 일부 예시에서, 모든 노드는 주기적으로 즉, 24 시간마다 그 자신의 IP 주소를 포함하는 addr을 브로드캐스트한다. 그 후, 노드는 이들 메시지를 그의 피어에게 중계할 수 있으며, 그들에게 새로운 경우 중계된 주소를 저장할 수 있다. 이 방식에서, 네트워크에서 노드는 네트워크에 연결하는 순간 또는 그 이후에, 어느 IP가 네트워크에 연결되는지의 타당하게 알아보기 쉬운 픽처를 가질 수 있다. 대부분의 경우, IP 주소는 초기 addr 브로드캐스트에 기인하여, 모든 사람의 주소 데이터베이스에 추가된다.
본 개시에 따른 수정된 addr 프로토콜의 일 구현은 상기에 부가하여 특정 노드가 속한 샤드 또는 샤드들에 대한 추가적인 정보를 송신할 수 있다. 예를 들어, 수정된 addr 프로토콜에서 도 1b와 같은 공유된 네트워크에서 노드가 네트워크에서 특정 샤드에 합류(joins)할 때, addr 메시지의 일부로서 브로드캐스트되는 것은 또한, 그것이 멤버인 하나 이상의 샤드를 식별하는 필드를 포함할 수 있다. 그러므로, 이 정보는 또한, 도 1b의 네트워크에서 피어로부터의 getaddr 요청에 대한 응답으로 반환된다. 제1 실시예에서 논의된 바와 같이, 이러한 정보는 각 노드 및/또는 노드가 연관된 각 샤드와 연관된 데이터 구조를 기초로 할 수 있다.
도 3a 및 3b는, 총괄하여, 도 2의 샤딩된 블록체인 원장과 같은 샤딩된 블록체인 원장의 일부로서 블록체인 트랜잭션의 생성 및 유효성 검증 및 채굴을 나타내는 흐름도이다.
박스(301)에서, 클라이언트 노드는 블록체인 트랜잭션을 생성하며, 블록체인 트랜잭션은 블록체인 네트워크의 하나 이상의 샤드에 연관된다(또는 배정되거나(assigned) 할당된다(allocated)). 유효한 블록체인 트랜잭션과 연관되는 샤드는, 유효한 블록체인 트랜잭션의 하나 이상의 트랜잭션 입력 또는 트랜잭션 출력과 연관되는 샤드 또는 블록체인 트랜잭션 그 자신과 연관되는 샤드일 수 있다. 예를 들어, 일 실시예에서, 유효한 블록체인 트랜잭션과 연관되는 샤드는 블록체인 트랜잭션의 트랜잭션 식별자에 기초할 수 있으며, 이것은 블록체인 트랜잭션의 트랜잭션 데이터에 SHA256 함수를 적용하여 생성된다. 보다 구체적으로는, 유효한 블록체인 트랜잭션과 연관되는 샤드는, 블록체인 네트워크 상에서 현재 활성 샤드의 수의 모듈러스(modulus)를, 트랜잭션 식별자, 즉, 샤드 식별자 = TX ID mod n에 적용하여 결정될 수 있으며, 여기서 n은 현재 활성 샤드의 수이다. 다른 실시예에서, 유효한 블록체인 트랜잭션과 연관되는 샤드는, 블록체인 트랜잭션의 제1 입력 또는 다른 입력, 및 해당 입력이 참조하는 이전 트랜잭션의 출력에 기초할 수 있다. 이러한 맥락에서, 그 출력이 후속 트랜잭션의 제1 입력에 의해 참조되는 트랜잭션을 "부모(parent)" 트랜잭션이라 칭하고, 후속 트랜잭션을 "자식(child)" 트랜잭션이라 칭한다. 부모를 정의하기 위해 제1 입력을 사용하는 것이 방법에 필수적인 것은 아니라는 점에 유의해야 하며; 복수의 입력이 존재할 경우, 방법을 수행하도록 임의의 입력이 선택될 수 있다. 예를 들어, 자식 트랜잭션의 입력의 특정 수가, 같은 샤드에 있는 트랜잭션의 출력을 부모로서 참조하는 경우, 이전 트랜잭션은 자식 트랜잭션의 부모로서 정의될 수 있다. 입력의 수는 자식 트랜잭션의 입력의 과반수(majority number)를 정의할 수 있다. 이러한 메커니즘에 대한 상세 내용은, 본원의 양수인에게 양도되었으며 그 전체가 본원에 참조로 포함된 영국 특허출원 제1806907.0호 및 영국 특허출원 제1806909.6호에 기재되어 있다. 또 다른 실시예에서, 블록체인 트랜잭션을 블록체인 네트워크의 하나 이상의 샤드와 연관시키기 위해 다른 메커니즘이 사용될 수 있다.
박스(303)에서, 클라이언트 노드는, 블록체인 트랜잭션과 연관되는 하나 이상의 샤드에 속한 노드(및 가능하게는 블록체인 트랜잭션과 연관되지 않는 샤드에 속한 다른 노드)에의 통신을 위해 블록체인 트랜잭션을 브로드캐스트한다.
박스(305)에서, 블록체인 트랜잭션과 연관되는 하나 이상의 샤드에 속한 노드는 블록체인 트랜잭션을 수신한다.
박스(307)에서, 블록체인 트랜잭션과 연관되는 하나 이상의 샤드에 속한 노드는 수신된 블록체인 트랜잭션 또는 그 일부(들)를 유효성 검증하고, 각각의 그러한 노드는 수신된 블록체인 트랜잭션 또는 그 일부(들)가 유효한 것으로 혹시라도 간주되면 그것이 속한 샤드(들)의 다른 노드로 블록체인 트랜잭션을 전파한다.
("트랜잭션 샤드 유효성 검증(Transaction Shard Validation)"이라 칭하는) 일 실시예에서, 박스(307)의 트랜잭션 유효성 검증은, 트랜잭션이 연관되거나 할당된 샤드에 의해 수행된다. 위에서 설명한 바와 같이, 트랜잭션은, 트랜잭션의 트랜잭션 식별자에 적용된 모듈로 함수의 결과를 사용하여 샤드에 연관(또는 배정)될 수 있다. 트랜잭션은 다른 샤드로부터의 입력을 가질 수 있기 때문에, 노드는 UTXO 확인을 위해 다른 샤드의 노드와 통신할 수 있다. 특히, 하나 이상의 샤드에 속한 노드는, 다른 샤드에 속한 노드에게, 다른 샤드에 대한 UTXO 세트를 가져올 것을 요청할 수 있다. 요청된 UTXO 세트를 갖는 노드가 없으면, 널(null) 응답이 주어지고 해당 트랜잭션은 무효로 간주된다. 트랜잭션 입력이 유효한 것으로 간주될 경우, 트랜잭션은, 트랜잭션이 연관되거나 또는 할당된 샤드에 대한 트랜잭션 큐(멤풀)에 추가되고(박스(309)), 트랜잭션은 이 샤드에서의 다른 노드로 전파된다(박스(311)).
("UTXO 샤드 기반 유효성 검증(UTXO Shard-Based Validation)"이라 칭하는) 다른 실시예에서, 박스(307)의 트랜잭션 유효성 검증은 유효성 검증을 수행하는 노드와 동일한 샤드 내에 있는 UTXO 세트와 관련이 있는 입력에 기초하여 트랜잭션을 유효성 검증한다. 다른 샤드의 UTXO 세트와 관련이 있는 입력은 유효성 검증되지 않는다. 각 입력의 유효성 검증은, 참조된 출력의 UTXO가 사용되지 않았는지를 확인하는 것, 입력이 참조되는 출력의 값을 수집할 권한이 있는지를 검증(예를 들어, 스크립트 검증(verification))하는 것, 및 여러 다른 확인을 포함할 수 있다. (입력을 관련시키는 UTXO가 존재하지 않는 경우, 트랜잭션의 출력의 값이 대응하는 입력의 UXTO보다 크거나, 또는 스크립트 오류가 있는 경우와 같이) 입력이 무효일 경우, 트랜잭션은 삭제되고 동일한 샤드의 다른 노드로 전파되지 않는다. 입력이 유효한 것으로 간주되면, 트랜잭션은 유효성 검증을 수행하는 노드에 대한 샤드의 트랜잭션 큐(멤풀)에 추가되고(박스(309)) 트랜잭션은 이 샤드에서의 다른 노드로 전파된다(박스 311).
"트랜잭션 샤드 유효성 검증" 실시예 및 "UTXO 샤드 기반 유효성 검증" 실시예의 상세 내용은, 본원의 양수인에게 양도되었으며 그 전체가 위에서 참조로 포함된 영국 특허출원 제1806911.2호 및 영국 특허출원 제1806914.6호에 제시되어 있다.
실시예에서, 박스(307)의 트랜잭션의 유효성 검증은, 트랜잭션의 신택스(syntax) 및 데이터 구조가 올바른지 확인하는 것, 트랜잭션이 허용된 블록 사이즈 미만이고 100바이트 이상인지 확인하는 것, 및 잠금 시간이 최대의 허용되는 수보다 작은지를 확인하는 것과 같이, 트랜잭션 전체와 연관되는 확인을 포함할 수도 있다.
박스(309)에서, 유효한 블록체인 트랜잭션과 연관되는 샤드에 속한 노드는, 유효한 블록체인 트랜잭션과 연관되는 샤드에 대한 트랜잭션 큐(멤풀)에 그 유효한 블록체인 트랜잭션을 추가한다.
박스(311)에서, 하나 이상의 노드(예를 들어, 채굴자)는 샤드에 대한 트랜잭션 큐(멤풀)(예를 들어, "All Shards" 그룹에 대한 멤풀)로부터 블록을 형성하고 이 새로운 블록을 다른 노드에 전파한다.
박스(313)에서, 노드는 새로운 블록을 수신하고 합의 프로토콜(consensus protocol)에 기초하여 블록 유효성 검증 및 블록의 커미트먼트(commitment)를 위해 새로운 블록을 처리한다.
도 4a 및 4b는, 총괄하여, 모든 샤드의 멤버가 아닌 노드에 대해 채굴자에 의해 생성된 새로운 블록의 유효성을 검증할 때, 도 3a 및 3b의 박스(313)의 동작을 설명하는 흐름도이다. 이 경우에, 노드는 활성 샤드의 제한된 서브세트에 속하므로 하나 이상의 활성 샤드에 속하지 않는다. 모든 샤드의 멤버인 임의의 노드는 잘 알려진 블록 유효성 검증 프로세스를 이용하여 새로운 블록을 유효성 검증할 수 있음에 유의한다.
박스(401)에서, 노드는 새로운 블록을 수신한다. 실시예에서, 블록은, 블록 헤더 및 블록에 대한 TX 식별자의 순서 매겨진 시퀀스를 나타내는 리스트 데이터를 포함한다. 도 2에 나타낸 바와 같은 비트코인형 분산 블록체인 시스템에서, 블록 헤더는 다음의 데이터 필드를 포함할 수 있다:
[1] 블록 버전 번호는 따라야 할 블록 유효성 검증 규칙 세트를 나타낸다.
[2] 이전 블록 헤더 해시, 이것은 이전 블록의 헤더의 인터널(internal) 바이트 순서에 따른 SHA256(SHA256()) 해시이다. 이렇게 하면 이 블록의 헤더를 변경하지 않고 이전 블록을 변경할 수 없다.
[3] 이 블록에 포함된 모든 트랜잭션의 해시로부터 유도된 머클 루트 해시, 헤더를 수정하지 않고는 이러한 트랜잭션이 수정될 수 없음을 보장한다.
[4] (채굴자에 따른) 블록 시간, 이것은 채굴자가 헤더를 해싱하기 시작했을 때의 Unix epoch time이다.
[5] nBits, 이것은 목표 임계값(target threshold)의 인코딩된 버전이며, 블록의 헤더 해시는 이 목표 임계값보다 작거나 이와 같아야 한다.
[6] 논스(nonce), 목표 임계값보다 작거나 이와 같은 해시를 생성하기 위해 헤더 해시를 수정하도록 채굴자가 변경시키는 임의의 수이다.
필드를 갖는 예시 블록이 도 6a에 나타내어져 있다.
박스(403)에서, 노드는, 박스(401)에서 수신된 블록에 저장된 트랜잭션 식별자("TX 식별자" 또는 "TX Ids")의 순서 매겨진 시퀀스를 나타내는 리스트를 추출한다. 블록에 대한 트랜잭션 식별자의 예시 리스트가 도 6a에 개략적으로 나타내어져 있다.
박스(405)에서, 노드는, 박스(403)에서 추출된 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스에 대한 풀 머클 트리를 나타내는 데이터를 생성한다. 풀 머클 트리는 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스에 대응하는 리프 노드의 순서 매겨진 시퀀스를 갖는 트리이다. 각 리프 노드는, 대응하는 트랜잭션 식별자에 의해 참조되는 트랜잭션 데이터의 해시를 포함하며, 모든 비-리프 노드는 그의 자식 노드의 해시 값의 암호화 해시를 포함한다. 풀 머클 트리의 비-리프 노드는, 리프(바닥)로부터 잘 알려진 것처럼 풀 머클 트리에 대한 루트 해시 값을 저장하고 있는 루트까지 상방으로 확장되는 레벨로 논리적으로 구조화된다. 블록에 대한 예시적인 풀 머클 트리가 도 6a에 개략적으로 나타내어져 있다.
박스(407)에서, 노드는 박스(401)에서 수신된 블록의 헤더에 저장된 머클 루트 해시 값을 추출하고, 노드는 추출된 머클 루트 해시 값을 박스(405)에서 생성된 풀 머클 트리의 루트 해시 값과 비교한다.
박스(409)에서, 노드는, 추출된 머클 루트 해시 값이 박스(405)에서 생성된 풀 머클 트리의 루트 해시 값과 일치하는지를 결정하기 위해 박스(407)의 비교를 평가한다. "아니오"일 경우, 동작은 박스(439 및 441)로 계속된다. "예"일 경우, 동작은 박스(411)로 계속된다.
박스(411)에서, 노드는 블록의 유효성을 위한 다른 헤더 조건을 평가한다.
박스(413)에서, 노드는, 블록의 유효성을 위한 다른 모든 헤더 조건이 충족되었는지를 결정하기 위해 박스(411)의 평가(들)를 확인한다. "아니오"일 경우, 동작은 박스(439 및 441)로 계속된다. "예"일 경우, 동작은 박스(415)로 계속된다.
박스(415)에서, 노드는, 박스(403)에서 추출된 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스를 통해 루프를 구성하고 루프의 각 주어진 트랜잭션 식별자에 대해 박스(417 내지 425)의 동작을 수행한다.
박스(417)에서, 노드는, 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션에 대응하는 샤드를 식별한다. 트랜잭션에 대응하는 샤드는, 트랜잭션의 하나 이상의 트랜잭션 입력 또는 트랜잭션 출력과 연관되는 샤드 또는 트랜잭션 그 자신과 연관되는 샤드일 수 있다. 트랜잭션과 하나 이상의 샤드 사이의 연관(또는 대응)을 지정하기 위해 이용될 수 있는 메커니즘의 예는 도 3a 및 3b의 박스(301)에 관련하여 위에서 설명되었다.
박스(419)에서, 노드는 박스(417)에서 식별된 샤드에 속하는지 여부를 확인한다. 그렇지 않은 경우, 동작은 박스(421)로 계속된다. "예"일 경우, 동작은 박스(422)로 계속된다.
박스(421)에서, 노드는 박스(403)에서 추출된 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스로부터 주어진 트랜잭션 식별자를 제거하고 동작은 박스(425)로 계속된다.
박스(423)에서, 노드는 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 유효한지를 확인한다. 주어진 트랜잭션 식별자에 의해 참조된 트랜잭션이 유효하다고 결정되면, 동작은 박스(425)로 계속된다. 그렇지 않은 경우, 동작은 박스(439 및 441)로 계속된다. 실시예에서, 노드는, 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 노드가 속한 샤드에 대한 트랜잭션 큐(멤풀)에 저장되어 있는지 확인할 수 있다. 만일 그렇다면, 트랜잭션은 유효한 것으로 간주될 수 있고 동작은 박스(425)로 계속된다. 그렇지 않은 경우, 노드는 네트워크의 다른 노드와 통신하여 트랜잭션의 사본을 요청하여 얻을 수 있다. 일단 수신되면, 노드는 수신된 트랜잭션을 유효성 검증하기 위한 동작을 수행할 수 있다. 이러한 유효성 검증 동작의 예가 도 3a 및 3b의 박스(307)를 참조하여 위에서 설명되었다. 트랜잭션이 유효한 것으로 간주될 경우, 동작은 박스(425)로 계속된다. 트랜잭션이 무효로 간주될 경우, 동작은 박스(439 및 441)로 계속된다.
박스(425)에서, 노드는, 박스(415)에서 구성된 바와 같이 트랜잭션 식별자의 순서 매겨진 시퀀스를 통한 루프에서 모든 트랜잭션 식별자가 처리되었는지 여부를 확인한다. 그렇지 않다면, 동작은 리스트에서의 다음의 트랜잭션 식별자에 대한 루프를 계속하기 위해 박스(415)로 되돌아 간다. "예"이면, 동작은 박스(427)로 계속된다.
박스(419 내지 425)의 동작은, 노드가 속한 샤드와 연관되는 트랜잭션의 유효성(validity)을 확인하고, 따라서 노드가 속하지 않는 샤드와 연관되는 트랜잭션의 유효성 검증을 확인하는 것을 바이패스한다(bypass).
박스(427)에서, 노드는 블록을 유효한 것으로 마킹하는 데이터를 생성하고 저장할 수 있다.
박스(429)에서, 노드는 블록에 대한 트랜잭션 식별자의 결과 리스트를 포함하는 데이터를 저장한다. 이 트랜잭션 식별자의 결과 리스트는, 노드가 속하지 않는 샤드와 연관되는 트랜잭션 식별자를 생략할 수 있으며, 따라서 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스의 전체 리스트를 저장하는 것을 회피할 수 있다.
박스(431)에서, 노드는, 블록에 대한 파셜 머클 트리를 나타내는 데이터를 유도한다. 이러한 동작에 대한 상세 내용은 도 5를 참조하여 아래에서 설명한다.
박스(433)에서, 노드는, 박스(431)에서 유도된 블록에 대한 파셜 머클 트리를 포함하도록 블록의 헤더 데이터를 업데이트한다.
박스(435)에서, 노드는, 블록을 나타내는 데이터(박스(433)에서의 블록에 대한 파셜 머클 트리로 업데이트된 헤더 및 박스(429)에서 저장된 블록에 대한 결과 리스트를 포함하는 데이터를 포함)를, 노드가 속한 하나 이상의 샤드에 대한 블록 데이터의 일부로서 저장한다. 이러한 동작은 디스크 또는 다른 형태의 영구 데이터 저장소(storage)와 같은 영구 저장소에 블록을 나타내는 것을 저장할 수 있다. 도 6d에는 블록을 나타내는 예시적인 헤더 데이터 및 트랜잭션 리스트 데이터가 개략적으로 나타내어져 있다.
박스(431)의 파셜 머클 트리는, 노드가 속하지 않는 샤드와 연관되는 트랜잭션으로부터 유도된 분기를 생략할 수 있으며 노드가 속한 샤드와 연관되는 트랜잭션으로부터 유도된 분기를 따라 (해시 값에 대한) 플레이스홀더를 포함할 수 있다. 따라서, 많은 경우에, 파셜 머클 트리의 노드 및 레벨은, 풀 머클 트리의 일반 형태에 비해 균형이 맞지 않을 것이다(unbalanced). 중요하게, 파셜 머클 트리를 생성하기 위해 풀 머클 트리를 축소하는 동작은, 노드가 속한 하나 이상의 샤드에 대한 블록 데이터의 헤더에서 파셜 머클 트리의 저장 요구사항을 줄이기 위해 사용될 수 있다. 머클 트리 분기는, 아래에 있는 분기 또는 리프의 연결(concatenation) 및 해싱의 산물이므로, 풀 머클 트리는 트리에서의 전체 경로에 기초하여 축소될 수 있다. 분기가 전적으로 완전한 리프로 이어지는 경우, 이들 분기를 제거하여 그 해시만을 남길 수 있다. 머클 루트로부터 리프까지의 각각의 해시가 제거되어 파셜 머클 트리의 루트 해시가 플레이스홀더 교체에 의해 다시 생성될 수 있다. 이 프로세스를 수행함으로써, 파셜 머클 트리에서의 저장을 요구하는 해시의 수가 감소되고, 저장 요구사항을 낮출 수 있다.
박스(437)에서, 노드는, 박스(401)에서 수신된 새로운 블록을 다른 노드로 전파할 수 있다.
박스(439)에서, 노드는, 블록을 무효로 마킹하는 데이터를 생성하고 저장할 수 있다.
박스(441)에서, 노드는, 무효인 블록을 나타내는 데이터를 폐기하고 무효인 블록을 다른 노드로 전파하는 것을 회피할 수 있다. 또한, 노드는 샤드에 배정된 무효인 블록의 일부인 하나 이상의 트랜잭션에 대한 트랜잭션 데이터를 폐기하고 그러한 트랜잭션에 대한 UTXO를 적절히 샤드에 대한 UTXO 세트에 반환할 수 있다.
도 5는 블록에 대한 파셜 머클 트리를 나타내는 데이터를 도출하기 위해 노드에 의해 수행되는 예시적인 동작을 나타내는 흐름도이다.
박스(501)에서, 노드는, 블록 헤더 및 블록에 대한 트랜잭션 식별자의 순서 매겨진 리스트를 판독한다.
박스(503)에서, 노드는 박스(501)에서 판독된 블록의 트랜잭션 식별자의 리스트를 이용하여 블록에 대한 풀 머클 트리를 나타내는 데이터를 생성한다.
박스(505)에서, 노드는, 풀 머클 트리의 바닥 레벨의 (왼쪽에서 오른쪽으로) 해시 값에 대응하는, 블록에 대한 트랜잭션 식별자의 순서 매겨진 리스트의 트랜잭션 식별자를 통해 루프를 구성한다. 루프는 리스트의 주어진 각 트랜잭션 식별자에 대해 박스(507 내지 513)의 동작을 수행한다.
박스(507)에서, 노드는, 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 노드가 속한 샤드에 대응하는지 여부를 확인한다. 트랜잭션과 하나 이상의 샤드 사이의 연관 또는 대응을 지정하는 데 사용될 수 있는 메커니즘의 예가 도 3a 및 3b의 박스(301)와 관련하여 위에서 설명되었다. 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 노드가 속한 샤드에 대응하지 않으면, 동작은 박스(509) 및 박스(513)로 계속된다. 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 노드가 속한 샤드에 대응할 경우, 동작은 박스(511)로 계속된다.
박스(511)에서, 노드는, 리스트의 주어진 트랜잭션 식별자(해시 값)를 플레이스홀더로 대체하고, 동작은 박스(513)로 계속된다. 플레이스홀더는 리스트의 트랜잭션 식별자의 인코딩 사이즈에 비해 더 작은 인코딩 사이즈의 데이터 값 또는 문자이다. 또한, 플레이스홀더는 리스트의 트랜잭션 식별자에 대해 허용되는 값으로부터 쉽게 식별할 수 있도록 구성된다. 실시예에서, 플레이스홀더는 널(null) 값, 또는 특정 문자일 수 있다. 이상적으로는, 플레이스홀더는 256비트 해시에 비해 최대의 공간 감소를 제공해야 한다. 대안적으로는, 플레이스홀더는 256비트 해시에 비해 그외 다른 최소 내지 최대의(minimal to maximal) 공간 감소를 제공할 수 있다.
박스(513)에서, 노드는, 박스(505)에서 구성된 트랜잭션 식별자를 통한 루프에서 처리될 트랜잭션 식별자가 남아 있는지 여부를 확인한다. "예"이면, 동작은, 리스트의 다음 트랜잭션 식별자에 대한 루프를 계속하기 위해 박스(505)로 되돌아 간다. 그렇지 않은 경우, 동작은 박스(515)로 계속된다.
박스(507 내지 513)의 동작은, 노드가 속한 샤드(들)에 대응하는 트랜잭션을, 풀 머클 트리의 바닥(리프) 레벨에 있는 트랜잭션 식별자로부터의 플레이스홀더로 대체한다는 점에 유의한다.
박스(515)에서, 노드는, 박스(503)에서 생성된 데이터에 의해 표현되는 풀 머클 트리의 바닥(또는 리프 노드 레벨)으로, 머클 트리 현재 레벨 포인터(Merkle Tree current level pointer)를 설정한다.
박스(517)에서, 노드는, 머클 트리 현재 레벨 포인터가 풀 머클 트리에서 루트 레벨을 가리키는지 확인한다. "아니오"일 경우, 동작은 박스(533)로 계속된다. "예"일 경우, 동작은 박스(519)로 계속된다.
박스(519)에서, 노드는, (머클 트리 현재 레벨 포인터에 의해 참조되는) 풀 머클 트리의 현재 레벨에서의 인접-노드-쌍을 통한 루프를 구성한다. 이 루프는 풀 머클 트리의 현재 레벨에서의 각각의 주어진 인접-노드-쌍에 대해 박스(521 내지 529)의 동작을 수행한다.
박스(521)에서, 노드는, 주어진 인접-노드-쌍의 두 노드 모두가 각각 (플레이스홀더와 구별되는) 해시 값을 포함하는지 여부를 확인한다. 풀 머클 트리의 바닥 레벨에서의 인접-노드-쌍에 대한 노드는, 위에서 설명한 바와 같이 박스(505 내지 513)의 동작으로 인한 플레이스홀더 및 트랜잭션의 순서 매겨진 리스트에서 대응하는 요소를 참조하며, 이러한 대응은, 플레이스홀더 및 트랜잭션의 리스트에서의 위치를, 풀 머클 트리의 바닥 레벨에서 (왼쪽에서 오른쪽으로) 리프 노드 위치와 일치킴으로써 결정된다(dictated). 이 조건이 충족되지 않으면, 주어진 인접-노드-쌍의 두 노드 모두가 박스(523)에서 그대로 남겨지고, 주어진 인접-노드-쌍에 대한 부모 트리 노드의 해시 값이 박스(525)에서 플레이스홀더로 대체되고, 동작은 박스(529)로 계속된다. 이 조건이 충족되면, 노드는, 박스(527)에서, 주어진 인접-노드-쌍의 두 노드 모두를 제거하고 인접-노드-쌍에 대한 부모 트리 노드의 해시 값을 남겨두고, 동작은 박스(529)로 계속된다.
박스(529)에서, 노드는, 풀 머클 트리의 현재 레벨에서의 인접-노드-쌍이 박스(519)에서 구성된대로 인접-노드-쌍을 통한 루프에서 처리되도록 더 남아있는지를 확인한다. "예"이면, 동작은, 풀 머클 트리의 현재 레벨에서의 다음의 인접-노드-쌍에 대한 루프를 계속하기 위해 박스(519)로 되돌아 간다. 그렇지 않은 경우, 동작은 박스(531)로 계속된다.
박스(531)에서, 노드는 풀 머클 트리에서의 다음 레벨을 가리키도록 머클 트리 현재 레벨 포인터를 조정하고, 동작은 풀 머클 트리의 다음 레벨에 대해 박스(517 내지 529)의 동작을 계속 반복한다.
박스(533)에서, 노드는 풀 머클 트리의 루트 노드 해시 값을 플레이스홀더로 교체하거나 대체하고 동작이 종료된다.
도 6a는, 예시적인 블록의 풀 머클 트리를 나타낸다.
도 6b는, 도 6a의 예시적인 블록의 풀 머클 트리에 대해 도 5의 흐름도의 박스(519 내지 529)의 동작의 결과를 나타낸다. 이러한 동작에서, 플레이스홀더는 풀 머클 트리의 바닥 레벨에서 6개의 트랜잭션에 대한 해시 값(트랜잭션 식별자)을 대체했으며 이러한 트랜잭션은 노드가 속한 샤드(들)에 대응한다.
도 6c는, 도 6a의 풀 머클 트리에 대해 도 5의 흐름도의 박스(519 내지 529)의 동작의 결과를 나타낸다. 이러한 동작에서, (풀 머클 트리 왼쪽의) 풀 머클 트리의 바닥 레벨에서 2개의 인접한 해시 값은, 그러한 해시 값이 노드가 속하지 않은 샤드(들)에 대응하지 않는 트랜잭션으로부터 도출되었기 때문에 제거되었다. 또한, 플레이스홀더는, 인접한 노드가 양쪽 모두 대응하는 해시 값을 갖지 않고 따라서 노드가 속한 샤드(들)에 대응하는 적어도 하나의 트랜잭션으로부터 도출되는 3개의 경우에 (풀 머클 트리 왼쪽의) 풀 머클 트리의 제2 레벨에서의 인접한 리프 노드의 부모 노드를 대체하였다.
도 6d는, 도 6a의 풀 머클 트리에 대해 도 5의 흐름도의 동작의 결과인 파셜 머클 트리를 나타낸다.
도 7a 내지 7c는, 총괄하여, 도 2의 샤딩된 블록체인 원장과 같은 샤딩된 블록체인 원장의 일부로서 저장된 블록을 유효성 검증하기 위해 모든 샤드의 멤버가 아닌 노드에 의해 수행되는 동작을 나타내는 흐름도이다. 이 경우, 노드는 활성 샤드의 제한된 서브세트에 속하므로 하나 이상의 활성 샤드에 속하지 않는다. 모든 샤드의 멤버인 임의의 노드는 잘 알려진 블록 유효성 검증 프로세스를 이용하여 새로운 블록을 유효성 검증할 수 있음에 유의한다
박스(701)에서, 노드는 자신이 속한 샤드에 대한 블록 데이터로부터 블록을 판독한다. 블록 데이터는 블록에 대한 파셜 머클 트리를 나타내는 데이터를 포함하는 블록 헤더를 포함한다. 블록 헤더는 다른 필드도 포함할 수 있다. 블록 데이터는 또한, 블록의 일부이고 노드가 속한 샤드(들)에 대응하는 트랜잭션에 대한 트랜잭션 식별자의 순서 매겨진 리스트를 포함한다. 도 8a에 예시적인 블록 데이터가 개략적으로 도시되어 있다.
박스(703)에서, 노드는, 박스(701)에서 판독된 블록 데이터에 저장된 블록에 대한 트랜잭션 식별자의 순서 매겨진 리스트를 추출한다. 트랜잭션 식별자의 리스트는, 가능하게는, 블록의 일부이고 노드가 속하지 않는 하나 이상의 샤드에 대응하는 트랜잭션을 생략할 수 있으며, 따라서 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스의 전체 리스트를 저장하는 것을 회피한다.
박스(705)에서, 노드는, 박스(701)에서 판독된 블록 데이터에 저장된 블록에 대한 파셜 머클 트리를 나타내는 데이터를 추출한다.
박스(707)에서, 노드는, 박스(705)에서 추출된 데이터에 의해 표현되는 파셜 머클 트리의 바닥 레벨로, 파셜 머클 트리 현재 레벨 포인터를 설정한다.
박스(709)에서, 노드는, (박스(707)에서 설정된 파셜 머클 트리 현재 레벨 포인터에 의해 참조되는 바닥 레벨인) 파셜 풀 머클 트리의 현재 레벨에서의 3개의 노드를 통한 루프를 구성한다. 이 루프는, 파셜 머클 트리의 바닥 레벨에서의 각각의 주어진 트리 노드에 대해 박스(711 내지 717)의 동작을 수행한다.
박스(711)에서, 노드는, 주어진 트리 노드가 플레이스홀더인지를 확인한다. 그렇지 않은 경우, 노드는 박스(713)의 트리 노드를 스킵하고 박스(717)로 계속된다. 만약 그렇다면, 노드는 박스(715)로 계속되고 여기서 노드는 박스(703)에서 추출된 리스트로부터의 대응하는 트랜잭션 식별자(해시 값)로 플레이스홀더를 교체하고, 동작은 박스(717)로 계속된다. 플레이스홀더와 박스(703)에서 추출된 리스트로부터의 트랜잭션 식별자(해시 값) 사이의 대응은, 파셜 머클 트리의 바닥 레벨에서의 플레이스홀더의 순서 매김(ordering)과 박스(703)에서 추출된 리스트에서의 트랜잭션 식별자의 순서 매김 사이의 대응에 의해 결정될 수 있다.
박스(717)에서, 노드는, 박스(709)에서 구성된 트리 노드를 통한 루프에서 처리될 (파셜 머클 트리 현재 레벨 포인터에 의해 참조되는) 파셜 머클 트리의 현재 레벨에 트리 노드가 더 남아 있는지를 확인한다. 만약 그렇다면, 동작은 다음의 트리 노드에 대한 루프를 계속하기 위해 박스(709)로 되돌아 간다. 그렇지 않은 경우, 동작은 박스(719)로 계속된다.
박스(719)에서, 노드는, 파셜 머클 트리 현재 레벨 포인터를, 박스(705)에서 추출된 데이터에 의해 표현되는 (바닥 리프 노드 레벨 위의 레벨인) 파셜 머클 트리의 다음 레벨로 설정한다.
박스(721)에서, 노드는, 파셜 머클 트리 현재 레벨 포인터가 파셜 머클 트리에서의 루트 레벨을 가리키는지를 확인한다. "예"일 경우, 동작은 박스(735)로 계속된다. "아니오"일 경우, 동작은 박스(723)로 계속된다.
박스(723)에서, 노드는, (박스(719 또는 733)에서 설정된 파셜 머클 트리 현재 레벨 포인터에 의해 참조되는) 파셜 풀 머클 트리의 현재 레벨에서의 트리 노드를 통한 루프를 구성한다. 이 루프는 파셜 머클 트리의 현재 레벨에서의 각각의 주어진 트리 노드에 대해 박스(725 내지 731)의 동작을 수행한다.
박스(725)에서, 노드는, 주어진 트리 노드가 플레이스홀더인지 여부를 확인한다. "아니오"일 경우 노드는 박스(727)에서 트리 노드를 스킵하고 박스(731)로 계속된다. "예"일 경우, 노드는, 노드가 주어진 트리 노드의 2개의 자식 노드의 해시 값에 기초하여 해시 값을 계산하고 플레이스홀더를 이 계산된 해시 값으로 대체하는 박스(729)로 계속되고, 동작은 박스(729)로 계속된다.
박스(729)에서, 노드는, 박스(723)에서 구성된 트리 노드를 통한 루프에서 처리될 (파셜 머클 트리 현재 레벨 포인터에 의해 참조되는) 파셜 머클 트리의 현재 레벨에서의 트리 노드가 더 남아 있는지를 확인한다. 만약 그렇다면, 동작은 다음의 트리 노드에 대한 루프를 계속하기 위해 박스(723)로 되돌아 간다. 그렇지 않을 경우, 동작은 박스(733)로 계속된다.
박스(733)에서, 노드는 파셜 머클 트리에서 다음의 레벨을 가리키도록 파셜 머클 트리 현재 레벨 포인터를 조정하고, 동작은 파셜 머클 트리에서 다음 레벨을 처리하기 위해 박스(721)로 되돌아 간다.
박스(735)에서, 노드는, 박스(709 내지 731)의 동작으로부터 결정된 루트 노드의 2개의 자식 노드에 기초하여 해시 값을 계산하고 루트 노드의 플레이스홀더를 이 계산된 해시 값으로 대체한다.
박스(737)에서, 노드는, 박스(701)에서 판독된 블록 데이터의 일부로서 블록의 헤더에 저장된 머클 루트 해시 값을 추출하고, 노드는 추출된 머클 루트 해시 값을 박스(735)에서 계산된 파셜 머클 트리의 루트 해시 값과 비교한다.
박스(739)에서, 노드는, 추출된 머클 루트 해시 값이 박스(735)에서 계산된 파셜 머클 트리의 루트 해시 값과 일치하는지를 결정하기 위해 박스(737)의 비교를 평가한다. "예"일 경우, 동작은 박스(741)로 계속된다. "아니오"일 경우, 동작은 박스(755 및 757)로 계속된다.
박스(741)에서, 노드는, 블록의 유효성을 위한 다른 헤더 조건을 평가한다.
박스(743)에서, 노드는, 블록의 유효성을 위한 다른 모든 헤더 조건이 충족되었는지를 결정하기 위해 박스(741)의 평가(들)를 확인한다. "예"이면, 동작은 박스(745)로 계속된다. "아니오"이면, 동작은 박스(755 및 757)로 계속된다.
박스(745)에서, 노드는, 박스(703)에서 추출된 트랜잭션 식별자의 리스트를 통한 루프를 구성한다. 트랜잭션 식별자의 리스트는, 가능하게는 노드가 속하지 않는 샤드와 연관되는 트랜잭션을 생략할 수 있고, 따라서 블록에 대한 트랜잭션 식별자의 순서 매겨진 시퀀스의 전체 리스트를 저장하는 것을 회피한다. 이 루프는 이 리스트에서 각각의 주어진 트랜잭션 식별자에 대해 박스(747 내지 749)의 동작을 수행한다.
박스(747)에서, 노드는, 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 유효한지를 확인한다. 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 유효한 것으로 결정되면, 동작은 박스(749)로 계속된다. 그렇지 않다면, 동작은 박스(755 및 757)로 계속된다. 실시예에서, 노드는, 주어진 트랜잭션 식별자에 의해 참조되는 트랜잭션이 노드가 속한 샤드에 대한 트랜잭션 큐(멤풀)에 저장되어 있는지 확인할 수 있다. 그렇다면, 트랜잭션은 유효한 것으로 간주될 수 있으며 동작은 박스(749)로 계속된다. 그렇지 않은 경우, 노드는, 트랜잭션의 사본을 요청하여 얻을 수 있도록 네트워크의 다른 노드와 통신할 수 있다. 일단 수신되면, 노드는 수신된 트랜잭션을 유효성 검증하기 위한 동작을 수행할 수 있다. 이러한 유효성 검증 동작의 예가 도 3a 및 3b의 박스(307)를 참조하여 위에서 설명되었다. 트랜잭션이 유효한 것으로 간주될 경우, 동작은 박스(749)로 계속된다. 트랜잭션이 무효로 간주될 경우, 동작은 박스(755 및 757)로 계속된다.
박스(749)에서, 노드는, 박스(745)에서 구성된 트랜잭션 식별자를 통한 루프에서 처리될 트랜잭션 식별자가 남아 있는지 여부를 확인한다. "예"일 경우, 동작은 리스트에서의 다음의 트랜잭션 식별자에 대한 루프를 계속하기 위해 박스(745)로 되돌아간다. "아니오"일 경우, 동작은 박스(751 및 753)로 계속된다.
박스(751)에서, 노드는, 블록을 유효한 것으로 마킹하는 데이터를 생성하고 저장한다.
박스(753)에서, 노드는, 유효한 블록을 나타내는 데이터를, 노드와 동일한 샤드의 세트에 속하는 다른 노드로 전파할 수 있다.
박스(755)에서, 노드는, 블록을 무효로 마킹하는 데이터를 생성하고 저장한다.
박스(757)에서, 노드는, 무효인 블록을 나타내는 블록 데이터를 폐기하고 무효인 블록을 나타내는 블록 데이터를 다른 노드로 전파하는 것을 회피할 수 있다. 노드는 또한, 샤드에 배정된 무효인 블록의 일부인 하나 이상의 트랜잭션에 대한 트랜잭션 데이터를 폐기하고 그러한 트랜잭션에 대한 UTXO를 적절히 샤드에 대한 UTXO 세트에 반환할 수 있다.
도 8a는, 예시적인 블록의 파셜 머클 트리를 나타낸다.
도 8b는, 도 8a의 파셜 머클 트리에 대한 도 7a 내지 7d의 흐름도의 박스(709-717)의 동작의 결과를 나타낸다. 이러한 동작에서, 파셜 머클 트리의 하위(lower)(리프) 레벨에서의 5개의 플레이스홀더는 박스(703)에서 추출된 트랜잭션 식별자의 리스트의 일부로서 대응하는 해시 값(트랜잭션 식별자)으로 대체되었다.
도 8c는, 도 8a의 파셜 머클 트리에 대한 도 7a 내지 7d의 흐름도의 박스(723 내지 731)의 동작의 결과를 나타낸다. 이러한 동작에서, 파셜 머클 트리의 제2 레벨에서의 3개의 플레이스홀더는 자식 노드 해시 값으로부터 도출되는 해시 값으로 대체되었다.
도 8d는, 도 8a의 파셜 머클 트리에 대한 도 7a 내지 7d의 흐름도의 박스(723-737)의 동작의 결과를 나타낸다. 이러한 동작에서, 파셜 머클 트리의 루트에 대한 해시 값은 자식 노드 해시 값으로부터 도출되고 유효성 검증을 위해 블록의 블록 헤더에 저장된 머클 루트 해시 값과 비교된다.
도 9는, 본 개시의 적어도 하나의 실시예를 구현하는 데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도이다. 다양한 실시예에서, 컴퓨팅 디바이스(2600)는 위에서 예시되고 설명된 시스템 중 임의의 것을 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 디바이스로서 사용하도록 구성될 수 있다. 도 9에 나타낸 바와 같이, 컴퓨팅 디바이스(2600)는 버스 서브시스템(2604)을 통해 다수의 주변 서브시스템과 통신하도록 구성될 수 있으며 그에 동작 가능하게 커플링되는 하나 이상의 프로세서(2602)를 포함할 수 있다. 프로세서(2602)는 본원에 설명된 지출 트랜잭션을 유효성 검증하는 것의 일부로서 잠금해제 및 잠금 스크립트의 처리를 위해 이용될 수 있다. 이러한 주변 서브시스템은, 메모리 서브시스템(2608) 및 파일/디스크 저장소 서브시스템(2610)을 포함하는 저장소 서브시스템(2606), 하나 이상의 사용자 인터페이스 입력 디바이스(2612), 하나 이상의 사용자 인터페이스 출력 디바이스(2614), 및 네트워크 인터페이스 서브시스템(2616)을 포함할 수 있다. 이러한 저장소 서브시스템(2606)은 본 개시에서 설명된 트랜잭션 및 블록과 연관되는 세부 사항과 같은 정보의 일시적 또는 장기 저장을 위해 사용될 수 있다.
버스 서브시스템(2604)은 컴퓨팅 디바이스(2600)의 다양한 구성요소 및 서브시스템이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)은 단일의 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 대안적인 실시예는 다수의 버스를 활용할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 디바이스 및 네트워크에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 디바이스(2600)로부터의 다른 시스템으로부터 데이터를 수신하고 이에 대해 데이터를 송신하기 위한 인터페이스로서 기능할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은, 데이터 기술자가 사용자 데이터 센터와 같은 원격 위치에 있으면서 데이터를 송신 및 수신할 수 있도록, 데이터 기술자가 디바이스를 무선 네트워크에 연결하게 할 수 있다. 버스 서브시스템(2604)은, 세부 사항, 검색어 등과 같은 데이터를 본 개시의 지도받은 모델(supervised model)에 통신하기 위해 활용될 수 있고 또한 지도받은 모델의 출력을 네트워크 인터페이스 서브시스템(2616)을 통해 하나 이상의 프로세서(2602)에게 및 상인(merchants) 및/또는 채권자(creditors)에게 통신하기 위해 활용될 수 있다.
사용자 인터페이스 입력 디바이스(2612)는 키보드; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 디바이스; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 디바이스; 및 다른 타입의 입력 디바이스와 같은 하나 이상의 사용자 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)에 정보를 입력하기 위한 가능한 모든 타입의 디바이스 및 메커니즘을 포함하는 것으로 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 디바이스와 같은 비-시각적 디스플레이 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 또는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 디바이스 또는 다른 디스플레이 디바이스일 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)로부터 정보를 출력하기 위한 가능한 모든 타입의 디바이스 및 메커니즘을 포함하는 것으로 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(2614)는, 예를 들어, 이러한 상호작용이 적절할 수 있을 때, 서술된 프로세스 및 그 변형을 수행하는 애플리케이션과의 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는 데 사용될 수 있다.
저장소 서브시스템(2606)은 본 개시의 적어도 하나의 실시예의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터 판독가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의해 실행될 때, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시의 하나 이상의 실시예의 기능을 제공할 수 있고, 저장소 서브시스템(2606)에 저장될 수 있다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 저장소 서브시스템(2606)은 본 개시에 따라 사용되는 데이터를 저장하기 위한 보관소를 추가적으로 제공할 수 있다. 저장소 서브시스템(2606)은 메모리 서브시스템(2608) 및 파일/디스크 저장소 서브시스템(2610)을 포함할 수 있다.
메모리 서브시스템(2608)은, 프로그램 실행 중에 명령어 및 데이터를 저장하기 위한 메인 랜덤 액세스 메모리(RAM)(2618) 및 고정된 명령어가 저장될 수 있는 읽기 전용 메모리(ROM)(2620)를 포함하는 다수의 메모리를 포함할 수 있다. 파일/디스크 저장소 서브시스템(2610)은, 프로그램 및 데이터 파일에 대한 비일시적 영구(비휘발성) 저장소를 제공할 수 있으며, 하드 디스크 드라이브, 관련된 이동식 미디어를 동반한 플로피 디스크 드라이브, CD-ROM 드라이브(Compact Disk Read Only Memory), 광학 드라이브, 이동식 미디어 카트리지, 및 다른 유사한 저장소 미디어를 포함할 수 있다.
컴퓨팅 디바이스(2600)는 적어도 하나의 로컬 클럭(2624)을 포함할 수 있다. 로컬 클럭(2624)은 특정 시작 날짜로부터 발생한 틱(tick)의 수를 나타내는 카운터일 수 있으며 컴퓨팅 디바이스(2600) 내에 통합되어 위치될 수 있다. 로컬 클럭(2624)은, 특정 클럭 펄스로 컴퓨팅 디바이스(2600) 및 그 안에 포함된 모든 서브시스템에 대한 프로세서에서의 데이터 전송을 동기화하는 데 사용될 수 있으며, 컴퓨팅 디바이스(2600)와 데이터 센터의 다른 시스템 사이의 동기 작업을 조정하는 데 사용될 수 있다. 일 실시예에서, 로컬 클럭(2624)은 원자 클럭이다. 다른 실시예에서, 로컬 클럭은 프로그래머블 인터벌(interval) 타이머이다.
컴퓨팅 디바이스(2600)는 휴대용 컴퓨터 디바이스, 태블릿 컴퓨터, 워크스테이션, 또는 아래에서 서술되는 임의의 다른 디바이스를 포함하는 다양한 타입일 수 있다. 추가적으로, 컴퓨팅 디바이스(2600)는 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 디바이스(2600)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(2600)에 연결될 수 있는 디바이스는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이 디바이스는 광 신호를, 처리를 위해 디바이스를 컴퓨팅 디바이스(2600)에 연결하는 포트를 통해 송신될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크의 계속 변하는 성질에 기인하여, 도 9에 도시된 컴퓨팅 디바이스(2600)의 서술은 디바이스의 바람직한 실시예를 예시할 목적으로 특정 예시로서만 의도된다. 도 9에 도시된 시스템보다 더 많거나 적은 구성요소를 갖는 다수의 다른 구성이 가능하다.
전술한 실시예는 본 개시를 제한하는 것이 아니고, 통상의 기술자는 첨부된 청구범위에 의해 정의된 본 개시의 범주를 벗어나지 않으면서, 다양한 대안적인 실시예를 설계할 수 있음이 유의되어야 한다. 청구범위에서, 괄호안에 있는 임의의 참조 부호는 청구범위를 제한하는 것으로 해석되어서는 안 된다. "포함하는" 및 "포함한다" 등의 단어는 임의의 청구범위 또는 명세서 전체에 열거된 것 이외의 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서, "포함한다"는 "포함하거나 구성된다"를 의미하고, "포함하는"은 "포함하거나 구성되는"을 의미한다. 요소의 단수형 참조는 이러한 요소의 복수형의 참조를 배제하지 않으며, 그 역으로도 그러하다. 본 개시는 수 개의 개별적인 요소를 포함하는 하드웨어에 의해, 그리고 적합하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 수 개의 수단을 나열하는 디바이스 청구항에서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어의 항목에 의해 구현될 수 있다. 특정 측정치가 서로 상이한 종속 항에서 인용된다는 단순한 사실만으로 이들 측정치의 조합이 유리하도록 사용될 수 없음을 나타내지 않는다.
위의 서술은 제한적인 것이 아니라 예시적인 것으로 의도된다는 것이 이해될 것이다. 위의 서술을 읽고 이해할 시, 다수의 다른 구현이 통상의 기술자에게 명백할 것이다. 본 개시가 특정 예시적인 구현을 참조하여 서술되었지만, 본 개시가 서술된 구현에 제한되지 않고 첨부된 청구 범위의 범주 내에서 수정 및 변경으로 실시될 수 있음이 인식될 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 의미로 간주될 것이다. 그러므로, 본 개시의 범주는 첨부된 청구 범위를 참조하여, 이러한 청구 범위가 주어지는(entitled) 등가물의 전체 범주와 함께 결정되어야 한다.

Claims (15)

  1. 샤딩된(sharded) 블록체인 네트워크의 노드(node) - 각각의 노드는 복수의 활성 샤드들(active shards) 중 하나 이상의 샤드의 멤버임 - 에 걸쳐서 블록체인의 블록을 유지하기 위한 컴퓨터 구현되는 방법으로서, 상기 방법은:
    상기 복수의 활성 샤드들의 특정 서브세트(subset)의 멤버인 주어진 노드에 의해 상기 블록체인의 새로운 블록을 나타내는 데이터를 생성하는 것; 및
    상기 주어진 노드에 의해 상기 새로운 블록을 나타내는 상기 데이터를 저장하는 것을 포함하고,
    상기 새로운 블록을 나타내는 상기 데이터는, i) 상기 새로운 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되는 트랜잭션(transaction)에 대한 트랜잭션 식별자의 리스트, 및/또는 ii) 상기 새로운 블록에 대한 파셜 머클 트리(Partial Merkle Tree)를 포함하는, 컴퓨터 구현되는 방법.
  2. 제1항에 있어서,
    i)의 트랜잭션 식별자의 상기 리스트는, 상기 새로운 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되지 않는 트랜잭션에 대한 트랜잭션 식별자를 포함하지 않는, 컴퓨터 구현되는 방법.
  3. 제2항에 있어서,
    i)의 트랜잭션 식별자의 상기 리스트는, 상기 새로운 블록에 포함된 데이터에 기초하여 상기 새로운 블록에 대한 트랜잭션 식별자의 초기 리스트를 구축하고, 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되지 않는 트랜잭션에 대응하는 임의의 트랜잭션 식별자를 제거하도록 트랜잭션 식별자의 상기 초기 리스트를 처리함으로써 생성되는, 컴퓨터 구현되는 방법.
  4. 제1항에 있어서,
    ii)의 상기 파셜 머클 트리는, 상기 새로운 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 포함하고, 상기 새로운 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되는 트랜잭션으로부터 도출되는 해시 값은 생략하는, 컴퓨터 구현되는 방법.
  5. 제1항에 있어서,
    ii)의 상기 파셜 머클 트리는, 상기 새로운 블록에 포함된 데이터에 기초하여 상기 새로운 블록에 대한 풀 머클 트리(Full Merkle Tree)를 구축하고, 상기 새로운 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되는 트랜잭션으로부터 도출되는 해시 값을 플레이스홀더(placeholders)로 대체하도록 상기 풀 머클 트리를 처리함으로써 생성되는, 컴퓨터 구현되는 방법.
  6. 제5항에 있어서,
    상기 풀 머클 트리를 처리하는 것은, 상기 풀 머클 트리의 바닥 레벨로부터 루트 레벨까지 반복 처리하는 것(iterating) 및 인접-노드 쌍에 대한 두 개의 해시 값을 제거하고 부모(parent) 해시 값을 남기는 것을 더 포함하는, 컴퓨터 구현되는 방법.
  7. 제5항에 있어서,
    상기 풀 머클 트리를 처리하는 것은, 상기 풀 머클 트리의 바닥 레벨로부터 루트 레벨까지 반복 처리하는 것 및 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되지 않는 트랜잭션으로부터 도출되는 해시 값을 모두 나타내지 않는 두 개의 자식(child) 노드를 갖는 부모 트리 노드의 해시 값을 플레이스홀더로 대체하는 것을 더 포함하는. 컴퓨터 구현되는 방법.
  8. 제1항에 있어서,
    상기 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되지 않는 상기 트랜잭션에 대한 액세스를 요구하지 않고 블록 유효성 검증을 위한 머클 루트 해시 값을 계산하기 위해 상기 파셜 머클 트리를 처리하도록 상기 노드를 동작시키는 것을 더 포함하는, 컴퓨터 구현되는 방법.
  9. 제8항에 있어서,
    상기 머클 루트 해시 값을 계산하기 위해 상기 파셜 머클 트리를 처리하는 것은, 상기 파셜 머클 트리의 하위(lower) 레벨로부터 루트 레벨까지 반복 처리하는 것 및 상기 파셜 머클 트리의 대응하는 자식 해시 값으로부터 계산된 해시 값으로 플레이스홀더를 대체하는 것을 포함하는, 컴퓨터 구현되는 방법.
  10. 제1항에 있어서,
    i)의 상기 트랜잭션 식별자 리스트 및 ii)의 상기 파셜 머클 트리는, 상기 샤드들 중에서의 상기 트랜잭션의 할당 및 노드 멤버쉽에 기초하여, 상기 노드들 중에서 변하는, 컴퓨터 구현되는 방법.
  11. 제1항에 있어서,
    상기 새로운 블록을 나타내는 상기 데이터를 생성할 때, 상기 노드는, 상기 새로운 블록의 일부이고 상기 복수의 활성(active) 샤드들의 상기 특정 서브세트와 연관되는 트랜잭션을 유효성 검증하고, 상기 새로운 블록의 일부이고 상기 복수의 활성 샤드들의 상기 특정 서브세트와 연관되지 않는 트랜잭션의 유효성 검증은 바이패스(bypassing)하는, 컴퓨터 구현되는 방법.
  12. 제1항에 있어서,
    상기 새로운 블록의 일부인 상기 트랜잭션은, 트랜잭션 식별자에 기초하여, 상기 복수의 활성 샤드들 중의 샤드와 연관되는, 컴퓨터 구현되는 방법.
  13. 제1항에 있어서,
    상기 새로운 블록의 일부인 상기 트랜잭션은 부모 블록체인 트랜잭션에 기초하여 상기 복수의 활성 샤드들 중의 샤드와 연관되며,
    상기 부모 트랜잭션은 자식 블록체인 트랜잭션의 입력에 대응하는 출력에 의해 정의되고,
    상기 부모 트랜잭션과 상기 자식 트랜잭션 양쪽 모두는 동일한 샤드와 연관되는, 컴퓨터 구현되는 방법.
  14. 프로세서; 및
    상기 프로세서에 의한 실행의 결과로서, 상기 시스템이 제1항 내지 제14항 중 어느 한 항에 따른 컴퓨터 구현되는 방법의 적어도 일부를 수행하게 하는 실행 가능한 명령어를 포함하는 메모리
    를 포함하는, 시스템.
  15. 컴퓨터 시스템의 프로세서에 의해 실행된 결과, 상기 컴퓨터 시스템이 제1항 내지 제14항 중 어느 한 항에 따른 컴퓨터 구현되는 방법의 적어도 일부를 수행하게 하는 실행 가능한 명령어를 저장한 비일시적 컴퓨터 판독가능 저장 매체.
KR1020207034209A 2018-04-27 2019-04-24 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 KR20210003234A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
GB1806911.2 2018-04-27
GB1806914.6 2018-04-27
GBGB1806914.6A GB201806914D0 (en) 2018-04-27 2018-04-27 A computer-implemented method and system
GBGB1806907.0A GB201806907D0 (en) 2018-04-27 2018-04-27 A computer-implemented method and system
GB1806907.0 2018-04-27
GBGB1806909.6A GB201806909D0 (en) 2018-04-27 2018-04-27 A computer-implemented method and system
GB1806909.6 2018-04-27
GB1806930.2 2018-04-27
GBGB1806911.2A GB201806911D0 (en) 2018-04-27 2018-04-27 A computer-implemented method and system
GBGB1806930.2A GB201806930D0 (en) 2018-04-27 2018-04-27 Computer-implemented systems and methods
PCT/IB2019/053383 WO2019207504A1 (en) 2018-04-27 2019-04-24 Maintaining blocks of a blockchain in a partitioned blockchain network

Publications (1)

Publication Number Publication Date
KR20210003234A true KR20210003234A (ko) 2021-01-11

Family

ID=66397390

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020207031800A KR20210003132A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것
KR1020207033856A KR20210003212A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것
KR1020207033857A KR20210003213A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것
KR1020207034209A KR20210003234A (ko) 2018-04-27 2019-04-24 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
KR1020207033858A KR20210003214A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020207031800A KR20210003132A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것
KR1020207033856A KR20210003212A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것
KR1020207033857A KR20210003213A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207033858A KR20210003214A (ko) 2018-04-27 2019-04-24 블록체인 네트워크를 분할하는 것

Country Status (8)

Country Link
US (6) US11856100B2 (ko)
EP (5) EP3785206A1 (ko)
JP (9) JP7379371B2 (ko)
KR (5) KR20210003132A (ko)
CN (3) CN112041872A (ko)
SG (5) SG11202009189XA (ko)
TW (6) TWI836988B (ko)
WO (5) WO2019207502A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230004295A (ko) * 2021-06-30 2023-01-06 주식회사 아티프렌즈 스토리지 노드의 참여를 통한 데이터 분할 보관 방법
KR20230018876A (ko) 2021-07-30 2023-02-07 서강대학교산학협력단 샤드를 기반으로 한 데이터 분산 저장 방법 및 이를 이용한 블록체인 네트워크 시스템

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419225B2 (en) 2017-01-30 2019-09-17 Factom, Inc. Validating documents via blockchain
US10411897B2 (en) 2017-02-17 2019-09-10 Factom, Inc. Secret sharing via blockchains
US10817873B2 (en) 2017-03-22 2020-10-27 Factom, Inc. Auditing of electronic documents
US11170366B2 (en) 2018-05-18 2021-11-09 Inveniam Capital Partners, Inc. Private blockchain services
US11134120B2 (en) 2018-05-18 2021-09-28 Inveniam Capital Partners, Inc. Load balancing in blockchain environments
US10783164B2 (en) 2018-05-18 2020-09-22 Factom, Inc. Import and export in blockchain environments
WO2020000011A1 (en) * 2018-06-25 2020-01-02 Commonwealth Scientific And Industrial Research Organisation Blockchain system and method
US11989208B2 (en) 2018-08-06 2024-05-21 Inveniam Capital Partners, Inc. Transactional sharding of blockchain transactions
US11328290B2 (en) 2018-08-06 2022-05-10 Inveniam Capital Partners, Inc. Stable cryptocurrency coinage
US11620642B2 (en) 2018-08-06 2023-04-04 Inveniam Capital Partners, Inc. Digital contracts in blockchain environments
US20200074458A1 (en) * 2018-08-30 2020-03-05 International Business Machines Corporation Privacy preserving transaction system
US11301590B2 (en) * 2018-09-05 2022-04-12 International Business Machines Corporation Unfalsifiable audit logs for a blockchain
US20200092362A1 (en) * 2018-09-13 2020-03-19 International Business Machines Corporation A sparse peer with transient participation
CA3051762A1 (en) * 2018-12-13 2019-04-18 Alibaba Group Holding Limited Data isolation in a blockchain network
US20220200973A1 (en) * 2019-04-15 2022-06-23 Bear System, LLC Blockchain schema for secure data transmission
US11483143B2 (en) * 2019-04-15 2022-10-25 Smart Security Systems, Llc Enhanced monitoring and protection of enterprise data
GB201907347D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd In-script functions within a blockchain transaction
US11539527B2 (en) 2019-05-29 2022-12-27 International Business Machines Corporation Peer node recovery via approximate hash verification
US11516000B2 (en) * 2019-05-29 2022-11-29 International Business Machines Corporation Approximate hash verification of unused blockchain output
US11711202B2 (en) 2019-05-29 2023-07-25 International Business Machines Corporation Committing data to blockchain based on approximate hash verification
US11570002B2 (en) 2019-05-29 2023-01-31 International Business Machines Corporation Reduced-step blockchain verification of media file
US11429738B2 (en) 2019-05-29 2022-08-30 International Business Machines Corporation Blockchain endorsement with approximate hash verification
CN110958324B (zh) * 2019-12-12 2023-12-19 度小满科技(北京)有限公司 一种区块链网络的数据处理方法及装置
US11444749B2 (en) 2020-01-17 2022-09-13 Inveniam Capital Partners, Inc. Separating hashing from proof-of-work in blockchain environments
WO2021145606A1 (en) * 2020-01-17 2021-07-22 Samsung Electronics Co., Ltd. User apparatus and manager apparatus included in blockchain network and controlling method thereof
US20230074590A1 (en) * 2020-01-22 2023-03-09 The Flowchain Foundation Limited Storage Virtualization Architecture with Hybrid Blockchain and the Method Thereof
CN111428275B (zh) * 2020-03-13 2021-03-26 华东师范大学 一种面向联盟链的服务不停机分片增加方法
CN111488202B (zh) * 2020-04-07 2023-08-15 百度国际科技(深圳)有限公司 多链系统的事务处理方法、装置、设备、系统和介质
US20230104585A1 (en) 2020-05-20 2023-04-06 New H3C Technologies Co., Ltd. Method and Apparatus for Monitoring Software License Information, and Server and Storage Medium
WO2022006473A1 (en) * 2020-07-03 2022-01-06 Inveniam Capital Partners, Inc. Distribution of blockchain validation
US11853291B2 (en) 2020-07-06 2023-12-26 International Business Machines Corporation Privacy preserving architecture for permissioned blockchains
US11741083B2 (en) 2020-07-24 2023-08-29 International Business Machines Corporation Cross-shard private atomic commit
KR102337760B1 (ko) * 2020-08-27 2021-12-08 연세대학교 산학협력단 심층강화학습 기반 적응적 샤드 블록체인 네트워크 관리 장치 및 방법
CN112269423B (zh) * 2020-12-21 2021-03-19 支付宝(杭州)信息技术有限公司 一种锁定区块链系统中全局时钟的方法及区块链系统
CN112839086B (zh) * 2021-01-06 2022-02-08 中山大学 基于区块链分片技术的网络资源分配方法、装置、终端设备及存储介质
EP4057173B1 (en) * 2021-03-09 2023-10-11 SW7 Ventures (H.K.) Limited System and method of securely establishing control of a resource
US12008526B2 (en) 2021-03-26 2024-06-11 Inveniam Capital Partners, Inc. Computer system and method for programmatic collateralization services
GB202105020D0 (en) * 2021-04-08 2021-05-26 Nchain Licensing Ag Uniform resource identifier
CN113360951B (zh) * 2021-05-12 2022-08-16 电子科技大学 一种基于分区式区块链的电子证据保全方法
CN113067904B (zh) * 2021-06-02 2021-09-14 支付宝(杭州)信息技术有限公司 组建区块链子网的方法和区块链系统
US12007972B2 (en) 2021-06-19 2024-06-11 Inveniam Capital Partners, Inc. Systems and methods for processing blockchain transactions
US20220417030A1 (en) * 2021-06-26 2022-12-29 Redpine Signals, Inc. Device Authentication using Blockchain
WO2023177358A1 (en) * 2022-03-18 2023-09-21 National University Of Singapore Distributed verifiable ledger database
KR102596700B1 (ko) * 2022-06-03 2023-11-09 주식회사 블룸테크놀로지 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
KR102628759B1 (ko) * 2022-06-14 2024-01-23 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
CN117422549A (zh) * 2022-07-11 2024-01-19 汇丰软件开发(广东)有限公司 一种用于受监管加密货币场景中的基于utxo的分片方法
KR20240057605A (ko) * 2022-10-25 2024-05-03 주식회사 블룸테크놀로지 블록체인 네트워크에서 어카운트 생성 시스템 및 방법
KR20240063615A (ko) * 2022-11-03 2024-05-10 주식회사 블룸테크놀로지 블록체인 네트워크에서 노드 분배 시스템 및 방법
US11914616B1 (en) 2022-12-16 2024-02-27 Alchemy Insights, Inc. Systems and methods for creating a consistent blockchain including block commitment determinations
US11750711B1 (en) 2022-12-22 2023-09-05 Alchemy Insights, Inc. Systems and methods for adaptively rate limiting client service requests at a blockchain service provider platform
US11769143B1 (en) 2022-12-22 2023-09-26 Alchemy Insights, Inc. System and method for high performance providing fresh NFT metadata
US11728976B1 (en) 2022-12-22 2023-08-15 Alchemy Insights, Inc. Systems and methods for efficiently serving blockchain requests using an optimized cache
US11816021B1 (en) 2022-12-22 2023-11-14 Alchemy Insights, Inc. System and method for intelligent testing of blockchain applications using a shadow system
US11811955B1 (en) * 2022-12-23 2023-11-07 Alchemy Insights, Inc. Systems and methods for improving reliability in blockchain networks using sharding

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758257A (en) 1994-11-29 1998-05-26 Herz; Frederick System and method for scheduling broadcast of and access to video programs and other data using customer profiles
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US7774010B2 (en) * 2005-07-06 2010-08-10 Nokia Corporation Peer-to-peer group management framework and methodology
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US7702614B1 (en) 2007-03-30 2010-04-20 Google Inc. Index updating using segment swapping
JP2009000708A (ja) 2007-06-20 2009-01-08 Nikon Corp 光照射装置と、これを具備するレーザ加工装置
US20110029319A1 (en) * 2009-07-29 2011-02-03 Google Inc. Impression forecasting and reservation analysis
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
US10812274B2 (en) * 2015-05-07 2020-10-20 Blockstream Corporation Transferring ledger assets between blockchains via pegged sidechains
US20160342989A1 (en) * 2015-05-21 2016-11-24 Mastercard International Incorporated Method and system for processing blockchain-based transactions on existing payment networks
JP6636058B2 (ja) * 2015-07-02 2020-01-29 ナスダック, インコーポレイテッドNasdaq, Inc. 分散トランザクションデータベースにおける出所保証のシステムおよび方法
US20170048235A1 (en) 2015-07-14 2017-02-16 Fmr Llc Crypto Captcha and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US20170091726A1 (en) * 2015-09-07 2017-03-30 NXT-ID, Inc. Low bandwidth crypto currency transaction execution and synchronization method and system
US20170116693A1 (en) 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger
US20170132626A1 (en) * 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for processing of a blockchain transaction in a transaction processing network
WO2017139688A1 (en) * 2016-02-12 2017-08-17 D+H Usa Corporation Peer-to-peer financial transactions using a private distributed ledger
WO2017145019A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
BR112018016822A2 (pt) * 2016-02-23 2018-12-26 Nchain Holdings Ltd método implementado por computador para realizar uma troca de entidades entre um primeiro usuário e um segundo usuário, processador e meio legível por computador
WO2017147696A1 (en) 2016-02-29 2017-09-08 Troy Jacob Ronda Systems and methods for distributed identity verification
US10404469B2 (en) 2016-04-08 2019-09-03 Chicago Mercantile Exchange Inc. Bilateral assertion model and ledger implementation thereof
US10346428B2 (en) 2016-04-08 2019-07-09 Chicago Mercantile Exchange Inc. Bilateral assertion model and ledger implementation thereof
GB201607477D0 (en) * 2016-04-29 2016-06-15 Eitc Holdings Ltd A method and system for controlling the performance of a contract using a distributed hash table and a peer to peer distributed ledger
EP3455802A1 (en) * 2016-05-13 2019-03-20 De La Rue International Limited Methods and systems for processing assets
US10417188B2 (en) * 2016-05-27 2019-09-17 Mastercard International Incorporated Method and system for transferring trust across block chain segments
US20170357966A1 (en) * 2016-06-09 2017-12-14 Mastercard International Incorporated Method and system for use of a proprietary private blockchain
US10097344B2 (en) 2016-07-15 2018-10-09 Mastercard International Incorporated Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains
CN106251216B (zh) * 2016-07-18 2020-12-25 恒宝股份有限公司 一种用于缓解节点存储压力的方法和系统
CN107666388B (zh) * 2016-07-28 2019-11-01 郑珂威 基于完全同态加密方法的区块链信息加密方法
US10417217B2 (en) 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN106302702B (zh) * 2016-08-10 2020-03-20 华为技术有限公司 数据的分片存储方法、装置及系统
CN106372941B (zh) * 2016-08-31 2019-07-16 江苏通付盾科技有限公司 基于区块链的ca认证管理方法、装置及系统
JP6877552B2 (ja) 2016-09-14 2021-05-26 コンジュール ゲゼルシャフト ミット ベシュレンクテル ハフツングConjoule GmbH 電力生産者のグループを備えるシステム
JP6825296B2 (ja) 2016-10-11 2021-02-03 富士通株式会社 エッジサーバ,及びその暗号化通信制御方法
CN107045518A (zh) * 2016-10-18 2017-08-15 北京天德科技有限公司 一种区块链的扩展设计方法
JP6274680B1 (ja) * 2016-10-18 2018-02-07 株式会社大和総研ビジネス・イノベーション 取引記録システムおよびプログラム
US11004130B2 (en) * 2016-10-26 2021-05-11 International Business Machines Corporation Computer implemented method, an apparatus and a non transitory computer readable storage medium for verifying reviews on a blockchain
US10491378B2 (en) 2016-11-16 2019-11-26 StreamSpace, LLC Decentralized nodal network for providing security of files in distributed filesystems
US10540652B2 (en) 2016-11-18 2020-01-21 Intel Corporation Technology for secure partitioning and updating of a distributed digital ledger
CN106797389A (zh) * 2016-11-18 2017-05-31 深圳前海达闼云端智能科技有限公司 区块链网络、物品交易方法、装置及节点设备
CN106559211B (zh) * 2016-11-22 2019-12-13 中国电子科技集团公司第三十研究所 一种区块链中隐私保护智能合约方法
CN106603198A (zh) * 2016-12-02 2017-04-26 深圳大学 具有网络编码的区块链分布式存储方法及系统
US10396997B2 (en) 2016-12-14 2019-08-27 International Business Machines Corporation Container-based operating system and method
CN106897351B (zh) * 2016-12-29 2020-11-10 北京瑞卓喜投科技发展有限公司 有向无环图型区块链的生成方法及系统
US10447480B2 (en) 2016-12-30 2019-10-15 Guardtime Sa Event verification receipt system and methods
CN107040582B (zh) 2017-02-17 2020-08-14 创新先进技术有限公司 一种数据处理方法及装置
CN107018125B (zh) * 2017-02-17 2019-08-09 阿里巴巴集团控股有限公司 一种区块链系统、数据存储方法及装置
US11036707B2 (en) 2017-03-08 2021-06-15 Mcafee, Llc Aggregate, index-based, real-time verification of node contents
CN106936589B (zh) * 2017-04-21 2020-02-07 杭州秘猿科技有限公司 一种无中心的许可链平行分片方法及交易方法
CN107239940A (zh) * 2017-05-11 2017-10-10 北京博晨技术有限公司 基于区块链系统的网络交易方法及装置
US10397328B2 (en) 2017-05-17 2019-08-27 Nec Corporation Method and system for providing a robust blockchain with an integrated proof of storage
CN110832825B (zh) * 2017-05-22 2022-10-21 维萨国际服务协会 通过防篡改数据提高验证速度的网络的方法和节点
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
CN107273760A (zh) * 2017-06-09 2017-10-20 济南浪潮高新科技投资发展有限公司 一种基于区块链多ca应用认证方法
CN107392608B (zh) * 2017-07-11 2020-07-07 北京博晨技术有限公司 基于区块链系统的数字资产交易方法及区块链系统
KR102348418B1 (ko) 2017-07-11 2022-01-07 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
CN107528886B (zh) * 2017-07-25 2020-07-31 中国科学院计算技术研究所 区块链全网拆分方法与系统
US10552556B2 (en) * 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
CN107563817A (zh) * 2017-09-11 2018-01-09 浙江华信区块链科技服务有限公司 一种基于区块链对用户注意力进行激励的广告传播方法及系统
CN107742210A (zh) * 2017-10-13 2018-02-27 布比(北京)网络技术有限公司 一种不同区块链间的跨链转账系统和方法
CN107862216B (zh) * 2017-10-13 2021-04-06 布比(北京)网络技术有限公司 用于匿名跨链交易的隐私保护方法、装置和存储介质
CN107909369A (zh) * 2017-10-13 2018-04-13 布比(北京)网络技术有限公司 基于跨链交易的共识方法、装置和存储介质
CN107807984A (zh) * 2017-10-31 2018-03-16 上海分布信息科技有限公司 一种分区的区块链网络及其实现分区共识的方法
CN107766540A (zh) * 2017-10-31 2018-03-06 上海分布信息科技有限公司 一种分区的区块链网络及其实现分区存储的方法
US10567168B2 (en) 2017-11-16 2020-02-18 International Business Machines Corporation Blockchain transaction privacy enhancement through broadcast encryption
US10997125B2 (en) 2017-11-29 2021-05-04 Technion Research & Development Foundation Limited Proof of lottery (PoL) blockchain
KR20190067581A (ko) * 2017-12-07 2019-06-17 한국전자통신연구원 블록체인 트랜잭션 분산 처리 장치 및 방법
US10250708B1 (en) 2017-12-26 2019-04-02 Akamai Technologies, Inc. High performance distributed system of record
CN108399572A (zh) 2018-03-22 2018-08-14 深圳市网心科技有限公司 区块链交易处理方法、装置及存储介质
CN108596613A (zh) 2018-03-22 2018-09-28 深圳市网心科技有限公司 区块链交易处理方法、装置及存储介质
CN108900321A (zh) 2018-06-06 2018-11-27 广州链块科技有限公司 一种区块链分区间进行实时原子交易的方法
CN108769264B (zh) 2018-07-09 2021-06-04 中国联合网络通信集团有限公司 一种区块链分域方法
CN108920723A (zh) 2018-08-01 2018-11-30 江苏恒宝智能系统技术有限公司 一种节点分层分区管理方法
US10826705B2 (en) 2018-12-13 2020-11-03 International Business Machines Corporation Compact state database system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230004295A (ko) * 2021-06-30 2023-01-06 주식회사 아티프렌즈 스토리지 노드의 참여를 통한 데이터 분할 보관 방법
KR20230018876A (ko) 2021-07-30 2023-02-07 서강대학교산학협력단 샤드를 기반으로 한 데이터 분산 저장 방법 및 이를 이용한 블록체인 네트워크 시스템

Also Published As

Publication number Publication date
KR20210003212A (ko) 2021-01-11
EP3785207A1 (en) 2021-03-03
JP2021522704A (ja) 2021-08-30
TW201946017A (zh) 2019-12-01
US20210233074A1 (en) 2021-07-29
KR20210003132A (ko) 2021-01-11
SG11202008896QA (en) 2020-11-27
US11856100B2 (en) 2023-12-26
US20210240733A1 (en) 2021-08-05
US20210233065A1 (en) 2021-07-29
TW201945974A (zh) 2019-12-01
US11743045B2 (en) 2023-08-29
SG11202008987RA (en) 2020-11-27
CN112055864A (zh) 2020-12-08
WO2019207502A1 (en) 2019-10-31
TWI809096B (zh) 2023-07-21
JP2021522706A (ja) 2021-08-30
US20240048378A1 (en) 2024-02-08
JP2023168539A (ja) 2023-11-24
JP7379371B2 (ja) 2023-11-14
CN112041871A (zh) 2020-12-04
SG11202008894XA (en) 2020-11-27
US20210243007A1 (en) 2021-08-05
WO2019207504A1 (en) 2019-10-31
JP2021522710A (ja) 2021-08-30
JP2024032953A (ja) 2024-03-12
TW201946016A (zh) 2019-12-01
TWI820124B (zh) 2023-11-01
EP3785206A1 (en) 2021-03-03
US20210234665A1 (en) 2021-07-29
CN112041870A (zh) 2020-12-04
CN112041872A (zh) 2020-12-04
SG11202008861TA (en) 2020-11-27
KR20210003213A (ko) 2021-01-11
WO2019207501A1 (en) 2019-10-31
CN112041873B (zh) 2024-04-19
JP2021522709A (ja) 2021-08-30
JP2024032950A (ja) 2024-03-12
WO2019207503A1 (en) 2019-10-31
JP2024032951A (ja) 2024-03-12
SG11202009189XA (en) 2020-11-27
WO2019207500A1 (en) 2019-10-31
JP7362654B2 (ja) 2023-10-17
TWI836988B (zh) 2024-03-21
CN112041873A (zh) 2020-12-04
US11973869B2 (en) 2024-04-30
TWI816781B (zh) 2023-10-01
EP3785205A1 (en) 2021-03-03
US20240154807A1 (en) 2024-05-09
EP3785208A1 (en) 2021-03-03
KR20210003214A (ko) 2021-01-11
TW201946015A (zh) 2019-12-01
TW202338646A (zh) 2023-10-01
TW201946018A (zh) 2019-12-01
EP3785204A1 (en) 2021-03-03
JP2021522702A (ja) 2021-08-30

Similar Documents

Publication Publication Date Title
US11973869B2 (en) Maintaining blocks of a blockchain in a partitioned blockchain network
AU2019204722B2 (en) System and method for parallel-processing blockchain transactions
US20230419317A1 (en) Secure provision of undetermined data from an undetermined source into the locking script of a blockchain transaction
CN114944932B (zh) 将区块添加到被许可的区块链的方法和系统
CN111801910A (zh) 基于证明验证的用于认证链外数据的系统和方法
US20220217004A1 (en) Systems and methods for non-parallelised mining on a proof-of-work blockchain network
CN113508570B (zh) 在区块链中节点之间共享及验证区块及电子文档的方法
JP2022551874A (ja) セキュアな共生(Symbiosis)マイニングのための方法および装置
CN112970227A (zh) 包括公钥组合验证的计算机实现的系统和方法
KUBEŠA Analysis of EC keys in the wild