KR20210149164A - 짧은 트랜잭션 식별자 충돌 검출 및 조정 - Google Patents

짧은 트랜잭션 식별자 충돌 검출 및 조정 Download PDF

Info

Publication number
KR20210149164A
KR20210149164A KR1020217036486A KR20217036486A KR20210149164A KR 20210149164 A KR20210149164 A KR 20210149164A KR 1020217036486 A KR1020217036486 A KR 1020217036486A KR 20217036486 A KR20217036486 A KR 20217036486A KR 20210149164 A KR20210149164 A KR 20210149164A
Authority
KR
South Korea
Prior art keywords
transaction identifier
block
merkle tree
short
node
Prior art date
Application number
KR1020217036486A
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
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20210149164A publication Critical patent/KR20210149164A/ko

Links

Images

Classifications

    • 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
    • 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/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/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • 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/3825Use of electronic signatures
    • 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/3247Cryptographic 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 digital signatures
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Finance (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 방법 및 디바이스. 방법은 전송 노드로부터 짧은 트랜잭션 식별자의 집합을 수신하는 것을 포함할 수 있다. 수신 노드는 각 짧은 트랜잭션 식별자에 대하여 멤풀에서 대응하는 전체 트랜잭션 식별자를 찾는다. 적어도 하나의 짧은 트랜잭션 식별자에 대하여, 수신자는 충돌을 식별한다. 그런 다음 적어도 하나의 짧은 트랜잭션 식별자에 관한 충돌의 해결을 요청하는 메시지를 전송 노드로 전송하고, 전송 노드로부터 적어도 하나의 짧은 트랜잭션 식별자에 대한 유효한 대응하는 전체 트랜잭션 식별자의 식별을 가능하게 하는 충돌 해결 데이터를 수신한다. 수신자는 해결 요청과 함께 중간 머클 트리 해시를 전송할 수 있으며, 충돌 해결 데이터는 잘못된 해시를 식별하는 정보를 포함할 수 있다.

Description

짧은 트랜잭션 식별자 충돌 검출 및 조정
본 개시는 블록체인 네트워크에 관한 것이며, 특히, 채굴자 노드 사이에서 블록의 전파에 관한 것이다.
작업 증명(proof-of-work) 블록체인 시스템에서, 채굴자가 유효한 블록을 찾으면 다른 모든 채굴자에게 성공을 신속하게 통신하고자 한다. 이는 블록체인 네트워크를 통해 모든 채굴 노드에 블록에 대한 정보를 전파하는 것을 수반한다. 경우에 따라, 이는 전체 블록 데이터를 전송하는 것을 포함할 수 있다. 경우에 따라, 이는 블록 헤더 및 트랜잭션 목록 정보를 전송하는 것을 포함할 수 있다. 수신하는 채굴자는 헤더를 해싱하고 성공한 채굴자가 제공한 해시 값과 일치하는지 확인하여 새로운 블록의 유효성을 검증한다.
블록의 크기와 트랜잭션 수가 증가함에 따라, 블록 전파의 지연은 임시 포크(temporary fork) 및 고아 블록(orphan block)의 문제를 악화시킬 수 있다. 이러한 상황은 채굴자 및 시스템 전체에 비용이 많이 들게 한다.
블록 데이터를 전파할 때 블록 데이터에 의해 소비되는 대역폭을 줄이고 전파 속도를 개선하기 위한 방법 및 시스템을 고안하는 것이 유리할 수 있지만, 이러한 방법과 시스템은 충돌 가능성을 유발할 수 있어 효율적인 해결이 필요하다.
이제, 예로서, 본 출원의 예시적인 실시예를 나타내는 첨부 도면을 참조할 것이다.
도 1은 블록체인 네트워크에 대한 예시적인 블록 구조를 도시한다.
도 2는 블록 전파의 예시적인 방법의 흐름도를 도시한다.
도 3a 내지 도 3i는 본 출원에 따른 블록 전파의 예시적인 구현에서 메시지 및 동작의 시퀀스를 예시적으로 도시한다.
도 4는 짧은 트랜잭션 식별자 충돌을 해결하는 하나의 예시적인 방법을 흐름도 형태로 도시한다.
도 5는 짧은 트랜잭션 식별자 충돌을 해결하는 다른 예시적인 방법을 흐름도 형태로 도시한다.
도 6은 짧은 트랜잭션 식별자 충돌을 해결하는 추가의 예시적인 방법을 흐름도 형태로 도시한다.
도 7은 머클 트리 구조의 단순화된 예를 도시한다.
도 8은 잘못된 TXID를 갖는 머클 트리 구조의 단순화된 예를 도시한다.
도 9는 블록체인 노드의 단순화된 예를 블록도 형태로 나타낸다.
유사한 참조 번호는 도면에서 유사한 요소 및 특징을 나타내기 위해 사용된다.
일 양상에서, 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 컴퓨터 구현 방법이 제공될 수 있다. 방법은 전송 노드로부터의 짧은 트랜잭션 식별자 집합 및 블록 머클(Merkle) 루트를 포함하는 블록 데이터를 전송 노드로부터 수신하는 것; 각 짧은 트랜잭션 식별자에 대하여, 멤풀(mempool)에서 대응하는 전체 트랜잭션 식별자를 찾는 것; 전체 트랜잭션 식별자에 기초하여 머클 트리를 계산하는 것-머클 트리는 머클 루트를 가짐; 계산된 머클 루트가 블록 머클 루트와 일치하지 않는 것으로 결정하는 것; 전송 노드로, 머클 트리의 중간 계층으로부터의 머클 트리 해시를 전송하는 것; 전송 노드로부터, 잘못된 머클 트리 해시를 식별하는 해결 데이터를 수신하는 것; 및 충돌이 해결될 때까지 머클 트리 해시 전송 및 해결 데이터 수신을 반복하는 것을 포함할 수 있다.
일부 구현에서, 각 짧은 트랜잭션 식별자는 그 대응하는 전체 트랜잭션 식별자를 절단한 것일 수 있다.
일부 구현에서, 해결 데이터는 중간 계층에 대한 머클 트리 해시 각각에 대하여 해당 머클 트리 해시의 유효 여부를 나타내는 플래그를 포함할 수 있다.
일부 구현에서, 해결 데이터는 머클 트리의 하부 계층 부분에 대한 전체 트랜잭션 식별자를 포함할 수 있다.
일부 구현에서, 중간 계층은 식별된 일치하지 않는 머클 해시와 머클 트리의 하부 계층 사이의 머클 트리 계층일 수 있다. 일부 경우에, 방법은 중간 계층을 선택하는 것을 포함할 수 있다.
일부 구현에서, 머클 트리 해시는 부분적 머클 트리 해시를 포함할 수 있다.
일부 구현에서, 블록 데이터의 수신은, 전송 노드로부터, 머클 트리의 선택된 계층으로부터 머클 트리 해시의 선제적(pre-emptive) 집합을 수신하는 것을 포함할 수 있다.
다른 양상에서, 본 출원은 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 컴퓨터 구현 방법을 제공한다. 방법은 전송 노드로부터 짧은 트랜잭션 식별자 집합을 수신하는 것; 각 짧은 트랜잭션 식별자에 대하여, 멤풀(mempool)에서 대응하는 전체 트랜잭션 식별자를 찾는 것-찾는 것은, 적어도 하나의 짧은 트랜잭션 식별자에 대하여 충돌을 식별하는 것을 포함함; 적어도 하나의 짧은 트랜잭션 식별자에 관한 충돌의 해결을 요청하는 메시지를 전송 노드로 전송하는 것; 및 적어도 하나의 짧은 트랜잭션 식별자에 대한 유효한 대응하는 전체 트랜잭션 식별자의 식별을 가능하게 하는 충돌 해결 데이터를 전송 노드로부터 수신하는 것을 포함할 수 있다.
일부 구현에서, 전송은 적어도 하나의 짧은 트랜잭션 식별자를 포함하는 해결 요청 메시지를 전송하는 것을 포함할 수 있다.
일부 구현에서, 충돌 해결 데이터는 유효한 대응하는 전체 트랜잭션 식별자를 포함할 수 있다.
다른 양상에서, 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 컴퓨팅 디바이스가 제공될 수 있다. 컴퓨팅 디바이스는 메모리, 하나 이상의 프로세서, 및 실행될 때, 프로세서가 본원에 설명된 하나 이상의 방법을 수행하도록 하는, 컴퓨터 실행 가능 명령을 포함할 수 있다.
또 다른 양상에서, 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 프로세서 실행 가능 명령을 저장하는 컴퓨터 판독 가능 매체가 제공될 수 있으며, 프로세서 실행 가능 명령은, 하나 이상의 프로세서에 의해 실행될 때, 프로세서가 본원에 설명된 적어도 하나의 방법을 수행하도록 하는 명령을 포함한다.
본 개시의 다른 예시적인 실시예는 도면과 함께 다음의 상세한 설명의 검토로부터 당업자에게 명백할 것이다.
본 출원에서, "및/또는"이라는 용어는 나열된 요소 중 임의의 하나를 단독으로, 임의의 하위 조합 또는 모든 요소를 포함하는 나열된 요소의 모든 가능한 조합 및 하위 조합을 포함하도록 의도되며, 추가 요소를 반드시 배제하지 않는다.
본 출원에서 "... 또는 ... 중 적어도 하나"라는 문구는 나열된 요소 중 임의의 하나를 단독으로, 임의의 하위 조합 또는 모든 요소를 포함하는 나열된 요소의 임의의 하나 이상을 포함하도록 의도되며, 추가 요소를 반드시 배제하지 않고, 모든 요소를 반드시 요구하지 않는다.
본 출원은 임의의 세트의 데이터 또는 "메시지"에 적용될 때, 고유한 고정 길이의 영숫자 문자열을 결정성으로 생성하는 다수의 암호화 해시 함수 중 임의의 하나를 포함하도록 의도되는 해싱 또는 해시 함수를 참조할 것이다. 해시 함수의 결과는 해시 값, 지문, 해시 결과 또는 이에 상응하는 것으로 지칭될 수 있다. 예로는 SHA-2, SHA-3 및 BLAKE2를 포함하지만 이에 제한되지 않는다. 블록 또는 후보 블록을 해싱하는 채굴자에 대한 아래의 모든 참조는 암호화 해시 함수를 후보 블록의 헤더 부분에 적용하는 것을 의미하는 것으로 이해될 것이다.
이 문서에서 용어 '블록체인'은 모든 형태의 전자, 컴퓨터 기반, 분산 원장을 포함하는 것으로 이해된다. 이는 합의 기반(consensus-based) 블록체인 및 트랜잭션 체인 기술, 허가 및 비허가 원장, 공유 원장 및 그 변형을 포함한다. 다른 블록체인 구현이 제안되고 개발되었지만, 블록체인 기술의 가장 널리 알려진 응용은 비트코인 원장이다. 비트코인 SV 프로토콜에 의해 예시된 바와 같은 비트코인이 편의 및 예시의 목적으로 본원에서 언급될 수 있지만, 발명은 비트코인 블록체인과 함께 사용하는 것으로 제한되지 않으며, 대안적인 블록체인 구현 및 프로토콜이 본 개시의 범위 내에 속한다는 점에 유의하여야 한다.
블록체인은 트랜잭션으로 구성된 블록으로 구성된 컴퓨터 기반 탈중앙화된 분산 시스템으로 구현되는 P2P 전자 원장이다. 각 트랜잭션은 블록체인 시스템 참여자 사이의 디지털 자산 제어 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력과 적어도 하나의 출력을 포함한다. 각 블록에는 이전 블록의 해시가 포함되어 블록이 함께 연결되어 처음부터 블록체인에 기록된 모든 트랜잭션에 대한 영구적이고 변경 불가능한 기록을 생성한다. 트랜잭션에는 그 입력 및 출력에 내장된 스크립트로 알려진 작은 프로그램이 포함되며, 이는 트랜잭션의 출력에 접근할 수 있는 방법과 대상을 지정한다. 비트코인 플랫폼에서, 이러한 스크립트는 스택 기반 스크립트 언어를 사용하여 작성된다.
블록체인은 노드 네트워크를 통해 구현된다. 각 노드는 네트워크 연결이 가능하며 적용 가능한 블록체인 프로토콜을 수행하는 소프트웨어를 실행하는 컴퓨팅 디바이스이다. 노드는 트랜잭션을 유효성 검증하고 네트워크의 다른 노드로 전파한다. "채굴 노드" 또는 "채굴자"라고 하는 특별한 네트워크 노드는 확인되지 않은 트랜잭션 집합, 즉 미결(pending) 트랜잭션을 블록으로 수집하고 블록을 "채굴"하고자 시도한다. 이 예에서, 채굴은 네트워크의 다른 채굴자가 해당 블록에 대한 작업 증명(proof-of-work; POW)을 해결하는 데 성공하기 전에 작업 증명을 해결하는 것을 의미한다. 비트코인의 예에서, POW는 결과가 난이도 매개변수로 설정된 임계값 아래로 떨어질 때까지 논스(nonce)가 포함된 블록 헤더를 해싱하는 것을 포함한다. 논스는 반복적으로 증가하고 결과가 임계값 아래로 떨어질 때까지 또는 다른 채굴자가 성공했다는 통지를 채굴자가 받을 때까지 해싱을 반복한다. 채굴 과정의 변형은 당업자에게 친숙할 것이다.
일반적인 블록은 블록 헤더와 트랜잭션의 두 가지 데이터 구조를 포함한다. 도 1은 비트코인 프로토콜의 예시적인 블록 구조(100)를 도식적으로 나타낸다. 블록 구조(100)는 블록 헤더(102) 및 페이로드(104)를 포함한다. 이 예에서 블록 헤더(102)는 버전 번호(106), 이전 블록 해시 값(108), 머클 루트(Merkle root)(110), 타임스탬프(112), 목표 난이도 매개변수(114) 및 논스(116)에 대한 필드를 포함한다. 이전 블록 해시 값(108)은 이 블록을 체인의 이전 블록에 연결하여, 암호화 해시를 통해 연속 블록을 함께 연결하는 "블록체인" 구조를 생성한다. 머클 루트(110)는 블록에 포함된 모든 트랜잭션에 기초한 머클 트리 구조를 지칭한다. 논스(116)는 채굴 시 상이한 해시 결과를 생성하기 위해 블록 헤더(102)의 내용을 변경하기 위하여 채굴 노드가 증가 또는 감소를 반복할 수 있는 임의의 값이다.
페이로드(104)는 트랜잭션 수 값(118) 및 트랜잭션 목록(120)을 포함한다. 트랜잭션 목록(120)은 일부 구현에서 트랜잭션 ID 번호의 목록일 수 있다.
채굴 노드가 임계값 미만의 해시 결과를 생성하는 블록 헤더를 발견하는 데 성공하면, 성공적인 해시 결과 값을 포함하는 갱신된 인벤토리 메시지를 사용하여 다른 노드에 통지를 진행한다. 그런 다음 다른 노드는 새로운 블록의 사본을 요청하고 그 유효성을 독립적으로 검증한다.
블록 전파
블록체인 생태계는 트랜잭션량 및 결과적으로 블록 크기의 큰 증가를 통해 향상된 사용성을 제공하기 위해 성숙하고 있다. 블록이 커지면, 일부 경우 128MB를 초과하여, 성공적으로 채굴된 새로운 블록을 네트워크 전체의 다른 노드로 전파하는 데 시간이 더 걸린다. 전파의 지연에는 대가가 따른다. 첫째, 성공적으로 채굴된 블록이 생성되었다는 사실을 모르는 채굴자는 새로운 블록이 유효한 것으로 판명된다면 낭비되는 노력으로 자신의 후보 블록을 계속 채굴하고자 시도할 것이다. 둘째, 전파 및 유효성 검증의 지연으로 인해 (임시) 포크 및 고아 블록의 가능성이 증가할 수 있다.
많은 블록체인 프로토콜에서, 채굴자는 블록의 전체 사본을 전송하지 않고, 대신 인벤토리 메시지로 해시 결과를 전송하는 것을 이해할 것이다. 수신하는 채굴 노드는 이 주장된 새로운 블록을 보지 못했다고 결정하고 성공한 채굴자에게 GETBLOCK 또는 GETDATA 메시지를 전송한다. 블록의 전체 사본을 전송하는 대신, 성공한 채굴자는 블록 헤더, 페이로드의 트랜잭션 수 필드, 블록에 포함된 트랜잭션의 정렬된 목록을 전송한다. 정렬된 목록은 트랜잭션에 대한 전체 트랜잭션 ID 번호(TXID) 집합을 포함할 수 있다. 일부 실시예에서, TXID는 트랜잭션의 고정 길이 해시일 수 있다. TXID는 예를 들어 SHA-256을 사용하여 트랜잭션을 해싱하여 획득한 256비트(32바이트) 숫자일 수 있다. 수신 노드는 TXID로 멤풀(mempool)에서 식별된 트랜잭션을 검색하여 전체 블록을 재조립할 수 있다.
그럼에도 불구하고, 현대의 블록 크기가 128MB로 증가하고 전송될 데이터의 크기를 넘어서면 트랜잭션 수가 많은 경우 여전히 중요할 수 있다. 예를 들어, 50만 트랜잭션을 포함하는 블록은 16MB인 TXID의 정렬된 목록을 갖는다.
따라서, 일 양상에서, 본 출원은 채굴 노드가 후보 블록을 해싱하면서 각각의 후보 블록에 대한 정보를 다른 채굴자에게 제공하는 블록체인 네트워크를 위한 방법 및 시스템을 설명한다. 이러한 방식으로, 각 채굴자는 비트코인의 예에서는 약 10분인, 성공적인 블록 발견 사이의 시간 지연을 이용하여, 후보 블록의 구조 및 내용에 대한 세부사항을 다른 채굴자에게 제공한다. 이 정보를 미리 제공함으로써, 성공적인 블록이 발견되었을 때 성공한 채굴자는 다른 모든 노드가 완전한 새로운 블록을 조립하고 유효성 검증할 수 있도록 보장하기 위해 블록 헤더 및, 경우에 따라, 코인베이스 트랜잭션만을 보내면 된다. 이 데이터는 수백 바이트 정도로 작을 수 있다. 이는 성공적인 새로운 블록이 전체 네트워크를 통해 전파되는 속도를 증가시킨다.
확인되지 않은 트랜잭션은 유효한 블록에 포함되어 확인되기 전에 노드 네트워크를 통해 전파되고 유효성 검증됨을 이해할 것이다. 이러한 확인되지 않은 상태에서, 확인되지 않은 트랜잭션은 메모리에 보관된다. 이 메모리를 "멤풀"이라고 부를 수 있다. 각 채굴자는, 일부 구현에서, 후보 블록을 조립하기 위한 트랜잭션 집합을 선택할 수 있는 자체 멤풀 사본을 유지할 수 있다. 일부 대안적인 아키텍처에서, 멤풀은 여러 노드에 걸쳐 분산된 멤풀로 구현될 수 있다. 일부 아키텍처에서는, 멤풀을 관리하고 후보 블록에 포함할 트랜잭션을 채굴 노드에 제공하기 위하여 블록체인 네트워크에서 특별한 노드를 사용할 수 있다. 본 출원은 블록체인 네트워크 아키텍처에서 이러한 변형과 함께 설명된 방법 및 디바이스의 사용을 고려한다. 설명의 단순성을 위해, 본원에서는 각 채굴 노드가 확인되지 않은 트랜잭션의 자체 멤풀을 유지한다고 가정한다.
채굴 노드는 후보 블록을 구축하기 위한 새로운 트랜잭션의 소스로 멤풀을 사용한다. 각 블록은 정렬된 트랜잭션 목록을 포함하므로 채굴 노드는 다른 채굴자로부터의 새로운 블록을 유효성 검증할 때 추가로 멤풀을 사용할 수 있다. 정렬된 목록은 TXID와 같은 고유한 트랜잭션 식별자로 트랜잭션을 식별할 수 있다. 따라서, 수신하는 채굴 노드는 정렬된 목록에서 트랜잭션을 검색하고 블록 수준 기준에 대해 블록을 유효성 검증하고 트랜잭션 수준 기준에 대해 트랜잭션을 유효성 검증한다. 이러한 방식으로 채굴자는 이중 지불(double-spend) 및 기타 공격으로부터 보호한다.
본 출원의 양상을 예시하기 위해, 블록체인 채굴의 한 예시적인 방법(200)을 흐름도 형태로 도시하는 도 2를 이제 참조한다. 방법(200)은 채굴 노드에 의해 구현된다. 채굴 노드는 하나 이상의 처리 유닛을 포함할 수 있는 컴퓨팅 디바이스에서 구현될 수 있다. 당업자라면 이해할 수 있는 바와 같이, 처리 유닛은 블록체인 채굴과 연관된 계산 작업을 상당한 속도와 효율성으로 수행하도록 설계된 전용 하드웨어를 갖춘 특수 처리 유닛을 포함할 수 있다. 그러나, 이는 또한 또는 대안적으로 범용 컴퓨팅 디바이스를 포함할 수 있다. 컴퓨팅 디바이스는, 실행될 때, 하나 이상의 처리 유닛이 설명된 동작을 수행하게 하는 프로세서 판독 가능 명령을 포함하는 프로세서 실행 가능 소프트웨어를 포함한다. 컴퓨팅 디바이스는 네트워크 연결을 획득하고 적용 가능한 네트워크 프로토콜에 따라 메시지를 전송 및 수신하기 위한 연관된 하드웨어 및 소프트웨어와의 네트워크 연결 및 메모리를 포함한다.
방법(200)은 동작 202에서 후보 블록을 구축하기 위해 미확인 트랜잭션의 멤풀로부터 트랜잭션 집합을 선택하는 것을 포함한다. 선택은 트랜잭션의 연령(age), 트랜잭션을 채굴하기 위해 지불할 수수료, 또는 임의의 다른 요인에 기초할 수 있다. 트랜잭션은 트랜잭션의 정렬된 목록을 형성한다. 채굴 노드는 트랜잭션의 정렬된 목록에 기초하여 머클 루트를 추가로 결정하고 헤더의 논스에 대한 초기 값 설정을 포함하여 블록 헤더를 형성한다.
동작 204에서, 채굴 노드는 난이도 설정의 조건을 만족하는 POW에 대한 검색의 일부로서 블록 헤더의 반복적인 해싱 및 논스의 증가를 시작한다. 후보 블록과 관련하여 POW 검색에 참여하는 동안, 채굴 노드는 동작 206에 나타난 바와 같이, 정렬된 트랜잭션 목록에 대한 정보를 다른 채굴 노드로 전송한다. 동작 204가 진행되는 동안, 채굴 노드는 또한 다른 채굴 노드로부터, 동작 208에 나타난 바와 같이, 해당 채굴 노드에 의해 작업되고 있는 후보 블록의 각각의 정렬된 트랜잭션 목록에 대한 정보를 포함하는 메시지를 수신한다. 동작 204, 206 및 208이 순서대로 나타나 있지만, 이들은 일반적으로 병렬로 발생함을 이해할 것이다. 다른 채굴자로부터의 각각의 정렬된 트랜잭션 목록에 대한 수신된 정보는 채굴 노드에 의해 로컬로 저장된다. 채굴 노드는 정보를 테이블 또는 기타 데이터 구조에 저장할 수 있다.
동작 210에 나타난 바와 같이, 채굴 노드가 POW를 성공적으로 발견할 때까지, 또는 동작 212에 나타낸 바와 같이, POW를 발견하였다는 통지를 다른 채굴 노드로부터 수신할 때까지 POW에 대한 검색이 계속된다. 채굴 노드가 POW를 발견하면, 동작 214에서 일부 헤더 정보를 다른 채굴 노드에 전송하여 블록 세부사항을 전파한다. 특히, 페이로드를 전송할 필요가 없다. 그러나, 코인베이스 트랜잭션을 전송할 수 있다.
채굴 노드가 다른 채굴 노드로부터 헤더 정보를 수신하면, 동작 216에서 해당 채굴 노드에 대해 저장된 정렬된 트랜잭션 목록에 기초하여 새로운 블록을 조립한다. 코인베이스 트랜잭션이 수신되면, 해당 트랜잭션이 블록에 추가되고 채굴 노드는 머클 루트가 유효한지 확인하기 위해 머클 트리를 구성할 수 있다. 그런 다음 채굴 노드는 동작 218에서 새로운 블록을 유효성 검증하고, 유효하지 않은 경우, 새로운 블록을 폐기하고 자신의 POW를 계속 검색할 수 있다. 실패하면, 성공적인 채굴 노드로부터 추가 데이터를 요청하는 것과 같은 다른 작업을 수행하도록 채굴 노드에 촉구할 수 있는 특정한 유효성 검사가 있을 수 있음을 유의하며, 이는 나중에 설명한다. 블록이 유효성 검증되면, 동작 220에서 블록체인에 추가되고 추가 채굴 노드로 전파된다. 그런 다음 채굴 노드는 동작 202로 되돌아가 새로운 후보 블록을 구축하고 검색을 새로 시작한다.
각 채굴자가 서로 다른 채굴자에 대한 정렬된 트랜잭션의 목록을 알 수 있도록 후보 블록 정보를 사전 배포하는 설명된 방법은 정보의 최소량만이 POW가 발견된 후에 전파되어야 하도록 보장한다는 것을 이해할 수 있을 것이다. 이는 채굴 노드가 새로운 블록을 유효성 검증하기 위하여 필요한 정보를 가능한 한 빨리 갖도록 보장하므로, 다른 채굴자가 이미 성공했을 때 POW를 검색하는 데 낭비되는 시간을 줄일 수 있다. 채굴 노드는 가능한 한 빨리 새로운 블록을 전파하고 유효성 검증하여 다음 블록을 검색할 수 있도록 하기 위한 모든 인센티브를 갖는다. 네트워크 레이턴시로 인한 잠재적 지연은 연속 블록 사이에 약 10분의 기간 동안 정렬된 트랜잭션 목록을 사전 배포할 때 훨씬 덜 문제가 된다.
하나의 예시적인 구현에서, 후보 블록으로부터의 정렬된 트랜잭션 목록은 트랜잭션 데이터 패킷에 순서 정보를 추가함으로써 다른 채굴자와 통신될 수 있다. 각 채굴자는 다른 채굴자 각각을 고유하게 식별할 수 있다. 하나의 예시적인 구현에서, 채굴자와 채굴자가 작업 중인 블록 수준을 고유하게 식별하고 해당 채굴자의 후보 블록에 대한 TXID를 순서대로 나열하는 메시지가 전송될 수 있다.
다른 예시적인 구현에서, 메시징 프로토콜은 채굴자에 대한 정렬된 목록에 트랜잭션을 추가하고, 정렬된 목록에서 트랜잭션을 제거 또는 삭제하고, 트랜잭션을 다른 트랜잭션으로 교체하거나, 트랜잭션을 재정렬하는 것을 제공할 수 있다. 정상적인 과정에서, 채굴자는 정렬된 트랜잭션 목록을 지정하는 "추가(add)" 메시지만 사용할 가능성이 높다. 그러나, 채굴자가 트랜잭션을 제거하거나 교체하기를 원하는 경우가 있다. 예를 들어, 이후에 수신된 정보가 트랜잭션 중 하나와 관련하여 잠재적인 이중 지불 또는 그 유효성에 대한 다른 잠재적인 문제를 나타낼 수 있다. 다른 예로서, 채굴자는 논스의 모든 증분을 순환할 수 있으며 머클 루트를 변경하고 블록 채굴을 계속하기 위해 헤더를 변경하기 위하여 트랜잭션을 재정렬하거나 달리 조정하기를 원할 수 있다. 메시지 구조의 정확한 형식은 구현에 따라 다를 수 있다.
TXID 문자열을 단축함으로써 블록 전파 메시지의 추가 압축이 달성될 수 있다. 일부 예에서 TXID는 32바이트 문자열이다. 그러나, 어떤 경우에는 TXID의 일부만 전송하는 데 의존하는 압축된 TXID가 사용될 수 있다. 한 예에서, 처음 8바이트만이 전송된다.
TXID의 처음 8바이트가 트랜잭션을 고유하게 식별하도록 보장하지는 않지만, 단일 메시지 내에서 또는 일반적인 경우 모두에서 두 개의 TXID에서 충돌 가능성은 적다. SHA256 출력이 의사 난수 256비트 문자열이라는 점을 감안할 때, 두 개의 임의 TXID의 정확한 충돌 가능성, 즉 두 개의 TXID가 동일한 처음 4바이트를 가질 가능성은 다음과 같다:
Figure pct00001
여기에서
Figure pct00002
는 '
Figure pct00003
의 처음 n 바이트'를 의미한다. 또한 N개의 압축된 TXID를 포함하는 메시지가 하나 이상의 충돌을 포함할 가능성은 다음과 같이 표현될 수 있다:
Figure pct00004
Figure pct00005
예를 들어, 메시지가 백만 개의 압축된 TXID(N=1,000,000)를 포함하도록 백만 개의 트랜잭션이 블록에 포함된 경우, 충돌 가능성은 다음과 같다:
Figure pct00006
이 확률은 매우 작으며, 충돌이 발생하더라도, 메시지 수신자는 단순히 동일한 메시지를 압축되지 않은 형태로 요청할 수 있다. 대안적으로, 전송하는 채굴 노드는 전송 전에 압축된 TXID의 정렬된 집합에 충돌이 포함되어 있지 않은지 확인하기 위해 먼저 검사를 수행하고, 충돌이 감지되면, 압축되지 않은 TXID가 포함된 메시지를 전송할 수 있다. 메시지의 플래그 또는 기타 신호가 페이로드의 TXID가 압축 또는 비압축 형식인지 나타낼 수 있다.
본원에 설명된 프로세스에 따르면, 블록체인 네트워크에 포함된 각 채굴자는 해당 다른 채굴자의 후보 블록을 포함하는 정렬된 트랜잭션의 목록을 지정하는 메시지를 다른 채굴자 각각으로부터 수신할 수 있다. 이 정보를 추적하기 위해, 각 채굴자는 각각의 채굴자 신원과 연관하여 정렬된 목록을 저장할 수 있다. 채굴자 신원은 IP 주소 또는 기타 고유 식별자에 의해 결정될 수 있다. 하나의 예시적인 구현에서, 각 채굴자는 각 행이 멤풀의 트랜잭션 중 하나와 연관되고 각 열이 네트워크의 채굴자와 연관되는 테이블 또는 유사한 데이터 구조를 유지한다. 그런 다음 순서 정보는 각 채굴자에 대해 채굴자가 자신의 후보 블록에 트랜잭션을 배열한 순서를 나타내는 테이블의 셀에 저장될 수 있다. 모든 트랜잭션이 모든 후보 블록에 포함되는 것은 아니므로 모든 트랜잭션이 순서 값을 갖는 것은 아님을 이해하여야 한다. 아래의 표는 채굴자 순서 데이터 테이블의 간단한 예를 보여준다.
[표 1]
Figure pct00007
이 단순화된 예시적 테이블에는, 채굴자 ID A, B, C, D를 갖는 4명의 채굴자가 있다. 각 채굴자는 트랜잭션
Figure pct00008
,
Figure pct00009
Figure pct00010
를 수신하고 유효성 검증하였다. 채굴자의 정렬된 목록에 트랜잭션을 추가하거나, 해당 순서의 트랜잭션을 다른 트랜잭션으로 교체하거나, 정렬된 목록에서 트랜잭션을 삭제하도록 테이블이 업데이트될 수 있으며, 이에 따라 해당 정렬된 목록의 나머지 트랜잭션의 순서가 조정될 수 있다.
한 채굴자, 예컨대 채굴자 A가, 블록이 발견되었음을 나타내는 블록 헤더 메시지를 예를 들어, 채굴자 C로부터 수신하면, 채굴자 A는 채굴자 C에 대해 지정된 순서와 TXID에 기초하여 머클 트리를 구축한다. 채굴자 A는 블록 헤더를 해싱하여 해시 값을 검증한다. 블록이 검증되면, 채굴자 A는 지정된 순서의 트랜잭션 데이터로 전체 블록을 구성하고, 이를 블록체인에 추가하고, 새로운 후보 블록을 구축하여 채굴을 계속한다.
일부 예시적인 구현에서, 성공한 채굴자에 의해 전송된 블록 헤더는 모든 필드를 포함하지는 않는다. 예를 들어, 전체 블록 헤더를 해싱할 때 채굴자 C가 획득한 해시 값과 함께 논스와 타임스탬프만을 포함할 수 있다. 수신하는 채굴자는 버전, prev_block 해시, 채굴자가 계산한 머클 루트 및 난이도 설정과 같은 누락된 필드를 추가할 수 있다. 그런 다음 수신된 해시 값과 비교할 수 있는 해싱을 통해 재구성된 헤더의 유효성을 검증할 수 있다.
일부 예시적인 구현에서, 각각의 후보 블록에 대한 정렬된 트랜잭션 목록을 나타내는 채굴자로부터의 메시지는 일단 후보 블록이 구축되면 자동으로 전송된다. 일부 다른 예시적인 구현에서, 정렬된 목록 정보는 다른 채굴자의 요청에 응답하여 제공된다.
일부 구현에서, 템플릿 식별자 TmID가 정의될 수 있다. 템플릿 식별자는 채굴자와 블록 수준에 고유하므로, 특정한 후보 블록, 즉 특정한 정렬된 트랜잭션 목록을 효과적으로 참조한다. 정렬된 트랜잭션 목록과 관련된 채굴자로부터의 모든 메시지는 템플릿 식별자를 포함하여 수신하는 채굴자가 변경 사항을 올바른 특정한 정렬된 트랜잭션 목록과 연관시키도록 보장할 수 있다. 일 구현에서, 템플릿 식별자는 채굴자 식별자(채굴자 ID) 및 블록 헤더의 prev_block 필드의 해시, 즉 이전 블록의 해시일 수 있다:
Figure pct00011
이는 템플릿 식별자를 블록 수준 및 특정한 채굴자에 연결한다.
정렬된 트랜잭션 목록과 관련된 각 메시지는 템플릿 식별자를 포함할 수 있으며, 시퀀스 번호를 더 포함할 수 있다. 시퀀스 번호는 서로에 대한 한 채굴자의 메시지 순서를 나타내는 데 사용되는 부호 없는 정수 값일 수 있다. 시퀀싱은 일부 메시지가 수신되지 않거나 순서가 잘못되어 수신된 경우 특정 채굴자의 TXID 순서를 고유하게 결정하기 위해 메시지 수신자에게 도움이 된다.
위에서 언급한 바와 같이, 채굴자 ID는 채굴 노드의 IP 주소 또는 채굴 노드에 대한 다른 고유 식별자일 수 있다. 일부 실시예에서, 초기 인증 동작은 채굴자가 네트워크에 접속할 때 발생하여 고유한 채굴자 ID를 해당 채굴 노드에 연관시킬 수 있다. 인증 동작은 각 채굴자가 공개 키와 디지털 서명을 제공하는 핸드셰이킹(handshaking) 동작을 포함할 수 있다. 인증은 디지털 서명 검증에 연결된다. 경우에 따라, 채굴자 ID는 공개 키, 디지털 서명 또는 이들의 일부 조합에 기초할 수 있다.
일부 경우에, 인증 단계 동안의 핸드셰이킹 동작은 채굴자 사이의 공유 비밀의 설정을 포함할 수 있다. 공유 비밀을 설정하기 위한 많은 기술이 있다. 정렬된 트랜잭션 목록과 관련된 메시지와 같은 후속 메시지는 기밀성을 위해, 그리고 채굴 과정에 대한 중간자 공격 가능성을 줄이기 위해 암호화될 수 있다.
이제 본 출원의 일 구현에 따른 두 채굴자 사이의 예시적인 동작 상태 및 메시징 흐름을 도식적으로 예시하는 도 3a 내지 도 3i를 참조한다.
도 3a에서, 제1 채굴자(302), 채굴자 A 및 제2 채굴자(304), 채굴자 B가 블록체인 네트워크의 일부이고, 기존 블록체인(306)이 있음을 알 수 있을 것이다. 이 예에서 제1 채굴자(302) 및 제2 채굴자(304)는 모두 로컬에 저장된 블록체인(306)의 사본을 가지고 있다. 블록체인(306)은 특정 "높이" 또는 블록 수준을 갖는다.
도 3b에 도시된 바와 같이, 채굴자(302, 304) 각각은 후보 블록을 구축하기 위해 각자의 멤풀로부터 트랜잭션 집합을 선택한다. 구체적으로, 제1 채굴자(302)는 제1 정렬된 트랜잭션 집합을 포함하는 제1 후보 블록(308)을 구축하고, 제2 채굴자(304)는 제2 정렬된 트랜잭션 집합을 포함하는 제2 후보 블록(310)을 구축한다. 채굴자(302, 304)는 자유롭게 멤풀로부터 원하는 트랜잭션을 선택하고 원하는 순서로 그룹화하므로, 제1 정렬된 집합과 제2 정렬된 집합은 동일한 트랜잭션을 포함하거나 포함하지 않을 수 있으며, 동일하거나 부분적으로 동일한 순서로 가지거나 그렇지 않을 수 있다.
도 3c에 도시된 바와 같이, 채굴자(302, 304)는 블록 헤더의 해시가 난이도에 의해 설정된 임계값 미만인 논스를 찾기 위해 각 후보 블록(308, 310)의 채굴을 시작한다.
성공적인 작업 증명을 검색하는 동안, 채굴자(302, 304)는 각각의 후보 블록(308, 310)에서 정렬된 트랜잭션 집합에 대한 정보를 교환한다. 도 3d에 도시된 바와 같이, 제1 채굴자(302)는 제1 후보 블록(308)으로부터 제1 정렬된 트랜잭션 목록을 제공하는 "추가" 메시지(312)를 제2 채굴자(304)로 전송할 수 있다. 그 정보로부터, 제2 채굴자(304)는 제1 후보 블록(308)의 템플릿(314)을 구축할 수 있다. 일부 예시적인 구현에서, 템플릿(314)은 TXID 형식의 제1 정렬된 트랜잭션 목록일 수 있다. 일부 예시적인 구현에서, 템플릿(314)은 테이블일 수 있으며, 그 예시는 위에 제공되어 있다. 또 다른 예시적인 구현에서, 템플릿(314)은 전체 트랜잭션 데이터를 포함하는, 특정 이용 불가능한 헤더 필드를 제외한, 전체 후보 블록의 사본일 수 있다.
유사한 방식으로, 제2 채굴자(304)는, 도 3e에 도시된 바와 같이, 제2 후보 블록(310)으로부터의 제2정렬된 트랜잭션 목록을 포함하는 "추가" 메시지(316)를 제1 채굴자(302)에게 전송할 수 있다. 그 데이터로부터, 제1 채굴자(302)는 제2 후보 블록(310)의 템플릿(318)을 구축한다. 이제 각 채굴자는 그들이 계속해서 채굴하는 자신의 후보 블록과 다른 채굴자에 의해 작업되는 후보 블록의 템플릿을 갖는다.
도 3f는 제1 채굴자(302)가 작업 증명 요건을 충족하는 블록 헤더 해시를 발견하는 데 성공했음을 보여준다. 따라서, 헤더에 가장 최근에 테스트된 논스를 갖는 제1 후보 블록(308)은 유효한 블록이 된다. 도 3g 및 도 3h는 제1 채굴자(302)가 새로운 블록(322)을 블록체인(306)에 추가하고 코인베이스 트랜잭션(320)을 포함하는 메시지 및 블록 헤더 정보(324)를 포함하는 메시지를 전송하는 것을 보여준다. 블록 헤더 정보(324)는 적어도 논스 및 타임스탬프를 포함한다. 그것은 merkle_root 필드와 같은 다른 블록 헤더 필드를 더 포함하거나 포함하지 않을 수 있다. 일부 경우에, 이는 제2 채굴자(304)가 자신의 머클 루트 계산을 재확인할 수 있도록 하기 위해 제2 채굴자(304)에 의해 계산될 수 있지만, 이는 블록 헤더 정보(324)의 일부로서 전송될 수 있다. 일부 경우에, 제1 채굴자(302)는 제2 채굴자(304)에게 새로운 블록(322)에 대한 전체 블록 헤더를 전송한다. 제1 채굴자(302)는 또한 블록 헤더를 해싱함으로써 획득한 해시 값을 제2 채굴자(304)에게 전송할 수 있어 제2 채굴자(304)가 해시가 난이도 임계값 아래로 떨어지는지 검증할 뿐 아니라 제1 채굴자(302)가 발견했다고 주장하는 해시와 일치하는지 확인할 수 있다. 해시 값은 코인베이스 트랜잭션 메시지(320), 블록 헤더 정보 메시지(324) 또는 별도의 메시지로 전송될 수 있다.
일단 제2 채굴자(304)가 코인베이스 트랜잭션을 가지면, 제1 후보 블록의 템플릿(314)의 트랜잭션 부분을 완료할 수 있고, 따라서 머클 루트를 계산할 수 있다. 해당 필드가 블록 헤더 정보 메시지(324)에 포함된 경우, 해당 계산으로부터 merkle_root 필드가 정확한지 검증할 수 있다. 그렇지 않으면, 새로운 블록(322)에 대한 블록 헤더(326)를 조립하기 위하여, merkle_root 필드 및 버전, prev_block 값 및 비트 필드와 같은 다른 누락된 필드를 완료할 수 있다. 논스 및 타임스탬프와 같은, 블록 헤더(326)의 다른 필드는 블록 헤더 정보 메시지(324)에 의해 제공된다. 그런 다음, 제2 채굴자(304)는 조립된 블록 헤더(326)를 해싱하여 새로운 블록을 유효성 검증할 수 있다.
제2 채굴자(304)에서 조립된 블록이 유효성 검증되었다고 가정하면, 제2 채굴자(304)는, 도 3i에 도시된 바와 같이, 그 새로운 블록(322)을 자신의 블록체인(306) 사본에 추가한다.
위에서 설명된 시퀀스는 블록 헤더 정보 메시지(324)보다 먼저 전송되는 코인베이스 트랜잭션 메시지(320)를 보여주지만, 일부 구현에서 블록 헤더 정보 메시지(324)가 먼저 전송될 수 있거나, 두 메시지가 단일 메시지로 결합될 수 있음을 이해할 것이다. 설명된 시스템 및 방법의 전체 기능적 동작을 변경하지 않고 특정 인스턴스의 동작 순서 또는 구현 세부 사항의 다른 변형이 이루어질 수 있다.
일부 경우에 블록이 예상보다 일찍 채굴될 수 있다는 것은 블록체인 네트워크 분야의 당업자에 의해 인식될 수 있다. 예를 들어 비트코인에서, 난이도 설정은 약 10분마다 유효한 블록을 발견하도록 제공하지만 타이밍은 확실하지 않다. 유효한 블록을 훨씬 더 일찍 찾는 것이 가능하다. 또한, 트랜잭션 또는 트랜잭션 순서 정보를 전파하는 일부 메시지는 네트워크를 통해 전파할 때 네트워크 지연이 발생할 수 있다.
따라서, 가능성은 낮지만, 유효한 블록이 채굴자에 의해 발견되고 헤더 정보가 다른 채굴자에게 전송되지만, 그 채굴자 중 적어도 하나가 블록에 포함된 모든 트랜잭션을 갖지 않거나 성공적인 채굴자에 대한 불완전하거나 잘못된 순서의 트랜잭션 목록을 가진다. 해당 채굴자가 새로운 블록 헤더의 머클 루트 필드를 유효성 검증하려고 시도할 때, 불일치가 발견되고 블록이 유효하지 않은 것으로 간주된다. 한 가지 옵션은 채굴자가 블록을 유효하지 않은 것으로 간주하고 폐기하는 것이다. 그러나, 다른 실시예에서, 채굴자는 머클 리프(Merkle leaf) 집합, 즉 TXID의 정렬된 목록에 대한 요청 메시지를 성공한 채굴자에게 전송할 수 있다. 리프 집합을 받으면, 채굴자는 머클 루트 계산의 오류가 발생한 위치를 결정할 수 있다. 원인이 부정확하거나 불완전한 트랜잭션 순서이면, 채굴자는 순서를 업데이트하고 새로운 블록을 검증할 수 있다. 원인이 누락된 트랜잭션이면, 채굴자는 새로운 트랜잭션을 요청하고 검증 프로세스를 계속할 수 있다. 일부 실시예에서, 다른 채굴자의 후보 블록에 대한 정렬된 트랜잭션 목록을 수신하는 채굴자가 자신의 멤풀에 TXID 중 하나가 없다는 것을 발견하면 누락된 트랜잭션이 블록의 성공적인 발견 이전에 검출될 수 있다는 점에 유의한다. 이 경우 수신하는 채굴자는 해당 트랜잭션의 사본을 요청하고 멤풀을 업데이트할 수 있다.
일부 구현에서, 하나 이상의 채굴자가 트랜잭션 선택 및 순서에 대해 일부 기밀성을 유지하기를 원할 수 있다. 이러한 구현에서, 채굴자는 채굴 단계 동안 배포할 때 정렬된 트랜잭션 목록을 암호화하는 것이 가능할 수 있다. 유효한 블록이 발견되면, 채굴자는 헤더 정보 및/또는 코인베이스 트랜잭션과 함께 해독 키를 배포한 다음, 수신 채굴자가 정렬된 트랜잭션 목록을 해독하고 새로운 블록을 유효성 검증하도록 허용한다.
다음 테이블은 채굴자들 사이에서 정렬된 트랜잭션 목록의 전파를 위한 메시지의 하나의 예시적인 구현에 대한 한 세트의 예시적인 메시지를 설명한다.
[표 2]
Figure pct00012
수신 채굴자는 메시지의 템플릿 식별자에 대응하는 후보 블록 템플릿을 수정한다. 특정 템플릿 식별자에 대한 시퀀스 번호에 따라, 순서에 맞지 않게 수신된 메시지는 중간 메시지가 수신될 때까지 대기할(queue) 수 있다.
모든 가능성에서, 수신 채굴자는 멤풀의 TXID에 대응하는 적용 가능한 트랜잭션을 갖지만, 트랜잭션이 누락된 경우, 누락된 트랜잭션의 사본을 요청할 수 있다.
위에서 설명된 예시적인 메시징 프로토콜은 하나의 예시적인 구현이라는 것이 이해될 것이다.
짧은 트랜잭션 식별자 충돌 및 조정
위에서 언급한 바와 같이, 블록 전파는 압축된 트랜잭션 식별자, 즉 짧은 TXID를 사용하여 대역폭을 절약하고 전파 속도를 향상시키는 것이 유리할 수 있는 한 가지 상황이다. 짧은 TXID는 위에서 설명된 바와 같이 절단된 TXID일 수 있으며, 여기에서 짧은 TXID는 전체 TXID의 일부이다. 위에 제시된 예는 256비트 전체 TXID의 처음 4바이트(32비트)를 사용하여 제안되었다. 다른 구현에서는 다른 길이의 짧은 TXID가 사용될 수 있다.
더 일반적으로, 짧은 TXID는 전체 TXID를 더 짧은 길이 식별자로 매핑하는 임의의 것일 수 있다. 매핑 함수는 전체 TXID를 그 대응하는 짧은 TXID로 결정성으로 매핑하지만, 그러나 두 개의 상이한 전체 TXID가 동일한 짧은 TXID에 매핑될 확률은 0이 아니다. 본원에서 사용된 예에서, 제안된 매핑은 전체 TXID의 일부, 즉 잘린 TXID를 부분적으로 사용하는 것인데, 이는 짧은 TXID와 일치하는 전체 TXID(또는 TXID들)를 멤풀에서 식별하는 것이 매우 간단하기 때문이다.
짧은 TXID의 사용은 POW를 발견하기 전에 후보 블록에 대해 또는 POW를 찾은 후 채굴된 블록에 대해 여부에 관계없이, 블록 전파의 경우에 유용할 수 있다. 짧은 TXID는 많은 트랜잭션 식별자 집합을 전송할 때 다른 문맥에서 유용할 수도 있다.
짧은 TXID를 사용하면 대역폭이 절약되고 블록 전파 속도가 빨라지지만, 충돌 위험이 있음을 이해할 것이다. 즉, 짧은 TXID가 둘 이상의 전체 TXID에 매핑될 0이 아닌 확률이 있다. 짧은 TXID에 사용되는 비트 수가 적을수록, 충돌 확률이 높아진다. 단일 블록에서 충돌 가능성은 다음과 같이 주어질 수 있다.
Figure pct00013
위의 식에서, Pc는 충돌 확률, n은 짧은 TXID에 사용된 비트 수, t는 블록의 트랜잭션 수이다. 평균 트랜잭션 크기가 400바이트라고 가정하면, 1/Pc 블록에서 충돌이 발생할 것으로 예상할 수 있다. 예를 들어, 1GB 블록 또는 1TB 블록의 경우를 고려한다.
[표 3]
Figure pct00014
32비트의 짧은 TXID 및 1GB 블록의 경우에도, 충돌이 상당히 드물게 예상될 수 있음을 이해할 것이다.
충돌이 발생할 수 있는 세 가지 잠재적인 시나리오가 있다. 첫째, 전송 노드가 충돌을 식별할 수 있다. 예를 들어, 짧은 TXID를 계산할 때 전송 노드는 짧은 TXID 중 2개가 일치함을 식별할 수 있다. 다른 예로서, 전송 노드는 멤풀에서 둘 이상의 전체 TXID와의 일치 여부를 보기 위해 각 짧은 TXID에 대해 멤풀을 검색할 수 있다.
둘째, 수신 노드가 충돌을 식별할 수 있다. 예를 들어, 수신 노드는 트랜잭션 또는 블록 데이터에 대한 전파 타이밍 지연으로 인해, 전송 노드의 멤풀에 없는 트랜잭션을 자신의 멤풀에 가질 수 있다. 이러한 경우, 그 멤풀에서 대응하는 전체 TXID를 찾으려고 시도할 때, 수신 노드는 짧은 TXID가 둘 이상의 전체 TXID와 일치한다고 결정할 것이다.
셋째, 충돌은 전송 노드의 멤풀이 전체 TXID가 수신 노드의 멤풀에 없는 짧은 TXID에 매핑되는 전체 TXID를 갖지만(일반적으로 수신 노드가 누락된 트랜잭션을 요청하는 상황), 수신 노드의 멤풀은 동일한 짧은 TXID에 매핑되는 상이한 전체 TXID를 갖는 것으로부터 발생할 수 있다. 이 세 번째 상황은 짧은 TXID를 전체 TXID에 매핑할 때 어느 노드에서도 식별되지 않는다. 대신, 블록 데이터의 유효성을 검사하고자 시도하고 트랜잭션 블록에 대해 계산된 머클 루트가 전송 노드에서 제공한 머클 루트와 일치하지 않는 것을 발견할 때 전송 노드에서 이를 발견할 것이다. 그러나, 충돌로 인해 어떤 트랜잭션이 잘못 매핑되었는지 해당 정보에서 확인할 수 없다.
본 출원은 3가지 충돌 시나리오 모두를 해결하는 방법을 제공한다.
전송 노드에서 짧은 트랜잭션 식별자 충돌을 해결하는 하나의 예시적인 방법(400)을 흐름도 형태로 도시하는 도 4를 참조한다. 일부 예시적인 구현에서, 방법(400)에 설명된 동작은 하나 이상의 프로세서에 의해 실행되는 프로세서 실행 가능 명령의 결과로서 하나 이상의 프로세서에 의해 수행된다. 명령은 소프트웨어 애플리케이션 또는 모듈로 구현될 수 있으며, 일부 경우에는 하나 이상의 프로세서가 접근할 수 있는 메모리에 저장된다.
방법(400)은 블록 전파의 맥락에서 구현될 수 있다. 블록은 헤더와 트랜잭션 식별자, 즉 TXID의 정렬된 목록을 포함할 수 있다.
방법(400)은, 동작 402에서, 적용 가능한 매핑 함수를 사용하여 TXID를 짧은 TXID로 변환하는 것을 포함한다. 이 예에서, 매핑 함수는 전체 TXID를 자르는 것을 포함할 수 있다. 일부 구현에서, 전체 TXID는 256비트일 수 있고 SHA-256과 같은 적절한 해시 함수로 트랜잭션 콘텐츠를 해시한 결과일 수 있다. 전체 TXID는 TXID의 처음 N 비트만을 유지함으로써 절단될 수 있으며, 여기에서 N은 충돌의 과도한 위험 없이 대역폭을 절약할 수 있는 전체 256비트의 적절한 비율이다. 일부 경우에는, N이 32비트이다.
동작 404에서, 전송 노드는 짧은 TXID가 충돌을 일으키는지 판단한다. 각 짧은 TXID에 대해, 하나의 전체 TXID만이 짧은 TXID와 일치하는 처음 32비트를 갖도록 보장하기 위해 전체 TXID의 멤풀을 검색하여 이렇게 할 수 있다. 충돌이 일어나지 않으면, 전송 노드는 정렬된 목록에 짧은 TXID를 포함하는 메시지를 전송한다. 메시지는 블록 전파 메시지일 수 있다.
동작 404에서 충돌이 검출되면, 동작 408에서 전송 노드는 충돌을 알리고 충돌 해결 데이터가 포함된 메시지를 전송한다. 일 예에서, 충돌 해결 데이터를 갖는 메시지는 블록 전파 메시지에 보완적일 수 있다. 다른 예에서, 충돌 해결 데이터를 갖는 메시지는 블록 전파 메시지에 대한 수정일 수 있다. 충돌 해결 데이터는 충돌을 일으킨 정렬된 목록 내의 트랜잭션을 식별하고 해당 트랜잭션에 대한 전체 TXID 정보를 제공하는 것을 포함할 수 있다. 전체 TXID 정보는 메시지의 적절한 필드에 전체 TXID를 삽입하는 것을 포함할 수 있다. 전체 TXID 정보는 짧은 TXID와 결합될 때 전체 TXID가 되도록 TXID의 나머지를 적절한 필드에 삽입하는 것을 포함할 수 있다. 전체 TXID 정보는 전체 TXID를 전송하지 않고 충돌을 해결하기에 충분한 TXID의 짧은 추가 부분을 전송하는 것을 포함할 수 있다. 충돌이 발생했다는 사실은 블록 전파 메시지에서 알려질 수 있다. 예를 들어, 메시지는 충돌이 발생했음을 알리는 전용 플래그를 포함할 수 있으며, 플래그가 설정되면, 충돌을 일으킨 짧은 TXID에 대한 인덱스 및 충돌 해결 데이터를 포함하는 필드를 포함할 수 있다.
이제 수신 노드에서 짧은 트랜잭션 식별자 충돌을 해결하기 위한 예시적인 방법(500)을 흐름도 형태로 도시하는 도 5를 참조한다. 일부 예시적인 구현에서, 방법(500)에 설명된 동작은 하나 이상의 프로세서에 의해 실행되는 프로세서 실행가능 명령의 결과로서 하나 이상의 프로세서에 의해 수행된다. 명령은 소프트웨어 애플리케이션 또는 모듈로 구현될 수 있으며, 일부 경우에는 하나 이상의 프로세서가 접근할 수 있는 메모리에 저장된다.
방법(500)은 동작 502에서 짧은 TXID를 포함하는 메시지를 수신하는 것을 포함한다. 일부 실시예에서, 메시지는 블록 전파 메시지일 수 있다. 동작 504에서, 수신 노드는 매핑 함수에 기초하여 짧은 TXID를 전체 TXID로 변환한다. 짧은 TXID가 전체 TXID를 자른 것인 이 예에서, 수신 노드는 짧은 TXID와 일치하는 처음 4바이트를 가진 전체 TXID를 발견하기 위해 멤풀을 검색한다.
동작 506 및 508에서, 수신 노드는 짧은 TXID 중 임의의 것이 충돌을 일으켰는지 여부, 즉 짧은 TXID 중 하나가 멤풀의 전체 TXID 중 둘 이상에 매핑되었는지 여부를 결정한다. 만일 그렇다면, 수신 노드는 전송 노드로부터 충돌 해결 데이터를 요청한다. 특히, 수신 노드는 충돌을 일으킨 짧은 TXID를 식별하는 충돌 메시지를 전송 노드에 전송할 수 있다. 응답으로, 전송 노드는 전체 TXID, 전체 TXID의 나머지, 또는 충돌을 해결하기 위해 전체 TXID의 충분한 부분과 같은 충돌 해결 데이터를 메시지에 제공할 수 있다.
이제 제3 시나리오에 따라 짧은 트랜잭션 식별자 충돌을 해결하기 위한 예시적인 방법(600)을 도시하는 도 6을 참조할 것이다. 이 시나리오에서는, 충돌하는 두 개의 전체 TXID가 각각 상이한 멤풀에 있기 때문에 전송 노드나 수신 노드에서 충돌을 감지하지 못한다. 충돌은 수신 노드에서 계산한 머클 트리 루트가 전송 노드가 블록 전파 메시지에서 제공한 머클 트리 루트와 일치하지 않는다는 사실에서 추론할 수 있다. 충돌을 식별하기 위해, 수신 노드와 전송 노드는 머클 트리 구조를 활용하여 충돌과 관련된 트랜잭션을 정확히 찾아낼 수 있다.
일부 예시적인 구현에서, 방법(600)에 설명된 동작은 하나 이상의 프로세서에 의해 실행되는 프로세서 실행가능 명령의 결과로서 수신 노드에서 하나 이상의 프로세서에 의해 수행된다. 명령은 소프트웨어 애플리케이션 또는 모듈로 구현될 수 있으며, 일부 경우에는 하나 이상의 프로세서가 접근할 수 있는 메모리에 저장된다.
방법(600)은 동작 602에서 짧은 TXID를 포함하는 메시지를 수신하는 것을 포함한다. 일부 실시예에서, 메시지는 블록 전파 메시지일 수 있다. 동작 602는 트랜잭션의 정렬된 목록에 대한 머클 트리 루트와 같은 블록 헤더 정보를 수신하는 것을 더 포함한다. 동작 604에서 수신 노드는 매핑 함수에 기초하여 짧은 TXID를 전체 TXID로 변환한다. 짧은 TXID가 전체 TXID를 자른 것인 이 예에서, 수신 노드는 짧은 TXID와 일치하는 처음 4바이트를 가진 전체 TXID를 찾기 위해 멤풀을 검색한다.
동작 606 및 608에서, 수신 노드는 짧은 TXID 중 임의의 것이 충돌을 일으켰는지 여부, 즉 짧은 TXID 중 하나가 멤풀의 전체 TXID 중 둘 이상에 매핑되었는지 여부를 결정한다. 만일 그렇다면, 수신 노드는 전송 노드로부터 충돌 해결 데이터를 요청한다. 특히, 수신 노드는 충돌을 일으킨 짧은 TXID를 식별하는 충돌 메시지를 전송 노드에 전송할 수 있다. 응답으로, 전송 노드는 전체 TXID, 전체 TXID의 나머지, 또는 충돌을 해결하기 위해 전체 TXID의 충분한 부분과 같은 충돌 해결 데이터를 메시지에 제공할 수 있다.
충돌을 식별하지 않았거나, 식별된 충돌을 해결한 후, 동작 610에서 수신 노드는 동작 604에서 식별된 전체 TXID에 기초하여 트랜잭션의 정렬된 목록에 대응하는 머클 트리를 구축한다. 동작 612에서, 수신 노드는 계산된 머클 트리 루트가 전송 노드에서 제공한 머클 트리 루트와 일치하는지 여부를 평가한다. 만일 그렇다면, 수신 노드는 블록의 내용을 유효성 검증하였으며 블록의 유효성 검증 및/또는 다음 노드로의 블록 전파를 계속할 수 있으며, 또는 후보 블록 전파의 경우에는, 위에서 설명한 바와 같이 단순히 후보 블록을 메모리에 저장할 수 있다.
계산된 머클 루트가 전송 노드에 의해 제공된 것과 일치하지 않으면, 충돌로 인해 불일치가 발생할 수 있다. 충돌을 해결하기 위해, 전송 노드와 수신 노드는 중간 계층 머클 트리 해시 데이터를 교환하여 가능한 트랜잭션을 좁힐 수 있다. 설명을 위해, 이제 머클 트리(700)의 간단한 예를 보여주는 도 7을 참조할 것이다.
머클 트리는 루트 노드까지 구축하기 위해 자식 노드의 내용을 재귀적으로 연결하고 해싱함으로써 구성된다. 두 개의 자식 노드와 해시의 각 연결은 위 계층에 있는 부모 노드의 내용을 제공한다. 예를 들어, 머클 트리(700)의 경우, Ti로 표시된 리프 노드는 각 TXID이다. TXID는 그 자체로 트랜잭션 데이터의 해시이다. T3와 T4를 예로 들면, 위의 노드의 내용을 찾기 위해
Figure pct00015
와 같이 연결 및 해시된다. 리프 노드가 머클 트리(700)의 계층 4에 있으면, 노드 N32는 머클 트리(700)의 계층 3에 있다. 노드 N21은 아래의 연결된 자식 노드의 해시로
Figure pct00016
와 같이 결정된다. 재귀적, 너비 우선(breadth-first), 상향식(bottom-up) 방식으로 루트 노드(702)가 발견될 때까지 머클 트리(700)의 노드를 구축하기 위해 연결 및 해싱이 계속된다. 루트 노드(702)는 머클 트리(700)의 계층 0에 있다.
잘못된 TXID와 같은, 리프 노드에 대한 임의의 변경은 루트 노드(702)에 대한 머클 트리(700) 위쪽의 경로에 있는 모든 관련 노드에 영향을 미친다는 것이 이해될 것이다. 이제 도 8을 참조하면, 머클 트리(700)(도 7)와 동일한 구조를 갖는 머클 트리(800)가 도시되어 있다. 머클 트리(800)는 루트 노드(802)와 0에서 4까지 라벨링된 5개의 계층을 가지고 있다. 계층 4의 리프 노드는 'x' 기호로 표시된 바와 같이, 하나의 잘못된 TXID(804)를 포함한다. 'o'로 표시된 노드에는 올바른 TXID 및/또는 올바른 머클 트리 해시가 있다. 잘못된 TXID(804)로 인해, 또한 잘못된 머클 트리 루트 노드(802)까지의 경로에서 'x' 기호로 표시된 잘못된 머클 트리 해시가 발생한다는 점에 유의해야 한다. 해시는 잘못된 TXID(804) 대신 올바른 TXID를 사용하여 초래될 예상되는 해시와 일치하지 않는다는 점에서 "잘못된" 것이다.
이제 도 6으로 돌아가서, 계산된 머클 루트가 전송 노드에 의해 제공된 머클 루트와 일치하지 않으면, 동작 614에서 수신 노드는 계산된 머클 트리의 중간 계층으로부터의 머클 트리 해시를 전송한다. 메시지는 머클 트리 계층을 표시하고 머클 트리 해시의 정렬된 목록을 포함하도록 구성될 수 있다. 예를 들어, 여전히 도 8을 참조하면, 수신 노드는 계층 2를 알리는 데이터 구조를 전송하고 계층 2의 노드로부터의 4개의 머클 트리 해시를 제공할 수 있다.
전송 노드는 제공된 중간 계층 머클 트리 해시를 수신하고 이를 자체 머클 트리 계산으로부터의 머클 트리 해시와 비교한다. 그런 다음 전송 노드는 머클 트리 해시 중 어느 것이 올바르지 않은지 식별하는 데이터를 수신 노드로 전송한다. 예를 들어 잘못된 해시를 가리키는 인덱스 값을 보낼 수 있다. 이 예에서, 4개의 해시를 사용하여, 전송 노드는 어떤 해시가 올바르지 않은지를 나타내는 2비트 값을 전송할 수 있다. 경우에 따라, 각 해시가 올바른지 아닌지를 나타내는 이진 신호를 보낼 수 있다. 이 예에서, 이러한 신호는 예를 들어 0,1,0,0일 수 있다. 이렇게 하면 잘못된 해시가 두 개 이상 있는 경우 전송 노드가 이를 알리는 것을 허용할 수 있다.
이에 따라, 동작 616에서 수신 노드는 머클 트리 해시 중 어느 것이 올바르지 않은지를 나타내는 메시지를 전송 노드로부터 수신한다. 수신 노드는 잘못된 머클 트리 해시 아래의 하위 트리로 검색 범위를 좁힐 수 있다. 따라서, 동작 618에 의해 표시된 바와 같이, 충돌이 아직 해결되지 않은 경우, 수신 노드는 동작 614에서 하위 트리 내에서 더 아래로부터의 머클 트리 해시와 함께 추가 메시지를 전송 노드에 보낼 수 있다. 예를 들어, 하위 트리 내의 계층 4에서 4개의 머클 트리 해시(이 경우 TXID)를 보내고 있음을 알릴 수 있다. 일부 구현에서, 수신 노드는 예컨대 메시지에 하위 트리 루트가 계층 2, 인덱스 1에 있음을 식별하는 데이터를 포함함으로써 어느 하위 트리인지를 알린다. 일부 다른 구현에서, 전송 노드는 전송 노드에 의해 잘못된 것으로 식별된 하위 트리였기 때문에 후속 메시지가 계층 2, 인덱스 1의 하위 트리와 관련되어 있다고 추론할 수 있다.
이 예에서, 하위 트리로부터 4개의 TXID를 전송 노드로 전송한 후, 수신 노드는 TXID 중 어느 것이 올바르지 않은지를 나타내고 충돌 해결 데이터를 제공하는 메시지를 수신한다. 충돌 해결 데이터는 예를 들어 전체의 올바른 TXID를 포함할 수 있다. 전송 노드는 대안적으로 전체 트랜잭션을 보낼 수 있다.
위의 예는 특히 작은 머클 트리를 사용하는 단순화된 예시라는 것이 이해될 것이다. 더 큰 트리의 경우, 수신 노드 및/또는 전송 노드는 왕복 통신 수와 전송된 해시의 양을 맞바꿀 수 있다(trade off). 약 25억 개의 트랜잭션을 포함하는 테라바이트 블록의 경우를 고려하면 머클 트리에는 32개의 계층이 있다. 각 계층은 그 부모의 두 배만큼 크다. 계층의 크기는 2n*32 바이트로 지정된다. 그러나, 하위 트리 내 중간 계층의 일부만이 전송되기 때문에, 각 메시지는 2k 요소만을 포함하고, 여기에서 k는 하위 트리 내의 깊이이다. 32계층 트리의 경우, 3번의 메시지 왕복에서 충돌을 해결하려면, 수신 노드가 매번 11개 계층 깊이를 통과해야 하며, 여기에는 왕복마다 약 64kB의 머클 트리 해시 데이터를 전송하는 것을 포함한다. 이를 2번의 왕복으로 줄이기 위해, 수신 노드는 16개 계층을 가로질러 메시지당 약 2MB를 전송한다.
위의 동작은 전송 노드가 중간 계층으로부터 정확한 머클 트리 해시를 전송하게 하고, 수신 노드가 그들 중 어느 것이 계산된 머클 트리 해시와 일치하지 않는지를 표시하여 응답하게 함으로써 수행될 수 있다는 것을 이해할 것이다.
일 변형에서, 데이터 전송의 양을 더 줄이기 위해 확률적 접근이 사용될 수 있다. 각 머클 트리 해시에 대해 전체 32바이트 해시 값을 보내는 대신, 노드는 8바이트, 즉 해시 값의 25%만 보낼 수 있다. 이러한 경우 위양성(false positive) 확률은 1/18,446,744,073,709,551,616이다. 이 있을 법하지 않은 사건의 결과는 검색 결과 충돌하는 트랜잭션을 발견하지 못한다는 것이다. 이러한 경우, 검색 프로토콜은 16바이트를 사용하거나 전체 32바이트를 사용하여 다시 시작할 수 있다. 위양성의 가능성은 충분히 낮아 어떤 경우에는 머클 트리 해시의 4바이트만 사용할 수 있다.
또 다른 변형에서, 전송 노드는 머클 트리의 일부 상위 계층 부분을 선제적으로 전송할 수 있다. 예를 들어, 전송 노드는 블록 전파 메시지를 전송할 때, 계층 10과 같은 중간 계층에 대한 부분 머클 트리 해시(예를 들어, 4바이트)를 포함할 수 있다. 이러한 전송 비용은 4kB이다. 그렇다면 충돌의 단일 왕복 해결(1GB 블록의 경우)에는 16kB의 비용으로 12개 계층 깊이의 하위 트리만이 필요하다.
머클 트리 중간 계층 해시 데이터의 선제적 전송은 예상되는 공격 시나리오의 경우에 특히 유용할 수 있다. 또한, 수신 노드가 중간 계층에 관한 사전 정보를 가지고 있다면 식별한 충돌 수에 따라 요청 접근 방식을 변경할 수 있다.
수신 노드와 전송 노드 사이에 전송되는 메시지는 소정의 구조를 가질 수 있다. 예를 들어, 수신 노드에서 전송 노드로 보내는 메시지가 일치하지 않는 머클 루트에 대한 통지를 제공하고 중간 계층 머클 해시 데이터를 제공하는 형식은 다음과 같다.
[ block_hash: byte[32],
subtree_root_layer: int,
subtree_root_index: int,
data_layer: int,
[hash0, hash1, ... hashn] : byte[][32]
]
위의 예시적인 데이터 구조에서, 메시지는 블록의 식별자로서 block_hash를 참조하고, subtree_root_layer를 사용하여 머클 트리의 계층에 인덱스를 제공한다. 메시지가 하위 트리 및 하위 트리 내의 깊이를 알리는 경우, subtree_root_layer 및 data_layer 수량이 코드화된다. 실제 데이터의 계층은 log2(nElements)로 계산할 수 있으므로 꼭 필요한 것은 아니지만, 설명을 위해 여기에 포함되어 있다. 그런 다음 n+1 머클 트리 해시가 포함된다.
응답 메시지는 일치하지 않는 해시 인덱스의 배열일 수 있다. 데이터 계층이 머클 트리의 하부 계층, 예를 들어 리프 노드인 경우, 이는 잘못된 해시의 인덱스와 일치하는 TXID 또는 원시 트랜잭션 데이터를 포함할 수 있다. 일례로, 이러한 응답 메시지는 다음과 같은 형식을 취할 수 있다.
[
block_hash: byte[32],
has_txs: bool, //flag to indicate bottom of the tree and are including txs
subtree_root_layer: int,
subtree_root_index: int,
data_layer: int,
[1]: int[],[rawtx1]: byte[][]
]
블록에서 둘 이상의 그러한 낮은 충돌 가능성을 수용하기 위해 데이터 구조에 적절한 수정이 이루어질 수 있다.
다양한 위에서 설명된 예시적인 방법의 위에서 설명된 동작의 일부 또는 전부가 그러한 방법의 전체 동작을 변경하지 않고 예시된 것과 다른 순서로 수행될 수 있고 및/또는 동시에 수행될 수 있음이 이해될 것이다..
이제 본 출원의 예에 따른 단순화된 채굴 노드(400)를 블록도 형태로 도시하는 도 4를 참조한다. 채굴 노드(400)는, 하나 이상의 마이크로프로세서, 주문형 집적 회로(ASIC), 마이크로컨트롤러, 또는 유사한 컴퓨터 처리 디바이스를 포함할 수 있는 프로세서(402)를 포함한다. 채굴 노드(400)는 값, 변수, 및 일부 경우에 프로세서 실행 가능 프로그램 명령을 저장하기 위한 영구 및 비영구 메모리를 포함할 수 있는 메모리(404) 및 네트워크 인터페이스(606)를 더 포함할 수 있다.
채굴 노드(800)는, 실행될 때, 프로세서(402)가 본원에 설명된 기능 또는 동작 중 하나 이상을 수행하게 하는 프로세서 실행 가능 명령을 포함하는 프로세서 실행 가능 블록체인 애플리케이션(408)을 포함할 수 있다.
위에서 제시된 다양한 실시예는 단지 예일 뿐이며 이 출원의 범위를 제한하는 것을 의미하지 않는다. 본원에 설명된 혁신의 변형은 당업자에게 명백할 것이며, 이러한 변형은 본 출원의 의도된 범위 내에 있다. 특히, 위에서 설명된 예시적인 실시예 중 하나 이상으로부터의 특징은 위에서 명시적으로 설명되지 않을 수 있는 특징의 하위 조합을 포함하는 대안적인 예시적인 실시예를 생성하도록 선택될 수 있다. 또한, 위에서 설명된 예시적인 실시예 중 하나 이상으로부터의 특징이 선택되고 결합되어 위에서 명시적으로 설명되지 않을 수 있는 특징의 조합을 포함하는 대안적인 예시적인 실시예를 생성할 수 있다. 이러한 조합 및 하위 조합에 적합한 특징은 본 출원 전체를 검토할 때 당업자에게 용이하게 명백할 것이다. 본원 및 인용된 청구범위에 기술된 주제는 기술의 모든 적절한 변경을 포함하고 포용하도록 의도된다.

Claims (13)

  1. 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 컴퓨터 구현 방법에 있어서, 상기 방법은:
    전송 노드로부터의 짧은 트랜잭션 식별자 집합 및 블록 머클(Merkle) 루트를 포함하는 블록 데이터를 전송 노드로부터 수신하는 것;
    각 짧은 트랜잭션 식별자에 대하여, 멤풀(mempool)에서 대응하는 전체 트랜잭션 식별자를 찾는 것;
    상기 전체 트랜잭션 식별자에 기초하여 머클 트리를 계산하는 것-상기 머클 트리는 머클 루트를 가짐;
    상기 계산된 머클 루트가 블록 머클 루트와 일치하지 않는 것으로 결정하는 것;
    상기 전송 노드로, 상기 머클 트리의 중간 계층으로부터의 머클 트리 해시를 전송하는 것;
    상기 전송 노드로부터, 잘못된 머클 트리 해시를 식별하는 해결 데이터를 수신하는 것; 및
    충돌이 해결될 때까지 머클 트리 해시 전송 및 해결 데이터 수신을 반복하는 것을 포함하는 방법.
  2. 제1항에 있어서, 각 짧은 트랜잭션 식별자는 그 대응하는 전체 트랜잭션 식별자를 절단한 것인 방법.
  3. 제1항 또는 제2항에 있어서, 상기 해결 데이터는 상기 중간 계층에 대한 상기 머클 트리 해시 각각에 대하여 해당 머클 트리 해시의 유효 여부를 나타내는 플래그를 포함하는 방법.
  4. 제1항 또는 제2항에 있어서, 상기 해결 데이터는 상기 머클 트리의 하부 계층 부분에 대한 전체 트랜잭션 식별자를 포함하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 중간 계층은 식별된 일치하지 않는 머클 해시와 상기 머클 트리의 하부 계층 사이의 머클 트리 계층인 방법.
  6. 제5항에 있어서, 상기 중간 계층을 선택하는 것을 더 포함하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 머클 트리 해시는 부분적 머클 트리 해시를 포함하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 블록 데이터의 수신은, 상기 전송 노드로부터, 상기 머클 트리의 선택된 계층으로부터 머클 트리 해시의 선제적(pre-emptive) 집합을 수신하는 것을 포함하는 방법.
  9. 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 컴퓨터 구현 방법에 있어서, 상기 방법은:
    전송 노드로부터 짧은 트랜잭션 식별자 집합을 수신하는 것;
    각 짧은 트랜잭션 식별자에 대하여, 멤풀에서 대응하는 전체 트랜잭션 식별자를 찾는 것-상기 찾는 것은, 적어도 하나의 짧은 트랜잭션 식별자에 대하여 충돌을 식별하는 것을 포함함;
    상기 적어도 하나의 짧은 트랜잭션 식별자에 관한 상기 충돌의 해결을 요청하는 메시지를 상기 전송 노드로 전송하는 것; 및
    상기 적어도 하나의 짧은 트랜잭션 식별자에 대한 유효한 대응하는 전체 트랜잭션 식별자의 식별을 가능하게 하는 충돌 해결 데이터를 상기 전송 노드로부터 수신하는 것을 포함하는 방법.
  10. 제9항에 있어서, 상기 전송은 상기 적어도 하나의 짧은 트랜잭션 식별자를 포함하는 해결 요청 메시지를 전송하는 것을 포함하는 방법.
  11. 제9항 또는 제10항에 있어서, 상기 충돌 해결 데이터는 상기 유효한 대응하는 전체 트랜잭션 식별자를 포함하는 방법.
  12. 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 컴퓨팅 디바이스에 있어서, 상기 컴퓨팅 디바이스는:
    하나 이상의 프로세서;
    메모리;
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 프로세서가 제1항 내지 제11항 중 어느 한 항에 청구된 방법을 수행하도록 하는, 상기 메모리에 저장된 컴퓨터 실행 가능 명령을 포함하는 컴퓨팅 디바이스.
  13. 블록체인 네트워크에서 짧은 트랜잭션 식별자 충돌을 해결하는 프로세서 실행 가능 명령을 저장하는 컴퓨터 판독 가능 매체에 있어서, 상기 프로세서 실행 가능 명령은, 하나 이상의 프로세서에 의해 실행될 때, 프로세서가 제1항 내지 제11항 중 어느 한 항에 청구된 방법을 수행하도록 하는 명령을 포함하는 컴퓨터 판독 가능 매체.
KR1020217036486A 2019-04-12 2020-04-10 짧은 트랜잭션 식별자 충돌 검출 및 조정 KR20210149164A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1905221.6A GB2582978B (en) 2019-04-12 2019-04-12 Methods and devices for propagating blocks in a blockchain network
GB1905221.6 2019-04-12
PCT/IB2020/053436 WO2020208596A1 (en) 2019-04-12 2020-04-10 Short transaction identifier collision detection and reconciliation

Publications (1)

Publication Number Publication Date
KR20210149164A true KR20210149164A (ko) 2021-12-08

Family

ID=66810050

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217036201A KR20210145818A (ko) 2019-04-12 2020-04-09 블록체인 네트워크에서 블록을 전파하는 방법 및 디바이스
KR1020217036486A KR20210149164A (ko) 2019-04-12 2020-04-10 짧은 트랜잭션 식별자 충돌 검출 및 조정

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217036201A KR20210145818A (ko) 2019-04-12 2020-04-09 블록체인 네트워크에서 블록을 전파하는 방법 및 디바이스

Country Status (8)

Country Link
US (2) US20220156735A1 (ko)
EP (2) EP3954085A1 (ko)
JP (2) JP2022527610A (ko)
KR (2) KR20210145818A (ko)
CN (2) CN113841359A (ko)
GB (1) GB2582978B (ko)
SG (2) SG11202111214WA (ko)
WO (2) WO2020208580A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2582978B (en) 2019-04-12 2022-05-04 Nchain Holdings Ltd Methods and devices for propagating blocks in a blockchain network
GB2594295A (en) * 2020-04-21 2021-10-27 Nchain Holdings Ltd Block propagation with poisoned transactions in a blockchain network
GB2601539A (en) 2020-12-04 2022-06-08 Nchain Holdings Ltd Methods and systems for streaming block templates with cross-references
GB2601540A (en) 2020-12-04 2022-06-08 Nchain Holdings Ltd Methods and systems for synchronizing a streamed template to a solved block
GB2601538A (en) 2020-12-04 2022-06-08 Nchain Holdings Ltd Methods and systems for compressing transaction identifiers
CN113098677A (zh) * 2021-04-06 2021-07-09 南方科技大学 基于区块链的挖矿方法、装置、计算机设备及存储介质
KR20230153779A (ko) * 2022-04-29 2023-11-07 금오공과대학교 산학협력단 블록체인 무선 통신망을 위한 자동 통합 마이닝 방법

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100668667B1 (ko) * 2005-12-09 2007-01-12 한국전자통신연구원 무선 휴대 인터넷 시스템에서의 트랜잭션 테이블 관리 방법및 그 장치
US7606795B2 (en) * 2007-02-08 2009-10-20 International Business Machines Corporation System and method for verifying the integrity and completeness of records
JP4252608B2 (ja) * 2007-08-30 2009-04-08 株式会社コナミデジタルエンタテインメント 通信システム、通信装置、通信サーバ、通信方法、ならびに、プログラム
KR101072277B1 (ko) * 2009-08-31 2011-10-11 주식회사 아나스타시스 실시간 데이터 무결성 보장 장치 및 방법과 이를 이용한 블랙박스 시스템
CN111427891A (zh) * 2013-11-19 2020-07-17 杨婕 区块挖掘装置
GB2525191A (en) * 2014-04-14 2015-10-21 Mastercard International Inc Transaction identification and recognition
US20170178072A1 (en) * 2015-12-22 2017-06-22 Intel Corporation System, Apparatus And Method For Transferring Ownership Of A Smart Delivery Package
KR101780635B1 (ko) * 2016-04-28 2017-09-21 주식회사 코인플러그 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버
US10198325B2 (en) * 2016-05-24 2019-02-05 Mastercard International Incorporated Method and system for desynchronization recovery for permissioned blockchains using bloom filters
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
CN106100847B (zh) * 2016-06-14 2021-10-26 惠众商务顾问(北京)有限公司 非对称加密区块链身份信息验证方法及装置
US11082423B2 (en) * 2016-06-29 2021-08-03 Prosper Creative Co., Ltd. Communications system, communications device used in same, management device, and information terminal
US10841097B2 (en) * 2016-07-08 2020-11-17 Mastercard International Incorporated Method and system for verification of identity attribute information
JP6267761B1 (ja) * 2016-09-20 2018-01-24 本田技研工業株式会社 給電管理装置、取引管理システム、充電用具及びプログラム
CN106506638B (zh) * 2016-11-04 2020-01-07 江苏通付盾科技有限公司 区块链中的区块存储方法及装置
US10229270B2 (en) * 2016-12-23 2019-03-12 Amazon Technologies, Inc. Host attestation
WO2018119930A1 (zh) * 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 交易验证处理方法、装置及节点设备
WO2018125989A2 (en) * 2016-12-30 2018-07-05 Intel Corporation The internet of things
US11468077B2 (en) * 2017-06-07 2022-10-11 Nchain Licensing Ag Computer-implemented system and method for managing transactions over a blockchain network
GB201709518D0 (en) 2017-06-15 2017-08-02 Nchain Holdings Ltd Computer-implemented system and method
CN110832826B (zh) 2017-06-30 2023-01-13 区块链控股有限公司 区块链网络中概率中继的流量控制的方法和系统
CN107423961B (zh) * 2017-07-11 2024-06-14 北京泛融科技有限公司 一种基于随机相关性分析的优化共识方法
GB201711879D0 (en) * 2017-07-24 2017-09-06 Nchain Holdings Ltd Computer-implemented system and method
CN109426567B (zh) * 2017-08-22 2021-05-04 汇链丰(北京)科技有限公司 一种区块链的节点部署和选举方法
US11316659B2 (en) * 2017-10-20 2022-04-26 Koninklijke Kpn N.V. Primary and secondary blockchain device
KR101924026B1 (ko) * 2017-11-10 2018-11-30 부산대학교 산학협력단 해시 기반 서명 기법을 적용한 블록체인 시스템 및 방법
US11244309B2 (en) * 2017-11-22 2022-02-08 Cornell University Real-time cryptocurrency exchange using trusted hardware
US10250708B1 (en) * 2017-12-26 2019-04-02 Akamai Technologies, Inc. High performance distributed system of record
US11018850B2 (en) * 2017-12-26 2021-05-25 Akamai Technologies, Inc. Concurrent transaction processing in a high performance distributed system of record
WO2019147295A1 (en) * 2018-01-29 2019-08-01 Ubiquicorp Limited Proof of majority block consensus method for generating and uploading a block to a blockchain
US10372943B1 (en) * 2018-03-20 2019-08-06 Blockchain Asics Llc Cryptographic ASIC with combined transformation and one-way functions
CN108390891A (zh) * 2018-03-28 2018-08-10 电子科技大学天府协同创新中心 基于私有区块链的信息保护方法
CN109039646B (zh) * 2018-07-12 2021-07-27 北京易智能科技有限公司 一种基于节点能力的区块链区块打包和验证方法及系统
WO2020040482A2 (ko) * 2018-08-24 2020-02-27 김보언 전문가 플랫폼의 제어 방법, 장치 및 프로그램
CN109472696B (zh) * 2018-09-29 2021-07-23 腾讯科技(深圳)有限公司 资产交易方法、装置、存储介质及计算机设备
US11146399B2 (en) * 2018-10-19 2021-10-12 Eygs Llp Methods and systems for retrieving zero-knowledge proof-cloaked data on distributed ledger-based networks
US11133923B2 (en) * 2018-10-24 2021-09-28 Landis+Gyr Innovations, Inc. Cryptographic operations using internet of things device pool
CN109493221B (zh) * 2018-10-26 2021-01-12 全链通有限公司 区块链中交易记录保密方法、设备、网络及存储介质
US11190520B2 (en) * 2018-11-20 2021-11-30 Microsoft Technology Licensing, Llc Blockchain smart contracts for digital asset access
US11228439B2 (en) * 2019-01-02 2022-01-18 Jiaping Wang Scale out blockchain with asynchronized consensus zones
CN110506285A (zh) * 2019-01-08 2019-11-26 张季恒 基于有向无环图的区块创建、添加、账本建立方法和装置
WO2020153552A1 (ko) * 2019-01-22 2020-07-30 인제대학교 산학협력단 기록된 거래의 수정이 가능한 블록체인을 위한 방법 및 장치
US10742421B1 (en) * 2019-03-08 2020-08-11 Ares Technologies, Inc. Methods and systems for anonymous hardware attestation
KR102544628B1 (ko) * 2019-03-08 2023-06-19 한국전자통신연구원 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법
US11038685B1 (en) * 2019-03-22 2021-06-15 Turing Technology, Inc. Correcting blockchain transactions with cryptocurrency type mistakes
GB2582978B (en) 2019-04-12 2022-05-04 Nchain Holdings Ltd Methods and devices for propagating blocks in a blockchain network

Also Published As

Publication number Publication date
KR20210145818A (ko) 2021-12-02
GB2582978B (en) 2022-05-04
JP2022527610A (ja) 2022-06-02
SG11202111214WA (en) 2021-11-29
CN113841359A (zh) 2021-12-24
CN113826355A (zh) 2021-12-21
US20220156735A1 (en) 2022-05-19
GB2582978A (en) 2020-10-14
GB201905221D0 (en) 2019-05-29
SG11202111216PA (en) 2021-11-29
JP2022527611A (ja) 2022-06-02
US12073391B2 (en) 2024-08-27
WO2020208580A1 (en) 2020-10-15
US20220182241A1 (en) 2022-06-09
EP3954086A1 (en) 2022-02-16
WO2020208596A1 (en) 2020-10-15
JP7509797B2 (ja) 2024-07-02
GB2582978A8 (en) 2020-12-16
EP3954085A1 (en) 2022-02-16

Similar Documents

Publication Publication Date Title
KR20210149164A (ko) 짧은 트랜잭션 식별자 충돌 검출 및 조정
EP3966996A1 (en) Verification of data fields of blockchain transactions
JP2017054500A (ja) コンテンツ中心ネットワークにおけるネットワーク名称付きフラグメント
KR20220140775A (ko) 분산형 데이터베이스
WO2021070106A1 (en) Methods and devices for secure symbiotic mining
KR20230002815A (ko) 블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파
CN118041925A (zh) 一种区块链网络节点、资源文件定位方法及装置
US20240106669A1 (en) Methods and systems for streaming block templates with cross-references
US20240223386A1 (en) Blockchain system with improved throughput by splitting blocks, and its computer program
US20240031128A1 (en) Methods and systems for synchronizing a streamed template to a solved block
US20230421402A1 (en) Methods and systems for compressing transaction identifiers
CN112257087A (zh) 区块链的文件上链方法和系统

Legal Events

Date Code Title Description
A201 Request for examination