KR20230002815A - 블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파 - Google Patents

블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파 Download PDF

Info

Publication number
KR20230002815A
KR20230002815A KR1020227040162A KR20227040162A KR20230002815A KR 20230002815 A KR20230002815 A KR 20230002815A KR 1020227040162 A KR1020227040162 A KR 1020227040162A KR 20227040162 A KR20227040162 A KR 20227040162A KR 20230002815 A KR20230002815 A KR 20230002815A
Authority
KR
South Korea
Prior art keywords
block
transactions
invalid
transaction
mining node
Prior art date
Application number
KR1020227040162A
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 KR20230002815A publication Critical patent/KR20230002815A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1491Countermeasures against malicious traffic using deception as countermeasure, e.g. honeypots, honeynets, decoys or entrapment
    • 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/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • 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
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/3218Cryptographic 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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 발명은 블록체인 네트워크에서 블록을 전파하기 위한 방법 및 장치에 관한 것이다. 제1 채굴 노드에서, 제1 후보 블록의 제1 블록 헤더를 해싱하는 동안에, 제1 채굴 노드는 제1 후보 블록에 포함된 제1 정렬된 집합의 트랜잭션에서 트랜잭션 및 그들의 순서를 지정하는 제1 메시지를 다른 채굴 노드에 전송한다. 제1 채굴 노드가 후보 블록에서 트랜잭션을 유효성 검증하는 것에 다른 노드가 의존하는 것을 방지하기 위해, 제1 채굴 노드는 제1 정렬된 집합에 하나 이상의 무효 트랜잭션을 시딩(seed)하여 오염된 정렬된 집합을 생성하고, 무효 트랜잭션을 식별하는 암호화된 목록을 제공한다. 일단 후보 블록에 대한 작업 증명이 발견되면, 제1 채굴 노드는 암호화된 목록을 암호해독하고 무효 트랜잭션을 식별하기 위한 암호해독 키를 제공한다. 이것은 무효 트랜잭션에 대한 대체 트랜잭션을 추가로 제공할 수 있다.

Description

블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파
본 개시는 블록체인 네트워크에 관한 것이며, 특히, 채굴자 노드 사이에서 블록의 전파에 관한 것이다.
작업 증명(proof-of-work) 블록체인 시스템에서, 채굴자가 유효한 블록을 찾으면 다른 모든 채굴자에게 성공을 신속하게 통신하고자 한다. 이는 블록체인 네트워크를 통해 모든 채굴 노드에 블록에 대한 정보를 전파하는 것을 수반한다. 일부 경우에, 이는 전체 블록 데이터를 전송하는 것을 포함할 수 있다. 일부 경우에, 이는 블록 헤더 및 트랜잭션 목록 정보를 전송하는 것을 포함할 수 있다. 수신하는 채굴자는 헤더를 해싱하고 성공한 채굴자가 제공한 해시 값과 일치하는지 확인하여 새로운 블록의 유효성을 검증한다.
블록의 크기와 트랜잭션 수가 증가함에 따라, 블록 전파의 지연은 임시 포크(temporary fork) 및 고아 블록(orphan block)의 문제를 악화시킬 수 있다. 이러한 상황은 채굴자 및 시스템 전체에 비용이 많이 들게 한다. 블록 전파 지연에 대한 해결책은 합의 규칙을 훼손할 가능성을 방지하도록 구성되어야 한다.
이제, 예로서, 본 출원의 예시적인 실시예를 나타내는 첨부 도면을 참조할 것이다.
도 1은 블록체인 네트워크에 대한 예시적인 블록 구조를 도시한다.
도 2는 블록 전파의 예시적인 방법의 흐름도를 도시한다.
도 3a 내지 도 3i는 본 출원에 따른 블록 전파의 예시적인 구현에서 메시지 및 동작의 시퀀스를 예시적으로 도시한다.
도 4는 블록체인 네트워크에서 블록 전파를 위한 하나의 예시적인 방법을 흐름도 형태로 도시한다.
도 5는 블록체인 네트워크에서 블록을 유효성 검증하는 하나의 예시적인 방법을 흐름도 형태로 도시한다.
도 6은 채굴 노드의 단순화된 예를 블록도 형태로 나타낸다.
유사한 참조 번호는 도면에서 유사한 요소 및 특징을 나타내기 위해 사용된다.
일 양상에서, 블록체인 네트워크에서 블록 전파의 컴퓨터 구현 방법이 제공될 수 있다. 방법은, 제1 채굴 노드에서 제1 후보 블록의 제1 블록 헤더를 해싱하는 동안, 다른 채굴 노드로, 제1 후보 블록 내에 포함된 제1 정렬된 집합 내의 트랜잭션 및 그 순서를 특정하는 제1 메시지를 전송하는 것; 및 제2 채굴 노드에 의해 채굴되는 제2 후보 블록 내에 포함된 제2 정렬된 집합 내의 트랜잭션 및 그 순서를 식별하는 제2 메시지를 수신하는 것을 포함할 수 있다.
다른 양상에서, 블록체인 네트워크에서의 블록 전파 방법이 설명된다. 방법은: 제1 채굴 노드에서, 제1 정렬된 집합에 트랜잭션을 포함하는 제1 후보 블록을 구성하는 단계 ― 제1 후보 블록은 제1 블록 헤더를 가짐 ― ; 오염된 정렬된 집합(poisoned ordered set)을 생성하기 위해 제1 정렬된 집합에 하나 이상의 무효 트랜잭션을 배치하는 단계; 오염된 정렬된 집합 내에서 하나 이상의 무효 트랜잭션을 식별하는 목록을 구성하고, 무효 트랜잭션의 암호화된 목록을 생성하기 위해 목록을 암호화하는 단계; 및 제1 블록 헤더를 해싱하는 동안에, 오염된 정렬된 집합 및 무효 트랜잭션의 암호화된 목록을 포함하는 제1 메시지를 다른 채굴 노드에 전송하는 단계를 포함할 수 있다.
일부 구현에서, 방법은 제1 채굴 노드가 제1 블록 헤더에 대한 작업 증명을 찾고, 결과적으로 무효 트랜잭션의 암호화된 목록에 대한 암호해독 키를 전송하는 단계를 더 포함할 수 있다.
일부 구현에서, 하나 이상의 무효 트랜잭션을 배치하는 단계는 하나 이상의 무효 트랜잭션을 제1 정렬된 집합의 트랜잭션에 삽입하는 단계를 포함한다.
일부 구현에서, 하나 이상의 무효 트랜잭션을 배치하는 단계는, 하나 이상의 무효 트랜잭션의 각각의 무효 트랜잭션에 대해, 제1 정렬된 집합에서 개개의 유효 트랜잭션을 대체하는 단계를 포함한다. 일부 경우에서, 무효 트랜잭션의 암호화된 목록은 개개의 유효 트랜잭션을 더 포함한다. 일부 경우에서, 방법은 무효 트랜잭션의 암호화된 목록을 암호해독하고, 제1 정렬된 집합을 재구성하고 제1 후보 블록을 생성하기 위해 하나 이상의 무효 트랜잭션을 오염된 정렬된 집합 내의 개개의 유효 트랜잭션으로 대체함으로써, 다른 채굴 노드에서, 제1 후보 블록을 구성하는 단계를 더 포함할 수 있다.
일부 구현에서, 하나 이상의 무효 트랜잭션은 블록체인 네트워크에 대한 블록체인 프로토콜에 의해 규정된 적어도 하나의 유효성 기준을 위반하는 트랜잭션을 포함할 수 있다.
일부 구현에서, 방법은 제1 채굴 노드에서, 하나 이상의 무효 트랜잭션 중 적어도 하나를 생성하는 단계를 더 포함할 수 있다.
일부 구현에서, 방법은, 제1 채굴 노드에서, 다른 채굴 노드로부터 수신된 무효 트랜잭션을 하나 이상의 무효 트랜잭션 중 하나로서 선택하는 단계를 더 포함할 수 있다.
일부 구현에서, 방법은 제1 채굴 노드가 제1 블록 헤더에 관련하여 작업 증명을 찾고, 결과적으로, 무효 트랜잭션의 암호화된 목록에 대한 암호해독 키 및 작업 증명을 전송하는 단계를 더 포함하고, 작업 증명은 제1 후보 블록으로부터의 코인베이스 트랜잭션, 및 제1 블록 헤더로부터의 논스 및 타임스탬프를 더 포함할 수 있다.
일부 구현에서, 방법은 제1 블록 헤더를 해싱하는 동안에, 제2 채굴 노드에 의해 채굴되는 제2 후보 블록으로부터 도출된 제2 오염된 정렬된 집합에서 트랜잭션 및 트랜잭션의 순서를 식별하는 제2 메시지를 수신하고, 제2 암호화된 목록을 수신하는 단계를 더 포함할 수 있고, 제2 암호화된 목록은 제2 오염된 정렬된 집합 내에서 무효 트랜잭션을 식별한다. 일부 경우에서, 방법은 제2 오염된 정렬된 집합 내의 트랜잭션을 유효성 검증하고, 제2 오염된 정렬된 집합에서 한 집합의 하나 이상의 무효 트랜잭션을 식별하는 단계를 더 포함한다. 일부 예에서, 그런 다음, 방법은 코인베이스 트랜잭션, 암호해독 키, 및 제2 후보 블록에 관련하여 작업 증명의 성공적인 완료를 나타내는 제2 블록 헤더 정보를 제2 채굴 노드로부터 수신하는 단계 ― 제2 블록 헤더 정보는 적어도 타임스탬프 및 논스를 포함함 ― ; 암호해독 키를 사용하여 제2 암호화된 목록을 암호해독하는 단계; 제2 암호화된 목록이 한 집합의 하나 이상의 무효 트랜잭션 집합에서와 동일한 무효 트랜잭션을 식별한다고 결정하는 단계; 코인베이스 트랜잭션, 제2 블록 헤더 정보, 및 제2 오염된 정렬된 집합 내의 하나 이상의 무효 트랜잭션을 대체하도록 수정된 제2 오염된 정렬된 집합에 기초하여 제2 블록 헤더를 조립하는 단계; 및 작업 증명을 유효성 검증하기 위해 제2 블록 헤더를 해싱함으로써 제2 후보 블록을 유효성 검증하는 단계를 더 포함할 수 있다.
다른 양상에서, 블록체인에서 블록을 채굴하는 제1 채굴 노드를 구현하는 컴퓨팅 디바이스가 제공될 수 있다. 컴퓨팅 디바이스는 메모리, 하나 이상의 프로세서, 및 실행될 때, 프로세서가 본원에 설명된 하나 이상의 방법을 수행하도록 하는 컴퓨터 실행 가능 명령을 포함할 수 있다.
또 다른 양상에서, 블록체인 네트워크에서 블록을 채굴하는 제1 채굴 노드를 구현하는 프로세서 실행 가능 명령을 저장하는 컴퓨터 판독 가능 매체가 제공될 수 있으며, 프로세서 실행 가능 명령은, 하나 이상의 프로세서에 의해 실행될 때, 프로세서가 본원에 설명된 적어도 하나의 방법을 수행하도록 하는 명령을 포함한다.
본 개시의 다른 예시적인 실시예는 도면과 함께 다음의 상세한 설명의 검토로부터 당업자에게 명백할 것이다.
본 출원에서, "및/또는"이라는 용어는 나열된 요소 중 임의의 하나를 단독으로, 임의의 하위 조합 또는 모든 요소를 포함하는 나열된 요소의 모든 가능한 조합 및 하위 조합을 포함하도록 의도되며, 추가 요소를 반드시 배제하지 않는다.
본 출원에서 "... 또는 ... 중 적어도 하나"라는 문구는 나열된 요소 중 임의의 하나를 단독으로, 임의의 하위 조합 또는 모든 요소를 포함하는 나열된 요소의 임의의 하나 이상을 포함하도록 의도되며, 추가 요소를 반드시 배제하지 않고, 모든 요소를 반드시 요구하지 않는다.
본 출원은 임의의 데이터의 집합 또는 "메시지"에 적용될 때, 고유한 고정 길이의 영숫자 문자열을 결정성으로 생성하는 다수의 암호화 해시 함수 중 임의의 하나를 포함하도록 의도되는 해싱 또는 해시 함수를 참조할 것이다. 해시 함수의 결과는 해시 값, 지문, 해시 결과 또는 이에 상응하는 것으로 지칭될 수 있다. 예로는 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는 공개 키, 디지털 서명 또는 이들의 일부 조합에 기초할 수 있다.
일부 경우에, 인증 단계 동안의 핸드셰이킹 동작은 채굴자 사이의 공유 비밀의 설정을 포함할 수 있다. 공유 비밀을 설정하기 위한 많은 기술이 있다. 정렬된 트랜잭션 목록과 관련된 메시지와 같은 후속 메시지는 기밀성을 위해, 그리고 채굴 과정에 대한 중간자 공격 가능성을 줄이기 위해 암호화될 수 있다.
일부 실시예에서, 채굴 노드는 네트워크에 접속하고 서로 피어-투-피어(peer-to-peer) 연결을 연 후 인증 절차를 수행한다. 인증 절차는 인증 챌린지 메시지를 전송하고 인증 응답을 수신하는 것을 포함할 수 있다. 유효한 인증 응답을 받는 데 실패하면 채굴 노드가 다른 채굴 노드에 대한 연결을 닫거나 끊을 수 있다. 일부 경우에, 채굴 노드는 인증된 연결에 대해 일반적인 공용 네트워크 연결과 다른 종단을 가질 수 있다.
하나의 예시적인 구현에서, 인증 챌린지 메시지는 요청 채굴 노드가 응답 채굴 노드로 메시지를 전송하는 것을 포함한다. 메시지는 응답 채굴 노드가 이전에 본 적이 없는 것이다. 일부 경우에, 메시지는 임의의 코드 또는 문자열일 수 있다. 메시지의 내용은 중요하지 않지만, 응답 채굴 노드는 이전에 생성된 자료를 재사용할 수 없도록 이전에 내용을 본 적이 없어야 한다.
인증 챌린지 메시지를 수신하면, 응답 채굴 노드는 수신된 메시지를 논스 값과 연결한다. 논스 값은 임의의 의사 난수 프로세스를 사용하여 응답 채굴 노드에 의해 생성될 수 있다. 그런 다음 응답 채굴 노드는 이전에 개시된 공개-개인 키 쌍의 개인 키를 사용하여 연결된 논스 및 메시지에 서명한다. 이러한 예에서, 공개-개인 키 쌍은 채굴자 신원과 관련된다. 일부 경우에, 공개 키는 블록체인 네트워크에서 통신에 사용되는 채굴자 ID일 수 있다. 요청 채굴 노드는 블록체인 네트워크에 연결된 채굴 노드에 대한 화이트리스트 또는 기타 채굴자 ID(공개 키) 기록을 가질 수 있다.
응답 채굴 노드가 연결된 논스 및 메시지에 자신의 개인 키를 사용하여 서명하면, 인증 응답 메시지를 생성하여 전송한다. 인증 응답 메시지는 공개 키, 예컨대 채굴자 ID, 사용된 논스 값 및 생성된 디지털 서명을 포함할 수 있다. 요청 채굴 노드는 인증 응답 메시지를 수신하고 공개 키를 사용하여 채굴 노드가 공개 키의 소유자이고 공개 키가 특정 채굴 노드에 대응하는 화이트리스트의 키와 일치하는지 검증할 수 있다.
인증 응답 메시지는 대응하는 인증 챌린지 메시지와 함께 전송되어, 응답 채굴 노드가 요청 채굴 노드의 신원을 상호 인증할 수 있다.
일 예에서, 인증 챌린지 메시지의 형식은 다음과 같은 형태일 수 있다:
Figure pct00012
일 예에서, 인증 응답 메시지의 형식은 다음과 같은 형태를 취할 수 있다:
Figure pct00013
일부 구현에서, 공개 키는 secp256k1 타원 곡선 상의 ECDSA 키이다. 서명은 논스 값과 인증 챌린지 메시지의 메시지 필드 내용의 연결에 대한 서명일 수 있다. 연결은 구현에 따라 (nonce|message) 또는 (message|nonce)일 수 있다.
이제 본 출원의 일 구현에 따른 두 채굴자 사이의 예시적인 동작 상태 및 메시징 흐름을 도식적으로 예시하는 도 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 pct00014
수신 채굴자는 메시지의 템플릿 식별자에 대응하는 후보 블록 템플릿을 수정한다. 특정 템플릿 식별자에 대한 시퀀스 번호에 따라, 순서에 맞지 않게 수신된 메시지는 중간 메시지가 수신될 때까지 대기할(queue) 수 있다.
모든 가능성에서, 수신 채굴자는 멤풀의 TXID에 대응하는 적용 가능한 트랜잭션을 갖지만, 트랜잭션이 누락된 경우, 누락된 트랜잭션의 사본을 요청할 수 있다.
위에서 설명된 예시적인 메시징 프로토콜은 하나의 예시적인 구현이라는 것이 이해될 것이다.
오염된 트랜잭션을 갖는 블록 전파
하나의 채굴자로부터 다른 채굴자에 후보 블록 세부사항을 조기에 전파하는 것은 다른 채굴자가 하나의 채굴자의 유효성 검증 작업에 의존하게 할 수 있다. 즉, 각 채굴 노드는, 멤풀에 트랜잭션을 추가하기 전에, 트랜잭션을 유효성 검증하고 그러한 유효성 검증된 트랜잭션으로부터 후보 블록을 구성해야 한다. 제1 채굴 노드가 유효성 검증된 트랜잭션으로부터 후보 블록을 구성하고, 그런 다음 블록 헤더 데이터 및 정렬된 집합의 트랜잭션 식별자를 제2 채굴 노드에 전송하는 경우, 제1 채굴 노드가 이미 해당 유효성 검증 작업을 수행했거나 제1 채굴 노드가 자신이 채굴 중인 후보 블록에 유효성 검증된 트랜잭션을 포함하지 않을 것이기 때문에, 해당 제2 채굴 노드는 기본 트랜잭션이 유효하다는 사실에 의존하도록 아마도 선택할 수 있다. 이것은 제2 채굴 노드가 유효성 검증 작업의 계산 비용을 회피하는 것을 허용한다. 충분한 채굴 노드가 다른 채굴 노드의 유효성 검증 작업에 피기백킹(piggyback)하기 시작하면, 블록체인 네트워크의 합의 기반 보안이 훼손될 수 있다.
따라서, 일 양상에서, 본 출원은 그러한 의존을 방지하도록 구성된 블록 전파의 방법 및 시스템을 제공한다. 특히, 후보 블록에 대한 정렬된 집합의 트랜잭션을 생성하는 채굴 노드는, 다른 채굴 노드에 전파되는 정렬된 집합에 하나 이상의 무효 트랜잭션을 배치할 수 있다. 후보 블록이 성공적으로 채굴되면, 채굴 노드는 정렬된 집합 내의 트랜잭션 중 어떤 것이 무효한지를 드러낸다.
이러한 방식으로, 제2 채굴 노드는, 유효성 검증된 트랜잭션을 식별할 때, 제1 채굴 노드로부터 전파된 블록 정보에 의존할 수 없는데, 왜냐하면 정보가 적어도 하나의 무효 트랜잭션과 함께 시딩(seed)되었기 때문이다. 무효 트랜잭션은 "오염된" 트랜잭션으로 지칭될 수 있고, 무효 또는 오염된 트랜잭션을 포함하도록 수정된 정렬된 트랜잭션의 집합은 "오염된" 정렬된 집합으로 지칭될 수 있다.
제1 채굴 노드는 오염된 정렬된 집합을 포함하는 후보 블록을 채굴하지 않는다. 대신에, 이것은 정렬된 집합의 유효성 검증된 트랜잭션을 포함하는 후보 블록을 구성한다. 이것은, 제1 채굴 노드가 논스 값을 반복하고 타임스탬프 및/또는 코인베이스 트랜잭션 데이터를 변경하는 것을 통해 채굴하려고 시도하는 해당 유효 후보 블록에 대한 블록 헤더이다. 그러나, 사전 작업 증명 블록 전파 동안에 다른 채굴 노드로 포워딩되는 블록 데이터는 오염된 정렬된 집합 정보이다.
일 구현에서, 제1 채굴 노드는, 무효 트랜잭션에 대한 인덱스/인덱스들 데이터와 POW 해결책 데이터, 예컨대, 해결책에 대한 논스, 타임스탬프 및 코인베이스 데이터를 전송함으로써 블록을 성공적으로 채굴한 후에 해당 인덱스 또는 인덱스들을 드러낼 수 있다. 다른 구현에서, 제1 채굴 노드는 무효 트랜잭션의 인덱스/인덱스들의 목록을 미리 제공하는 것을 통해 무효 트랜잭션에 대한 사전 지식을 증명할 수 있다. 목록은 수신 채굴 노드가 오염된 정렬된 집합을 즉시 복구하는 것을 방지하도록 암호화될 수 있으며, 제1 채굴 노드가 후보 블록에 대한 POW 해결책을 찾은 경우, 제1 채굴 노드는 암호화된 목록을 암호해독하기 위한 암호해독 키를 제공할 수 있다.
오염된 정렬된 집합에 추가된 무효 트랜잭션은, 적어도 하나의 유효성 검증 기준을 위반하도록 구성된 채굴 노드에 의해 생성된 트랜잭션일 수 있다. 일부 경우에, 무효 트랜잭션은, 다른 채굴 노드의 오염된 정렬된 집합에서 채굴 노드가 다른 채굴 노드로부터 수신한 트랜잭션일 수 있다. 다른 채굴 노드에 의해 사용된 무효 트랜잭션을 재사용함으로써, 채굴 노드는, 오로지 무효 트랜잭션이 단일 소스로서 해당 채굴 노드로부터 확인된다는 것에만 기초하여, 수신자가 무효 트랜잭션을 식별하는 것을 방지한다.
암호화된 목록은 집합 내의 무효 트랜잭션의 인덱스에 의해 오염된 정렬된 집합에서 무효 트랜잭션을 식별할 수 있다. 일부 구현에서, 암호화된 목록은 각각의 무효 트랜잭션에 대한 대체 유효 트랜잭션을 추가로 제공한다. 무효 트랜잭션을 유효 트랜잭션으로 대체함으로써 오염된 정렬된 집합은 후보 블록과 일치하는 정렬된 집합으로 복원된다. 그런 다음, 수신 노드는 머클 트리를 완전히 구성하고, POW 해결책을 유효성 검증할 수 있다. 단순히 무효 트랜잭션을 제거하는 것 대신에 대체 트랜잭션을 제공함으로써, 머클 트리의 구조가 유지되어, POW 해결책을 수신하기 전에 수신 노드에 의해 유효성 검증 및 머클 해시 작업 중 적어도 일부가 수행될 수 있다.
이제, 블록체인 네트워크에서 블록 전파를 위한 하나의 예시적인 방법(400)을 흐름도 형태로 도시하는 도 4에 대한 참조가 이루어진다. 이 예에서 방법(400)은 채굴 노드에 의해 구현된다. 채굴 노드는 관리 블록체인 프로토콜에 따라 블록을 채굴하도록 구성된 네트워크 연결 컴퓨팅 디바이스일 수 있다. 블록의 채굴은 후보 블록을 구축하는 것, 및 그런 다음 POW 해결책이 발견되거나 다른 채굴 노드가 그 자신의 후보 블록을 채굴하는 데 성공했다는 통지가 수신될 때까지 후보 블록 헤더를 해싱하는 것을 포함할 수 있다. 방법(400)은, 메모리에 저장된 프로세서 실행 가능 명령어를 사용하여 구현될 수 있으며, 이 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 후술하는 동작을 수행하게 한다.
동작(402)에서, 채굴 노드는 유효성 검증된 트랜잭션을 포함하는 후보 블록을 구축한다. 트랜잭션은 확인되지 않았지만 유효성 검증된 트랜잭션의 채굴 노드 멤풀에 저장된 유효성 검증된 트랜잭션일 수 있다. 이것은 또한, 동작(404)에 표시된 바와 같이, 후보 블록이 구성되자마자 후보 블록을 채굴하기 시작할 수 있다. 채굴하는 것은 후보 블록 헤더를 해싱하는 것, 해시 결과가 난이도 임계치보다 낮은지 여부를 결정하는 것, 그렇지 않은 경우, 헤더의 논스 값을 반복하거나 타임스탬프를 업데이트하거나 코인베이스 트랜잭션을 변경하여 헤더의 콘텐츠를 변경하는 것 및 그런 다음 반복하는 것을 포함한다. 후보 블록이 정렬된 집합의 트랜잭션을 포함한다는 것이 이해될 것이다.
동작(406)에서, 채굴 노드는 정렬된 집합의 트랜잭션의 사본 내의 하나 이상의 유효 트랜잭션을 하나 이상의 무효 트랜잭션으로 대체하여, 오염된 정렬된 집합의 트랜잭션을 생성한다. 무효 트랜잭션은 채굴 노드에 의해 생성될 수 있거나, 다른 채굴 노드에서 전송된 무효 트랜잭션으로부터 복제될 수 있다. 그런 다음, 채굴 노드는, 동작(408)에 표시된 바와 같이, 오염된 정렬된 집합의 트랜잭션에서 무효 트랜잭션을 식별하는 인덱스의 목록을 생성한다.
이 예에서, 암호화된 목록은 또한 대체 데이터를 포함할 수 있다. 대체 데이터는, 무효 트랜잭션이 대체한 유효 트랜잭션에 대한 TXID일 수 있다. 일부 경우에, 대체 데이터가 유효 트랜잭션 자체일 수 있다. 대체 데이터는 수신자가 후보 블록의 기초가 되는 정확한 정렬된 집합의 트랜잭션을 재구성하기 위해 무효 트랜잭션을 제거하고 무효 트랜잭션을 개개의 유효 트랜잭션으로 대체함으로써 오염된 정렬된 집합의 트랜잭션을 "복구"하는 것을 허용한다. 무효 트랜잭션의 인덱스의 목록은 채굴 노드에 의해 암호화된다.
일부 다른 예에서, 암호화된 목록은 대체 데이터를 포함하지 않으며, 채굴 노드가 POW 해결책을 찾는데 성공하는 경우, 채굴 노드에 의해 POW 해결책과 함께 대체 데이터가 제공된다.
동작(410)에서, 채굴 노드는 오염된 정렬된 집합의 트랜잭션 및 암호화된 목록을 다른 채굴 노드에 전파한다. 채굴 노드는 오염된 정렬된 집합에서 추가, 삭제 또는 대체될 트랜잭션을 시그널링하기 위해, 위에서 설명된 프로토콜과 같은 메시징 프로토콜을 사용할 수 있다.
오염된 정렬된 집합을 다른 채굴 노드에 시그널링하면, 채굴 노드는, 동작(412)에 표시된 바와 같이, 후보 블록에 대한 POW 해결책을 계속 검색한다. 채굴 노드는 또한, 동작(414)에 표시된 바와 같이, 다른 채굴 노드가 그 자신의 후보 블록에 대한 POW 해결책을 찾았다는 통지를 모니터링한다. 다른 노드가 유효 블록을 찾으면, 채굴 노드는 새로운 후보 블록을 구축하고 다시 시도하기 위해 동작(402)으로 복귀한다. 채굴 노드가 POW 해결책을 찾으면, 동작(416)에서, 채굴 노드는 해결책 및 암호화된 목록에 대한 암호해독 키를 전파한다. 그런 다음, 블록체인 네트워크 상의 다른 노드는 암호화된 목록을 암호해독하고, 정렬된 집합의 트랜잭션을 복구하여 후보 블록을 구축하고, 후보 블록의 유효성 검증을 완료하고, 해결책 및 암호해독 키를 추가로 전파할 수 있다.
도 5는 블록체인 네트워크에서 노드에 의한 블록 유효성 검증의 예시적인 방법(500)을 도시한다. 이 예에서 방법(500)은 채굴 노드에 의해 구현될 수 있다. 채굴 노드는 관리 블록체인 프로토콜에 따라 블록을 채굴하도록 구성된 네트워크 연결 컴퓨팅 디바이스일 수 있다. 방법(500)은, 메모리에 저장된 프로세서 실행 가능 명령어를 사용하여 구현될 수 있으며, 이 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 후술하는 동작을 수행하게 한다.
방법(500)은 동작(502)에서 채굴 노드로부터 후보 블록 템플릿 데이터 및 암호화된 목록을 수신하는 것으로 시작한다. 후보 블록 템플릿 데이터는 정렬된 집합의 트랜잭션을 자세히 설명하는 데이터일 수 있다. 이 예에서, 채굴 노드는 '오염된’ 정렬된 집합의 트랜잭션을 전송하도록 구성되고, 이는 트랜잭션 중 일부가 무효 트랜잭션임을 의미한다. 후보 블록 템플릿 데이터는 트랜잭션이 특정 채굴 노드와 연관된 후보 블록 템플릿에 추가, 이로부터 제거 또는 내부에서 대체될 수 있는 위에서 설명된 프로토콜과 같은 메시지 프로토콜에 기초하여 수신될 수 있다. 암호화된 목록은, 일단 암호해독되면, 후보 블록 템플릿 데이터 내에서 오염된 트랜잭션을 식별할 것이다.
동작(504)에서, 노드는 자신이 식별된 트랜잭션의 사본을 가질지 여부를 결정할 수 있다. 트랜잭션의 사본은 일부 경우에 메시지 자체에 포함될 수 있거나, 노드의 로컬 멤풀로부터 획득될 수 있다. 일부 경우에, 노드는 후보 블록 템플릿에 트랜잭션의 사본을 갖고 있지 않을 수 있고, 동작(506)에서, 채굴 노드로부터 임의의 누락된 트랜잭션의 사본을 요청할 수 있다.
동작(508)에서, 노드는 자신이 이미 유효성 검증하지 않은 임의의 트랜잭션을 유효성 검증한다. 어떤 것이 무효인 것으로 식별되면, 노드는, 동작(510)에 표시된 바와 같이, 트랜잭션에 플래깅하거나 그렇지 않으면 그들을 무효로 기록할 수 있다. 채굴 노드가 후보 블록 템플릿의 전파와 관련된 메시징에서 시그널링될 수 있는 오염된 트랜잭션 블록 전파 프로토콜을 사용하고 있는 경우, 무효 트랜잭션이 의도적으로 정렬된 집합에 배치될 수 있음이 노드에 통지될 것이다. 또한, 노드는 암호화된 목록을 수신했을 수 있고, 이는 정렬된 집합에 적어도 하나의 무효 트랜잭션이 있을 것이라는 것을 암시적으로 시그널링한다.
이 예에서, 동작(512)에서, 노드는 채굴 노드가 POW 해결책을 찾았다는 통지를 수신한다. 통지는 사용된 논스, 타임스탬프, 후보 블록을 재구성하고 유효성 검증하기 위해 노드가 필요로 하는 임의의 다른 데이터를 포함하는 POW 해결책을 포함할 수 있다. 통지는, 암호화된 목록이 암호해독될 수 있도록 암호해독 키를 더 포함하며, 노드는 동작(514)에서 암호해독을 수행한다. 일부 예시적인 구현에서, 통지는 무효 트랜잭션 대신에 어떤 유효 트랜잭션이 사용되어야 하는지를 나타내는 대체 데이터를 더 포함한다. 일부 경우에, 대체 데이터가 암호화된 목록에 포함되고, 일단 암호해독되면 공개된다.
암호해독된 목록은 무효 트랜잭션의 인덱스를 드러낸다. 노드는 또한 암호해독된 목록 또는 POW 해결책 통지 중 어느 하나로부터의 대체 데이터를 갖는다. 동작(516)에서, 노드는, 암호해독된 목록에서 식별된 인덱스가 동작(508 및 510)에서 노드가 무효인 것으로 식별한 트랜잭션과 일치하는지 여부를 결정한다. 그렇지 않다면, 동작(518)에서 블록은 무효로 거부된다. 즉, 노드가 후보 블록 템플릿 데이터에서 무효 트랜잭션을 식별하고 해당 동일한 트랜잭션이 암호해독된 목록에서 무효인 것으로 식별되지 않은 경우, 블록에는 무효 트랜잭션을 포함하고, 거부되어야 한다. 일부 경우에, 노드가 유효인 것으로 결정한 트랜잭션을 암호해독된 목록이 무효인 것으로 식별하면, 대체가 이루어질 수 있으며, 블록이 모든 유효성 검증 기준을 충족시키는 경우 블록이 여전히 수락될 수 있다.
동작(520)에서, 노드는 암호해독된 목록의 대체 데이터에 기초하여 무효 트랜잭션을 유효 트랜잭션으로 대체한다. 그런 다음, 노드는 동작(522)에서 블록의 유효성 검증을 완료한다. 특히, 무효 트랜잭션 대신 삽입된 유효 트랜잭션이 삽입되면, 노드는 머클 트리의 해당 부분의 구축을 완료하고, 머클 루트를 찾고, 블록 헤더를 완성하고, 헤더를 해싱하고, 해시가 난이도 설정 미만이라는 것을 확인할 수 있다.
일부 구현에서, 암호해독된 목록 내의 오염된 트랜잭션 인덱스는 변형 인덱스의 배열이다. 값 0은 노드에 의해 무시될 수 있는 더미 항목으로 예약될 수 있다. 채굴 노드는 데이터를 패딩함으로써 블록의 오염된 트랜잭션 수를 난독화(obfuscate)하도록 0 값 항목 또는 항목들을 삽입할 수 있다.
일부 실시예에서, 대체 데이터는, 암호화된 목록에 포함되는 대신에, POW 해결책 및 암호해독 키와 함께 전송된다.
POW 해결책 및 암호해독 키를 전송하기 위한 메시지 구조의 하나의 예시적인 예는 다음과 같다.
Figure pct00015
위의 예에서, template_id_len, template_id 및 sequence_no 필드는 메시지가 관련된 템플릿을 식별하고, 템플릿과 관련된 메시지 간의 적절한 시퀀싱을 보장한다. aes_128_encryption_key 필드는 암호화된 목록의 암호해독을 가능하게 하기 위한 암호해독 키를 저장한다. 일부 경우에, 암호해독 키는 또한 암호화된 AOL 데이터를 암호해독하는 데 사용될 수 있다.
block_header 및 coinbase_tx 필드는 후보 블록을 완성하는 데 필요한 데이터를 저장한다. aol 필드는 템플릿에 추가될 임의의 추가 트랜잭션을 제공하고, 이 필드는 비어 있을 수 있다.
poison_tx_replacements 필드는 대체 데이터, 즉, 암호화된 목록에서 드러난 무효 트랜잭션을 대체하기 위한 트랜잭션 데이터를 포함한다.
전술한 메시지 구조는 일 예라는 것이 인지될 것이다. 다른 메시지 구조는 구현에 따라 추가 필드, 대안적인 필드 또는 더 적은 수의 필드를 포함할 수 있다.
다양한 위에서 설명된 예시적인 방법의 위에서 설명된 동작의 일부 또는 전부가 그러한 방법의 전체 동작을 변경하지 않고 예시된 것과 다른 순서로 수행될 수 있고 및/또는 동시에 수행될 수 있음이 또한 이해될 것이다.
이제 본 출원의 예에 따른 단순화된 채굴 노드(600)를 블록도 형태로 도시하는 도 6을 참조한다. 채굴 노드(600)는, 하나 이상의 마이크로프로세서, 주문형 집적 회로(ASIC), 마이크로컨트롤러, 또는 유사한 컴퓨터 처리 디바이스를 포함할 수 있는 프로세서(602)를 포함한다. 채굴 노드(600)는 값, 변수, 및 일부 경우에 프로세서 실행 가능 프로그램 명령을 저장하기 위한 영구 및 비영구 메모리를 포함할 수 있는 메모리(604) 및 네트워크 인터페이스(606)를 더 포함할 수 있다.
채굴 노드(600)는, 실행될 때, 프로세서(602)가 본원에 설명된 기능 또는 동작 중 하나 이상을 수행하게 하는 프로세서 실행 가능 명령을 포함하는 프로세서 실행 가능 블록체인 애플리케이션(608)을 포함할 수 있다.
위에서 제시된 다양한 실시예는 단지 예일 뿐이며 이 출원의 범위를 제한하는 것을 의미하지 않는다. 본원에 설명된 혁신의 변형은 당업자에게 명백할 것이며, 이러한 변형은 본 출원의 의도된 범위 내에 있다. 특히, 위에서 설명된 예시적인 실시예 중 하나 이상으로부터의 특징은 위에서 명시적으로 설명되지 않을 수 있는 특징의 하위 조합을 포함하는 대안적인 예시적인 실시예를 생성하도록 선택될 수 있다. 또한, 위에서 설명된 예시적인 실시예 중 하나 이상으로부터의 특징이 선택되고 결합되어 위에서 명시적으로 설명되지 않을 수 있는 특징의 조합을 포함하는 대안적인 예시적인 실시예를 생성할 수 있다. 이러한 조합 및 하위 조합에 적합한 특징은 본 출원 전체를 검토할 때 당업자에게 용이하게 명백할 것이다. 본원 및 인용된 청구범위에 기술된 주제는 기술의 모든 적절한 변경을 포함하고 포용하도록 의도된다.

Claims (15)

  1. 블록체인 네트워크에서의 컴퓨터-구현된 블록 전파 방법으로서,
    제1 채굴 노드에서, 제1 정렬된 집합에 트랜잭션을 포함하는 제1 후보 블록을 구성하는 단계 ― 상기 제1 후보 블록은 제1 블록 헤더(block header)를 가짐 ― ;
    오염된 정렬된 집합(poisoned ordered set)을 생성하기 위해 상기 제1 정렬된 집합에 하나 이상의 무효 트랜잭션을 배치하는 단계;
    상기 오염된 정렬된 집합 내에서 하나 이상의 무효 트랜잭션을 식별하는 목록을 구성하고, 무효 트랜잭션의 암호화된 목록을 생성하기 위해 상기 목록을 암호화하는 단계; 및
    상기 제1 블록 헤더를 해싱하는 동안에, 상기 오염된 정렬된 집합 및 무효 트랜잭션의 암호화된 목록을 포함하는 제1 메시지를 다른 채굴 노드에 전송하는 단계를 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  2. 제1 항에 있어서,
    상기 제1 채굴 노드가 상기 제1 블록 헤더에 대한 작업 증명(proof-of-work)을 찾고, 결과적으로 상기 무효 트랜잭션의 암호화된 목록에 대한 암호해독 키(decryption key)를 전송하는 단계를 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 하나 이상의 무효 트랜잭션을 배치하는 단계는 상기 하나 이상의 무효 트랜잭션을 상기 제1 정렬된 집합의 트랜잭션에 삽입하는 단계를 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  4. 제1 항 또는 제2 항에 있어서,
    상기 하나 이상의 무효 트랜잭션을 배치하는 단계는, 상기 하나 이상의 무효 트랜잭션의 각각의 무효 트랜잭션에 대해, 상기 제1 정렬된 집합에서 개개의 유효 트랜잭션을 대체하는 단계를 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  5. 제4 항에 있어서,
    상기 무효 트랜잭션의 암호화된 목록은 상기 개개의 유효 트랜잭션을 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  6. 제4 항 또는 제5 항에 있어서,
    상기 무효 트랜잭션의 암호화된 목록을 암호해독하고, 상기 제1 정렬된 집합을 재구성하고 상기 제1 후보 블록을 생성하기 위해 상기 오염된 정렬된 집합에서 상기 하나 이상의 무효 트랜잭션을 상기 개개의 유효 트랜잭션으로 대체함으로써, 다른 채굴 노드에서, 상기 제1 후보 블록을 구성하는 단계를 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  7. 제1 항 내지 제6 항 중 어느 한 항에 있어서,
    상기 하나 이상의 무효 트랜잭션은 상기 블록체인 네트워크에 대한 블록체인 프로토콜에 의해 규정된 적어도 하나의 유효성 기준(validity criteria)을 위반하는 트랜잭션을 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  8. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 제1 채굴 노드에서, 상기 하나 이상의 무효 트랜잭션 중 적어도 하나를 생성하는 단계를 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  9. 제1 항 내지 제8 항 중 어느 한 항에 있어서,
    상기 제1 채굴 노드에서, 다른 채굴 노드로부터 수신된 무효 트랜잭션을 상기 하나 이상의 무효 트랜잭션 중 하나로서 선택하는 단계를 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  10. 제1 항에 있어서,
    상기 제1 채굴 노드가 상기 제1 블록 헤더에 관련하여 작업 증명을 찾고, 결과적으로, 상기 무효 트랜잭션의 암호화된 목록에 대한 암호해독 키 및 상기 작업 증명을 전송하는 단계를 더 포함하고, 상기 작업 증명은 상기 제1 후보 블록으로부터의 코인베이스 트랜잭션(coinbase transaction), 및 상기 제1 블록 헤더로부터의 논스(nonce) 및 타임스탬프(timestamp)를 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  11. 제1 항에 있어서,
    상기 제1 블록 헤더를 해싱(hash)하는 동안에, 제2 채굴 노드에 의해 채굴되는 제2 후보 블록으로부터 도출된 제2 오염된 정렬된 집합에서 트랜잭션 및 상기 트랜잭션의 순서를 식별하는 제2 메시지를 수신하고, 제2 암호화된 목록을 수신하는 단계를 더 포함하고, 상기 제2 암호화된 목록은 상기 제2 오염된 정렬된 집합 내에서 무효 트랜잭션을 식별하는,
    컴퓨터-구현된 블록 전파 방법.
  12. 제11 항에 있어서,
    상기 제2 오염된 정렬된 집합 내의 상기 트랜잭션을 유효성 검증하고, 상기 제2 오염된 정렬된 집합에서 한 집합의 하나 이상의 무효 트랜잭션을 식별하는 단계를 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  13. 제12 항에 있어서,
    코인베이스 트랜잭션, 암호해독 키, 및 상기 제2 후보 블록에 관련하여 작업 증명의 성공적인 완료를 나타내는 제2 블록 헤더 정보를 제2 채굴 노드로부터 수신하는 단계 ― 상기 제2 블록 헤더 정보는 적어도 타임스탬프 및 논스를 포함함 ― ;
    상기 암호해독 키를 사용하여 상기 제2 암호화된 목록을 암호해독하는 단계;
    상기 제2 암호화된 목록이 상기 한 집합의 하나 이상의 무효 트랜잭션 집합에서와 동일한 무효 트랜잭션을 식별한다고 결정하는 단계;
    상기 코인베이스 트랜잭션, 상기 제2 블록 헤더 정보, 및 상기 제2 오염된 정렬된 집합 내의 상기 하나 이상의 무효 트랜잭션을 대체하도록 수정된 상기 제2 오염된 정렬된 집합에 기초하여 제2 블록 헤더를 조립하는 단계; 및
    상기 작업 증명을 유효성 검증하기 위해 상기 제2 블록 헤더를 해싱함으로써 상기 제2 후보 블록을 유효성 검증하는 단계를 더 포함하는,
    컴퓨터-구현된 블록 전파 방법.
  14. 블록체인 네트워크 상에서 블록을 채굴하기 위한 제1 채굴 노드를 구현하는 컴퓨팅 디바이스로서,
    하나 이상의 프로세서;
    메모리;
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1 항 내지 제13 항 중 어느 한 항에 청구된 방법을 수행하게 하는, 상기 메모리에 저장된 컴퓨터 실행 가능 명령어를 포함하는,
    컴퓨팅 디바이스.
  15. 블록체인 네트워크 상에서 블록을 채굴하기 위한 제1 채굴 노드를 구현하기 위한 프로세서 실행 가능 명령어를 저장하는 컴퓨터 판독 가능 매체로서,
    상기 프로세서 실행 가능 명령어는, 하나 이상의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1 항 내지 제13 항 중 어느 한 항에 청구된 방법을 수행하게 하는 명령어를 포함하는,
    컴퓨터 판독 가능 매체.
KR1020227040162A 2020-04-21 2021-04-16 블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파 KR20230002815A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2005822.8 2020-04-21
GB2005822.8A GB2594295A (en) 2020-04-21 2020-04-21 Block propagation with poisoned transactions in a blockchain network
PCT/EP2021/059937 WO2021213922A1 (en) 2020-04-21 2021-04-16 Block propagation with poisoned transactions in a blockchain network

Publications (1)

Publication Number Publication Date
KR20230002815A true KR20230002815A (ko) 2023-01-05

Family

ID=70859981

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227040162A KR20230002815A (ko) 2020-04-21 2021-04-16 블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파

Country Status (7)

Country Link
US (1) US20230162186A1 (ko)
EP (1) EP4122153A1 (ko)
JP (1) JP2023522119A (ko)
KR (1) KR20230002815A (ko)
CN (1) CN115943609A (ko)
GB (1) GB2594295A (ko)
WO (1) WO2021213922A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230131813A1 (en) * 2021-10-27 2023-04-27 Mastercard International Incorporated Method and system for authorization and settlement in blockchain transactions
CN114697086B (zh) * 2022-03-17 2024-06-18 浪潮云信息技术股份公司 一种基于深度典型相关分析的挖矿木马检测方法

Family Cites Families (1)

* 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

Also Published As

Publication number Publication date
JP2023522119A (ja) 2023-05-26
EP4122153A1 (en) 2023-01-25
WO2021213922A1 (en) 2021-10-28
GB202005822D0 (en) 2020-06-03
GB2594295A (en) 2021-10-27
CN115943609A (zh) 2023-04-07
US20230162186A1 (en) 2023-05-25

Similar Documents

Publication Publication Date Title
CN111047324B (zh) 用于更新区块链节点处的公钥集合的方法及装置
US9977918B2 (en) Method and system for verifiable searchable symmetric encryption
US20200084027A1 (en) Systems and methods for encryption of data on a blockchain
US20220156735A1 (en) Methods and devices for propagating blocks in a blockchain network
Wang et al. Enabling public verifiability and data dynamics for storage security in cloud computing
CN111523133B (zh) 一种区块链与云端数据协同共享方法
JP2019511855A (ja) 秘密共有のための楕円曲線暗号化を利用したパーソナルデバイスセキュリティ
WO2005008950A1 (en) Secure seed generation protocol
CN111212139A (zh) 对信任节点信息进行更新的方法及装置
CN115176441A (zh) 基于身份的公钥生成协议
CN111526197A (zh) 一种云端数据安全共享方法
US20210144002A1 (en) Secondary Channel Authentication of Public Keys
KR20230002815A (ko) 블록체인 네트워크에서의 오염된 트랜잭션을 갖는 블록 전파
JP2019083447A (ja) データ送受信システム及びデータ送受信方法
CN110620776B (zh) 一种数据转移信息传输方法及其装置
TW202232913A (zh) 共享金鑰產生技術
US20220216999A1 (en) Blockchain system for supporting change of plain text data included in transaction
CN110827034B (zh) 用于发起区块链交易的方法及装置
Song Cryptography in the Wild: Briar
WO2023057149A1 (en) Redacting content from blockchain transactions
CN115037530A (zh) 基于区块链的密文去重和去中心化审计方法

Legal Events

Date Code Title Description
A201 Request for examination