KR20240096558A - 분산된 블록체인 기능들을 위한 방법들 및 시스템들 - Google Patents

분산된 블록체인 기능들을 위한 방법들 및 시스템들 Download PDF

Info

Publication number
KR20240096558A
KR20240096558A KR1020247016845A KR20247016845A KR20240096558A KR 20240096558 A KR20240096558 A KR 20240096558A KR 1020247016845 A KR1020247016845 A KR 1020247016845A KR 20247016845 A KR20247016845 A KR 20247016845A KR 20240096558 A KR20240096558 A KR 20240096558A
Authority
KR
South Korea
Prior art keywords
transaction
blockchain
transactions
block
data
Prior art date
Application number
KR1020247016845A
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 KR20240096558A publication Critical patent/KR20240096558A/ko

Links

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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

본 개시내용의 실시예는 블록체인 구현 또는 관련 동작들의 성능을 개선하고, 그리고 블록체인 네트워크에 대한 신규한 아키텍처를 제공하기 위한 시스템 및 연관된 방법을 제공한다. 특히, 시스템은 블록체인 관련 동작을 다수의 프로세싱 자원에 걸쳐 분산시키는 데 적합하다. 이것은 블록 및/또는 트랜잭션 유효성 검증과 같은 동작, 작업 증명 계산과 같은 채굴 작업, 블록체인 관련 데이터의 식별 및 검색, 및 이러한 동작의 수행에 사용되는 여러 자원에 대한 효율적인 로드 밸런싱을 포함한다. 일부 실시예들에서, 주어진 유형의 블록체인 동작, 예컨대, 유효성 검증 또는 채굴에 관한 작업들은 하나 이상의 전용 자원들에 아웃소싱되거나 위임된다. 바람직한 실시예에서, 개별 블록체인 기능들은, 세계의 어딘가에 위치될 수 있고 그리고/또는 비-관련 신뢰할 수 없는 엔티티들에 의해 제어될 수 있는 상이한 자원들에 의해 분리 및 수행된다.

Description

분산된 블록체인 기능들을 위한 방법들 및 시스템들
본 개시내용은 일반적으로 데이터 레코드들 및/또는 이러한 레코드들의 포맷 및 콘텐츠의 프로세싱 및/또는 관리를 위한 개선된 방법들 및 시스템들에 관한 것이다. 본 개시내용은 블록체인 네트워크의 사용, 저장소 할당의 결정, 블록체인 트랜잭션들의 사전 및/또는 사후 채굴 유효성 검증, SPV 체크들 등을 통해 수행된 트랜잭션들과 관련하여 사용하는 데 특히 적합하지만 이에 국한되지 않는다. 이점들은 보안 및 탄력성의 개선들, 효율성, 또는 속도 및 자원 요건들의 감소, 유효성 검증에 대한 새로운 접근법들, 블록체인-관련 작업 및 동작의 분배, 및 종래 기술의 어레인지먼트로는 가능하지 않았던 프로세서-기반 자원의 밸런싱을 포함하지만 이에 제한되지 않는다. 이것은 이전에 가능하지 않았던 블록체인 구현 어레인지먼트들로 이어진다.
비트코인 프로토콜 및 네트워크가 구현을 위한 예시적 맥락을 제공할 목적으로 본원에서 언급될 수 있지만, 본 개시내용은 비트코인 블록체인과의 사용으로 제한되지 않으며 대안적인 프로토콜들 및 구현들(계정 기반 및 지분 증명(Proof-of-Stake) 컨센서스를 포함하는 구현들을 포함함)이 본 개시내용의 범위에 속한다. 이하, "UTXO"라는 용어는 순전히 편의상 트랜잭션 출력을 지칭하는 데 사용될 수 있으며, 본 개시내용의 실시예들이 UTXO 기반 블록체인 모델들과 관련하여 사용되는 것으로 제한되는 것으로 해석되어서는 안 된다.
블록체인은 결국, 트랜잭션들로 구성되는 블록들로 구성된 컴퓨터-기반 탈중앙화된 분산 시스템으로서 구현되는 피어-투-피어 전자 원장이다. 각각의 트랜잭션은 블록체인 시스템의 참여자들 사이의 디지털 자산의 제어의 이전을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 블록은 이전 블록의 해시를 포함하여서, 블록들은 그의 시작 이래로 블록체인에 기록되는 모든 트랜잭션들에 대한 영구적이고 변경 불가능한 레코드를 생성하도록 함께 체이닝된다(chained).
트랜잭션(Tx)이 블록체인에 기록되기 위해서는 "유효성 검증(validated)"되어야 한다. 네트워크 노드들(채굴자들)은 각각의 트랜잭션이 유효하다는 것을 보장하기 위한 작업을 수행하며, 유효하지 않은 트랜잭션들은 네트워크로부터 거부된다. 일부 프로토콜들에서, 노드들 상에 설치된 소프트웨어 클라이언트들은 그의 잠금 및 잠금 해제 스크립트들을 실행함으로써 미지출 트랜잭션 출력(UTXO)에 대하여 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트들의 실행이 참(TRUE)으로 평가되는 경우, 트랜잭션은 유효하고 트랜잭션은 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인에 기록되기 위해서는 i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하며 ― 트랜잭션이 유효성 검증되는 경우, 노드는 트랜잭션을 네트워크 내 다른 노드들에 중계하는데 즉, 트랜잭션은 전파됨 ― , ii) 채굴자에 의해 구축된 새로운 블록에 추가되어야 하며, iii) 채굴, 즉 과거 트랜잭션들의 공용 원장에 추가되어야 한다. 트랜잭션이 UTXO로서 블록체인에 저장되면, 사용자는 연관된 암호화폐의 제어를 블록체인에 후속적으로 기록되는 다른 트랜잭션 내 입력과 연관된 다른 주소로 이전할 수 있다. 이는 종종 사용자의 암호화폐와 연관된 공개 및 개인 키 쌍들을 저장하는 디지털 지갑을 사용하여 행해진다. SPV 지갑(Simplified Payment Verification)을 포함하여 다양한 형태들의 알려진 암호화폐 지갑이 존재한다. SPV 기술들은 사용자들 및 판매자 노드들이 특정 이전과 관련된 부분 정보만에 기초하여 로컬 검증을 수행하도록 허용한다. SPV는 아래에서 보다 상세히 논의된다.
그러나, 트랜잭션들의 볼륨은 늘어날 것으로 알려져 있고 미지출 트랜잭션 출력(UTXO)의 유효성을 신속하게 결정하는 능력의 개선들이 요구된다. 유효성 검증 작업들을 위한 현재 기술들은 블록들을 다운로드 및 저장하고 대형 UTXO 풀들을 유지하며 검증에 필요한 프로세싱 작업들을 수행할 필요성으로 인해 상당한 자원들 및 시간을 요구할 수 있다. 다수의 사용자들은 이러한 요건들을 충족시킬 수 없거나 어쩌면 이러한 요건들이 필요하지 않기 때문에 충족시키지 않는 것을 선호할 것이다. 따라서 보안을 손상시키거나 기존 프로토콜의 적응을 요구하지 않고도 적어도 이러한 난제들(및 다른 난제들)을 해결하는 더 빠르고 효율적인 검증 모델이 필요하다. 게다가, 검증을 위한 수단은 스케일링 가능해야 한다.
유효성 검증 외에도, 채굴과 같은 다른 블록체인 관련 동작은 효율성을 향상시키고 확장성을 용이하게 하는 솔루션으로부터 이익을 얻을 수 있다. 예컨대, 작업 증명 계산과 같은 채굴 관련 작업은 극히 프로세서 및 에너지 집약적이며, 전형적으로 PoW 작업을 수행하는 데 특화된 고가의 전용 기계에 의해 취급된다는 것은 잘 알려져 있다. 많은 사용자가 다음 블록을 채굴할 권리를 위해 효과적으로 경쟁할 수 있을 정도로 충분히 큰 규모로 이러한 장비를 운용할 수 없다. 다른 사용자들은 단순히 채굴자가 되기를 원하지 않을 수 있고, 대신에 다른 유형의 동작에 집중하기를 원할 수 있다. 따라서, 사용자들이 이러한 PoW 계산을 그 자신의 조직 내에 또는 외부에 있고 가능하게는 전 세계 어딘가에 위치한 다른 엔티티에게 무신뢰(trustless) 방식으로 아웃소싱할 수 있다면 유리할 것이다. 이것은 환경친화적인 에너지원을 제공할 수 있는 지리적 위치에서 광산 자원의 활용을 허용할 것이다.
이러한 개선된 솔루션이 이제 창안되었다.
본 개시내용의 실시예들은 개선된 블록체인 관련 방법들, 디바이스들 및 시스템들을 제공한다. 이러한 실시예들은 유효성 검증을 포함하고 및/또는 가능하게 하는 트랜잭션 출력(편의상 UTXO라고 칭해질 수 있음)과 연관된 데이터의 프로세싱 및/또는 저장을 식별 및/또는 할당하기 위한 솔루션들을 제공한다. 여기서, 약어 "UTXO"는 트랜잭션 출력, 가능하게는 지출되지 않는 것을 의미하는 것으로 해석되어야 하며, 이는 본 개시내용의 실시예들을 UTXO 기반의 블록체인 프로토콜들만을 통한 사용으로 제한하고자 하는 것은 아니며, 계정 기반의 모델들 또는 프로토콜들, 또는 임의의 다른 대안들은 본 개시내용의 범위 내에 속하도록 의도된다.
할당 및/또는 식별은 블록체인 트랜잭션의 전체 또는 적어도 일부로부터 도출된 데이터의 부분에 기초하며, 예컨대, 도출된 데이터의 부분은 미지출 트랜잭션 출력(예컨대, UTXO) 및/또는 미지출 트랜잭션 출력을 포함하는 트랜잭션(Tx)일 수 있는 트랜잭션 데이터를 포함한다. 데이터는, 트랜잭션의 적어도 일부가 블록체인 블록의 머클 경로에 포함된다는 것을 결정하기 위한 트랜잭션 데이터를 추가적으로 또는 대안적으로 포함할 수 있다.
게다가, 할당 및/또는 식별된 자원에서 홀딩될 수 있는 트랜잭션의 적어도 일부의 레코드는 트랜잭션 데이터, 상태 플래그, 검증 정보, 적어도 하나의 이전 레코드, 예컨대, 위치, 서명 및 인가 데이터에 대한 참조 중 적어도 하나를 포함할 수 있다.
레코드를 구성하는 것은 트랜잭션의 유효성 검증: 프로세싱 및/또는 저장 자원의 할당 및/또는 식별을 포함하는 본 명세서의 방법을 개선할 수 있다. 레코드 콘텐츠는 사용될 때 보안 및 복원력의 개선, 효율성, 또는 속도 및 자원 요건의 감소를 가능하게 하고, 상기 사용은 레코드가 관련된 트랜잭션의 검증을 포함한다.
일 형태의 단어 선택(wording)에 따르면, 이러한 실시예들은 블록체인 트랜잭션들 및/또는 부분적인 또는 전체 블록체인 블록들을 유효성 검증하거나 채굴하기 위한 솔루션들을 제공한다. 추가적인 또는 대안적인 형태의 단어 선택에 따르면, 그들은 블록체인 트랜잭션의 프로세싱에 대한 공지된 접근법의 효율성, 자원 요건, 속도 및/또는 복원성을 제어, 관리 및/또는 향상시키기 위한 보안 솔루션을 제공한다. 실시예들은 또한, 디지털 자원들의 전자 이전을 위한 개선된 방법들 및 기술 아키텍처들을 제공함으로써, 블록체인-구현 솔루션들의 확장성(scalability)을 가능하게 한다. 실시예들은 또한 분산된 및/또는 병렬화된 방식으로 블록체인 블록에 대한 작업 증명(Proof of-Work)의 계산/생성을 가능하게 하고 그리고/또는 제어하기 위한 방법들을 포함할 수 있다. 본 개시내용의 실시예들은 "분산된 채굴(Distributed Mining)"이라는 명칭의 섹션과 관련하여 본 명세서에 설명되고 예시되고 청구된 바와 같은 방법들 및 시스템들을 포함할 수 있다. 이러한 실시예들은 특정 복수(세트)의 트랜잭션들을 포함하는 블록체인 블록에 대한 작업 증명(PoW)의 생성에 대한 요청을 인가, 제어, 인가 설정, 또는 그렇지 않으면 공식화하기 위한 기법들을 포함할 수 있다. 바람직하게는, 세트는, 요청된 PoW 노력이 개시, 착수 및/또는 이행되어야 하는지 여부를 결정하기 위해 작업 증명 제공자가 사용할 수 있는 제어 데이터의 적어도 하나의 부분을 포함하는 트랜잭션을 포함한다. 이것은 "제어 트랜잭션(TX0)"이라 칭해질 수 있다. 요청은 또한, TX0가 복수의 트랜잭션에 포함된다고 PoW 제공자가 결정하는 데 사용할 수 있는 데이터를 포함할 수 있다. 바람직한 실시예에서, 이것은 머클 증명, 제어 트랜잭션(TX0) 및/또는 트랜잭션들의 세트를 나타내는 머클 트리의 루트 중 적어도 하나 이상을 포함할 수 있다. PoW 제공자는, 요청된 PoW 노력이 개시, 착수 및/또는 이행되어야 하는지 여부를 결정하기 위해, a) 제어 트랜잭션이 세트에 포함되고 그리고/또는 b) 사용될 수 있는 제어 데이터의 적어도 하나의 부분을 포함한다는 것을 보장하기 위해, 적어도 하나의 미리-지정된 규칙, 기준 또는 요건과 연동하여 요청을 프로세싱할 수 있다.
조합하여, PoW 요청자 및 PoW 제공자는 분산된 블록체인 채굴 노드를 제공할 수 있다. 실시예들은 블록체인 트랜잭션들을 유효성 검증 및/또는 채굴하는 데 수반되는 다양한 기능들 및 작업들을 분리, 분배 및 병렬화하는 능력을 제공한다.
본 개시내용의 실시예들은 개선된 블록체인 관련 방법들, 디바이스들 및 시스템들을 제공한다. 단어 선택의 한 형태에 따르면, 이러한 실시예들은 유효성 검증을 포함하고 그리고/또는 가능하게 하는 UTXO와 연관된 정보를 저장하는 작업을 할당하기 위한 솔루션들을 제공한다. 할당 후에, 정보, 예컨대, UTXO 및/또는 트랜잭션(Tx)의 적어도 일부는 분산될 수 있는 복수의 자원들 중 하나 이상에 저장될 수 있다.
부가적으로 또는 대안적으로, 자원들은 (i) UTXO 및/또는 연관된 트랜잭션의 유효성의 확인 및/또는 (ii) UTXO 및/또는 연관된 트랜잭션의 유효성이 결정되는 것을 가능하게 하는 데이터를 리트리브(retrieve)하기 위해 액세스될 수 있다.
부가적인 또는 대안적인 형태들의 단어 선택에 따르면, 실시예들은 블록체인 트랜잭션들의 프로세싱에 대한 알려진 접근법들의 효율성, 자원 요건들, 속도 및/또는 탄력성을 제어, 관리 및/또는 향상시키기 위한 보안 솔루션들을 제공한다. 실시예들은 또한 블록체인 구현 솔루션들의 확장성을 가능하게 하여, 디지털 자원들의 전자 이전을 위한 개선된 방법들 및 기술 아키텍처들을 제공한다.
본 개시내용의 실시예들은 다양한 장치에 의해 부분적으로 또는 전체적으로 구현될 수 있다. 이들은 하나 이상의 가상 머신들, 서버들, GPU 기반 컴퓨팅 자원들 또는 다중 프로세서 시스템들을 포함하는(그러나 이에 제한되지 않음) 하드웨어 및/또는 소프트웨어 기반 장치일 수 있다. 부가적으로 또는 대안적으로, 실시예들은 하나 이상의 디지털 지갑들을 포함할 수 있다. 그러나 중요한 것은 실시예들이 블록체인 관련 유효성 검증 작업들의 분산된 프로세싱을 위한 메커니즘들을 제공한다는 것이다. 분산된 프로세스들의 조정, 관리 및 제어는 관련된 하드웨어 및 소프트웨어 구성요소들 간의 상호작용에 대한 전체론적인 이해를 요구하고 이러한 분산된 솔루션들의 구현들이 기술적으로 사소한 것을 초과하여 확장되기 때문에 사실상 본질적으로 기술적인 것으로 알려져 있다.
실시예들은 각각의 UTXO 및/또는 트랜잭션과 연관된 정보를 저장 및 유효성 검증 중 적어도 하나를 행하는 자원의 효율적인 식별 및/또는 할당을 가능하게 하거나 용이하게 하는 솔루션들을 포함할 수 있다. 실시예들은 자원들에 걸친 정보의 분포를 밸런싱함으로써 본원에서 설명된 시스템들 및 방법들의 스케일링을 지원한다. 이는 자원들에 걸친 정보의 분산을 밸런싱할 수 있을 뿐만 아니라, 활용도(utilisation) 예컨대, 사용자들에 의한 정보의 액세스 가능성 등이 밸런싱될 수 있으며, 이는 병목 현상들을 억제할 수 있다.
실시예들은 다수의 프로세싱 자원들에 걸친 유효성 검증 작업들의 분산을 포함할 수 있으며, 우리는 편의상 "유효성 검증기(validator)들"로서 지칭할 것이다. 유효성 검증기는 단일 프로세싱 자원을 포함할 수 있거나, 집합적으로 유효성 검증 자원으로 고려될 수 있는 복수의 관련된 프로세싱 자원들을 포함할 수 있다.
일 예에서, 트랜잭션들의 블록이 유효성 검증되고 그리고/또는 다운로드될 필요가 있을 때, 그의 머클 트리는, 각각이 자체 루트를 갖고 블록 내 트랜잭션의 서브세트를 표현하는 트리 구조를 포함하는 하나 이상의 작은 세그먼트들로 분해될 수 있다. 그 후 이러한 세그먼트들은 상이한 유효성 검증기들에게 할당될 수 있다. 각각의 유효성 검증기는 자신에게 할당된 트랜잭션들의 서브세트에 대해 필요한 프로세싱 작업들을 수행하도록 동작한다.
유효성 검증기들로의 트리 세그먼트들의 할당은 다양한 방식들로 수행될 수 있지만, 일 유리한 실시예에 따르면, 매칭되는 이진 식별자를 가진 유효성 검증기(또는 유효성 검증기들의 그룹/클러스터)에 주어진 세그먼트를 할당하기 위해 랜덤으로 생성된 이중 해시 머클 루트의 선행 숫자들이 사용되는 이진 인덱싱 시스템이 사용될 수 있다. 이는 복수의 유효성 검증기들에 걸쳐 로드 밸런싱을 위한 간단하고 효율적이며 빠른 메커니즘을 제공한다.
UTXO와 연관된 정보를 프로세싱 및/또는 저장하기 위한 할당은 또한 블록체인으로부터 도출된 데이터의 일부에 기초하여 구현될 수 있다. 이 데이터를 사용하여, UTXO 정보를 프로세싱 및/또는 저장하기 위한 자원이 할당 및/또는 식별된다. 식별/할당에 사용되는 방법들은 블록체인으로부터 획득된 의사랜덤 데이터에 기초하기 때문에 복수의 자원들에 걸친 정보의 균일한 분산 및/또는 확장성을 지원한다. UTXO에 대한 정보가 필요한 경우, (i) UTXO 및/또는 연관된 트랜잭션의 유효성의 확인, (ii) UTXO 및/또는 연관된 트랜잭션의 유효성이 결정되는 것을 가능하게 하는 데이터, 및 (iii) 자원 또는 유효성 검증기가 수행한 유효성 검증에 대한 표시 및/또는 증명을 리트리브하기 위해 자원이 액세스될 수 있다.
하나 이상의 실시예들에서, 유효성 검증기는 자신이 프로세싱한 데이터 및/또는 자신이 수행한 작업과 관련된 데이터를 레코딩하는 리포지토리를 포함하거나 이 리포지토리에 대한 액세스를 가질 수 있다. 일 실시예에서, 이는 프로세싱을 위해 주어진 유효성 검증기에게 할당된 미지출 트랜잭션 출력(UTXO)들을 포함하는 데이터베이스를 포함할 수 있다. 기존 모델에서, 블록체인 상의 모든 UTXO들은 UTXO 풀이라는 데이터베이스 내 노드들에 의해 추적된다는 점을 상기한다.
각각의 전체 노드는 블록체인에 대한 UTXO 풀의 자체 완전한 사본을 갖는다. 본 개시내용에 따르면, (i) 각각의 유효성 검증기가 유효성 검증을 위해 자신에게 할당된 트랜잭션들의 UTXO들을 추적하는 자체 UTXO 풀을 가질 수 있고 그리고/또는 (ii) 노드와 같은 시스템은 블록체인으로부터 도출된 데이터의 일부에 기초하여 자원에 정보의 프로세싱 및/또는 저장을 할당할 수 있으며, 예컨대, 상기 데이터는 상기 트랜잭션 및/또는 UTXO로부터 도출되고 상기 정보는 UTXO의 유효성의 표시를 제공하고 예컨대, SPV 기술들을 사용하여 유효성이 결정되는 것을 가능하게 한다.
따라서, (블록체인) 트랜잭션, 예컨대, UTXO와 연관된 정보가 레코드로서 저장된다. 레코드는 할당된 자원에 저장될 수 있다. 레코드는 블록체인 블록에 블록체인 트랜잭션들의 적어도 일부 또는 전부를 포함할 수 있다. 레코드는, 적어도, 트랜잭션의 유효성을 판단하기 위한 정보를 제공하는데 사용될 수 있다. 레코드는 머클 증명 및/또는 간소화된 지불 검증(SPV)의 결정을 가능하게 하는 데이터를 포함할 수 있고, 예컨대, 레코드는 주어진 트랜잭션(들)이 주어진 블록에 있다는 것을 검증하는 데 사용될 수 있다.
이러한 분산된 저장 방법, 예컨대, 트랜잭션 또는 UTXO 저장, 자원, 예컨대, 풀의 식별 및 할당의 장점은 확장성, 데이터 무결성의 보장, 향상된 속도 및 효율, 및 SPV와 같은 다양한 유효성 검증 기법의 통합 및 지원을 포함하지만, 이에 제한되지 않는다. 실시예들은, 다양한 구성요소들이 블록체인 활동들 또는 애플리케이션들과 관련된 특정한 전용 기능들을 수행하는 분산된 시스템을 형성하기 위해 위에서 언급된 양상들 중 하나, 일부 또는 전부를 조합하여 포함할 수 있다.
본 개시내용의 실시예들의 이해를 보조하기 위해 그리고 그러한 실시예들이 어떻게 실행될 수 있는지를 보여주기 위하여, 단지 예로서 첨부 도면들에 대한 참조가 이루어진다.
도 1은 블록체인을 구현하기 위한 시스템의 개략적인 블록도이다.
도 2는 블록체인에 레코딩될 수 있는 트랜잭션들의 일부 예들을 개략적으로 예시한다.
도 3은 당업계에 알려진 일반적인 머클 트리 구조의 예시를 제공한다.
도 4는 당업계에 알려진 바와 같이 블록체인 트랜잭션들의 세트로부터 머클 루트가 어떻게 도출될 수 있는지를 예시한다.
도 5는 본 개시내용의 일 실시예에 따라 머클 트리가 서브세트들(또는 "세그먼트들")로 어떻게 분할될 수 있는지에 대한 예를 제공하며, 이 서브세트들은 그 후 개개의 유효성 검증 자원들에 할당될 수 있다.
도 6은 머클 트리가 논리적 세그먼트들로 어떻게 분할될 수 있는지에 대한 도 5의 대안적인 예를 예시한다.
도 7은 본 개시내용의 예시적인 실시예에 따른 분산된 유효성 검증 노드를 시스템 레벨에서 예시한다.
도 8은 본 개시내용의 예시적인 방법에 포함된 단계들을 고레벨에서 도시하는 흐름도이다.
도 9는 도 7의 예시적인 시스템을 보다 상세하게 도시하는 도면이다.
도 10은 트랜잭션, 예컨대, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)과 연관된 정보의 데이터베이스를 생성, 저장 또는 유지하는 자원의 식별 및/또는 할당을 포함하는 본 발명의 예에 대한 개략도이다.
도 11(a) 내지 도 11(d)는 할당된 자원을 식별하고 결정하는 데 사용되는 데이터 부분들로부터 도출된 값들의 예들을 표시하는 테이블들이다.
도 12는 노드, 중개 스위치 및 할당된 자원들을 포함하는 시스템의 개략도이며, 상기 자원들은 선택적인 유효성 검증기들을 갖는다.
도 13은 블록체인 블록의 머클 트리 내에 포지션을 갖는 2개의 트랜잭션의 개략적인 예시이고, 상기 트랜잭션은 할당된 자원을 갖고, 할당된 자원은 대응하는 레코드를 홀딩한다.
도 14는 본 개시내용의 "분산된 채굴" 양상 및 열거된 항목 세트 7과 관련하여 본 개시내용의 실시예의 고레벨 개요를 제공한다.
도 15는, 당업계에 알려진 바와 같이, 블록체인 네트워크 상의 노드에 의해 수행되는 유효성 검증 및 채굴 활동에 대한 통상의 접근법의 예시를 제공한다.
도 16은 본 개시내용의 실시예에 따라, 도 2의 통상의 작업들이 상이한 엔티티들에 걸쳐 어떻게 분산될 수 있는지에 대한 예시를 도시한다.
도 17은 본 개시내용의 실시예에 따른 PoW 요청자에 의해 수행되는 전형적인 작업들의 예를 도시한다.
도 18은 본 개시내용의 실시예에 따른 PoW 제공자에 의해 수행되는 전형적인 작업들의 예를 도시한다.
도 19는 본 개시내용의 예시적인 실시예에 따른 분산된 채굴 노드를 도시한다.
도 20은 도 9의 시스템이 하나의 가능한 구성요소를 형성하는, 본 개시내용의 실시예에 따른 더 넓은 시스템의 예시를 제공한다.
우리는 이제, 본 개시내용의 다양한 양상들의 예시적인 실시예들을 예시 목적으로, 제한 없이, 그리고 첨부된 도면들을 참조하여 설명한다.
본 개시내용은 블록체인-관련 시스템에 저장되거나 이에 의해 이용되는 데이터의 개선된 유효성 검증, 채굴, 저장, 검색, 프로세싱 및 분배를 가능하게 하는 실시예들을 제공한다. 이 시스템은 상이한 기능들을 제공하는 다양한 구성요소들을 포함할 수 있다. 이러한 기능들이 결합하여 개선된 블록체인 기반 솔루션을 형성하게 된다.
특히, 본 명세서에 개시 및 설명되고, 도 20에 도시된 실시예들은, 서로 조합하여 유리하게 사용될 수 있고 블록체인 관련 데이터의 분산된 프로세스에서 역할을 하는 다수의 구성요소(700, 19.1000, 1100 및/또는 2100)을 포함하는 시스템(2000)을 형성한다.
하나의 관점으로부터, 본 개시내용은 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)과 관련된 정보를 프로세싱 및/또는 저장하기 위한 수단이 개별적으로 구성 및/또는 실행될 수 있는 상이한 시스템들 및 방법들을 사용하여 구현될 수 있다는 것을 제공한다. 'UTXO 데이터베이스' 및 '블록 유효성 검증'의 예들이 아래에서 설명되며, 그 각각은 자원들 예컨대, 분산된 자원들을 작업들을 할당하며, 상기 작업들은 하나 이상의 트랜잭션들을 저장 및/또는 유효성 검증한다.
정보, 예컨대, 레코드가 할당되는 자원을 할당/식별하는 예들이 'UTXO 데이터베이스'와 관련하여 아래에 설명된다. 또한, 아래에서는 유효성 검증, 예컨대, '블록 유효성 검증'의 기법/관리, 및 트랜잭션의 유효성 검증의 예가 설명된다.
'할당' 및/또는 '유효성 검증'의 예들에 대해 추가적으로 또는 대안적으로, 적어도 하나의 예는 트랜잭션(Tx)의 적어도 일부의 레코드를 생성, 저장, 프로세싱, 액세스 및/또는 유지하는 것을 포함한다. 트랜잭션과 관련하여 저장된 정보, 즉, 레코드는 적어도 트랜잭션의 유효성 검증을 지원하는 데 사용될 수 있다. 예로서, 레코드는, 트랜잭션의 적어도 일부가 블록체인 블록의 머클 경로에 포함된다는 것을 결정하기 위한 트랜잭션 데이터를 포함할 수 있다.
본원의 교시를 고려하여, 실시예들의 특징들이 조합될 수 있다.
레코드
이 섹션에 개시된 특징들은, 도 20의 시스템(2000)에 도시된 바와 같은 레코드 저장 구성요소(2100)를 형성하기 위해 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
도 13은 블록체인(150)으로부터 도출된 2개의 트랜잭션을 도시한다. 본 명세서에서의 방법의 예는 복수의 자원들(1104) 중 하나에서 트랜잭션(Tx)의 적어도 일부의 레코드를 생성, 저장, 프로세싱, 액세스 및 유지하는 것 중 적어도 하나를 행한다. 각각의 트랜잭션에 대응하는 자원의 할당 및/또는 식별은, 예로서, 할당을 위해 해시-테이블 기법들을 사용하는 UTXO 데이터베이스와 관련하여 아래에서 설명된다. 자원(1104)은 데이터베이스를 구성하는 복수의 자원 중 하나일 수 있다. 도 13은 블록 헤더에 포함된 머클 루트를 결정하기 위해 블록 내의 트랜잭션의 세트를 사용하여 구축된 2개의 머클 트리를 도시한다. 트랜잭션들 Txn 및 Txn+1 각각은 적어도 도 4와 관련하여 아래에서 설명되는 바와 같이 개개의 머클 트리들의 일부이다.
레코드는, 트랜잭션, 예컨대, Txn 또는 Txn+1의 적어도 일부가 블록체인 블록(B)의 머클 경로에 포함된다는 것을 결정하기 위한 트랜잭션 데이터를 포함한다. 단독으로 또는 본 명세서에 교시된 예들과 조합하여, 레코드는 트랜잭션과 연관된 정보의 효율적이고 비용 효과적인 참조 및/또는 리트리벌(retrieval)을 가능하게 하는 데이터를 홀딩한다. 특히, 레코드에 홀딩된 정보는, 트랜잭션을 검증하고자 하는 제3자가, 연관된 레코드가 홀딩된 할당된 자원을 식별하고, 트랜잭션의 적어도 일부가 블록체인 블록(B)의 머클 경로에 포함된다는 것을 결정하기 위한 트랜잭션 데이터를 리트리브하는 것을 가능하게 한다. 예컨대, 트랜잭션은, 트랜잭션이 레코딩된 블록의 머클 루트를 결정한 머클 트리의 부분이라는 머클 증명을 레코드가 홀딩한다.
레코드는 트랜잭션과 연관된 데이터의 세트를 홀딩할 수 있다. 레코드는, 예컨대, 효율적인 저장을 위해 축약될 수 있고 및/또는 컨케터네이팅된 데이터를 포함할 수 있다. 레코드의 정보는 참조를 위해 구성될 수 있다. 예컨대, 레코드는 데이터 카탈로그를 포함할 수 있다. 데이터 카탈로그는, 트랜잭션과 연관된 정보의 선택적인 식별 및/또는 리트리벌을 위해, 구조화, 예컨대, 인덱싱될 수 있다. 데이터 카탈로그는 트랜잭션 데이터의 세트, 예컨대, 간소화된 지불 검증(SPV)을 가능하게 하는 머클 증명을 홀딩할 수 있다.
데이터 카탈로그를 포함할 수 있는 레코드는 자원 및/또는 유효성 검증기(1106)에 의해 관리될 수 있다. 레코드는 유효성 검증, 상태 표시, 서명 홀딩 및 트랜잭션 상태 중 적어도 하나에 대해 트랜잭션, 예컨대, UTXO와 관련하여 저장/UTXO와 연관될 수 있는 정보를 홀딩하도록 기능한다. 예로서, 레코드는 트랜잭션에 대한 조건들을 부과하기 위해 "OP_PUSH_TX"를 정의하는 스크립트의 적어도 일부를 포함할 수 있다. 따라서 레코드는 트랜잭션과 연관된 정보의 카탈로그 또는 라이브러리를 제공할 수 있다.
트랜잭션의 출력은 미지출 트랜잭션 출력(UTXO) 및/또는 블록체인 블록의 UTXO를 포함하는 트랜잭션(Tx)일 수 있다. 레코드는, UTXO 및 OP_PUSH_TX 레코드들에 의해 제안된 바와 같이, 트랜잭션의 출력으로 제한되지 않고, 트랜잭션(Tx)의 적어도 일부는 트랜잭션의 출력, 입력 및/또는 임의의 다른 파라미터들을 포함할 수 있다.
레코드는 임의의 적절한 유형의 디지털 저장 자원에 저장될 수 있다. 예컨대, 임의의 적합한 공지된 유형의 데이터베이스가 사용될 수 있다. 데이터베이스는 복수의 자원(1104) 및/또는 유효성 검증기(1106)를 포함할 수 있다. 레코드는 적어도 하나의 데이터 항목(D)을 포함하는 블록체인 트랜잭션(TX0)을 포함할 수 있다. 추가적으로 또는 대안적으로, 레코드는, 블록체인 트랜잭션(TX1)이 블록체인 블록(B)의 머클 경로에 포함되는지(또는 포함되지 않는지)를 확인하는 데 필요한 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 포함할 수 있다.
데이터 카탈로그일 수 있는 레코드는 데이터베이스에 저장되거나 복수의 데이터베이스에 걸쳐 확산될 수 있다. 데이터베이스들 자체는 복수의 자원(1104)에 걸쳐 분산될 수 있다. 레코드, 예컨대, 본 명세서에서 교시된 정보 및/또는 데이터의 저장은 노드, 예컨대, 메타넷 노드와 연관된 레코드의 효율적인 할당, 참조 및 액세스, 및 연관된 메타넷 프로토콜에 적용되고 그리고/또는 이를 지원할 수 있다.
다음의 출원들은 전체적으로 참조로 본 명세서에 통합된다:
- PCT/IB2019/059793 ― 노드의 인덱싱 및 구조화에 관련됨.
- PCT/IB2019/059795 ― 연상 기호(mnemonic)에 대한 카테고리의 매핑, 예컨대, 카테고리화를 지원함.
- PCT/IB2019/059791 ― 로케이팅 자원의 검색을 지원함.
- PCT/IB2019/059803 ― 사용자가 메타넷 노드(Metanet node)에 포함된 데이터의 부분, 예컨대, 트랜잭션을 검색/액세스/보기/기록/리트리브하는 것을 가능하게 하고, 메타넷 노드의 메타넷 인덱스에 기초하여 메타넷 노드를 식별할 수 있는 지갑, 블록체인 검색 시스템, 블록 탐색기 등을 지원함.
- PCT/IB2019/060226; PCT/IB2019/059807 ― 다수의 노드에 걸친 데이터의 분할을 지원함.
- PCT/IB2019/059808 ― 다수의 트랜잭션 입력 및 다수의 트랜잭션 출력, 특히 노드 속성에 걸친 레코드의 분할을 지원함.
- PCT/IB2019/059809 ― 2명 이상의 당사자 간에 아토믹 스왑(atomic swap), 예컨대, 조건부 교환이 설정됨.
데이터베이스 및/또는 레코드 및/또는 정보를 사용하는 것은 i) 데이터베이스; 및/또는 ii) 데이터베이스 내에 또는 데이터베이스와 연관하여 저장되는 데이터/레코드/정보를 생성, 유지, 제공, 업데이트, 저장, 액세스 또는 프로세싱을 포함할 수 있다. 데이터베이스는 하나 이상의 자원들 내에 또는 이에 걸쳐 저장되고, 데이터베이스 내에 저장된 데이터, 레코드, 또는 정보는 할당된 자원(1104)에서 프로세싱 및/또는 저장된다.
트랜잭션(Tx)의 적어도 일부가 블록체인 블록(B)의 머클 경로에 포함되는지를 결정하기 위한 트랜잭션 데이터를 포함하는 레코드에 대해 추가적으로 또는 대안적으로, 레코드는 트랜잭션(TX0)으로부터 블록체인 블록(B)에 대한 머클 트리의 루트까지의 머클 경로를 홀딩할 수 있다. 머클 경로는, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)에 포함됨을 설정 또는 검증하기 위해 필요한 적어도 최소 블록체인 트랜잭션을 포함할 수 있다. 본 명세서에서 레코드들은 트랜잭션을 유효성 검증하기 위한 효율적이고 효과적인 수단을 제공한다. 레코드가 홀딩되는 자원의 할당 및 식별 및/또는 본 명세서에서의 유효성 검증 기법과 결합하여, 트랜잭션 데이터를 관리 및/또는 사용하기 위한 개선된 시스템이 제공된다. 트랜잭션은 블록체인 블록으로부터 도출될 수 있다.
블록체인 트랜잭션(TX0)은, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 검증하기 위해 단독으로 또는 적어도 하나의 추가 블록체인 트랜잭션(TX1)과 조합하여 사용될 수 있다. 할당된 자원에 저장된 레코드 또는 정보의 일부일 수 있는 데이터 항목(D)은 트랜잭션 내의 스크립트와 연관하여 저장되는 것, 및 트랜잭션 내의 메타데이터로서 저장되는 것 중 적어도 하나가 행해질 수 있다. 전체적으로, 레코드는 트랜잭션을 유효성 검증하는 데 필요한 유효성 검증 데이터, 예컨대, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함한다.
블록체인 블록은 블록체인 원장 및/또는 오프-체인 저장 자원 상에 또는 그와 연관하여 저장될 수 있다.
레코드는 적어도 하나의 선행 트랜잭션의 이력, 즉, 적어도 하나의 선행 트랜잭션에 대한 트랜잭션 데이터를 포함할 수 있다. 이력은 미지출 트랜잭션 출력(UTXO)의 트랜잭션 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함할 수 있다. 적어도 하나의 선행 트랜잭션은 마지막 트랜잭션의 이전 트랜잭션일 수 있다.
레코드는 적어도 이전 트랜잭션을 프로세싱 및/또는 저장한 할당된 자원들의 이력을 더 포함할 수 있다. 레코드는 이전 트랜잭션을 홀딩하는 할당된 자원에 대한 링크를 포함할 수 있다. 레코드는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 복수의 선행 트랜잭션의 이력을 홀딩할 수 있다.
이러한 방식으로, 이력은 레코드를 사용하는 제3 당사자가 최신 트랜잭션을 리트리브하고, 필요한 경우, 추가 룩업 또는 검색을 수행하지 않고서 이전 트랜잭션을 효율적으로 식별하는 것을 가능하게 한다. 이력은 키 레코드, 데이터 또는 정보에 대한 백-카탈로그(back-catalogue) 또는 단축키(shortcuts)의 세트를 제공할 수 있다. 이력은: 복수의 선행 트랜잭션들의 머클 증명을 결정하기 위한 트랜잭션 데이터의 세트; 복수의 선행 트랜잭션들을 프로세싱 및/또는 저장한 개개의 할당된 자원들에 대한 링크 중 적어도 하나를 포함할 수 있다.
도 13을 참조하면, 제1 트랜잭션(Txn) 다음에 제2 트랜잭션(Txn+1)이 이어진다. 예에서, 제1 및 제2 트랜잭션은 상이한 할당된 자원(1104)에 저장된 연관된 레코드들을 갖지만, 이들 둘 모두는 동일한 할당된 자원에서 상이한 주소들에 저장될 수 있다. 제2 트랜잭션의 레코드는, 적어도, 할당된 자원 내 제1 트랜잭션의 주소에 대한 링크를 포함할 수 있다. 제2 트랜잭션의 레코드는 제1 트랜잭션의 트랜잭션 데이터의 레코드를 적어도 부분적으로 포함할 수 있다. 제2 트랜잭션의 레코드는 복수의 선행 트랜잭션에 대한 트랜잭션 데이터의 레코드를 포함할 수 있다.
레코드는 트랜잭션 데이터, 예컨대, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 입력 또는 각각의 입력의 플래그 및/또는 상태 표시를 포함할 수 있다. 예로서, 표시들은 '봄(seen)', '블록 내(in-block)' 및 '이중 지출(double-spend)' 중 하나일 수 있으며, 따라서 트랜잭션 데이터의 상태에 대한 효율적인 참조를 제공한다.
레코드는 임의의 수의 트랜잭션 데이터 정보 및/또는 보충 데이터, 예컨대, 유효성 검증 데이터를 홀딩할 수 있다. 레코드를 사용하는 것은 온-체인인 트랜잭션 데이터를 검색, 식별 및 프로세싱하는 것에 대한 대안을 제공한다. 레코드는 키 데이터를 통합하고 따라서 트랜잭션을 사용하고 블록체인과 블록체인 블록을 사용하여 연산을 수행하는 것의 계산 비용을 최소화할 수 있다. 레코드는: 상기 트랜잭션(Tx)이 레코딩된 블록의 머클 트리; 상기 트랜잭션(Tx)이 레코딩된 블록의 머클 루트; 상기 트랜잭션(Tx)의 해시로부터 상기 트랜잭션(Tx)이 레코딩된 블록의 머클 루트에 대한 값의 결정을 가능하게 하는 머클 경로; 머클 증명; 상기 블록체인 블록과 연관된 블록 식별자(block_ID); 상기 블록체인 블록 내의 복수의 블록체인 트랜잭션들 내의 트랜잭션(Tx)과 연관된 트랜잭션 식별자(TxID); 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 함수; 블록 식별자(block_ID)와 트랜잭션 식별자(TxID)의 컨케터네이션; 디지털 서명; 인증 코드; 및 트랜잭션 상태를 결정하기 위한 서명 메시지 중 적어도 하나를 더 포함할 수 있다.
레코드의 프로세싱 및/또는 저장을 위한 할당된 자원은 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하여 식별 및/또는 할당될 수 있고, 데이터의 부분이 도출된 상기 데이터는 트랜잭션 데이터, 예컨대, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함한다.
본 명세서의 예들 및 연관된 시스템들은 적어도 하나의 레코드를 포함하는 데이터베이스를 사용하는 것을 가능하게 하며, 적어도 하나의 레코드는: 적어도 하나의 데이터 항목(D)을 포함하는 블록체인 트랜잭션(TX0); 및 블록체인 트랜잭션(TX1)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 확인하는데 필요한 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 포함한다.
데이터베이스를 사용하는 것은 데이터베이스; 및/또는 데이터베이스 내에 또는 데이터베이스와 연관하여 저장된 데이터를 생성, 유지, 제공, 업데이트, 저장, 액세스 또는 프로세싱하는 것을 포함한다. 레코드는 트랜잭션(TX0)으로부터 블록체인 블록(B)에 대한 머클 트리의 루트까지의 머클 경로를 더 포함할 수 있다. 머클 경로는, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)에 포함됨을 설정 또는 검증하기 위해 필요한 적어도 최소 블록체인 트랜잭션을 포함할 수 있다.
본 명세서의 방법은, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 검증하기 위해 블록체인 트랜잭션(TX0) 및 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 사용할 수 있다.
상기 데이터 항목(D)은 트랜잭션 내의 스크립트와 연관하여 저장될 수 있고; 그리고/또는 트랜잭션 내에 메타데이터로서 저장될 수 있다.
트랜잭션은 트랜잭션 ID(TxID), 프로토콜 플래그, 일임 공개 키(DPK) 및 일임 트랜잭션 ID(DTxID) 중 적어도 하나를 더 포함할 수 있다.
위에 언급된 레코드들, 예컨대, 트랜잭션과 연관되고 트랜잭션으로부터 도출되거나 트랜잭션과 관련하는 정보 및 데이터는 아래에서 설명되는 방법들을 사용하여 할당된 자원에 저장될 수 있다.
UTXO 데이터베이스
본 섹션에 개시된 특징들은 도 20의 시스템(2000)에 도시된 바와 같이 자원 할당 구성요소(1100)를 형성하기 위해 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 도 10 내지 도 12는 데이터가 블록체인으로부터 도출되는 방법의 단계들, 자원들에 할당하기 위해 사용되는 테이블(1104) 및 방법을 구현하기 위한 시스템(1100)의 예시를 각각 도시한다. 시스템(1100)은 도 20의 더 큰 시스템(2000)의 서브-시스템 또는 구성요소를 형성할 수 있다.
본 개시내용의 이러한 양상에 따라, 데이터는 P2P(Peer-to-Peer) 네트워크(106) 및/또는 블록체인(150)으로부터 획득된다. s1000에서, 데이터는 예컨대, 블록체인(150)으로부터 하나 이상의 블록들을 요청 및 획득함으로써 획득되거나 리트리브될 수 있다. 리트리브하는 것은 복수의 블록체인 트랜잭션들을 포함하는 블록체인 블록의 적어도 일부를 다운로드하는 것을 포함할 수 있다. 데이터를 리트리브하거나 다른 방식으로 획득 예컨대, 블록체인 블록으로부터 데이터 획득, 복사 또는 판독하는 것은 데이터가 저장 및/또는 프로세스 이력을 설정하도록 요구될 때 요구되는데, 예컨대, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)과 관련된 트랜잭션 데이터가 블록(151)에 이미 레코딩되어 있다. 현재 멤풀 내 UTXO 또는 미래의 트랜잭션들 및 UTXO는 네트워크에 대한 연결을 통해 예컨대, 네트워크 상에서 브로드캐스트되는 트랜잭션들을 수신하는 노드(104)를 구현함으로써 수신될 수 있다.
따라서 전체적으로, 도 12의 시스템(1100)은 블록체인으로부터 도출된 데이터의 일부를 사용하고 키를 결정하고 상기 데이터와 연관된 정보 예컨대, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)과 연관된 정보를 저장할 대응하는 자원을 할당한다. 명확하게 말하면, 블록체인으로부터 도출된 데이터와 연관된 정보는 효율적이고 비용 효율적인 참조를 위해 자원에 저장된다. 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함할 수 있다. 해당 데이터의 일부는 키를 결정하는 데 사용되며, 이 키는 차례로, 상기 데이터에 대한 정보를 저장할 할당된 자원을 결정한다. 이러한 맥락에서, "키"라는 용어는 암호 키의 의미보다는 "인덱스"의 의미로 사용될 수 있다. "인덱스" 또는 "식별자"라는 용어는 "키"로 대체될 수 있다.
데이터의 일부가 도출되는 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함한다. s1002에서, 상기 데이터의 일부는 대응하는 자원(1104), 예컨대, 할당된 자원을 식별하거나 할당하는 데 사용된다. s1004에서, 자원(1104)은 정보의 데이터베이스를 생성, 저장 및 유지하는 것 중 적어도 하나를 행하도록 동작하며, 상기 정보는 UTXO 및/또는 트랜잭션과 연관된 데이터를 포함한다. 정보는 예컨대, SPV 기술을 사용하여 유효성이 결정되는 것을 가능하게 하는 것 그리고/또는 UTXO의 유효성의 표시를 포함할 수 있다. 데이터에 대한 정보는 예로서 데이터가 획득된 블록의 세부사항들 예컨대, 블록 ID, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 머클 경로 및/또는 트랜잭션 내의 모든 UTXO들의 유효성의 상태를 포함할 수 있다.
자원(1104)은 UTXO를 유효성 검증하기 위해 다른 사람들에 의해 사용될 수 있는 정보를 저장하고 그리고/또는 표시 예컨대, 유효성을 표시하는 플래그를 생성하기 위해 데이터를 프로세싱하도록 동작할 수 있다. 부가적으로 또는 대안적으로, 자원(1104)은 s1006에서 트랜잭션 또는 UTXO의 유효성에 대한 결정을 유효성 검증기(1106)에 위임할 수 있다. UTXO 및/또는 트랜잭션(Tx)의 적어도 일부를 저장 및/또는 프로세싱하는 것은: 할당된 자원에서 ― 예컨대, 자원(1104)은 정보를 능동적으로 관리하고 그 안의 각각의 UTXO와 연관된 데이터베이스를 유지하는데, 예컨대, 자원은 자체 관리될 수 있음 ― ; 그리고/또는 할당된 자원에 의해 ― 제어기로서 작용하고 정보를 저장 및/또는 프로세싱하기 위해 하위 자원을 관리하는 시스템(1100)으로서 역할을 함 ― ; 그리고/또는 할당된 자원과 관련하여 ― 예컨대, 자원(1104)은 도 12에 도시된 바와 같이 시스템(1100)의 일부로서 동작함 ― 구현될 수 있으며, 여기서 비제한적인 예로서 노드(104)는, 복수의 자원들 중에서 어떤 자원(1104)이 데이터베이스에서 UTXO 정보를 생성, 유지 및/또는 저장하는 작업에 할당되는지를 결정하도록 동작하는 스위치(1102), 예컨대, 라우터에 트랜잭션 및 UTXO 정보를 제공한다. 전반적으로 자원은 도 10 내 동작들 중 하나 이상을 구현 및 수행할 수 있다. 도 12는 도 10의 동작들을 개별적으로 수행하기 위한 구성요소들을 갖는 시스템(1100)을 예시한다. 일부 실시예들에서, 스위치(1102)는 멀티캐스트 송신들을 전송 및/또는 수신(IPv6)하도록 동작한다.
일 예에서, UTXO와 연관된 정보를 홀딩하는 작업은 시스템(1100) 내 자원들의 그룹으로부터 하나의 자원에 할당된다. 도 12는 예로써 8개의 자원들을 예시하며, 자원 각각은 그들 사이에서 UTXO로부터의 정보를 공유한다. 그러나 시스템은 임의의 수의 자원들을 홀딩할 수 있으며 스케일링 가능한데 예컨대, 시스템은 16개, 256개 또는 1024개의 자원들을 가질 수 있다. 따라서 각각의 자원에는 프로세스, 저장 및/또는 유지를 위한 일 범위의 UTXO가 할당된다.
미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)으로부터의 데이터의 일부는 리트리브 및/또는 수신되고 파싱될 수 있다. 파싱은 어떤 자원이 정보를 저장하는 작업에 할당되는지를 결정한다. 파싱은 자원(1104) 또는 스위치(1102)에 의해 수행될 수 있다. 노드(104), 스위치(1102) 및 자원(1104) 중 적어도 하나는 블록체인으로부터 데이터의 일부를 도출할 수 있다. 파싱이 노드(104) 또는 스위치(1102)에 의해 수행될 때, 정보는 할당된 자원으로 지향된다. 프로세싱 및/또는 저장 자원에 대한 식별 및/또는 할당은 중개자로서 기능하는 노드 및/또는 스위치에 의해 수행될 수 있다. 이들은 복수의 할당된 자원들에 연결되며, 상기 노드 또는 스위치는 어떤 자원이 어떤 UTXO/Tx를 관리(look after)하는지를 결정하는 다수의 자원(1104)의 관리자로서 동작한다. 파싱이 자원(1104)에 의해 수행될 때, 이는 상기 데이터를 프로세싱하고 그리고/또는 상기 데이터로부터 도출된 정보를 저장하거나, 상기 데이터와 연관된 데이터를 저장하거나, UTXO을 담당하지 않는 경우 어떠한 액션도 취하지 않는다.
자원(1104)의 할당이 결정되면, 예컨대, UTXO/Tx와 연관된 정보가 어디에 홀딩될 것인지가 결정되면, 자원(1104)은 s1004의 동작을 수행하고 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)과 연관된 정보를 생성, 저장 및/또는 유지한다. 자원(1104)은 수신된 데이터를 프로세싱하여 UTXO/Tx의 유효성을 결정(예컨대, s1006)하거나 해당 작업을 유효성 검증기(1106)에 위임할 수 있다. 자원(1104) 및/또는 유효성 검증기(1106)는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 적어도 부분적으로 유효성 검증할 수 있다.
데이터는 P2P(Peer-to-Peer) 네트워크(106) 및/또는 블록체인(150)으로부터 획득된다. 데이터는 추후에 데이터를 자원에 할당하는 노드(104) 및/또는 스위치(1102)에 의해 획득될 수 있거나, 데이터는 자원(1104) 자체에 의해 획득될 수 있으며, 이 자원(1104)은 그것이 할당된 UTXO/Tx의 범위에 따라 데이터를 검색 및 파싱한다. 획득된 데이터는 UTXO 식별자; UTXO 스크립트의 해시; 트랜잭션 식별(TXID) 중 적어도 하나를 포함할 수 있다.
획득된 데이터는 UTXO 또는 UTXO를 갖는 트랜잭션과 관련되며 대응하는 정보가 저장, 유지 또는 생성되는 자원을 식별 및/또는 할당하는 키(즉, 인덱스 또는 식별자)를 제공하도록 기능한다. 키는 데이터의 일부를 사용하여 직접적으로 ― 예컨대, 키는 할당된 자원을 결정함 ― , 또는 결과적인 해시가 할당된 자원을 결정하도록 데이터의 일부를 프로세싱 예컨대, 해싱함으로써 간접적으로 결정된다.
키는 어떤 자원(1104)이 키와 연관된 대응하는 정보를 홀딩할지를 결정하는 데 사용된다. 따라서 자원은 연관 어레이를 구현하는 데이터 구조 예컨대, 데이터베이스 또는 해시 테이블을 홀딩한다. 즉, UTXO 및/또는 트랜잭션과 관련된 데이터는 키를 결정하는 데 사용되고, 상기 키는 UTXO 및/또는 트랜잭션과 연관된 정보를 홀딩하는 자원을 결정하는 데 사용된다. 데이터 및 키는 자원이 할당되는 것을 가능하게 할 뿐만 아니라, 저장된 정보는 상기 정보를 룩업하고 액세스하기 위해 키를 사용함으로써 리트리브될 수 있다.
데이터, 키 및 결과적인 해시 중 적어도 하나는 알파뉴머릭 숫자; 및 이진수 중 적어도 하나를 포함한다. 이 숫자는 할당된 자원을 결정하는 데 사용된다.
예로써, 데이터의 일부는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO을 포함하는 트랜잭션(Tx)을 포함한다. 트랜잭션에 대한 입력은 지출되고 있는 UTXO를 포함하는 트랜잭션을 참조하는 트랜잭션 ID; 해당 트랜잭션에 대해 어떤 UTXO가 참조되는지를 식별하는 출력 인덱스 예컨대, Vout; UTXO을 잠금해제하기 위해 그에 대해 부과된 조건을 충족시키는 scriptSig; 및 시퀀스 번호를 포함한다.
UTXO의 잠재적 수신자는 상기 UTXO를 지출하는 트랜잭션이 컴파일되고 브로드캐스트되기 전에 UTXO를 유효성 검증할 필요가 있다. 유효성 검증을 위한 알려진 기술들은 느리고 자원이 많이 들고 컴퓨테이션적으로 비싸다. UTXO 및/또는 연관된 트랜잭션으로부터 데이터의 일부를 이용함으로써 UTXO를 유효성 검증하거나 그의 유효성 검증을 가능하게 하는 정보가 자원에 저장될 수 있다. UTXO에 고유한 데이터의 부분을 사용하여, 키가 결정될 수 있으며, 이는 후속적으로, 할당된 자원에 연관된 정보가 저장되고 후속적으로 그로부터 리트리브될 수 있는지를 결정한다.
비제한적인 예로서 트랜잭션 식별(TxID)을 사용하여, TxID는 일반적으로 그이 16진수 형식으로 참조되며 이진수로서 또한 표현될 수 있다. 도 11(a) 내지 (d)는 할당된 자원을 결정하기 위해 데이터의 일부가 어떻게 사용될 수 있는지를 표시하는 테이블들이다. TxID와 같은 데이터 일부는 직접 파싱되거나 프로세싱 예컨대, 해싱될 수 있다. 도 11(a)에서, TxID가 파싱되어서, 이진 형태의 TxID의 처음 3자리 숫자들이 키로서 선택되고, 자원은 이진 값에 따라 할당되는데 예컨대, 처음 3자리 숫자들로서 '101'을 가진 이진수를 갖는 TxID와 연관된 정보는 할당된 자원 '6'에의 저장/프로세싱을 위해 할당된다. 처음 3자리 이진수를 사용하는 것은 8개의 자원들 중 하나가 결정되는 것을 가능하게 하는 반면, 도 11(c)는 이진 형식의 TxID로부터 처음 4자리 숫자들을 취하여 16개의 자원들 간의 할당을 어떻게 지원하는지를 표시하며, 예컨대, 처음 4자리 숫자들로서 '1011'의 이진수로 시작하는 TxID와 연관된 정보는 할당된 자원 '12'에의 저장/프로세싱을 위해 할당된다. 대안적으로, 도 11(b) ― 여기서 단일 16진수 값은 자원에 매핑되는데 예컨대, 'c'는 '13'에 매핑됨 ― , 및 도 11(d) ― 여기서 일 범위의 16진수 값들이 자원에 할당되는데 예컨대, '76'으로 시작하는 TxID와 연관된 정보는 자원 '8'에 할당됨 ― 에 표시된 바와 같이 TxID의 16진수 값이 사용될 수 있다.
대안적으로, 데이터의 일부는 프로세싱 예컨대, 해싱되어 16진수 또는 이진수를 생성할 수 있어서, 데이터의 일부 및 자원(1104)을 식별/할당하기 위한 키의 후속 결정은 TxID로 제한되지 않는다.
트랜잭션 또는 그의 UTXO로부터 선택된 데이터 부분 또는 프로세싱된 값 예컨대, 해싱된 값은 의사랜덤이다. 자원에 대한 할당은 로드 밸런싱되는데 즉, 자원을 할당하기 위한 키를 결정하는 데 사용되는 데이터의 부분은 의사랜덤이고 복수의 자원들 간에 프로세싱 및/또는 저장을 분산한다. 따라서 트랜잭션/UTXO와 관련된 정보는 복수의 자원들에 걸쳐 분산된다는 결론에 이르게 된다. 자원들 간의 할당의 밸런싱은 다른 프로세싱 자원들이 과부하되는 동안 일부 프로세싱 자원들이 유휴 상태에 놓이는 위험 및 이에 따라 성능의 저하 또는 심지어 장애의 위험을 최소화한다. 시스템(1100)의 탄력성, 성능 및/또는 효율성이 개선된다.
따라서 데이터 및 데이터의 일부는 (i) 할당된 자원을 결정하고 그 후 (ii) 자원 및/또는 예컨대, 자원 내의 데이터베이스 내의 데이터와 연관된 정보를 식별하기 위한 참조를 제공하는 데 사용될 수 있다.
따라서, 데이터의 일부는 블록체인으로부터 도출되고 키, 및 상기 데이터와 연관된 정보 즉, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)과 연관된 정보를 저장할 대응하는 자원을 결정한다는 결론에 이르게 된다.
UTXO의 유효성의 검증을 원하는 행위자는 UTXO 및/또는 상기 UTXO를 홀딩하는 트랜잭션의 일부를 사용하여 UTXO 및/또는 트랜잭션의 유효성을 결정하는 데 사용할 수 있는 자원 홀딩 정보를 식별할 수 있다. 정보는 UTXO가 잠겨 있는지 또는 잠금 해제되었는지 예컨대, 유효하지 않은지 또는 유효한지 예컨대, 후속 트랜잭션에 포함하기에 적합한지와 연관되고 이를 표시하는 플래그 또는 마커를 포함할 수 있다. 정보는 부가적으로 또는 대안적으로 UTXO 및/또는 상기 UTXO를 홀딩하는 트랜잭션의 레코드를 포함할 수 있으며, 이는 행위자가 UTXO를 효율적으로 그리고 독립적으로 유효성 검증하는 것을 가능하게 한다.
레코드들은 적어도 부분적으로, 상기 트랜잭션(Tx)이 레코딩되는 블록의 머클 트리; 상기 트랜잭션(Tx)이 레코딩되는 블록의 머클 루트 상기 트랜잭션(Tx)의 해시로부터, 상기 트랜잭션(Tx)이 레코딩되는 블록에 대한 머클 루트에 대한 값의 결정을 가능하게 하는 머클 경로; 머클 증명; 블록체인 블록과 연관된 블록 식별자(block_ID); 블록체인 블록 내의 복수의 블록체인 트랜잭션들 내 트랜잭션(Tx)과 연관된 트랜잭션 식별자(TxID); 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 함수; 및 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 컨케터네이션 중 적어도 하나를 포함할 수 있다.
자원은 UTXO의 유효성을 결정하는 데 요구되는 정보 및 레코드들을 포함할 수 있다. 부가적으로 또는 대안적으로, 자원은 자체적으로 또는 유효성 검증기(1106)에 의한 유효성 검증(s1006)을 통해, UTXO를 유효성 검증하고 그리고/또는 그의 유효성 검증을 지원하는 레코드들을 생성할 수 있다. 자원(1104) 및/또는 유효성 검증기(1106)는: 상기 UTXO를 유효성 검증 및/또는 검증하고; 상기 UTXO에 대해 SPV(Simplified Payment Verification) 프로세스의 적어도 일부를 수행하고; 주어진 블록체인 트랜잭션(Tx)이 블록체인 블록 내에 포함되는지를 확인하고; 블록체인 트랜잭션들 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자(TxID)와 매칭되는지를 체크하고; 그리고 상기 UTXO에 대한 머클 증명을 결정하는 것 중 적어도 하나를 행할 수 있다.
UTXO/트랜잭션으로부터 할당된 자원(1104)을 식별하기 위한 수단을 제공하고, 상기 자원에서 상기 UTXO를 유효성 검증하는 데 요구되는 정보를 저장함으로써, 효율적이고 스케일링 가능한, UTXO를 유효성 검증하기 위한 대안적인 방법이 제공된다. 노드는 더 이상 블록체인의 완전한 사본을 홀딩할 필요가 없고 트랜잭션들 예컨대, SPV 기반 교환들 및 지갑들을 지원하기 위해 부가적인 정보가 더 이상 요구되지 않으며 시스템(1100) 및 그 내부의 자원들(1104)은 신속하고 스케일링 가능한 지원을 제공한다.
전반적으로, 시스템(1100)은 각각이 블록체인 블록의 복수의 블록체인 트랜잭션들(TX들) 내 트랜잭션(Tx)과 연관된 복수의 미지출 트랜잭션 출력들(UTXO)과 연관된 정보 및/또는 레코드들을 생성, 저장 및/또는 유지하기 위한 UTXO 리포지토리를 제공하도록 동작하는 자원(1104)을 포함한다. 자원은 상기 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 일부를 사용함으로써 정보 및/또는 레코드들을 레코딩, 검색 및/또는 프로세싱할 수 있으며, 여기서 데이터의 일부가 도출되는 상기 데이터는 미지출 트랜잭션 출력(UXTO) 및/또는 UXTO를 포함하는 트랜잭션(Tx)을 포함한다.
시스템(1100)은 트랜잭션에 포함하기 위해 미지출 트랜잭션 출력(UTXO)을 수신 및/또는 프로세싱하기 위한 노드(104) 및/또는 스위치(1102)를 포함할 수 있다. 노드 및/또는 스위치는 자원을 지원하고 복수의 자원들 중 하나의 자원에 대한 할당을 결정할 수 있다. 할당된 자원은 그 후 UTXO에 대한 정보 및/또는 레코드들과 같은 유효성 검증 데이터를 홀딩한다.
디지털 자산의 이전 또는 지불의 일부로서 트랜잭션에 포함하기 위해 UTXO를 수신한 후, 유효성 검증 정보 및/또는 레코드들은 행위자에 의해 할당된 자원으로부터 요청 및/또는 획득될 수 있다.
행위자가 할당된 자원으로부터의 정보 및/또는 레코드들에 액세스하면, 해당 행위자는 UTXO 및/또는 상기 UTXO를 포함된 트랜잭션(Tx)을 유효성 검증하는 것; 그리고/또는 UTXO 및/또는 상기 UTXO를 포함하는 트랜잭션(Tx)의 유효성을 결정하는 것 중 적어도 하나를 행할 수 있다. 자원(1104), 유효성 검증기(1106) 및 행위자 중 적어도 하나에 의한 유효성 검증은: 적어도 하나의 블록체인 트랜잭션을 유효성 검증 및/또는 검증하는 것; 그리고/또는 ii) SPV(Simplified Payment Verification) 프로세스를 수행하는 것; 그리고/또는 iii) 주어진 블록체인 트랜잭션(Tx)이 블록체인 블록 내에 포함되는지를 확인하는 것; 그리고/또는 iii) 블록체인 트랜잭션들 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자(TxID)와 매칭되는지를 체크하는 것을 포함할 수 있다.
그 후, UTXO의 유효성 검증 이후, 상기 행위자 또는 추가 행위자는 입력으로서 상기 UTXO를 갖는 트랜잭션(Tx)을 준비 및/또는 송신할 수 있다.
노드(104)는 복수의 미지출 트랜잭션 출력들(UTXO)을 레코딩, 검색 및/또는 프로세싱하기 위한 UTXO 자원을 생성하고, 저장하고 및 유지하는 것 중 적어도 하나를 행하도록 구성될 수 있으며, 여기서 상기 노드는 프로세싱 및/또는 저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 일부를 프로세싱한다. 데이터의 일부가 도출되는 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO을 포함하는 트랜잭션(Tx)을 포함한다.
블록 유효성 검증
전통적으로 블록체인 네트워크 내 노드들은 블록체인 상의 모든 트랜잭션들의 글로벌 원장을 유지한다. 글로벌 원장은 분산 원장이며 각각의 노드는 글로벌 원장의 완전한 또는 부분적인 사본을 저장할 수 있다. 글로벌 원장에 영향을 미치는 노드에 의한 트랜잭션들은 다른 노드에 의해 검증되어서, 글로벌 원장의 유효성 및 무결성이 유지된다. 비트코인 프로토콜을 사용하는 것과 같은 블록체인 네트워크를 구현하고 동작시키는 세부사항들은 당업자들에 의해 이해될 것이다.
각각의 트랜잭션은 통상적으로 하나 이상의 입력들 및 하나 이상의 출력들을 갖는다. 입력들 및 출력들에 매립되는 스크립트들은 트랜잭션들의 출력이 어떻게 그리고 누구에 의해 액세스될 수 있는지를 지정한다. 트랜잭션의 출력은 트랜잭션의 결과로서 가치의 제어가 이전되는 주소일 수 있다. 그 후 해당 가치는 미지출 트랜잭션 출력(UTXO)으로 해당 출력 주소와 연관된다. 그 후 후속 트랜잭션은 해당 가치의 제어 또는 소유권을 획득하기 위해 입력으로서 해당 주소를 참조할 수 있다.
위에서 언급된 바와 같이, 우리의 예로서 비트코인 네트워크 및 프로토콜을 사용하면, 채굴 노드들은 블록체인에서 다음 블록을 생성하기 위해 경쟁한다. 블록을 조립하기 위해 채굴자는 확인되지 않은 트랜잭션들의 풀("멤풀(mempool)")로부터 트랜잭션들의 세트로서 블록을 구축한다. 그 후, 채굴자는 자신이 조립한 블록과 관련하여 작업 증명(PoW) 퍼즐을 완성하려고 시도한다. 임의의 다른 채굴자가 자신의 블록을 생성하고 그의 PoW를 완료하는 데 성공했다는 알림을 수신하기 전에 PoW를 완료하는 경우, 채굴자는 그의 블록을 네트워크 상의 피어 노드들에 전송함으로써 해당 블록을 전파한다. 이러한 노드들은 블록을 유효성 검증하고 그 후 이를 네트워크 내 다른 노드들로 전송한다. 채굴자가 자신의 PoW를 마무리하기 전에 다른 블록이 완료되었다는 알림을 수신하는 경우, 채굴자는 그의 노력들을 포기하고 다음 블록을 구축하려고 시도하기 시작한다.
따라서 블록들의 빠른 전파는 채굴자들 및 유효성 검증 노드들을 대신하여 낭비되는 노력(및 연관된 에너지)을 회피하는 데 도움이 된다. 더 빠른 유효성 검증과 그에 따른 블록들의 전파를 가능하게 하는 솔루션을 제공함으로써, 본 발명은 향상된 네트워크 성능을 제공한다. 이는 요구되는 컴퓨팅 시간 및 노력의 양을 감소시키고 이에 따라 네트워크에 의해 요구되는 에너지의 양을 감소시킨다. 이는 자원 및 시간의 관점에서 보다 효율적인 네트워크를 제공한다. 이는 궁극적으로 개선된 (블록체인) 네트워크를 제공한다.
비트코인 네트워크와 같은 현재 블록체인의 구현들에서, 블록을 수신하는 각각의 노드는 블록을 다른 노드들로 전송하기 전에 먼저 블록을 유효성 검증한다. 블록을 유효성 검증하는 데 걸리는 시간은 네트워크를 통한 블록의 전파를 늦춘다. 기존 프로토콜들의 혁신들을 포함하여 블록체인의 일부 구현들은 네트워크 내 각각의 노드 보다는, 노드들의 서브세트에 의해서만 블록 유효성 검증을 제공할 수 있지만; 대부분의 노드들의 블록 유효성 검증은 유효하지 않은 블록들이 네트워크를 통해 전파되는 것을 방지하기 위한 임의의 블록체인 구현의 특징일 가능성이 여전히 높다는 것에 주의한다.
블록을 유효성 검증하는 것은 블록이 적용 가능한 블록체인 프로토콜에 의해 세팅된 규정된 기준들을 충족하는지를 확인하는 것을 수반한다. 비트코인 프로토콜에 적용 가능한 예시적인 기준들은 CheckBlock 및 CheckBlockHeader와 같은 기능들을 포함할 수 있다. 블록 자체가 규정된 기준들을 준수하는지를 확인하는 것 외에도, 블록 내의 각각의 트랜잭션은 트랜잭션 레벨 기준들의 준수에 대해 평가될 수 있다. 예로서, 비트코인 프로토콜에 적용되는 트랜잭션 레벨 기준들은 AcceptToMemoryPool, CheckTransaction 및 CheckInputs 기능들을 포함할 수 있다.
비트코인 프로토콜에 기초한 블록 레벨 기준들의 구체적인 예들은 다음을 포함할 수 있다:
· 블록 데이터 구조는 구문적으로 유효하다.
· 블록 헤더 해시가 타겟 난이도보다 낮다(작업 증명을 시행함).
· 블록 타임스탬프가 향후 2시간 미만이다(시간 오류들을 허용함).
· 블록 크기가 수락 가능한 제한들 내에 있다.
· 제1 트랜잭션(그리고 제1 트랜잭션만)이 코인베이스 생성 트랜잭션이다.
· 블록 내의 모든 트랜잭션들은 유효하다.
비트코인 프로토콜에 기초한 트랜잭션 레벨 기준들의 구체적인 예들은 다음을 포함할 수 있다:
· 트랜잭션의 구문 및 데이터 구조가 올바라야 한다.
· 입력들 또는 출력들의 목록 어느 것도 비어 있지 않다.
· 각각의 출력 값 x 뿐만 아니라 모든 출력들의 총계는 0 < x < 21·106 범위 내에 있어야 한다.
· 입력들 중 어느 것도 null 해시를 갖지 않는다.
· nLockTime은 INT_MAX 이하이다.
· 트랜잭션 크기(바이트 단위)가 최소치 이상이고 최대치 미만이다.
· 서명 동작들의 수는 서명 동작 제한 미만이다.
· 잠금 해제 스크립트 scriptSig는 스택 상의 숫자들만을 푸시할 수 있고 잠금 스크립트 scriptPubkey는 isStandard 형식들과 매칭되어야 한다.
· 각각의 입력에 대해, 참조된 출력이 풀 내 임의의 다른 트랜잭션에 존재하는 경우, 트랜잭션이 거부되어야 한다.
· 각각의 입력에 대해, 참조된 출력 트랜잭션이 코인베이스 출력인 경우, 이는 적어도 COINBASE_MATURITY(100) 확인들을 가져야 한다.
· 각각의 입력에 대해, 참조된 출력이 존재해야 하며 이미 지출될 수 없다.
· 입력 값들을 가져오기 위해 참조된 출력 트랜잭션들을 사용하여, 각각의 입력 값뿐만 아니라 합이 허용되는 범위의 값들 x 즉, 0 < x < 21·106에 있는지를 체크한다.
· 풀 또는 메인 브랜치 내 블록의 매칭되는 트랜잭션이 존재해야 한다.
· 입력 값들의 합은 출력 값들의 합 이상이어야 한다.
· 빈 블록에 대한 엔트리를 획득하기 위해 트랜잭션 수수료가 충분해야 한다.
· 각각의 입력에 대한 잠금 해제 스크립트들은 대응하는 출력 잠금 스크립트들에 대해 유효성 검증되어야 한다.
이러한 예시적인 기준들은 예시적인 것이며, 규정된 기준들이 상이한 프로토콜들에서 상이할 수 있고 주어진 프로토콜에 대해 변경이 가해진 경우 프로토콜에 대해 시간이 지남에 따라 변경될 수 있으므로, 모든 실시예들에 충분하거나 필요한 것으로 해석되어서는 안 된다. 일반적으로 트랜잭션 레벨 유효성 검증 기준들은 적용 가능한 블록체인 프로토콜 하에서 트랜잭션이 유효한 것으로 간주되어야 하는 규정된 특성들이다. 마찬가지로, 블록 레벨 유효성 검증 기준들은 적용 가능한 블록체인 프로토콜 하에서 블록이 유효한 것으로 간주되어야 하는 규정된 특성들이다.
본 출원에 따르면, 네트워크 내 블록들의 더 빠른 전파를 용이하게 하기 위해 블록 유효성 검증의 속도를 높이는 방법들 및 디바이스들이 설명된다.
일 양상에서, 본 출원은 병렬 및/또는 분산된 방식으로 개별 트랜잭션들의 적어도 트랜잭션 레벨 유효성 검증을 수행함으로써 블록들을 유효성 검증하도록 구조화된 노드를 설명한다. 그러나 특정 트랜잭션 레벨 기준들은 병렬로 평가되지 않을 수 있다. 예컨대, UTXO의 고유성은 직렬 기반으로 평가될 수 있다. 그러한 경우, 본 개시내용의 분산된 유효성 검증 노드는 나머지 트랜잭션 레벨 기준들의 유효성 검증을 위해 둘 이상의 병렬 프로세서들의 세트 사이에 트랜잭션들의 세트들을 할당하기 전에 트랜잭션들의 참조된 입력(UTXO)들의 고유성을 확인하도록 구조화되거나 배열될 수 있다.
특히, 본 개시내용의 실시예들은 트리 구조로 저장되는 관련 또는 연관된 데이터 레코드들을 프로세싱하기 위한 개선된 검증 및 보안 솔루션들을 제공한다. 트리는 이진 트리 또는 메쉬 구조일 수 있다. 당업계에 알려진 바와 같이, 트리 구조는 더 작은 트리들(이는 본원에서 트리 "세그먼트들", "서브세트들" 또는 "부분들"로서 지칭될 수 있음)로 분해될 수 있으며, 여기서 각각의 세그먼트는 전체 트리에서 데이터 레코드의 서브세트를 포함하고 자체 루트를 갖는다. 유리하게도, 본 개시내용의 실시예들은 이 특징을 활용하여 다수의 프로세싱 자원들에 걸쳐 관련된 데이터 레코드들의 프로세싱의 분산 및 병렬화하기 위한 방법들 및 시스템들을 제공한다.
우리의 예시적인 실시예에서, 복수의 데이터 레코드들은 머클 트리 내에서 노드들을 형성하기 때문에 관련된 블록체인 트랜잭션들을 포함한다. 머클 트리는 블록체인 프로토콜에 따라 트랜잭션들의 블록의 헤더에 포함되었거나 포함될 수 있는 루트를 가져서, 루트는 트리 내의 모든 각각의 리프(즉, 트랜잭션 ID(TxID))를 따라갈 수 있는 경로를 제공한다. 우리의 예에서, 블록체인 프로토콜은 비트코인 프로토콜이거나 비트코인 프로토콜로부터 도출되었지만, 다른 프로토콜들이 본 개시내용의 범위에 속한다.
일 예에서, 복수의 트랜잭션들의 프로세싱은 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 유효성 검증하는 것을 포함한다. 이러한 예들은 비제한적이며 본원에서 개시된 기술들은 비-블록체인 관련 데이터와 관련하여 그리고/또는 유효성 검증 이외의 다른 프로세스들과 관련하여 활용될 수 있다. 예컨대, 실시예들은 머클 트리에 표현될 수 있는 임의의 유형의 데이터 레코드를 저장, 구조화, 검색 및/또는 유지하는 데 사용될 수 있다. 데이터베이스들 및 다른 알려진 저장 자원들은 블록체인 원장뿐만 아니라, 또는 그 대신 활용될 수 있다.
다른 예시적 실시예에서 복수의 트랜잭션들의 프로세싱은 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 다운로드하는 것을 포함한다.
완전성을 위해 그리고 도 3 및 도 4를 참조하여, 이제 머클 트리들 및 블록체인 트랜잭션들의 블록을 표현하는 데 있어 그의 사용에 관한 논의를 제공한다.
머클 트리들
도 3을 참조하면, 머클 트리들은 데이터의 수집의 안전한 검증을 가능하게 하는 계층적 데이터 구조들이다. 머클 트리에서, 트리 내 각각의 노드에는 인덱스 쌍 (i,j)이 주어지며 N(i,j)로서 표현된다. 인덱스들 i,j은 단순히 트리의 특정 포지션과 관련된 수치 라벨이다.
머클 트리의 특징은 그의 노드들 각각의 구조가 다음 방정식들에 의해 통제된다는 것이다:
여기서 H는 암호화 해시 함수이다.
이러한 방정식들에 따라 구성된 이진 머클 트리의 예가 도 3에 도시된다. 도시된 바와 같이, 우리는 i=j 경우가 리프 노드에 대응한다는 것을 알 수 있으며, 이는 단순히 데이터 Di의 대응하는 i번째 패킷들의 해시이다. i≠j 경우는 하나의 부모(머클 루트)가 발견될 때까지 자식 노드들을 재귀적으로 해싱 및 컨케터네이팅함으로써 생성되는 내부 또는 부모 노드에 대응한다.
예컨대, 노드 N(0,3)은 다음과 같이 4개의 데이터 패킷 으로 구성된다:
트리 깊이 M은 트리 내 가장 낮은 노드 레벨로서 정의되며, 노드의 깊이 m은 노드가 존재하는 레벨이다. 예컨대, mroot=0 및 mleaf=M 이고, 여기서 도 3에서 M=3이다.
비트코인 및 일부 다른 블록체인들의 머클 트리의 경우, 해시 함수는 표준 해시 함수 SHA-256을 두 번 적용하는 이중 SHA256 즉: H(x)=SHA256(SHA256(x))이다.
머클 트리의 주요 기능은 일부 데이터 패킷 Di가 N개의 데이터 패킷들의 목록 또는 세트 의 멤버인지 검증하는 것이다. 검증을 위한 메커니즘은 머클 증명으로서 알려져 있으며 주어진 데이터 패킷 Di 및 머클 루트 R에 대한 머클 경로로서 알려진 해시들의 세트를 획득하는 것을 수반한다. 데이터 패킷에 대한 머클 증명은 단순히, '인증 증명'으로서 또한 지칭되는 반복적인 해싱 및 컨케터네이션을 통해 루트 R을 재구성하는 데 요구되는 해시들의 최소 목록이다.
모든 패킷들 및 그의 순서가 증명자에게 알려진 경우, 존재의 증명이 쉽게(trivially) 수행될 수 있다. 그러나 이를 위해서는 머클 증명보다 훨씬 더 큰 저장 오버헤드를 요구할 뿐만 아니라, 전체 데이터 세트가 증명자에게 이용 가능할 것을 요구한다.
머클 증명의 사용과 전체 목록의 사용 간의 비교는 아래 표에 도시되며, 여기서 우리는 이진 머클 트리를 사용하였고 데이터 블록들의 수 N이 정수 거듭제곱 2와 정확히 동일하다고 가정했다.
다음 표는 머클 트리 내 리프 노드들의 수와 머클 증명에 대해 요구되는 해시들(또는 머클 증명)의 수 사이의 관계를 도시한다.
데이터 패킷들의 수가 리프 노드들의 수와 동일한 이 단순화된 시나리오에서, 우리는 머클 증명을 컴퓨팅하는 데 요구되는 해시 값들의 수가 대수적으로 스케일링된다는 것을 발견하였다. 분명히, N개의 데이터 해시들을 저장하고 명시적인 증명을 컴퓨팅하는 것보다 log2N개의 해시들을 수반하는 머클 증명을 컴퓨팅하는 것이 훨씬 더 효율적이고 실용적이다.
머클 루트 R이 주어지면, 우리는 데이터 블록 D0이 R에 의해 표현되는 순서화된 목록 에 속함을 증명하려는 경우, 우리는 다음과 같이 머클 증명을 수행할 수 있다:
i. 신뢰할 수 있는 소스로부터 머클 루트 R을 획득한다.
ii. 소스로부터 머클 증명 Γ를 획득한다. 이 경우 Γ는 해시들의 세트: 이다.
iii. 다음과 같이 D1 및 Γ를 사용하여 머클 증명을 컴퓨팅한다:
a. 데이터 블록을 해싱하여 다음을 획득한다:
b. N(1,1)과 해시를 컨케터네이팅하여 다음을 획득한다:
c. N(2,3)과 해시를 컨케터네이팅하여 다음을 획득한다:
d. N(4,7)과 해시를 컨케터네이팅하여 루트를 획득한다:
e. 계산된 루트 을 (i)에서 획득된 루트 R과 비교한다:
1. R'=R인 경우, 트리 내 D0이 존재 및 이에 따른 데이터 세트 D가 확인된다.
2. R'≠R인 경우, 증명이 실패하고 D0이 D의 멤버인지를 확인되지 않는다.
이는 머클 트리 및 그의 루트에 의해 표현되는 데이터 세트의 일부로서 일부 데이터에 대한 존재 증명을 제공하는 효율적인 메커니즘이다. 예컨대, 데이터 D0이 블록체인 트랜잭션에 대응하고 루트 R이 블록 헤더의 일부로서 공개적으로 사용 가능한 경우, 우리는 트랜잭션이 해당 블록에 포함되었음을 신속하게 증명할 수 있다.
SPV
SPV(Simplified Payment Verification)는 Satoshi Nakamoto의 2008년 백서 "Bitcoin: A Peer-to-Peer Electronic Cash System"의 섹션 8에 처음 제시된 바와 같이 머클 트리의 이러한 특징들을 활용한다. 앨리스와 밥 사이의 SPV 기반 암호화폐 교환에서, 두 당사자들은 동일한 유형의 SPV 지갑을 사용한다. SPV 지갑은 사용자의 개인 및 공개 키들, 미지출 트랜잭션들 및 블록들이 블록체인 상에 로케이팅될 수 있도록 블록들을 고유하게 식별하는 블록 헤더를 저장한다. 설명된 바와 같이, 블록 헤더는 전체 블록 콘텐츠들의 고유한 요약 또는 핑거프린트를 제공하는 데이터의 필드들뿐만 아니라 해당 블록에 대한 머클 루트를 제공하는 필드를 포함한다. 머클 루트는 단일 해시가 최종적으로 도달될 때까지 블록으로부터 트랜잭션 ID(TxID)들의 쌍들을 반복적으로 함께 해싱함으로써 생성된다. 머클 루트는 지갑들 및 판매자 노드들과 같은 사용자들이 전체 블록체인을 다운로드하지 않고도 특정 트랜잭션을 로컬로 검증하도록 허용하기 때문에, 트랜잭션이 블록의 일부임을 검증하는 효율적이고 안전한 메커니즘을 제공한다. 이는 전체 노드를 실행할 필요가 없거나 실행을 원하지 않지만 단순히 특정 트랜잭션이 특정 블록에 있다는 로컬화된 체크를 수행할 필요가 있는 사용자들 예컨대, 당사자들 이를테면, 그들 사이에서 이전을 수행하고자 하는 판매자들 및 고객들에게 유리하다. 요약하면, SPV는 이러한 사용자가 전체 블록체인을 다운로드 및 저장할 필요 없이도 특정 트랜잭션이 특정 블록체인 블록에 포함되는지를 체크(즉, 검증)하기 위해 주어진 루트를 가진 머클 트리를 검색하는 것을 가능하게 한다.
따라서 SPV 지갑은 적어도, 다른 형태의 지갑에 따라 블록체인의 전체 체크를 수행하기 보다는, 트랜잭션이 검증되었는지를 확인하는 것만 필요하기 때문에(따라서 "간소화된 지불 검증"이라는 이름이 붙음), 휴대폰들 및 랩톱들과 같은 전력 및 저장소 제한 디바이스들이 비트코인 생태계 내에서 동작할 수 있다는 이점을 제공한다. SPV 지갑은 트랜잭션들을 전혀 포함하지 않고 블록 헤더들을 다운로드만 하기 때문에, 이는 검증에 요구되는 저장 공간, 에너지 및 프로세싱 자원들을 크게 감소시킨다. SPV 지갑들은 아래에 설명된 이유들로 본 개시내용의 실시예들과 함께 사용하기에 특히 적합하며, 우리는 본원에서 SPV 체크들을 포함하도록 "검증"이라는 용어를 사용한다.
트랜잭션들의 블록
도 4는 블록체인 블록의 예를 개략적으로 예시한다. 각각의 블록은 블록 헤더 및 트랜잭션들의 세트를 포함한다. 블록 헤더는 다른 것들 중에서도, 이전 블록 헤더의 해시, 즉 현재 블록이 구축된 블록의 블록 헤더의 해시를 포함한다. 블록 헤더는 또한 트랜잭션들의 세트를 사용하여 구축된 머클 트리의 머클 루트를 포함한다. 각각의 트랜잭션은 먼저 해싱(예컨대, 이중 해싱)되어 해당 트랜잭션의 트랜잭션 식별자(TxID)를 생성한다. 그 후 트랜잭션 식별자는 머클 트리의 리프 노드들로서 사용된다. 그 후 트랜잭션 식별자들의 쌍들의 컨케터네이팅 및 해싱되어 머클 트리의 제1 내부 레벨의 개개의 내부 노드를 형성한다. 그 후, 제1 내부 레벨의 내부 노드들의 쌍들은 컨케터네이팅 및 해싱되어 머클 트리의 제2 내부 레벨의 개개의 내부 노드를 형성한다. 내부 노드들의 쌍들을 컨케터네이팅 및 해싱하는 프로세스는 단일 해시, 즉 머클 루트만 남을 때까지 반복된다. 이 머클 루트는 때때로 블록 머클 루트로서 지칭된다.
우리는 이제 특히 도 5, 도 6 및 도 7을 참조하여 본 개시내용의 실시예들을 살펴본다.
블록의 머클 트리의 세그먼트들의 식별
예컨대, 앨리스와 같은 특정 당사자가 일부 트랜잭션들을 유효성 검증하려고 한다고 가정한다. 본 개시내용의 실시예에 따르면, 트랜잭션의 적어도 하나의 서브세트가 식별되며, 여기서 서브세트는 블록에 대한 전체 머클 트리의 세그먼트에 의해 표현되고 그리고/또는 이를 형성한다. 따라서 트랜잭션 블록은 블록의 머클 트리에 기초하는 복수의 세그먼트들로 논리적으로 세그먼팅될 수 있으며, 각각의 세그먼트는 블록 트랜잭션들의 서브세트를 포함하고 각각의 세그먼트는 자체 루트 노드(또는 "루트 해시")를 갖는다. 이 공통 루트 해시는 전체 블록의 루트 해시로부터 이를 구별하기 위해 아래에서 때로는 "세그먼트 해시"로서 지칭된다. 트리 세그먼트 내에서 동일한 레벨(즉, 가장 낮은 레벨, 때로는 "리프 레벨" 또는 "리프 계층"으로서 또한 지칭됨) 상의 트랜잭션들은 형제(sibling)들이다. 주어진 세그먼트 내 모든 트랜잭션들은 해당 세그먼트에 대한 공통 루트 노드를 공유한다. 공통 루트 노드는 머클 트리의 인접한 레벨, 즉 가장 낮은 레벨 바로 위 레벨에 속할 수 있다. 대안적으로, 공통 루트 노드가 더 높은 레벨에 속할 수 있다. 일반적으로, 공통 루트 노드는 가장 낮은 레벨과 머클 루트 사이의 머클 트리의 임의의 레벨에 속할 수 있다.
블록을 그의 머클 트리에 기초하여 더 작은 부분으로 분해하는 것은 다수의 유효성 검증기들에 걸쳐 트랜잭션들을 빠르고 효율적으로 할당하는 능력을 포함하여, 상당한 기술적 이점들을 제공한다. 예컨대, 비트코인 프로토콜은 이진 트리들을 사용하므로, 다수의 머신들에 걸쳐 이진 할당을 구현하는 것이 가능하다. 세그먼트들에 대한 인덱싱 시스템으로서 작은 이진 마커를 사용함으로써, 전체 머클 트리에서 각각의 세그먼트의 포지션이 신속하게 계산할 수 있어, 유효성 검증이 완료된 후 블록에 대한 완전한 머클 트리를 재구성하도록 세그먼트들을 함께 되돌리는 것을 가능하게 한다. 이 이진 인덱싱 접근법은 아래에서 보다 상세히 논의된다.
세그먼트들의 식별을 위해 다양한 기술들이 사용될 수 있지만, 한 가지 접근법에 따르면, 세그먼트들의 수는 시스템에서 사용 가능한 유효성 검증기의 수에 의해 결정될 수 있다. 예컨대, 4개의 유효성 검증기들을 갖는 시스템에서, 머클 트리는 4개의 세그먼트들로 분할될 수 있고; 8개의 유효성 검증기들이 있는 경우 머클 트리는 8개의 세그먼트들로 분할될 수 있고 이러한 식이다. 주어진 머클 트리에 대한 세그먼트들의 식별은 도 7의 제어기(702)에 의해 예시된 제어 엔티티에 의해 수행되거나 영향을 받을 수 있다.
위에 설명된 요점들은 도 5 및 도 6을 참조하여 추가로 예시되며, 여기서 도 5는 머클 트리가 유효성 검증기들에게 할당되기 위해 별개의 부분들(502)로 분할될 수 있는 방법의 예를 예시한다. 도 5의 예에서, 각각의 화살표는 머클 트리의 개개의 리프 노드에서 사용되는 개개의 트랜잭션 식별자를 형성하기 위해 해싱된 개개의 트랜잭션을 표현한다. 머클 트리의 최상부는 블록 머클 루트이다. 이 예에서, 머클 트리에 의해 표현되는 트랜잭션들의 블록은 32개의 트랜잭션들을 포함한다. 그러나 이는 단지 예시적인 예일 뿐이며 일반적으로 머클 트리는 블록 내 트랜잭션들의 수에 의존하여, 임의의 수의 트랜잭션들을 포함할 수 있다는 것이 인지될 것이다. 도시된 바와 같이, 머클 트리는 점선 박스들에 의해 표시된 4개의 부분들(502a-d)로 분할된다. 각각의 부분(502)은 실선 원들에 의해 표시된 머클 트리의 개개의 공통 내부 노드(내부 해시)(504)에 의해 링크된다. 각각의 부분(502)은 8개의 트랜잭션들을 표현한다. 이 예에서, 공통 내부 노드(504)는 머클 트리의 제4 레벨에 속한다. 본원에서 설명된 실시예들에 따르면, 각각의 개개의 부분(502)(또는 오히려, 부분을 형성 및/또는 표현하는 트랜잭션)은 프로세싱을 위해 예컨대, 개개의 부분(502)에 속하는 트랜잭션을 유효성 검증하기 위해 개개의 유효성 검증기에게 할당된다.
도 6은 머클 트리가 부분(602)들로 어떻게 분할될 수 있는지에 관한 다른 예를 예시한다. 도 6 내 머클 트리는 도 5의 것과 동일하다. 이제, 이 예에서, 머클 트리는 8개의 부분들(602a-h)로 분할되며, 각각의 부분(602)은 4개의 트랜잭션들을 표현한다. 이 예에서, 공통 내부 노드(604)는 머클 트리의 제3 레벨에 속한다. 대신에, 도 5 및 도 6의 머클 트리는 더 많은(예컨대, 16개) 또는 더 적은(예컨대, 2개) 부분들(502, 602)로 분할될 수 있다. 일반적으로, 블록의 트랜잭션의 세트로부터 형성된 머클 트리는 임의의 수의 부분들(502, 602)로 분할될 수 있으며, 여기서 각각의 부분은 최소 2개의 트랜잭션들을 포함한다.
개개의 유효성 검증 자원들에 대한 세그먼트들의 할당
트랜잭션의 서브세트들의 식별 후에, 이들은 참조의 용이성을 위해 "유효성 검증기들"로서 또한 지칭될 수 있는 복수의 유효성 검증 자원들에 걸쳐 분산된다. 복수의 유효성 검증기들은 도 7 및 도 9에서 자원들 A 내지 D(704a 내지 704d)로서 도시된다. 할당 프로세스는 전용 유닛 이를테면, 제한 없이 도 9에 도시된 바와 같은 구성요소(904)에 의해 지시되거나 영향을 받을 수 있다.
각각의 유효성 검증기(704a 내지 704d)는 하나 이상의 프로세싱 자원들을 포함할 수 있다. 따라서, 복수의 유효성 검증기들(704a 내지 704d) 내 유효성 검증기들 중 적어도 하나는 다음: 하나 이상의 가상 머신들, 하나 이상의 서버들, 하나 이상의 GPU 기반 컴퓨팅 자원들, 하나 이상의 스레드들 및/또는 하나 이상의 다중프로세서 시스템들 등 중 적어도 하나이거나 이를 포함할 수 있다. 본질적으로, 복수의 유효성 검증기들 중 임의의 것은 각각이 블록의 머클 트리의 세그먼트에 의해 서로 연관된 하나 이상의 트랜잭션들을 유효성 검증할 수 있는 프로세싱 자원들의 임의의 유형(들) 또는 조합들로 구성될 수 있다. 복수의 유효성 검증기들(704a 내지 704d) 및 다른 시스템 구성요소들은 집합적 자원 또는 엔티티(700)를 형성하며, 우리는 이를 "(분산된) 유효성 검증 노드"로서 지칭할 것이다.
바람직하게는, 분산은 복수의 유효성 검증기들 내의 개개의 유효성 검증기에 세그먼트들 각각을 할당하는 것을 포함한다. 유효성 검증기들은 적어도:
· 유효성 검증기들에 할당된 세그먼트(들)를 구성하는 하나 이상의 트랜잭션들 상에서 동작하고
· 하나 이상의 트랜잭션들을 유효성 검증하여 이들이 블록체인 프로토콜을 준수하는지를 확인하고, 그리고/또는
· 알려지거나 등록되거나 지출된 트랜잭션들의 블록체인 원장 또는 데이터베이스와 같은 기존 리포지토리에서 이들이 식별할 수 있음을 유효성 검증하도록 구성될 수 있다.
유효성 검증기들의 활동들 및 상이한 유효성 검증기들로의 서브세트들의 할당은 제어기에 의해 지시될 수 있다. 도 7은 제어기(702)가 개개의 트리 세그먼트들에 대해 트랜잭션들 A 내지 D의 서브세트들을 유효성 검증기들(704a 내지 704d)에 각각 할당하는 것을 도시한다. 시스템 레벨 제어기(702)는 분산된 유효성 검증 노드 내의 시스템들 또는 디바이스들(704a 내지 704d)의 활동들을 조정하고, 블록의 머클 트리를 사용한 트리 세그먼트들의 식별, 식별된 세그먼트들을 개개의 유효성 검증기들에 대한 할당, 유효성 검증된 트리 세그먼트들을 블록에 대한 완전한 머클 트리로 재순서화 및/또는 재구성된 블록 내의 트랜잭션들의 재순서화와 같은 작업들을 제어하거나 영향을 미칠 수 있다.
유효성 검증기들 중 하나 이상은 유효성 검증기 레벨에서 제어기로서 작용하도록 배열된 적어도 하나의 조정 엔티티를 포함할 수 있다. 따라서, 유효성 검증기들(704a 내지 704d) 중 임의의 것 또는 전부는 그 자체의 적어도 하나의 제어기 구성요소를 포함할 수 있다. 이 하위 레벨 제어기는 유효성 검증기 내의 하나 이상의 프로세싱 자원들에 대한 작업들 또는 하위 작업들의 할당, 주어진 세그먼트에 대한 머클 트리의 재구성 또는 다른 시스템 구성요소들 예컨대, 다른 유효성 검증기들 또는 상위 레벨 제어기들, 제어기, UTXO 풀들, 지갑들 등과의 상호작용과 같은 동작들을 제어하거나 영향을 미칠 수 있다. 차례로, 프로세싱 자원들 자체는 추가로 더 작은 시스템들로 분해될 수 있으며, 그 중 하나 이상은 제어기 및 그 자체의 하나 이상의 프로세싱 자원들을 포함할 수 있다. 이러한 방식으로, 시스템은 유효성 검증 작업들을 수행하기 위한 하나 이상의 프로세싱 자원 및 프로세서의 활동들의 조정 및 구성요소 간 통신의 실행을 위한 하나 이상의 제어기들을 포함하는 엔티티들을 유효성 검증함으로써 세그먼트 유효성 검증이 수행되는 계층적 아키텍처를 포함할 수 있다.
유효성 검증기가 다수의 프로세싱 자원들을 포함하는 실시예들에서, 유효성 검증기는 그의 할당된 세그먼트를 더 작은 세그먼트들로 분할할 수 있다. 그 후 유효성 검증기의 제어기는 자신의 제어하에 있는 프로세서들에 걸쳐 하위 세그먼트들을 분산시킬 수 있다. 이러한 방식으로, 유효성 검증 프로세스는 계층적이고 분산된 방식으로 구현될 수 있다.
이러한 계층적 분해는 또한 트랜잭션 레벨로 확장될 수도 있어서, 유효성 검증은 트리 세그먼트 레벨 보다는, 트랜잭션당 작들 또는 하위 프로세스들로 추가로 분해될 수 있다. 이 접근법에서, 개별 트랜잭션(들)의 유효성 검증이 상이한 머신들 또는 동일하거나 상이한 머신들 상에서 실행되는 상이한 스레드들에 걸쳐 분산되는 하위 작업들로 분해된다. 이러한 프로세스들은 스레드가 사용 가능해지면, 다른 트랜잭션 또는 작업이 그에 할당되도록 큐잉(queued)될 수 있다.
따라서, 본 개시내용은 다수의 트랜잭션들이 동시에 프로세싱되는 것을 가능하게 하며, 유일한 제한은 전통적인 기술들에 따라 병목 현상이 되는 사용 가능한 프로세싱 속도의 양 보다는, 분산된 유효성 검증 노드를 형성하는 데 사용 가능한 하드웨어의 양이다. 이는 블록체인 네트워크의 근본 프로토콜을 변경할 필요 없이 블록체인 처리 시스템들이 수평적으로 스케일링하는 것을 가능하게 한다.
따라서, 본 개시내용은 도 1 및 2를 참조하여 그리고 "본 개시내용의 예시적인 실시예의 구현을 위한 예시적인 기술 환경"이라는 제목의 아래 섹션에 보다 자세히 설명되는 유효성 검증에 대한 전통적인 접근법으로부터의 상당한 일탈을 표현한다. 설명된 바와 같이, 전통적인 접근법은 하나의 블록이 전체 엔티티로서 유효성 검증되고 유효성 검증 노드(도 1, 104 참조)가 단일 컴퓨팅 유닛이라는 전통적인 관점을 수반한다. 대조적으로, 본 개시내용의 실시예들은 머클 트리를 상이한 유효성 검증기들(도 7 및 도 9의 704a 내지 704d)에게 제공되는 다수의 세그먼트들로 분해하고, 세그먼트들 및 유효성 검증기들 각각은 수반되는 분산의 정도를 향상시키기 위해 추가로 분해될 수 있다.
또한 추가로, 각각의 블록을 그의 머클 트리에 기초하여 세그먼트들로 분해함으로써, 본 개시내용의 실시예들은 유효성 검증기들이 전체 블록 보다는, 블록의 작은 부분들에 액세스하고, 이를 다운로드하고, 프로세싱하는 것을 가능하게 한다. 각각의 세그먼트 내 트랜잭션들은 (쌍들로) 단일 루트 값으로 해싱된다는 것이 상기된다. 이는 전체 블록이 전체적으로 다운로드, 저장 및 프로세싱되기 보다는, 필요한 관련 트랜잭션들만을 사용하여 세그먼트가 유효성 검증될 수 있음을 의미한다. 비트코인 SV와 같은 프로토콜들은 블록 크기의 스케일링 및 원장에 더 큰 블록들의 포함을 허용하므로, 전체 블록을 다운로드하는 기존 모델은 병목 현상을 발생시킨다. 본 개시내용의 실시예들은 개별 유효성 검증기들이 그들과 관련된 (더 작은) 부분들만을 수신 및 프로세싱하는 것을 가능하게 함으로써 블록체인 확장성에 대한 이러한 난제를 극복한다. 이는 더 빠른 전반적인 유효성 검증 시간, 개선된 블록체인 네트워크, 및 블록체인 상에서 실행되는 개선된 애플리케이션을 초래한다.
또한 추가로, 실시예들은 SPV 프로세스들 및 자원들의 사용을 지원하고 용이하게 하는데, 그 이유는 그러한 SPV는 주어진 당사자가 관심을 갖는 머클 트리의 부분들만의 로컬 유효성 검증을 수반하기 때문이다. 따라서 SPV 기술들의 트리-프루닝 성질(tree-pruning nature)은 본 개시내용의 실시예들과 결합하여 사용하기에 이상적으로 적합하다. SPV 맥락에서, 유효성 검증기에게는 이들이 필요로 하는 블록 데이터의 부분들 즉, 블록 헤더 또는 세그먼트 루트 노드 및 관련 트랜잭션들만이 제공될 수 있다.
각각의 유효성 검증기가 그의 체크를 수행하고 자신이 프로세싱한 세그먼트의 유효성을 확인하면, 트리를 생성하는 데 사용되는 해싱 메커니즘으로 인해 블록이 유효하다는 것이 보장될 수 있다.
복수의 유효성 검증기들에 걸친 로드 밸런싱
효율성을 향상시키기 위해 다수의 자원들에 걸쳐 작업을 균등하게 분산시키는 것을 목표로 배열된 로드 밸런싱 기술들 및 시스템들이 당업계에 알려져 있다. 목표는 다른 프로세싱 자원들이 과부하되는 동안 일부 프로세싱 자원들이 유휴 상태에 놓이는 위험 및 이에 따라 성능의 저하 또는 심지어 장애의 위험을 최소화하는 것이다. 따라서 전체 시스템의 복원력뿐만 아니라 그의 성능 및 효율성을 보장하는 데 있어 로드 밸런싱이 중요해진다. 본 개시내용의 실시예들은 예컨대, 정적 또는 동적 로드 밸런싱과 같은 임의의 알려진 로드 밸런싱 기술을 활용할 수 있다. 부가적으로 또는 대안적으로, 본원에서 개시된 로드 밸런싱 접근법이 유리하게 사용될 수 있다.
위에서 언급된 바와 같이, 본 개시내용의 실시예들은 개시내용 유효성 검증기들에 대한 블록 세그먼트들의 할당 시에 인덱싱 시스템을 사용할 수 있다. 바람직하게는 이는 이진 인덱싱 시스템이다. 이 바람직한 시스템에서, 각각의 유효성 검증기는 이진 라벨 또는 식별자로 지정된다. 각각의 식별자는 4자리 길이이고 제1 유효성 검증기는 0000으로서 식별되고 다음 유효성 검증기는 0001로서 식별되고 다음 유효성 검증기는 0010으로서 식별되는 식이라고 가정한다. 분명히, 4자리 식별자는 256개의 유효성 검증기 ID들을 허용하며, 마지막 유효성 검증기는 1111(즉, 십진수로 유효성 검증기 번호 255)로서 식별된다.
트리 세그먼트가 유효성 검증기에게 할당될 필요가 있을 때, 그의 이중 해시의 처음 4자리(즉, 트리 세그먼트의 세그먼트 해시)는 어느 유효성 검증기가 해당 세그먼트를 프로세싱할지를 결정하는 데 사용될 수 있다. 머클 루트는 블록으로부터 트랜잭션 ID(TxID)들의 쌍들을 함께 해싱하여 머클 트리의 개개의 내부 노드들(또는 내부 해시들)을 생성하고 그 후 최종적으로 단일 해시가 도달될 때까지 인접한 내부 해시들을 반복적으로 해싱함으로써 생성된다. 이 이중 해싱된 머클 루트는 효율적이고 빠르며 안전한 검증 메커니즘을 제공한다. 이것은 또한 현재 맥락에서 이중 해시가 랜덤 이진수를 생성한다는 이점을 제공한다. 각각의 세그먼트 해시를 포함한 각각의 내부 해시는 그 자체로 이중 해시이다. 따라서, 세그먼트 해시의 처음 x개의 선행 숫자들은 할당 인덱스로서 사용될 수 있다. 4개의 선행 0들을 갖는 해시는 트리 세그먼트가 ID 0000을 갖는 유효성 검증기에 할당되게 하고, 선행 숫자들 0001을 갖는 해시는 ID 0001을 갖는 유효성 검증기에 할당되게 하는 식이다. 이중 해시들의 랜덤 생성은 유효성 검증기들로의 트리 세그먼트의 랜덤 분산을 보장한다.
머클 트리를 생성할 때 일반적으로 이중 해싱이 사용되지만 모든 예들에서 필수적인 것은 아니며 대신 단일 해싱만이 사용할 수 있다. 실제로 임의의 수의 해시 동작들은 임의의 이진수를 초래할 것이다. 로드 밸런싱 작업들은 도 9의 905로서 도시된 전용 시스템 구성요소에 의해 수행될 수 있거나 시스템(700) 내의 다른 곳에 제공되거나 시스템(700)과 연관되고 통신할 수 있다.
블록들의 분산된 다운로드 또는 수신
일부 실시예들에 따르면, 상이한 유효성 검증기들에 대한 블록 머클 트리의 세그먼트들의 할당은 예컨대, 트랜잭션들의 블록의 일부 또는 전부를 다운로드하기 위한 더 빠르고 보다 효율적인 프로세스를 제공하는 데 사용될 수 있다. 본원에서, 편의상 "다운로드"라는 용어를 사용할 수 있지만 본 개시내용은 이러한 것으로 제한되지 않으며, 프로세서들/유효성 검증기들 중 하나 이상은 예컨대, 인터넷 또는 VLAN과 같은 네트워크 상에서 전송 자원으로부터 송신들을 수신함으로써 다른 수단들을 통해 데이터를 획득할 수 있다.
각각의 유효성 검증기에는 위에서 설명된 할당 인덱스에 기초하여 머클 트리의 세그먼트가 할당된다. 그 후 임의의 주어진 유효성 검증기는 할당된 트리 세그먼트를 형성하는 트랜잭션들의 세트를 다운로드하도록 동작한다. 이는 블록체인 자체(예컨대, 블록체인 노드)로부터 또는 상이한 자원 또는 엔티티 이를테면, 제3자 서비스 제공자로부터 트랜잭션들의 세트를 다운로드하는 것을 수반할 수 있다. 트랜잭션들의 세트는 유효성 검증기의 내부 메모리 또는 공유 저장 로케이션 이를테면, 클라우드 내 공유 드라이브에 다운로드될 수 있다.
일부 실시예들에서, 유효성 검증기(들)는 유효성 검증기가 구독한 멀티캐스트 주소로 전송되는 하나 이상의 데이터 패킷들의 형태로 데이터를 수신할 수 있다. 이는 당업계에 알려진 IPv6 멀티캐스트 주소일 수 있다. 하나, 일부 또는 모든 유효성 검증기들이 멀티캐스트 주소를 구독할 수 있다. 일부 실시예들에서, 유효성 검증기의 서브세트는 상이한 개개의 멀티캐스트 주소들을 구독할 수 있어서, 상이한 세그먼트들에 대한 트랜잭션들이 공통 멀티캐스트 주소를 공유하는 유효성 검증기들의 그룹에 할당될 수 있다.
분산된 노드는 전체 블록, 즉 블록을 형성하는 트랜잭션들의 전체 세트를 요구할 수 있다. 이 경우, 트리 세그먼트가 할당된 각각의 유효성 검증기는 세그먼트를 형성하는 트랜잭션들의 서브세트를 다운로드한다. 다른 시나리오들에서, 분산된 노드는 블록의 특정 부분들만을 요구할 수 있다. 이 경우에, 유효성 검증기들 중 일부만이 원하는 트랜잭션들을 획득하기 위해 트랜잭션들의 자신의 개개의 서브세트들을 다운로드할 필요가 있을 수 있다.
이러한 방식으로 블록(또는 블록의 일부)을 다운로드하는 것은, 각각의 유효성 검증기가 블록을 형성하는 트랜잭션들의 전체 세트 중 트랜잭션들의 서브세트만을 프로세싱하므로 전반적으로 다운로드가 더 빨라지게 한다. 이는 주어진 엔티티(예컨대, 전체 노드)가 예컨대, 각각의 트랜잭션이 블록에 나타나는 순서대로 각각의 트랜잭션을 다운로드함으로써 전체 블록을 다운로드해야 하는 종래의 블록 다운로드와 대조적이다. 이제 블록은 다수의 유효성 검증기에 의해 병렬로 다운로드된다. 블록은 수만 개의 트랜잭션이 포함될 수 있으며, 그보다 몇 배는 더 많을 수도 있다. 이런 다수의 트랜잭션들을 다운로드하는 단일 엔티티는 상당한 자원들을 소비하고 상당한 양의 시간이 소요된다. 컴퓨테이셔널 부담은 이제 유효성 검증기들 사이에 분산되어서, 각각의 개별 유효성 검증기가 프로세싱 자원들의 프랙션(fraction)을 소비한다. 마찬가지로, 블록을 다운로드하기 위한 전체 시간이 감소된다.
논의된 바와 같이, 각각의 유효성 검증기는 트랜잭션의 서브세트를 다운로드할 수 있다. 그 후 서브세트들은 단일 저장 로케이션에서 블록을 재구성하도록 결합될 수 있다. ("단일 저장 로케이션"이라 함은 독립적인 엔티티인 저장 자원 또는 집합적 엔티티를 형성하는 복수의 연관된 저장 자원들을 의미함). 이를 위해 개별 유효성 검증기들은 트랜잭션들을 올바른 순서로 배열하도록 구성된 분산된 노드의 중앙 제어기에 각자의 서브세트들을 송신할 수 있다. 세그먼트 해시(즉, 트리 세그먼트를 링크하는 해시)는 이 목적으로 활용될 수 있다. 예컨대, 머클 트리 내 그의 포지션에 대한 세그먼트 해시의 매핑이 예컨대, 세그먼트 해시가 머클 트리에 나타날 때 왼쪽에서 오른쪽으로 유지될 수 있다. 그 후 트랜잭션의 서브세트들은 대응하는 세그먼트 해시에 기초하여 순서대로(예컨대, 처음부터 마지막까지) 배치될 수 있다.
일부 실시예들에서, 개별 유효성 검증기들(또는 분산된 노드 전체)은 머클 트리를 재구성함으로써 올바른 트랜잭션들이 다운로드되었음을(또는 트랜잭션이 올바르게 다운로드되었음을) 확인할 수 있다. 트랜잭션들의 서브세트를 다운로드한 후, 유효성 검증기는 해당 트랜잭션들에 기초하여 후보 세그먼트 해시를 생성할 수 있다. 후보 세그먼트 해시는 TxID의 쌍들을 해싱함으로써 개개의 내부 해시들을 생성하고, 후보 세그먼트 해시가 생성될 때까지 내부 해시 쌍을 반복적으로 해싱함으로써 구성된다. 후보 세그먼트 해시가 속하는 머클 트리의 레벨은 머클 트리가 분할되는 트리 세그먼트들의 수에 의존할 것이다. 유효성 검증기는 후보 세그먼트 해시가 머클 트리의 해시임을 검증할 수 있다. 해시들이 매칭되지 않는 경우, 다운로드 동안 오류가 발생하였다. 일부 예들에서, 각각의 유효성 검증기는 후보 세그먼트 해시를 생성하고 이를 제어기로 전송하여 검증을 수행할 수 있다. 다른 예로서, 다운로드된 트랜잭션들의 전체 세트에 기초하여 후보 블록 머클 루트가 생성될 수 있다. 재차, 블록이 올바르게 다운로드된 경우 후보 머클 루트는 실제 블록 머클 루트(즉, 블록에 저장된 머클 루트)와 매칭되어야 한다.
일부 경우들에서, 유효성 검증기가 위에 설명된 기술을 사용하여 다운로드된 트랜잭션들을 유효성 검증할 수 있다. 즉, 각각의 유효성 검증기에는 트리 세그먼트가 할당되고, 트랜잭션들의 대응하는 서브세트를 다운로드하고, 해당 트랜잭션들을 유효성 검증한다. 다른 경우들에서, 검증기들은 트랜잭션들을 반드시 유효성 검증할 필요는 없고 추후 사용을 위해 예컨대, 제3자에게 전송하기 위해 트랜잭션을 간단히 다운로드할 수 있다.
분산된 UTXO 풀들
바람직하게는, 분산된 유효성 검증 노드의 일부를 형성하는 각각의 유효성 검증기(704)는 미지출 트랜잭션 출력들(UTXOS)을 생성, 저장 및/또는 유지하기 위한 자체 리포지토리(풀)를 갖는다. 이는 블록체인 트랜잭션들과 연관된 소비되지 않은, 즉 미지출 출력의 레코드를 제공하는 UTXO 풀로서 기능한다. 따라서 각각의 유효성 검증기의 UTXO 풀은 머클 트리 세그먼트들과 관련하여 제어기에 의해 그에 할당된 트랜잭션들에 기초하고 그로부터 구성된다. 일 실시예에서, 이는 프로세싱을 위해 주어진 유효성 검증기에게 할당된 트랜잭션들의 미지출 UTXO들에 관한 데이터를 포함하는 (그래프) 데이터베이스일 수 있다. 새로운 머클 트리 세그먼트들이 유효성 검증기에 할당됨에 따라 그 유효성 검증기가 인식하게 되는 각각의 UTXO에 대해 데이터베이스 내 레코드가 생성된다. 따라서 분산된 유효성 검증 노드의 관점으로부터, UTXO 풀은 하나의 단일 풀이 아니라, 복수의 상이한 UTXO 풀들로 구성되며, 각각에는 상이한 유효성 검증기들에 또는 상이한 유효성 검증기들 상에 제공되고 UTXO들의 상이한 세트들을 포함한다. 따라서 노드에 대한 UTXO 풀은 데이터 및 또한 데이터를 저장 및/또는 프로세싱하는 자원들 둘 모두의 관점에서 분산된다.
이는 네트워크 내 각각의 전체 노드가 블록체인 상의 모든 UTXO들을 추적하는 UTXO 풀의 사본을 갖고 있는 기존 UTXO 모델과 상당히 차이가 있다. 대조적으로, 본 개시내용은 각각이 블록체인의 전체 UTXO 세트의 서브세트인 UTXO 풀을 각각 갖는 복수의 유효성 검증 자원들에 걸쳐 UTXO 풀을 분산한다. 각각의 유효성 검증기의 UTXO 풀은 유효성 검증 작업을 맡은 머클 트리 하위 부분들을 구성하는 트랜잭션들의 UTXO들을 포함한다.
이러한 접근법에 따르면, 이것은 새로운 블록의 유효성 검증될 필요가 있을 때마다, 데이터베이스와 관련된 모든 각각의 커맨드, 이벤트 및 항목이 로그에 레코딩된다는 점에서 SQL 트랜잭션 로그와 유사한 방식으로 구현할 수 있다. 본원에서 블록체인과 관련하여 알려진 바와 같은 "트랜잭션"이라는 용어 사용으로 인해 발생하는 혼동을 회피하기 위해 "데이터베이스 로그"라는 용어가 사용될 것이지만, 우리는 "트랜잭션 저널", "트랜잭션 로그" 등과 같은 용어들을 포함하도록 "데이터베이스 로그"라는 용어를 사용한다. 본질적으로, 데이터베이스 로그는 컴퓨터 기반 데이터베이스 분야에서 알려진 바와 같이 데이터베이스의 상태와 관련하여 발생한 모든 변경들에 관한 레코드를 제공하는 데이터베이스 관리 시스템에 의해 실행된 액션들의 이력으로서 해석될 수 있다(https://en.wikipedia.org/wiki/Transaction_log 참조).
순서화된 이력 데이터베이스 로그의 사용은 로그의 이력을 그의 오리지널 순서로 실행함으로써 전체 UTXO 풀이 구성할 수 있다는 것을 의미한다. 유리하게는, 이는 데이터베이스 사본이 요구될 때 항상 (재)생성할 수 있고 데이터의 별개의 사본이 저장될 필요가 없다는 것을 보장한다. 데이터 무결성이 보장되며, 더 적은 저장 자원들이 요구된다. 각각의 UTXO 풀은 별개로 저장, 유지 관리 및 프로세싱될 수 있다. 또한 유리하게는, SPV 기술들이 머클 트리들의 프루닝된 부분들 상에서 동작한다는 점을 감안할 때, SPV 기술들은 각각의 유효성 검증기에 대한 별개의 UTXO 데이터베이스의 생성을 용이하게 한다.
데이터베이스 내의 트랜잭션(TX)들은 다양한 방식들로 구성될 수 있지만, 특히 유리한 접근법은 식별자들에 따라 이들을 구성하는 것이며, 이는 블록 ID 및 트랜잭션 ID의 컨케터네이션(block_ID ∥ TxID)을 포함한다. 블록 ID 및 트랜잭션 ID 둘 모두는 256비트 해시들이므로, 안전하고 충돌이 없는 512 비트 컨케터네이션 필드 구조를 초래한다.
이러한 방식으로 트랜잭션을 구조화하는 것은 빠르고 효율적인 룩업 메커니즘이 제공된다. 동일한 block_ID를 갖는 모든 트랜잭션들이 데이터베이스에 함께 로케이팅되도록 트랜잭션들이 block_ID 별로 정렬될 수 있다. 따라서 유효성 검증기가 트랜잭션을 요구할 때(예컨대, 트랜잭션의 UTXO가 지출되었는지를 체크하기 위해), 유효성 검증기는 먼저 대응하는 block_ID를 검색한 다음 대응하는 TxID를 검색함으로써 데이터베이스에서 트랜잭션을 먼저 로케이팅할 수 있다. 이는 검색이 데이터베이스의 관련 섹션으로 한정되는 효과를 갖는다. 이러한 효율성은 검색 동작들을 위해 요구되는 시간, 프로세싱 자원 및 에너지를 감소시켜, 종래 기술에 비해 상당한 개선을 제공한다.
플래그 또는 마커는 유효성 검증기의 풀 내 각각의 UTXO와 연관되며 UTXO가 잠겨 있는지 또는 잠금 해제되어 있는지를 표시한다. 편의상, 우리는 이 플래그 또는 마커를 "잠금 플래그"로서 지칭할 수 있다. UTXO가 "잠김"으로 표시되면, 이는 그룹 내 유효성 검증기들(즉, 분산된 유효성 검증 노드 내 다른 곳)에, 이 UTXO가 지출을 위해 이용 가능하지 않다는 표시자로서 역할을 한다. 반대로, UTXO가 "잠금 해제됨"으로 표시되면, 이는 검증기에, UTXO가 지출될 수 있다는 표시자로서 역할을 한다. 따라서 이는 UTXO를 지출하는 트랜잭션을 검증하는 데 할당된 검증기가, 해당 트랜잭션이 유효한 것으로 판명된 것으로 가정하면, 트랜잭션이 리딤되었고 이에 따라 더 이상 지출 가능하지 않다는 것을 자신의 피어들에 시그널링하는 것을 가능하게 하는 방식으로서 기능한다. "잠김" 상태는 지출이 허용됨을 의미하는 반면, "잠금 해제됨" 상태는 지출이 금지됨을 의미한다.
이 잠금/잠금 해제 플래그는 "잠김"에 대한 0, 잠금 해제에 대한 "1"과 같은 간단하고 작은 이진 마커일 수 있다. 마커 메커니즘은 분산된 노드 시스템 내 유효성 검증기들에 의해 내부적으로 사용되며, 트랜잭션이 프로토콜 규칙들을 준수하도록 블록체인과 상호작용하기 전에 트랜잭션으로부터 마커가 제거된다.
사용 시에, 유효성 검증기는 제어기에 의해 자신에 할당된 새로운 트랜잭션들 각각의 출력들을 검사한다. 임의의 미지출 출력들(UTXO)은 유효성 검증기의 UTXO 풀에 추가되는데 즉, UTXO 데이터베이스에 엔트리로서 레코딩된다. 각각의 새로운 UTXO에 대한 관련 데이터베이스 레코드에서, 잠금 플래그는 "잠금 해제"로 세팅된다.
UTXO가 새로 할당된 트랜잭션에 의해 지출되고 있음을 유효성 검증기가 확인할 때, 그는 복수의 모든 각각의 다른 유효성 검증기에게 메시지를 전송하여 이 UTXO가 또한 각자의 풀들에서 잠겨야 함을 알린다. 본질적으로 유효성 검증기는 특정 시간에 특정 해시 ID를 사용한 트랜잭션을 수반한 지출을 확인했음을 표시하는 통신을 자신의 피어들에게 전송한다. 다른 유효성 검증기들은 전체 트랜잭션에 대한 완전한 데이터를 수신할 필요가 없는데, 그 이유는 트랜잭션 해시 및 그것이 지출한 UTXO들의 목록은 이 다른 유효성 검증기들이 문제의 트랜잭션을 식별하고 이를 자체 데이터베이스에 잠긴 것으로 마킹하는 데 충분하기 때문이다. 메시지의 수신 시에, 각각의 수신 유효성 검증기는 문제의 UTXO가 자신의 UTXO 풀에 있는지를 체크한다. 만약 그렇다면, 잠금 플래그의 상태가 "잠김"으로 변경된다. 따라서 잠금은, 동일한 UTXO가 후속 트랜잭션에 지출되도록 허용하는 것을 유효성 검증기들이 방지한다. 새로운 트랜잭션이 동일한 UTXO를 지출하려고 시도하는 경우, 잠금 플래그의 체크는 제2 지출 시도가 무시될 것임을 표시할 것이다. 유효성 검증이 실패하였고 이에 따라 UTXO가 지출되지 않았음을, 메시지를 전송한 유효성 검증기가 결정한 경우, 이 효과에 대해 유효성 검증기 피어들에게 추가 메시지가 전송되어 UTXO에 대한 잠금 플래그가 "잠금해제된" 상태로 변경되어 한다는 것을 표시할 수 있다. 유효한 지출이 완료되면, 이 효과에 대한 메시지가 전송될 수 있으며 잠긴 UTXO는 관련 UTXO 풀로부터 삭제될 수 있다.
위에 설명된 실시예에서, 각각의 유효성 검증기는 자신에게 할당된 모든 트리 세그먼트들의 모든 트랜잭션들의 UTXO들을 포함하는 단일 UTXO 풀을 갖는다. 그러나 대안적인 접근법에서, 각각의 유효성 검증기에 의해 유지하는 UTXO 풀은 블록 당 하나씩 다수의 하위 풀들로 분해/분할/구획화/형성될 수 있다. 이러한 방식으로, 단일 UTXO 풀은 논리적 계층 구조로 구성될 수 있다. 또 다른 접근법에서, 하나 이상의 유효성 검증기들은 개개의 복수의 UTXO 풀들과 연관하여 배열될 수 있으며, 각각의 복수의 UTXO 풀들은 하나 이상의 트리 세그먼트들의 세트에 대한 UTXO들과 관련된다. 따라서, 일부 실시예들에서, 유효성 검증기(들)는 트리 세그먼트의 유형, 또는 주어진 범위 내에 속하는 트리 세그먼트들 등과 같은 일부 미리 정의된 기준에 따라 또는 상이한 개별 트리 세그먼트들에 대한 별개의 UTXO 풀들로 UTXO들을 구성할 수 있다. 그러한 실시예들에서, 식별자는 관련 UTXO 풀로 검색을 좁히는 데 사용될 수 있는 블록 ID를 포함할 수 있으며, 그 후 검색은 그의 TxID에 의해 관련 트랜잭션을 식별하기 위해(식별하도록 시도하기 위해) 해당 풀 내에서 진행될 수 있다. 당업자는 일부 실시예들에서 이러한 접근법들의 혼합이 사용될 수 있다는 것, 즉, 분산된 노드 내의 하나 이상의 유효성 검증기들은 단일 UTXO 풀 접근법을 사용할 수 있는 반면, 다른 유효성 검증기(들)는 다수의 별개의 UTXO 풀들 및/또는 하위 풀들로 구성된 UTXO 풀들 또는 이들의 조합을 사용하도록 배열될 수 있다는 것을 이해할 것이다.
이는 당사자가 동일한 UTXO를 두 번 지출하려고 시도하는 "이중 지출" 상황들로부터의 보호를 제공한다. 이는 시스템 내 유효성 검증기들의 수 또는 로케이션에 관계없이 효율적이고 빠르게 동작하는 간단하고 안전한 잠금 메커니즘을 제공하고 블록체인을 통해 구현되는 이전들의 보안 및 무결성을 보존한다.
분산된 채굴
우리는 이제, 예시 목적으로, 제한 없이, 그리고 첨부된 도 14 내지 19, 및 열거된 조항 세트 7을 참조하여, 본 개시내용의 다른 양상의 예시적인 실시예를 설명한다. 이 섹션에 개시된 분산된 채굴 특징들은 도 20의 시스템에 도시된 바와 같이 (분산된) 채굴 구성요소(2000)를 형성하기 위해 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
요약하면, 본 개시내용의 이러한 양상에 관련된 실시예들은, 특정 복수(세트)의 트랜잭션들을 포함하는 블록체인 블록에 대한 작업 증명(PoW) 또는 지분 증명(PoS)의 생성을 위한 요청을 인가, 제어, 인가 설정, 또는 그렇지 않으면 공식화하기 위한 기법들을 포함할 수 있다. 이후에, 우리는 편의상 작업 증명(Proof of Work) 또는 PoW라는 용어를 사용할 것이지만, 본 개시내용은 이에 의해 제한되도록 의도되지 않으며, P-o-S(Proof of Stake) 또는 PoW에 대한 다른 대안들을 포함하는 실시예들은 본 개시내용의 범위 내에 속한다. 바람직하게는, 세트는, 요청된 PoW 노력이 개시, 착수 및/또는 이행되어야 하는지 여부를 결정하기 위해 작업 증명 제공자가 사용할 수 있는 제어 데이터의 적어도 하나의 부분을 포함하는 트랜잭션을 포함한다. 이것은 "제어 트랜잭션(TX0)"이라 칭해질 수 있다. 요청은 또한, TX0가 복수의 트랜잭션에 포함된다고 PoW 제공자가 결정하는 데 사용할 수 있는 데이터를 포함할 수 있다. 바람직한 실시예에서, 이것은 머클 증명, 제어 트랜잭션(TX0) 및/또는 트랜잭션들의 세트를 나타내는 머클 트리의 루트 중 적어도 하나 이상을 포함할 수 있다. PoW 제공자는, 요청된 PoW 노력이 개시, 착수 및/또는 이행되어야 하는지 여부를 결정하기 위해, a) 제어 트랜잭션이 세트에 포함되고 그리고/또는 b) 사용될 수 있는 제어 데이터의 적어도 하나의 부분을 포함한다는 것을 보장하기 위해, 적어도 하나의 미리-지정된 규칙, 기준 또는 요건과 연동하여 요청을 프로세싱할 수 있다.
조합하여, PoW 요청자 및 PoW 제공자는 분산된 블록체인 채굴 노드를 제공할 수 있다. 실시예들은 블록체인 트랜잭션들을 유효성 검증 및/또는 채굴하는 데 수반되는 다양한 기능들 및 작업들을 분리, 분배 및 병렬화하는 능력을 제공한다.
통상적으로, 블록체인 네트워크의 노드는 블록체인 상의 모든 트랜잭션의 글로벌 원장을 유지한다. 글로벌 원장은 분산된 원장이며, 각각의 노드는 글로벌 원장의 완전한 또는 부분적인 사본을 저장할 수 있다. 글로벌 원장에 영향을 주는 노드에 의한 트랜잭션은 다른 노드에 의해 검증되어, 글로벌 원장의 유효성 및 무결성이 유지된다. 비트코인 프로토콜을 사용하는 것과 같은 블록체인 네트워크를 구현 및 운영하는 것의 세부사항은 당업자에 의해 인지될 것이다.
각각의 트랜잭션은 통상적으로 하나 이상의 입력 및 하나 이상의 출력을 갖는다. 입력 및 출력에 임베딩된 스크립트는 트랜잭션의 출력이 어떻게 그리고 누구에 의해 액세스될 수 있는지를 지정한다. 트랜잭션의 출력은 트랜잭션의 결과 값에 대한 제어가 이전되는 주소일 수 있다. 그런 다음, 이 값은 미지출 트랜잭션 출력(UTXO)으로서 해당 출력 주소와 연관된다. 그런 다음, 후속 트랜잭션은 해당 값의 제어 또는 소유권을 획득하기 위해 해당 주소를 입력으로서 참조할 수 있다.
위에서 언급된 바와 같이, 비트코인 네트워크와 프로토콜을 우리의 예로서 사용하여, 채굴 노드들은 블록체인에서 다음 블록을 생성하기 위한 경쟁에 나선다. 블록을 조립하기 위해, 채굴자는 확인되지 않은 트랜잭션의 풀("멤풀")로부터의 트랜잭션의 세트로서 블록을 구축할 것이다. 그런 다음, 채굴자는 자신이 조립한 블록에 대해 작업 증명(PoW) 퍼즐을 완료하려고 시도한다. 임의의 다른 채굴자가 그 자신의 블록을 생성하고 그의 PoW를 완료하는 데 성공했다는 통지를 수신하기 전에, 채굴자가 PoW를 완료한 경우, 채굴자는 자신의 블록을 네트워크 상의 피어 노드들에 전송함으로써 해당 블록을 전파한다. 이러한 노드는 블록을 유효성 검증하고 그런 다음 이를 네트워크에서 다른 노드에 추가로 전송한다. 채굴자가 그 자신의 PoW를 완료하기 전에 다른 블록이 완료되었다는 통지를 수신하면, 채굴자는 자신의 노력을 포기하고 다음 블록을 구축하려고 시도하기 시작한다.
따라서, 블록의 빠른 전파는 채굴자 및 유효성 검증 노드를 대신하여 낭비되는 노력(및 연관된 에너지)을 피하는 것을 돕는다. 블록의 보다 빠른 유효성 검증 및 따라서 전파를 가능하게 하는 솔루션을 제공함으로써, 본 발명은 향상된 네트워크 성능을 제공한다. 이는 요구되는 컴퓨팅 시간과 노력의 양, 및 따라서 네트워크에 의해 요구되는 에너지의 양을 감소시킨다. 이는 자원 및 시간 측면에서 보다 효율적인 네트워크를 제공한다. 이는 궁극적으로 개선된 (블록체인) 네트워크를 제공한다.
분산된 채굴 ― 자세한 설명:
우리는 이제, 채굴 작업 및 기능이 블록체인 네트워크 상의 "전체 노드"와 통상적으로 연관되거나 그에 의해 수행되는 다른 동작들과 분리되는 본 개시내용의 이러한 양상에 대한 상세한 설명을 제공한다. 이것은 채굴 작업이 상이한 자원에 걸쳐 분산 및 병렬화되는 것을 가능하게 한다.
당분야에 알려지고 도 15에 예시된 바와 같이, 트랜잭션은 블록체인에 기록될 수 있기 전에 유효성 검증되어야 한다. 네트워크 노드(채굴자)는 각각의 트랜잭션이 유효하다는 것 및 무효한 트랜잭션이 네트워크로부터 거부된다는 것을 보장하는 작업을 수행한다. 노드 상에 설치된 소프트웨어 클라이언트는 잠금 및 잠금 해제 스크립트를 실행하여 미지출 트랜잭션(UTXO)에 대해 이러한 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 참으로 평가되면, 트랜잭션이 유효하고 트랜잭션이 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인 원장에 추가되기 위해서는, 트랜잭션은 i) 트랜잭션을 수신한 제1 노드에 의해 유효성 검증되어야 하고 ― 트랜잭션이 유효성 검증되면, 노드는 트랜잭션을 네트워크의 다른 노드들로 중계하고, 그리고 ii) 채굴자에 의해 구축된 새로운 블록에 추가되어야 하고, 그리고 iii) 채굴되어야 한다.
종래에는, 블록을 채굴하기 위해, 채굴 노드는 자신의 멤풀로부터 확인되지 않은 트랜잭션을 선택하고, 블록에 대한 코인베이스 트랜잭션을 생성하고, 그리고 모든 트랜잭션을 쌍으로 해싱하여 후보 블록을 형성하여 머클(해시) 루트를 갖는 머클 트리 구조를 형성한다. 머클 트리는 후보 블록 내의 모든 트랜잭션을 나타낸다. 채굴자는 또한 버전 번호 및 현재 에포크 시간을 결정하고, 원장의 가장 긴 체인 상의 최신 블록의 해시를 획득한다. 머클 루트 및 다른 값들은 블록 메시지(BM)를 형성하도록 컨케터네이팅된다.
그런 다음, 채굴자는, 블록 메시지에 첨부되어 전체 블록 헤더를 생성할 때, 지정된 수의 리딩 제로를 갖는 해시를 생성하는 정수 값(논스)을 찾음으로써 PoW 챌린지를 해결하려고 시도한다. 시도가 적합한 해시를 생성하는 데 실패하면, 채굴자는 다른 논스를 사용하여 계산을 반복한다. 채굴자가 요구된 수의 리딩 제로를 생성하는 데 성공한 논스를 발견하면, 채굴자는 다른 노드에 의해 검증되도록 해당 블록의 전체 헤더를 포함한 후보 블록을 블록체인 네트워크로 전송한다. 따라서, 논스는, 채굴자가 챌린지에 대한 해결책을 찾는 데 있어서 에너지, 노력 및 시간을 소비했다는 증명을 제공한다.
따라서, 통상의 접근법에서, 채굴자는 트랜잭션을 선택하고, 후보 블록을 생성하고, PoW 및 전체 블록 헤더를 생성한다. 이들 기능성들이 동일한 엔티티에 의해 수행되는 종래의 접근법과는 대조적으로, 현재 개시된 접근법에서는 이들 기능들이 상이한 프로세싱 엔티티들에 걸쳐 분산 및 병렬화된다. 이것은 PoW 계산을 수행 및/또는 완료하기 전에 미리 지정된 인가 기준의 검증 및 시행을 허용한다.
바람직한 실시예에서, 블록의 머클 구조는 유효성 검증 및 채굴 프로세스들의 다양한 기능들이 상이한 컴퓨팅 자원들에 의해 독립적으로 분리되고 취급되는 것을 허용한다. 이러한 자원들은 세계 어디에나 위치될 수 있고, 서로 격리되어 또는 서로 조합하여 동작할 수 있다. 총괄적으로, 그들은 "분산된 노드들"을 형성할 수 있고, 여기서 상이한 노드 구성요소들은 블록체인 트랜잭션들 및 블록들의 유효성 검증 및/또는 채굴에 관한 하나 이상의 기능들에서 전문화된다.
현재 개시된 접근법은, 종래의 전체 노드에 의한 채굴과 통상적으로 연관된 유효성 검증 노력, 트랜잭션 프로세싱 및 다른 작업들로부터 작업 증명(PoW) 계산의 분리에 관한 것이다. 이것은, PoW 제공자가 임의의 검증 작업을 수행할 필요가 없고, 역으로, 유효성 검증 노드가 PoW 계산을 세계 어디에나 위치할 수 있는 전문가인, 전용 자원에 위임할 수 있다는 것을 의미한다.
따라서, 본 개시내용은, "본 개시내용의 예시적인 실시예의 구현을 위한 예시적인 기술적 환경"이라는 명칭의 섹션에서, 그리고 도 1 및 도 2를 참조하여 더 상세히 설명되는 유효성 검증에 대한 종래의 접근법으로부터의 상당한 편차를 나타낸다.
우리는 이제 이 양상의 실시예를 예시하는 도 14 내지 19를 참조한다. 이러한 접근법에서, 분산된 채굴 노드(14.1000)는 도 14 및 도 19에 도시된 바와 같이 제공된다. 대안적으로, 이것은 "PoW 제공자"로 지칭될 수 있다. PoW 제공자(14.1000)는 "해시 머신" 또는 ASIC로 또한 지칭될 수 있는 적어도 하나의 특수화된 PoW 계산기를 포함한다. PoW 계산기는, 연관된 프로토콜에 따라 암호화폐를 채굴하도록 배열되는 하나 이상의 집적 회로 칩(도면에서 19.1100a, 19.1100b, 19.1100c로 도시됨)을 포함한다. 계산기(19.1100a 내지 19.1100c)는 SHA-256 알고리즘을 사용하여 비트코인을 채굴하도록 배열될 수 있다. 예컨대, 이더리움 채굴을 위한 ETHASH와 같은 다른 암호화폐들에 대해 다른 알고리즘들이 채용될 수 있다.
도 14 및 도 19에 도시된 바와 같이, PoW 제공자(1000)는, 주어진 복수의 트랜잭션들에 대한 유효 논스(또는, 바람직하게는, 완전한 블록 헤더)의 생성을 요청하기 위한 요청을 PoW 제공자에게 전송하도록 배열되는 PoW 요청 자원(14.1300)과 통신한다. 본 명세서에서 사용되는 용어 "요청"은 "지시" 및/또는 "개시"를 포함하는 것으로 의도된다. 따라서, 요청은 PoW 생성의 지시 또는 개시이거나 이를 포함할 수 있다. 우리는 간결성을 위해 "요청"이라는 용어를 사용할 것이다.
대안적인 단어 선택에서, PoW 요청 자원(14.1300)은 유효성 검증 및/또는 채굴 자원 또는 노드, 또는 단순히 "PoW 요청자"로 지칭될 수 있다. 바람직한 실시예에서, 요청 자원(14.1300)은 분산될 수 있고, 유효성 검증 및/또는 채굴 동작들의 병렬화를 용이하게 할 수 있다. 요청자(14.1300)는 실질적으로 본 명세서에 설명되고 유효성 검증 노드(700)를 참조하여 도 7에 도시된 바와 같을 수 있다. 그러나, 다른 실시예들에서, 요청 엔티티는 임의의 적절한 대안적인 형태를 취할 수 있고, PoW(논스 또는 블록 헤더)의 생성을 요구하는 임의의 엔티티일 수 있다.
PoW를 요청하기 위해, PoW 요청자(14.1300)는 트랜잭션들의 후보 블록에 대한 블록 헤더의 구성에 필요한 정보의 적어도 일부를 PoW 제공자(1000)에게 전송한다. PoW 요청자로부터 전송된 정보는 "블록 템플릿" 또는 "블록 메시지"로 지칭될 수 있고, 블록 내의 모든 트랜잭션들을 나타내는 머클 트리에 대한 루트를 적어도 포함할 수 있다. 블록 템플릿은 또한 트랜잭션들에 대한 블록 헤더를 생성하기 위해 PoW 제공자에 의해 사용될 다른 정보, 이를테면, 버전 번호, 이전 블록 해시, 난이도 타겟 및/또는 타임 스탬프를 포함할 수 있거나, 이들 데이터 항목들 중 하나 이상이 PoW 제공자에 의해 계산되거나 획득될 수 있다. 예컨대, PoW 제공자는 버전 번호를 획득, 리트리브 또는 선택할 수 있거나, 네트워크로부터 이전 블록 해시를 획득할 수 있다. PoW 제공자는 PoW 요청자로부터 전체 블록을 수신할 필요가 없고; 그는 선택된 논스와 결합하고 PoW 챌린지를 해결하려고 시도하기 위해, 프로토콜에 의해 지정된 바와 같이, 단순히 충분한, 최소의 정보를 필요로 한다는 것에 주목해야 한다. 그러나, 그는 PoW 요청자가 블록에 포함하기를 원하는 트랜잭션에 대한 머클 루트를 수신해야 하는데, 왜냐하면 이것이 PoW 제공자(14.1000)에 의해 결정될 수 없기 때문이다.
일부 실시예들에서, PoW 제공자는 PoW 계산기(들)의 활동들을 조정하도록 배열되는 제어기(19.1200)를 포함할 수 있다. 일부 실시예들에서, PoW 제공자(14.1000) 및/또는 제어기(19.1200)의 기능들은 ASIC 또는 해시 머신에서 구현될 수 있다. 도 19는 PoW 계산기와 동일한 엔티티의 일부로서 제어기를 도시하지만, 이것은 반드시 제어기와 ASICS가 동일한 하드웨어 또는 디바이스 내에서 구현된다는 것을 의미하는 것으로 해석되어서는 안 된다. 그들은 물리적으로 별개의 디바이스들로서 제공될 수 있지만, 논리적으로 또는 전자적으로 서로 연관됨으로써, 그리고/또는 서로 통신함으로써 PoW 제공자(14.1000)를 형성할 수 있다.
제어기(19.1200)는 주어진 계산기(19.1100a 내지 19.1100c)가 동작할 논스 또는 논스의 범위를 선택하는 동작, 요청자가 제공하지 않는 PoW 계산을 위한 임의의 필요한 정보를 획득하는 동작, 및/또는 아래에 설명되는 인가 기준을 체크하는 동작으로서 이러한 동작을 수행할 수 있다. 계산기(19.1100a, 19.1100b 및 19.1100c)은 동일한 후보 블록에 대해 상이한 논스 범위들에 대해 동작하도록 배열될 수 있다. 그러나, 일부 실시예들에서, PoW 요청 자원은 논스 범위들을 할당할 수 있고, PoW 제공자(14.1000) 및/또는 제어기(19.1200)의 기능들이 ASIC(19.1100)에서 구현될 수 있다. 또 다른 실시예들에서, PoW 요청자는 논스 범위를 할당할 수 있다.
블록 템플릿 외에도, PoW 요청자는 PoW 제공자에게 추가 데이터를 제공할 수 있다. 이것은 PoW 제공자가 적어도 하나의 전제 조건 규칙 또는 기준의 이행 또는 다른 것을 확인하기 위해 필요로 하는 임의의 종류의 데이터일 수 있다. 이러한 미리 지정된 적어도 하나의 규칙 또는 기준은 이후로 참조의 용이성을 위한 제어 기준으로 지칭될 것이다. 제어 기준은 PoW 제공자가 자신의 PoW 계산 노력을 시작, 계속 및/또는 완료하기 전에 충족되어야 한다. PoW 제공자에게 제공된 (제어) 데이터가 제어 기준을 충족시키면, PoW 생성을 위한 요청은 PoW 제공자에 의해 인가됨, 적법함 및/또는 허가됨으로 간주될 수 있다. 제어 기준은 PoW 제공자에서, 그에 의해 또는 그 대신에 미리 결정될 수 있다. 이는 PoW 요청자와 PoW 제공자, 또는 그들의 개개의 연관된 엔티티들 사이에서 합의될 수 있다.
바람직한 구현에서, 제어 데이터는 PoW가 계산되어야 하는 블록의 일부를 형성하는 트랜잭션에 포함된다. 제어 데이터는 PoW 제공자에 의해 제어 기준에 대해 평가되거나 확인되어, 당사자 간의 사전 인가 또는 합의, 또는 인가된 요청자로부터의 요청의 적법함을 보장할 수 있다. 예컨대, PoW 제공자는, 블록이 암호화폐의 일부를 특정 주소로 이전하는 트랜잭션(TX0)을 포함하는 것을 요구할 수 있다. 이 기준을 충족되지 않는 경우, PoW 요청은 허가되지 않는 것으로 간주될 것이며, 그는 필요한 PoW를 계산하려고 시도하지 않을 것이다. 체크 프로세스를 돕기 위해, PoW 요청자는, 블록이 성공적으로 채굴되고 블록체인에 추가되면, 미리 지정된 주소로의 이전이 이루어질 것임을 확인하기 위해 PoW 제공자가 사용할 수 있는 SPV-스타일 증명을, 그가 PoW 제공자에게 전송하는 데이터의 부분으로서, 제공할 수 있다.
다른 예에서, 전제 조건은 TX0이 인가 당사자에 의해 서명되는 것일 수 있다.
다른 예들에서, 제어 기준들은 TX0이 PoW 제공자가 체크 및 확인할 수 있는 메타데이터를 포함한다는 것일 수 있다. 예컨대, 메타데이터는 비밀, 이를테면, 암호 키, 또는 패스워드/코드 또는 PoW 제공자가 요청자를 위해 또는 요청자를 대신하여 PoW를 생성하도록 인가되거나 허가된다는 것을 확인하기 위해 그가 사용할 수 있는 일부 다른 데이터를 포함할 수 있다.
일부 구현들에서, TX0은 또한 PoW가 전송될 곳에 대한 명령들을 포함할 수 있다. 예컨대, 그것은 디폴트로 PoW 요청자에게 다시 전송될 수 있거나 또는 메타데이터 또는 트랜잭션의 일부 다른 부분에 지정된 바와 같이 다른 엔티티에 전송될 수 있다. 메타데이터는 PoW가 전송되어야 하는 목적지가 어딘지 또는 PoW 요청을 어떤 당사자가 인가하는지를 지시하기 위한 플래그 또는 다른 식별자를 포함할 수 있다. 플래그 또는 식별자 또는 패스워드 등은 PoW 제공자 및/또는 요청자에게만 알려질 수 있다. 이것은 PoW 제공자가 다수의 관련없는 요청자로부터 요청들을 수신할 수 있는 시나리오들에서 유리할 수 있다.
일부 경우들에서, TX0의 검사는 PoW 제공자에 의해 이벤트를 트리거할 수 있다. 예컨대, PoW 제공자가 PoW 제공자와의 계정을 갖는 특정, 인가된 요청자로부터 수신된 것으로 요청을 식별할 수 있기 때문에, 트랜잭션 내의 데이터는 잔액 또는 계정이 업데이트되게 할 수 있다. 추가적으로 또는 대안적으로, PoW 제공자는, 가능하게는 주어진 시간 기간 내에, 주어진 요청자에 대해 지정된 수 초과의 PoW들을 제공하기를 원하지 않을 수 있고, 임계치가 충족되었는지 여부를 결정하기 위해 TX0을 사용할 수 있다. 추가적으로 또는 대안적으로, 경고, 경보 또는 다른 통신은 TX0에서 제공된 데이터에 기초하여 PoW 제공자에 의해 개시될 수 있다.
또 다른 예에서, 제어 기준은, TX0이 가능하게는 미리 지정된 주소에 충분한 양의 암호화폐를 지출하는 것일 수 있고, PoW는 제어 기준이 충족되는 것을 보장하기 위해 TX0의 출력을 체크할 수 있다.
또 다른 예들에서, TX0의 입력들은 불법적이거나 승인되지 않은 소스들로부터의 자금들이 이전 및 수신되지 않는다는 것을 보장하기 위해 검사될 수 있다. 예컨대, PoW 제공자가 특정 당사자로부터 요청을 수신하기를 원하지 않는 경우, 예컨대, 요청들이 불법 활동들과 연관된 것으로 알려지거나 의심되기 때문에, PoW는 요청된 PoW를 생성하는 것을 거절할 수 있다. 따라서, 본 개시내용은 법적 또는 규제 요건의 준수를 보장하기 위한 솔루션을 제공할 수 있고, 사기/범죄 행동을 방지하기 위한 수단을 제공할 수 있다.
본질적으로, 본 발명은, 참가 당사자들 사이의 신뢰를 필요로 하지 않고 효율적인 방식으로, PoW 계산을 병렬화 및 분배하기 위한 인가 메커니즘을 제공한다. 제어 기준은 PoW 계산과 별개로, 가능하게는 그것과 병행하여 체크될 수 있다. 다시 말해서, PoW 요청자로부터 요청이 수신될 때, PoW 제공자는 제어 기준에 대해 수신된 데이터를 확인하기 시작함과 실질적으로 동시에 PoW 계산에 대한 작업을 시작할 수 있다. 수신된 데이터가 제어 기준을 충족시키는 데 실패한 경우, PoW 제공자는 PoW 계산에 대한 작업을 중단할 수 있거나, 수신된 데이터가 기준을 충족시킬 경우, 그는 작업을 계속하도록 허용할 수 있다. 이것은, 요청이 적법하고 인가되고, PoW가 요청자/지정된 목적지에 가능한 한 신속하게 반환될 수 있다는 가정 하에서 이점을 제공한다. 블록체인 채굴이 제1 유효 블록을 네트워크에 제출하기 위한 경쟁을 수반하기 때문에, 이것은 시간-임계 이점을 제공할 수 있다.
사용 예에서:
특히 도 17 및 18을 참조하면, 우리는 이제 본 개시내용이 이러한 양상의 하나의 예시적인 실시예에 따라 어떻게 실행될 수 있는지를 설명한다.
도 13의 PoW 요청자의 관점으로부터:
· 단계(S1300): PoW 요청자(1300)는 자신의 멤풀로부터 확인되지 않은 트랜잭션(TX)을 선택하고, 코인베이스 트랜잭션을 생성한다(관련 프로토콜이 트랜잭션을 필요로 하거나 허용하는 경우). 다른 경우에, 그는 트랜잭션을 PoW 요청자에게 제공하는 다른 소스로부터 트랜잭션들의 세트를 수신할 수 있다.
PoW 요청자는 또한, PoW 제공자 또는 PoW 제공자의 활동들을 인가 및/또는 지시하는 연관된 엔티티에 의해 지정된 인가 요건을 이행하도록 배열되는 적어도 하나의 트랜잭션(TX0)을 생성하거나 획득한다. 우리의 예시적인 예에서, 요건은 TX0가 자산을 적어도 하나의 지정된 주소로 이전하는 적어도 하나의 출력을 포함한다는 것이다.
· 단계(S1320): PoW 요청자(또는 연관된 자원)는 트랜잭션들의 세트에 대한 머클 트리를 생성하기 위해 모든 트랜잭션들을 쌍으로 해싱한다. 머클 트리는 루트(R)를 갖는다.
· 단계(S1330): 일부 실시예들에서, PoW 요청자는 루트(R)를 블록 헤더의 생성에 필요한 다른 정보, 예컨대, 버전 번호, 이전 블록 해시, 난이도 타겟 및/또는 타임스탬프와 컨케터네이팅으로써 블록 메시지(BM)(템플릿)를 생성할 수 있다. 다른 실시예에서, 이러한 값들 중 적어도 하나, 일부 또는 전부는, PoW 요청자에 의해 제공되는 대신에, PoW 제공자에 의해 획득, 리트리브 또는 생성될 수 있다.
· 단계(1340): PoW 요청자는 루트(R)를 (잠재적으로 블록 메시지 BM의 일부로서) PoW 제공자에게 전송한다. 유효성 검증기는 또한, R이 루트인 트리에 의해 표현되는 트랜잭션들의 블록에 TX0이 포함된다는 것을 증명하기 위해 PoW가 사용할 수 있는 머클 증명을 전송한다. 이 머클 증명은, TX0과 함께 쌍으로 함께 해싱될 때, 증명자가 다시 루트에 도달하는 것을 허용하는 트리의 부분을 포함한다. 이러한 방식으로, PoW 요청자는 루트(R), 인가 트랜잭션(TX0), 및 TX0으로부터 R까지의 경로를 생성하는 데 사용될 수 있는 트랜잭션들의 최소 세트만을 PoW 제공자에게 전송할 필요가 있다. PoW 제공자는 (도 19에서) SPV 스타일 검증을 수행하여 PoW 요청자가 인가 기준을 충족시켰다는 것을 체크할 수 있다.
도 18의 PoW 제공자의 관점으로부터:
· 단계(S1400): PoW 제공자(1000)는 PoW 요청자로부터 트랜잭션들의 세트에 대한 머클 루트를 수신한다. 이들 트랜잭션은, PoW가 PoW 요청자를 대신하여 PoW를 생성하는 블록의 본문을 형성할 것이다. 위에서 설명된 바와 같이, 트랜잭션들의 세트는 멤풀, 적어도 하나의 인가 트랜잭션(TX0), 및 관련된다면 코인베이스 트랜잭션으로부터 선택된 하나 이상의 트랜잭션들을 포함할 수 있다. 머클 루트(R)는 완전한 또는 불완전한 블록 메시지의 일부로서 PoW 요청자로부터 수신될 수 있다. PoW 제공자는 또한 적어도 하나의 인가 요건을 이행하도록 배열되는 적어도 하나의 트랜잭션(TX0), 및 TX0가 트랜잭션의 세트에 포함된다는 것을 확인하기 위한 머클 증명으로서 역할을 하는 트랜잭션들의 세트의 일부를 수신한다.
· 단계(S1410): PoW 제공자는, SPV 스타일 로컬 검증을 수행하여 TX0이 세트에 있다는 것을 확인하고, PoW 요청자가 인가 요건(들)을 충족시켰다는 것을 체크하기 위해 머클 증명을 사용한다.
· 단계(S1420): 검증이 실패하면, PoW는 PoW 계산을 진행하도록 인가되지 않는다. 그는, PoW 계산기에 유효한 논스의 발견에 대해 작업을 시작하도록 지시하지 않거나 그들이 이미 작업을 시작한 경우 그들에게 중지하도록 지시함으로써 프로세스를 종료한다. 어떠한 블록 헤더도 PoW 요청자에게 전송되지 않을 것이다. 그러나, PoW 생성에 대한 인가가 실패했음을 나타내기 위한 경고, 신호 또는 메시지가 PoW 요청자 또는 다른 목적지로 전송될 수 있다.
대안으로, 검증이 성공하면, PoW 생성이 진행하도록 인가된다
· 단계(S1430): PoW를 생성하기 위해, 계산기(19.1100a, 19.1100b 또는 19.1100c)는 논스를 선택하거나 수신한다. 이것은 랜덤하게 생성되거나 또는 제어기(1200)에 의해 계산기에 지정된 허용된 논스의 범위로부터 선택될 수 있다.
· 단계(S1440): 계산기는 블록 메시지를 선택된 논스와 컨케터네이팅한다. PoW 요청자가 위에 설명한 바와 같이 완전한 블록 메시지를 제공하지 않았다면, PoW 제공자는 관련 블록체인 프로토콜에 따라 블록 헤더의 생성에 필요한 임의의 추가 데이터를 리트리브, 획득 또는 생성할 수 있다는 것이 유의되어야 한다. 블록 메시지와 논스의 컨케터네이션은 블록 헤더(BH)를 제공한다.
· 단계(S1450): 그런 다음 블록 헤더(BH)가 이중 해싱된다.
· 단계(S1460): 그런 다음 단계(S1450)의 결과가 프로토콜에 의해 설정된 난이도 타겟과 비교되고; 그가 필요한 수의 리딩 제로를 제공하지 않으면, 블록이 원장에 추가될 수 없어서, 다른 논스가 선택되고, 프로세스는 단계(S1430)로 복귀한다.
· 단계(S1470): 그러나, 선택된 논스가 필요한 수의 제로를 생성하는 경우, 블록은 유효하게 채굴될 수 있고, 따라서 유효한 논스를 포함하는 블록 헤더는 PoW 요청자 또는 다른 지정된 목적지로 전송된다.
도면에 도시되지 않지만, 그런 다음 PoW 요청자 또는 다른 엔티티는 온-체인에의 포함을 위해 네트워크에 블록을 제출할 수 있다. 중요하게는, PoW 생성이 전문가인, 전용 PoW 제공자에게 아웃소싱되었기 때문에, PoW 요청자는 PoW 계산과 병행하여 유효성 검증 동작들과 같은 다른 작업들을 프로세싱, 위임 또는 조정할 수 있다. 이것은 트랜잭션의 처리량과 자원의 효율성 측면에서 기술적 향상을 제공한다.
장점:
본 개시내용의 양상들은 다음을 포함하지만 이에 제한되지 않는 다수의 장점들을 제공한다:
1. PoW 계산을 계산하는 노력과 비용은 PoW 요청자에 의해 자신이 선택한 임의의 PoW 제공 서비스(들)에 위임하고 아웃소싱될 수 있다.
2. 이들은 심지어 유효성 검증기가 어떠한 기존 관계도 없는 제공자일 수 있다. 대신에, PoW 요청자와 PoW 제공자 사이의 관계는, PoW 노력을 착수하기 위한 사전 인가로서 역할을 하는 적어도 하나의 사전-지정된 기준을 이행함으로써 지배된다.
일부 구현들에서, PoW 요청자는, PoW 계산 노력을 시작하기 전에, 필요한 기준들이 충족되었다는 것을 보장하기 위해 PoW 제공자가 사용할 수 있는 머클 증명을 전송한다.
3. 이것은 사전 인가의 추가 계층이 PoW 프로세스에 구축되는 것을 허용하는 데, 왜냐하면 PoW 요청자 및 PoW 제공자 둘 모두가 후보 블록이 미리 지정된 또는 합의된 조건들을 이행하는 트랜잭션을 포함한다는 것을 증명할 수 있기 때문이다. 블록이 성공적으로 채굴되고 해당 트랜잭션이 블록체인에 포함되면, 트랜잭션 및 자산의 이전은 불변하게 레코딩될 것이다. 인가 기준이 지정된 주소로의 이전을 요구하는 경우에, PoW 제공자는, 블록이 원장에 기록되면 원하는 이전이 이루어질 것이라고 확신할 수 있다.
4. 따라서, 미리 지정된 기준의 이행은 PoW 제공자에 의해 프로세싱될 데이터에 증명 가능하게 임베딩될 수 있다. 그는 PoW 요청자로부터 별개로 PoW 제공자에게 전송되지는 않는다. 이것은 별개의 통신을 수반하는 접근법들에 비해 더 효율적인 솔루션을 제공한다.
5. 이 솔루션이 채굴 및 유효성 검증 작업의 분배를 허용하므로, 트랜잭션 프로세싱 기능은 블록 헤더의 프로세싱으로부터 분리된다. 따라서, 해시 머신/ASIC 구성요소(들)는 하나 이상의 위치들에 위치될 수 있는 반면, 트랜잭션 프로세싱은 다른 위치(들)에서 수행될 수 있다. 상이한 기능들을 위한 위치들은 에너지 자원들 또는 네트워크 인프라구조와 같은 상이한 요구들에 따라 선택될 수 있다. 예컨대, PoW 제공자가 작은(80 바이트) 블록 헤더를 PoW 요청자에게 반환하기만 하면 되기 때문에, 그는 인터넷에 대한 제한된 액세스가 있더라도 재생 가능 에너지원의 사용을 허용하는 격리된 위치에 위치될 수 있다. 블록 헤더는 낮은 대역폭을 갖는 모바일 폰을 이용하여 전송될 수 있다. 한편, 트랜잭션 프로세싱은 주요 도시와 같이 인터넷 접근성이 양호한 위치에서 수행될 수 있다. 함께, 이것은, 지속 가능하고 환경 친화적인 에너지 공급의 사용을 포함하여, 보다 다용적이고 효율적인 작업의 분배를 허용한다.
6. 적법한 요청자로부터의 요청들만이 작용되는 것을 보장하기 위해 TX0이 제어 기준에 대해 비교될 수 있다는 점에서 추가적인 보안이 제공될 수 있다. 이것은 인가되지 않은 당사자, 공격자와 같은 악의적인 당사자에 의한 이용 및/또는 바람직하지 않거나 불법적인 활동 및 따라서 범죄 활동과 잠재적으로 연관된 당사자에 대한 PoW 작업의 제공을 피할 수 있다.
7. 요청자가 TX0을 통해 제공된 제어 데이터를 통해 다양한 방식으로 자신을 식별할 수 있기 때문에, 블록체인 채굴을 위한 인증 및 제어 기법이 개선되었다.
가능한 실시예의 예시적인 시스템
도 7 및 도 9는 설명된 실시예들 중 적어도 일부, 특히 본 개시내용의 분산된 유효성 검증 양상들을 구현하기 위한 예시적인 시스템(700)을 예시한다. 도 8은 본 개시내용의 방법(의 고레벨의 관점)에서 취해질 수 있는 예시적인 단계들의 흐름도를 예시한다. 도 20은 더 많은 구성요소를 포함하여 시스템 전체의 보다 포괄적으로 뷰를 도시한다
도 7 및 9 및 유효성 검증 구성요소에 관련하여, 시스템(700)은 조직과 연관될 수 있고 더 큰 독점 시스템의 일부를 형성할 수 있다는 점에서 폐쇄형 시스템일 수 있다. 그러한 경우들에, 그의 데이터 예컨대, 트랜잭션들은 조직의 더 넓은 시스템 내의 다른 구성요소들로부터 수신될 수 있고 그의 결과들 및 출력들은 내부 목적지들로 전송될 수 있다. 부가적으로 또는 대안적으로, 시스템(700)은 일부 또는 전부가 조직 외부에 로케이팅될 수 있는 다양한 엔티티들과 인터페이스하도록 배열될 수 있다. 이러한 경우들에서 시스템(700)은 서비스로서 유효성 검증 기능들을 제공하도록 구성될 수 있다. 예컨대, 시스템(700)은 그것이 요구하는 데이터를 획득하기 위해 블록체인 네트워크와 상호작용하도록 배열될 수 있다. 부가적으로 또는 대안적으로, 시스템은 그의 유효성 검증 서비스를 사용하려는 엔티티들과 상호작용할 수 있다. 따라서 시스템(700)의 활동들은 특정 조직 또는 엔티티에 대해 단지 내부적일 수 있고, 다른 당사자들에게 유효성 검증 서비스들을 제공하기 위해 외부 엔티티들과 상호작용하도록 개방될 수 있고, 이 둘이 결합일 수도 있다. 다른 내부 또는 외부 엔티티들 간의 통신들은 도 9에서 902로서 도시된, 하나 이상의 인터페이스 또는 통신 구성요소들에 의해 조정될 수 있다.
도 7 및 도 9에 도시된 바와 같이, 시스템(700)은 제어 엔티티(702)(또는 간단히 "제어기") 및 복수의 유효성 검증 자원들(704) ― 본원에서 간단히 "유효성 검증기"로서 또한 지칭됨 ― 을 포함한다. 도 7에는 단지 4개의 유효성 검증기들(701a-d)만이 도시되지만, 일반적으로 시스템(700)은 임의의 수의 유효성 검증기들을 포함할 수 있다. 더욱이, 제어기(702)는 유효성 검증기들(704)과 별개로 도 7 및 도 9에 도시되지만, 제어기(702)가 유효성 검증기들(704) 중 하나를 포함하거나 이에 포함될 수 있다는 것이 배제되지 않는다. 위에서 설명된 바와 같이, 각각의 유효성 검증기는 하나 이상의 프로세싱 자원들을 포함할 수 있고 자체 내부 활동들의 조정을 위한 자체 제어기를 포함할 수 있다. 이러한 방식으로 구현할 수 있는 계층적 레벨들에는 기술적 또는 논리적 제한이 없다. 그러나 도 7은 단순성 및 이해의 용이성을 위해 이러한 계층 구조의 단 하나의(최상위) 레벨만을 도시한다.
도 7에 도시된 바와 같이, 제어기(702)는 트랜잭션들의 세트를 획득한다. 트랜잭션들은 전송 자원으로부터 전자 채널 또는 네트워크를 통해 수신될 수 있다. 전송자는 위에서 설명된 바와 같이 시스템 조직 내부 또는 외부의 일종의 유효성 검증 체크를 수행하려는 임의의 엔티티일 수 있다. 예컨대, 이는 블록체인 네트워크 상의 전체 노드 이를테면, 도 1의 노드(104), 디지털 지갑, 당사자들 간 블록체인 구현 이전과 관련된 로컬 체크를 수행하려는 판매자/SPV 노드일 수 있다. 인터페이스(들)(902)는 시스템(700)과 시스템 외부의 소스들 간의 데이터의 송신을 용이하게 할 수 있다.
트랜잭션들은 트랜잭션들의 블록을 형성하거나 형성할 수 있다. 트랜잭션들은 단일 자원(예컨대, 블록체인의 블록으로부터의) 또는 상이한 자원들(예컨대, 한 명 이상의 사용자들, 하나 이상의 블록체인 노드들 등)으로부터 획득될 수 있다. 트랜잭션들은 이들이 블록체인 상에 게시되기 전에, 즉 블록에 레코딩되기 전에 획득될 수 있다. 대안적으로, 트랜잭션들은 블록체인 상에 레코딩된 후 획득될 수 있다.
제어기(702)는 본원에서 설명된 바와 같이 각각의 유효성 검증기(704)에 트랜잭션들의 개개의 서브세트를 할당한다. 트랜잭션들의 각각의 서브세트는 트랜잭션들의 전체 세트에 기초하여 생성된 머클 트리의 개개의 부분의 적어도 일부를 형성하며, 머클 트리의 개개의 공통 내부 노드에 의해 링크된다. 도 7의 예에서, 트랜잭션 서브세트 A는 유효성 검증기 A에 할당되고, 트랜잭션 서브세트 B는 유효성 검증기 B에 할당되며, 트랜잭션 서브세트 C는 유효성 검증기 C에 할당되고, 트랜잭션 서브세트 D는 유효성 검증기 D에 할당된다. 트랜잭션들의 서브세트가 할당되면, 유효성 검증기(704)는 그 후 각자의 서브세트를 프로세싱한다. 일부 실시예들에서, 이는 각각의 유효성 검증기(704)가 트랜잭션들의 자신의 개개의 서브세트를 유효성 검증하는 것을 수반한다. 이를 위해, 제어기(702)는 관련 트랜잭션을 개개의 유효성 검증기(704)에 송신할 수 있다. 유효성 검증기들(704)은 트랜잭션들의 각자의 서브세트 각각이 유효하거나 적어도 하나의 트랜잭션이 유효하지 않음을 표시하기 위해 제어기(704)와 다시 통신할 수 있다.
유효성 검증기들(704a 내지 704d) 중 적어도 하나, 바람직하게는 일부 또는 전부는 도 9에서 901a 내지 901d로서 도시된 자체 UTXO 풀들에 대한 액세스를 갖는다. 이 풀은 잠재적으로, 블록 ID 및 트랜잭션 ID의 컨케터네이션을 포함하는 유리한 인덱싱 구조를 갖고 위에서 설명된 데이터베이스와 같은 저장 시설을 포함한다. 도 9에서, 풀들은 개개의 유효성 검증기 내에 포함된 것으로 도시되지만, 당업자는 풀들이 또한/대안적으로 검증기 외부에 있지만 그와 통신하는 것으로 제공될 수 있다는 것을 쉽게 이해할 것이다.
하나 이상의 실시예들에서, 개시된 프로세스는 인입하는 새로운 블록이 블록 레벨 기준들에 대해 테스트되는 동안 블록 레벨 유효성 검증 스테이지를 포함할 수 있다. 예시적인 블록 레벨 기준들은 위에서 설명되며 일반적으로 블록 내의 트랜잭션들과 대조적으로, 블록 자체에 적용 가능한 규정된 포맷팅 요건들 및 특성들 또는 제한들과 관련된다. 예들은 블록 크기, 블록 헤더 구조 또는 콘텐츠, 유사한 기준들을 포함한다. 이러한 동작들은 제어기, 제어기의 구성요소에 의해, 또는 다른 시스템 구성요소에 의해 수행될 수 있다.
일부 실시예들에서, 방법은 새로운 블록 내 트랜잭션에 대한 입력들 각각, 즉 각각의 UTXO가 고유한지를 평가하도록 동작하는 UTXO 고유성 확인 모듈을 더 포함할 수 있다. 동일한 UTXO가 새로운 블록의 입력으로서 한 번을 초과하여 나타나면, 이는 잠재적인 이중 지출 문제를 표시하며 UTXO 고유성 기준들을 위반한다. UTXO 고유성 확인 모듈이 새로운 블록의 트랜잭션 입력들 중에서 한 번을 초과하여 참조되는 UTXO를 식별하면, 이는 오류 신호 또는 블록이 거부됨을 표시하기 위한 다른 인터럽트를 출력할 수 있다.
새로운 블록이 거부되지 않는다고 가정하면, 즉 모든 UTXO 입력들이 고유하다고 가정하면, 머클 트리 세그먼트들이 그 후 식별되고 그의 연관된 트랜잭션들이 유효성 검증기들의 세트 사이에 할당될 수 있다. 식별 프로세스는 도 9에 도시된 세그먼트 식별 유닛(903)과 같은 구성요소에 의해 수행될 수 있다. 할당 프로세스는 도 9에서 904로서 도시된 세그먼트 할당 유닛에 의해 수행될 수 있다. 할당 유닛(904)은 개별 유효성 검증기들 사이에 블록 세그먼트들을 분산하기 위해 다수의 가능한 할당 체계들 중 임의의 하나를 채용할 수 있지만, 유리한 접근법에서, 할당 체계는 위에서 설명된 바와 같이 로드 밸런싱을 목표로 할 수 있다. 할당 유닛(904)은 로드 밸런싱 유닛(905)을 포함할 수 있다(또는 이와 통신할 수 있음). 이는 도 9에서 시스템의 별개의 연관된 구성요소로서 도시되지만, 다른 실시예들에서, 로드 밸런싱 유닛은 할당 유닛(904)의 일부일 수 있거나 제어기(702)에 대해 별개일 수 있다. 구성요소들의 임의의 조합이 쉽게 사용될 수 있다.
개별 유효성 검증기들은 트랜잭션 레벨 유효성 검증 기준들에 대해 이들이 수신한 세그먼트(들)와 연관된 트랜잭션들을 유효성 검증한다. 유효성 검증기들은 그들 사이에 동기화 패러다임을 요구하지 않는데, 그 이유는 유효성 검증기들은 자신들이 할당받은 트랜잭션들이 유효하다는 것을 검증하는 데 있어 독립적으로 각각 작동하기 때문이다. 각각의 유효성 검증기는 자신의 할당된 트랜잭션들의 유효성을 확인하는 결과를 출력한다. 세그먼트 내 모든 트랜잭션들이 유효하다는 것을 확인하기 위해 결과들이 추가되거나 누적된다. 유효성 검증기들 중 하나가 비준수 트랜잭션, 즉 유효하지 않은 트랜잭션을 식별하는 경우, 유효성 검증기는 인터럽트 또는 다른 신호와 같은 출력을 발행하여 유효하지 않은 트랜잭션이 있음을 표시할 수 있다. 해당 인터럽트 또는 신호는 다른 유효성 검증기들 또는 제어기 또는 다른 시스템 구성요소에 전송될 수 있어서, 이들은 각자의 트랜잭션들의 테스트를 즉시 중단하고, 거부될 블록 내의 트랜잭션들을 유효성 검증하는 데 추가 자원을 낭비하지 않을 수 있다.
일부 예들에서, 시스템은 블록 레벨 기준들을 체크하도록 배열될 수 있다. 이는 유효성 검증기들에 대한 세그먼트들의 할당 이전에 수행될 수 있지만, 블록 레벨 유효성 검증 스테이지는 검증기에 의한 트랜잭션 레벨 유효성 검증 테스트 후에 또는 일부 경우들에서, 트랜잭션 레벨 유효성 검증 테스트와 병렬로 발생할 수 있다는 것이 인지될 것이다.
이제 블록을 유효성 검증하는 방법의 일 예를 흐름도 형태로 도시하는 도 8에 대한 참조가 이루어질 것이다. 블록은 복수의 트랜잭션들을 포함하며, 각각의 트랜잭션은 하나 이상의 입력들을 참조하고, 각각의 입력은 UXTO이다(코인베이스 생성 트랜잭션의 경우 제외). 이 방법은 블록체인 네트워크 상의 노드 내에서 적합한 하드웨어 및 프로세서 실행 가능 명령들을 사용하여 구현된다.
동작 시, 분산된 유효성 검증 노드(700)는 단계(S801)에서 새로운 블록 데이터를 수신한다. 이는 전체 블록일 수 있거나, 또는 SPV 관련 유효성 검증의 경우, 이는 SPV 체크를 수행하는 데 요구되는 부분 데이터만을 포함할 수 있다. 우리는 편의상 이 데이터를 "블록"으로서 지칭할 것이다. 유효성 검증될 새로운 블록은 새로운 블록을 생성하고 작업 증명을 완료한 블록체인 네트워크 상의 채굴 노드로부터 수신될 수도 있거나, 또는 이는 (SPV) 체크를 수행하려는 판매자 노드로부터 수신될 수 있거나, 또는 이는 SPV 지갑과 같은 지갑으로부터 수신될 수 있다. 새로운 블록은 네트워크 내 다른 (비-채굴) 노드로부터 수신될 수 있다. 일부 예들에서, 분산된 유효성 검증 노드(700)는 블록을 네트워크 내 임의의 다른 노드에 포워딩하기 전에 이 블록을 유효성 검증한다. 위에서 논의된 바와 같이, 새로운 블록의 유효성 검증은 블록이 특정 프로토콜 기반 기준들 및/또는 주어진 구현 내에서 지정되고 요구될 수 있는 다른 기준들을 충족한다는 것을 확인하는 것을 포함할 수 있다.
단계 S802에서, 시스템(700)은 블록의 머클 트리의 청크(chunk)들을 식별한다. S803에서, 세그먼트들은 복수의 유효성 검증기들에 분산되고, S804에서, 유효성 검증기들은 트랜잭션들의 각자의 서브세트들을 실질적으로 병렬로 그리고 서로 독립적으로 프로세싱한다. S805에서, 유효성 검증기들은 유효성 검증이 성공했는지 아니면 실패했는지에 관해 제어기에 시그널링한다.
본원에서 병렬 프로세서들의 설명과 관련하여 사용될 때, "프로세서"라는 용어는 반드시 물리적으로 별개의 마이크로프로세서들을 의미하는 것은 아니며 프로세서 기능들을 독립적으로 그리고 병렬로 수행할 수 있는 병렬 프로세싱 자원들을 가능하게 하는 임의의 하드웨어 또는 소프트웨어 구현을 포함할 수 있다는 것이 주의되어야 한다. 병렬 프로세서들은 다수의 코어들을 갖는 하나의 프로세서를 포함할 수 있다. 일부 경우들에서, 병렬 프로세서들은 다수의 별개의 프로세싱 유닛들을 포함할 수 있다. 병렬 프로세서들은 물리적 메모리를 공유할 수 있거나 공유하지 않을 수 있다. 그러나 구현된 각각의 병렬 프로세서는 시그널링을 위한 이를테면, 유효하지 않은 트랜잭션의 식별에 대한 응답으로 신호를 출력하기 위한 소프트웨어 또는 하드웨어 메커니즘을 갖는다. 병렬 프로세서들의 구현은 또한 로컬 프로세싱을 위해 개개의 프로세서들로 할당된 트랜잭션 데이터를 라우팅하기 위해 소프트웨어 및/또는 하드웨어의 필수 데이터 전달 메커니즘을 제공하는 것을 또한 포함한다.
도 20과 관련하여, 도 7 및 도 9의 시스템(700)은 더 크고 더 넓은 시스템(2000)의 하나의 부분 또는 구성요소를 형성한다. 위에 설명한 시스템(700) 외에도, 시스템(2000)은 다음 구성요소들 중 하나 이상을 더 포함할 수 있다:
1) 실질적으로 본 명세서에서 "분산된 채굴"이라는 명칭의 섹션에 설명되고, 도 14 내지 19에 도시되어 있고 열거된 조항 세트 7에 예시된 분산된 채굴 구성요소(19.1000).
2) 실질적으로 본 명세서에서 "레코드"라는 명칭의 섹션에 설명되고, 도 14 내지 19에 도시되고 열거된 조항 세트 6에 예시된 레코드 저장 구성요소(2100);
3) 실질적으로 본 명세서에서 "UTXO 데이터베이스"라는 명칭의 섹션에 설명되고, 도 14 내지 19에 도시되고 열거된 조항 세트 5에 예시된 자원 할당 구성요소(1100).
시스템(700)에서와 같이, 전체 시스템(2000)은 단일 엔티티 또는 엔티티들의 관련 그룹에 의해 소유되거나 제어되는 폐쇄 시스템일 수 있거나, 그는 완전히 독립적인 비-관련 엔티티들에 의해 제어되거나 이와 연관된 구성요소들을 포함할 수 있다. 자원(하드웨어 및 소프트웨어)은 어디에나 위치될 수 있거나, 임의의 적절한 형태를 취할 수 있다. 그러나, 그들은, 예컨대, 원격 통신 링크, LAN 또는 WAN 또는 공용 인터넷을 통해 서로 통신한다.
예컨대, 분산된 유효성 검증 구성요소(700)의 일부를 형성하는 유효성 검증 자원(704a 내지 704d)은 PoW 계산을 수행하기 위해 분산된 채굴 구성요소(19.000)를 사용하기를 원할 수 있다. 따라서, 유효성 검증 구성요소는 도 19의 PoW 요청자(14.1300)가 된다. 유사하게, 도 9의 자원(704a 내지 704d) 또는 제어기(702)는, 그들의 기능의 일부를 이들 다른 시스템 구성요소들에 위임하기 위해 UTXO 데이터베이스(1100) 또는 레코드 저장 메커니즘(2100)과 상호작용할 수 있다.
이것은, 각각의 시스템 구성요소가 시스템 기능의 그 자신의 부분을 전문화할 수 있다는 장점을 제공한다. 결국, 구성요소들이 지정된 전용 서비스를 제공할 수 있기 때문에, 이것은 각각의 구성요소에서 효율성을 향상시킨다.
도 20에서, 각각의 구성요소 유형 중 하나만이 도시되지만, 실제로는 각각의 구성요소 유형 또는 일부 구성요소 유형의 다수의 인스턴스가 제공될 수 있다. 또한, 도 20은 각각의 구성요소를 별개의 것으로서 도시하지만, 일부 실시예들에서 하나 이상의 구성요소들은 다른 구성요소의 서브-구성요소들 또는 서브-시스템들을 형성할 수 있다. 예컨대, 자원 할당 구성요소(1100) 및/또는 레코드 저장 구성요소(2100)는 유효성 검증기 자원(704a) 또는 유효성 검증 시스템(700) 내에 제공될 수 있다. 따라서, 시스템(2000) 구성요소들은 서로에 대해 내부 또는 외부로서 제공될 수 있지만 그와 통신할 수 있다.
열거된 조항들
본 개시내용의 다양한 양상의 실시예들은 예시의 목적으로 그리고 제한 없이 다음의 열거된 조항들에서 제공된다. 본 명세서에 열거되거나, 설명되거나 또는 청구된 특징들은 본 개시내용의 임의의 특정 양상에 대해 배타적인 것으로 의도되지 않는다. 본 개시내용의 일 세트의 열거된 조항들 또는 양상과 관련하여 아래에 언급된 특징들은 그러한 점에서 제한되도록 의도되지 않으며 한 세트의 조항들/양상/실시예와 관련하여 본 명세서에서 언급된 임의의 특징(들)은 다른 세트들의 조항들/양상/실시예 중 하나 이상에 통합될 수 있다.
조항 세트 1:
조항 1.1: 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 프로세싱(예컨대, 유효성 검증)하는 컴퓨터-구현 방법.
바람직하게는, 방법은 또한:
블록체인 트랜잭션들의 개개의 서브세트를 복수의 프로세싱(예컨대, 유효성 검증) 자원들에 할당하는 단계 ― 각각의 개개의 서브세트는 머클 트리의 개개의 부분을 제공할 수 있고 머클 트리의 개개의 내부 노드에 의해 표현될 수 있음 ― ; 및/또는
블록체인 트랜잭션의 각자의 서브세트를 프로세싱(예컨대, 유효성 검증)하도록 복수의 프로세싱(예컨대, 유효성 검증) 자원들을 사용하는 단계를 포함할 수 있다.
부가적으로 또는 대안적으로, 방법은:
복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 전송 또는 수신하는 단계를 포함할 수 있다. 블록체인 블록의 일부는 전송 자원에서 수신 자원으로 전송될 수 있다. 이는 네트워크 예컨대, 인터넷을 통해 전송될 수 있다. 방법은 수신 자원에서 블록체인 블록의 일부를 프로세싱하는 단계를 포함할 수 있다. 수신 자원은 프로세싱 또는 유효성 검증 자원으로서 지칭될 수 있다. 블록체인 블록의 일부는 IPv6 멀티캐스트 송신을 사용하여 전송될 수 있다. 복수의 프로세싱 자원들 중 적어도 하나, 일부 또는 전부는 IPv6 멀티캐스트 그룹의 멤버들일 수 있다. 전송 자원은 네트워크 디바이스를 포함할 수 있다. 네트워크 디바이스는 IPv6 멀티캐스트 통신들을 멀티캐스트 주소로 전송하도록 동작할 수 있다. MLD 스누핑은 네트워크 디바이스에서 가능해질 수 있다. 이는 전송 자원이 블록체인 블록의 일부를 특정 수신 자원들(예컨대, 복수의 프로세싱 자원들 내의 자원들)에 선택적으로 전송할 수 있으므로 네트워크 상의 트래픽의 관점에서 효율성을 제공한다. 네트워크 트래픽이 감소되고 에너지 및 프로세싱 자원들은 데이터가 필요하지 않거나 데이터 수신을 원하지 않는 자원들을 포함하여, 네트워크 상의 모든 자원들에 데이터 패킷들을 전송함으로써 낭비되지 않는다. 이것은 또한 DOS(Denial of Service) 공격들의 가능성을 회피하므로 보안을 개선하고, 더 낮은 네트워크 정체 레벨들로 인해 트랜잭션들의 더 빠른 처리량을 허용함으로써 블록체인 네트워크의 확장성을 또한 용이하게 한다.
"유효성 검증기/프로세싱"이라는 용어는 "유효성 검증/프로세싱 자원"과 상호 교환 가능하게 사용될 수 있다. 복수의 유효성 검증/프로세싱 자원들은 분산된 유효성 검증/프로세싱 노드를 형성 또는 제공할 수 있다. 복수의 유효성 검증/프로세싱 자원들 중 적어도 하나는 하나 이상의 프로세싱 자원들을 포함할 수 있다. 부가적으로 또는 대안적으로, 복수의 유효성 검증 자원들 중 하나 이상은 실질적으로 본원에서 설명된 바와 같은 유효성 검증기 제어기 구성요소를 포함할 수 있다.
개개의 내부 노드는 세그먼트 루트일 수 있다. 즉, "내부 노드"는 전체 트리의 루트 노드도 아니고 리프 노드도 아닌 머클 트리 내 노드이다. 각각의 서브세트 내 트랜잭션들은 개개의 공통 내부 노드를 공유할 수 있다.
대안적인 단어 선택에서, 각각의 서브세트는 서브세트가 머클 트리의 (하위)부분을 제공하고 그리고/또는 그에 의해 표현되도록 머클 트리 내 공통 노드와 연관된 적어도 두 개의 트랜잭션들을 포함할 수 있다. 공통(내부) 노드는 실질적으로 본원에서 설명된 바와 같은 세그먼트 노드 또는 루트일 수 있다. 머클 트리의 일부는 실질적으로 본원에서 설명된 바와 같은 "세그먼트"일 수 있다.
조항 1.2. 조항 1.1에 따른 방법에 있어서, 블록체인 블록 및/또는 블록체인 트랜잭션들의 서브세트를 유효성 검증하는 것은,
i) 적어도 하나의 블록체인 트랜잭션을 유효성 검증 및/또는 검증하는 것; 그리고/또는
ii) SPV(Simplified Payment Verification) 프로세스를 수행하는 것; 그리고/또는
iii) 주어진 블록체인 트랜잭션(Tx)이 블록체인 블록 내에 포함되는지를 확인하는 것; 그리고/또는
iii) 블록체인 트랜잭션들 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자(TxID)와 매칭되는지를 체크하는 것을 포함한다.
조항 1.3. 조항 1.1 또는 조항 1.2에 따른 방법에 있어서,
블록체인 트랜잭션들의 서브세트들 중 적어도 하나는 서브세트와 연관되고, 서브세트를 식별하고 그리고/또는 서브세트를 표현하는 식별자를 포함한다.
조항 1.4. 조항 1.3에 따른 방법에 있어서,
식별자는 머클 트리 내에서 적어도 하나의 서브세트의 포지션의 계산을 용이하게 한다.
조항 1.5. 조항 1.3 또는 조항 1.4에 따른 방법에 있어서,
식별자는 블록체인 트랜잭션들의 적어도 하나의 서브세트 내의 블록체인 트랜잭션의 해시의 일부를 포함한다.
조항 1.6. 임의의 선행하는 조항에 따른 방법에 있어서,
블록체인 트랜잭션들의 개개의 서브세트들을 복수의 유효성 검증 자원들에 할당하는 단계는, 트랜잭션들의 서브세트들과 연관된 개개의 식별자들에 기초하여 개개의 서브세트들을 개개의 유효성 검증 자원들에 매칭하는 단계를 포함한다.
조항 1.7. 임의의 선행하는 조항에 따른 방법에 있어서,
i) 블록체인 트랜잭션들의 적어도 하나의 서브세트를 복수의 유효성 검증 자원들 중 적어도 하나에 다운로드하는 단계; 및/또는
ii) 블록체인 트랜잭션들의 적어도 하나의 서브세트를 복수의 유효성 검증 자원들 중 적어도 하나에 전송하는 단계를 더 포함한다.
조항 1.8. 임의의 선행하는 조항에 따른 방법에 있어서,
머클 트리는 이진 트리 또는 복수의 블록체인 트랜잭션들의 해시들의 메쉬를 포함한다.
조항 1.9. 임의의 선행하는 조항에 따른 방법에 있어서,
복수의 블록체인 트랜잭션들 내에서 블록체인 트랜잭션들의 서브세트들을 식별 및/또는 결정하는 단계를 더 포함한다.
조항 1.10. 임의의 선행하는 조항에 따른 방법에 있어서,
복수의 유효성 검증 자원들 중 적어도 하나는 다음:
가상 머신, 서버, GPU 기반 컴퓨팅 자원, 프로세싱 스레드 및/또는 다중 프로세서 시스템 중 하나 이상이거나 하나 이상을 포함한다.
조항 1.11. 임의의 선행하는 조항에 따른 방법에 있어서,
i) 적어도 2개의 트랜잭션들이 머클 트리 내 형제들이고; 그리고/또는
ii) 공통 노드는 적어도 2개의 트랜잭션들의 부모 또는 조상이다.
조항 1.12. 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 유효성 검증하도록 동작하는 블록체인 유효성 검증 시스템으로서,
시스템은 복수의 유효성 검증 자원들을 포함하며, 각각의 유효성 검증 자원은:
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금, 임의의 선행하는 조항의 컴퓨터-구현 방법을 수행하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함한다.
조항 1.13. 실행 가능한 명령들이 저장되어 있는 비-일시적 컴퓨터-판독 가능 저장 매체로서, 명령들은 컴퓨터 시스템의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금 조항 1.1 내지 조항 1.11 중 어느 한 조항의 컴퓨터-구현 방법을 수행하게 한다.
본 개시내용의 다른 양상에 따르면, 본원에서 설명되거나 청구된 임의의 방법 단계 또는 방법 단계들의 조합을 수행하도록 배열된 컴퓨터 구현 시스템이 제공된다.
또한, 복수의 컴퓨터 구현 노드들을 포함하는 블록체인 시스템(네트워크)이 제공되며, 여기서 블록체인 네트워크 내 각각의 노드는,
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금, 본원에서 설명되거나 청구된 컴퓨터 구현 방법의 임의의 변동을 수행하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함한다.
네트워크는 본원에서 설명된 바와 같이 블록체인 프로토콜을 사용하여 동작하도록 배열될 수 있다.
부가적으로 또는 대안적으로, 본 개시내용은 블록체인 블록의 적어도 일부를 다운로드하는 컴퓨터 구현 방법을 포함할 수 있다. 블록은 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함할 수 있다. 방법은 다음 조항들 중 하나 이상에 제시된 단계들을 포함할 수 있다:
조항 세트 2:
조항 2.1. 컴퓨터-구현 방법. 방법은 바람직하게는 블록체인 블록의 적어도 일부를 수신, 예컨대, 다운로드하는 단계를 포함하고, 바람직하게는, 블록은 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하고, 방법은 바람직하게는:
블록체인 트랜잭션들의 개개의 서브세트를 복수의 프로세싱 자원들에 할당하는 단계 ― 각각의 개개의 서브세트는 머클 트리의 개개의 부분을 제공하고 머클 트리의 개개의 내부 노드에 의해 표현됨 ― ; 및/또는
블록체인 트랜잭션들의 각자의 서브세트를 수신 예컨대, 다운로드하기 위해 복수의 프로세싱 자원들 중 하나, 일부 또는 전부를 사용하는 단계를 포함한다.
하나 이상의 실시예들에 따르면, 프로세싱 자원들 중 하나, 일부 또는 전부는 제공(전송) 자원으로부터 블록체인 트랜잭션들의 각자의 서브세트를 수신할 수 있다. 이는 네트워크 예컨대, 인터넷을 통해 전송될 수 있다. 블록체인 트랜잭션들의 개개의 서브세트는 IPv6 멀티캐스트 송신을 사용하여 전송될 수 있다. 복수의 프로세싱 자원들 중 적어도 하나, 일부 또는 전부는 IPv6 멀티캐스트 그룹의 멤버들일 수 있다. 전송 자원은 네트워크 디바이스를 포함할 수 있다. 네트워크 디바이스는 IPv6 멀티캐스트 통신들을 멀티캐스트 주소로 전송하도록 동작할 수 있다. MLD 스누핑은 네트워크 디바이스에서 가능해질 수 있다. 이는 전송 자원이 블록체인 트랜잭션들의 서브세트들을 특정 수신 자원들(예컨대, 복수의 프로세싱 자원들 내의 자원들)에 선택적으로 전송할 수 있으므로 네트워크 상의 트래픽의 관점에서 효율성을 제공한다. 네트워크 트래픽이 감소되고 에너지 및 프로세싱 자원들은 데이터가 필요하지 않거나 데이터 수신을 원하지 않는 자원들을 포함하여, 네트워크 상의 모든 자원들에 데이터 패킷들을 전송함으로써 낭비되지 않는다. 이것은 또한 DOS(Denial of Service) 공격들의 가능성을 회피하므로 보안을 개선하고, 더 낮은 네트워크 정체 레벨들로 인해 트랜잭션들의 더 빠른 처리량을 허용함으로써 블록체인 네트워크의 확장성을 또한 용이하게 한다.
각각의 개별 서브세트는 개개의 내부 노드가 개개의 서브세트를 인코딩할 수 있다는 의미에서 개개의 내부 노드에 의해 표현될 수 있다. 즉, 개개의 내부 노드는 개개의 서브세트에 기초하여(즉, 개개의 서브세트의 함수로서) 생성될 수 있다. 개개의 서브세트 내 각각의 트랜잭션은 하나 이상의 해싱 동작들에 의해 개개의 내부 노드에 링크될 수 있다.
조항 2.2. 조항 2.1에 따른 방법에 있어서,
복수의 프로세싱 자원들 중 하나, 일부 또는 전부는 블록체인 트랜잭션들의 각자의 서브세트를 중앙 저장 로케이션으로 전송하는 단계를 포함한다.
조항 2.3. 조항 2.2에 따른 방법에 있어서,
머클 트리의 개개의 내부 노드는 머클 트리에서 개개의 포지션을 갖고, 방법은,
머클 트리의 개개의 내부 노드의 개개의 포지션에 기초하여 블록체인 트랜잭션들의 개개의 서브세트들을 배열하는 단계를 포함한다.
조항 2.4. 임의의 선행하는 조항에 따른 방법에 있어서,
블록체인 트랜잭션들의 개개의 다운로드된 서브세트에 기초하여 머클 트리의 개개의 후보 내부 노드를 생성하는 프로세싱 자원들 중 하나, 일부 또는 전부를 포함하고; 그리고 방법은 다음:
개개의 후보 내부 노드가 머클 트리의 개개의 내부 노드와 매칭된다는 것을 검증하는 단계; 및/또는;
머클 트리의 루트에 기초하여 머클 증명을 수행함으로써 개개의 후보 내부 노드가 머클 트리의 노드임을 검증하는 단계; 및/또는
머클 트리의 개개의 후보 내부 노드를 하나 이상의 다른 프로세싱 자원들로 전송하는 단계 중 적어도 하나를 더 포함한다.
조항 2.5. 임의의 선행하는 조항에 따른 방법에 있어서,
블록체인 트랜잭션들의 각자의 서브세트를 유효성 검증하기 위해 복수의 프로세싱 자원들 중 하나, 일부 또는 전부를 사용하는 단계를 포함한다.
조항 2.6. 조항 2.1에 따른 방법에 있어서,
블록체인 트랜잭션들의 개개의 서브세트를 유효성 검증하는 것은,
i) 적어도 하나의 블록체인 트랜잭션을 유효성 검증 및/또는 검증하는 것; 그리고/또는
ii) SPV(Simplified Payment Verification) 프로세스를 수행하는 것; 그리고/또는
iii) 주어진 블록체인 트랜잭션이 블록체인 블록 내에 포함되는지를 확인하는 것; 그리고/또는
iii) 블록체인 트랜잭션들 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자와 매칭되는지를 체크하는 것을 포함한다.
조항 2.7. 임의의 선행하는 조항에 따른 방법에 있어서,
블록체인 트랜잭션들의 개개의 서브세트들 중 적어도 하나는 개개의 서브세트와 연관되고, 개개의 서브세트를 식별하고 그리고/또는 개개의 서브세트를 표현하는 개개의 식별자를 포함한다.
조항 2.8. 조항 2.7에 따른 방법에 있어서,
개개의 식별자는 머클 트리 내에서 적어도 하나의 개개의 서브세트의 개개의 포지션의 계산을 용이하게 한다.
조항 2.9. 조항 2.7 또는 조항 2.8에 따른 방법에 있어서,
개개의 식별자는 머클 트리의 개개의 내부 노드에 기초한다.
10. 제9 항에 따른 방법에 있어서,
개개의 식별자는 머클 트리의 개개의 내부 노드의 부분을 포함한다.
조항 2.11. 임의의 선행하는 조항에 따른 방법에 있어서,
블록체인 트랜잭션들의 개개의 서브세트를 복수의 개개의 프로세싱 자원들에 할당하는 단계는, 트랜잭션들의 개개의 서브세트들과 연관된 개개의 식별자들에 기초하여 개개의 서브세트들을 개개의 프로세싱 자원들에 매칭하는 단계를 포함한다.
조항 2.12. 임의의 선행하는 조항에 따른 방법에 있어서,
머클 트리는 이진 트리 또는 복수의 블록체인 트랜잭션들의 해시들의 메쉬 구조를 포함한다.
조항 2.13. 임의의 선행하는 조항에 따른 방법에 있어서,
복수의 블록체인 트랜잭션들 내에서 블록체인 트랜잭션들의 서브세트들을 식별 및/또는 결정하는 단계를 포함한다.
조항 2.14. 임의의 선행하는 조항에 따른 방법에 있어서,
복수의 프로세싱 자원들 중 적어도 하나는 가상 머신, 서버, GPU 기반 컴퓨팅 자원, 또는 멀티프로세서 시스템이거나 이를 포함한다.
조항 2.15. 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 부분을 다운로드하도록 동작하는 블록체인 프로세싱 시스템으로서, 여기서 시스템은 복수의 프로세싱 자원들을 포함하며, 각각의 프로세싱 자원은:
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금, 임의의 선행하는 조항의 컴퓨터-구현 방법을 수행하게 하거나 가능하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함한다.
조항 2.16. 실행 가능한 명령들이 저장되어 있는 비-일시적 컴퓨터-판독 가능 저장 매체로서, 명령들은 컴퓨터 시스템의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금 조항 2.1 내지 조항 2.14 중 어느 한 조항의 컴퓨터-구현 방법을 수행하게 하거나 가능하게 한다.
다른 양상들에 따르면, 실행 가능한 명령들이 저장되어 있는 비-일시적 컴퓨터-판독 가능 저장 매체가 제공되며, 이 명령들은 컴퓨터 시스템의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금 본원에서 설명되거나 청구된 컴퓨터-구현 방법의 임의의 버전을 수행하게 한다.
조항 세트 3:
조항 3.1. 컴퓨터 구현 방법으로서, 방법은 바람직하게는:
각각이 블록체인 블록의 복수의 블록체인 트랜잭션(TX)들 내 트랜잭션(Tx)과 연관된 복수의 미지출 트랜잭션 출력(UTXO)들을 레코딩, 검색 및/또는 프로세싱하기 위한 제1 출력 리포지토리를 생성, 저장 및/또는 유지하는 단계를 중 적어도 하나를 포함하고, 그리고
바람직하게는 여기서:
복수의 블록체인 트랜잭션들은 블록체인 블록에 대한 머클 트리의 일부를 제공하고 그리고/또는 그에 의해 표현된다.
조항 3.2. 조항 3.1에 따른 방법에 있어서,
적어도 하나의 추가 출력(예컨대, UTXO) 리포지토리를 생성, 저장 및/또는 유지하는 것을 포함한다.
조항 3.3. 조항 3.1 또는 조항 3.2에 따른 방법에 있어서,
출력 리포지토리와 관련된 액션들, 변경들 및 이벤트들의 이력을 포함하는 데이터베이스 로그를 생성 및/또는 유지하는 단계를 더 포함한다.
조항 3.4. 임의의 선행하는 조항에 따른 방법에 있어서,
제1 및/또는 적어도 하나의 추가 출력 리포지토리는 다음:
i) 미지출 트랜잭션 출력(UTXO); 및/또는
ii) a) 미지출 트랜잭션 출력 및/또는 b) 복수의 블록체인 트랜잭션들 내 트랜잭션(Tx)과 연관된 식별자와 연관된 적어도 하나의 레코드를 포함한다.
조항 3.5. 조항 3.4에 따른 방법에 있어서,
적어도 하나의 레코드는 다음:
i) 블록체인 블록과 연관된 블록 식별자(block_ID); 및/또는
ii) 복수의 블록체인 트랜잭션들 내 트랜잭션(Tx)과 연관된 트랜잭션 식별자(TxID)를 갖는 레코드 식별자를 포함한다.
조항 3.6. 조항 3.5에 따른 방법에 있어서,
i) 레코드 식별자는 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 함수를 포함하고; 그리고/또는
ii) 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 컨케터네이션; 및/또는
iii) 복수의 블록체인 트랜잭션들의 트랜잭션은 미지출 트랜잭션 출력(UTXO)과 연관된다.
조항 3.7. 조항 3.5 또는 조항 3.6에 따른 방법에 있어서,
출력 리포지토리에서 적어도 하나의 레코드를 검색, 식별, 액세스 또는 삽입하기 위해 레코드 식별자를 사용하는 단계를 더 포함한다.
조항 3.8. 임의의 선행하는 조항 중 임의의 조항에 따른 방법에 있어서,
복수의 미지출 트랜잭션 출력(UTXO)들 내 적어도 하나의 미지출 트랜잭션 출력(UTXO)은 출력 리포지토리에서 잠금 플래그와 연관되며, 이 잠금 플래그는,
i) 미지출 트랜잭션 출력(UTXO)이 지출에 사용 가능한지 아니면 이용 불가능한지를 표시하고; 그리고/또는
ii) 미지출 트랜잭션 출력의 지출이 허용됨을 표시하는 제1 상태와 미지출 트랜잭션 출력의 지출이 금지됨을 표시하는 제2 상태 사이에서 구성 가능하다.
조항 3.9. 조항 3.8에 따른 방법에 있어서, 방법은:
i) 미지출 트랜잭션 출력(UTXO)을 잠금 플래그와 연관시키는 단계; 및/또는
ii) 잠금 플래그의 상태를 제1 상태로부터 제2 상태로 변경하거나, 제2 상태로부터 제1 상태로 변경하는 단계를 포함한다.
조항 3.10. 조항 3.8 또는 조항 3.9에 따른 방법에 있어서,
적어도 하나의 추가 프로세싱 자원이 제1 상태로부터 제2 상태로, 또는 제2 상태로부터 제1 상태로 미지출 트랜잭션 출력과 연관된 잠금 플래그의 상태를 변경하게 하도록 제1 프로세싱 자원으로부터 적어도 하나의 추가 프로세싱 자원으로 통신을 전송하는 단계를 포함한다.
조항 3.11. 조항 3.10에 따른 방법에서, 통신은,
i) 트랜잭션(TX), 트랜잭션 식별자(TxID) 및/또는 트랜잭션(Tx)의 해시; 및
ii) 하나 이상의 미지출 트랜잭션 출력(UTXO)들의 목록을 포함한다.
조항 3.12. 조항 3.10 또는 3.11에 따른 방법에 있어서,
적어도 하나의 추가 프로세싱 자원에서 통신을 수신하는 단계;
잠금 플래그의 상태를 제1 상태로부터 제2 상태로 변경하거나, 제2 상태로부터 제1 상태로 변경하는 단계를 포함한다.
조항 3.13. 임의의 선행하는 조항에 따른 방법에 있어서,
i) 머클 트리의 일부는 블록체인 블록에 대한 머클 트리의 하위 부분 또는 세그먼트이고; 그리고/또는
ii) 복수의 블록체인 트랜잭션들은 머클 트리의 내부 노드에 의해 표현된다.
조항 3.14. 복수의 프로세싱 자원들을 포함하는 블록체인 구현 시스템으로서, 각각의 프로세싱 자원은,
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금, 임의의 선행하는 조항의 컴퓨터-구현 방법을 수행하게 하거나 가능하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함한다.
15. 실행 가능한 명령들이 저장되어 있는 비-일시적 컴퓨터-판독 가능 저장 매체로서, 명령들은 컴퓨터 시스템의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금 조항 3.1 내지 조항 3.13 중 어느 한 조항의 컴퓨터-구현 방법을 수행하게 하거나 가능하게 한다.
조항 세트 4:
조항 세트 4의 임의의 조항 또는 조항의 조합에 정의된 임의의 실시예는 본 명세서의 임의의 다른 조항 세트(들)의 임의의 조항(들)을 구현하거나 그와 결합하도록 배열될 수 있다.
본 개시내용은 유효성 검증 구성요소를 포함하는 시스템을 포함할 수 있다. 시스템 및/또는 유효성 검증 구성요소는 적어도 하나의 블록체인 트랜잭션 및/또는 트랜잭션들의 블록체인 블록의 분산된 유효성 검증을 용이하게 하고 그리고/또는 가능하게 하도록 동작할 수 있다.
유효성 검증 구성요소는 조항 세트 4의 다음 조항에 따라 제공될 수 있다.
조항 4.1. 복수의 블록체인 트랜잭션들 및 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 유효성 검증하도록 동작하는 시스템으로서:
복수의 유효성 검증 자원들을 포함하고, 각각의 유효성 검증 자원은,
적어도 하나의 프로세서에 의한 실행의 결과로서 유효성 검증 자원이 복수의 블록체인 트랜잭션들 중 적어도 하나의 서브세트를 유효성 검증하게 하거나 가능하게 하는 실행 가능한 명령들을 저장하는 메모리의 적어도 일부와 연관된 적어도 하나의 프로세서를 포함하고,
적어도 하나의 서브세트는 머클 트리의 일부를 제공하고 머클 트리의 내부 노드에 의해 표현된다.
시스템은 복수의 유효성 검증 자원들을 포함하는 유효성 검증 구성요소를 포함할 수 있다.
조항 4.2. 조항 4.1에 따른 시스템에 있어서,
i) 복수의 유효성 검증 자원들 사이에서 복수의 블록체인 트랜잭션들의 복수의 서브세트들의 분산의 밸런싱을 용이하게 하도록 배열된 로드 밸런싱 구성요소; 및/또는
ii) 복수의 블록체인 트랜잭션들의 적어도 하나의 서브세트의 식별을 용이하게 하도록 배열된 세그먼트 식별 구성요소; 및/또는
iii) 할당 유닛; 및/또는
iv) 시스템과 하나 이상의 데이터 소스들 또는 목적지들 간의 통신들을 전송하거나 수신하기 위한 하나 이상의 인터페이스들을 더 포함한다.
조항 4.3. 조항 4.1 또는 조항 4.2에 따른 시스템에 있어서,
시스템은 다음:
적어도 하나의 유효성 검증 자원;
적어도 하나의 유효성 검증 자원의 적어도 하나의 프로세서;
하나 이상의 인터페이스들;
하나 이상의 로드 밸런싱 구성요소들; 및/또는
복수의 블록체인 트랜잭션들의 적어도 하나의 서브세트의 식별을 용이하게 하도록 배열된 하나 이상의 세그먼트 식별 구성요소들 중 적어도 하나의 동작들에 영향을 미치거나 제어하도록 배열된 적어도 하나의 제어기 구성요소를 포함한다.
조항 4.4. 임의의 선행하는 조항에 따른 시스템에 있어서,
i) 복수의 블록체인 트랜잭션들 내 적어도 2개의 트랜잭션은 머클 트리 내 형제들이고; 그리고/또는
ii) 내부 노드는 블록체인 트랜잭션들의 서브세트의 부모 또는 조상이다.
조항 4.5. 임의의 선행하는 조항에 따른 시스템에 있어서,
복수의 출력 리포지토리들을 더 포함하고, 복수의 출력 리포지토리들 내 각각의 리포지토리는 개개의 유효성 검증 자원과 연관되며, 복수의 미지출 트랜잭션 출력(UTXO)들의 레코딩, 검색 및/또는 프로세싱을 용이하게 하도록 배열되고;
바람직하게는 복수의 미지출 트랜잭션 출력들 각각은 복수의 블록체인 트랜잭션들 내 적어도 하나의 트랜잭션(Tx)과 연관된다.
조항 4.6. 조항 4.5에 따른 시스템에 있어서, 시스템은,
복수의 출력 리포지토리들 중 적어도 하나와 관련된 액션들, 변경들 및 이벤트들의 이력을 포함하는 데이터베이스 로그를 생성 및/또는 유지하도록 동작한다.
조항 4.7. 임의의 선행하는 조항에 따른 시스템에 있어서,
복수의 출력 리포지토리들 중 적어도 하나는 다음:
i) 미지출 트랜잭션 출력; 및/또는
ii) a) 미지출 트랜잭션 출력 및/또는 b) 복수의 블록체인 트랜잭션들 내 트랜잭션(Tx)과 연관된 식별자와 연관된 적어도 하나의 레코드를 포함한다.
조항 4.8. 조항 4.7에 따른 시스템에 있어서,
적어도 하나의 레코드는 다음:
i) 블록체인 블록과 연관된 블록 식별자(block_ID); 및/또는
ii) 복수의 블록체인 트랜잭션들 내 트랜잭션(Tx)과 연관된 트랜잭션 식별자(TxID)를 갖는 레코드 식별자를 포함한다.
조항 4.9. 조항 4.7 또는 조항 4.8에 따른 시스템에 있어서,
레코드 식별자는 다음:
i) 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 함수; 및/또는
ii) 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 컨케터네이션을 포함한다.
조항 4.10. 조항 8 또는 조항 9에 따른 시스템에 있어서, 시스템은,
복수의 출력 리포지토리들 내 적어도 하나의 UTXO 리포지토리에서 적어도 하나의 레코드를 검색, 식별, 액세스 또는 삽입하기 위해 레코드 식별자를 사용하도록 동작한다.
조항 4.11 조항 4.5 내지 조항 4.10 중 임의의 조항에 따른 시스템에 있어서,
복수의 미지출 트랜잭션 출력(UTXO)들 내 적어도 하나의 미지출 트랜잭션 출력(UTXO)은 잠금 플래그와 연관되고, 이 잠금 플래그는,
i) 미지출 트랜잭션 출력(UTXO)이 지출에 사용 가능한지 아니면 이용 불가능한지를 표시하고; 그리고/또는
ii) 미지출 트랜잭션 출력의 지출이 허용됨을 표시하는 제1 상태와 미지출 트랜잭션 출력의 지출이 금지됨을 표시하는 제2 상태 사이에서 구성 가능하다.
조항 4.12. 조항 4.11에 따른 시스템에 있어서, 시스템은,
잠금 플래그의 상태를 제1 상태로부터 제2 상태로 변경하거나, 제2 상태로부터 제1 상태로 변경하도록 동작한다.
조항 4.13. 임의의 선행하는 조항에 따른 시스템에 있어서, 시스템은,
i) 블록체인 트랜잭션의 개개의 서브세트를 복수의 유효성 검증 자원들에 할당하고; 그리고
ii) 블록체인 트랜잭션들의 개개의 서브세트들을 다운로드 및/또는 수신하도록 복수의 유효성 검증 자원들 중 하나, 일부 또는 전부를 사용하도록 동작한다.
조항 4.14. 임의의 선행하는 조항에 따른 시스템에 있어서,
블록체인 트랜잭션들의 개개의 다운로드된 서브세트에 기초하여 머클 트리의 개개의 후보 내부 노드를 생성하도록 유효성 검증 자원들 중 하나, 일부 또는 전부를 사용하도록 동작하고, 추가로, 다음:,
개개의 후보 내부 노드가 머클 트리의 개개의 내부 노드와 매칭된다는 것을 검증하는 것; 그리고/또는;
머클 트리의 루트에 기초하여 머클 증명을 수행함으로써 개개의 후보 내부 노드가 머클 트리의 노드임을 검증하는 것; 그리고/또는
머클 트리의 개개의 후보 내부 노드를 하나 이상의 다른 프로세싱 자원들로 전송하는 것 중 적어도 하나를 수행하도록 동작한다.
조항 4.15. 임의의 선행하는 조항에 따른 시스템에 있어서, 시스템은,
i) 적어도 하나의 블록체인 트랜잭션을 유효성 검증 및/또는 검증하고; 그리고/또는
ii) SPV(Simplified Payment Verification) 프로세스를 수행하고; 그리고/또는
iii) 주어진 블록체인 트랜잭션이 블록체인 블록 내에 포함되는지를 확인하고; 그리고/또는
iii) 블록체인 트랜잭션들 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자와 매칭되는지를 체크하도록 동작한다.
조항 4.16. 임의의 선행하는 조항에 따른 시스템에 있어서,
복수의 유효성 검증 자원들 중 적어도 하나는 가상 머신, 서버, GPU 기반 컴퓨팅 자원, 스레드 및/또는 멀티프로세서 시스템 중 적어도 하나이거나 이를 포함한다.
조항 세트 5
조항 세트 5의 임의의 조항 또는 조항들의 조합에 정의된 임의의 실시예는 본 설명에서 설명되거나 포함된 임의의 특징 또는 조항(들) 또는 본 명세서에 포함된 임의의 다른 조항 세트를 구현하거나 그와 결합하도록 배열될 수 있다. 조항 세트 5의 조항은 특히 "UTXO 데이터베이스"라는 명칭의 섹션에서 본 명세서에 설명된 특징과 관련될 수 있다.
조항 5.1. 컴퓨터-구현 방법으로서, 프로세싱 및/또는 저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하는 단계를 포함하고, 데이터의 부분이 도출되는 상기 데이터는 (미지출) 트랜잭션 출력 및/또는 미지출 출력을 포함하는 트랜잭션(Tx)을 포함한다. 출력은 UTXO로 지칭될 수 있다.
상기 데이터는, 트랜잭션(Tx)의 적어도 일부가 블록체인 블록(B)의 머클 경로에 포함된다는 것을 결정하기 위한 트랜잭션 데이터를 추가적으로 또는 대안적으로 포함할 수 있다.
블록체인으로부터 도출된 데이터와 연관된 정보는 효율적이고 비용 효율적인 참조를 위해 자원에 저장된다. 데이터의 일부를 사용하여 자원을 할당함으로써, 데이터, 그의 연관된 정보 및 데이터가 저장된 자원 간의 관계가 유지된다. 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함할 수 있다. 해당 데이터의 일부는 키를 결정하는 데 사용될 수 있고, 이 키는 차례로, 상기 데이터에 대한 정보를 저장할 할당된 자원을 결정한다.
출력, 예컨대, UTXO들 및/또는 UTXO를 갖는 트랜잭션들의 데이터베이스가 설정될 수 있다. 데이터베이스는 분산되어 분산된 풀을 초래할 수 있다. 데이터베이스는: 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 유효성의 플래그; 및 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 유효성이 결정되는 것을 가능하게 하는 정보, 예컨대, SPV 정보 중 적어도 하나를 홀딩할 수 있다.
자원의 후속 식별을 가능하게 하는 할당 이전에, 방법은 블록체인 및/또는 연관된 데이터로부터 도출된 데이터의 일부를 리트리브하는 것을 포함할 수 있다. 할당 후, 방법은 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 저장 및/또는 유효성 검증하는 것을 포함할 수 있다.
할당은 복수의 자원들 간의 로드 밸런싱을 지원 또는 제공할 수 있다.
조항 5.2. 조항 5.1의 방법에 있어서,
할당된 자원에서; 그리고/또는 할당된 자원에 의해; 그리고/또는 할당된 자원과 연관하여, UTXO 및/또는 트랜잭션(Tx)의 적어도 일부를 저장 및/또는 프로세싱하는 단계를 더 포함한다.
프로세싱은: UTXO 및/또는 트랜잭션(Tx)을 유효성 검증하는 것; 데이터와 연관된 정보를 데이터베이스와 같은 액세스 가능한 구조로 관리하는 것 중 적어도 하나를 포함할 수 있다.
조항 5.3. 조항 5.1 또는 조항 5.2의 방법에 있어서,
할당된 자원에서 데이터의 일부가 도출되는 상기 데이터를 수신하는 단계: 상기 데이터를 프로세싱할지 및/또는 상기 데이터로부터 도출된 정보를 저장할지, 아니면 어떠한 액션도 취하지 않을지를 결정하도록 상기 데이터를 파싱하는 단계를 더 포함한다.
복수의 자원들 중 하나는 데이터의 일부 및/또는 상기 데이터와 연관된 정보를 수신하고 자신이 상기 UTXO와 관련된 정보를 저장하는 것을 담당하는지를 결정할 수 있다.
조항 5.4. 임의의 선행하는 조항의 방법에 있어서,
블록체인으로부터 데이터의 일부를 도출하는 단계를 더 포함한다.
조항 5.5. 임의의 선행하는 조항의 방법에 있어서,
프로세싱 및/또는 저장 자원에 대한 식별 및/또는 할당은 복수의 할당된 자원들에 연결된 중개자에 의해 수행된다.
조항 5.6. 임의의 선행하는 조항의 방법에 있어서,
할당된 자원은, 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO을 포함하는 트랜잭션(Tx)을 적어도 부분적으로 유효성 검증하는 것; 그리고 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO을 포함하는 트랜잭션(Tx)을 유효성 검증하는 데 요구되는 유효성 검증 데이터의 레코드를 생성, 저장 및/또는 유지하는 것 중 적어도 하나를 행한다.
조항 5.7. 조항 5.1의 방법에 있어서,
데이터는 UTXO 식별자; UTXO 스크립트의 해시; 트랜잭션 식별(TXID) 중 적어도 하나를 포함한다.
조항 5.8. 임의의 선행하는 조항의 방법에 있어서,
데이터를 프로세싱하는 단계는 키를 결정하는 단계를 포함하고, 키는 할당된 자원을 결정한다.
조항 5.9. 조항 5.8의 방법에 있어서,
키는 해싱되고 결과적인 해시는 할당된 자원을 결정한다.
조항 5.10. 임의의 선행하는 조항의 방법에 있어서,
데이터, 키 및 결과적인 해시 중 적어도 하나는 알파뉴머릭 숫자; 및 이진수 중 적어도 하나를 포함하며, 상기 숫자는 할당된 자원을 결정하는 데 사용된다.
조항 5.11. 조항 5.10의 방법에 있어서,
할당된 자원을 결정하기 위해 숫자의 일부가 파싱된다.
조항 5.12. 임의의 선행하는 조항의 방법에 있어서,
UTXO 및/또는 트랜잭션(Tx)의 적어도 일부가 저장되는 해시 테이블이 할당된 자원을 결정한다.
조항 5.13. 조항 5.6 내지 조항 5.12 중 임의의 조항의 방법에 있어서, UTXO및/또는 트랜잭션(Tx)의 적어도 일부의 레코드는: 상기 트랜잭션(Tx)이 레코딩되는 블록의 머클 트리(Merkle Tree); 상기 트랜잭션(Tx)이 레코딩되는 블록의 머클 루트 상기 트랜잭션(Tx)의 해시로부터, 상기 트랜잭션(Tx)이 레코딩되는 블록에 대한 머클 루트에 대한 값의 결정을 가능하게 하는 머클 경로; 머클 증명; 블록체인 블록과 연관된 블록 식별자(block_ID); 블록체인 블록 내의 복수의 블록체인 트랜잭션들 내 트랜잭션(Tx)과 연관된 트랜잭션 식별자(TxID); 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 함수; 및 블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 컨케터네이션 중 적어도 하나를 포함한다.
조항 5.14. 임의의 선행하는 조항의 방법에 있어서, 트랜잭션(Tx) 및/또는 상기 UTXO 중 적어도 일부에 대해: 상기 UTXO를 유효성 검증 및/또는 검증하는 단계; 상기 UTXO에 대해 SPV(Simplified Payment Verification) 프로세스의 적어도 일부를 수행하는 단계; 주어진 블록체인 트랜잭션(Tx)이 블록체인 블록 내에 포함되는지를 확인하는 단계; 블록체인 트랜잭션들 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자(TxID)와 매칭되는지를 체크하는 단계; 그리고 상기 UTXO에 대한 머클 증명을 결정하는 단계 중 적어도 하나를 더 포함한다.
조항 5.15. 컴퓨터 구현 방법으로서, 각각이 블록체인 블록의 복수의 블록체인 트랜잭션(TX)들 내 트랜잭션(Tx)과 연관된 복수의 미지출 트랜잭션 출력(UTXO)들을 레코딩, 검색 및/또는 프로세싱하기 위한 제1 UTXO 자원을 생성, 저장 및/또는 유지하는 단계; 상기 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 일부를 사용하는 단계를 포함하고, 데이터의 일부가 도출되는 상기 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO을 포함하는 트랜잭션(Tx)을 포함한다.
조항 5.16. 컴퓨터-구현 방법으로서, 트랜잭션에 포함시키기 위해 미지출 트랜잭션 출력(UTXO)을 수신 및/또는 프로세싱하는 단계; 및/또는 할당된 자원을 식별하기 위해 UTXO로부터 도출된 데이터의 부분을 사용하는 단계 ― 상기 할당된 자원은 UTXO에 대한 유효성 검증 데이터를 홀딩함 ― ; 및/또는 할당된 자원으로부터 유효성 검증 데이터를 요청하는 단계를 포함한다.
조항 5.17. 조항 5.16의 방법에 있어서,
할당된 자원으로부터,
(i) UTXO 및/또는 상기 UTXO을 포함하는 트랜잭션(Tx)의 유효성 검증, 및/또는
(ii) UTXO 및/또는 상기 UTXO을 포함하는 트랜잭션(Tx)의 유효성을 결정하기 위한 레코드 중 적어도 하나를 획득하는 단계를 더 포함한다.
조항 5.18. 임의의 선행하는 조항의 방법에 있어서, 입력으로서 상기 UTXO를 갖는 트랜잭션(Tx)을 준비 및/또는 송신하는 단계를 더 포함한다.
조항 5.19. 복수의 미지출 트랜잭션 출력들(UTXO)을 레코딩, 검색 및/또는 프로세싱하기 위한 UTXO 자원을 생성하고, 저장하고 및 유지하는 것 중 적어도 하나를 행하도록 구성되는 블록체인 노드로서, 상기 노드는 프로세싱 및/또는 저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 일부를 프로세싱하고, 데이터의 일부가 도출되는 상기 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO을 포함하는 트랜잭션(Tx)을 포함한다.
조항 5.20. 컴퓨터 장비로서, 하나 이상의 메모리 유닛들을 포함하는 메모리; 및 하나 이상의 프로세싱 유닛들을 포함하는 프로세싱 장치를 포함하고, 메모리는 프로세싱 장치 상에서 실행되도록 배열된 코드를 저장하고, 코드는 프로세싱 장치 상에 있을 때, 조항 5.1 내지 조항 5.18 중 임의의 조항의 방법을 수행하도록 구성된다.
조항 5.21. 컴퓨터 판독 가능 저장소 상에 구체화되고 하나 이상의 프로세서들 상에서 실행될 때 조항 5.1 내지 조항 5.18 중 임의의 조항의 방법을 수행하도록 구성된 컴퓨터 프로그램.
조항 세트 6
조항 세트 6의 임의의 조항 또는 조항의 조합에 정의된 임의의 실시예는 조항 세트 1 내지 5의 임의의 조항(들)을 구현하거나 그와 결합하도록 배열될 수 있다. 조항 세트 6의 조항은 특히 "레코드"라는 명칭의 섹션에서 본 명세서에 설명된 특징과 관련될 수 있다.
조항 6.1. 컴퓨터-구현 방법으로서,
트랜잭션(Tx)의 적어도 일부의 레코드를 생성, 저장, 프로세싱, 액세스 및/또는 유지하는 단계를 포함하고,
레코드는, 트랜잭션(Tx)의 적어도 일부가 블록체인 블록(B)의 머클 경로에 포함됨을 결정하기 위한 트랜잭션 데이터를 포함한다.
전반적으로, 레코드는 정보, 예컨대, 데이터 항목을 홀딩하는 기능을 한다. 다른 곳에서 설명된 바와 같이, 레코드들은 할당된 자원들, 예컨대, 데이터베이스에 저장될 수 있고, 이는 블록체인에 연결된 자원의 일부, 예컨대, 블록체인 네트워크에 연결된 노드 또는 다른 자원일 수 있다. 본 발명은 그렇게 제한되지 않으며, 레코드의 유효성 검증, 할당/식별 및 포맷은 오프-체인(off-chain)일 수 있는 노드의 기능을 구현하는 데 사용될 수 있다.
레코드는, 적어도, 트랜잭션 데이터를 포함하고, 또한 상태 플래그/상태, 유효성 검증 정보, 유효성 검증 데이터, UTXO가 발견될 수 있는 곳의 세부사항, 적어도 하나의 이전 레코드에 대한 참조, 예컨대 위치, 서명 및 인가 데이터를 포함할 수 있다. 레코드는 트랜잭션과 관련된 데이터가 저장되고 카탈로그화된 방식으로 저장되는 것을 가능하게 한다.
달리 표현하면, 레코드는 블록체인 블록의 프루닝된 버전의 일부이다. 레코드는 바람직하게는 할당된 자원들에 저장되는 레코드들의 컬렉션의 일부일 것이고, 블록체인의 블록으로부터 직접 획득된 데이터 항목들 및/또는 블록체인으로부터 도출된 데이터, 예컨대, 유효성 검증 데이터 또는 트랜잭션과 연관된 정보의 컬렉션을 홀딩할 것이다.
트랜잭션들의 레코드들을 홀딩하는 데이터베이스 및/또는 할당된 자원(1104)을 관리하는 시스템(1100)은 노드처럼 동작한다고 할 수 있고 ― 레코드는 머클 경로에 포함되는 트랜잭션의 적어도 일부를 갖는 트랜잭션 데이터를 홀딩하며, 따라서 머클-링크된 프루닝된 노드가 구현될 수 있다.
예로서, 시스템은, 예컨대, 머클-링크된 프루닝된 노드(Merkle-linked pruned node)는 소유자에 의해 확립 및 사용될 수 있다. 예컨대, 영국 은행이 발행한 토큰과 연관된 블록체인 데이터는 할당된 자원에 레코드로서 홀딩될 수 있다. 레코드는 블록체인 상에 홀딩된 대응하는 트랜잭션 데이터의 프루닝된 및/또는 향상된 버전일 수 있다.
레코드를 구성하는 것은, 본 명세서에 교시된 바와 같이, 트랜잭션의 유효성 검증, 프로세싱 및/또는 저장 자원의 할당 및/또는 식별 중 적어도 하나를 보완한다. 레코드 콘텐츠는 사용될 때 보안 및 복원력, 효율성 또는 속도 및 자원 요건의 감소에서 개선을 가능하게 하고, 상기 사용은 레코드가 관련된 트랜잭션의 검증을 포함한다.
할당 및/또는 식별은 블록체인 트랜잭션의 전체 또는 적어도 일부로부터 도출된 데이터의 부분에 기초하며, 도출된 데이터의 부분은 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)일 수 있는 트랜잭션 데이터를 포함한다. 데이터는, 트랜잭션의 적어도 일부가 블록체인 블록의 머클 경로에 포함된다는 것을 결정하기 위한 트랜잭션 데이터를 추가적으로 또는 대안적으로 포함할 수 있다.
조항 6.2. 조항 1의 방법에 있어서, 레코드는 데이터 카탈로그를 포함하고, 상기 데이터 카탈로그는 트랜잭션 데이터의 세트이거나 또는 이를 포함한다.
조항 6.3. 조항 1 또는 2의 방법에 있어서,
레코드는 할당된 자원(1104)에서 프로세싱 및/또는 저장된다.
조항 6.4. 임의의 선행 조항의 방법에 있어서,
트랜잭션(Tx)의 적어도 일부는 트랜잭션의 출력이다.
조항 6.5. 조항 4의 방법에 있어서, 트랜잭션의 출력은,
미지출 트랜잭션 출력(UTXO), 및/또는
블록체인 블록의 UTXO를 포함하는 트랜잭션(Tx)이다.
조항 6.6. 임의의 선행 조항의 방법에 있어서, 레코드는 데이터베이스에 저장되고, 상기 레코드는:
i) 적어도 하나의 데이터 항목(D)을 포함하는 블록체인 트랜잭션(TX0); 및
ii) 블록체인 트랜잭션(TX1)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 확인하는데 필요한 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 포함한다.
조항 6.7. 임의의 선행 조항의 방법에 있어서, 데이터베이스를 사용하는 단계는:
i) 데이터베이스; 및/또는
ii) 데이터베이스 내에 또는 이와 연관하여 저장되는 데이터를 생성, 유지, 제공, 업데이트, 저장, 액세스 또는 프로세싱하는 단계를 포함한다.
조항 6.8. 임의의 선행 조항의 방법에 있어서,
레코드는 추가로:
트랜잭션(TX0)으로부터 블록체인 블록(B)에 대한 머클 트리의 루트까지의 머클 경로를 포함한다.
조항 6.9. 임의의 선행 조항의 방법에 있어서,
머클 경로는, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)에 포함된다는 것을 설정 또는 검증하는 데 필요한 적어도 최소의 블록체인 트랜잭션을 포함한다.
조항 6.10. 임의의 선행 조항의 방법에 있어서, 블록체인 블록은:
i) 블록체인 원장; 및/또는
ii) 오프-체인 저장 자원 상에 또는 이와 연관하여 저장된다.
조항 6.11. 조항 6 내지 10 중 어느 하나의 방법에 있어서,
블록체인 트랜잭션(TX0)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 검증하기 위해 블록체인 트랜잭션(TX0) 및 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 사용하는 단계를 더 포함한다.
조항 6.12. 조항 6 내지 11 중 어느 한 조항의 방법에 있어서, 데이터 항목(D)은:
트랜잭션의 스크립트와 연관하여 저장되고; 그리고/또는
트랜잭션 내에 메타데이터로서 저장된다.
조항 6.13. 임의의 선행 조항의 방법에 있어서, 레코드는,
미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함한 트랜잭션(Tx)을 유효성 검증하는 데 필요한 유효성 검증 데이터를 더 포함한다.
조항 6.14. 임의의 선행 조항의 방법에 있어서, 레코드는,
미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 복수의 선행 트랜잭션의 이력을 더 포함한다.
조항 6.15. 임의의 선행 조항의 방법에 있어서, 레코드는,
적어도 하나의 선행하는 트랜잭션, 바람직하게는 미지출 트랜잭션 출력(UTXO)의 적어도 하나의 트랜잭션 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 데이터를 프로세싱 및/또는 저장한 할당된 자원의 이력을 더 포함한다.
조항 6.16. 조항 14 또는 15의 방법에 있어서, 상기 이력은:
복수의 선행하는 트랜잭션의 머클 증명을 결정하기 위한 트랜잭션 데이터의 세트;
복수의 선행 트랜잭션을 프로세싱 및/또는 저장한 개개의 할당된 자원에 대한 링크 중 적어도 하나를 포함한다.
조항 6.17. 임의의 선행 조항의 방법에 있어서, 레코드는,
미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)의 입력 또는 각각의 입력의 플래그 및/또는 상태 표시를 더 포함한다.
조항 6.18. 임의의 선행 조항의 방법에 있어서, 레코드는:
상기 트랜잭션(Tx)이 레코딩된 블록의 머클 트리;
상기 트랜잭션(Tx)이 레코딩된 블록의 머클 루트;
상기 트랜잭션(Tx)의 해시로부터 상기 트랜잭션(Tx)이 레코딩된 블록의 머클 루트에 대한 값의 결정을 가능하게 하는 머클 경로;
머클 증명;
블록체인 블록과 연관된 블록 식별자(block_ID);
블록체인 블록 내의 복수의 블록체인 트랜잭션들 내의 트랜잭션(Tx)과 연관된 트랜잭션 식별자(TxID);
블록 식별자(block_ID) 및 트랜잭션 식별자(TxID)의 함수;
블록 식별자(block_ID)와 트랜잭션 식별자(TxID)의 컨케터네이션;
디지털 서명;
인증 코드;
트랜잭션 상태를 결정하기 위한 서명 메시지;
프로토콜 플래그;
일임 공개 키(DPK); 및
일임 트랜잭션 ID(DTxID)를 중 적어도 하나를 더 포함한다.
조항 6.19. 조항 3 내지 조항 18 중 어느 하나의 방법에 있어서, 레코드의 프로세싱 및/또는 저장을 위한 할당된 자원은 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하여 식별 및/또는 할당되고, 데이터의 부분이 도출된 상기 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함한다.
조항 6.20. 컴퓨터-구현 방법으로서,
적어도 하나의 레코드를 포함하는 데이터베이스를 사용하는 단계를 포함하고, 적어도 하나의 레코드는:
i) 적어도 하나의 데이터 항목(D)을 포함하는 블록체인 트랜잭션(TX0); 및
ii) 블록체인 트랜잭션(TX1)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 확인하는데 필요한 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 포함한다.
조항 6.21. 조항 20의 방법에 있어서, 데이터베이스를 사용하는 단계는:
i) 데이터베이스; 및/또는
ii) 데이터베이스 내에 또는 이와 연관하여 저장되는 데이터를 생성, 유지, 제공, 업데이트, 저장, 액세스 또는 프로세싱하는 단계를 포함한다.
조항 6.22. 조항 20 또는 21의 방법에 있어서, 레코드는:
트랜잭션(TX0)으로부터 블록체인 블록(B)에 대한 머클 트리의 루트까지의 머클 경로를 포함한다.
조항 6.23. 조항 22의 방법에 있어서, 머클 경로는, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)에 포함된다는 것을 설정 또는 검증하는 데 필요한 적어도 최소의 블록체인 트랜잭션을 포함한다.
조항 6.24. 조항 20 내지 23 중 어느 하나의 방법에 있어서, 블록은:
i) 블록체인 원장; 및/또는
ii) 오프-체인 저장 자원 상에 또는 이와 연관하여 저장된다.
조항 6.25. 조항 20 내지 24 중 어느 하나의 방법에 있어서,
블록체인 트랜잭션(TX0)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 검증하기 위해 블록체인 트랜잭션(TX0) 및 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 사용하는 단계를 더 포함한다.
조항 6.26. 조항 20 내지 25 중 어느 한 조항의 방법에 있어서, 데이터 항목(D)은:
트랜잭션의 스크립트와 연관하여 저장되고; 그리고/또는
트랜잭션 내에 메타데이터로서 저장된다.
조항 6.27. 조항 20 내지 26 중 어느 하나의 방법에 있어서, 트랜잭션은:
트랜잭션 ID(TxID);
프로토콜 플래그;
일임 공개 키(DPK); 및
일임 트랜잭션 ID(DTxID)를 더 포함한다.
조항 6.28. 컴퓨터 장비로서,
하나 이상의 메모리 유닛을 포함하는 메모리; 및
하나 이상의 프로세싱 유닛을 포함하는 프로세싱 장치를 포함하고, 메모리는 프로세싱 장치에서 실행되도록 배열된 코드를 저장하고, 코드는 프로세싱 장치 상에 있을 때 조항 1 내지 27 중 어느 하나의 방법을 수행하도록 구성된다.
조항 6.29. 컴퓨터 판독 가능 저장소 상에서 구현되고, 하나 이상의 프로세서들 상에서 실행될 때, 조항 1 내지 27 중 어느 하나의 방법을 수행하도록 구성된 컴퓨터 프로그램.
조항 세트 7
조항 세트 7의 임의의 조항 또는 조항들의 조합에 정의된 임의의 실시예는 본 명세서에 포함된 하나 이상의 다른 열거된 조항 세트의 임의의 조항(들)을 구현하거나 그와 결합하도록 배열될 수 있다. 조항 세트 7의 조항은 특히 "분산된 채굴"이라는 명칭의 섹션에서 본 명세서에 설명된 특징과 관련될 수 있다.
본 개시내용은 데이터 레코드들의 분산된 및/또는 병렬 프로세싱을 위한 방법들 및 시스템들을 제공할 수 있다. 이는 블록체인 블록에서 블록체인 트랜잭션들의 채굴을 위한 그리고/또는 블록체인 블록에 대한 작업 증명(PoW)의 생성을 위한 그러한 방법들/시스템들을 제공할 수 있다. 유리하게, 실시예들은 다른 블록체인 채굴/유효성 검증 작업들로부터 PoW 계산의 분리를 허용할 수 있다. 본 개시내용은 개선된 블록체인 채굴 기법 및/또는 개선된 PoW 생성 기법에 대한 인가 및/또는 제어 메커니즘을 제공하는 것으로 설명될 수 있다. 이는 또한 개선된 보안 기법으로서 설명될 수 있다.
바람직하게는, PoW 요청자(제1 당사자/엔티티)는 i) 트랜잭션들의 세트를 나타내는 머클 트리에 대한 머클 루트, ii) 제어 트랜잭션(TX0), 및 iii) TX0가 트랜잭션들의 세트에 포함됨을 확인하는 머클 증명 중 하나 이상을 전문 PoW 제공자(제2 당사자/엔티티)에게 전송할 수 있다. TX0는 PoW 제공자가 PoW 계산의 수행이 수행되어야 하는지 또는 완료되어야 하는지를 결정하기 위해 사용할 수 있는 제어 데이터를 제공하거나 포함할 수 있다.
바람직한 실시예가 다음과 같이 설명될 수 있다:
조항 7.1. 컴퓨터-구현 방법으로서,
제1 자원으로부터 제2 자원으로, 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명(PoW)을 생성하기 위한 요청을 전송하는 단계 ― 요청은 제어 트랜잭션(TX0)이 복수의 트랜잭션에 포함된다는 것을 검증하기 위한 머클 증명을 포함함 ― ; 및/또는 제1 자원으로부터 제2 자원에서, 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명(PoW)을 생성하기 위한 요청을 수신하는 단계 ― 요청은 제어 트랜잭션(TX0)이 복수의 트랜잭션에 포함된다는 것을 검증하기 위한 머클 증명을 포함함 ― 를 포함한다.
제1 자원은 PoW 요청자일 수 있고, 제2 자원은 PoW 제공자일 수 있다. PoW는 블록체인 프로토콜에 의해 지정된 임의의 PoW일 수 있다. 머클 증명은 주어진 블록체인 트랜잭션이 트랜잭션의 특정 세트에 포함된다는 것을 증명하고 역으로 그것이 트랜잭션의 세트에 포함된다는 것을 반증하기에 충분한 데이터를 포함할 수 있다. 트랜잭션들의 세트는 머클 루트 R을 갖는 머클 트리 T에 의해 표현될 수 있다.
조항 7.2. 조항 1에 따른 방법에 있어서,
제어 트랜잭션(TX0)은 작업 증명 생성의 수행을 제어, 허용 및/또는 금지하기 위한 제어 데이터를 포함하고; 바람직하게는 제어 데이터는:
i) 블록체인 이전의 목적지에 대한 미리 결정된 주소를 지정하는 적어도 하나의 출력;
― 바람직하게는, 주소는 제2 자원, 또는 제2 자원과 연관되거나 제2 자원에 의해 인가된 당사자와 연관됨 ― ; 및/또는
ii) 적어도 하나의 미리 결정된 서명; 및/또는
iii) 데이터의 적어도 하나의 비밀 값 또는 비밀 부분을 포함한다.
조항 7.3. 조항 7.1 또는 7.22에 따른 방법에 있어서,
제1 자원은 PoW 요청 자원, 블록체인 유효성 검증 자원 또는 블록체인 채굴 자원이고; 그리고/또는
제2 자원은 작업 증명 제공자이고; 그리고/또는
제2 자원은 적어도 하나의 ASIC 또는 해시 머신 또는 특수화된 암호화폐 채굴 자원을 포함한다.
조항 7.4. 임의의 선행 조항에 따른 방법에 있어서,
i) 제2 자원으로부터 제1 자원에서, 블록체인 블록에 대한 작업 증명(Proof-Of-Work)을 수신하는 단계; 및/또는
ii) 블록체인 블록에 대한 작업 증명을 제2 자원으로부터 제1 자원으로 전송하는 단계를 더 포함한다.
조항 7.5. 임의의 선행 조항에 따른 방법에 있어서, 작업 증명은:
블록체인 프로토콜에 의해 지정된 타겟, 규칙 또는 기준 중 하나 이상을 만족시키는 출력을 제공하도록 배열된 값(논스); 및/또는
블록체인 블록에 대한 블록 헤더; 및/또는
블록체인 프로토콜에 따라 지정된 퍼즐 또는 챌린지 솔루션을 포함한다.
조항 7.6. 임의의 선행 조항에 따른 방법에 있어서, 작업 증명을 생성하는 단계는:
i) 블록체인 프로토콜에 의해 지정된 타겟, 챌린지, 규칙 또는 기준을 만족시키는 출력을 제공하도록 구성된 값(논스)을 생성 또는 선택하는 단계;
ii) 블록체인 블록에 대한 블록 메시지와 논스를 컨케터네이팅하는 단계; 및/또는
iii) 블록체인 블록에 대한 블록 헤더를 이중 해싱하는 단계를 포함한다.
조항 7.7. 임의의 선행 조항에 따른 방법에 있어서,
미리 정의된 제어 기준에 관련하여 제어 트랜잭션(TX0)의 적어도 일부를 프로세싱 또는 비교하고, 프로세싱 또는 비교의 출력에 기초하여 작업 증명을 생성하거나 생성하지 않는 단계를 포함하고,
바람직하게는, 제어 기준은 개시, 수행 또는 완료 또는 작업 증명 생성을 허용하기 위한 임계값, 규칙 또는 기준 중 적어도 하나를 포함한다.
조항 7.8. 조항 7.7에 따른 방법에 있어서,
i) 제어 트랜잭션(TX0)이 복수의 트랜잭션들에 포함된다는 성공적인 또는 성공적이지 않은 확인; 및/또는
ii) 제어 트랜잭션이 미리 결정된 규칙 또는 기준을 만족시키는 데이터의 부분을 포함하거나 포함하지 않는다는 결정; 및/또는
iii) 제어 트랜잭션 또는 그의 적어도 일부가 제어 기준을 만족시킨다는 결정에 기초하여 작업 증명서의 생성을 허용 또는 금지하는 단계를 더 포함한다.
조항 7.9. 임의의 선행 조항에 따른 방법에 있어서,
제1 또는 제2 자원에서, 블록에 대한 작업 증명의 생성을 위해 블록체인 프로토콜에 의해 요구되는 데이터의 부분을 결정하는 단계를 포함하고, 데이터의 부분은:
프로토콜 버전 식별자;
블록 해시;
프로토콜에 의해 지정된 작업 증명 난이도 타겟; 및/또는
타임스탬프 중 하나 이상을 포함한다.
조항 7.10. 임의의 선행 조항에 따른 방법에 있어서,
i) 머클 증명은, 제어 트랜잭션이 복수의 트랜잭션에 포함되는지를 결정하기 위해 SPV 검증의 수행을 가능하게 하도록 배열된 데이터를 포함하고;
ii) 요청은 제어 트랜잭션을 포함한다.
조항 7.11. 임의의 선행 조항에 따른 방법에 있어서,
머클 트리를 제공하기 위해 복수의 트랜잭션들을 프로세싱하는 단계를 포함하고,
바람직하게는, 프로세싱은 해싱 함수를 포함한다.
조항 7.12. 임의의 선행 조항에 따른 방법에 있어서,
제어 트랜잭션(TX0)은 제2 자원이 제1 자원을 식별하는 가능하게 하기 위한 식별자를 포함하고; 바람직하게는 식별자는 제어 트랜잭션의 입력, 출력, 스크립트 또는 메타데이터 부분에 제공된다.
조항 7.13. 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명 생성의 생성을 제어하거나 영향을 미치도록 동작하고, 그리고/또는 임의의 선행 조항의 방법을 구현하도록 동작하는 시스템.
조항 7.14. 조항 7.13에 따른 시스템에 있어서,
적어도 하나의 작업 증명 제공 자원(1000);
― 바람직하게는, 적어도 하나의 작업 증명 제공 자원은 적어도 하나의 ASIC 또는 해시 머신(1100a 내지 1100c)을 포함함 ― ;
적어도 하나의 작업 증명 요청 자원(1300);
― 바람직하게는, 적어도 하나의 작업 증명 요청 자원은 실질적으로 본 명세서에 개시된 분산된 유효성 검증 노드(700)를 포함함 ― 중 적어도 하나를 포함한다.
조항 7.15. 실행 가능한 명령을 저장하는 비일시적인 컴퓨터 판독 가능한 저장 매체로서, 실행 가능한 명령은, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 조항 7.1 내지 7.13 중 어느 하나의 컴퓨터 구현 방법을 수행하게 하거나 가능하게 한다.
조항 세트 8
조항 세트 8의 임의의 조항 또는 조항의 조합에 정의된 임의의 실시예는 본 명세서의 임의의 다른 조항 세트(들)의 임의의 조항(들)을 구현하거나 그와 결합하도록 배열될 수 있다.
본 개시내용은 컴퓨터-구현 시스템을 포함할 수 있다. 시스템은 분산된 블록체인 시스템일 수 있다.
시스템은 적어도 하나의 (분산된) 유효성 검증 구성요소를 포함할 수 있다. 시스템 및/또는 유효성 검증 구성요소는 적어도 하나의 블록체인 트랜잭션 및/또는 트랜잭션들의 블록체인 블록의 분산된 유효성 검증을 용이하게 하고 그리고/또는 가능하게 하도록 동작할 수 있다. 유효성 검증 구성요소는 조항 세트 4의 조항에 따라 제공되거나, 조항 세트 1, 2, 3 및/또는 4의 임의의 조항 중 방법 또는 방법의 조합을 수행하도록 배열될 수 있다.
시스템은 (분산된) 채굴 구성요소를 포함할 수 있다. 채굴 구성요소는 블록체인 블록의 분산된 채굴 및/또는 작업 증명 계산의 계산을 용이하게 하고 그리고/또는 가능하게 하도록 동작할 수 있다. 분산된 채굴 구성요소는 조항 세트 7의 조항들 중 하나 이상에 따라 제공되거나, 조항 세트 7의 조항들 중 임의의 것의 또는 "분산된 채굴"이라는 명칭의 섹션 및/또는 도 14 내지 19에 개시된 바와 같은 방법을 수행하도록 배열될 수 있다.
시스템은 적어도 하나의 레코드 저장 구성요소를 포함할 수 있다. 이것은 데이터베이스일 수 있다. 데이터베이스는 조항 세트 5의 조항 중 하나 이상에 따라, 또는 실질적으로 "레코드"라는 명칭 및/또는 도 13에 개시된 바와 같이 제공될 수 있다. 적어도 하나의 레코드 저장 구성요소는 블록체인 트랜잭션의 적어도 일부의 레코드를 포함할 수 있고, 레코드는 트랜잭션(Tx)의 적어도 일부가 블록체인 블록의 머클 경로에 포함되는지를 결정하기 위한 트랜잭션 데이터를 포함한다.
시스템은 블록체인 관련 또는 구현된 작업을 적어도 하나의 컴퓨팅 자원에 할당하도록 동작하는 적어도 하나의 할당 구성요소를 포함할 수 있다. 할당 구성요소는, (컴퓨터-기반) 프로세싱/저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용함으로써, 블록체인-관련 또는 구현된 작업들을 적어도 하나의 컴퓨팅 자원에 할당하도록 동작할 수 있다. 데이터의 부분은 미지출 트랜잭션 출력(UTXO) 및/또는 미지출 트랜잭션 출력을 포함하는 트랜잭션(Tx)을 포함하는 데이터(데이터의 더 큰 부분)로부터 도출될 수 있다. 할당 구성요소는 조항 세트 6의 조항들 중 하나 이상에 따라, 또는 "UTXO 데이터베이스"라는 명칭의 섹션 및/또는 도 10 내지 12에 개시된 바와 같이 제공될 수 있다.
시스템은 위에 언급된 구성요소들 중 하나, 또는 이들 구성요소들 중 하나 초과를 포함할 수 있다. 복수의 구성요소가 사용될 때, 구성요소는 통신을 위해 배열된다. 시스템의 구성요소들은 블록체인 및/또는 블록체인 네트워크로부터 판독 및/또는 이에 기록하도록 배열될 수 있다. 블록체인은 네트워크에 의해 구현되는 블록체인 프로토콜과 연관될 수 있다.
조항 8.1. 컴퓨터-구현 시스템으로서,
i) 하나 이상의 유효성 검증 구성요소;
ii) 적어도 하나의 채굴 구성요소;
iii) 하나 이상의 작업 할당 구성요소;
iv) 블록체인 트랜잭션의 적어도 일부의 레코드를 포함하는 적어도 하나의 레코드 저장 구성요소 ― 레코드는 트랜잭션(Tx)의 적어도 일부가 블록체인 블록의 머클 경로에 포함되는지를 결정하기 위한 트랜잭션 데이터를 포함함 ― 중 어느 하나, 2개 이상을 포함한다.
조항 8.2. 조항 8.1에 따른 시스템에 있어서, 적어도 하나의 유효성 검증 구성요소는:
복수의 블록체인 트랜잭션 및 블록체인 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 유효성 검증하고;
그리고 바람직하게는:
블록체인 트랜잭션의 개개의 서브세트를 복수의 유효성 검증(프로세싱) 자원에 할당하고 ― 각각의 개개의 서브세트는 머클 트리의 개개의 부분을 제공하고, 머클 트리의 개개의 내부 노드에 의해 표현됨 ― ; 그리고
복수의 유효성 검증 자원의 블록체인 트랜잭션을 유효성 검증하기 위해 복수의 유효성 검증 자원을 사용하도록 동작한다.
조항 8.3. 조항 8.1 또는 8.2에 따른 시스템에 있어서, 시스템 및/또는 적어도 하나의 유효성 검증 구성요소는:
복수의 블록체인 트랜잭션 및 블록체인 블록에 대한 머클 트리의 루트를 포함하는 블록체인 블록의 적어도 일부를 다운로드하도록 동작하고,
바람직하게는, 유효성 검증 구성요소는:
블록체인 트랜잭션의 개개의 서브세트를 복수의 프로세싱 자원에 할당하고 ― 각각의 개개의 서브세트는 머클 트리의 개개의 부분을 제공하고, 머클 트리의 개개의 내부 노드에 의해 표현됨 ― ; 그리고
복수의 프로세싱 자원의 블록체인 트랜잭션의 개개의 서브세트를 다운로드하기 위해 복수의 프로세싱 자원 중 하나, 일부 또는 전부를 사용함으로써 다운로드를 수행하도록 배열된다.
조항 8.4. 임의의 선행 조항에 따른 시스템에 있어서, 적어도 하나의 유효성 검증 구성요소는:
복수의 미지출 트랜잭션 출력(UTXO)을 레코딩, 검색 및/또는 프로세싱하기 위한 제1 UTXO 리포지토리를 생성, 저장 및/또는 유지하도록 동작하고, 각각의 미지출 트랜잭션 출력은 블록체인 블록의 복수의 블록체인 트랜잭션(TX) 내의 트랜잭션(Tx)과 연관되고,
여기서
복수의 블록체인 트랜잭션은 블록체인 블록에 대한 머클 트리의 부분을 제공하고 그리고/또는 머클 트리의 부분에 의해 표현된다.
조항 8.5. 임의의 선행 조항에 따른 시스템에 있어서, 시스템 및/또는 적어도 하나의 유효성 검증 구성요소는:
i) 적어도 하나의 블록체인 트랜잭션을 유효성 검증 및/또는 검증하고; 그리고/또는
ii) 간소화된 지불 검증 프로세스를 수행하고; 그리고/또는
iii) 주어진 블록체인 트랜잭션이 블록체인 블록 내에 포함되는지를 확인하고; 그리고/또는
iii) 블록체인 트랜잭션 중 적어도 하나의 해시를 생성하고, 해시를 사용하여 머클 경로를 구성하고 그리고/또는 해시가 블록체인 블록의 헤더 내 트랜잭션 식별자와 매칭되는지를 체크하도록 동작한다
조항 8.6. 임의의 선행 조항에 따른 시스템에 있어서, 시스템 및/또는 적어도 하나의 유효성 검증 구성요소는:
가상 머신, 서버, GPU-기반 컴퓨팅 자원, 스레드, 및/또는 멀티프로세서 시스템 중 적어도 하나이거나 적어도 하나를 포함하는 적어도 하나의 유효성 검증 자원을 포함한다.
조항 8.7. 임의의 선행 조항에 따른 시스템에 있어서, 적어도 하나의 할당 구성요소는:
i) 프로세싱 및/또는 저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하고;
― 바람직하게는, 데이터의 부분은 미지출 트랜잭션 출력(UTXO) 및/또는 미지출 트랜잭션을 포함하는 블록체인 트랜잭션(Tx)을 포함하거나 이로부터 도출됨 ― ; 그리고/또는
ii) a) 복수의 미지출 트랜잭션 출력(UTXO)을 레코딩, 검색 및/또는 프로세싱하고 ― 복수의 미지출 트랜잭션 출력 각각은 블록체인 블록의 복수의 블록체인 트랜잭션(TX) 내의 트랜잭션(Tx)과 연관됨 ― ; 및/또는 b) 상기 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하도록 ― 데이터의 부분이 도출되는 상기 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함함 ― 배열된 제1 UTXO 자원을 사용/제공, 생성, 저장 및/또는 유지하고; 그리고/또는
iii) 트랜잭션에 포함시키기 위해 미지출 트랜잭션 출력(UTXO)을 수신 및/또는 프로세싱하고; 그리고/또는 할당된 자원 ― 할당된 자원은 UTXO에 대한 유효성 검증 데이터를 홀딩함 ― 을 식별하기 위해 미지출 출력으로부터 도출된 데이터의 부분을 사용하고; 그리고/또는 할당된 자원으로부터 유효성 검증 데이터를 요청하도록 동작한다.
조항 8.8. 조항 8.7의 시스템에 있어서, 적어도 하나의 할당 구성요소는 추가로,
할당된 자원에서; 그리고/또는 할당된 자원에 의해; 그리고/또는 할당된 자원과 연관하여 미지출 출력 및/또는 트랜잭션(Tx)의 적어도 일부를 저장 및/또는 프로세싱하도록 동작한다.
조항 8.9. 임의의 선행 조항의 시스템에 있어서, 적어도 하나의 채굴 구성요소는:
제1 자원으로부터 제2 자원으로, 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명(PoW)을 생성하기 위한 요청을 전송하고 ― 요청은 제어 트랜잭션(TX0)이 복수의 트랜잭션에 포함된다는 것을 검증하기 위한 머클 증명을 포함함 ― ; 그리고/또는
제1 자원으로부터 제2 자원에서, 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명(PoW)을 생성하기 위한 요청을 수신하도록 ― 요청은 제어 트랜잭션(TX0)이 복수의 트랜잭션에 포함된다는 것을 검증하기 위한 머클 증명을 포함함 ― 동작한다.
조항 8.10. 조항 8.9에 따른 시스템에 있어서,
제어 트랜잭션(TX0)은 작업 증명 생성의 수행을 제어, 허용 및/또는 금지하기 위한 제어 데이터를 포함하고; 바람직하게는 제어 데이터는:
i) 블록체인 이전의 목적지에 대한 미리 결정된 주소를 지정하는 적어도 하나의 출력;
― 바람직하게는, 주소는 제2 자원, 또는 제2 자원과 연관되거나 제2 자원에 의해 인가된 당사자와 연관됨 ― ; 및/또는
ii) 적어도 하나의 미리 결정된 서명; 및/또는
iii) 데이터의 적어도 하나의 비밀 값 또는 비밀 부분을 포함한다.
조항 8.11. 조항 8.9 또는 8.10에 따른 시스템에 있어서,
제1 자원은 PoW 요청 자원, 블록체인 유효성 검증 자원 또는 블록체인 채굴 자원이고; 그리고/또는
제2 자원은 작업 증명 제공자이고; 그리고/또는
제2 자원은 적어도 하나의 ASIC 또는 해시 머신 또는 특수화된 암호화폐 채굴 자원을 포함한다.
조항 8.12. 임의의 선행 조항에 따른 시스템에 있어서, 적어도 하나의 레코드 저장 구성요소는:
적어도 하나의 레코드를 포함하고, 적어도 하나의 레코드는:
i) 적어도 하나의 데이터 항목(D)을 포함하는 블록체인 트랜잭션(TX0); 및
ii) 블록체인 트랜잭션(TX1)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 확인하는데 필요한 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 포함한다.
조항 8.13. 조항 8.12의 시스템에 있어서,
레코드는 트랜잭션(TX0)으로부터 블록체인 블록(B)에 대한 머클 트리의 루트까지의 머클 경로를 더 포함하고; 그리고
바람직하게는, 머클 경로는, 블록체인 트랜잭션(TX0)이 블록체인 블록(B)에 포함된다는 것을 설정 또는 검증하는 데 필요한 적어도 최소의 블록체인 트랜잭션을 포함한다.
조항 8.14. 컴퓨터 판독 가능 저장소 상에서 구현된 컴퓨터 프로그램으로서, 컴퓨터 프로그램은, 하나 이상의 프로세서 상에서 실행될 때,
i) 본 명세서에 청구된 시스템의 기능 중 일부 또는 전부를 구현하고; 그리고/또는
ii) 선행 조항의 특징 중 하나 이상을 구현, 용이하게 하거나, 가능하게 하거나 또는 제공하도록 배열 또는 구성된다.
본 개시내용의 예시적인 실시예의 구현을 위한 예시적인 기술 환경
이제 우리는 본 개시내용의 하나 이상의 실시예들이 실행될 수 있는 컴퓨팅 환경의 개요를 설명한다. 그러나 위에서 언급한 바와 같이, 이러한 맥락은 제한하려는 것이 아니며 블록체인을 통해 구현되지 않는 데이터 레코드들 및 구조들의 프로세싱에 대한 실시예들이 시행될 수 있다. 비-블록체인 실시예들은 분산 원장 대신 데이터베이스를 사용하여 고안될 수 있다.
도 1은 블록체인(150)을 구현하기 위한 예시적인 시스템(100)을 도시한다. 시스템(100)은 패킷-교환 네트워크(101), 통상적으로 인터넷과 같은 광역 인터네트워크를 포함할 수 있다. 패킷-교환 네트워크(101)는 패킷-교환 네트워크(101) 내에서 P2P(peer-to-peer) 네트워크(106)를 형성하도록 배열될 수 있는 복수의 블록체인 노드들(104)을 포함한다. 예시되지는 않았지만, 블록체인 노드들(104)은 거의 완전한 그래프로서 배열될 수 있다. 따라서, 각각의 블록체인 노드(104)는 다른 블록체인 노드들(104)에 고도로 연결된다.
각각의 블록체인 노드(104)는 피어들의 컴퓨터 장비를 포함하며, 노드들(104) 중 상이한 노드들은 상이한 피어에 속한다. 각각의 블록체인 노드(104)는 하나 이상의 프로세서들, 예컨대, 하나 이상의 CPU(central processing unit)들, 가속기 프로세서들, 애플리케이션 특정 프로세서 및/또는 FPGA(field programmable gate array)들, 및 다른 장비 이를테면, ASIC(application specific integrated circuit)들을 포함하는 프로세싱 장치를 포함한다. 각각의 노드는 또한 메모리, 즉 비-일시적 컴퓨터-판독 가능 매체 또는 매체들의 형태의 컴퓨터-판독 가능 저장소를 포함한다. 메모리는 하나 이상의 메모리 매체들, 예컨대, 하드 디스크와 같은 자기 매체; 솔리드 스테이트 드라이브(SSD), 플래시 메모리 또는 EEPROM과 같은 전자 매체; 및/또는 광학 디스크 드라이브와 같은 광학 매체를 사용하는 하나 이상의 메모리 유닛들을 포함할 수 있다.
블록체인(150)은 데이터의 블록들의 체인(151)을 포함하며, 여기서 블록체인(150)의 개개의 사본은 분산 또는 블록체인 네트워크(106) 내 복수의 블록체인 노드들(104) 각각에서 유지된다. 위에서 언급된 바와 같이, 블록체인(150)의 사본을 유지하는 것은 반드시 블록체인(150)을 전부 저장하는 것을 의미하지는 않는다. 대신, 블록체인(150)은 각각의 블록체인 노드(150)가 각각의 블록(151)의 블록 헤더(아래에서 논의됨)를 저장하는 한, 정리된 상태의 데이터일 수 있다. 체인의 각각의 블록(151)은 하나 이상의 트랜잭션들(152)을 포함하며, 여기서 이 맥락에서 트랜잭션은 일종의 데이터 구조를 지칭한다. 데이터 구조의 성질은 트랜잭션 모델 또는 체계(scheme)의 일부로서 사용되는 트랜잭션 프로토콜의 유형에 의존할 것이다. 주어진 블록체인은 전반에 걸쳐 하나의 특정 트랜잭션 프로토콜을 사용할 것이다. 하나의 공통 유형의 트랜잭션 프로토콜에서, 각각의 트랜잭션(152)의 데이터 구조는 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 출력은 재산으로서 디지털 자산의 양을 표현하는 금액을 지정하며, 그의 예는 출력이 암호학적으로 잠겨 있는 사용자(103)이다(이는 잠금해제되고 그리하여 리딤(redeem) 또는 지출되기 위해 그 사용자의 서명 또는 다른 솔루션을 요구함). 각각의 입력은 선행 트랜잭션(152)의 출력을 뒤로 가리키고, 그리하여 트랜잭션들을 링크한다.
각각의 블록(151)은 또한 블록들(151)에 대한 순차적인 순서를 정의하기 위해 체인에서 이전에 생성된 블록(151)을 뒤로 가리키는 블록 포인터(155)를 포함한다. (코인베이스 트랜잭션 외의) 각각의 트랜잭션(152)은 트랜잭션들의 시퀀스들에 대한 순서를 정의하기 위해 이전 트랜잭션에 대한 역 포인터를 포함한다(트랜잭션들(152)의 시퀀스들은 분기가 허용됨을 주의함). 블록들의 체인(151)은 체인의 최초 블록이었던 제네시스(genesis) 블록(Gb)(153)까지 완전히 거슬러 올라간다. 체인(150) 초반의 하나 이상의 오리지널 트랜잭션들(152)은 선행 트랜잭션이 아닌 제네시스 블록(153)을 가리켰다.
블록체인 노드들(104) 각각은 트랜잭션들(152)을 다른 블록체인 노드들(104)로 포워딩하고 그리하여 트랜잭션들(152)이 네트워크(106) 전체에 전파되게 하도록 구성된다. 각각의 블록체인 노드(104)는 블록들(151)을 생성하고 동일한 블록체인(150)의 개개의 사본을 그들 개개의 메모리에 저장하도록 구성된다. 각각의 블록체인 노드(104)는 또한 블록(151)에 통합되기를 기다리는 트랜잭션들(152)의 순서화된 세트(또는 "풀")(154)를 유지한다. 순서화된 풀(154)은 종종 "멤풀(mempool)"로서 지칭된다. 본원에서 이 용어는 임의의 특정 블록체인, 프로토콜 또는 모델에 제한되는 것으로 의도되지 않는다. 이는 노드(104)가 유효한 것으로 수락하고 노드(104)가 동일한 출력을 지출하려고 시도하는 임의의 다른 트랜잭션들을 수락하지 않을 의무가 있는 트랜잭션들의 순서화된 세트를 지칭한다.
주어진 현재 트랜잭션(152j)에서, 그(또는 각각의) 입력은 트랜잭션들의 시퀀스에서 선행 트랜잭션(152i)의 출력을 참조하는 포인터를 포함하여, 그러한 출력이 현재 트랜잭션(152j)에서 "지출"되거나 리딤됨을 지정한다. 일반적으로, 선행 트랜잭션은 순서화된 세트(154) 또는 임의의 블록(151)의 임의의 트랜잭션일 수 있다. 선행 트랜잭션(152i)은 현재 트랜잭션(152j)이 생성되거나 심지어 네트워크(106)로 전송될 때 반드시 존재할 필요는 없지만, 선행 트랜잭션(152i)은 현재 트랜잭션이 유효하기 위해 존재하고 유효성 검증될 필요가 있을 것이다. 따라서 본원에서 "선행(preceding)"이라 함은 포인터들에 의해 링크된 논리적 시퀀스의 선행자를 지칭하며, 반드시 시간적 시퀀스의 전송 또는 생성 시간은 아니고, 따라서 트랜잭션들(152i, 152j)은 순서와 다르게(out-of-order)(고아 트랜잭션들에 대한 아래 논의 참조) 전송되거나 생성되는 것을 반드시 배제하지 않는다. 선행 트랜잭션(152i)은 앞선(antecedent) 트랜잭션 또는 선행자(predecessor) 트랜잭션으로 동등하게 칭해질 수 있다.
현재 트랜잭션(152j)의 입력은 또한 입력 인가, 예컨대, 선행 트랜잭션(152i)의 출력이 잠겨 있는 사용자(103a)의 서명을 포함한다. 차례로, 현재 트랜잭션(152j)의 출력은 새로운 사용자 또는 엔티티(103b)에 암호학적으로 잠길 수 있다. 따라서 현재 트랜잭션(152j)은 선행 트랜잭션(152i)의 입력에서 정의된 금액을 현재 트랜잭션(152j)의 출력에서 정의된 바와 같은 새로운 사용자 또는 엔티티(103b)에 전달할 수 있다. 일부 경우들에서 트랜잭션(152)은 다수의 사용자들 또는 엔티티들(이들 중 하나는 잔돈(change)을 주기 위해 오리지널 사용자 또는 엔티티들(103a)일 수 있음) 사이에서 입력 금액을 분할하기 위해 다수의 출력들을 가질 수 있다. 일부 경우에서 트랜잭션은 또한 하나 이상의 선행 트랜잭션들의 다수의 출력들로부터 금액들을 수집하고 현재 트랜잭션의 하나 이상의 출력들에 재분배하기 위해 다수의 입력들을 가질 수 있다.
비트코인과 같은 출력-기반 트랜잭션 프로토콜에 따르면, 개별 사용자 또는 조직과 같은 당사자(103)가 새로운 트랜잭션(152j)을 제정(enact)하기를 원할 때(수동으로 또는 당사자에 의해 사용되는 자동화된 프로세스에 의해) 제정 당사자는 자신의 컴퓨터 단말(102)로부터 수령인에게 새로운 트랜잭션을 전송한다. 제정 당사자 또는 수령인은 결국, 이 트랜잭션을 네트워크(106)의 블록체인 노드들(104) 중 하나 이상(이는 요즘에는, 통상적으로 서버들 또는 데이터 센터들이지만, 원칙적으로는 다른 사용자 단말들일 수 있음)에 전송할 것이다. 그것은 또한 새로운 트랜잭션(152j)을 제정하는 당사자(103)가 일부 예들에서는 수령인이 아니라, 블록체인 노드들(104) 중 하나 이상에 직접 트랜잭션을 전송할 수 있는 것이 배제되지 않는다. 트랜잭션을 수신한 블록체인 노드(104)는 블록체인 노드들(104) 각각에 적용되는 블록체인 노드 프로토콜에 따라 트랜잭션이 유효한지를 체크한다. 블록체인 노드 프로토콜은 통상적으로 블록체인 노드(104)가 새로운 트랜잭션(152j)의 암호화 서명이 예상되는 서명과 매칭되는지를 체크하도록 요구하며, 이는 트랜잭션들(152)의 순서화된 시퀀스에서 이전 트랜잭션(152i)에 의존한다. 이러한 출력-기반 블록체인 프로토콜에서, 이는 새로운 트랜잭션(152j)의 입력에 포함된 당사자(103)의 암호화 서명 또는 다른 인가가 새로운 트랜잭션이 할당하는 선행 트랜잭션(152i)의 출력에 정의된 조건과 매칭되는지를 체크하는 것을 포함하며, 여기에서 이 조건은 통상적으로 적어도 새로운 트랜잭션(152j)의 입력의 암호화 서명 또는 다른 인가가 새로운 트랜잭션의 입력이 링크되는 이전 트랜잭션(152i)의 출력을 잠금해제한다는 것을 체크하는 것을 포함한다. 조건은 선행 트랜잭션(152i)의 출력에 포함된 스크립트에 의해 적어도 부분적으로 정의될 수 있다. 대안적으로 이는 단순히 블록체인 노드 프로토콜만으로 고정되거나, 이들의 조합으로 인한 것일 수 있다. 어느 쪽이든, 새로운 트랜잭션(152j)이 유효한 경우, 블록체인 노드(104)는 이를 블록체인 네트워크(106) 내 하나 이상의 다른 블록체인 노드들(104)에 포워딩한다. 이러한 다른 블록체인 노드들(104)은 동일한 블록체인 노드 프로토콜에 따라 동일한 테스트를 적용하고, 이에 따라 새로운 트랜잭션(152j)을 하나 이상의 추가 노드들(104)로 포워딩하는 식이다. 이러한 방식으로, 새로운 트랜잭션은 블록체인 노드들(104)의 네트워크 전반에 걸쳐 전파된다.
출력-기반 모델에서, 주어진 출력(예컨대, UTXO)이 할당(예컨대, 지출)되는지 여부에 대한 정의는 그것이 블록체인 노드 프로토콜에 따라 다른 전방 트랜잭션(152j)의 입력에 의해 유효하게 리딤되었는지의 여부이다. 트랜잭션이 유효하기 위한 다른 조건은 리딤을 시도하는 선행 트랜잭션(152i)의 출력이 다른 트랜잭션에 의해 이미 리딤되지 않은 것이다. 재차, 유효하지 않은 경우, (유효하지 않은 것으로서 플래깅되고 경고를 위해 전파되지 않는 한) 트랜잭션(152j)은 블록체인(150)에 레코딩되거나 전파되지 않을 것이다. 이는 트랜잭터가 동일한 트랜잭션의 출력을 한번 초과로 할당하고자 시도하는 이중-지출을 경계한다. 반면, 계정-기반 모델은 계정 잔액을 유지함으로써 이중-지출을 경계한다. 재차, 트랜잭션들의 정의된 순서가 존재하기 때문에, 계정 잔액은 임의의 한 시간에 단일의 정의된 상태를 갖는다.
트랜잭션들을 유효성 검증하는 것 외에도, 블록체인 노드들(104)은 또한 일반적으로 "작업 증명"에 의해 지원되는 채굴로서 지칭되는 프로세스에서 트랜잭션들의 블록들을 생성하는 첫 번째가 되기 위해 경쟁한다. 블록체인 노드(104)에서, 새로운 트랜잭션들은 블록체인(150) 상에 레코딩된 블록(151)에 아직 나타나지 않은 유효한 트랜잭션들의 순서화된 풀(154)에 추가된다. 그 후, 블록체인 노드들은 암호화 퍼즐을 해결하도록 시도함으로써 트랜잭션들의 순서화된 세트(154)로부터 트랜잭션들(152)의 새로운 유효한 블록(151)을 조립하기 위해 경쟁한다. 통상적으로 이는 "논스(nonce)"가 계류중인 트랜잭션들(154)의 순서화된 풀의 표현과 컨케터네이팅되고(concatenated) 해싱될 때, 해시의 출력이 미리 결정된 조건을 충족시키도록 논스 값을 검색하는 것을 포함한다. 예컨대, 미리 결정된 조건은 해시의 출력이 미리 정의된 특정 수의 선행 0들을 갖는 것일 수 있다. 이는 작업 증명 퍼즐의 단 하나의 특정 유형일 뿐이며 다른 유형들도 배제되지 않는다는 것에 주의한다. 해시 함수의 속성은 해시 함수가 그의 입력에 대해 예측 불가능한 출력을 갖는다는 것이다. 따라서 이 검색은 무차별 대입(brute force)에 의해서만 수행될 수 있고, 이에 따라 퍼즐을 해결하고자 하는 각각의 블록체인 노드(104)에서 상당한 양의 프로세싱 자원을 소비한다.
퍼즐을 해결하고자 하는 제1 블록체인 노드(104)는 이를 네트워크(106)에 발표하고, 그 솔루션을 증명으로서 제공하며, 이는 그 후 네트워크의 다른 블록체인 노드(104)들에 의해 쉽게 체크될 수 있다(해시에 대한 솔루션이 주어지면, 그 해가 해시의 출력으로 하여금 조건을 충족시키게 한다는 것을 체크하는 것은 간단함). 제1 블록체인 노드(104)는 블록을 수락하고 이에 따라 프로토콜 규칙들을 시행하는 다른 노드들의 임계 컨센서스에 블록을 전파한다. 트랜잭션들의 순서화된 세트(154)는 그 후 블록체인 노드들(104) 각각에 의해 블록체인(150)에 새로운 블록(151)으로서 레코딩된다. 블록 포인터(155)가 또한 체인에서 이전에 생성된 블록(151n-1)을 뒤로 가리키는 새로운 블록(151n)에 할당된다. 예컨대, 작업 증명 솔루션을 생성하는 데 요구되는 해시 형태의 상당량의 노력은 블록체인 프로토콜의 규칙들에 따르려는 제1 노드(104)의 의도를 시그널링한다. 이러한 규칙들은 트랜잭션이 이전에 유효성 검증된 트랜잭션과 동일한 출력을 할당 ― 이는 이중 지출로서 달리 알려짐 ― 하는 경우 트랜잭션을 유효한 것으로 수락하지 않는 것을 포함한다. 일단 생성되면, 블록(151)은 블록체인 네트워크(106) 내 블록체인 노드들(104) 각각에서 인식 및 유지되기 때문에 수정될 수 없다. 블록 포인터(155)는 또한 블록들(151)에 순차적인 순서를 부과한다. 트랜잭션들(152)은 네트워크(106)의 각각의 블록체인 노드(104)에서 순서화된 블록들에 레코딩되기 때문에, 이는 이에 따라, 트랜잭션들의 변경 불가능한 공개 원장을 제공한다.
임의의 주어진 시간에 퍼즐을 해결하기 위해 경쟁하는 상이한 블록체인 노드들(104)은 솔루션을 검색하기 시작한 시기 또는 트랜잭션이 수신된 순서에 의존하여, 임의의 주어진 시간에 아직 공개되지 않은 트랜잭션들 풀(154)의 상이한 스냅샷들에 기초하여 퍼즐을 해결할 수 있다는 것에 주의한다. 누구든 각자의 퍼즐을 먼저 해결하는 사람은 어느 트랜잭션들(152)이 어떤 순서로 다음의 새로운 블록(151n)에 포함되는지를 정의하고, 공개되지 않은 트랜잭션들의 현재 풀(154)은 업데이트된다. 그 후 블록체인 노드들(104)은 공개되지 않은 트랜잭션들(154)의 새롭게 정의된 순서화된 풀로부터 블록을 생성하기 위해 계속 경쟁한다. 발생할 수 있는 임의의 "포크(fork)" ― 이는 2개의 블록체인 노드들(104)이 서로 매우 짧은 시간 내에 그의 퍼즐을 해결하여서, 블록체인에 대한 상충되는 뷰(view)가 노드들 사이에 전파되는 경우임 ― 를 해결하기 위한 프로토콜이 또한 존재한다. 요컨대, 가장 길게 성장하는 포크의 갈래가 확정적인 블록체인(150)이 된다. 동일한 트랜잭션들이 포크들 둘 모두에 나타날 것이므로, 이는 네트워크의 사용자들 또는 에이전트들에게 영향을 미치지 않아야 한다.
비트코인 블록체인(및 대부분의 다른 블록체인들)에 따르면, 새로운 블록(104)을 성공적으로 구성하는 노드에는 (하나의 에이전트 또는 사용자로부터 다른 에이전트 또는 사용자로 디지털 자산의 금액을 이전하는 에이전트-간 또는 사용자-간 트랜잭션과 대조적으로) 디지털 자산의 부가적인 정의된 양을 분산하는 새로운 특별한 종류의 트랜잭션들에서 디지털 자산의 부가적인 수락된 금액을 새롭게 할당하는 능력이 승인된다. 이 특별한 유형의 트랜잭션은 일반적으로 "코인베이스 트랜잭션"으로서 지칭되지만, "초기 트랜잭션" 또는 "생성 트랜잭션"이라고도 칭해질 수 있다. 그것은 통상적으로 새로운 블록(151n)의 제1 트랜잭션을 형성한다. 작업 증명은 나중에 이 특별한 트랜잭션이 리딤되도록 허용하는 프로토콜 규칙들을 따르도록 새로운 블록을 구성하는 노드의 의도를 시그널링한다. 블록체인 프로토콜 규칙은 이 특별한 트랜잭션이 리딤되기 전에 만기 기간 예컨대, 100개의 블록들을 요구할 수 있다. 종종 일반(비-생성) 트랜잭션(152)이 또한 그 트랜잭션이 공개된 블록(151n)을 생성한 블록체인 노드(104M)를 추가로 보상하기 위해, 그의 출력들 중 하나에 부가적인 트랜잭션 수수료를 지정할 것이다. 이 수수료는 일반적으로 "트랜잭션 수수료"로서 지칭되고 아래에서 논의된다.
트랜잭션 유효성 검증 및 공개와 관련된 자원들로 인해, 통상적으로 적어도 블록체인 노드들(104) 각각은 하나 이상의 물리적 서버 유닛들, 또는 심지어 전체 데이터 센터를 포함하는 서버의 형태를 취한다. 그러나 원칙적으로 임의의 주어진 블록체인 노드(104)는 사용자 단말 또는 함께 네트워킹된 사용자 단말들의 그룹의 형태를 취할 수 있다.
각각의 블록체인 노드(104)의 메모리는 블록체인 노드 프로토콜에 따라 각자의 역할 또는 역할들을 수행하고 트랜잭션들(152)을 처리하기 위해 블록체인 노드(104)의 프로세싱 장치 상에서 실행되도록 구성된 소프트웨어를 저장한다. 본원에서 블록체인과 노드(104)에 기인한 임의의 액션은 각자의 컴퓨터 장비의 프로세싱 장치 상에서 실행되는 소프트웨어에 의해 수행될 수 있다는 것이 이해될 것이다. 노드 소프트웨어는 애플리케이션 계층, 또는 운영 체제 계층이나 프로토콜 계층과 같은 하위 계층 또는 이들의 임의의 조합에서 하나 이상의 애플리케이션들로 구현될 수 있다.
또한 네트워크(101)에는 소비 사용자들의 역할을 하는 복수의 당사자들(103) 각각의 컴퓨터 장비(102)가 연결되어 있다. 이러한 사용자들은 블록체인 네트워크(106)와 상호작용할 수 있지만 트랜잭션들을 검증하거나 블록들을 구성하는 데 참여하지 않는다. 이러한 사용자들 또는 에이전트들(103) 중 일부는 트랜잭션들에서 전송자들 및 수령인들로서 작용할 수 있다. 다른 사용자들은 반드시 전송자들 또는 수령인들로서 작용할 필요 없이 블록체인(150)과 상호작용할 수 있다. 예컨대, 일부 당사자들은 블록체인(150)의 사본을 저장하는 저장 엔티티들로서 작용할 수 있다(예컨대, 블록체인 노드(104)로부터 블록체인의 사본을 획득함).
당사자들(103) 중 일부 또는 전부는 상이한 네트워크, 예컨대, 블록체인 네트워크(106) 위에 오버레이된 네트워크의 부분으로서 연결될 수 있다. 블록체인 네트워크의 사용자들(종종 "클라이언트"로서 지칭됨)은 블록체인 네트워크(106)를 포함하는 시스템의 일부로서 언급될 수 있지만; 이러한 사용자들은 블록체인 노드들에서 요구되는 역할을 수행하지 않기 때문에 블록체인 노드들(104)이 아니다. 대신에, 각각의 당사자(103)는 블록체인 네트워크(106)와 상호작용할 수 있고 그리하여 블록체인 노드(106)에 연결(즉, 통신)함으로써 블록체인(150)을 활용할 수 있다. 제1 당사자(103a) 및 그/그녀의 개개의 컴퓨터 장비(102a) 및 제2 당사자(103b) 및 그/그녀의 개개의 컴퓨터 장비(102b)인 두 당사자들(103) 및 이들의 개개의 장비(102)가 예시 목적으로 도시된다. 훨씬 더 많은 이러한 당사자들(103) 및 이들의 개개의 컴퓨터 장비(102)가 존재하고 시스템(100)에 참여할 수 있지만, 편의상 그것들은 예시되지 않는다는 것이 이해될 것이다. 각각의 당사자(103)는 개인 또는 조직일 수 있다. 순전히 예시로서, 제1 당사자(103a)는 본원에서 앨리스(Alice)로서 지칭되고 제2 당사자(103b)는 밥(Bob)으로서 지칭되지만, 이것이 제한적이지 않고 본원에서 앨리스 또는 밥에 대한 임의의 참조는 각각 "제1 당사자" 및 "제2 당사자"로 대체될 수 있다는 것이 인지될 것이다.
각각의 당사자(103)의 컴퓨터 장비(102)는 하나 이상의 프로세서들, 예컨대, 하나 이상의 CPU들, GPU들, 다른 가속기 프로세서들, 애플리케이션 특정 프로세서들 및/또는 FPGA들을 포함하는 개개의 프로세싱 장치를 포함한다. 각각의 당사자(103)의 컴퓨터 장비(102)는 메모리, 즉 비-일시적 컴퓨터-판독 가능 매체 또는 매체들의 형태의 컴퓨터-판독 가능 저장소를 더 포함한다. 이 메모리는 하나 이상의 메모리 매체들, 예컨대, 하드 디스크와 같은 자기 매체; 솔리드 스테이트 SSD, 플래시 메모리 또는 EEPROM과 같은 전자 매체; 및/또는 광학 디스크 드라이브와 같은 광학 매체를 사용하는 하나 이상의 메모리 유닛들을 포함할 수 있다. 각각의 당사자(103)의 컴퓨터 장비(102) 상의 메모리는 프로세싱 장치 상에서 실행되도록 배열된 적어도 하나의 클라이언트 애플리케이션(105)의 개개의 인스턴스를 포함하는 소프트웨어를 저장한다. 본원에서 주어진 당사자(103)에 기인한 임의의 액션은 개개의 컴퓨터 장비(102)의 프로세싱 장치 상에서 실행되는 소프트웨어를 사용하여 수행될 수 있다는 것이 이해될 것이다. 각각의 당사자(103)의 컴퓨터 장비(102)는 적어도 하나 사용자 단말, 예컨대, 데스크 톱 또는 랩톱 컴퓨터, 태블릿, 스마트폰, 또는 스마트워치와 같은 웨어러블 디바이스를 포함한다. 주어진 당사자(103)의 컴퓨터 장비(102)는 또한 사용자 단말을 통해 액세스되는 클라우드 컴퓨팅 자원들과 같은 하나 이상의 다른 네트워킹된 자원들을 포함할 수 있다.
예컨대, 서버로부터 다운로드되거나, 또는 이동식 저장 디바이스 이를테면, 이동식 SSD, 플래시 메모리 키, 이동식 EEPROM, 이동식 자기 디스크 드라이브, 자기 플로피 디스크 또는 테이프, 광학 디스크 이를테면, CD 또는 DVD ROM 또는 이동식 광학 드라이브 등 상에서 제공되는 클라이언트 애플리케이션(105)은 적절한 컴퓨터-판독 가능 저장 매체 또는 매체들 상에서 임의의 주어진 당사자(103)의 컴퓨터 장비(102)에 초기에 제공될 수 있다.
클라이언트 애플리케이션(105)은 적어도 "지갑" 기능을 포함한다. 이는 2개의 메인 기능성들을 갖는다. 이들 중 하나는 개개의 당사자(103)가 트랜잭션들(152)을 생성하고 인가(예컨대, 서명)하여 하나 이상의 비트코인 노드들(104)에 전송하여, 이어서 블록체인 노드들(104)의 네트워크 전반에 걸쳐 전파되고 그리하여 블록체인(150)에 포함되는 것을 가능하게 하는 것이다. 남은 하나는 개개의 당사자에게 자신이 현재 소유하고 있는 디지털 자산의 금액을 다시 보고하는 것이다. 출력-기반 시스템에서, 이 제2 기능성은 블록체인(150) 전반에 걸쳐 흩어져 있는 해당 당사자에 속하는 다양한 트랜잭션들(152)의 출력들에서 정의된 금액들을 대조하는 것을 포함한다.
참고: 다양한 클라이언트 기능성이 주어진 클라이언트 애플리케이션(105)에 통합되는 것으로서 설명될 수 있지만, 이는 반드시 제한적인 것은 아니며, 대신 본원에서 설명된 클라이언트 기능성은 API를 통해 인터페이싱하거나 하나가 남은 하나에 플러그인하는 두 개 이상의 개별 애플리케이션들의 세트에서 구현될 수 있다. 보다 일반적으로, 클라이언트 기능성은 애플리케이션 계층 또는 운영 체제와 같은 하위 계층 또는 이들의 임의의 조합에서 구현될 수 있다. 다음은 클라이언트 애플리케이션(105)과 관련하여 설명될 것이지만, 이것이 제한적이지 않다는 것이 인지될 것이다.
각각의 컴퓨터 장비(102) 상의 클라이언트 애플리케이션 또는 소프트웨어(105)의 인스턴스는 네트워크(106)의 블록체인 노드들(104) 중 적어도 하나에 동작 가능하게 커플링된다. 이는 클라이언트(105)의 지갑 기능이 트랜잭션들(152)을 네트워크(106)로 전송하는 것을 가능하게 한다. 클라이언트(105)는 또한 개개의 당사자(103)가 수령인인 임의의 트랜잭션들에 대해 블록체인(150)에 질의하기 위해(또는 실시예들에서, 블록체인(150)은 그의 공개 가시성을 통해 부분적으로 트랜잭션들의 신뢰를 제공하는 공공 시설(public facility)이므로, 실제로 블록체인(150)에서 다른 당사자들의 트랜잭션을 검사하기 위해) 블록체인 노드들(104)에 접촉할 수 있다. 각각의 컴퓨터 장비(102) 상의 지갑 기능은 트랜잭션 프로토콜에 따라 트랜잭션들(152)을 공식화(formulate) 하고 전송하도록 구성된다. 위에서 제시된 바와 같이, 각각의 블록체인 노드(104)는 블록체인 노드 프로토콜에 따라 트랜잭션들(152)을 유효성 검증하고 트랜잭션들(152)을 포워딩하여 이들을 블록체인 네트워크(106) 전체에 전파하도록 구성된 소프트웨어를 실행한다. 트랜잭션 프로토콜 및 노드 프로토콜은 서로 대응하며, 주어진 트랜잭션 프로토콜은 주어진 트랜잭션 모델을 함께 구현하도록 주어진 노드 프로토콜을 따른다. 동일한 트랜잭션 프로토콜이 블록체인(150) 내 모든 트랜잭션들(152)에 사용된다. 동일한 노드 프로토콜이 네트워크(106) 내 모든 노드들(104)에 의해 사용된다.
주어진 당사자(103), 이를테면 앨리스가 블록체인(150)에 포함될 새로운 트랜잭션(152j)을 전송하기를 원할 때, 그녀는 (자신의 클라이언트 애플리케이션(105)의 지갑 기능을 사용하여) 관련 트랜잭션 프로토콜에 따라 새로운 트랜잭션을 공식화한다. 그 후, 그녀는 클라이언트 애플리케이션(105)으로부터 그녀가 연결되는 하나 이상의 블록체인 노드들(104)에 트랜잭션(152)을 전송한다. 예컨대, 이는 앨리스의 컴퓨터(102)에 가장 잘 연결된 블록체인과 노드(104)일 수 있다 임의의 주어진 블록체인 노드(104)가 새로운 트랜잭션(152j)을 수신할 때, 주어진 노드는 블록체인 노드 프로토콜 및 각자의 역할에 따라 이를 처리한다. 이는 새롭게 수신된 트랜잭션(152j)이 "유효"하기 위한 특정 조건을 충족시키는지를 먼저 체크하는 것을 포함하며, 그의 예들은 곧 보다 자세히 논의될 것이다. 일부 트랜잭션 프로토콜들에서, 유효성 검증을 위한 조건은 트랜잭션들(152)에 포함된 스크립트들에 의해 트랜잭션 단위로 구성 가능할 수 있다. 대안적으로, 조건은 단순히 노드 프로토콜의 내장 피처이거나, 스크립트 및 노드 프로토콜의 조합으로 정의될 수 있다.
새롭게 수신된 트랜잭션(152j)이 유효한 것으로 간주되기 때문에 테스트를 통과한다는 것을 조건으로(즉, 그것이 "유효성 검증"된다는 조건으로), 트랜잭션(152j)을 수신하는 임의의 블록체인 노드(104)는 새로운 유효성 검증된 트랜잭션(152)을 그 블록체인 노드(104)에서 유지되는 블록체인들(154)의 순서화된 세트(154)에 추가할 것이다. 또한, 트랜잭션(152j)을 수신하는 임의의 블록체인 노드(104)는 유효성 검증된 트랜잭션(152)을 네트워크(106)의 하나 이상의 다른 블록체인 노드들(104)로 계속해서 전파시킬 것이다. 각각의 블록체인 노드(104)가 동일한 프로토콜을 적용하기 때문에, 트랜잭션(152j)이 유효하다고 가정하면, 이는 그것이 곧 전체 네트워크(106)에 걸쳐 전파될 것임을 의미한다.
일단 주어진 블록체인 노드(104)에서 유지되는 계류중인 트랜잭션(154)의 순서화된 풀에 허용되면, 블록체인 노드(104)는 새로운 트랜잭션(152)을 포함하여 트랜잭션(154)의 각자의 풀의 최신 버전 상에서 작업 증명 퍼즐을 해결하기 위해 경쟁하기 시작할 것이다(다른 블록체인 노드들(104)은 트랜잭션들의 상이한 풀(154)에 기초하여 퍼즐을 해결하려고 시도할 수 있지만 누구든 먼저 해결하는 사람은 최신 블록(151)에 포함된 트랜잭션들의 세트를 정의할 것임을 상기한다). 결국 블록체인 노드(104)는 앨리스의 트랜잭션(152j)을 포함하는 순서화된 풀(154)의 일부에 대한 퍼즐을 해결할 것이다. 새로운 트랜잭션(152j)을 포함하는 풀(154)에 대한 작업 증명이 완료되면, 이는 변경 불가능하게 블록체인(150)의 블록들(151) 중 하나의 부분이 된다. 각각의 트랜잭션(152)은 이전 트랜잭션에 대한 역 포인터를 포함하여서, 트랜잭션들의 순서가 또한 변경 불가능하게 레코딩된다.
상이한 블록체인 노드들(104)은 주어진 트랜잭션의 상이한 인스턴스들을 먼저 수신하고 이에 따라 하나의 인스턴스가 새로운 블록(151)에 공개되기 전에 어떤 인스턴스가 '유효'한지에 관한 상충되는 뷰들을 가질 수 있으며, 이 때 모든 블록체인 노드들(104)은 공개된 인스턴스가 유일한 유효 인스턴스라는 것에 동의한다. 블록체인 노드(104)가 하나의 인스턴스를 유효한 것으로 수락하고 그 후 제2 인스턴스가 블록체인(150)에 레코딩되었음을 발견하는 경우, 해당 블록체인 노드(104)는 이를 수락해야 하며 초기에 수락된 인스턴스(즉, 블록(151)에서 공개되지 않은 인스턴스)를 폐기(즉, 유효하지 않은 것으로 취급)할 것이다.
일부 블록체인 네트워크들에 의해 동작되는 트랜잭션 프로토콜의 대안적인 유형은 계정-기반 트랜잭션 모델의 일부로서 "계정-기반" 프로토콜로서 지칭될 수 있다. 계정-기반의 경우에, 각각의 트랜잭션은 과거 트랜잭션들의 시퀀스에서 선행 트랜잭션의 UTXO를 뒤로 참조하기 보다는, 절대 계정 잔액을 참조함으로써 전달될 금액을 정의한다. 모든 계정들의 현재 상태는 블록체인과 별개로 해당 네트워크의 노드들에 의해 저장되며 지속적으로 업데이트된다. 이러한 시스템에서, 트랜잭션들은 계정의 실행 중인 트랜잭션 집계(또한 "포지션"이라 불림)를 사용하여 순서화된다. 이 값은 그의 암호화 서명의 일부로 발신인에 의해 서명되고 트랜잭션 참조 계산의 부분으로서 해싱된다. 게다가, 선택적 데이터 필드가 또한 트랜잭션에 서명할 수 있다. 이 데이터 필드는 예컨대, 이전 트랜잭션 ID가 데이터 필드에 포함된 경우 이전 트랜잭션을 뒤로 가리킬 수 있다.
UTXO -기반 모델
도 2는 예시적인 트랜잭션 프로토콜을 예시한다. 이는 UTXO-기반 프로토콜의 예이다. 트랜잭션(152)(약칭 "Tx")은 블록체인(150)의 기본 데이터 구조이다(각각의 블록(151)은 하나 이상의 트랜잭션들(152)을 포함함). 다음은 출력-기반 또는 "UTXO" 기반 프로토콜을 참조하여 설명될 것이다. 그러나 이것은 모든 가능한 실시예들로 제한되지 않는다. 예시적인 UTXO-기반 프로토콜이 비트코인을 참조하여 설명되지만, 다른 예시적인 블록체인 네트워크들 상에서 동일하게 구현될 수 있다는 것에 주의한다.
UTXO-기반 모델에서, 각각의 트랜잭션("Tx")(152)은 하나 이상의 입력들(202) 및 하나 이상의 출력들(203)을 포함하는 데이터 구조를 포함한다. 각각의 출력(203)은 (UTXO가 아직 리딤되지 않은 경우) 다른 새로운 트랜잭션의 입력(202)에 대한 소스로서 사용될 수 있는 미지출 트랜잭션 출력(unspent transaction output; UTXO)을 포함할 수 있다. UTXO는 디지털 자산의 금액을 지정하는 값을 포함한다. 이는 분산 원장 상의 세팅된 수의 토큰들을 표현한다. UTXO는 또한 다른 정보 중에서도, 그것이 발생한 트랜잭션의 트랜잭션 ID를 포함할 수 있다. 트랜잭션 데이터 구조는 또한 입력 필드(들)(202) 및 출력 필드(들)(203)의 크기의 표시자를 포함할 수 있는 헤더(201)를 포함할 수 있다. 헤더(201)는 또한 트랜잭션의 ID를 포함할 수 있다. 실시예들에서, 트랜잭션 ID는 (트랜잭션 ID 자체는 제외한) 트랜잭션 데이터의 해시이고 노드들(104)에게 제출된 원시 트랜잭션(152)의 헤더(201)에 저장된다.
앨리스(103a)가 해당 디지털 자산의 금액을 밥(103b)에게 전달하는 트랜잭션(152j)을 생성하기를 원한다고 하자. 도 2에서 앨리스의 새로운 트랜잭션(152j)은 "Tx1"로서 라벨이 지정된다. 이는 시퀀스의 선행 트랜잭션(152i)의 출력(203)에서 앨리스에게 잠긴 디지털 자산의 금액을 취하고, 이 중 적어도 일부를 밥에게 전달한다. 선행 트랜잭션(152i)은 도 2에서 "Tx0"로 라벨이 지정된다. Tx0 및 Tx1은 임의의 라벨일 뿐이다. 이들은, Tx0이 블록체인(151)의 최초 트랜잭션이거나, Tx1이 풀(154)에서 바로 다음 트랜잭션이라는 것을 반드시 의미하지는 않는다. Tx1은 앨리스에게 잠긴 미지출 출력(203)을 여전히 갖는 임의의 선행(즉, 앞선) 트랜잭션을 뒤로 가리킬 수 있다.
선행 트랜잭션(Tx0)은 앨리스가 자신의 새로운 트랜잭션(Tx1)을 생성할 때, 또는 적어도 그녀가 그것을 네트워크(106)에 전송할 때까지 이미 유효성 검증되고 블록체인(150)의 블록(151)에 포함되었을 수 있다. 이는 그 시간에 이미 블록들(151) 중 하나에 포함되었거나, 순서화된 세트(154)에서 여전히 대기 중일 수 있으며, 이 경우에 곧 새로운 블록(151)에 포함될 것이다. 대안적으로 Tx0 및 Tx1이 생성되고 네트워크(106)에 함께 전송될 수 있거나 또는 노드 프로토콜이 "고아" 트랜잭션들을 버퍼링하도록 허용하는 경우 Tx0는 Tx1 이후에도 전송될 수 있다. 트랜잭션들의 시퀀스의 맥락에서 본원에서 사용된 바와 같은 "선행" 및 "후속"이라는 용어들은 (트랜잭션이 다른 트랜잭션을 뒤로 가리키고, 이와 같이 계속되는) 트랜잭션들에서 지정된 트랜잭션 포인터들에 의해 정의된 바와 같은 시퀀스에서의 트랜잭션들의 순서를 지칭한다. 이들은 "선행자(predecessor)" 및 "후행자(successor)", 또는 "앞선(antecedent)"과 "후위의(descendant)", "부모" 및 "자식" 등으로 동등하게 대체될 수 있다. 이는 그것들이 생성되고, 네트워크(106)로 전송되거나, 임의의 주어진 블록체인 노드(104)에 도달하는 순서를 반드시 의미하지는 않는다. 그럼에도 불구하고, 선행 트랜잭션(앞선 트랜잭션 또는 "부모")을 가리키는 후속 트랜잭션(후위의 트랜잭션 또는 "자식")은 부모 트랜잭션이 유효성 검증될 때까지 그리고 유효성 검증되지 않는 한 유효성 검증되지 않을 것이다. 그의 부모 이전에 블록체인과 노드(104)에 도달하는 자식은 고아로 간주된다. 이는 노드 프로토콜 및/또는 노드 거동에 의존하여 부모를 기다리기 위해 특정 시간 동안 버퍼링되거나 폐기될 수 있다.
선행 트랜잭션(Tx0)의 하나 이상의 출력들(203) 중 하나는, 본원에서 UTXO0으로서 라벨이 지정되는 특정 UTXO를 포함한다. 각각의 UTXO는 UTXO에 의해 표현되는 디지털 자산의 금액을 지정하는 값 및 후속 트랜잭션이 유효성 검증되고 따라서 UTXO가 성공적으로 리딤되기 위하여 후속 트랜잭션의 입력(202)에서 잠금해제 스크립트에 의해 만족되어야 하는 조건을 정의하는 잠금 스크립트를 포함한다. 통상적으로, 잠금 스크립트는 특정 당사자(그것이 포함된 트랜잭션의 수혜자)에게로 금액을 잠근다. 즉, 잠금 스크립트는, 통상적으로 후속 트랜잭션의 입력의 잠금해제 스크립트가 선행 트랜잭션이 잠겨 있는 당사자의 암호화 서명을 포함하는 조건을 포함하는 잠금해제 조건을 정의한다.
잠금 스크립트(scriptPubKey로서 또한 알려짐)는 노드 프로토콜에 의해 인식되는 도메인 특정 언어로 작성된 코드 조각이다. 이러한 언어의 특정 예는 블록체인 네트워크에 의해 사용되는 "스크립트(Script)"(대문자 S)라 불린다. 잠금 스크립트는 트랜잭션 출력(203)을 지출하는 데 어떤 정보가 필요한지, 예컨대, 앨리스의 서명 요건을 지정한다. 잠금해제 스크립트들은 트랜잭션들의 출력에서 나타난다. 잠금해제 스크립트(scriptSig로서 또한 알려짐)는 잠금 스크립트 기준들을 충족시키는 데 필요한 정보를 제공하는 도메인 특정 언어로 작성된 코드 조각이다. 예컨대, 이는 밥의 서명을 포함할 수 있다. 잠금해제 스크립트들은 트랜잭션들의 입력(202)에 나타난다.
따라서 예시된 예에서, Tx0의 출력(203)의 UTXO0은 UTXO0가 리딤되기 위해(엄밀히, UTXO0을 리딤하고자 시도하는 후속 트랜잭션이 유효하기 위해) 앨리스의 서명 Sig PA를 요구하는 잠금 스크립트 [Checksig PA]를 포함한다. [Checksig PA]는 앨리스의 공개-개인 키 쌍으로부터의 공개 키 PA의 표현(예컨대, 해시)을 포함한다. Tx1의 입력(202)은 (예컨대, 실시예에서, 전체 트랜잭션 Tx0의 해시인 그의 트랜잭션 ID인 TxID0에 의해) Tx1을 뒤로 가리키는 포인터를 포함한다. Tx1의 입력(202)은 Tx0 내에서 UTXO0을 식별하는 인덱스를 포함하여, Tx0의 임의의 다른 가능한 출력들 사이에서 그것을 식별한다. Tx1의 입력(202)은 앨리스의 암호화 서명을 포함하는 잠금해제 스크립트 <Sig PA>를 더 포함하며, 이는 앨리스가 키 쌍으로부터 자신의 개인 키를 데이터의 미리 정의된 부분(때로는 암호법에서 "메시지"라 불림)에 적용함으로써 생성된다. 유효한 서명을 제공하기 위해 앨리스에 의해 서명될 필요가 있는 데이터(또는 "메시지")는 잠금 스크립트, 노드 프로토콜 또는 이들의 조합에 의해 정의될 수 있다.
새로운 트랜잭션 Tx1이 블록체인 노드(104)에 도달할 때, 노드는 노드 프로토콜을 적용한다. 이는 잠금해제 스크립트가 잠금 스크립트에 정의된 조건(이 조건은 하나 이상의 기준들을 포함할 수 있음)을 충족시키는지를 체크하기 위해 잠금 스크립트 및 잠금해제 스크립트를 함께 실행하는 것을 포함한다. 실시예들에서, 이는 2개의 스크립트들을 컨케터네이팅(concatenating)하는 것을 수반한다.
여기에서 "||"는 컨케터네이션을 표현하고 "<...>"는 스택 상에 데이터를 배치하는 것을 의미하고, "[…]"는 잠금 스크립트(이 예에서, 스택-기반 언어)에 의해 구성된 함수이다. 동등하게, 스크립트들을 컨케터네이팅하는 대신, 스크립트들은 공통 스택을 사용하여 번갈아 실행될 수 있다. 어느 쪽이든, 함께 실행될 때, 스크립트들은 Tx0의 출력의 잠금 스크립트에 포함된 바와 같은 앨리스의 공개 키 PA를 사용하여, Tx1의 입력의 잠금해제 스크립트가 데이터의 예상되는 부분에 서명하는 앨리스의 서명을 포함한다는 것을 인증한다. 이 인증을 수행하기 위하여 데이터의 예상되는 부분 자체("메시지")가 또한 포함될 필요가 있다. 실시예들에서, 서명된 데이터는 Tx1 전체를 포함한다(이에 따라, 평문으로 데이터의 서명된 부분을 지정하는 별개의 요소가 포함될 필요가 없는데, 그 이유는 그것이 이미 본질적으로 존재하기 때문임).
공개-개인 암호법에 의한 인증의 세부사항들은 당업자에게 친숙할 것이다. 기본적으로, 앨리스가 자신의 개인 키를 사용하여 메시지에 서명한 경우, 앨리스의 공개 키 및 평문의 메시지를 감안하여, 노드(104)와 같은 다른 엔티티는 메시지가 앨리스에 의해 서명된 것임이 틀림없다는 것을 인증할 수 있다. 서명은 통상적으로 메시지를 해싱하는 것, 해시에 서명하는 것, 그리고 이를 서명으로서 메시지에 태깅하고, 이에 따라 공개 키의 임의의 보유자(holder)가 서명을 인증하는 것을 가능하게 하는 것을 포함한다. 따라서 여기에서 특정 데이터 조각 또는 트랜잭션의 일부 등에 서명하는 것에 대한 임의의 참조는 실시예들에서 해당 데이터 조각 또는 트랜잭션 일부의 해시에 서명하는 것을 의미할 수 있다는 것에 주의한다. .
Tx1의 잠금해제 스크립트가 Tx0의 잠금 스크립트에 지정된 하나 이상의 조건들을 충족시키는 경우(이에 따라, 보여진 예에서, 앨리스의 서명이 Tx1에서 제공되고 인증된 경우), 블록체인과 노드(104)는 Tx1이 유효한 것으로 간주한다. 이는 블록체인 노드(104)가 계류중인 트랜잭션들(154)의 순서화된 풀에 Tx1을 추가할 것임을 의미한다. 블록체인 노드(104F)는 또한 트랜잭션 Tx1을 네트워크(106) 내 하나 이상의 다른 블록체인 노드들(104)로 포워딩할 것이어서, 그 트랜잭션이 네트워크(106) 전반에 걸쳐 전파될 것이다. Tx1이 유효성 검증되고 블록체인(150)에 포함되면, 이는 지출된 것으로 Tx0으로부터의 UTXO0을 정의한다. Tx1은 그것이 미지출 트랜잭션 출력(203)을 지출하는 경우에만 유효할 수 있다는 것에 주의한다. 다른 트랜잭션(152)에 의해 이미 지출된 출력을 지출하려고 시도하는 경우, 다른 모든 조건들이 충족되는 경우조차도 Tx1은 유효하지 않을 것이다. 따라서 블록체인과 노드(104)는 또한 선행 트랜잭션 Tx0에서 참조된 UTXO가 이미 지출되었는지(즉, 다른 유효한 트랜잭션에 대한 유효한 입력을 이미 형성했는지)를 체크할 필요가 있다. 이는 트랜잭션들(152) 상에 정의된 순서를 부과하는 것이 블록체인(150)에 대해 중요한 하나의 이유이다. 실제로, 주어진 블록체인 노드(104)는 트랜잭션들(152)이 지출된 UTXO들(203)을 마킹하는 별개의 데이터베이스를 유지할 수 있지만, 궁극적으로 UTXO가 지출되었는지를 정의하는 것은 블록체인(150)의 다른 유효한 트랜잭션에 대한 유효한 입력이 이미 형성되었는지의 여부이다.
주어진 트랜잭션(152)의 모든 출력들(203)에서 지정된 총 금액이 모든 그의 입력들(202)에 의해 가리켜지는 총 금액보다 큰 경우, 이는 대부분의 트랜잭션 모델들에서 무효에 대한 다른 근거이다. 따라서 이러한 트랜잭션들은 전파되지도 않고 블록(151)에 포함되지 않을 것이다.
UTXO-기반 트랜잭션 모델에서, 주어진 UTXO는 전체로서 지출될 필요가 있다는 것에 주의한다. 다른 프랙션(fraction)이 지출되면서, 지출된 것으로 UTXO에서 정의된 금액의 프랙션을 "남겨둘" 수는 없다. 그러나 UTXO로부터의 금액은 다음 트랜잭션의 다수의 출력들 사이에서 분할될 수 있다. 예컨대, Tx0의 UTXO0에 정의된 금액은 Tx1의 다수의 UTXO들 사이에서 분할될 수 있다. 따라서 앨리스가 UTXO0에 정의된 모든 금액을 밥에게 주기를 원하지 않는 경우, 앨리스는 Tx1의 제2 출력에서 자신에게 잔돈을 주거나, 다른 당사자에게 지불하는데 나머지를 사용할 수 있다.
실제로, 앨리스는 또한 일반적으로 블록(151)에 그녀의 트랜잭션(104)을 성공적으로 포함시키는 비트코인 노드(104)에 대한 수수료를 포함할 필요가 있을 것이다. 앨리스가 그러한 수수료를 포함시키지 않는 경우, Tx0은 블록체인 노드들(104M)에 의해 거부될 수 있고, 이에 따라 기술적으로 유효하더라도, 전파되어 블록체인(150)에 포함되지 않을 수 있다(노드 프로토콜은 블록체인 노드들(104)이 원하지 않는 경우 이들에게 트랜잭션들(152)을 수락하도록 강요하지 않음). 일부 프로토콜들에서, 트랜잭션 수수료는 자체의 별개의 출력(203)을 요구하지 않는다(즉, 별개의 UTXO가 필요하지 않음). 대신, 주어진 트랜잭션(152)의 입력(들)(202)에 의해 가리켜지는 총 금액과 출력(들)(203)에 지정된 총 금액 사이의 임의의 차이는 트랜잭션을 공개한 블록체인 노드(104)에게 자동으로 주어진다. 예컨대, UTXO0에 대한 포인터가 Tx1에 대한 유일한 입력이고 Tx1는 단 하나의 출력 UTXO1만을 갖는다고 하자. UTXO0에 지정된 디지털 자산의 금액이 UTXO1에 지정된 금액보다 큰 경우, 차이는 UTXO1을 포함하는 블록을 생성하기 위한 작업 증명 경쟁에서 승리한 노드(104)에 의해 할당될 수 있다. 그러나 대안적으로 또는 부가적으로, 트랜잭션 수수료가 트랜잭션(152)의 UTXO들(203) 중 자체 UTXO에서 명시적으로 지정될 수 있다는 것이 반드시 배제되는 것은 아니다.
앨리스 및 밥의 디지털 자산들은 블록체인(150)의 임의의 위치의 임의의 트랜잭션들(152)에서 그들에게 잠겨 있는 UTXO로 구성된다. 따라서 통상적으로, 주어진 당사자(103)의 자산들은 블록체인(150) 전반에 걸친 다양한 트랜잭션들(152)의 UTXO들에 걸쳐 흩어져 있다. 블록체인(150)의 어떤 위치에도 주어진 당사자(103)의 총 잔액을 정의하는 숫자는 전혀 없다. 클라이언트 애플리케이션(105)에서 지갑 기능의 역할은, 개개의 당사자에게 잠겨 있으며 다른 전방 트랜잭션에서 아직 지출되지 않은 모든 다양한 UTXO들의 값들을 함께 대조하는 것이다. 비트코인 노드들(104) 중 임의의 것에 저장된 블록체인(150)의 사본을 질의함으로써 이것이 수행될 수 있다.
스크립트 코드는 종종 도식적으로(즉, 정확한 언어를 사용하지 않음) 표현된다는 것에 주의한다. 예컨대, 특정 기능을 표현하기 위해 작업 코드(opcode)들이 사용될 수 있다. "OP_..."는 스크립트 언어의 특정 작업코드(opcode)를 지칭한다. 예로서, OP_RETURN은 잠금 스크립트의 선두에서 OP_FALSE가 앞에 있을 때 트랜잭션 내에 데이터를 저장하고 그리하여 데이터를 블록체인(150)에 변경 불가능하게 레코딩할 수 있는 트랜잭션의 지출 불가능한 출력을 생성하는 스크립트 언어의 작업코드이다. 예컨대, 데이터는 블록체인에 저장하고자 하는 문서를 포함할 수 있다.
통상적으로, 트랜잭션의 입력은 공개 키 PA에 대응하는 디지털 서명을 포함한다. 실시예들에서, 이는 타원 곡선 secp256k1을 사용하는 ECDSA에 기초한다. 디지털 서명은 특정 데이터 조각에 서명한다. 일부 실시예들에서, 주어진 트랜잭션에 대해, 서명은 트랜잭션 입력의 일부, 및 트랜잭션 출력들의 전부 또는 일부에 서명할 것이다. 서명되는 출력들의 특정 부분들은 SIGHASH 플래그에 의존한다. SIGHASH 플래그는 일반적으로 어느 출력들이 서명되는지를 선택하기 위해 서명의 끝에 포함된 4-바이트 코드이다(이에 따라, 서명 시에 고정됨).
잠금 스크립트는 때로는, 그것이 통상적으로 개개의 트랜잭션이 잠겨 있는 당사자의 공개 키를 포함한다는 사실을 지칭하는 "scriptPubKey"라 칭해진다. 잠금해제 스크립트는 때로는 그것이 통상적으로 대응하는 서명을 제공한다는 사실을 지칭하는 "scriptSig"라 칭해진다. 그러나, 보다 일반적으로, UTXO가 리딤되기 위한 조건이 서명을 인증하는 것을 포함하는 것이 블록체인(150)의 모든 애플리케이션들에서 필수적인 것은 아니다. 보다 일반적으로 스크립팅 언어는 임의의 하나 이상의 조건들을 정의하는 데 사용될 수 있다. 따라서 보다 일반적인 용어들 "잠금 스크립트" 및 "잠금해제 스크립트"가 선호될 수 있다.
사이드 채널
도 1에 도시된 바와 같이, 앨리스 및 밥의 컴퓨터 장비(102a, 120b) 각각 상의 클라이언트 애플리케이션은 각각 부가적인 통신 기능성을 포함할 수 있다. 즉, 부가적인 기능성은 (어느 한 당사자 또는 제3자의 주도로) 앨리스(103a)가 밥(103b)과 별개의 사이드 채널(107)을 설정하는 것을 가능하게 한다. 사이드 채널(107)은 블록체인 네트워크와 별개로 데이터 교환을 가능하게 한다. 이러한 통신을 때로는 "오프-체인(off-chain)" 통신으로서 지칭된다. 예컨대, 이는 당사자들 중 하나가 네트워크(106)로 브로드캐스팅하기로 선택할 때까지, (아직) 트랜잭션이 블록체인 네트워크(106) 상에 등록되거나 체인(150)으로 진행됨 없이 앨리스와 밥 사이에서 트랜잭션(152)을 교환하는 데 사용될 수 있다. 이러한 방식으로 트랜잭션을 공유하는 것은 때로는 "트랜잭션 템플릿" 공유하는 것으로서 지칭된다. 트랜잭션 템플릿은 완전한 트랜잭션을 형성하기 위해 요구되는 하나 이상의 입력들 및/또는 출력들이 없을 수 있다. 대안적으로 또는 부가적으로, 사이드 채널(107)은 키들, 협상된 금액들 또는 조건들, 데이터 콘텐츠 등과 같은 임의의 다른 트랜잭션 관련 데이터를 교환하는 데 사용될 수 있다.
사이드 채널(107)은 블록체인 네트워크(106)와 동일한 패킷 교환 네트워크(101)를 통해 설정될 수 있다. 대안적으로 또는 부가적으로, 사이드 채널(301)은 상이한 네트워크 이를테면, 모바일 셀룰러 네트워크, 또는 로컬 영역 네트워크 이를테면, 로컬 무선 네트워크, 또는 심지어, 앨리스 및 밥의 디바이스들(102a, 102b) 사이의 직접 유선 또는 무선 링크를 통해 설정될 수 있다. 일반적으로, 본원의 임의의 위치에서 지칭되는 바와 같은 사이드 채널(107)은 "오프-체인", 즉 블록체인 네트워크(106)와 별개로 데이터를 교환하기 위한 하나 이상의 네트워킹 기술들 또는 통신 매체들을 통한 임의의 하나 이상의 링크들을 포함할 수 있다. 하나 초과의 링크가 사용되는 경우, 오프-체인 링크들의 번들(bundle) 또는 모음은 전체적으로 사이드 채널(107)로서 지칭될 수 있다. 따라서 앨리스 및 밥이 사이드 채널(107)을 통해 특정 정보 조각들 또는 데이터 등을 교환한다고 하면, 이는 이러한 모든 데이터 조각들이 정확히 동일한 링크 또는 심지어 동일한 유형의 네트워크를 통해 전송되어야 한다는 것을 반드시 의미하는 것은 아니란 것에 주의한다.
결론
개시된 기술들의 다른 변형들 또는 사용 사례들은 본원에서의 개시가 주어지면 당업자에게 명백해질 수 있다. 본 개시내용의 범위는 설명된 실시예들에 의해 제한되는 것이 아니라 첨부된 청구항들에 의해서만 제한된다. 예컨대, 위의 일부 실시예들은 비트코인 네트워크(106), 비트코인 블록체인(150) 및 비트코인 노드(104)의 관점에서 설명되었다. 그러나 비트코인 블록체인은 블록체인(150)의 하나의 특정 예이며 위의 설명은 모든 블록체인에 일반적으로 적용될 수 있다는 것이 인지될 것이다. 즉, 본 발명은 결코 비트코인 블록체인으로 제한되지 않는다. 보다 일반적으로, 비트코인 네트워크(106), 비트코인 블록체인(150) 및 비트코인 노드(104)에 대한 위의 임의의 참조는 각각 블록체인 네트워크(106), 블록체인(150) 및 블록체인 노드(104)에 대한 참조로 대체될 수 있다. 블록체인, 블록체인 네트워크 및/또는 블록체인 노드는 위에서 설명된 바와 같이 비트코인 블록체인(150), 비트코인 네트워크(106) 및 비트코인 노드(104)의 설명된 성질들 중 일부 또는 전부를 공유할 수 있다.
본 개시내용의 바람직한 실시예들에서, 블록체인 네트워크(106)는 비트코인 네트워크이고 비트코인 노드들(104)은 블록체인(150)의 블록들(151)을 생성, 공개, 전파 및 저장하는 설명된 기능들 중 적어도 일부 또는 전부를 수행한다. 이러한 기능들의 전부는 아니지만 하나 또는 일부만을 수행하는 다른 네트워크 엔티티들(또는 네트워크 요소들)이 있을 수 있음을 배제되지 않는다. 즉, 네트워크 엔티티는 블록들을 생성 및 공개하지 않고 블록들을 전파 및/또는 저장하는 기능을 수행할 수 있다(이러한 엔티티들은 바람직한 비트코인 네트워크(106)의 노드들로 간주되지 않음을 상기한다).
본 개시내용의 다른 실시예들에서, 블록체인 네트워크(106)는 비트코인 네트워크가 아닐 수 있다. 이러한 실시예들에서, 노드가 블록체인(150)의 블록들(151)을 생성, 발행, 전파 및 저장하는 기능들 전부는 아니지만 적어도 하나 또는 일부를 수행할 수 있다는 것이 배제되지 않는다. 예컨대, 이러한 다른 블록체인 네트워크들에서, "노드"는 블록들(151)을 생성 및 공개하지만 해당 블록들(151)을 저장하고 그리고/또는 다른 노드에 전파하진 않도록 구성된 네트워크 엔티티를 지칭하는 데 사용될 수 있다.
보다 더 일반적으로, 위의 "비트코인 노드"(104)라는 용어에 대한 임의의 참조는 "네트워크 엔티티" 또는 "네트워크 요소"라는 용어로 대체될 수 있으며, 이러한 엔티티/요소는 블록들을 생성, 공개, 전파 및 저장하는 역할들의 일부 또는 전부를 수행하도록 구성된다. 이러한 네트워크 엔티티/요소의 기능들은 블록체인 노드(104)를 참조하여 위에서 설명된 동일 방식으로 하드웨어로 구현될 수 있다.
본원에서 "사용자"라는 용어는 인간 및 기계 기반 엔티티들을 포함하도록 사용될 수 있다. 위에서 언급된 실시예들은 본 개시를 제한하기보다는 예시하고, 당업자는 첨부된 청구항들에 의해 정의된 바와 같은 본 개시내용의 범위로부터 벗어남이 없이 다수의 대안적인 실시예들을 설계할 수 있을 것이다. 청구항들에서, 괄호 안의 배치된 임의의 참조 부호들은 청구항들을 제한하는 것으로 해석되어서는 안 된다. "포함하는(comprising)" 및 "포함하다(comprises)" 등의 단어는 전체로서 명세서 또는 임의의 청구항에 나열된 것들 이외의 요소들 또는 단계들의 존재를 배제하지 않는다. 본 명세서에서, "포함하다(comprises)"는 "포함하거나 구성된다(includes or consists of)"를 의미하고 "포함하는(comprising)"은 "포함하거나 구성되는(including or consisting of)"을 의미한다. 본 명세서 전반에 걸쳐, 단어 "포함하다(comprise)", 또는 "포함하다(includes)", "포함하다(comprises)" 또는 "포함하는(comprising)"과 같은 변동들은 언급된 요소, 정수 또는 단계, 또는 요소들, 정수들, 단계들의 그룹을 포함하지만, 임의의 다른 요소, 정수, 또는 단계, 또는 요소들, 정수들 또는 단계들의 그룹의 배제를 의미하지 않는 것으로 이해될 것이다. 요소의 단수 참조는 그러한 요소들의 복수 참조를 배제하지 않으며 그 반대의 경우도 마찬가지이다. 본 개시내용은 여러 별개의 요소들을 포함하는 하드웨어에 의해 그리고 적합하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 여러 수단들을 열거하는 디바이스 청구항에서, 이들 수단들 중 여러 개는 하나의 그리고 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 소정의 측정들이 서로 상이한 종속 청구항들에서 인용된다는 단순한 사실만으로 이 측정들의 결합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (14)

  1. 컴퓨터-구현 시스템으로서,
    i) 적어도 하나의 블록체인 트랜잭션 및/또는 트랜잭션의 블록체인 블록의 분산된 유효성 검증을 용이하게 하고 그리고/또는 가능하게 하도록 동작하는 적어도 하나의 유효성 검증 구성요소(validation component); 및/또는
    ii) 블록체인 블록의 분산된 채굴 및/또는 작업 증명 계산(Proof-of-Work calculation)의 계산을 용이하게 하고 그리고/또는 가능하게 하도록 동작하는 적어도 하나의 채굴 구성요소; 및/또는
    iii) 프로세싱 및/또는 저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용함으로써 ― 상기 데이터의 부분은 미지출 트랜잭션 출력(unspent transaction output)(UTXO) 및/또는 미지출 트랜잭션 출력을 포함하는 트랜잭션(Tx)을 포함하는 데이터로부터 도출됨 ― 블록체인 관련 또는 구현된 작업을 적어도 하나의 컴퓨팅 자원에 할당하도록 동작하는 적어도 하나의 할당 구성요소; 및/또는
    iv) 블록체인 트랜잭션의 적어도 일부의 레코드를 포함하는 적어도 하나의 레코드 저장 구성요소 ― 상기 레코드는 트랜잭션(Tx)의 적어도 일부가 블록체인 블록의 머클 경로(Merkle path)에 포함되는지를 결정하기 위한 트랜잭션 데이터를 포함함 ― 중 임의의 하나 이상을 포함하는,
    컴퓨터-구현 시스템.
  2. 제1항에 있어서, 상기 적어도 하나의 유효성 검증 구성요소는:
    복수의 블록체인 트랜잭션 및 블록체인 블록에 대한 머클 트리의 루트(root)를 포함하는 상기 블록체인 블록의 적어도 일부를 유효성 검증하고;
    그리고 바람직하게는:
    상기 블록체인 트랜잭션의 개개의 서브세트를 복수의 유효성 검증(프로세싱) 자원에 할당하고 ― 각각의 개개의 서브세트는 상기 머클 트리의 개개의 부분을 제공하고, 상기 머클 트리의 개개의 내부 노드에 의해 표현됨 ― ; 그리고
    상기 복수의 유효성 검증 자원의 블록체인 트랜잭션을 유효성 검증하기 위해 상기 복수의 유효성 검증 자원을 사용하도록 동작하는,
    컴퓨터-구현 시스템.
  3. 제1항 또는 제2항에 있어서, 상기 적어도 하나의 유효성 검증 구성요소는:
    복수의 블록체인 트랜잭션 및 블록체인 블록에 대한 머클 트리의 루트를 포함하는 상기 블록체인 블록의 적어도 일부를 다운로드하도록 동작하고,
    바람직하게는, 상기 유효성 검증 구성요소는:
    상기 블록체인 트랜잭션의 개개의 서브세트를 복수의 프로세싱 자원에 할당하고 ― 각각의 개개의 서브세트는 상기 머클 트리의 개개의 부분을 제공하고, 상기 머클 트리의 개개의 내부 노드에 의해 표현됨 ― ; 그리고
    상기 복수의 프로세싱 자원의 블록체인 트랜잭션의 개개의 서브세트를 다운로드하기 위해 상기 복수의 프로세싱 자원 중 하나, 일부 또는 전부를 사용함으로써 상기 다운로드를 수행하도록 배열되는,
    컴퓨터-구현 시스템.
  4. 전술한 청구항 중 어느 한 항에 있어서, 상기 적어도 하나의 유효성 검증 구성요소는:
    복수의 미지출 트랜잭션 출력(UTXO)을 레코딩, 검색 및/또는 프로세싱하기 위한 제1 UTXO 리포지토리(repository)를 생성, 저장 및/또는 유지하도록 동작하고, 각각의 미지출 트랜잭션 출력은 블록체인 블록의 복수의 블록체인 트랜잭션(TX) 내의 트랜잭션(Tx)과 연관되고,
    상기 복수의 블록체인 트랜잭션은 상기 블록체인 블록에 대한 머클 트리의 부분을 제공하고 그리고/또는 머클 트리의 부분에 의해 표현되는,
    컴퓨터-구현 시스템.
  5. 전술한 청구항 중 어느 한 항에 있어서, 상기 시스템 및/또는 적어도 하나의 유효성 검증 구성요소는:
    i) 적어도 하나의 블록체인 트랜잭션을 유효성 검증 및/또는 검증하고; 그리고/또는
    ii) 간소화된 지불 검증 프로세스(Simplified Payment Verification process)를 수행하고; 그리고/또는
    iii) 주어진 블록체인 트랜잭션이 상기 블록체인 블록 내에 포함되는지를 확인하고; 그리고/또는
    iii) 상기 블록체인 트랜잭션 중 적어도 하나의 해시(hash)를 생성하고, 상기 해시를 사용하여 머클 경로를 구성하고 그리고/또는 상기 해시가 상기 블록체인 블록의 헤더 내 트랜잭션 식별자와 매칭되는지를 체크하도록 동작하는,
    컴퓨터-구현 시스템.
  6. 전술한 청구항 중 어느 한 항에 있어서, 상기 시스템 및/또는 적어도 하나의 유효성 검증 구성요소는:
    가상 머신, 서버, GPU-기반 컴퓨팅 자원, 스레드, 및/또는 멀티프로세서 시스템 중 적어도 하나이거나 적어도 하나를 포함하는 적어도 하나의 유효성 검증 자원을 포함하는,
    컴퓨터-구현 시스템.
  7. 전술한 청구항 중 어느 한 항에 있어서, 상기 적어도 하나의 할당 구성요소는:
    i) 프로세싱 및/또는 저장 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하고;
    ― 바람직하게는, 상기 데이터의 부분은 미지출 트랜잭션 출력(UTXO) 및/또는 미지출 트랜잭션을 포함하는 블록체인 트랜잭션(Tx)을 포함하거나 이로부터 도출됨 ― ; 그리고/또는
    ii) a) 복수의 미지출 트랜잭션 출력(UTXO)을 레코딩, 검색 및/또는 프로세싱하고 ― 상기 복수의 미지출 트랜잭션 출력 각각은 블록체인 블록의 복수의 블록체인 트랜잭션(TX) 내의 트랜잭션(Tx)과 연관됨 ― ; 및/또는 b) 상기 자원을 식별 및/또는 할당하기 위해 블록체인으로부터 도출된 데이터의 부분을 사용하도록 ― 상기 데이터의 부분이 도출되는 상기 데이터는 미지출 트랜잭션 출력(UTXO) 및/또는 UTXO를 포함하는 트랜잭션(Tx)을 포함함 ― 배열된 제1 UTXO 자원을 사용/제공, 생성, 저장 및/또는 유지하고; 그리고/또는
    iii) 트랜잭션에 포함시키기 위해 미지출 트랜잭션 출력(UTXO)을 수신 및/또는 프로세싱하고; 그리고/또는 할당된 자원 ― 상기 할당된 자원은 상기 UTXO에 대한 유효성 검증 데이터를 홀딩함 ― 을 식별하기 위해 미지출 출력으로부터 도출된 상기 데이터의 부분을 사용하고; 그리고/또는 상기 할당된 자원으로부터 상기 유효성 검증 데이터를 요청하도록 동작하는,
    컴퓨터-구현 시스템.
  8. 제7항에 있어서, 상기 적어도 하나의 할당 구성요소는 추가로,
    상기 할당된 자원에서; 그리고/또는 상기 할당된 자원에 의해; 그리고/또는 상기 할당된 자원과 연관하여 상기 미지출 출력 및/또는 상기 트랜잭션(Tx)의 적어도 일부를 저장 및/또는 프로세싱하도록 동작하는,
    컴퓨터-구현 시스템.
  9. 전술한 청구항 중 어느 한 항에 있어서, 상기 적어도 하나의 채굴 구성요소는:
    제1 자원으로부터 제2 자원으로, 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명(Proof-Of-Work; PoW)을 생성하기 위한 요청을 전송하고 ― 상기 요청은 제어 트랜잭션(TX0)이 상기 복수의 트랜잭션에 포함된다는 것을 검증하기 위한 머클 증명을 포함함 ― ; 그리고/또는
    상기 제1 자원으로부터 상기 제2 자원에서, 복수의 트랜잭션을 포함하는 블록체인 블록에 대한 작업 증명(PoW)을 생성하기 위한 요청을 수신하도록 ― 상기 요청은 제어 트랜잭션(TX0)이 상기 복수의 트랜잭션에 포함된다는 것을 검증하기 위한 머클 증명을 포함함 ― 동작하는,
    컴퓨터-구현 시스템.
  10. 제9항에 있어서,
    상기 제어 트랜잭션(TX0)은 상기 작업 증명 생성의 수행을 제어, 허용 및/또는 금지하기 위한 제어 데이터를 포함하고; 바람직하게는 상기 제어 데이터는:
    i) 블록체인 이전의 목적지에 대한 미리 결정된 주소를 지정하는 적어도 하나의 출력 ― 바람직하게는, 상기 주소는 상기 제2 자원, 또는 상기 제2 자원과 연관되거나 상기 제2 자원에 의해 인가된 당사자와 연관됨 ― ; 및/또는
    ii) 적어도 하나의 미리 결정된 서명; 및/또는
    iii) 데이터의 적어도 하나의 비밀 값 또는 비밀 부분을 포함하는,
    컴퓨터-구현 시스템.
  11. 제9항 또는 제10항에 있어서,
    상기 제1 자원은 PoW 요청 자원, 블록체인 유효성 검증 자원 또는 블록체인 채굴 자원이고; 그리고/또는
    상기 제2 자원은 작업 증명 제공자이고; 그리고/또는
    상기 제2 자원은 적어도 하나의 ASIC 또는 해시 머신(hash machine) 또는 특수화된 암호화폐 채굴 자원(specialized cryptocurrency mining resource)을 포함하는,
    컴퓨터-구현 시스템.
  12. 전술한 청구항 중 어느 한 항에 있어서, 상기 적어도 하나의 레코드 저장 구성요소는:
    적어도 하나의 레코드를 포함하고, 상기 적어도 하나의 레코드는:
    i) 적어도 하나의 데이터 항목(D)을 포함하는 블록체인 트랜잭션(TX0); 및
    ii) 상기 블록체인 트랜잭션(TX1)이 블록체인 블록(B)의 머클 경로에 포함된다는 것을 확인하는데 필요한 적어도 하나의 추가 블록체인 트랜잭션(TX1)을 포함하는,
    컴퓨터-구현 시스템.
  13. 제12항에 있어서,
    상기 레코드는 상기 트랜잭션(TX0)으로부터 상기 블록체인 블록(B)에 대한 머클 트리의 루트까지의 머클 경로를 더 포함하고; 그리고
    바람직하게는, 상기 머클 경로는, 상기 블록체인 트랜잭션(TX0)이 상기 블록체인 블록(B)에 포함된다는 것을 설정 또는 검증하는 데 필요한 적어도 최소의 블록체인 트랜잭션을 포함하는,
    컴퓨터-구현 시스템.
  14. 컴퓨터 판독 가능 저장소 상에서 구현된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은, 하나 이상의 프로세서 상에서 실행될 때,
    i) 본 명세서에 청구된 시스템의 기능 중 일부 또는 전부를 구현하고; 그리고/또는
    ii) 제1항 내지 제13항 중 어느 한 항의 특징 중 하나 이상을 구현하거나, 용이하게 하거나, 가능하게 하거나 또는 제공하도록 배열 또는 구성된,
    컴퓨터 프로그램.
KR1020247016845A 2021-10-28 2022-10-26 분산된 블록체인 기능들을 위한 방법들 및 시스템들 KR20240096558A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
GB2115520.5 2021-10-28
GB2115512.2 2021-10-28
GB2115516.3 2021-10-28
GB2115511.4 2021-10-28
GB2206634.4 2022-05-06
GB2206639.3 2022-05-06
GB2208799.3 2022-06-15
GB2209533.5 2022-06-29

Publications (1)

Publication Number Publication Date
KR20240096558A true KR20240096558A (ko) 2024-06-26

Family

ID=

Similar Documents

Publication Publication Date Title
WO2021014233A1 (en) Digital contracts using blockchain transactions
WO2023073066A1 (en) Methods and systems for distributed blockchain functionalities
KR20220139871A (ko) 블록체인 네트워크에서 사용하기 위한 증명 서비스
JP2023508088A (ja) ブロックチェーンオーバーレイネットワークへの鍵のマッピング
KR20230121100A (ko) 블록체인 트랜잭션들의 생성 및 유효성 검증
Heo et al. Blockchain data storage optimisations: a comprehensive survey
KR20230011330A (ko) 블록체인을 통한 데이터의 효율적이고 안전한 처리, 액세스 및 전송을 위한 컴퓨터 구현 시스템 및 방법
WO2023072959A1 (en) Methods and systems for distributed blockchain functionalities
EP4032223A1 (en) Multi-criteria blockchain protocol
Pennino et al. Pipeline-integrity: Scaling the use of authenticated data structures up to the cloud
KR20240096558A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
KR20240096559A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
KR20240096562A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
GB2620155A (en) Computer-implemented system and method
KR20240100377A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
KR20240093714A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
KR20240093548A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
KR20240096560A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
KR20240100373A (ko) 분산된 블록체인 기능들을 위한 방법들 및 시스템들
GB2621808A (en) Computer-implemented system and method
WO2023072948A1 (en) Methods and systems for distributed blockchain functionalities
GB2618380A (en) Computer-implemented system and method
GB2619745A (en) Computer-implemented system and method
WO2023072774A1 (en) Methods and systems for distributed blockchain functionalities
WO2023072955A1 (en) Methods and systems for distributed blockchain functionalities