KR102627000B1 - 스크립트 기반 블록체인 상호작용 - Google Patents

스크립트 기반 블록체인 상호작용 Download PDF

Info

Publication number
KR102627000B1
KR102627000B1 KR1020197035969A KR20197035969A KR102627000B1 KR 102627000 B1 KR102627000 B1 KR 102627000B1 KR 1020197035969 A KR1020197035969 A KR 1020197035969A KR 20197035969 A KR20197035969 A KR 20197035969A KR 102627000 B1 KR102627000 B1 KR 102627000B1
Authority
KR
South Korea
Prior art keywords
transaction
script
block
blockchain
data
Prior art date
Application number
KR1020197035969A
Other languages
English (en)
Other versions
KR20200013680A (ko
Inventor
잉 찬
딘 크레이머
Original Assignee
엔체인 홀딩스 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB1708488.0A external-priority patent/GB201708488D0/en
Priority claimed from GBGB1708491.4A external-priority patent/GB201708491D0/en
Priority claimed from GBGB1708493.0A external-priority patent/GB201708493D0/en
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20200013680A publication Critical patent/KR20200013680A/ko
Application granted granted Critical
Publication of KR102627000B1 publication Critical patent/KR102627000B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Eye Examination Apparatus (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

컴퓨터-구현 방법이 제공될 수 있다. 예를 들어, 비트코인 네트워크와 같은 블록체인 네트워크를 사용해서 구현될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 디지털 자산과 연계되는 제1 트랜잭션을 수신― 제1 트랜잭션은 디지털 자산의 제어를 전송하기 위해 제2 트랜잭션에 대한 제약 세트를 특정하는 제1 스크립트를 포함하고, 제약 세트는 노드에 의해 취득되는 데이터 세트가 블록체인 네트워크와 연계되는 블록체인으로부터 취득되는 정보를 포함한다는 제약을 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 실행의 결과로서 노드로 하여금 데이터 세트를 취득하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제2 트랜잭션을 유효성 검증하는 단계를 포함한다.

Description

스크립트 기반 블록체인 상호작용
본 발명은, 일반적으로 블록체인 트랜잭션(blockchain transaction)을 포함하는 분산 원장(distributed ledger) 기술에 관한 것으로, 특히 블록체인, 블록 헤더, 블록, 및 블록체인 트랜잭션으로부터 트랜잭션 스크립트에의 필드의 인젝션(injection; 주입)을 야기하는 기술에 관한 것이다. 본 발명은, 특히 블록체인의 상태에 기초한 트랜잭션에서의 사용에 적합하지만, 이에 한정되는 것은 아니다.
본 명세서에 있어서는, '블록체인(blockchain)'이라는 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장을 포함한다는 의미로 사용한다. 이는 컨센서스-기반의 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함한다. 다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 용례는 비트코인(Bitcoin) 원장이다. "비트코인"이라는 용어가 본 개시물에서 설명되는 기술의 유용한 용례로서 참조될 수 있지만, 편의 및 예시의 목적으로, 비트코인은 본 개시물에서 설명되는 기술을 적용할 수 있는 많은 용례들 중 하나일 뿐이다. 그러나, 본 발명은 비트코인 블록체인에 사용하는 것으로 한정되지 않으며; 비-상업적인 용례를 포함하는 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위 내에 있는 것이라는 점에 유의해야 한다. 예를 들어, 본 개시물에서 설명되는 기술은, 암호화폐 교환의 발생 여부와 관계 없이, 암호화폐 트랜잭션 내에 어떤 제약(constraints)이 인코딩될 수 있는지에 관하여 비트코인과 유사한 제한을 갖는 다른 암호화폐와 함께 블록체인 구현예를 이용하는 것에 대하여 장점을 제공할 것이다.
본 명세서에서 사용되는 "디지털 자산(digital asset)"은 블록체인에 의해 관리되는 리소스의 단위이다. 디지털 자산은 블록체인에 의해 관리되는 리소스의 단위이다. 일부 구현예에 있어서는, 디지털 자산이 암호화폐로서 사용될 수 있지만, 실시형태들에 있어서의 디지털 자산은 부가적으로 또는 대안으로서 다른 상황에서 사용 가능할 것으로 생각된다. 디지털 자산의 제어에 적용 가능한 본 발명은 본질적으로 기술적인 것이며, 디지털 자산의 전송을 수반할 필요없이, 블록체인 데이터 구조를 이용하는 다른 상황에서 사용될 수 있다는 점에 유의한다. 본 개시물에서 사용되는 "디지털 자산"은 하나 이상의 디지털 자산을 의미할 수 있다. 예를 들어, 트랜잭션은 다수의 입력을 가질 수 있으며, 해당 입력들 각각은 서로 다른 디지털 자산을 나타낼 수 있다. 제어가 전송되는 디지털 자산은, 이 실시예에 있어서는, 다수의 디지털 자산의 집합일 수 있으며, 그 집합 자체가 디지털 자산이다. 유사하게, 트랜잭션은 이들 다수의 입력을 세분 및/또는 결합해서 하나 이상의 출력을 생성할 수 있으므로, 예를 들어, 입력의 수 및 출력의 수는 상이할 수 있다. 실시형태에 있어서, 암호화폐는 토큰 기반의 암호화폐이고, 여기서 각각의 토큰은 자산의 지분(예컨대, 기업의 지분)을 나타내고, 단일의 트랜잭션은 다양한 유형의 토큰을 포함한다(예컨대, 하나 이상의 상이한 기업의 지분을 포함한다).
본 개시물은 하나 이상의 블록체인 기반의 컴퓨터 프로그램의 기술적인 양태를 설명한다. 블록체인 기반의 컴퓨터 프로그램은 블록체인 트랜잭션에 기록되는 기계 판독 가능 및 실행 가능 프로그램이다. 블록체인 기반의 컴퓨터 프로그램은 결과를 생성하기 위해 입력을 처리할 수 있으며, 후속하여 해당 결과에 따라 동작이 수행되게 할 수 있는 규칙을 포함할 수 있다. 잠금 스크립트(locking script)가 잠금 해제(unlocking) 트랜잭션 및 이전의 트랜잭션 모두에 액세스할 수 있으면, 블록체인은 매우 유연하고 복잡한 블록체인 기반의 컴퓨터 프로그램을 가능하게 하는 데 이용될 수 있다. 현재 연구의 한 영역은 "스마트 계약(smart contracts)"을 구현하기 위해 블록체인 기반의 컴퓨터 프로그램을 사용하는 것이다. 자연 언어로 작성되는 종래의 계약과 달리, 스마트 계약은 기계 판독 가능 계약서 또는 합의서의 조건의 실행을 자동화하도록 설계되는 컴퓨터 프로그램이다.
실시형태에 있어서, 특정 엔티티들과의 상호작용이 스마트 계약의 특정 단계들에서 인코딩될 수 있지만, 스마트 계약은 자동으로 실행 및 자력-집행될 수도 있다. 일부 실시예에 있어서, 자동 실행은 UTXO의 전송을 가능하게 하기 위해 성공적으로 수행되는 스마트 계약의 실행을 의미한다. 이러한 실시예들에 있어서, UTXO의 전송을 야기할 수 있는 "엔티티"는 일부 비밀의 지식을 입증할 필요 없이 잠금 해제 스크립트를 생성할 수 있는 엔티티를 의미한다는 점에 유의한다. 다시 말해, 잠금 해제 트랜잭션은 데이터의 소스(예컨대, 잠금 해제 스크립트를 생성한 엔티티)가 암호화 비밀(예컨대, 개인 비대칭 키, 대칭 키 등)에 액세스할 수 있는지를 검증하지 않고 유효성이 검증될 수 있다. 또한, 이러한 실시예들에 있어서, 자력 집행은 블록체인 네트워크의 유효성 검증(validation) 노드가 잠금 해제 트랜잭션을 제약에 따라 집행하도록 야기된다는 것을 의미한다. 일부 실시예에 있어서, UTXO를 "잠금 해제(unlocking)"하는 것은, UTXO를 참조하고 유효한 것으로서 실행하는 잠금 해제 트랜잭션을 생성하는 것을 가리키는 기술적인 의미로 사용된다. UTXO를 잠금 해제하는 것은 본 기술분야에서는 UTXO를 소비하는 것으로도 알려져 있다.
블록체인 트랜잭션 출력은 잠금 스크립트 및 비트코인과 같은 디지털 자산의 소유권에 관한 정보를 포함한다. 저당(encumbrance; 예상 지출)이라고 할 수도 있는 잠금 스크립트는 UTXO를 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 디지털 자산을 "잠금(locks)"한다. 예를 들어, 잠금 스크립트는 연계된 디지털 자산을 잠금 해제하도록 특정 데이터가 잠금 해제 스크립트에 제공되는 것을 필요로 할 수 있다. 비트코인에서는 잠금 스크립트를 "scriptPubKey"라고도 한다. 잠금 파티가 디지털 자산을 잠금 해제하기 위한 데이터를 제공하도록 요구하는 기술은 잠금 스크립트 내부에 데이터의 해시를 내재하는 것을 수반한다. 그러나, 이는 잠금 스크립트가 생성될 때 데이터가 결정되지 않은 경우(예컨대, 알려지고 고정되지 않은 경우)에는 문제점을 드러낸다.
부가적으로, 잠금 스크립트가 블록체인 자체의 양태들(예컨대, 블록에서의 다른 트랜잭션들 또는 블록 헤더의 내용)에 대하여 예측되는 경우에는, 잠금 스크립트가 생성될 때 데이터가 존재하지 않고, 해당 데이터를 취득하기 위해 블록체인의 상태를 질의하기 위한 기존의 연산 부호가 블록체인 내에 존재하지 않는다. 따라서, 잠금 스크립트는 특정 블록 헤더를 요구할 수 없고, 블록체인의 특정 상태를 요구할 수 없고, 또한 트랜잭션이 블록체인의 특정 블록 내에 위치되는 것을 요구할 수 없다.
따라서, 하나 이상의 이들 양태에서 블록체인 기술을 향상시키는 방법 및 시스템을 제공하는 것이 바람직하다. 따라서, 본 발명에 따르면, 첨부된 청구항들에서 정의되는 바와 같은 방법이 제공된다.
아래에서 더욱 상세하게 설명되겠지만, 컴퓨터-구현 방법 및 전자 장치는 잠금 해제 스크립트가 블록 헤더, 블록체인, 또는 블록 헤더들의 체인을 포함하는 것을 필요로 하는 잠금 해제 스크립트에서의 데이터에 대한 제약을 구현하도록 구성된다. 잠금 해제 스크립트에서 데이터에 대한 이러한 제약을 구현함으로써, 또한 이러한 데이터를 실행 시간에 잠금 해제 스크립트에 인젝션함으로써, 트랜잭션이 블록체인의 양태들에 기초할 수 있다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 제2 트랜잭션에 대한 제약 세트를 특정하는 제1 스크립트를 수신― 해당 제약 세트는 노드에 의해 취득되는 데이터 세트가 블록체인 네트워크와 연계되는 블록체인으로부터 취득되는 정보를 포함한다는 제약을 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 실행의 결과로서 노드로 하여금 데이터 세트를 취득하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제2 트랜잭션을 유효성 검증하는 단계를 포함한다.
아래에서 더욱 상세하게 설명되겠지만, 컴퓨터-구현 방법 및 전자 장치는 잠금 해제 스크립트가 잠금 스크립트를 잠금 해제하고 트랜잭션의 디지털 자산에 액세스하는 데 사용될 수 있기 전에는 블록체인이 특정 상태에 있을 것을 필요로 하는 잠금 해제 스크립트에서의 데이터에 대한 제약을 구현하도록 구성된다. 잠금 해제 스크립트가 블록 헤더, 블록체인, 또는 블록 헤더들의 체인을 포함하는 것을 필요로 하는 잠금 스크립트에 대한 제약을 구현함으로써, 또한 이러한 데이터를 실행 시간에 잠금 해제 스크립트에 인젝션함으로써, 트랜잭션이 블록체인의 상태에 기초할 수 있다.
제약 세트는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함할 수 있다.
노드는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약이 적어도 블록 헤더가 소정의 크기를 갖는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약이 적어도 블록 헤더가 난이도 값 이상의 난이도 값을 포함하는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약이 적어도 블록 헤더의 해시가 블록 헤더에 포함되는 난이도 값으로부터 계산되는 목표값 이하인지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
제약 세트는 데이터 세트가 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함할 수 있다.
데이터 세트는 블록체인의 블록의 블록 헤더를 포함할 수 있다. 부가적으로 또는 대안으로서, 제약 세트는 제3 트랜잭션이 블록에 포함된다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 노드는 블록체인의 블록의 블록 헤더에 적어도 부분적으로 기초하여 제3 트랜잭션이 블록에 포함된다는 제약이 만족되는지의 여부를 결정할 수 있다.
노드는 제3 트랜잭션이 블록에 포함된다는 제약이 적어도 블록 헤더에 의해 식별되는 블록에서 트랜잭션들의 인코딩에 적어도 부분적으로 기초하여 제3 트랜잭션의 해시값을 계산하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 제3 트랜잭션이 블록에 포함된다는 제약이 적어도 제3 트랜잭션의 해시값이 블록 헤더에 저장되는 해시값과 동일한지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
제약 세트는, 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함― 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 순서화된 블록 헤더 세트는 복수의 블록 헤더와 연계되는 순서를 특정함 ―한다는 제약을 포함할 수 있다.
노드는 제2 스크립트가 블록 헤더 체인을 포함한다는 제약이 적어도 복수의 블록 헤더와 연계되는 순서에 적어도 부분적으로 기초하여 한 쌍의 블록 헤더를 선택― 한 쌍의 블록 헤더는 한 쌍의 블록 헤더의 제1 블록 헤더 및 한 쌍의 블록 헤더의 제2 블록 헤더를 포함함 ―하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 제2 스크립트가 블록 헤더 체인을 포함한다는 제약이 적어도 한 쌍의 블록 헤더에 대하여 한 쌍의 블록 헤더의 제1 블록 헤더의 해시가 한 쌍의 블록 헤더의 제2 블록 헤더에 저장되는 해시값과 동일한지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
제약 세트는 데이터 세트가 블록체인 네트워크의 공공 블록체인으로부터 취득된다는 제약을 포함할 수 있다.
제1 스크립트 및 제2 스크립트를 실행하기 전에 블록체인 네트워크의 하나 이상의 속성이 노드에 제공될 수 있다.
제2 트랜잭션을 유효성 검증하는 단계는 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행될 수 있다.
제1 스크립트는 제1 트랜잭션의 잠금 스크립트일 수 있고, 제2 스크립트는 제1 스크립트에 대한 잠금 해제 스크립트이다.
컴퓨터-구현 방법은 유효성 검증의 결과에 적어도 부분적으로 기초하여 디지털 자산을 전송하는 단계를 더 포함할 수 있다. 그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 상태 확인 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 적어도, a) 제2 트랜잭션에 대한 제1 제약 세트― 제1 제약 세트는 제2 트랜잭션으로 하여금 블록체인으로부터 데이터 세트를 포함하게 하는 하나 이상의 제약을 포함함 ―; 및 b) 제2 트랜잭션에 대한 제2 제약 세트― 제2 제약 세트는 데이터 세트의 데이터 항목들과 연계되는 하나 이상의 제약을 포함함 ―를 특정하는 제1 트랜잭션을 수신하는 단계; 및 ii) 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증한 결과로서, 제2 트랜젝션으로 하여금 블록체인에 저장되게 하는 단계를 포함한다.
아래에서 더욱 상세하게 설명되겠지만, 컴퓨터-구현 방법 및 전자 장치는 잠금 해제 스크립트가 잠금 스크립트를 잠금 해제하고 해당 상태에서 트랜잭션의 디지털 자산에 대한 액세스를 조절하는 데 사용될 수 있기 전에는 블록체인이 특정 상태에 있을 것을 요구하는 잠금 해제 스크립트에서의 데이터에 대한 제약을 구현하도록 구성된다. 잠금 해제 스크립트가 블록 헤더, 블록체인, 또는 블록 헤더들의 체인을 포함하는 것을 요구하는 잠금 스크립트에 대한 제약을 구현함으로써, 또한 이러한 데이터를 실행 시간에 잠금 해제 스크립트에 인젝션함으로써, 트랜잭션의 결과가 블록체인의 상태에 기초할 수 있다.
데이터 세트는 제2 트랜잭션에서의 노드에서 수신될 수 있다.
컴퓨터-구현 방법은 검증의 결과로서 제2 트랜잭션을 유효성 검증하는 단계를 더 포함할 수 있다.
제2 트랜잭션을 유효성 검증하는 단계는 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행될 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는, 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함― 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 순서화된 블록 헤더 세트는 복수의 블록 헤더와 연계되는 순서를 특정함 ―한다는 제약을 포함할 수 있다.
제2 제약 세트는 데이터 세트의 데이터 항목의 값에 대한 제약을 포함할 수 있다.
제2 제약 세트는 데이터 세트의 데이터 항목과 연계되는 하나 이상의 값으로부터 도출되는 제약을 포함할 수 있다.
제1 제약 세트는 제1 트랜잭션의 잠금 스크립트에 포함될 수 있다.
제2 제약 세트는 제1 트랜잭션의 잠금 스크립트에 포함될 수 있다.
제1 제약 세트는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약을 포함할 수 있다.
노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 블록체인 네트워크로부터 수신되는 블록 이전의 블록들을 포함하는 제1 블록 세트 및 블록체인 네트워크로부터 수신되는 블록 이후의 블록들을 포함하는 제2 블록 세트를 제2 트랜잭션에서 수신하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제1 블록 세트가 블록체인 네트워크로부터 수신되는 블록에 연쇄되는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제2 블록 세트가 블록체인 네트워크로부터 수신되는 블록에 연쇄되는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제1 블록 세트 및 제2 블록 세트가 유효한지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제1 블록 세트 및 제2 블록 세트의 각각의 블록이 소정의 값보다 큰 난이도 값을 갖는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 상태 인식 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 적어도: a) 제2 트랜잭션에 대한 제1 제약 세트― 제1 제약 세트는 제2 트랜잭션으로 하여금 블록체인 네트워크로부터 데이터 세트를 포함하게 하는 하나 이상의 제약을 포함함 ―; 및 b) 제2 트랜잭션에 대한 제2 제약 세트― 제2 제약 세트는 데이터 세트가 제1 트랜잭션을 포함하는 블록을 포함한다는 제약을 포함하고, 해당 블록은 블록체인 네트워크와 연계되는 블록체인에 포함됨 ―를 특정하는 제1 트랜잭션을 수신하는 단계; 및 ii) 제1 제약 세트 및 제2 제약 세트가 만족된다는 것을 성공적으로 검증한 결과로서, 제2 트랜젝션으로 하여금 블록체인 네트워크에 기록되게 하는 단계를 포함한다.
데이터 세트는 제2 트랜잭션에서의 노드에서 수신될 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는, 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함― 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 순서화된 블록 헤더 세트는 복수의 블록 헤더와 연계되는 순서를 특정함 ―한다는 제약을 포함할 수 있다.
블록체인 네트워크의 속성 세트는 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증한 결과로서 노드에 제공될 수 있다.
블록체인 네트워크의 속성 세트는 블록체인 네트워크의 블록체인의 각각의 블록과 연계되는 상응하는 타임스탬프(timestamp)를 포함할 수 있다.
제1 제약 세트는 제2 트랜잭션이 블록과 관련된 타임스탬프를 포함한다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 트랜잭션이 블록과 관련된 타임스탬프를 포함한다는 제약을 검증하는 것은 블록체인 네트워크의 속성 세트에 적어도 부분적으로 기초할 수 있다.
제1 제약 세트는 데이터 세트가 블록 헤더를 포함한다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 제약 세트는 제2 트랜잭션이 제1 트랜잭션의 식별자를 포함한다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 제약 세트는 제1 트랜잭션의 식별자가 블록 헤더의 값과 연계된다는 제약을 포함할 수 있다.
제1 제약 세트 및 제2 제약 세트는 트랜잭션의 잠금 스크립트에 포함될 수 있다.
제1 트랜잭션은 제2 트랜잭션에 대한 제3 제약 세트를 특정― 제3 제약 세트는 데이터 세트의 데이터 항목의 값에 대한 제약을 포함함 ―할 수 있다.
제1 트랜잭션은 제2 트랜잭션에 대한 제3 제약 세트를 특정― 제3 제약 세트는 데이터 세트의 데이터 항목들과 연계되는 하나 이상의 값으로부터 도출되는 제약을 포함함 ―할 수 있다.
컴퓨터-구현 방법은 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증한 결과로서 제2 트랜잭션을 유효성 검증― 제2 트랜잭션을 유효성 검증하는 것은 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행됨 ―하는 단계를 더 포함할 수 있다. 그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 디지털 자산과 연계되는 제1 트랜잭션을 수신― 제1 트랜잭션은 디지털 자산의 제어를 전송하기 위해 제2 트랜잭션에 대한 제약 세트를 특정하는 제1 스크립트를 포함하고, 제약 세트는 노드에 의해 취득되는 데이터 세트가 블록체인 네트워크와 연계되는 블록체인으로부터 취득되는 정보를 포함한다는 제약을 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 실행의 결과로서 노드로 하여금 데이터 세트를 취득하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제2 트랜잭션을 유효성 검증하는 단계를 포함한다.
제약 세트는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함할 수 있다.
노드는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약이 적어도 블록 헤더가 소정의 크기를 갖는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약이 적어도 블록 헤더가 난이도 값 이상의 난이도 값을 포함하는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약이 적어도 블록 헤더의 해시가 블록 헤더에 포함되는 난이도 값으로부터 계산되는 목표값 이하인지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
제약 세트는 데이터 세트가 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함할 수 있다.
데이터 세트는 블록체인의 블록의 블록 헤더를 포함할 수 있다. 부가적으로 또는 대안으로서, 제약 세트는 제3 트랜잭션이 블록에 포함된다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 노드는 블록체인의 블록의 블록 헤더에 적어도 부분적으로 기초하여 제3 트랜잭션이 블록에 포함된다는 제약이 만족되는지의 여부를 결정할 수 있다.
노드는 제3 트랜잭션이 블록에 포함된다는 제약이 적어도 블록 헤더에 의해 식별되는 블록에서 트랜잭션들의 인코딩에 적어도 부분적으로 기초하여 제3 트랜잭션의 해시값을 계산하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 제3 트랜잭션이 블록에 포함된다는 제약이 적어도 제3 트랜잭션의 해시값이 블록 헤더에 저장되는 해시값과 동일한지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
제약 세트는, 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함― 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 순서화된 블록 헤더 세트는 복수의 블록 헤더와 연계되는 순서를 특정함 ―한다는 제약을 포함할 수 있다.
노드는 제2 스크립트가 블록 헤더 체인을 포함한다는 제약이 적어도 복수의 블록 헤더와 연계되는 순서에 적어도 부분적으로 기초하여 한 쌍의 블록 헤더를 선택― 한 쌍의 블록 헤더는 한 쌍의 블록 헤더의 제1 블록 헤더 및 한 쌍의 블록 헤더의 제2 블록 헤더를 포함함 ―하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 제2 스크립트가 블록 헤더 체인을 포함한다는 제약이 적어도 한 쌍의 블록 헤더에 대하여 한 쌍의 블록 헤더의 제1 블록 헤더의 해시가 한 쌍의 블록 헤더의 제2 블록 헤더에 저장되는 해시값과 동일한지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
제약 세트는 데이터 세트가 블록체인 네트워크의 공공 블록체인으로부터 취득된다는 제약을 포함할 수 있다.
제1 스크립트 및 제2 스크립트를 실행하기 전에 블록체인 네트워크의 하나 이상의 속성이 노드에 제공될 수 있다.
제2 트랜잭션을 유효성 검증하는 단계는 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행될 수 있다.
제1 스크립트는 제1 트랜잭션의 잠금 스크립트일 수 있고, 제2 스크립트는 제1 스크립트에 대한 잠금 해제 스크립트이다.
컴퓨터-구현 방법은 유효성 검증의 결과에 적어도 부분적으로 기초하여 디지털 자산을 전송하는 단계를 더 포함할 수 있다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 상태 확인 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 디지털 자산과 연계되는 제1 트랜잭션을 수신― 제1 트랜잭션은 적어도, a) 디지털 자산의 제어를 전송하기 위한 제2 트랜잭션에 대한 제1 제약 세트― 제1 제약 세트는 제2 트랜잭션으로 하여금 블록체인으로부터 데이터 세트를 포함하게 하는 하나 이상의 제약을 포함함 ―; 및 b) 제2 트랜잭션에 대한 제2 제약 세트― 제2 제약 세트는 데이터 세트의 데이터 항목들과 연계되는 하나 이상의 제약을 포함함 ―를 특정함 ―하는 단계; ii) 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증하는 단계; 및 iii) 검증하는 단계에 적어도 부분적으로 기초하여 디지털 자산을 재연계시키는 단계를 포함한다.
데이터 세트는 제2 트랜잭션에서의 노드에서 수신될 수 있다.
컴퓨터-구현 방법은 검증의 결과로서 제2 트랜잭션을 유효성 검증하는 단계를 더 포함할 수 있다.
제2 트랜잭션을 유효성 검증하는 단계는 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행될 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는, 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함― 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 순서화된 블록 헤더 세트는 복수의 블록 헤더와 연계되는 순서를 특정함 ―한다는 제약을 포함할 수 있다.
제2 제약 세트는 데이터 세트의 데이터 항목의 값에 대한 제약을 포함할 수 있다.
제2 제약 세트는 데이터 세트의 데이터 항목과 연계되는 하나 이상의 값으로부터 도출되는 제약을 포함할 수 있다.
제1 제약 세트는 제1 트랜잭션의 잠금 스크립트에 포함될 수 있다.
제2 제약 세트는 제1 트랜잭션의 잠금 스크립트에 포함될 수 있다.
제1 제약 세트는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약을 포함할 수 있다.
노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 블록체인 네트워크로부터 수신되는 블록 이전의 블록들을 포함하는 제1 블록 세트 및 블록체인 네트워크로부터 수신되는 블록 이후의 블록들을 포함하는 제2 블록 세트를 제2 트랜잭션에서 수신하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제1 블록 세트가 블록체인 네트워크로부터 수신되는 블록에 연쇄되는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제2 블록 세트가 블록체인 네트워크로부터 수신되는 블록에 연쇄되는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제1 블록 세트 및 제2 블록 세트가 유효한지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 데이터 세트가 공공 블록체인으로부터 수신된다는 제약이 적어도 제1 블록 세트 및 제2 블록 세트의 각각의 블록이 소정의 값보다 큰 난이도 값을 갖는지를 검증하는 것에 의해 만족되는지의 여부를 결정할 수 있다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 상태 인식 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크의 노드에서, 디지털 자산과 연계되는 제1 트랜잭션을 수신― 제1 트랜잭션은 적어도, a) 디지털 자산의 제어를 전송하기 위한 제2 트랜잭션에 대한 제1 제약 세트― 제1 제약 세트는 제2 트랜잭션으로 하여금 블록체인 네트워크로부터 데이터 세트를 포함하게 하는 하나 이상의 제약을 포함함 ―; 및 b) 제2 트랜잭션에 대한 제2 제약 세트― 제2 제약 세트는 데이터 세트가 제1 트랜잭션을 포함하는 블록을 포함한다는 제약을 포함하고, 해당 블록은 블록체인 네트워크와 연계되는 블록체인에 포함됨 ―를 특정함 ―하는 단계; ii) 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증하는 단계; 및 iii) 검증하는 단계에 적어도 부분적으로 기초하여 디지털 자산의 제어를 전송하는 단계를 포함한다.
데이터 세트는 제2 트랜잭션에서의 노드에서 수신될 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는 데이터 세트가 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함할 수 있다.
제1 제약 세트는, 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함― 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 순서화된 블록 헤더 세트는 복수의 블록 헤더와 연계되는 순서를 특정함 ―한다는 제약을 포함할 수 있다.
블록체인 네트워크의 속성 세트는 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증한 결과로서 노드에 제공될 수 있다.
블록체인 네트워크의 속성 세트는 블록체인 네트워크의 블록체인의 각각의 블록과 연계되는 상응하는 타임스탬프(timestamp)를 포함할 수 있다.
제1 제약 세트는 제2 트랜잭션이 블록과 관련된 타임스탬프를 포함한다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 트랜잭션이 블록과 관련된 타임스탬프를 포함한다는 제약을 검증하는 것은 블록체인 네트워크의 속성 세트에 적어도 부분적으로 기초할 수 있다.
제1 제약 세트는 데이터 세트가 블록 헤더를 포함한다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 제약 세트는 제2 트랜잭션이 제1 트랜잭션의 식별자를 포함한다는 제약을 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 제약 세트는 제1 트랜잭션의 식별자가 블록 헤더의 값과 연계된다는 제약을 포함할 수 있다.
제1 제약 세트 및 제2 제약 세트는 트랜잭션의 잠금 스크립트에 포함될 수 있다.
제1 트랜잭션은 제2 트랜잭션에 대한 제3 제약 세트를 특정― 제3 제약 세트는 데이터 세트의 데이터 항목의 값에 대한 제약을 포함함 ―할 수 있다.
제1 트랜잭션은 제2 트랜잭션에 대한 제3 제약 세트를 특정― 제3 제약 세트는 데이터 세트의 데이터 항목들과 연계되는 하나 이상의 값으로부터 도출되는 제약을 포함함 ―할 수 있다.
컴퓨터-구현 방법은 제1 제약 세트 및 제2 제약 세트가 만족되는지를 검증한 결과로서 제2 트랜잭션을 유효성 검증― 제2 트랜잭션을 유효성 검증하는 것은 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행됨 ―하는 단계를 더 포함할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
본 발명에 따르면, 전자 장치가 제공될 수 있다. 전자 장치는 인터페이스 장치, 인터페이스 장치에 결합되는 프로세서 및 프로세서에 결합되는 메모리를 포함한다. 메모리에는, 실행시에, 프로세서를 본 명세서에서 설명되는 방법을 수행하도록 구성하는 컴퓨터 실행 가능 명령어가 저장된다.
본 발명에 따르면, 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체는, 실행시에, 프로세서를 본 명세서에서 설명되는 방법을 수행하도록 구성하는 컴퓨터 실행 가능 명령어를 포함한다.
본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 다양한 실시형태들이 구현될 수 있는 예시적인 블록체인 네트워크의 다이어그램을 도시하고;
도 2는 일 실시형태에 따른 블록체인 네트워크에서 노드로서 기능할 수 있는 예시적인 전자 장치의 다이어그램을 도시하고;
도 3은 스크립트 기반 블록체인 상호작용과 연계되는 트랜잭션의 예시적인 실시형태의 다이어그램을 도시하고;
도 4는 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용과 연계되는 블록체인에 액세스하는 것에 관한 예시적인 문제점의 다이어그램을 도시하고;
도 5는 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용과 연계되는 블록체인의 블록들에 액세스하는 것에 관한 예시적인 문제점의 다이어그램을 도시하고;
도 6은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 데이터가 블록 헤더인 것으로 검증되는 예시적인 환경의 다이어그램을 도시하고;
도 7은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 데이터가 블록 헤더인지를 검증하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 8은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 데이터가 이전의 블록에 대한 블록 헤더인 것으로 검증되는 예시적인 환경의 다이어그램을 도시하고;
도 9는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 데이터가 이전의 블록에 대한 블록 헤더인지를 검증하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 10은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 데이터가 블록 헤더 체인인 것으로 검증되는 예시적인 환경의 다이어그램을 도시하고;
도 11은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 데이터가 블록 헤더 체인인지를 검증하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 12는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 사용 가능한 블록 헤더의 머클 트리(Merkle tree)를 보여주는 예시적인 환경의 다이어그램을 도시하고;
도 13은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 트랜잭션이 블록 헤더에 포함되는 것으로 검증되는 예시적인 환경의 다이어그램을 도시하고;
도 14는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 트랜잭션이 블록 헤더에 포함되는지를 검증하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 15는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용과 연계되는 블록체인에 액세스하는 것에 관한 문제점들이 어떻게 본 명세서에서 설명되는 방법을 사용해서 해결될 수 있는지를 보여주는 예시적인 환경의 다이어그램을 도시하고;
도 16은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용과 연계되는 블록체인의 상태들을 보여주는 예시적인 환경의 다이어그램을 도시하고;
도 17은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 블록체인의 상태가 확인되는 예시적인 환경의 다이어그램을 도시하고;
도 18은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 블록체인의 상태를 확인하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 19는 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용에서 잠금 스크립트에 관한 예시적인 문제점의 다이어그램을 도시하고;
도 20은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 잠금 해제 스크립트에 의한 예시적인 데이터 액세스의 다이어그램을 도시하고;
도 21은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 서명이 직렬화된 트랜잭션 필드 세트로부터 생성되는 예시적인 환경의 다이어그램을 도시하고;
도 22는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 직렬화된 잠금 해제 트랜잭션 필드 세트의 인젝션을 야기하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 23은 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용에서 잠금 스크립트에 관한 예시적인 문제점의 다이어그램을 도시하고;
도 24는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 이전의 직렬화된 트랜잭션의 인젝션이 야기된 예시적인 환경의 다이어그램을 도시하고;
도 25는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 서명 해시 타입에 따라 이용 가능해진 필드 세트의 실시예의 다이어그램을 도시하고;
도 26은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 직렬화된 트랜잭션으로부터 트랜잭션 식별자를 추출하는 실시예의 다이어그램을 도시하고;
도 27은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 이전의 직렬화된 트랜잭션의 인젝션을 야기하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 28은 일 실시형태에 따른 블록체인의 상태가 스크립트 기반 블록체인 상호작용에 사용되는 예시적인 환경의 다이어그램을 도시하고;
도 29는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 블록체인의 상태를 사용하기 위한 예시적인 프로세스의 흐름도를 도시하고;
도 30은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 블록체인의 상태를 사용하는 예시적인 구현예의 다이어그램을 도시한다.
먼저, 다양한 실시형태들이 구현될 수 있는 블록체인과 연계되는 예시적인 블록체인 네트워크(100)를 다이어그램 형태로 도시하는 도 1을 참조한다. 블록체인 네트워크(100)가 동작하고 있는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치는 블록체인 네트워크(100)에 참여할 수 있다. 이러한 분산 전자 장치를 노드(102)라고 할 수 있다. 블록체인 프로토콜은, 예를 들어 비트코인 프로토콜일 수 있다.
블록체인 프로토콜을 실행하고 블록체인 네트워크(100)의 노드(102)를 형성하는 전자 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버와 같은 컴퓨터, 스마트폰과 같은 모바일 장치, 스마트 워치와 같은 웨어러블 컴퓨터 또는 그 밖의 전자 장치를 포함하는 다양한 유형으로 될 수 있다.
블록체인 네트워크(100)의 노드(102)들은 유선 및 무선 통신 기술을 포함할 수 있는 적절한 통신 기술을 사용해서 서로 연결된다. 이러한 통신은 블록체인과 연계되는 프로토콜을 준수한다. 예를 들어, 블록체인이 비트코인 블록체인일 경우, 비트코인 프로토콜이 사용될 수 있다. 노드(102)들은 블록체인 상의 모든 트랜잭션의 글로벌 원장을 유지한다. 따라서, 글로벌 원장은 분산 원장이다. 각각의 노드(102)는 글로벌 원장의 전체 복사본 또는 부분 복사본을 저장할 수 있다. 글로벌 원장에 영향을 미치는 노드(102)에 의한 트랜잭션들은 다른 노드(102)들에 의해 검증되어 글로벌 원장의 유효성이 유지된다. 블록체인이 작업 증명(proof-of-work) 기반의 블록체인일 경우, 블록들도 마찬가지로 블록과 함께 제출되는 작업 증명을 검사함으로써 검증된다.
적어도 일부 노드(102)는 블록체인 네트워크(100)의 채굴자(104)로서 동작한다. 도 1의 블록체인 네트워크(100)는 채굴자(104)가 블록체인 상의 트랜잭션을 용이하게 하기 위해 비용이 많이 드는 연산을 수행하는 작업 증명 블록체인이다. 예를 들어, 작업 증명 블록체인은 채굴자에게 암호화 문제를 해결할 것을 요구할 수 있다. 비트코인에 있어서, 채굴자(104)는 블록 헤더가, 더블 SHA256으로, 현재 난이도에 의해 정의된 값보다 작은 수로 해싱하도록 논스(nonce)를 찾는다. 작업 증명 알고리즘에 필요한 해싱 능력은 트랜잭션이 그 외에 특정 수의 블록이 채굴된 후에는 사실상 불가역적인 것으로 간주됨을 의미한다. 암호화 문제를 해결한 채굴자(104)는 블록체인을 위한 새로운 블록을 생성하고 새로운 블록을 다른 노드(102)들에 브로드캐스트한다. 다른 노드(102)들은 채굴자(104)가 암호화 문제를 실제로 해결했고, 그에 따라 블록이 블록체인에 추가되어야 한다는 것을 수락하기 전에 충분한 작업 증명을 입증했는지를 검증한다. 다른 노드(102)들은 또한, 블록이 블록체인에 추가되어야 한다는 것을 수락하기 전에 블록 자체가 유효한지(예컨대, 트랜잭션 및 블록의 블록헤더가 유효한지)를 검증한다. 블록은 노드(102)들의 컨센서스에 의해 블록체인(즉, 분산 글로벌 원장)에 추가된다.
채굴자(104)에 의해 생성되는 블록은 노드(102)들에 의해 블록체인에 브로드캐스트된 트랜잭션들을 포함한다. 예를 들어, 블록은 노드(102)들 중 하나와 연계되는 어드레스로부터 노드(102)들 중 다른 하나와 연계되는 어드레스로의 트랜잭션을 포함할 수 있다. 이렇게, 블록은 한 어드레스에서 다른 어드레스로의 트랜잭션의 레코드로서 기능한다. 트랜잭션이 블록에 포함되도록 요청한 파티는 그들이 그들의 공개 키에 대응하는 개인 키를 사용해서 요청에 서명함으로써 전송(예컨대, 비트코인의 경우, 비트코인을 전송)을 개시할 권한이 있음을 입증한다. 전송은 요청이 유효하게 서명된 경우에만 블록에 추가된다.
비트코인의 경우, 공개 키들과 어드레스들 사이에는 일대일 대응관계가 존재한다. 즉, 각각의 공개 키는 단일의 어드레스와 연계된다. 따라서, 본 명세서에서 디지털 자산을 공개 키로 또는 공개 키로부터 전송하는 것(예컨대, 공개 키와 연관되는 어드레스에 전송) 및 디지털 자산을 해당 공개 키와 연계되는 어드레스로 또는 어드레스로부터 전송하는 것에 대한 임의의 언급은 공통의 동작을 지칭한다.
노드(102)들 중 일부는 채굴자로서 동작하지 않을 수 있으며, 대신에, 유효성 검증 노드로서 참여할 수 있다. 트랜잭션의 유효성 검증은 잠금 스크립트에서 특정되는 서명(들) 또는 다른 조건들을 검사하는 것, 유효한 UTXO에 대한 참조를 확인하는 것 등을 수반할 수 있다. 도 1의 실시예는 6개의 노드(102)를 포함하고, 그 중 2개는 채굴자(104)로서 참여하고 있다. 실제로, 노드(102) 또는 채굴자(104)의 수는 상이할 수 있다. 많은 블록체인 네트워크에 있어서, 노드(102) 및 채굴자(104)의 수는 도 1에 도시된 수보다 훨씬 더 많을 수 있다.
도 2는 일 실시형태에 따른 블록체인 네트워크(예컨대, 도 1과 관련하여 도시되는 블록체인 네트워크(100)와 같은 블록체인 네트워크)에서 노드(예컨대, 도 1과 관련하여 도시되는 노드(102)들 중 하나와 같은 노드)로서 기능할 수 있는 예시적인 전자 장치(200)를 다이어그램 형태로 도시한다. 예시적인 전자 장치(200)는 도 1과 관련하여 도시되는 블록체인 네트워크(100)와 같은 블록체인 네트워크에서 도 1과 관련하여 도시되는 노드(102)들 중 하나와 같은 노드로서 기능할 수 있다. 일 실시형태에 있어서, 블록체인 네트워크는 피어-투-피어(peer-to-peer) 블록체인 네트워크이다.
전자 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 스마트폰과 같은 모바일 장치, 스마트 워치와 같은 웨어러블 컴퓨터, 또는 다른 유형의 형태를 포함하는 다양한 형태를 취할 수 있다.
전자 장치(200)는 프로세서(210), 메모리(220) 및 인터페이스 장치(230)를 포함한다. 이들 컴포넌트는 서로 직접적으로 또는 간접적으로 연결될 수 있으며 서로 통신할 수 있다. 예를 들어, 프로세서(210), 메모리(220) 및 인터페이스 장치(230)는 버스(240)를 통해 서로 통신할 수 있다. 메모리(220)는 본 명세서에서 설명되는 기능들을 수행하기 위한 기계-판독 가능 명령어 및 데이터를 포함하는 컴퓨터 소프트웨어 프로그램을 저장한다. 예를 들어, 메모리는, 프로세서(210)에 의한 실행시에, 전자 장치로 하여금 본 명세서에서 설명되는 방법을 수행하게 하는 프로세서 실행 가능 명령어를 포함할 수 있다. 프로세서 실행 가능 명령어는, 프로세서(210)에 의한 실행시에, 전자 장치로 하여금 블록체인 네트워크(예컨대, 도 1과 관련하여 설명되는 블록체인 네트워크(100))와 연계되는 프로토콜을 구현하게 하는 명령어를 포함할 수 있다. 예를 들어, 명령어는 비트코인 프로토콜을 구현하기 위한 명령어를 포함할 수 있다.
메모리(220)는 블록체인 네트워크(예컨대, 도 1과 관련하여 설명되는 블록체인 네트워크(100))의 글로벌 원장 또는 그 일부를 저장할 수 있다. 즉, 메모리(220)는 블록체인의 모든 블록 또는 가장 최근의 블록들과 같이, 블록들 중 일부, 또는 일부 블록들 내의 정보의 일부를 저장할 수 있다.
메모리(220)는 도 2에서 단일의 블록으로 도시되어 있지만, 실제로 전자 장치(200)는 다수의 메모리 컴포넌트를 포함할 수 있다. 메모리 컴포넌트는, 예를 들어, RAM, HDD, SSD, 플래시 드라이브 등을 포함하는 다양한 유형으로 될 수 있다. 서로 다른 유형의 메모리는 서로 다른 목적에 적합할 수 있다. 또한, 메모리(220)가 프로세서(210)와는 별도로 도시되어 있지만, 프로세서(210)가 내장 메모리를 포함할 수 있다.
도 2에 도시된 바와 같이, 프로세서(210)는 신뢰된 실행 환경(trusted execution environment)(TEE)과 같은 보안 영역을 포함할 수 있다. TEE(250)는 격리된 실행, 신뢰할 수 있는 애플리케이션의 무결성, 및 자산 기밀성과 같은 추가적인 보안을 전자 장치(200)에 제공하는 격리된 실행 환경이다. TEE(250)는, TEE(250) 내부에 로딩되는 컴퓨터 명렁어 및 데이터가 기밀성 및 무결성 측면에서 보호되는 것을 보장하는 실행 공간을 제공한다. TEE(250)는 암호화 키와 같은 중요한 리소스의 무결성 및 기밀성을 보호하는 데 사용될 수 있다. TEE(250)는 적어도 부분적으로 하드웨어 레벨에서 구현되므로, TEE(250) 내부에서 실행되는 명령어 및 데이터는 전자 장치(200)의 다른 부분으로부터의, 그리고 전자 장치의 소유자와 같은 외부 파티로부터의 액세스 및 조작에 대하여 보호된다. TEE(250) 내부의 데이터 및 연산은 TEE(250)를 포함하는 노드(예컨대, 도 1과 관련하여 설명되는 노드(102))를 운영하는 파티로부터 보호된다.
TEE(250)는 보안 실행 환경(본 명세서에서는 "인클레이브(enclave)"라고도 함)을 인스턴스화하고 나서 메모리의 페이지들을 한 번에 하나씩 추가하되, 추가된 메모리 페이지들을 점증적으로 해싱하도록 동작할 수 있다. 일 실시형태에 있어서, 메모리 페이지들의 해싱은 원격 기계(예컨대, 개발자 기계 또는 다른 기계)가 예상 해시를 결정 및 저장하도록 원격 기계 상에서 수행된다. 따라서, 인클레이브의 내용은, 인클레이브가 승인된 알고리즘을 실행하고 있음을 보증하기 위해 임의의 원격 기계에 의해 검증될 수 있다. 이 검증은 해시들을 비교함으로써 수행될 수 있다. 인클레이브는 완전히 구축되면 잠기게 된다. TEE(250)에서 코드를 실행하고 코드에 비밀을 송신할 수 있지만, 해당 코드는 인클레이브가 잠기면 변경될 수 없다. 최종 해시는 증명 키(attestation key)에 의해 서명될 수 있고 데이터 소유자가 임의의 비밀을 인클레이브에 송신하기 전에 그것을 검증하도록 데이터 소유자가 이용 가능하게 될 수 있다.
TEE(250)는 TEE(250) 내부에 저장되는 암호화 키의 기밀성 및 무결성을 보호하는 데 사용될 수 있다. 예를 들어, TEE(250)는 개인 키 공유의 생성 및 저장에 사용될 수 있다. TEE(250)는, 어떠한 멤버도 TEE(250) 인클레이브 내부에 유지된 개인 키 공유, 또는 다른 개인 키 공유에 관한 정보를 멤버간 통신 또는 인클레이브간 통신으로부터 취득할 수 없도록 하기 위한 것이다. 또한, 프로토콜은 인클레이브의 임계치의 훼손에 대하여 강력하다. 또한, TEE(250)는, 노드(예컨대, 도 1과 관련하여 도시되는 노드(102)들 중 하나와 같은 노드)에 의해 사용될 수 있는 원격 증명이, TEE(250)가 진본이고 블록체인 네트워크(100)에 의해 구현된 프로토콜에 대한 승인된 컴퓨터 실행 가능 명령어를 실행하고 있다는 것을 다른 노드들에게 입증하게 할 수 있다. 원격 증명은, 특정 코드 부분을 실행하고 인클레이브에 대한 내부 증명 키에 의해 서명되는 인클레이브 내부의 코드의 해시를 송신함으로써, TEE(250)에 의해 제공될 수 있다.
TEE(250)는 비밀 키, 랜덤 챌린지, 또는 그 밖의 랜덤 데이터를 생성하는 데 사용될 수 있는 TEE의 인클레이브 내부의 보안 난수 생성기를 구비할 수 있다. 또한, TEE(250)는 외부 메모리로부터 데이터를 판독하도록 구성될 수 있으며, 외부 메모리에 데이터를 기록하도록 구성될 수 있다. 이러한 데이터는 인클레이브 내부에만 유지되는 비밀 키로 암호화될 수 있다.
TEE(250)는 TPM(Trusted Platform Module) 또는 SGX(Intel Software Guard Extensions)와 같은 다양한 플랫폼을 사용해서 구현될 수 있다. SGX는 예를 들어, 쿼트(quote)라고 하는 멤버를 갖고 있는 특정 인클레이브를 실행하고 있는 프로세서로부터 인클레이브가 서명된 스테이트먼트를 획득할 수 있게 하는 원격 증명을 지원한다. IAS(Intel Attestation Service)와 같은 제3자 증명 서비스는 이러한 서명된 스테이트먼트가 SGX 사양을 준수하는 인증된 CPU에서 비롯된 것임을 증명할 수 있다.
본 발명은 블록체인 트랜잭션(Tx)의 잠금 스크립트에 내재되는 암호화 공개 키를 다른 트랜잭션의 잠금 해제 스크립트에 제공되는 미결정 데이터를 사용해서 수정하도록 구성되는 방법(및 상응하는 시스템)을 제공할 수 있다. 예를 들어, 직렬화된 트랜잭션을 메시지(message)로서 사용하는 비트코인 프로토콜에서 서명 검사 연산 부호(예컨대, OP_CHECKSIG)와 함께 사용될 경우, 트랜잭션 및 데이터는 모두 공개 키의 소유자로부터의 승인 및 인증을 필요로 한다. 이는 변조를 방지한다.
본 명세서에서 설명되는 방법은 하나 이상의 디지털 서명 스킴을 사용해서 다양한 트랜잭션을 검증한다. 디지털 서명 스킴은 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm)(ECDSA) 스킴일 수 있다. 디지털 서명 스킴은 2-파티 ECDSA 스킴일 수도 있다. 디지털 서명 스킴은 임계치 ECDSA 스킴일 수도 있다. 이 스킴은 개인 키를 재구성할 필요 없이, 또한 임의의 파티가 그들의 키 공유를 다른 파티에게 드러낼 필요 없이, 유효한 서명을 구성하는 데 사용될 수 있다. 실시예에 있어서, 2-파티 ECDSA 스킴의 경우, 2개의 파티가 존재하고, 양 파티는 개인 키를 재구성할 필요가 있다.
이 ECDSA 스킴은 악의적인 또는 비협조적인 파티를 식별하기 위해 도 1과 관련하여 설명된 노드(102)들과 같은 노드들에 의해 사용될 수 있는 다양한 메커니즘을 포함한다. 예를 들어, 검증 가능한 비밀 공유(verifiable secret sharing)(VSS)는 샤미르의 비밀 공유(Shamir's secret sharing)(SSS)에 필요한 다항식을 공유하는 데 사용될 수 있다. SSS는 비밀이 여러 부분으로 분할되고 각각의 참여자에게 그 자신의 고유한 부분으로 제공되는 비밀 공유의 한 형태이다. 이들 부분은 비밀을 재구성하는 데 사용될 수 있다. VSS는, 일치되지 않는 공유들이 서로 다른 노드들에 제공되는 경우, 또는 모든 노드에게 브로드캐스트되는 블라인드형 공유와는 다른 공유가 노드에 비밀리에 송신되는 경우, 악의적인 노드 또는 멤버를 식별하기 위해 노드들에 의해 사용될 수 있다. 일치되지 않는 공유들은 노드들 중 어느 하나에 의해 식별될 수 있다. 비밀의 공유는 노드들이 그들의 공유를 일치되는 것으로 검증할 수 있게 하는 보조 정보를 포함하는 것에 의해 검증 가능해질 수 있다.
개별 노드에의 부정확한 공유(즉, 브로드캐스트되는 블라인드형 공유와는 다른 공유)의 송신은 공유의 의도한 수신자 노드에 의해 식별될 수 있다. 노드에 비밀리에 송신되는 부정확한 공유의 식별은 공개적으로 검증 가능한 비밀 공유(publically verifiable secret sharing)(PVSS)의 기술을 사용해서 공개적으로 검증 가능하게 될 수 있다. 이러한 기술은, PVSS가 사용되지 않고 부정확한 공유가 송신될 때 부정확한 공유의 수신자가 오프라인 상태이거나 네트워크의 상당 부분에서 차단되는 경우에 발생할 수 있는, 부정한 송신자의 식별이 지연될 가능성을 회피할 수 있다.
상이한 노드들에 일치되지 않는 공유를 제공하는 것과 같은 부정행위는 악의적인 행위를 저지하도록 네트워크에 의해 대처될 수 있다. 예를 들어, 노드가 다른 노드들에 의해 악의적인 파티로 식별되는 경우, 다수의 노드는 협력하여 악의적인 노드를 처벌할 수 있다. 예를 들어, 노드들은 악의적인 파티에 의해 블록체인 네트워크에 예치되는 디지털 자산(예를 들면, 디지털 통화, 토큰 또는 그 밖의 지분 또는 가치)과 관련지어서 조치를 취할 수 있다. 예를 들어, 블록체인 네트워크는 디지털 통화, 토큰, 지분 또는 가치를 상환 불능 어드레스에 전송함으로써 이들을 소각할 수 있거나, 또는 블록체인 네트워크는 다른 노드들과 거부하도록 합의함으로써 이러한 디지털 자산을 몰수할 수 있다. 부정행위 노드가 아닌 노드들은 부정행위 노드를 배제하도록 협력함으로써(예컨대, 키 공유를 효과적으로 무효화함으로써; 예를 들어, 노드가 회의 프로토콜에 참여하는 것을 배제함으로써, 또는 개인 키를 재공유하고 부정행위 노드에게 공유를 할당하지 않음으로써) 부정행위를 저지할 수도 있다.
전술한 ECDSA 기술은 TEE의 사용을 통해 강화될 수 있다. 예를 들어, 이브라힘(Ibrahim) 등에 기초한 임계치 ECDSA 서명 기술은 여기서 비잔틴 적대자(Byzantine adversary)라고 불리는 강한 적대자 형태를 고려한다. 이러한 유형의 적대자는 독단적으로 행동할 수 있고, 예를 들어, 그들은 서명 프로세스에 참여하는 것을 거부하거나 파티의 진행을 중단시킬 뿐만 아니라, 부정확한 정보를 정직하게 참여해서 송신하는 것처럼 가장할 수도 있다. 그러나, TEE를 사용하는 것에 의하면, 또한 비밀 개인 키 공유가 저장된 TEE의 인클레이브 내부에 서명하는 데 사용되는 데이터를 생성하는 것에 의하면, 인클레이브가 상당수 훼손될 가능성이 거의 없기 때문에, 추가적인 보안이 제공될 수 있다. 각각의 TEE가 하나 이하의 키 공유를 할당받으면, 예를 들어, 가능한 훼손된 TEE의 수가, n이 충분히 크다고 가정할 때, 비잔틴 적대자에 대한 견고성의 임계치에 도달하지 않을 것이라고 합리적으로 예상할 수 있다. 이로 인해, 키 공유의 총 수에 비해 작은 비율의 악의적인 적대자에 대하여 견뎌낸다면 프로토콜이 안전해질 수 있다.
예를 들어, 모든 노드가 TEE를 가질 경우, TEE의 제조자가 부패해 있지 않다면, 인클레이브 내부에 저장된 비밀을 획득하는 것은 노드에 대한 물리적인 액세스에 의해서만, 그리고 상당한 노력과 비용을 들여서만 달성될 수 있다. 이러한 제조자-레벨에서의 부패는 관리 가능할 것으로 예상된다. 예를 들어, 제조자가 다수의 공개 키가 진정한 TEE에 대응한다고 부정하게 주장했을 경우, 개인 키 공유에 직접 액세스하여 공격을 개시하게 될 수 있다. 그러나, 이러한 공격에는, 제조자가 다른 노드들로부터의 도움 없이 유효한 서명을 생성할 수 있도록 충분한 수의 키 공유가 필요해진다. 이것은 전체 지분의 많은 부분을 축적한다는 것을 의미하고, 이는 상당한 비용이 들게 된다. 또한, 공격을 수행함으로써, 보유한 지분 가치의 상당 부분이 파괴되게 된다.
TEE가 사용되는 경우, "부패한 노드(corrupted nodes)"에 대하여 프로토콜의 견고성을 고려하는 것이 유용하다. 부패한 노드는, TEE 외부의 하드웨어가 손상되었지만, TEE의 무결성이 훼손되지 않는 노드이다. 부패한 노드는 인클레이브가 어떤 정보를 수신하고 어떤 정보를 수신하지 않는지에 대하여 제어할 수 있다. 특히, 부패한 노드는 프로토콜에의 참여를 중단, 즉 그만둘 수 있다. 프로토콜에 제공되는 정보가 인클레이브에 비밀리에 유지되는 개인 키에 의해 서명될 필요가 있으면(이 경우, 상응하는 공개 키는 증명 동안 인증되었음), 개인 키는 인클레이브 자체만큼 신뢰할 수 있는 것이다. 따라서, 부패한 노드는 임의적인 (인증된) 정보를 프로토콜에 송신할 수 없고, 단지 중단에 의해 간섭하려고 시도할 수 있거나, 또는 예를 들어, 낡은 정보를 제공함으로써, 부적절하게 행동하는 것으로 인클레이브를 속이려고 시도할 수 있을 뿐이다. 결과적으로, 부패한 노드의 경우, 성공적인 공격을 위해서는 완전한 서명을 생성하기에 충분한 수의 부분 서명을 수집하는 것이 필요하다.
일부 실시형태에 있어서, 비-ECDSA 서명 스킴을 포함하여, 다른 임계치 스킴들이 사용될 수 있다.
도 3은 스크립트 기반 블록체인 상호작용과 연계되는 트랜잭션의 예시적인 실시형태(300)를 다이어그램 형태로 도시한다. 도 3에 도시된 예시적인 실시형태(300)는 블록체인의 제1 상태(306)를 인코딩하는 이전의 블록체인 트랜잭션(302) 및 블록체인의 제2 상태(308)를 인코딩하는 잠금 해제 블록체인 트랜잭션(304)을 묘사한다. 예시적인 실시형태(300)에 있어서, 최초의 현재 상태(306)는 이전 트랜잭션(302)에 내재되는 파라미터로서 나타내진다. 일 실시형태에 있어서, 잠금 해제 트랜잭션(304)은 다음 상태(308)를 나타내는 파라미터를 포함한다.
예시적인 실시형태(300)에 있어서, 트랜잭션들(302 및 304)은 하나 이상의 입력 및 하나 이상의 출력을 포함하는 필드값들의 세트이다. 일부 실시형태에 있어서, 입력들 및 출력들은 적어도 하나의 엔티티로부터 적어도 다른 엔티티로 디지털 자산의 제어를 전송하려는 의도를 반영한다. 예시적인 실시형태(300)에 있어서, 이전 트랜잭션(302)은 블록체인에 포함된, 가장 최신의 확인된 트랜잭션이다. 예시적인 실시형태(300)에 있어서, 잠금 해제 트랜잭션(304)은 아직 확인되지 않고 아직 블록체인에 포함되지 않은 가까운 장래의 트랜잭션이다. 잠금 해제 트랜잭션(304)의 입력들은 각각 이전 트랜잭션(302)의 출력을 수신한다.
비트코인과 같은 일부 블록체인 기술은 디지털 서명을 위한 수학적 스킴으로서 타원 곡선 디지털 서명 알고리즘(ECDSA)을 사용한다. 실시형태들에 있어서, ECDSA는 UTXO가 그 정당한 소유자에게만 전송되도록 하는 데 사용되는 암호화 디지털 서명이다. 비트코인에서의 타원 곡선 디지털 서명(ECDS)은 통상적으로 말미에 서명 해시 플래그(SIGHASH 타입)가 첨부되어 나타나지만; 본 개시물의 기술은 SIGHASH 타입을 구현하지 않는 블록체인 기술과 함께 사용 가능할 것으로 생각된다. 이러한 블록체인 기술에 있어서, ECDS는 특정 블록체인 기술의 서명 생성 원리를 준수할 것으로 생각된다.
실시형태들에 있어서, SIGHASH 타입은 직렬화(예컨대, 정규화) 및 해싱되기 전에 트랜잭션으로부터 추출될 필드 세트를 의미한다. 예를 들어, SIGHASH 타입은 트랜잭션의 어떤 필드가 서명에 포함되는지에 영향을 미칠 수 있다. 일부 실시예에 있어서, SIGHASH 타입은 SIGHASH_ALL, SIGHASH_NONE, SIGHASH_SINGLE, 또는 SIGHASH_ANYONECANPAY 중 하나 이상일 수 있다. 일 실시형태에 있어서, 타입 SIGHASH_ALL은 입력 스크립트를 제외한, 트랜잭션 내의 모든 필드가 해싱 및 서명되어야 함을 나타낸다. 일 실시형태에 있어서, 타입 SIGHASH_NONE은 출력이 서명될 필요가 없으며, 이것은 다른 사람들이 트랜잭션을 업데이트할 수 있게 한다는 것을 나타낸다. 일 실시형태에 있어서, 타입 SIGHASH_SINGLE은 입력들이 서명되지만 시퀀스 번호들이 비워져서, 다른 사람들이 트랜잭션의 새로운 버전을 생성할 수 있지만, 서명된 출력만이 입력과 동일한 위치에 있는 출력임을 나타낸다. 일 실시형태에 있어서, 타입 SIGHASH_ANYONECANPAY는 다른 타입들과 결합되고, SIGHASH_ANYONECANPAY를 포함하는 입력은 서명되지만, 다른 입력들은 서명될 필요가 없다는 것을 나타낸다. SIGHASH 타입은 SIGHASH 타입을 나타내는 값으로 표현될 수 있다. 예를 들어, 일부 구현예에 있어서, SIGHASH_ALL은 값이 1인 바이트로 표현되고, SIGHASH_NONE은 값이 2인 바이트(예컨대, "00000010")로 표현되고, SIGHASH_SINGLE은 값이 3인 바이트(예컨대, "00000011")로 표현되고, 또한 SIGHASH_ANYONECANPAY는 값이 80인 바이트(예컨대, "01010000")로 표현된다. 일부 구현예에 있어서, SIGHASH 타입들을 결합하는 것은 바이트 값들을 더하는 것에 의해 수행된다.
일부 실시예에 있어서, SIGHASH 타입에 의해 결정되는 트랜잭션 필드 세트는, SIGHASH 타입에 의해 결정되는 바와 같이, 바이트로 인코딩되는 상응하는 트랜잭션의 서브세트를 의미한다. 예를 들어, SIGHASH_ANYONECANPAY의 SIGHASH 타입에 의하면, 단 하나의 트랜잭션 입력이 서명 내에 포함된다.
일 실시형태에 있어서, ECDS는 식별 인코딩 규칙(distinguished encoding rules)(DER) 포맷으로 인코딩되는 한 쌍의 256 비트 숫자 (r,s)에 의해 표현된다. 그러나, 본 개시물의 기술은 기본 인코딩 규칙(basic encoding rules)(BER) 또는 정규 인코딩 규칙(canonical encoding rules)(CER)과 같은 다른 인코딩 포맷과 함께 사용 가능하다는 점에 유의한다. ECDSA에서 사용되는 파라미터는 K(좌표 (x,y)를 갖는 타원 곡선 점), k(256-비트 숫자; 개인 키를 보호하기 위해 일반적으로 무작위임), G(위수 n: n × G = 0인 타원 곡선 상의 기준점, 여기서 0은 아이덴티티 타원 곡선 점을 나타냄), n(타원 곡선 유한 필드의 파라미터로서 사용되는 큰 소수), r(ECDS에서 256-비트 숫자들 중 하나), s(서명의 256-비트 숫자들 중 다른 하나), k-1(k의 모듈식 역수; 즉, k-1k ≡ 1 mod n), m(메시지/데이터가 서명됨; 실시형태들에 있어서, 해시 함수에 의해 256 비트로 크기가 조정됨), a(개인 키; 예컨대, 256 비트 숫자)를 포함한다. 실시형태에 있어서, ECDS는 다음과 같이 생성된다:
먼저, 타원 곡선 점 K는 k를 생성기와 곱하는 것에 의해 K = k × G로부터 결정된다. 점 x는 K로부터 결정되고, ECDS의 256-비트 숫자들 중 첫 번째인 r은 공식 r = x mod n에 따라 결정된다. 이후, ECDS의 256-비트 숫자들 중 두 번째인 s는 공식 s = k-1 (m + r × a) mod n에 따라 결정된다. 마지막으로, (r,s)는 DER 포맷으로 인코딩된다. 서명 (r,s), 메시지/데이터 m, 및 개인 키 a에 대응하는 공개 키 A가 주어지면, 서명이 검증될 수 있다. 서명을 검증하기 위해, v = s-1 × (m × G + r × y)가 계산된다. v = r이면, 서명은 유효하다.
비트코인은 "스크립트(Script)"라고 하는 스크립팅 시스템을 사용한다. 본 개시물에 있어서는, 다양한 연산을 수행하기 위해 다양한 스크립트 연산 부호 및 키워드가 참조된다. 그러나, 다른 블록체인 기술들이 상이한 명령어 세트를 구현할 수 있을 것으로 고려되고, 그에 따라 본 개시물에서 설명되는 연산 부호는 Script에서의 특정 연산 부호가 아닌 연산 부호에 의해 수행되는 연산을 예시하는 것으로 간주된다. 일부 실시형태에 있어서, 스크립팅 시스템은 튜링 불완전성(Turing incomplete) 명령어 세트(예컨대, 루프, 재귀, "goto" 문(스테이트먼트) 등에 대한 지원의 결여)이다. 다른 실시형태들에 있어서, 스크립팅 시스템은 튜링 완전성(Turing complete) 명령어 세트이다.
본 개시물의 특정 실시형태들은 설명된 명령어 세트를 구현하기 위한 스크립팅 시스템 또는 다른 시스템이 단일의 스크립트에서, 비트코인의 일부 구현예에 있어서는 금지된 한계인, 200개 이상의 명령어(예컨대, 연산 부호)를 허용한다는 가정하에서 동작한다. 유사하게, 본 개시물의 특정 실시형태들은 또한, 본 개시물에서 참조되는 연산 부호들에 의해 제공되는 기능이 명령어의 연산 부호 스크립트/세트를 실행하는 시스템에 존재하고 사용 가능하다고 가정한다. 비트코인의 일부 구현예에 있어서, 이들 연산 부호 중 하나 이상은 기본적으로 사용 불능 또는 제한될 수 있다.
본 개시물에서 참조되는 연산 부호들의 실시예는 다음을 포함한다:
· OP_ ECPX, 타원 곡선 점의 x-좌표를 반환한다
· OP_ADD, 스택 상의 상위 2개의 항목을 가산한다
· OP_BIGMOD, 스택 상의 상위 2개의 항목을 나눈 후 나머지를 반환한다
· OP_BIGMODADD, 스택 모듈러스의 상위 2개의 항목을 스택의 제3 항목과 모듈러스 덧셈을 수행한다
· OP_BIGMODINVERSE, 모듈러스 음의 지수 연산을 수행한다
· OP_BIGMODMUL, 스택 모듈러스의 상위 2개의 항목을 스택의 제3 항목과 모듈러스 곱셈을 수행한다
· OP_CAT, 스택 상의 상위 2개의 항목을 연결시킨다
· OP_CHECKSIG, 공개 키 및 서명이 스택으로부터 드러나고 SIGHASH 타입에 따라 트랜잭션 필드의 서명에 대하여 검증된다. 서명이 유효하면, 1이 반환되고, 그렇지 않으면, 0이 반환된다.
· OP_CHECKSIGVERIFY, OP_CHECKSIG와 동일하게 기능하지만, 나중에는 OP_VERIFY가 실행된다
· OP_DERENCODE, 스택 상의 상위 2개의 항목을 DER 포맷으로 인코딩한다
· OP_DUP, 상위의 스택 항목을 복제한다
· OP_ECPMULT, 스택 상의 상위 2개의 항목의 타원 곡선 곱셈을 수행한다
· OP_ELSE, 선행 OP_IF 또는 OP_NOTIF 또는 OP_ELSE가 실행되지 않았을 경우, 이들 스테이트먼트가 실행되고; 그렇지 않으면, 선행 OP_IF 또는 OP_NOTIF 또는 OP_ELSE가 실행되었으면, 이들 스테이트먼트가 실행되지 않는다
· OP_ENDIF, if/else 블록을 종료한다
· OP_EQUAL, 입력들이 정확하게 동일하면 1을 반환하고, 그렇지 않으면 0을 반환한다
· OP_EQUALVERIFY, OP_EQUAL과 동일하지만, 나중에는 OP_VERIFY를 실행한다
· OP_FROMALTSTACK, 메인 스택의 상위에 입력을 더하고, 대체 스택으로부터 그것을 제거한다
· OP_HASH256, 입력이 2회: 즉, SHA-256 및 이후 RIPEMD-160으로 해싱된다
· OP_IF, 상위 스택 값이 거짓(False)이 아니면, 스테이트먼트가 실행되고 상위 스택 값이 제거된다
· OP_NOTIF, 상위 스택 값이 거짓이면, 스테이트먼트가 실행되고 상위 스택 값이 제거된다
· OP_ROLL, 스택에서 n 항목 깊이에 있는 항목이 상위에서 제거된다
· OP_SUBSTR, 문자열의 한 섹션을 반환한다
· OP_SWAP, 스택 상의 상위 2개의 항목이 스왑된다
· OP_TOALTSTACK, 대체 스택의 상위에 입력을 더하고, 메인 스택으로부터 그것을 제거한다
· OP_VERIFY, 상위 스택 값이 참(true)이 아니면, 트랜잭션을 무효한 것으로 표시한다
일 실시형태에 있어서, ECDS 생성 스크립트는 말미에 SIGHASH 바이트를 첨부함으로써 서명 생성 스크립트 OP_GENSIG를 생성하도록 확장될 수 있는 연산 부호를 사용해서 생성될 수 있다.
표 1:
표 1에 예시되는 상기 스크립트에 있어서, <SIGHASH Byte>, 메시지 <m>, 개인 키 <a>, 및 숫자 <k>는 상기의 순서(예컨대, 4개의 항목의 삽입 이후, 숫자 <k>가 스택의 상위에 있고, 이어서 개인 키 <a>, 이어서 메시지 <m>, 및 이어서 마지막으로 <SIGHASH Byte>)로 메인(예컨대, 적어도 후입 선출) 스택에 입력된다.
스크립트 연산 "OP_DUP OP_TOALTSTACK <PubK G> OP_ECPMULT"의 실행은 숫자 <k>가 대체 스택에 복사되게 하고, 여기서 <k>는 타원 곡선 생성기 <PubK G>에 승산되어 메인 스택의 상위에 타원 곡선 점 K를 생성한다.
스크립트 연산 "OP_ ECPX <N> OP_BIGMOD OP_DUP OP_TOALTSTACK"의 실행은 r이 K mod n의 x 좌표로부터 계산되게 한다. r의 복사본은 대체 스택에 밀어넣어진다.
스크립트 연산 "<N> OP_BIGMODMUL <N> OP_BIGMODADD", "OP_FROMALTSTACK OP_SWAP OP_FROMALTSTACK <N>", 및 "OP_BIGMODINVERSE <N> OP_BIGMODMUL"의 실행은 k-1 (m + r × a) mod n으로부터 s를 연산한다. 마지막으로, 스크립트 연산 "OP_DERENCODE OP_SWAP OP_CAT"의 실행은 r 및 s가 DER 포맷으로 인코딩되고 <SIGHASH Byte>와 연결되게 한다.
본 개시물에 있어서는, 이 스크립트를 OP_GENSIG라고 한다. 따라서, 본 개시물의 실시형태들에서 OP_GENSIG를 참조하는 것은 상기의 스크립트에서 실행되는 연산들에 대한 속기로서 간주되어야 한다.
도 4는 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용과 연계되는 블록체인에 액세스하는 것에 관한 예시적인 문제점(400)을 다이어그램 형태로 도시한다. 도 4에 도시된 예시적인 문제점(400)에 있어서, 트랜잭션(402)(예컨대, 도 3과 관련하여 설명된 이전 트랜잭션(302)과 같은 이전 트랜잭션 또는 잠금 해제 트랜잭션(304))에서의 잠금 스크립트(406)는 블록체인(404)에 액세스할 수 없다.
주지된 바와 같이, 일부 실시형태에 있어서, 트랜잭션(402)은 블록체인에 포함된 가장 최신의 확인된 트랜잭션이다. 유사하게, 일부 실시형태에 있어서, 트랜잭션(402)은 아직 확인되지 않고 아직 블록체인에 포함되지 않고 또한 이전 트랜잭션에 의해 제어되는 디지털 자산의 적어도 일부의 제어를 전송하려는 시도를 나타내는 장래의 트랜잭션이다.
일부 실시형태에 있어서, 잠금 스크립트(406)는 출력을 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 트랜잭션을 저당잡는 스크립트이다. 보다 구체적으로, 잠금 스크립트(406)를 실행하는 것은, 블록체인 시스템의 유효성 검증 노드에 의한 실행의 결과로서, 실행된 잠금 해제 스크립트로부터 데이터를 수용하고 해당 데이터에 기초하여 특정 연산을 수행하고, 잠금 해제 스크립트의 실행이 잠금 스크립트를 성공적으로 "잠금 해제(unlocked)"(즉, 잠금 스크립트 내의 조건 세트를 충족)했는지의 여부를 표시하는 결과를 반환하도록 구성된다. 일부 실시형태에 있어서, 잠금 스크립트(406)는 트랜잭션의 유효성 검증이 성공적으로 되도록 (예컨대, 잠금 해제 스크립트를 통해 제공되는 데이터에 의해) 만족되어야 하는 하나 이상의 데이터 제약을 정의한다. 예를 들어, 잠금 스크립트(406)는 트랜잭션(402)의 연계된 디지털 자산을 잠금 해제하도록 특정 데이터가 잠금 해제 스크립트에 제공되는 것을 필요로 할 수 있다.
예시적인 문제점(400)에 도시된 바와 같이, 트랜잭션(402)의 잠금 스크립트(406)는, 예를 들어, 블록의 수를 결정하기 위해 블록체인(404)에 질의할 수 없다. 트랜잭션(402)의 잠금 스크립트(406)는 또한, 블록체인(404)의 제1 블록(408)("기원 블록(genesis block)"이라고도 함), 블록체인(404)의 내부 블록들 중 어느 하나(예컨대, 블록(410)), 또는 블록체인(404)의 최신 블록(412)을 포함하는 블록체인(404)의 블록들에 질의할 수 없다. 본 명세서에서 설명되는 방법은 트랜잭션(402)의 잠금 스크립트(406)가 블록체인(404)의 제1 블록(408), 내부 블록들 중 어느 하나(예컨대, 블록(410)), 또는 최신 블록(412)을 포함하는 블록체인(404)의 블록들에 질의할 수 있게 한다.
도 5는 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용과 연계되는 블록체인의 블록들에 액세스하는 것에 관한 예시적인 문제점(500)을 다이어그램 형태로 도시한다. 도 5에 도시된 예시적인 문제점(500)에 있어서, 트랜잭션(502)(예컨대, 도 3과 관련하여 설명되는 이전 트랜잭션(302)과 같은 이전 트랜잭션 또는 도 3과 관련하여 설명되는 잠금 해제 트랜잭션(304)과 같은 잠금 해제 트랜잭션)에서의 잠금 스크립트(506)는 블록(504)과 같은 블록체인 내의 블록들(즉, 제1 블록, 내부 블록, 또는 최신 블록)에 액세스할 수 없다.
주지된 바와 같이, 일부 실시형태에 있어서, 트랜잭션(502)은 블록체인에 포함된 가장 최신의 확인된 트랜잭션이다. 유사하게, 일부 실시형태에 있어서, 트랜잭션(502)은 아직 확인되지 않고 아직 블록체인에 포함되지 않고 또한 이전 트랜잭션에 의해 제어되는 디지털 자산의 적어도 일부의 제어를 전송하려는 시도를 나타내는 장래의 트랜잭션이다.
일부 실시형태에 있어서, 잠금 스크립트(506)는 본 명세서에서 설명되는 바와 같이, 출력을 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 트랜잭션을 저당잡는 스크립트이다. 예시적인 문제점(500)에 도시된 바와 같이, 트랜잭션(502)의 잠금 스크립트(506)는, 예를 들어, 트랜잭션의 수를 결정하기 위해 또는 특정 트랜잭션에 액세스하기 위해 블록체인의 블록(504)에 질의할 수 없다. 예시적인 문제점(500)에 도시된 바와 같이, 트랜잭션(502)의 잠금 스크립트(506)는 블록체인의 블록(504)에 질의할 수 없고, 블록(504)의 블록 헤더(508)에 질의할 수 없고, 블록(504)의 트랜잭션(510)에 질의할 수 없다. 블록(504)이 트랜잭션(502)(블록(504)의 트랜잭션(510)의 트랜잭션 Txi(512)로 표시됨)을 포함하는 실시형태에 있어서, 트랜잭션(502)의 잠금 스크립트(506)는 트랜잭션 Txi(512)에도 질의할 수 없다(예컨대, 잠금 스크립트(506)를 포함하는 트랜잭션에 질의할 수 없음). 본 명세서에서 설명되는 방법은 트랜잭션(502)의 잠금 스크립트(506)가 블록체인의 블록(504)에 질의하게 할 수 있고, 블록(504)의 블록 헤더(508)에 질의하게 할 수 있고, 블록(504)의 트랜잭션(510)에 질의하게 할 수 있고, 블록(504)의 트랜잭션(510)의 트랜잭션 Txi(512)에 질의하게 할 수 있다(예컨대, 잠금 스크립트가 잠금 스크립트(506)를 포함하는 트랜잭션에 질의하게 할 수 있음).
도 6은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 데이터가 블록 헤더인 것으로 검증되는 예시적인 환경(600)을 다이어그램 형태로 도시한다. 블록 헤더는 블록에 관한 데이터를 포함하는 블록체인의 블록의 섹션이다. 예를 들어, 블록 헤더(602)는 블록체인 구현예의 버전("nVersion")을 저장하는 처음 4 바이트, 블록체인의 이전의 블록의 해시("HashPrevBlock")를 저장하는 다음 32 바이트(또는 256 비트), 블록의 트랜잭션의 머클 트리의 해시(본 명세서에서 상세하게 설명되는 "HashMerkleRoot")를 저장하는 다음 32 바이트, 블록의 생성 시간("nTime")을 저장하는 다음 4 바이트, 블록에 대한 32-비트 난이도 값("nBits")을 저장하는 다음 4 바이트, 및 블록에 대한 랜덤 시드(random seed)("nNonce")를 저장하는 마지막 4 바이트로 된 80 바이트의 데이터이다.
관찰될 수 있는 바와 같이, 블록 헤더(602)가 잠금 스크립트에의 입력(예컨대, 잠금 해제 스크립트로서 제공됨)으로서 사용된 데이터이면, 블록 헤더(602) 상의 제약을 잠금 스크립트에 인코딩함으로써, 잠금 해제 스크립트 데이터는 유효한 블록 헤더를 포함해야만 하거나 또는 유효한 잠금 해제 스크립트가 아닐 것이다. 블록 헤더(602)와 같은 블록 헤더 상의 3가지 제약은, i) 길이가 80 바이트이고; ii) 블록 헤더의 nBits 필드가 특정 난이도 값 이상이어야 하고; iii) 블록 헤더의 더블 SHA256이 난이도 값 이하여야 한다는 것이다. 이들 제약 각각은 본 명세서에서 별도의 스크립트로서 예시되고, 설명의 편의를 위해 스크립트들을 연결하는 세부 내용(예컨대, 제약을 분기하는 것 및 스택을 유지하는 것)은 생략되어 있다.
3개의 스크립트는, 스크립트들을 연결하는 생략된 세부 내용과 함께 결합될 경우, 단일의 스크립트를 형성하고, 이는 잠금 해제 스크립트에서의 <Data>가 유효한 블록 헤더임을 검증하기 위한 OP_CHECKBLOCKVERIFY 스크립트의 실시예이다. 예시된 실시예들에 있어서, 3개의 스크립트는 참 또는 거짓을 반환하지만, OP_CHECKBLOCKVERIFY 스크립트를 생성하기 위해 단일의 스크립트로서 함께 연결될 경우에는, 각각의 스크립트의 말미에 OP_VERIFY가 추가되는 것이 일반적이다. 고려될 수 있는 바와 같이, OP_CHECKBLOCKVERIFY 스크립트의 다른 구현예들이 구현될 수 있으며 본 개시물의 범위 내에 있는 것으로 간주될 수 있다.
단계(604)에서, 의도된 블록 헤더가 <Data>로 표시되는 잠금 해제 스크립트로서 제공된다.
단계(606)에서, <Data>의 크기가 80 바이트(예컨대, 제1 제약)인지를 검증하는 제1 스크립트가 실행된다. <Data>의 크기가 80 바이트인지를 검증하는 제1 스크립트는 표 2에 도시된다.
표 2:
단계(608)에서, 블록 헤더의 "nBits" 필드가 블록체인 난이도 값 이상인지를 검증하는 제2 스크립트가 실행된다. 블록 헤더의 "nBits" 필드가 블록체인 난이도 값 이상인지를 검증하는 제2 스크립트는 표 3에 도시된다. 표 3에 도시되는 스크립트에서 난이도 값 "<0x1D00FFFF>"는 비트코인 사양에 따른 최소 난이도임에 유의해야 한다. 일 실시형태에 있어서는, 난이도 값이 잠금 해제 스크립트의 데이터 항목으로서 제공된다. 일 실시형태에 있어서는, 높은 난이도 값(예컨대, 0x1D00FFF보다 큰 값)이 목표 난이도로서 사용된다. 일 실시형태에 있어서는, 낮은 난이도 값(예컨대, 0x1D00FFF보다 작은 값)이 목표 난이도로서 사용된다.
표 3:
단계(610)에서, 블록 헤더의 더블 SHA256(전술한 연산 부호 OP_HASH256으로 구현됨)이 지시된 난이도 값 이하인지를 검증하는 제3 스크립트가 실행된다. 블록 헤더의 더블 SHA256이 지시된 난이도 값 이하인지를 검증하는 제3 스크립트는 표 4에 도시된다. 표 4에 도시된 제3 스크립트는 2개의 추가적인 연산 부호를 도입한다:
· OP_ LBYTESHIFT, 임의로 크기가 정해진 데이터에 대하여 좌향 바이트 시프트(left byte shift)를 수행한다
· OP_BIGLESSTHANOREQUAL, 임의로 크기가 정해진 데이터를 숫자들로 해석하고, 두 숫자를 비교해서 첫 번째 숫자가 두 번째 숫자 이하인지를 결정한다
표 4:
도 7은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 데이터가 블록 헤더인지를 검증하기 위한 예시적인 프로세스(700)를 흐름도 형태로 도시한다. 프로세스(700)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(700)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 7과 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 데이터가 블록 헤더인지를 검증하기 위한 예시적인 프로세스(700)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(700)의 단계(702)에서, 시스템은 <Data>를 수신한다. 예시적인 프로세스(700)의 단계(704)에서, 시스템은 도 6과 관련하여 전술한 바와 같이 OP_CHECKBLOCKVERIFY 스크립트를 시작한다. 예시적인 프로세스(700)의 단계(706)에서, 시스템은, 예를 들어, 상기 표 2에 도시된 스크립트를 실행함으로써 <Data>의 크기가 80 바이트인지를 검증한다. 예시적인 프로세스(700)의 단계(708)에서, 이전 스크립트(예컨대, 상기 표 2에 도시된 스크립트)가 통과했는지의 여부가 결정된다.
예시적인 프로세스(700)의 단계(708)에서, 이전 스크립트가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(700)의 단계(718)에서, <Data>는 유효한 블록 헤더가 아니고 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(700)의 단계(708)에서, 이전 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(700)의 단계(710)에서, 시스템은 <Data>의 "nBits" 필드가, 예를 들어, 상기 표 3에 도시된 스크립트를 실행함으로써 블록체인 난이도 이상인지를 검증한다. 예시적인 프로세스(700)의 단계(712)에서, 이전 스크립트(예컨대, 상기 표 3에 도시된 스크립트)가 통과했는지의 여부가 결정된다.
예시적인 프로세스(700)의 단계(712)에서, 이전 스크립트가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(700)의 단계(718)에서, <Data>는 유효한 블록 헤더가 아니고 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(700)의 단계(712)에서, 이전 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(700)의 단계(714)에서, 시스템은 <Data>의 SHA256이, 예를 들어, 상기 표 4에 도시된 스크립트를 실행함으로써 요구된 목표 이하인지를 검증한다. 예시적인 프로세스(700)의 단계(716)에서, 이전 스크립트(예컨대, 상기 표 4에 도시된 스크립트)가 통과했는지의 여부가 결정된다.
예시적인 프로세스(700)의 단계(716)에서, 이전 스크립트가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(700)의 단계(718)에서, <Data>는 유효한 블록 헤더가 아니고 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(700)의 단계(716)에서, 이전 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(700)의 단계(720)에서, <Data>는 유효한 블록 헤더이고 잠금 스크립트의 잠금 해제가 성공한다.
도 7에 도시된 예시적인 프로세스(700)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 8은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 데이터가 이전의 블록에 대한 블록 헤더인 것으로 검증되는 예시적인 환경(800)을 다이어그램 형태로 도시한다. 본 명세서에서 설명한 바와 같이, 블록 헤더는 블록에 관한 데이터를 포함하는 블록체인의 블록의 섹션이다. 블록 헤더의 한 부분은 이전의 블록 헤더의 해시("HashPrevBlock")이다. 제1 블록 헤더가 잠금 스크립트에 입력으로서 제공되고(예컨대, 잠금 해제 스크립트의 일부로서 제공됨) 블록체인에서 다음 블록에 대하여 의도된 대로의 제2 블록 헤더가 또한 잠금 스크립트에 입력으로서 제공되면(예컨대, 잠금 해제 스크립트의 일부로서 제공됨), 잠금 스크립트에서 제1 블록 헤더의 해시가 제2 블록의 HashPrevBlock이라는 제약을 인코딩함으로써, 제1 블록 헤더의 해시가 제2 블록의 HashPrevBlock이 아닐 경우, 2개의 블록 헤더는 유효한 잠금 해제 스크립트가 아닐 것이다.
단계(804)에서, 제1 블록 헤더(802)는 잠금 해제 스크립트에 대한 데이터(<Data 1>로 표시됨)로서 제공되고, 단계(810)에서, 제2 블록 헤더(808)는 아래에서 설명되는 잠금 해제 스크립트에 대한 데이터(<Data 2>로 표시됨)로서 제공된다. 단계(806)에서, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트와 같은 스크립트는 <Data 1>이 블록 헤더인지를 검증하는 데 사용된다. 단계(812)에서, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트와 같은 스크립트는 <Data 2>가 블록 헤더인지를 검증하는 데 사용된다.
단계(814)에서, 제1 블록 헤더 <Data 1>의 더블 SHA256이 제2 블록 헤더 <Data 2>의 HashPrevBlock 필드와 동일한지를 검증하는 스크립트가 실행된다. 제1 블록 헤더 <Data 1>의 더블 SHA256이 제2 블록 헤더 <Data 2>의 HashPrevBlock 필드와 동일한지를 검증하는 스크립트의 실시예는 표 5에 도시된다. 표 5에 도시되는 스크립트는 <Data 1>이 <Data 2>의 직전의 유효한 블록인지를 검증하기 위한 OP_CHECKCHAINVERIFY 스크립트의 실시예이다. 고려될 수 있는 바와 같이, OP_CHECKCHAINVERIFY 스크립트의 다른 구현예들이 구현될 수 있으며 본 개시물의 범위 내에 있는 것으로 간주될 수 있다. 표 5에 도시되는 OP_CHECKCHAINVERIFY 스크립트의 마지막 연산 부호는 실행 이후에 스택에 "참(true)" 값이 남아있어야 하기 때문에 OP_EQUAL이다. OP_CHECKCHAINVERIFY 스크립트가 다른 스크립트들과 조합하여 사용되는 실시형태에 있어서는, 스크립트의 마지막 OP_EQUAL 연산 부호가 OP_EQUALVERIFY 연산 부호로 변경된다.
표 5:
도 9는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 데이터가 이전의 블록에 대한 블록 헤더인지를 검증하기 위한 예시적인 프로세스(900)를 흐름도 형태로 도시한다. 프로세스(900)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(900)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 9와 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 데이터가 이전의 블록에 대한 블록 헤더인지를 검증하기 위한 예시적인 프로세스(900)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(900)의 단계(902)에서, 시스템은 2개의 의도된 블록 헤더인 <Data 1> 및 <Data 2>를 수신한다. 예시적인 프로세스(900)의 단계(904)에서, 시스템은 도 8과 관련하여 전술한 바와 같이 <Data 1> 및 <Data 2>에 대한 OP_CHECKCHAINVERIFY 프로세스를 시작한다. 예시적인 프로세스(900)의 단계(906)에서, 시스템은 도 6 및 도 7과 관련하여 전술한 바와 같이 <Data 1>에 대한 OP_CHECKCHAINVERIFY 스크립트를 수행함으로써 <Data 1>이 블록 헤더인지를 검증한다.
예시적인 프로세스(900)의 단계(908)에서, 이전 스크립트(예컨대, <Data 1>에 대한 OP_CHECKBLOCKVERIFY 스크립트)가 통과했는지(즉, OP_CHECKBLOCKVERIFY 스크립트가 참을 반환했는지)의 여부가 결정된다. 예시적인 프로세스(900)의 단계(908)에서, 이전 스크립트가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(900)의 단계(910)에서, <Data 1>은 유효한 블록 헤더가 아니고, 예시적인 프로세스(900)의 단계(922)에서, <Data 1>은 <Data 2>의 이전의 블록이 아니며, 그에 따라 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(900)의 단계(908)에서, 이전 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(900)의 단계(912)에서, 시스템은 도 6 및 도 7과 관련하여 전술한 바와 같이 <Data 2>에 대한 OP_CHECKBLOCKVERIFY 스크립트를 수행함으로써 <Data 2>가 블록 헤더인지를 검증한다.
예시적인 프로세스(900)의 단계(914)에서, 이전 스크립트(예컨대, <Data 2>에 대한 OP_CHECKBLOCKVERIFY 스크립트)가 통과했는지(즉, OP_CHECKBLOCKVERIFY 스크립트가 참을 반환했는지)의 여부가 결정된다. 예시적인 프로세스(900)의 단계(914)에서, 이전 스크립트가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(900)의 단계(916)에서, <Data 2>는 유효한 블록 헤더가 아니고, 예시적인 프로세스(900)의 단계(922)에서, <Data 1>은 <Data 2>의 이전의 블록이 아니며, 그에 따라 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(900)의 단계(914)에서, 이전 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(900)의 단계(918)에서, 시스템은 <Data 1>의 더블 SHA256이 <Data 2>의 "HashPrevBlock" 필드와 동일한지를 검증한다.
예시적인 프로세스(900)의 단계(920)에서, <Data 1>의 더블 SHA256이 <Data 2>의 "HashPrevBlock" 필드와 동일한지의 여부가 결정된다. 예시적인 프로세스(900)의 단계(920)에서, <Data 1>의 더블 SHA256이 <Data 2>의 "HashPrevBlock" 필드와 동일하지 않은 것으로 결정되면, 예시적인 프로세스(900)의 단계(922)에서, <Data 1>은 <Data 2>의 이전의 블록이 아니며, 그에 따라 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(900)의 단계(920)에서, <Data 1>의 더블 SHA256이 <Data 2>의 "HashPrevBlock" 필드와 동일한 것으로 결정되면, 예시적인 프로세스(900)의 단계(924)에서, <Data 1>은 <Data 2>의 이전의 블록이며, 그에 따라 잠금 스크립트의 잠금 해제가 성공한다.
도 9에 도시된 예시적인 프로세스(900)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 10은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 데이터가 블록 헤더 체인인 것으로 검증되는 예시적인 환경(1000)을 다이어그램 형태로 도시한다. 도 10에 도시된 예시적인 환경(1000)은 도 8 및 도 9와 관련하여 설명된 동작들의 확장이다. 도 10에 도시된 예시적인 환경(1000)에서, 블록 헤더 체인(1010)(즉, 블록 헤더들의 체인)의 제1 블록 헤더(1002)의 더블 SHA256은 블록 헤더 체인(1010)의 제2 블록 헤더(1004)의 HashPrevBlock과 비교되고, 블록 헤더 체인(1010)의 제2 블록 헤더(1004)의 더블 SHA256은 블록 헤더 체인(1010)의 제3 블록 헤더(1006)의 HashPrevBlock과 비교되는 등이며, 이는 블록 헤더 체인(1010)의 제2 내지 마지막 블록(도시되지 않음)의 더블 SHA256이 블록 헤더 체인(1010)의 마지막 블록 헤더(1008)의 HashPrevBlock과 비교될 때까지 행해진다.
예시적인 환경(1000)은 표 5에 도시된 OP_CHECKCHAINVERIFY 스크립트가 각각의 블록 쌍에 대하여 표 5에 도시된 스크립트를 반복함으로써 추가적인 블록들에 대하여 일반화될 수 있음을 설명한다. 본 명세서에서는 이러한 스크립트를 OP_CHECKBLOCKCHAINVERIFY라고 부른다.
일 실시예로서, OP_CHECKBLOCKCHAINVERIFY 스크립트는 블록 헤더 체인 내의 블록 헤더의 수 및 블록 헤더 체인의 블록 헤더들을 입력 파라미터로서 취해서, OP_CHECKCHAINVERIFY를 반복적으로 수행할 수 있다. 표 6은 이러한 스크립트가 어떻게 6개의 블록 헤더로 이루어진 체인을 검증하는 데 사용될 수 있는지에 대한 실시예를 도시한다.
표 6:
표 7은 많은 수의 블록들에 대한 OP_CHECKCHAINVERIFY의 연산들을 반복하는 OP_CHECKBLOCKCHAINVERIFY의 구현의 실시예를 도시한다. 표 7에 도시되는 OP_CHECKBLOCKCHAINVERIFY의 예시적인 구현예에 있어서, 블록 헤더를 통해 <d-1> 루프(예컨대, <d> 블록 헤더에 대한 <d-1> 루프)의 값의 범위를 포함하도록 반복되는 섹션은 순서를 보존 및 유지하기 위해 alt 스택(alt stack)을 사용해서 각각의 블록 헤더 쌍에 대한 OP_CHECKCHAINVERIFY 연산을 수행한다.
표 7:
도 11은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 데이터가 블록 헤더 체인인지를 검증하기 위한 예시적인 프로세스(1100)를 흐름도 형태로 도시한다. 프로세스(1100)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(1100)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 11과 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 데이터가 블록 헤더 체인인지를 검증하기 위한 예시적인 프로세스(1100)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(1100)의 단계(1102)에서, 시스템은 순서화된 데이터 세트, 즉 <Data 1> 내지 <Data n>을 수신한다. 예시적인 프로세스(1100)의 단계(1104)에서, 시스템은 도 10과 관련하여 전술한 바와 같이, 순서화된 데이터 세트에 대한 OP_CHECKBLOCKCHAINVERIFY 스크립트를 시작한다.
예시적인 프로세스(1100)의 단계(1106)에서, 시스템은 순서화된 데이터 세트의 순서에 적어도 부분적으로 기초하여 순서화된 데이터 세트로부터 제1 데이터 항목(예컨대, <Data 1>)을 선택한다. 예시적인 프로세스(1100)의 단계(1108)에서, 시스템은 순서화된 데이터 세트의 순서에 적어도 부분적으로 기초하여 순서화된 데이터 세트로부터 제2 데이터 항목(예컨대, <Data 2>)을 선택한다. 일 실시형태에 있어서, 시스템은, 예를 들어, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트를 사용해서 제1 데이터 항목 및 제2 데이터 항목이 유효한 블록 헤더인지를 검증한다.
예시적인 프로세스(1100)의 단계(1110)에서, 시스템은, 표 5에 도시되고 도 8 및 도 9와 관련하여 설명된 바와 같이 제1 데이터 항목 및 제2 데이터 항목에 대한 OP_CHECKCHAINVERIFY를 수행함으로써 제1 데이터 항목이 제2 데이터 항목의 이전의 블록인지를 검증한다.
예시적인 프로세스(1100)의 단계(1112)에서, 제1 데이터 항목 및 제2 데이터 항목에 대한 OP_CHECKCHAINVERIFY 스크립트가 통과했는지의 여부(즉, 제1 데이터 항목이 제2 데이터 항목 내의 블록 헤더의 이전의 블록 헤더인지의 여부)가 결정된다.
예시적인 프로세스(1100)의 단계(1112)에서, 제1 데이터 항목 및 제2 데이터 항목에 대한 OP_CHECKCHAINVERIFY 스크립트가 통과하지 못한 것으로 결정되면, 제1 데이터 항목은 제2 데이터 항목 내의 블록 헤더의 이전의 블록 헤더가 아니고, 예시적인 프로세스(1100)의 단계(1116)에서, 순서화된 데이터 세트는 유효한 블록 헤더 체인이 아니다.
예시적인 프로세스(1100)의 단계(1112)에서, 제1 데이터 항목 및 제2 데이터 항목에 대한 OP_CHECKCHAINVERIFY 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(1100)의 단계(1118)에서, 순서화된 데이터 세트에 데이터가 더 있는지의 여부가 결정된다.
예시적인 프로세스(1100)의 단계(1118)에서, 순서화된 데이터 세트에 데이터가 더 있는 것으로 결정되면, 예시적인 프로세스(1100)의 단계(1120)에서, 제2 데이터 항목이 예시적인 프로세스(1100)에서의 제1 데이터 항목이 되고, 예시적인 프로세스(1100)의 단계(1122)에서, 새로운 제2 데이터 항목이 데이터 순서에 적어도 부분적으로 기초하여 순서화된 데이터 세트로부터 선택되고, 예시적인 프로세스(1100)의 단계(1110)에서, 시스템은 표 5에 도시되고 도 8 및 도 9와 관련하여 설명된 바와 같이 새로운 제1 데이터 항목 및 새로운 제2 데이터 항목에 대한 OP_CHECKCHAINVERIFY를 수행함으로써 새로운 제1 데이터 항목이 새로운 제2 데이터 항목의 이전의 블록인지를 검증한다.
예시적인 프로세스(1100)의 단계(1118)에서, 순서화된 데이터 세트에 데이터가 더 있지 않은 것으로 결정되면, 예시적인 프로세스(1100)의 단계(1124)에서, 순서화된 데이터 세트는 유효한 블록 헤더 체인이다.
도 11에 도시된 예시적인 프로세스(1100)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 12는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 사용 가능한 블록 헤더의 머클 트리를 보여주는 예시적인 환경(1200)을 다이어그램 형태로 도시한다. 머클 트리("이진 해시 트리(binary hash tree)"라고도 함)는 블록에서 트랜잭션 세트를 검증하는 데 사용되는 데이터 구조이다. 머클 트리는 트랜잭션의 암호화 해시를 포함하는 이진 트리이다. 그러나, 데이터를 반복적으로 해싱 및 연결시킴으로써, 머클 트리는 단일의 해시 값(예컨대, 단일의 32 바이트 또는 256 비트 값)으로서 저장될 수 있다.
예시적인 환경(1200)에서, 머클 트리(1204)는, i) 블록의 트랜잭션들 각각의 해시를 연산하고; ii) 한 쌍의 해시를 선택하고 이들을 함께 연결시키고; iii) 연결된 값의 해시를 연산하고; iv) 마지막 해시 값("머클 루트(Merkle root)")이 생성될 때까지 연속적으로 보다 높은 레벨의 트리에서 프로세스를 반복함으로써 생성된다. 이 머클 루트는 "HashMerkleRoot" 값으로서 블록 헤더에 삽입된다.
예를 들어, 트랜잭션(1206)으로부터 시작해서, 해당 트랜잭션의 해시(1208)가 연산된다. 본 명세서에서 사용되는 바와 같이, 트랜잭션(1206)은 TA라고 참조되고, 트랜잭션(1206)의 해시(1208)는 H(TA)라고 참조될 것이다. 유사하게, 트랜잭션(1210)(TB)은 해시(1212)(H(TB))를 갖는다. 해시(1216)를 생성하기 위해, 좌측 값은 해싱되기 전에 우측 값과 연결되고(1214), 그에 따라 해시(1216)는 H(H(TA) + H(TB))이고, 여기서 "+" 연산자는, 이 경우에는, 연결을 나타내도록 오버로드된다(예컨대, H(TA)가 "1234"이고 H(TB)가 "5678"이면, H(TA) + H(TB)는 "12345678"이고, H(H(TA) + H(TB))는 "12345678"의 해시임).
또한, 예시적인 환경(1200)은, 머클 루트와 결합되는 머클 트리에서의 노드 세트인 머클 브랜치를 예시하는 데, 이는 특정 리프 노드(즉, 특정 트랜잭션)에 대한 데이터가 머클 트리에 있는지를 검증하는 데 사용될 수 있다. 머클 루트 및 머클 브랜치가 주어지면, 머클 트리 내의 주어진 트랜잭션(예컨대, 트랜잭션(1218))의 존재는 다음과 같이 검증될 수 있다. 먼저, 트랜잭션의 해시(1220)가 연산된다. 이후, 머클 트리의 다음 레벨에서의 해시(1224)가 연산된다. 그러나, 전술한 바와 같이, 머클 트리의 다음 레벨에서의 해시(1224)는 다른 트랜잭션(예컨대, 머클 트리에서 트랜잭션(1218)에 동반하는 트랜잭션)의 해시(1222)를 필요로 한다. 이 해시(1222)는 머클 브랜치의 제1 노드이다.
해시(1224)가 주어지면, 머클 트리의 다음 레벨에서의 해시(1226)가 연산된다. 이 연산은 머클 트리의 다른 트랜잭션(예컨대, 다른 브랜치)의 해시(1216)를 필요로 한다. 이 해시(1216)는 머클 브랜치의 제2 노드이다. 고려될 수 있는 바와 같이, 머클 트리의 각각의 레벨에서, 머클 브랜치는 해당 트리의 "다른" 브랜치에서의 트랜잭션 세트의 해시를 필요로 한다. 따라서, 해시(1230)의 좌측 브랜치가 트랜잭션(1218)(설명한 대로 연산될 수 있음)을 포함하는 브랜치라고 가정하면, 해시(1230)를 연산하기 위해, 머클 브랜치의 다른 노드인 우측 브랜치의 해시(1228)가 필요해진다. 마지막으로, 머클 루트를 연산하기 위해, 머클 트리의 우측 전체의 해시(1232)가 필요해진다. 트랜잭션(1218)이 머클 트리(1204)에 있는지를 검증하는 데 사용될 수 있는 머클 브랜치는 해시(1230), 해시(1228), 해시(1216), 및 해시(1222)이다. 트리가 깊이 4를 갖기 때문에, 머클 브랜치에는 4개의 노드가 있다. 머클 트리의 깊이는 블록의 트랜잭션의 수에 의존하고 트랜잭션의 수의 log2이라는 점(즉, 512 트랜잭션의 경우, 트리는 9의 깊이를 갖고 노드를 검증하기 위한 머클 브랜치는 9개의 노드를 갖고, 1024 트랜잭션의 경우, 트리는 10의 깊이를 갖고 노드를 검증하기 위한 머클 브랜치는 10개의 노드를 갖고, 2048 트랜잭션의 경우, 트리는 11의 깊이를 갖고 노드를 검증하기 위한 머클 브랜치는 11개의 노드를 갖는 등임)에 유의해야 한다. 예를 들어, 비트코인 블록에서 블록 당 평균 트랜잭션의 수가 약 2000개이면, 일반적인 블록은 깊이 11의 머클 트리를 갖게 될 것이다.
도 13은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 대하여 트랜잭션이 블록 헤더에 포함되는 것으로 검증되는 예시적인 환경(1300)을 다이어그램 형태로 도시한다. 본 명세서에서 설명한 바와 같이, 블록 헤더는 블록에 관한 데이터를 포함하는 블록체인의 블록의 섹션이다. 블록 헤더의 한 부분은 블록의 트랜잭션을 검증하는 데 사용할 수 있는 머클 트리의 머클 루트("HashMerkleRoot")이다. 블록 헤더가, 트랜?션에 대한 머클 브랜치 및 트랜잭션과 함께, 잠금 스크립트에 입력으로서 제공되면(예컨대, 잠금 해제 스크립트로서 제공됨), 블록 헤더의 HashMerkleRoot가 머클 브랜치 및 트랜잭션으로부터 계산되는 계산된 머클 루트와 동일하다는 제약을 인코딩함으로써, 블록 헤더의 HashMerkleRoot가 계산된 머클 루트와 동일하지 않을 경우, 블록 헤더, 머클 브랜치, 및 트랜잭션은 유효한 잠금 해제 스크립트가 아닐 것이다.
단계(1304)에서, 제1 블록 헤더(1302)는 잠금 해제 스크립트에 대한 데이터(<Data 1>로 표시됨)로서 제공된다. 단계(1306)에서, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트와 같은 스크립트는 <Data 1>이 블록 헤더인지를 검증하는 데 사용된다. 단계(1308)에서, HashMerkleRoot는 유효한 블록 헤더로부터 추출된다.
단계(1312)에서, 머클 브랜치(1310)는 잠금 해제 스크립트에 대한 데이터(<Data 2>로 표시됨)로서 제공된다. 본 명세서에 도시되어 있지 않지만, 대략 10개, 11개, 또는 12개의 노드일 수 있는 머클 브랜치(1310)는 본 명세서에서 설명한 바와 같이 특정 노드가 연결 동작에 대한 좌측 입력인지 또는 연결 동작에 대한 우측 입력인지의 여부를 나타내는 인코딩된 포맷으로 제공된다.
표 8은 OP_CALCMERKLEROOT의 예시적인 구현예를 도시하고, 여기서 머클 브랜치(1310)는 쌍들의 집합 <hash1>, <x1>, <hash2>, <x2>, ..., <hashd>, <xd> 및 값 <d>를 포함하는 인코딩된 포맷으로 제공되고, <d>는 쌍들의 집합에 얼마나 많은 쌍이 있는지를 나타내고, 각각의 <hashi>는 머클 트리로부터의 값의 해시이고, 각각의 <xi>는 좌측 연결인지 또는 우측 연결인지의 여부를 나타내는 값(예컨대, 0 또는 1)이다. 표 8에 도시된 OP_CALCMERKLEROOT의 예시적인 구현예에 있어서, <xi>에서 값 1은 좌측 연결을 나타내고 <xi>에서 값 0은 우측 연결을 나타낸다.
표 8:
단계(1316)에서, 트랜잭션(1314)은 잠금 해제 스크립트에 대한 데이터(<Data 3>으로 표시됨)로서 제공된다. 단계(1318)에서, 본 명세서에서는 도시되지 않은 OP_CALCMERKLEROOT 스크립트를 사용해서 머클 루트 <Data2> 및 트랜잭션 <Data 3>으로부터 머클 루트가 계산된다.
단계(1320)에서, 스크립트는 <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>에 대하여 수행되는 OP_CALCMERKLEROOT 스크립트로부터 계산된 머클 루트와 동일한지를 검증하도록 실행된다. <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>으로부터 계산된 머클 루트와 동일한지를 검증하는 스크립트의 실시예는 표 9에 도시된다. 표 9에 도시된 스크립트는 블록 헤더의 블록 <Data 1>이 <Data 2>의 머클 브랜치를 사용해서 <Data 3>의 트랜잭션을 포함하는지를 검증하기 위한 OP_CHECKBLOCKTXVERIFY 스크립트의 실시예이다. 고려될 수 있는 바와 같이, OP_CHECKBLOCKTXVERIFY 스크립트의 다른 구현예들이 구현될 수 있으며 본 개시물의 범위 내에 있는 것으로 간주될 수 있다. 표 9에 도시된 OP_CHECKBLOCKTXVERIFY 스크립트에서, 설명의 편의상 OP_CHECKBLOCKVERIFY 연산은 생략된다.
표 9:
도 14는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 트랜잭션이 블록 헤더에 포함되는지를 검증하기 위한 예시적인 프로세스(1400)를 흐름도 형태로 도시한다. 프로세스(1400)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(1400)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 14와 관련하여 설명되는 스크립트 기반 블록체인 상호작용에 트랜잭션이 포함되는지를 검증하기 위한 예시적인 프로세스(1400)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(1400)의 단계(1402)에서, 시스템은 도 13과 관련하여 전술한 바와 같이 <Data 1>, <Data 2>, 및 <Data 3>을 수신한다. 예시적인 프로세스(1400)의 단계(1404)에서, 시스템은 마찬가지로 도 13과 관련하여 전술한 바와 같이 <Data 1>, <Data 2>, 및 <Data 3>에 대한 OP_CHECKBLOCKTXVERIFY 스크립트의 실행을 시작한다.
예시적인 프로세스(1400)의 단계(1406)에서, 시스템은, 예를 들어, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트를 사용해서 <Data 1>이 유효한 블록 헤더인지를 검증한다.
예시적인 프로세스(1400)의 단계(1408)에서, <Data 1>에 대한 OP_CHECKBLOCKVERIFY 스크립트가 통과하는지의 여부가 결정된다. 예시적인 프로세스(1400)의 단계(1408)에서, <Data 1>에 대한 OP_CHECKBLOCKVERIFY 스크립트가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(1400)의 단계(1410)에서, <Data 1>이 유효한 블록 헤더가 아니고, 예시적인 프로세스(1400)의 단계(1412)에서, <Data 3>의 트랜잭션이 <Data 1>에서의 블록 헤더를 갖는 블록 내에 있는 것으로 검증되지 않는다.
예시적인 프로세스(1400)의 단계(1408)에서, <Data 1>에 대한 OP_CHECKBLOCKVERIFY 스크립트가 통과한 것으로 결정되면, 예시적인 프로세스(1400)의 단계(1414)에서, 시스템은 도 13과 관련하여 전술한 바와 같이 <Data 1>로부터 HashMerkleRoot 필드를 추출한다. 예시적인 프로세스(1400)의 단계(1416)에서, 시스템은 마찬가지로 도 13과 관련하여 전술한 바와 같이 <Data 2> 및 <Data 3>으로부터 머클 루트를 계산한다.
예시적인 프로세스(1400)의 단계(1418)에서, 시스템은 <Data 1>로부터 추출된 HashMerkleRoot가 마찬가지로 도 13과 관련하여 전술한 바와 같이 <Data 2> 및 <Data 3>으로부터 계산된 머클 루트와 동일한지를 검증한다.
예시적인 프로세스(1400)의 단계(1420)에서, <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>으로부터 계산된 머클 루트와 동일한지의 여부가 결정된다. 예시적인 프로세스(1400)의 단계(1420)에서, <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>으로부터 계산된 머클 루트와 동일하지 않은 것으로 결정되면, 예시적인 프로세스(1400)의 단계(1412)에서, <Data 3>의 트랜잭션이 <Data 1>에서의 블록 헤더를 갖는 블록 내에 있는 것으로 검증되지 않는다.
예시적인 프로세스(1400)의 단계(1420)에서, <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>으로부터 계산된 머클 루트와 동일한 것으로 결정되면, 예시적인 프로세스(1400)의 단계(1422)에서, <Data 3>의 트랜잭션이 <Data 1>에서의 블록 헤더를 갖는 블록 내에 있는 것으로 검증된다.
도 14에 도시된 예시적인 프로세스(1400)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 15는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용과 연계되는 블록체인에 액세스하는 것에 관한 문제점들이 어떻게 본 명세서에서 설명되는 방법을 사용해서 해결될 수 있는지를 보여주는 예시적인 환경(1500)을 다이어그램 형태로 도시한다. 예시적인 환경(1500)에서, 트랜잭션(1502)(예컨대, 도 3과 관련하여 설명되는 이전 트랜잭션(302)과 같은 이전 트랜잭션 또는 잠금 해제 트랜잭션(304))에서의 잠금 스크립트(1506)는 도 6 내지 도 14와 관련하여 설명된 방법들 중 하나 이상의 방법을 사용해서 블록체인(1504)에 질의할 수 있다. 이는 도 4와 관련하여 설명되는 예시적인 문제점(400)과는 대조적이다. 유사하게, 예시적인 환경(1500)에서, 트랜잭션(1502)에서의 잠금 스크립트(1506)는 도 6 내지 도 14와 관련하여 설명되는 방법들 중 하나 이상의 방법을 사용해서 블록체인(1504)의 블록(1508)에 질의할 수 있다. 이는 도 5와 관련하여 설명되는 예시적인 문제점(500)과는 대조적이다. 실시형태에 있어서, 블록(1508)의 트랜잭션(1510)은 트랜잭션(1502)(예컨대, 트랜잭션 Txi)과 동일하다.
도 16은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용과 연계되는 블록체인의 상태들을 보여주는 예시적인 환경(1600)을 다이어그램 형태로 도시한다. 블록체인은 블록체인이 시작된 이래 모든 블록을 포함한다. 예시적인 환경(1600)에서, 블록체인(1602)의 제1 블록(1604)의 블록 헤더는 최저 nTime(예컨대, 가장 빠른, 또는 최초)에서의 블록체인(1602)의 상태(1606)의 기록이다. 본 명세서에서 설명되는 방법을 사용해서, 트랜잭션의 잠금 스크립트는 최저 nTime에 블록체인(1602)에 질의할 수 있고, 제1 블록(1604)에 질의할 수 있고, 그에 따라, 블록체인(1602)의 상태(1606)에 질의할 수 있다. 본 명세서에서 설명되는 방법을 사용해서, 트랜잭션의 잠금 스크립트는 블록의 nTime에 블록체인(1602)에 질의할 수 있고, 블록체인(1602)의 블록(1608)(트랜잭션을 포함하는 블록일 수 있음)에 질의할 수 있고, 그에 따라, 블록체인(1602)의 상태(1610)에 질의할 수 있다. 본 명세서에서 설명되는 방법을 사용해서, 트랜잭션의 잠금 스크립트는 최신 블록의 nTime에 블록체인(1602)에 질의할 수 있고, 블록체인(1602)의 최신 블록(1612)에 질의할 수 있고, 그에 따라, 블록체인(1602)의 상태(1614)에 질의할 수 있다(예컨대, 블록체인의 현재 상태에 질의할 수 있음). 이러한 상태 질의의 사용은 도 17 및 도 18에서 상세하게 설명된다.
도 17은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 블록체인의 상태가 확인되는 예시적인 환경(1700)을 다이어그램 형태로 도시한다. 본 명세서에서 설명한 바와 같이, 블록 헤더는 블록에 관한 데이터를 포함하는 블록체인의 블록의 섹션이다. 블록 헤더의 한 부분은 블록의 트랜잭션을 검증하는 데 사용할 수 있는 머클 트리의 머클 루트("HashMerkleRoot")이다. 블록 헤더가, 트랜?션에 대한 머클 브랜치 및 트랜잭션과 함께, 잠금 스크립트에 입력으로서 제공되면(예컨대, 잠금 해제 스크립트로서 제공됨), 블록 헤더의 HashMerkleRoot가 머클 브랜치 및 트랜잭션으로부터 계산되는 계산된 머클 루트와 동일하다는 제약을 인코딩함으로써, 블록 헤더의 HashMerkleRoot가 계산된 머클 루트와 동일하지 않을 경우, 블록 헤더, 머클 브랜치, 및 트랜잭션은 유효한 잠금 해제 스크립트가 아닐 것이다.
일 실시형태에 있어서, 블록체인의 상태를 검사하는 것 및/또는 블록체인의 상태를 확인하는 것은, 블록체인의 하나 이상의 블록의 블록 헤더를 검사하는 것, 블록체인의 하나 이상의 블록들간의 관계를 검사하는 것, 블록체인의 블록들의 수를 검사하는 것, 블록체인의 단일의 블록에서 하나 이상의 트랜잭션을 검사하는 것, 또는 블록체인의 다수의 블록에서 복수의 트랜잭션을 검사하는 것을 포함하여, 블록체인의 다른 양태들을 검사하는 것을 포함하지만, 이에 한정되는 것은 아니다.
단계(1708)에서, 블록 헤더(1706)는 잠금 해제 스크립트에 대한 데이터(<Data 1>로 표시됨)로서 제공된다. 일 실시형태에 있어서, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트와 같은 스크립트는 <Data 1>이 블록 헤더인지를 검증하는 데 사용된다. 단계(1712)에서, 머클 브랜치(1710)는 도 13 및 도 14와 관련하여 전술한 바와 같이 잠금 해제 스크립트에 대한 데이터(<Data 2>로 표시됨)로서 제공된다. 단계(1716)에서, 트랜잭션(1714)은 잠금 해제 스크립트에 대한 데이터(<Data 3>으로 표시됨)로서 제공된다. 일 실시형태에 있어서, 도 13 및 도 14와 관련하여 전술한 바와 같이 OP_CALCMERKLEROOT 스크립트를 사용해서 머클 루트 <Data 2> 및 트랜잭션 <Data 3>으로부터 머클 루트가 계산된다.
단계(1718)에서, OP_CHECKBLOCKTXVERIFY 스크립트는 상기 표 9에 도시된 바와 같이 <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>에 대하여 수행되는 OP_CALCMERKLEROOT 스크립트로부터 계산된 머클 루트와 동일한지를 검증하도록 실행된다.
단계(1718)는 예시적인 환경(1700)과 같은 환경에서 실행될 수 있는 타입의 스크립트를 설명하고, 여기서 블록체인의 상태는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 확인된다는 점에 유의해야 한다. 단계(1718)는 블록체인으로부터의 데이터 세트가 연산 부호를 사용해서 트랜잭션에 인젝션되게 하는 제1 제약 세트를 설명한다. 일 실시형태에 있어서, OP_CHECKBLOCKVERIFY는 본 명세서에서 설명되는 바와 같이 데이터 세트가 블록 헤더를 포함하는지를 검증하는 데 사용된다. 일 실시형태에 있어서, OP_CHECKBLOCKTXVERIFY(즉, 단계(1718)에서 설명되는 바와 같음)는 데이터 세트가 트랜잭션을 포함하고 트랜잭션이 블록 헤더에 포함되는지를 검증하는 데 사용된다. 고려될 수 있는 바와 같이, 본 명세서에서 설명되는 제1 제약 세트에서의 제약의 실시예들은 예시적인 실시예들이며, 다른 타입의 제1 제약 세트의 제약들이 본 개시물의 범위 내에 있는 것으로 간주될 수 있다. 제2 제약 세트는 아래에서 설명되는 단계(1722)에 대하여 설명된다.
예시적인 환경(1700)에서, 단계(1704)에 있어서, 스크립트는 전술한 바와 같이 OP_CHECKBLOCKCHAINVERIFY와 같은 검증 스크립트를 사용함으로써 블록 헤더 <Data 1>이 특히 공공 블록체인의 블록을 모방하기 위해 생성된 블록이 아니라 공공 블록체인의 일부분인 블록에 대한 블록 헤더인지를 검증하는 데 사용된다. 일 실시형태에 있어서, 블록 헤더 <Data 1>이 공공 블록체인의 일부분인 블록에 대한 블록 헤더인지를 검증하는 데 사용되는 스크립트에는 전술한 바와 같이 블록체인(1702)이 제공될 수 있거나 또는 전체 또는 부분 블록 헤더 체인이 제공될 수 있다.
예시적인 환경(1700)에서, 단계(1722)에 있어서, 스크립트는 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된다. 단계(1720)에서, 트랜잭션(1714)은 단계(1722)에서의 잠금 해제 스크립트에 대한 데이터(<Data 3>으로 표시됨)로서 제공된다. 일부 실시형태에 있어서, 단계(1720)에서의 트랜잭션 <Data 3>은, 예를 들어, 단계(1718)에서의 OP_CHECKBLOCKTXVERIFY 스크립트가 단계(1716)에서의 트랜잭션 <Data 3>을 소비할 경우, 단계(1716)에서의 트랜잭션 <Data 3>의 복사본이라는 점에 유의해야 한다.
전술한 단계(1718)에 의하면, 단계(1722)는 예시적인 환경(1700)과 같은 환경에서 실행될 수 있는 타입의 스크립트의 실시예를 설명하고, 여기서 블록체인의 상태는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 확인된다는 점에 유의해야 한다. 단계(1722)는, 단계(1718)와 관련하여 전술한 바와 같이, 연산 부호를 사용해서 트랜잭션에 인젝션된 블록체인으로부터의 데이터 세트와 연계된 제2 제약 세트를 예시한다. 일 실시형태에 있어서, 제2 제약 세트는 데이터 세트의 데이터 항목의 값에 대한 제약을 포함한다(즉, 데이터 세트의 데이터 항목이, 예를 들어, 해당 값보다 작거나, 같거나, 또는 크다는 제약을 포함함). 일 실시형태에 있어서, 제2 제약 세트는 데이터로부터 결정된 제약(예컨대, 블록 헤더와 연계되는 블록 내의 트랜잭션들의 수가 100보다 많으면, 동작 "A"를 취하고, 그렇지 않으면, 동작 "B"를 취한다는 제약)을 포함한다. 고려될 수 있는 바와 같이, 본 명세서에서 설명되는 제2 제약 세트에서의 제약의 실시예들은 예시적인 실시예들이며, 다른 타입의 제2 제약 세트의 제약들이 본 개시물의 범위 내에 있는 것으로 간주될 수 있다.
단계(1704)에서 블록 헤더 <Data 1>이 특히 공공 블록체인의 블록을 모방하기 위해 생성된 블록이 아니라 공공 블록체인의 일부분인 블록에 대한 블록 헤더인지를 검증하는 데 사용된 스크립트가 통과하면, 단계(1718)에서 OP_CHECKBLOCKTXVERIFY 스크립트는 <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>에 대하여 수행되는 OP_CALCMERKLEROOT 스크립트로부터 계산된 머클 루트와 동일한지를 검증하고, 단계(1722)에서 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트가 통과하고 나서, 단계(1724)에서, 잠금 스크립트가 성공한다. 일 실시형태에 있어서, 단계(1704)는 연산 부호를 사용해서 트랜잭션에 인젝션된 블록체인으로부터의 데이터 세트와 연계된 제3 제약 세트(예컨대, 블록이 공공 블록체인의 블록이라는 제약)를 예시한다.
전술한 바와 같이, 단계(1722)에서, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트는 연산 부호를 사용해서 트랜잭션에 인젝션된 블록체인으로부터의 데이터 세트와 연계된 제2 제약 세트의 제약들을 포함한다는 점에 유의해야 한다. 이렇게, 일 실시형태에 있어서, 제2 제약 세트는, 한정되는 것은 아니지만, 양수인, 양도인, 트랜잭션의 수량, 또는 트랜잭션의 다른 양태들을 포함하여, 트랜잭션의 다수의 양태들에 대한 유효성 검증을 포함한다. 부가적으로, 단계(1722)에서, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트는 블록체인의 양태들, 블록 헤더 체인의 양태들, 블록의 양태들, 또는 블록체인 환경의 다른 양태들을 포함할 수 있다는 점에 유의해야 한다. 예를 들어, 단계(1722)에서, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용되고 제2 제약 세트의 제약들을 포함하는 스크립트는 블록의 nTime을 유효성 검증하거나, 블록 내의 다수의 트랜잭션을 유효성 검증하거나, 2개의 블록간의 경과 시간을 결정하거나, 최소 블록 높이를 결정하거나, 또는 블록체인 환경의 이러한 다른 양태들을 결정하기 위한 제약들을 포함할 수 있다. 또한, 단계(1722)의 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트의 말미에 "검증(verify)" 연산 부호를 포함하지 않음으로써, 분기 조건(예컨대, 블록에 있는 트랜잭션이 1000개보다 많으면, Alice가 잠금 해제할 수 있고, 블록에 있는 트랜잭션이 1000개보다 많지 않으면, Bob이 잠금 해제할 수 있음)이 도입될 수 있다는 점에 유의해야 한다. 분기 조건의 실시예들은 도 30과 관련하여 아래에서 더 상세하게 설명된다.
단계(1704)와 연계되는 한 가지 문제점은, 블록 헤더 <Data 1>이 특히 공공 블록체인의 블록을 모방하기 위해 생성된 블록이 아니라 공공 블록체인의 일부분인 블록에 대한 블록 헤더인지를 검증하는 데 사용된 스크립트는, 일부 실시형태에 있어서, 특히 공공 블록체인의 블록을 모방하기 위해 블록을 생성하는 것이 계산적으로 상당히 용이할 수 있다는 점이다. 예를 들어, 블록 헤더를 포함하기 위해 잠금 해제 스크립트 내의 데이터를 필요로 하는 표 10의 잠금 스크립트를 고려한다(예컨대, 잠금 해제 스크립트는 블록 헤더 <Data 1>에 그치지 않고 그 이상을 포함할 수 있음).
표 10:
비트코인 구현예에 있어서, 난이도(nBits)가 최소값으로 설정되면, 데이터는 공공 블록체인 내의 블록의 블록 헤더일 수 있지만, 최소 난이도로 블록을 생성하는 데 대량의 연산 능력을 필요로 하지 않기 때문에 전혀 관련없는 블록일 수도 있다. 이러한 실행을 저지하기 위해, 잠금 스크립트 생성자는 잠금 스크립트에 대한 제약을 충분히 어렵게 만들어서, 공공 블록체인을 모방하는 대체 블록체인을 생성하는 데 필요한 연산 능력의 비용이 잠금 해제될 수 있는 것의 가치보다 상당히 커지게 해야 한다. 비트코인에서, 이는 (예컨대, 표 3에 도시되고 도 6 및 도 7과 관련하여 설명되는 스크립트에서) 난이도를 증가시키는 것에 의해 또는 (예컨대, 표 6에 도시되고 도 10 및 도 11과 관련하여 설명되는 스크립트에서) 긴 블록 헤더 체인을 요구하는 것에 의해 달성될 수 있다.
표 11은 단계(1724)에서와 같이 트랜잭션의 다른 양태들을 유효성 검증하는 데(즉, 제2 제약 세트 및/또는 제1 제약 세트의 양태들이 만족되는지의 여부를 결정하는 데) 사용된 스크립트의 실시예를 예시한다. 표 11에 예시된 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 예시적인 스크립트에서, 데이터 <Data 1>은 트랜잭션 <Data 3>을 포함하는 블록 헤더로 제한되며, 해당 트랜잭션은 Bob의 공개 키에 지불된다. "<Script to Check Output of Data 3 is to P2KH of Bob>"은 설명의 편의상 여기서는 생략된다는 점에 유의해야 한다.
표 11:
도 18은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 블록체인의 상태를 확인하기 위한 예시적인 프로세스(1800)를 흐름도 형태로 도시한다. 프로세스(1800)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(1800)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 18과 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 블록체인의 상태를 확인하기 위한 예시적인 프로세스(1800)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(1800)의 단계(1802)에서, 시스템은 도 17과 관련하여 전술한 바와 같이 <Data 1>, <Data 2>, 및 <Data 3>을 수신한다.
예시적인 프로세스(1800)의 단계(1804)에서, 도 17과 관련하여 전술한 바와 같이 OP_CHECKBLOCKCHAINVERIFY를 사용해서 <Data 1>이 공공 블록체인의 블록인지를 검증한다. 전술한 바와 같이, OP_CHECKBLOCKCHAINVERIFY는 데이터 세트에 대한 제약(예컨대, 전술한 제3 제약 세트)이 만족되는지의 여부를 결정하는 데 사용될 수 있는 스크립트의 실시예이다.
예시적인 프로세스(1800)의 단계(1806)에서, <Data 1>이 공공 블록체인의 블록인지의 여부가 결정된다. 예시적인 프로세스(1800)의 단계(1806)에서, <Data 1>이 공공 블록체인의 블록이 아닌 것으로 결정되면, 예시적인 프로세스(1800)의 단계(1808)에서, <Data 3>의 트랜잭션은 <Data 1>의 블록 헤더를 갖는 블록에 있는 것으로 검증되지 않고, 예시적인 프로세스(1800)의 단계(1810)에서 잠금 스크립트가 실패한다.
예시적인 프로세스(1800)의 단계(1806)에서, <Data 1>이 공공 블록체인의 블록인 것으로 결정되면, 예시적인 프로세스(1800)의 단계(1812)에서, 시스템은 표 9에 도시된 실시예와 같이 OP_CHECKBLOCKTXVERIFY 스크립트를 사용해서 <Data 3>의 트랜잭션이 <Data 1>의 블록 헤더를 갖는 블록에 있는지를 검증한다. 전술한 바와 같이, OP_CHECKBLOCKTXVERIFY는 데이터 세트에 대한 제약(예컨대, 전술한 제1 제약 세트)이 만족되는지의 여부를 결정하는 데 사용될 수 있는 스크립트의 실시예이다. 일 실시형태에 있어서, OP_CHECKBLOCKTXVERIFY는 데이터 세트가 트랜잭션을 포함하는지를 검증하고 트랜잭션이 블록 헤더에 의해 식별되는 블록에 포함되는지를 검증하는 데 사용된다. 일 실시형태에 있어서, OP_CHECKBLOCKVERIFY는 데이터 세트가 블록 헤더를 포함하는지를 검증하는 데 사용된다.
예시적인 프로세스(1800)의 단계(1814)에서, OP_CHECKBLOCKTXVERIFY가 통과하는지의 여부가 결정된다. 예시적인 프로세스(1800)의 단계(1814)에서, OP_CHECKBLOCKTXVERIFY가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(1800)의 단계(1816)에서, <Data 3>의 트랜잭션은 <Data 1>의 블록 헤더를 갖는 블록에 없고, 예시적인 프로세스(1800)의 단계(1810)에서, 잠금 스크립트가 실패한다.
예시적인 프로세스(1800)의 단계(1814)에서, OP_CHECKBLOCKTXVERIFY가 통과한 것으로 결정되면, 예시적인 프로세스(1800)의 단계(1818)에서, 시스템은 본 명세서에서 설명되는 바와 같이 트랜잭션의 하나 이상의 다른 양태들을 유효성 검증한다(즉, 데이터 세트와 연계되는 제2 제약 세트의 제약들이 만족되는지를 검증함).
예시적인 프로세스(1800)의 단계(1820)에서, 트랜잭션의 하나 이상의 다른 양태들이 유효성 검증되는지의 여부가 결정된다. 예시적인 프로세스(1800)의 단계(1820)에서, 트랜잭션의 하나 이상의 다른 양태들이 유효성 검증되지 않은 것으로 결정되면, 예시적인 프로세스(1800)의 단계(1810)에서, 잠금 스크립트의 잠금 해제가 실패한다.
예시적인 프로세스(1800)의 단계(1820)에서, 트랜잭션의 하나 이상의 다른 양태들이 유효성 검증된 것으로 결정되면, 예시적인 프로세스(1800)의 단계(1822)에서, 잠금 스크립트의 잠금 해제가 성공한다.
도 18에 도시된 예시적인 프로세스(1800)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 19는 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용에서 잠금 스크립트에 관한 예시적인 문제점(1900)을 다이어그램 형태로 도시한다. 도 19에 도시된 예시적인 문제점(1900)에 있어서, 이전 트랜잭션(1902)의 잠금 스크립트(1906)는 잠금 해제 트랜잭션(1904)의 필드들을 직접 판독할 수 없다.
주지된 바와 같이, 일부 실시형태에 있어서, 이전 트랜잭션(1902)은 블록체인에 포함된 가장 최신의 확인된 트랜잭션이다. 유사하게, 일부 실시형태에 있어서, 잠금 해제 트랜잭션(1904)은 아직 확인되지 않고 아직 블록체인에 포함되지 않은 장래의 트랜잭션이고, 이는 이전 트랜잭션(1902)에 의해 제어되는 디지털 자산의 적어도 일부의 제어를 전송하려는 시도를 나타낸다.
본 명세서에서 주지되는 바와 같이, 일부 실시형태에 있어서, 잠금 스크립트(1906)는 출력을 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 트랜잭션을 저당잡는 스크립트이다. 보다 구체적으로, 잠금 스크립트(1906)를 실행하는 것은, 블록체인 시스템의 유효성 검증 노드에 의한 실행의 결과로서, 실행된 잠금 해제 스크립트로부터 데이터를 수용하고 해당 데이터에 기초하여 특정 연산을 수행하고, 잠금 해제 스크립트의 실행이 잠금 스크립트를 성공적으로 "잠금 해제(unlocked)"(즉, 잠금 스크립트 내의 조건 세트를 충족)했는지의 여부를 표시하는 결과를 반환하도록 구성된다. 일부 실시형태에 있어서, 잠금 스크립트(1906)는 트랜잭션의 유효성 검증이 성공적으로 되도록 (예컨대, 잠금 해제 스크립트를 통해 제공되는 데이터에 의해) 만족되어야 하는 하나 이상의 데이터 제약을 정의한다. 예를 들어, 잠금 스크립트(1906)는 이전 트랜잭션(1902)의 연계된 디지털 자산을 잠금 해제하도록 특정 데이터가 잠금 해제 스크립트에 제공되는 것을 필요로 할 수 있다.
도 20은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 잠금 해제 스크립트에 의한 데이터 액세스를 보여주는 예시적인 환경(2000)을 다이어그램 형태로 도시한다. 도 20은, 이전 트랜잭션(2002)의 잠금 스크립트(2006)와 달리, 본 개시물의 잠금 해제 스크립트(2008)가 일 실시형태에 있어서의 잠금 해제 트랜잭션(2004)의 필드들(예컨대, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트)에 액세스할 수 있다는 것을 도시하는 예시적인 환경(2000)을 묘사한다. 일부 실시형태에 있어서, 이전 트랜잭션(2002)은 도 19의 이전 트랜잭션(1902)과 유사하다. 일부 실시형태에 있어서, 잠금 해제 트랜잭션(2004)은 도 19의 잠금 해제 트랜잭션(1904)과 유사하다. 일부 실시형태에 있어서, 잠금 스크립트(2006)는 도 19의 잠금 스크립트(1906)와 유사한 특징을 갖는다.
일부 실시형태에 있어서, 잠금 해제 스크립트(2008)는 잠금 스크립트에 의해 트랜잭션의 출력에 위치되는 조건 세트를 만족시키려고 시도하는 트랜잭션의 입력에 위치되는 실행 가능 스크립트이다. 잠금 해제 스크립트는 "scriptSig"로도 알려져 있다. 앞서 주지된 바와 같이, 잠금 해제 스크립트(2008)는 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 잠금 스크립트에 입력으로서 제공하도록 설계되어 있고, 그에 따라 잠금 스크립트가 잠금 해제 트랜잭션의 필드들에 액세스하게 된다. 직렬화된 트랜잭션의 내용 및 구성에 관한 추가적인 세부 내용은 아래의 도 21의 설명에서 확인할 수 있다.
도 21은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 서명이 직렬화된 트랜잭션 필드 세트로부터 생성되는 예시적인 환경(2100)을 다이어그램 형태로 도시한다. 도 21에 도시된 바와 같이, 직렬화된 트랜잭션(2110)(즉, 특정 포맷의 일련의 바이트들로 표현되는 트랜잭션)은 트랜잭션의 필드 값 세트를 포함한다. 서명자는, 2112에서, SIGHASH 타입 및 숫자 k를 선택한다. 숫자 k는 일반적으로 개인 키를 마스킹/보호하기 위해 난수 또는 의사 난수이므로, 본 개시물에서는 때때로 "마스크 번호(mask number)"라고 참조되기도 한다. 트랜잭션(2114)의 수정된 복사본은 지정된 SIGHASH 타입(예컨대, 예시적인 환경(2100)에서는 SIGHASH_NONE + ANYONECANPAY임)에 따라 선택된 직렬화된 트랜잭션(2110)의 필드 세트의 실시예이다. 서명자는 트랜잭션(2114)의 수정된 복사본을 해싱하고(예컨대, OP_HASH256을 수행함), 이는 메시지 m(2116)을 초래한다. 이후, 서명자는, 도 3과 함께 전술한 방식에서와 같이, SIGHASH 타입, 메시지 m, 서명자의 개인키(예컨대, a), 및 숫자 k를 사용해서 서명을 생성한다.
표 12는 OP_CHECKSIG 연산 부호를 사용해서 엔티티 A의 공개 키에 대하여 잠금 해제 스크립트에 지정된 엔티티 A의 상정된 서명이 검사되게 하는 일반적인 잠금 해제 및 잠금 해제 스크립트의 실시예를 예시한다.
표 12:
따라서, 도 21의 서명 생성을 이해하면, 표 13은 예시적인 환경(2100)에 도시되는 절차의 일부가 잠금 해제 스크립트 내로 이동될 경우의 잠금 해제 및 잠금 스크립트의 실시예를 예시한다.
표 13:
잠금 해제 스크립트는 표 14에 도시된 바와 같이 잠금 해제 스크립트에서 메시지 m을 계산하는 단계를 포함하도록 더 수정될 수 있다.
표 14:
그러나, SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제외하고, 절차의 다른 연산들은 표 15에 도시된 바와 같이 잠금 스크립트로 이동될 수 있다는 점에 유의한다.
표 15:
따라서, 잠금 스크립트 내에서 "OP_HASH256 <a> <k> OP_GENSIG"의 연산을 이동시킴으로써, 잠금 해제 스크립트에는 SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트가 유효해지도록 포함된다.
이러한 방식으로, 직렬화된 이전 트랜잭션은 잠금 스크립트에 인젝션되게 된다. 표 16은 잠금 스크립트 및 잠금 해제 스크립트가 어떻게 예시적인 환경(2100)의 각각의 단계 절차를 수행하고 트랜잭션을 유효성 검증하는지를 예시한다.
표 16:
그러나, SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제공하는 임의의 엔티티가 트랜잭션 출력을 수신할 수 있다는 점에 유의한다. 이는 본 명세서에서 설명되는 방법들의 유용한 특징이 될 수 있다. 예를 들어, 스마트 계약의 구현예는 계약이 블록체인 트랜잭션으로서 구현될 수 있게 하고, 이는 계약의 생성자 및/또는 계약에 대한 임의의 다른 파티들이, 해당 파티들이 서로를 신뢰할 것을 요구하지 않고 또한 해당 파티들이 계약을 관리 또는 모니터링할 것을 요구하지 않고 계약을 이행하는 것을 자유롭게 보장한다. 일 실시형태에 있어서, 계약과의 일부 상호작용이 요구된다. 일 실시형태에 있어서, 계약은 계약과의 상호작용 없이 자동으로 실행된다.
SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제공하는 임의의 엔티티가 전술한 바와 같이 트랜잭션 출력을 수신할 수 있기 때문에, 스마트 계약은 자동으로(또는 부분적으로 자동으로) 실행될 수 있다. 일 실시형태에 있어서, 이 속성은 SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제공하는 일부 엔티티만이 트랜잭션 출력을 수신할 수 있도록 잠금 해제 트랜잭션에 대한 추가적인 제약을 가함으로써 제한될 수 있다. 부가적으로, 스마트 계약은 SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제공하는 엔티티가 특정 방식으로만 트랜잭션 출력을 취득할 수 있도록 코딩될 수 있다.
일 실시형태에 있어서, 스마트 계약은 다른 컴퓨터 시스템이 트랜잭션을 유효성 검증하게 하도록 컴퓨터 시스템에 의해 검출 가능한 신호로서 기능하는 값을 포함한다. 즉, 스마트 계약과 연계되는 트랜잭션의 유효성 검증의 실행 여부에 따라 취득 가능한 디지털 자산의 적어도 일부를 제공함으로써, 유효성 검증 엔티티가 트랜잭션을 유효성 검증하게 될 수 있다. 예를 들어, 1.0의 디지털 자산과 연계되는 스마트 계약은 0.9의 디지털 자산이 지정된 수신자에게 가고 나머지 0.1의 디지털 자산이 유효성 검증 엔티티에 의해 청구될 수 있도록 생성될 수 있다. 이러한 방식으로, 스마트 계약을 실행한다. 고려될 수 있는 바와 같이, 트랜잭션 출력을 취득하고 및/또는 스마트 계약을 실행하기 위해 엔티티에게 영향을 미치는 다른 방법들은 본 개시물의 범위 내에 있는 것으로 간주될 수 있다.
본 명세서에서 사용되는 바와 같이, 스마트 계약은 자동 실행 속성 및 자력 집행 속성을 모두 갖는다. 스마트 계약의 자동 실행 속성은 2가지 요소의 조합이다. 스마트 계약의 자동 실행 속성의 제1 요소는 임의의 엔티티가 잠금 스크립트를 유효하게 잠금 해제할 수 있다는 것이다. 임의의 엔티티가 잠금 스크립트를 유효하게 잠금 해제할 수 있을 경우, 임의의 엔티티는 UTXO 및/또는 잠금 스크립트를 참조하는 유효한 잠금 해제 트랜잭션을 생성할 수 있다. 이는 그들이 일부 비밀(예컨대, 비밀 키 또는 특정 해시를 생성하게 될 값)을 알고 있다는 것을 엔티티가 입증할 것을 요구하는 제약이 없기 때문이다. 그러나, 스마트 계약의 자동 실행 속성의 이 제1 요소는 본 명세서에서 설명되는 바와 같이 제한된다는 점에 유의해야 한다. 스마트 계약의 자동 실행 속성의 제2 요소는 다른 파티들이 잠금 스크립트(예컨대, 본 명세서에서 설명되는 바와 같이, 비트코인 보상을 가짐)를 잠금 해제하도록 유도하는 인센티브가 있을 수 있다는 점에서 스마트 계약이 자동적이라는 것이다. 스마트 계약의 자력 집행 속성도 마찬가지로 2가지 요소의 조합이다. 스마트 계약의 자력 집행 속성의 제1 요소는, 직렬화된 잠금 해제 트랜잭션 필드 세트에 제약들이 위치될 수 있고, 이들 제약이 잠금 해제 트랜잭션에 반영된다는 것이다. 스마트 계약의 자력 집행 속성의 제2 요소는 잠금 스크립트 내의 제약들이 블록체인 네트워크에 의해 집행된다는 것이다.
도 22는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 직렬화된 잠금 해제 트랜잭션 필드 세트의 인젝션을 야기하기 위한 예시적인 프로세스(2200)를 흐름도 형태로 도시한다. 예시적인 프로세스(2200)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(2200)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 22와 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 직렬화된 잠금 해제 트랜잭션 필드 세트의 인젝션을 야기하기 위한 예시적인 프로세스(2200)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(2200)는 일련의 동작을 포함하고, 예시적인 프로세스(2200)를 수행하는 시스템은 도 21에서 설명되는 방식으로 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트 및 잠금 스크립트를 함께 실행하고, 결과적으로, SIGHASH 타입 및 트랜잭션 필드 값 세트를 취득하고, 서명을 생성하고, 서명을 유효성 검증한다.
예시적인 프로세스(2200)의 단계(2202)에서, 시스템은 디지털 자산의 제어의 전송을 추구하는 엔티티로부터 유효성 검증되지 않은 트랜잭션을 취득한다. 유효성 검증되지 않은 트랜잭션은 잠금 스크립트 및 잠금 해제 스크립트를 포함한다. 잠금 스크립트를 실행하기 전에 시스템에 의해 잠금 해제 스크립트가 실행된다. 잠금 해제 스크립트는 상기 표 15 및 표 16에 도시된 잠금 해제 스크립트와 유사할 수 있으며, SIGHASH 타입 및 유효성 검증되지 않은 트랜잭션의 직렬화된 필드 세트를 표시한다. 예시적인 프로세스(2200)의 단계(2204)에서, 예시적인 프로세스(2200)를 수행하는 시스템은 표시된 SIGHASH 타입을 취득하고, 예시적인 프로세스(2200)의 단계(2206)에서, 유효성 검증되지 않은 트랜잭션의 직렬화된 트랜잭션 필드 값 세트를 취득한다. 일 실시형태에 있어서, 잠금 해제 스크립트의 실행의 성공적인 완료시에, 시스템은 잠금 해제 스크립트의 실행이 완료될 때 메인 스택의 상태(및 일부 구현예에 있어서는 대체 스택의 상태)를 사용해서 잠금 스크립트의 실행을 시작한다. 잠금 스크립트는 상기 표 15 및 표 16에 도시된 잠금 스크립트와 유사할 수 있다.
예시적인 프로세스(2200)의 단계(2208)에서, 잠금 스크립트에 따라, 시스템은 적어도 SIGHASH 타입, 및 잠금 해제 스크립트 및 공개-개인 키 쌍과 연계되는 개인 키의 실행의 결과로서 메인 스택에 위치되는 트랜잭션 필드 값 세트를 사용해서 서명을 생성한다. 예시적인 프로세스(2200)의 단계(2210)에서, 잠금 스크립트에 따라, 시스템은 키 쌍의 공개 키에 대하여 서명을 성공적으로 유효성 검증한다. 이러한 방식으로, 트랜잭션 필드 세트는 잠금 해제 스크립트에 의해 잠금 스크립트에 인젝션되게 된다.
도 22에 도시된 예시적인 프로세스(2200)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 23은 일 실시형태에 의해 해결되는 스크립트 기반 블록체인 상호작용에서 잠금 스크립트에 관한 예시적인 문제점(2300)을 다이어그램 형태로 도시한다. 도 23에 도시되는 예시적인 문제점(2300)에서, 잠금 스크립트(2306)는 그것이 내재된 트랜잭션의 입력을 판독할 수 없고, 결과적으로, 이전 트랜잭션의 필드를 직접 판독할 수 없다.
일부 실시형태에 있어서, 트랜잭션(2304)은 이전 트랜잭션에 의해 제어되는 디지털 자산의 적어도 일부의 제어를 전송하려는 시도를 나타내는, 본 명세서에서 설명되는 잠금 해제 트랜잭션과 유사하다. 앞서 주지된 바와 같이, 일부 실시형태에 있어서, 잠금 스크립트(2306)는 출력을 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 트랜잭션을 저당잡는, 본 명세서에서 설명되는 잠금 스크립트와 유사한, 스크립트이다.
도 24는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 이전의 직렬화된 트랜잭션의 인젝션이 야기된 예시적인 환경(2400)을 다이어그램 형태로 도시한다. 도 24에 도시되는 예시적인 환경(2400)은 이전의 트랜잭션(2402A-2402B)으로부터의 출력을 이용하는 잠금 해제 스크립트(2408)를 갖는 잠금 해제 트랜잭션(2404)을 묘사한다. 알 수 있듯이, 잠금 해제 스크립트는 직렬화된 이전 트랜잭션들이 검색되게 한다. 일부 실시예에 있어서, 직렬화된 이전 트랜잭션은 이전 트랜잭션의 필드 값 세트의 수정되지 않은 버전을 의미한다.
도 24에 묘사된 실시형태는 트랜잭션 ID가 직렬화된 트랜잭션의 더블 SHA256이고 트랜잭션 ID가 트랜잭션에 대한 일대일 맵핑을 갖는다는 점을 관찰함으로써 이해될 수 있다. 따라서, 트랜잭션은 표 17에 도시된 제약을 적용함으로써 잠금 해제 스크립트에 인젝션될 수 있다.
표 17:
본 개시물의 실시형태들은, 임의의 직렬화된 트랜잭션의 인젝션을 야기하는 것 뿐만 아니라, 잠금 해제 트랜잭션(2404)의 입력에서 참조되는 하나 이상의 직렬화된 이전 트랜잭션(예컨대, 이전 트랜잭션(2402A-2402B))의 인젝션을 야기하는 것에 의해, 이러한 인젝션을 더욱 향상시킨다. 도 21을 참조하여 전술한 바와 같이, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트는 잠금 해제 스크립트(2408)를 통해 잠금 스크립트에 인젝션될 수 있고, 도 25는 지정된 SIGHASH 타입에 따라 어떤 필드가 직렬화된 트랜잭션에 포함되는지를 도시한다.
도 25는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 서명 해시 타입에 따라 이용 가능해진 필드 세트의 예시적인 환경(2500)을 다이어그램 형태로 도시한다. 그러나, 도 25는 설명을 위한 것이며, 다양한 실시형태에 있어서는, 도 25에 묘사된 것보다 많은 SIGHASH 타입이 존재한다는 점에 유의한다. 도 25에 도시된 바와 같이, 상이한 SIGHASH 타입들에 의하면, 상이한 이전 트랜잭션 ID 세트들이 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트에 포함된다("해시(hash)" 필드는 트랜잭션 ID를 빅-엔디언(big endian) 포맷으로 나타낸다는 점에 유의한다). 일부 실시형태에 있어서, 잠금 스크립트를 내재하는 이전 트랜잭션의 트랜잭션 ID는 어느 SIGHASH 타입이 지정되는지에 관계없이 항상 이용 가능하다.
따라서, 다음과 같은 방식으로 SIGHASH 타입을 제한함으로써 결정되는 잠금 해제 트랜잭션 필드 세트에 특정 필드가 존재할 수 있다: 먼저, SIGHASH 타입을 복제한다. 다음으로, SIGHASH 타입을 스택에 밀어넣는다(예컨대, SIGHASH_ALL). 마지막으로, OP_EQUALVERIFY를 호출한다. 도 25에서 알 수 있듯이, SIGHASH_ALL(잠금 해제 트랜잭션(2504A)으로 도시된 바와 같음)은 주지된 바와 같이 이전 트랜잭션 "y" 및 "z"의 트랜잭션 ID들을 나타내는 해시를 포함한다. 반대로, SIGHASH_ALL + ANYONECANPAY(잠금 해제 트랜잭션(2504B)으로 도시된 바와 같음)는 직전 트랜잭션 "y"의 해시만을 포함한다. 일부 실시형태에 있어서, 잠금 해제 트랜잭션(2504A-2504B)은 이전 트랜잭션(예컨대, 트랜잭션 y 및/또는 x)에 의해 제어되는 디지털 자산의 적어도 일부의 제어를 전송하려는 시도를 나타내는 도 19의 잠금 해제 트랜잭션(1904)과 유사하다. 트랜잭션 ID를 추출하는 것은 도 26에 도시된 원하는 필드(들)에 이를 때까지 부분 문자열 연산 부호를 사용해서 직렬화된 트랜잭션을 파싱함으로써 달성될 수 있다.
도 26은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 직렬화된 트랜잭션으로부터 트랜잭션 식별자를 추출하는 예시적인 환경(2600)을 다이어그램 형태로 도시한다. 도 26에 도시된 예시적인 환경(2600)에서, 빅 엔디언 포맷의 트랜잭션 ID로 구성된 해시(2620)는 스크립트 내의 부분 문자열 연산 부호를 사용해서 추출될 수 있는 직렬화된 트랜잭션(2610)의 부분 문자열이다. 일부 실시형태에 있어서, 직렬화된 트랜잭션(2610)은, 일부 필드(예컨대, #vin, scriptSigLen, scriptSig, scriptPubKeyLen 및 scriptPubKey)가 다양한 바이트 길이로 이루어지기 때문에, 트랜잭션 ID가 추출될 수 있기 전에, 먼저 해시(2620)의 위치를 식별하기 위해 파싱된다. 그러나, 필드들이 고정된 길이를 갖는 구현예에 있어서는, 파싱이 필수적이지 않을 수도 있을 것으로 생각된다.
따라서, 일부 실시형태에 있어서, 도 22를 참조하여 설명되는 방식으로 잠금 해제 트랜잭션에서 참조되는 특정한 직렬화된 이전 트랜잭션의 인젝션을 강제하는 잠금 스크립트를 구축함으로써, 이전 트랜잭션 ID가 액세스 가능해질 수 있다. 예를 들어, 먼저 SIGHASH 타입 제약이 결정되고, 트랜잭션 ID가 추출되고, 직렬화된 이전 트랜잭션이 잠금 해제 트랜잭션의 직렬화된 필드 세트로부터 (SIGHASH 타입에 따라) 추출되는 트랜잭션 ID에 대하여 복제 및 검사된다. 이 프로세스는 다수의 상이한 직렬화된 이전 트랜잭션들의 인젝션을 강제하기 위해 수행될 수 있다는 점에 유의한다. 실시예로서, 표 18은 트랜잭션 X의 입력에 대응하는 이전 트랜잭션의 인젝션을 야기하는 스크립트를 제시한다. 표 18에 도시되는 스크립트는 잠금 해제 트랜잭션의 입력 X에 대응하는 이전 트랜잭션의 인젝션을 야기하는 OP_PREVTXINJECTION 스크립트의 실시예이다.
표 18:
그러나, SIGHASH 타입, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트, 및 직렬화된 이전 트랜잭션을 제공하는 임의의 엔티티는 본 명세서에서 설명된 바와 같이 트랜잭션 출력을 취득할 수 있다는 점에 유의한다.
다른 실시예로서, 표 19는 서명되는 입력에 대응하는 이전 트랜잭션의 인젝션을 야기하는 스크립트를 제시한다. 표 19에 도시된 스크립트는 서명되는 입력에 대응하는 이전 트랜잭션의 인젝션을 야기하는 OP_SELFTXINJECTION 스크립트의 실시예이다.
표 19:
SIGHASH 타입, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트, 및 직렬화된 이전 트랜잭션을 제공하는 임의의 엔티티는 본 명세서에서 설명된 바와 같이 트랜잭션 출력을 수신할 수 있다는 점에 유의한다.
도 27은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 이전의 직렬화된 트랜잭션의 인젝션을 야기하기 위한 예시적인 프로세스(2700)를 흐름도 형태로 도시한다. 프로세스(2700)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(2700)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 27와 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 이전의 직렬화된 트랜잭션의 인젝션을 야기하기 위한 예시적인 프로세스(2700)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(2700)는 일련의 동작을 포함하고, 예시적인 프로세스(2700)를 수행하는 시스템은 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트 및 잠금 스크립트를 함께 실행하고, 결과적으로, 유효성 검증되지 않은 트랜잭션으로부터 추출되는 트랜잭션 ID에 대응하는 직렬화된 이전 트랜잭션을 취득한다.
예시적인 프로세스(2700)의 단계(2702)에서, 시스템은 디지털 자산의 제어의 전송을 추구하는 엔티티로부터 유효성 검증되지 않은 트랜잭션을 취득한다. 유효성 검증되지 않은 트랜잭션은 잠금 스크립트 및 잠금 해제 스크립트를 포함한다. 잠금 스크립트 및 잠금 해제 스크립트는 표 18 및 표 19에 도시된 잠금 스크립트 및 잠금 해제 스크립트와 유사할 수 있다. 즉, 잠금 스크립트는, 예를 들면, 잠금 해제 스크립트에 의해, 메인 스택 및 대체 스택에 저장되는 입력 값으로서 취하는 명령어 세트를 포함한다. 명령어 세트의 실행은, 참으로 평가될 경우, 유효성 검증되지 않은 트랜잭션을 성공적으로 유효성 검증한다. 따라서, 잠금 해제 스크립트는 잠금 스크립트보다 먼저 실행되고, 잠금 스크립트에 의해 사용될 메인 스택 및 대체 스택에서의 값을 설정한다. 도 27의 실시형태에서 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트는 직렬화된 이전 트랜잭션, SIGHASH 타입, 및 직렬화된 잠금 해제 트랜잭션 필드 세트를 표시한다.
잠금 해제 스크립트에 이은 잠금 스크립트의 실행의 결과로서, 예시적인 프로세스(2700)의 단계(2704)에서, 시스템은 잠금 해제 스크립트에서 지정되는 직렬화된 이전 트랜잭션, SIGHASH 타입, 및 직렬화된 잠금 해제 트랜잭션 필드 세트를 취득한다. 예시적인 프로세스(2700)의 단계(2706)에서, 시스템은 SIGHASH를 기초로 유효성 검증되지 않은 트랜잭션의 직렬화된 필드 값 세트에 기초하여 서명을 생성한다. SIGHASH 타입은 어느 필드가 서명 생성에 사용되는지에 영향을 미치고, 원하는 SIGHASH는 확인된 특정한 이전 트랜잭션에 의존할 수 있다는 점에 유의한다. 예를 들어, 이전 트랜잭션― 다만, 반드시 동일한 잠금 스크립트를 포함하는 이전 트랜잭션일 필요는 없음 ―을 추출하기 위한 잠금 스크립트 및 잠금 해제 스크립트를 예시하는 표 18은 SIGHASH_ALL의 SIGHASH 타입을 이용한다. 도 25에 도시된 바와 같이, SIGHASH_ALL 타입은 잠금 해제 트랜잭션의 다른 이전 트랜잭션들의 입력의 검색을 가능하게 한다. 대조적으로, 동일한 잠금 스크립트를 갖는 이전 트랜잭션(즉, 서명되는 입력에 대응하는 이전 트랜잭션)을 추출하기 위한 잠금 스크립트 및 잠금 해제 스크립트를 예시하는 표 19는 SIGHASH_ALL | ANYONECANPAY의 SIGHASH 타입을 이용한다. 도 25에 도시된 바와 같이, SIGHASH_ALL | ANYONECANPAY의 SIGHASH 타입은 서명되는 입력을 갖는 이전 트랜잭션 이외의 다른 이전 트랜잭션들의 입력을 제거한다.
예시적인 프로세스(2700)의 단계(2708)에서, 시스템은 이전에 생성된 서명을 유효성 검증한다. 예시적인 프로세스(2700)의 단계(2710)에서, 시스템은 취득된 직렬화된 이전 트랜잭션의 더블 SHA256을 수행함으로써 잠금 해제 트랜잭션(즉, 직렬화된 필드 값 세트)의 트랜잭션 ID와 일치해야 하는 값을 생성한다. 부분 문자열 연산 부호를 사용해서, 예시적인 프로세스(2700)의 단계(2712)에서, 시스템은 직렬화된 필드 값 세트의 트랜잭션 ID를 추출하고, 예시적인 프로세스(2700)의 단계(2714)에서, 시스템은 직렬화된 이전 트랜잭션의 더블 SHA256에 의해 생성되는 트랜잭션 ID가 직렬화된 필드 값 세트의 트랜잭션 ID와 일치하는지의 여부를 결정한다. 다양한 실시형태에 있어서, 일치가 반드시 균등을 요구하는 것은 아니라는 점에 유의한다. 예를 들어, 2개의 값은 같지 않더라도 수학적으로 동등할 경우에는 일치하는 것일 수 있다. 다른 실시예로서, 2개의 값은, 공통 객체(예컨대, 값)에 대응하거나 또는 소정의 어떤 방식에서는 상보적일 경우, 및/또는 하나 이상의 일치 기준을 만족시킬 경우에는 일치하는 것일 수 있다. 일반적으로, 일치하는지의 여부를 결정하는 임의의 방식이 사용될 수 있다.
도 27에 도시된 예시적인 프로세스(2700)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 28은 일 실시형태에 따른 블록체인의 상태가 스크립트 기반 블록체인 상호작용에 사용되는 예시적인 환경(2800)을 다이어그램 형태로 도시한다. 본 명세서에서 설명한 바와 같이, 블록 헤더는 블록에 관한 데이터를 포함하는 블록체인의 블록의 섹션이다.
단계(2804)에서, 블록 헤더(2802)는 본 명세서에서 설명되는 바와 같이 잠금 해제 스크립트에 대한 데이터(<Data 1>로 표시됨)로서 제공된다. 일 실시형태에 있어서, 도 6 및 도 7과 관련하여 전술한 OP_CHECKBLOCKVERIFY 스크립트와 같은 스크립트는 <Data 1>이 블록 헤더인지를 검증하는 데 사용된다. 단계(2808)에서, 머클 브랜치(2806)는 도 13 및 도 14와 관련하여 전술한 바와 같이 잠금 해제 스크립트에 대한 데이터(<Data 2>로 표시됨)로서 제공된다. 단계(2812)에서, 트랜잭션(2810)은 잠금 해제 스크립트에 대한 데이터(<Data 3>으로 표시됨)로서 제공된다. 일 실시형태에 있어서, 도 13 및 도 14와 관련하여 전술한 바와 같이 OP_CALCMERKLEROOT 스크립트를 사용해서 머클 루트 <Data 2> 및 트랜잭션 <Data 3>으로부터 머클 루트가 계산된다.
단계(2814)에서, OP_CHECKBLOCKTXVERIFY 스크립트는 상기 표 9에 도시된 바와 같이 또한 도 13, 도 14, 및 도 17과 관련하여 설명된 바와 같이 <Data 1>로부터 추출된 HashMerkleRoot가 <Data 2> 및 <Data 3>에 대하여 수행되는 OP_CALCMERKLEROOT 스크립트로부터 계산된 머클 루트와 동일한지를 검증하도록 실행된다.
단계(2816)에서, OP_SELFTXINJECTION 스크립트는 <Data 3>의 트랜잭션의 잠금 해제 스크립트가 상기 표 18 및 표 19에 도시된 바와 같이 또한 도 26, 도27, 및 도 28과 관련하여 설명된 바와 같이 잠금 스크립트를 포함하는 직렬화된 트랜잭션을 포함하는지를 검증하도록 실행된다.
단계(2818)에서, 단계(2814)의 OP_CHECKBLOCKTXVERIFY 스크립트 및 단계(2816)의 OP_SELFTXINJECTION 스크립트가 성공하면, 전술한 바와 같이, <Data 1>의 블록 헤더를 갖는 블록이 트랜잭션 <Data 3>을 포함한다는 것, <Data 3>의 잠금 해제 스크립트가 잠금 스크립트의 직렬화된 트랜잭션을 포함한다는 것, 및 잠금 스크립트가 블록체인 상태에 액세스할 수 있다는 것이 알려진다. 이러한 잠금 스크립트는, 한정되는 것은 아니지만, 시간(즉, 하나 이상의 블록 헤더의 nTime 필드로부터), 의사 난수(즉, 모두 의사 난수의 양호한 소스인 nNonce 또는 HashMerkleRoot로부터), 또는 다른 정보를 포함하는 정보에 액세스할 수 있으며, 이들 중 일부 또는 전부가 잠금 스크립트에서 사용될 수 있다. 이러한 추가 정보의 실시예들은 도 30에서 제시되는 실시예에 도시된다.
일 실시형태에 있어서, 스크립트는 블록 헤더 <Data 1>이 전술한 바와 같이 OP_CHECKBLOCKCHAINVERIFY와 같은 검증 스크립트를 사용함으로써 특히 공공 블록체인의 블록을 모방하기 위해 생성된 블록이 아니라 공공 블록체인의 일부분인 블록에 대한 블록 헤더인지를 검증하는 데 사용된다. 일 실시형태에 있어서, 블록 헤더 <Data 1>이 공공 블록체인의 일부분인 블록에 대한 블록 헤더인지를 검증하는 데 사용되는 스크립트에는 전술한 바와 같이 블록체인이 제공될 수 있거나 또는 전체 또는 부분 블록 헤더 체인이 제공될 수 있다.
일 실시형태에 있어서, 스크립트는 도 17과 관련하여 전술한 바와 같이 트랜잭션 및/또는 블록체인 상태의 다른 양태들을 유효성 검증하는 데 사용될 수도 있다. 전술한 바와 같이, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트는, 한정되는 것은 아니지만, 양수인, 양도인, 트랜잭션의 수량, 또는 트랜잭션의 다른 양태들을 포함하여, 트랜잭션의 다수의 양태들에 대한 유효성 검증을 포함할 수 있다. 부가적으로, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트는 블록체인의 양태들, 블록체인 상태의 양태들, 블록 헤더 체인의 양태들, 블록의 양태들, 또는 블록체인 환경의 다른 양태들을 포함할 수 있다는 점에 유의해야 한다. 예를 들어, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트는 블록의 nTime, 블록 내의 트랜잭션의 수, 2개의 블록간의 경과 시간, 최소 블록 높이, 또는 블록체인 환경의 다른 양태들을 유효성 검증할 수 있다. 또한, 트랜잭션의 다른 양태들을 유효성 검증하는 데 사용된 스크립트의 말미에 "검증(verify)" 연산 부호를 포함하지 않음으로써, 분기 조건(예컨대, 블록에 있는 트랜잭션이 1000개보다 많으면, Alice가 잠금 해제할 수 있고, 블록에 있는 트랜잭션이 1000개보다 많지 않으면, Bob이 잠금 해제할 수 있음)이 도입될 수 있다는 점에 유의해야 한다. 분기 조건의 실시예들은 도 30과 관련하여 아래에서 더 상세하게 설명된다.
예시적인 환경(2800)에는 도시되어 있지 않지만, 표 11에 도시되고 도 17과 관련하여 설명된 스크립트와 같은, 트랜잭션의 다른 양태들을 유효성 검증하기 위한 부가적인 스크립트가 도 28에서 설명되는 예시적인 환경(2800)의 일부로서 실행될 수 있다.
도 29는 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에서 블록체인의 상태를 사용하기 위한 예시적인 프로세스(2900)를 흐름도 형태로 도시한다. 프로세스(2900)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램). 예시적인 프로세스(2900)는 도 1과 관련하여 설명되는 블록체인 네트워크(100)와 같은 블록체인 네트워크의 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드에 의해 수행될 수 있다. 즉, 도 1과 관련하여 설명되는 노드(102)들 중 하나와 같은 노드는 도 29와 관련하여 설명되는 스크립트 기반 블록체인 상호작용에서 블록체인의 상태를 사용하기 위한 예시적인 프로세스(2900)를 수행할 수 있다. 이러한 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 2와 관련하여 설명되는 컴퓨팅 장치(200)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
예시적인 프로세스(2900)의 단계(2902)에서, 시스템은 도 17과 관련하여 전술한 바와 같이 <Data 1>, <Data 2>, 및 <Data 3>을 수신한다.
예시적인 프로세스(2900)의 단계(2904)에서, 도 17과 관련하여 전술한 바와 같이 OP_CHECKBLOCKCHAINVERIFY를 사용해서 <Data 1>이 공공 블록체인의 블록인지를 검증한다.
예시적인 프로세스(2900)의 단계(2906)에서, <Data 1>이 공공 블록체인의 블록인지의 여부가 결정된다. 예시적인 프로세스(2900)의 단계(2906)에서, <Data 1>이 공공 블록체인의 블록이 아닌 것으로 결정되면, 예시적인 프로세스(2900)의 단계(2908)에서, <Data 3>의 트랜잭션은 <Data 1>의 블록 헤더를 갖는 블록에 있는 것으로 검증되지 않고, 예시적인 프로세스(2900)의 단계(2910)에서 잠금 스크립트는 블록체인 상태에 액세스할 수 없다.
예시적인 프로세스(2900)의 단계(2906)에서, <Data 1>이 공공 블록체인의 블록인 것으로 결정되면, 예시적인 프로세스(2900)의 단계(2912)에서, 시스템은 표 9에 도시된 실시예와 같이 OP_CHECKBLOCKTXVERIFY 스크립트를 사용해서 <Data 3>의 트랜잭션이 <Data 1>의 블록 헤더를 갖는 블록에 있는지를 검증한다.
예시적인 프로세스(2900)의 단계(2914)에서, OP_CHECKBLOCKTXVERIFY가 통과하는지의 여부가 결정된다. 예시적인 프로세스(2900)의 단계(2914)에서, OP_CHECKBLOCKTXVERIFY가 통과하지 못한 것으로 결정되면, 예시적인 프로세스(2900)의 단계(2916)에서, <Data 3>의 트랜잭션은 <Data 1>의 블록 헤더를 갖는 블록에 없고, 예시적인 프로세스(2900)의 단계(2910)에서, 잠금 스크립트는 블록체인 상태에 액세스할 수 없다.
예시적인 프로세스(2900)의 단계(2914)에서, OP_CHECKBLOCKTXVERIFY가 통과한 것으로 결정되면, 예시적인 프로세스(2900)의 단계(2918)에서, 시스템은 표 19에 도시된 스크립트와 같은 OP_SELFTXINJECTION 스크립트를 사용해서 <Data 3>에서의 트랜잭션의 잠금 해제 스크립트가 잠금 스크립트의 직렬화된 트랜잭션을 포함하는지를 검증한다.
예시적인 프로세스(2900)의 단계(2920)에서, <Data 3>에서의 트랜잭션의 잠금 해제 스크립트가 잠금 스크립트의 직렬화된 트랜잭션을 포함하는지의 여부가 결정된다. 예시적인 프로세스(2900)의 단계(2920)에서, <Data 3>에서의 트랜잭션의 잠금 해제 스크립트가 잠금 스크립트의 직렬화된 트랜잭션을 포함하지 않는 것으로 결정되면, 예시적인 프로세스(2900)의 단계(2910)에서, 잠금 스크립트가 블록체인 상태에 액세스할 수 없다.
예시적인 프로세스(2900)의 단계(2920)에서, <Data 3>에서의 트랜잭션의 잠금 해제 스크립트가 잠금 스크립트의 직렬화된 트랜잭션을 포함하는 것으로 결정되면, 예시적인 프로세스(2900)의 단계(2922)에서, 잠금 스크립트가 블록체인 상태에 액세스할 수 있다.
도 29에 도시된 예시적인 프로세스(2900)에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 30은 일 실시형태에 따른 스크립트 기반 블록체인 상호작용에 블록체인의 상태를 사용하는 예시적인 구현예(3000)를 다이어그램 형태로 도시한다. 예시적인 구현예(3000)는 본 명세서에서 설명되는 방법들의 몇 가지 양태를 도시한다. 예시적인 구현예(3000)에 있어서는, 베팅(bet)을 포함하는 트랜잭션의 블록과 직전의 블록 사이의 시간차에 기초하여, 베팅을 포함하는 트랜잭션의 블록이 공공 블록체인에 추가되는 데 걸리는 시간에 베팅하기를 원한다고 결정했다. 각각 단일의 비트코인을 내놓고, 시간차가 10분 미만이면, 2개의 비트코인은 Alice에게 주어진다. 반대로, 시간차가 10분 이상이면, 2개의 비트코인은 Bob에게 주어진다.
Alice는 베팅 트랜잭션(3002)의 절반의 자신의 몫을 비트코인(3004)으로 자금 조달하고, Bob은 베팅 트랜잭션(3002)의 절반의 자신의 몫을 비트코인(3006)으로 자금 조달한다. 베팅 트랜잭션(3002)은, 시간차(t2 - t1)가 10분 미만이면 2개의 비트코인(3008)을 Alice가 가진다는 것을 기술한다. 반대로, 시간차(t2 - t1)가 10분 이상이면 2개의 비트코인(3008)을 Bob이 가진다.
본 명세서에서 설명되는 방법을 사용해서, 베팅 트랜잭션(3002)이 블록 헤더(3014)를 갖는 블록(B2)에 있는지의 여부가 결정될 수 있다. 유사하게, 본 명세서에서 설명되는 방법을 사용해서, 블록 헤더(3012)를 갖는 블록(B1)이 직전 블록인지가 결정될 수 있다. 마지막으로, 블록 헤더(3012)의 nTime 이후에 블록 헤더(3014)의 nTime이 10분 미만인지가 결정될 수 있고, 그에 따라, 2개의 비트코인(3008)이 Alice에게 또는 Bob에게 전송될 수 있다.
표 20은 이 베팅 트랜잭션(3002)에 대한 예시적임 잠금 스크립트를 도시한다. 표 20에 도시된 스크립에서 사용되는 OP_EXTRACTTIME 스크립트는 본 명세서에서는 설명되고 있지 않지만, 고려될 수 있는 바와 같이, 표 3에 도시된 nBits를 추출하기 위한 스크립트와 유사한, 블록 헤더로부터 시간 엔트리를 추출하기 위한 스크립트이다.
표 20:
명세서 및 도면은, 결국, 제한적인 의미가 아니라 예시적인 의미인 것으로 간주되어야 한다. 그러나, 청구항들에 제시된 바와 같은 본 발명의 보다 넓은 정신 및 범위로부터 일탈함이 없이 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다.
그 밖의 변형도 본 개시물의 정신 내에 있다. 따라서, 개시된 기술은 다양한 수정 및 대체 구성의 영향을 받기 쉽지만, 그 특정한 예시된 실시형태들이 도면에 도시되며 상세하게 전술되었다. 그러나, 본 발명을 개시된 특정 형태 또는 형태들로 제한하려는 의도는 없으며, 반대로, 본 발명은 첨부된 청구항들에서 규정된 바와 같이, 본 발명의 정신 및 범위 내에서의 모든 수정, 대체 구성 및 등가물을 포함하려는 것이라는 점을 이해해야 한다.
개시된 실시형태들을 설명하는 문맥에서(특히, 하기의 청구항들의 문맥에서) 부정관사 및 정관사("a", "an", 및 "the") 및 유사한 지시어의 사용은, 본 명세서에서 달리 지시되거나 또는 문맥상 명백하게 부정되지 않는 한, 단수와 복수를 모두 포함하는 것으로 해석되어야 한다. "포함하는", "갖는", "구비하는" 및 "함유하는"과 같은 용어는 달리 주지되지 않는 한 개방형 용어(즉, "포함하되 한정되지 않는"을 의미함)로서 해석되어야 한다. "연결되는"과 같은 용어는, 수정되지 않고 물리적인 연결을 의미할 경우, 어떤 것이 개입해 있더라도, 부분적으로 또는 전체적으로 내포되거나, 부착되거나, 또는 함께 결합되는 것으로 해석되어야 한다. 본 명세서에서 값들의 범위들을 열거하는 것은, 본 명세서에서 달리 지시되지 않는 한, 단지 범위 내에 있는 각각의 개별 값을 개별적으로 참조하는 약기법으로서 기능하도록 의도된 것이고, 각각의 개별 값은 본 명세서에서 마치 개별적으로 열거되어 있던 것처럼 명세서에 포함된다. "세트"(예컨대, "항목 세트") 또는 "서브세트"와 같은 용어의 사용은, 달리 주지되거나 또는 문맥상 부정되지 않는 한, 하나 이상의 멤버를 포함하는 비어 있지 않은 집합으로 해석되어야 한다. 또한, 달리 주지되거나 또는 문맥상 부정되지 않는 한, 상응하는 세트의 "서브세트"라는 용어는 반드시 상응하는 세트의 적절한 서브세트를 의미하는 것은 아니고, 서브세트 및 상응하는 세트는 동일할 수 있다.
"A, B, 및 C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나"와 같은 형태의 문구와 같은 접속어는, 특별히 달리 언급되거나 또는 문맥상 달리 명백하게 부정되지 않는 한, 일반적으로 항목, 용어 등이 A 또는 B 또는 C일 수 있거나, 또는 A 및 B 및 C의 세트의 임의의 비어 있지 않은 서브세트일 수 있음을 나타내기 위해 사용되는 것으로 상황에 맞게 이해된다. 예를 들면, 3개의 멤버를 갖는 세트의 예시적인 실시예에 있어서, "A, B, 및 C 중 적어도 하나" 및 "A, B 및 C 중 적어도 하나"와 같은 접속 문구는 다음과 같은 세트들: 즉, {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C} 중 어느 하나를 의미한다. 따라서, 이러한 접속어는 일반적으로 특정 실시형태들이 적어도 하나의 A, 적어도 하나의 B 및 적어도 하나의 C가 각각 존재할 필요가 있음을 암시하려는 것이 아니다.
본 명세서에서 설명되는 프로세스들의 동작들은 본 명세서에서 달리 지시되거나 또는 문맥상 달리 명백하게 부정되지 않는 한 임의의 적절한 순서로 수행될 수 있다. 본 명세서에서 설명되는 프로세스들(또는 그 변경 및/또는 조합)은 실행 가능 명령어로 구성되는 하나 이상의 컴퓨터 시스템의 제어 하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서, 하드웨어에 의해 또는 이들의 조합에 의해 총괄하여 실행되는 코드(예컨대, 실행 가능 명령어, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로서 구현될 수 있다. 코드는, 예를 들어, 하나 이상의 프로세서에 의해 실행 가능한 복수의 명령어를 포함하는 컴퓨터 프로그램 형태로 컴퓨터 판독 가능 저장 매체 상에 저장될 수 있다. 컴퓨터 판독 가능 저장 매체는 비일시적인 저장 매체일 수 있다.
본 명세서에서 제공되는 임의의 및 모든 예시, 또는 예시적인 언어(예컨대, "~와 같은")의 사용은, 달리 청구되지 않는 한, 단지 본 발명의 실시형태들을 보다 잘 설명하려는 것이지, 본 발명의 범위를 제한하려는 것이 아니다. 명세서의 어떤 언어도, 임의의 청구되지 않은 요소가 발명의 실시에 필수적인 것임을 나타내는 것으로 해석되지 않아야 한다.
본 개시물의 실시형태들은 발명을 실시하기 위해 발명자들에게 알려져 있는 최선의 형태를 포함하여, 본 명세서에서 설명된다. 이들 실시형태의 변경은 전술한 설명을 숙독하면 당업자에게 명백해질 수 있다. 본 발명자들은 당업자가 이러한 변경을 적절히 채용할 것으로 기대하고, 또한 본 발명자들은 본 개시물의 실시형태들이 본 명세서에서 특별히 설명되는 것과 다르게 실시되는 것을 의도한다. 따라서, 본 개시물의 범위는 적용 가능한 법률에 의해 허용되는 바와 같은, 여기에 첨부된 청구항들에서 인용되는 청구 대상의 모든 수정 및 등가물을 포함한다. 또한, 그 모든 가능한 변경에 있어서 전술한 요소들의 임의의 조합은 본 명세서에서 달리 지시되거나 또는 문맥상 달리 명백하게 부정되지 않는 한 본 개시물의 범위에 포함된다.
개시된 실시형태들을 설명하는 맥락에서, 달리 명시되지 않는 한, "명령어"가 통상적으로는 단독으로 수행하지 않는 동작들(예컨대, 데이터 전송, 계산 등)을 수행하는 실행 가능 명령어에 관한 표현(코드, 애플리케이션, 에이전트 등이라고도 함)의 사용은 명령어가 기계에 의해 실행되고, 그에 따라 기계가 지정된 동작을 수행하게 된다는 것을 나타낸다는 점에 유의해야 한다.
전술한 실시형태들은 본 발명을 한정하는 것이 아니라 예시하는 것이며, 당업자라면, 첨부된 청구항들에 의해 규정되는 바와 같은 발명의 범위로부터 일탈함이 없이, 다양한 대안적인 실시형태들을 설계할 수 있을 것이라는 점에 유의해야 한다. 청구항들에 있어서, 괄호 안의 임의의 참조 부호는 해당 청구항들을 제한하는 것으로 해석되지 않아야 한다. "포함하는" 및 "포함한다" 등의 단어는 전체적으로 임의의 청구항 또는 명세서에 열거된 요소들 또는 단계들 이외의 것들의 존재를 배제하지 않는다. 본 명세서에 있어서, "포함한다"는 "구비한다 또는 구성된다"를 의미하고, "포함하는"은 "구비하는 또는 구성되는"을 의미한다. 요소의 단수형 참조는 그러한 요소들의 복수형 참조를 배제하지 않으며, 그 반대도 마찬가지이다. 본 발명은 몇 개의 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 몇 개의 수단을 열거하는 장치 청구항에 있어서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 단지 특정 조치들이 서로 다른 종속 청구항들에서 인용된다는 사실만으로 이들 조치의 조합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (15)

  1. 컴퓨터-구현 방법으로서,
    블록체인 네트워크의 노드에서, 디지털 자산과 연계되는 제1 트랜잭션을 수신하는 단계 ― 상기 제1 트랜잭션은 상기 디지털 자산의 제어(control)를 전송하기 위해 제2 트랜잭션에 대한 제약 세트를 특정하는 제1 잠금(locking) 스크립트를 포함하고, 상기 제약 세트는 상기 노드에 의해 취득되는 데이터 세트가 상기 블록체인 네트워크와 연계되는 블록체인으로부터 취득되는 정보 및 상기 블록체인의 블록의 블록 헤더를 포함한다는 제약을 포함함 ― 와,
    상기 제2 트랜잭션을 취득하는 단계 ― 상기 제2 트랜잭션은 실행의 결과로서 상기 노드로 하여금 상기 데이터 세트를 취득하게 하는 제2 스크립트를 포함함 ― 와,
    상기 제1 잠금 스크립트 및 상기 제2 스크립트를 실행함으로써 상기 제2 트랜잭션을 유효성 검증하는 단계를 포함하는,
    컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 노드는 상기 데이터 세트가 상기 블록체인의 블록의 블록 헤더를 포함한다는 상기 제약이 적어도,
    상기 블록 헤더가 사전결정된 크기를 갖는다는 것을 검증하는 것과,
    상기 블록 헤더가 난이도 값 이상의 난이도 값을 포함한다는 것을 검증하는 것과,
    상기 블록 헤더의 해시가 상기 블록 헤더에 포함되는 상기 난이도 값으로부터 계산되는 목표값 이하인지를 검증하는 것
    에 의해 만족되는지의 여부를 결정하는,
    컴퓨터-구현 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제약 세트는 상기 데이터 세트가 상기 블록체인의 블록으로부터 제3 트랜잭션을 포함한다는 제약을 포함하는,
    컴퓨터-구현 방법.
  4. 제3항에 있어서,
    상기 데이터 세트는 상기 블록체인의 블록의 블록 헤더를 포함하고,
    상기 제약 세트는 상기 제3 트랜잭션이 상기 블록에 포함된다는 제약을 포함하며,
    상기 노드는 상기 블록체인의 블록의 블록 헤더에 적어도 부분적으로 기초하여 상기 제3 트랜잭션이 상기 블록에 포함된다는 제약이 만족되는지의 여부를 결정하는,
    컴퓨터-구현 방법.
  5. 제4항에 있어서,
    상기 노드는 상기 제3 트랜잭션이 상기 블록에 포함된다는 제약이 적어도,
    상기 블록 헤더에 의해 식별되는 블록 내의 트랜잭션의 인코딩에 적어도 부분적으로 기초하여 상기 제3 트랜잭션의 해시값을 계산하는 것과,
    상기 제3 트랜잭션의 해시값이 상기 블록 헤더에 저장되는 해시값과 동일한지를 검증하는 것
    에 의해 만족되는지의 여부를 결정하는,
    컴퓨터-구현 방법.
  6. 제1항 또는 제2항에 있어서,
    상기 제약 세트는 상기 데이터 세트가 순서화된 블록 헤더 세트를 포함하는 블록 헤더 체인을 포함한다는 제약을 포함하되, 상기 순서화된 블록 헤더 세트는 복수의 블록 헤더를 포함하고, 상기 순서화된 블록 헤더 세트는 상기 복수의 블록 헤더와 연계되는 순서를 특정하는,
    컴퓨터-구현 방법.
  7. 제6항에 있어서,
    상기 노드는 상기 제2 스크립트가 상기 블록 헤더 체인을 포함한다는 제약이 적어도,
    상기 복수의 블록 헤더와 연계되는 순서에 적어도 부분적으로 기초하여 한 쌍의 블록 헤더를 선택하는 것 ― 상기 한 쌍의 블록 헤더는 상기 한 쌍의 블록 헤더의 제1 블록 헤더 및 상기 한 쌍의 블록 헤더의 제2 블록 헤더를 포함함 ― 과,
    상기 한 쌍의 블록 헤더에 대하여, 상기 한 쌍의 블록 헤더의 제1 블록 헤더의 해시가 상기 한 쌍의 블록 헤더의 제2 블록 헤더에 저장되는 해시값과 동일한지를 검증하는 것
    에 의해 만족되는지의 여부를 결정하는,
    컴퓨터-구현 방법.
  8. 제1항 또는 제2항에 있어서,
    상기 제약 세트는 상기 데이터 세트가 상기 블록체인 네트워크의 공공 블록체인으로부터 취득된다는 제약을 포함하는,
    컴퓨터-구현 방법.
  9. 제1항 또는 제2항에 있어서,
    상기 블록체인 네트워크의 하나 이상의 속성은 상기 제1 잠금 스크립트 및 상기 제2 스크립트를 실행하기 전에 상기 노드에 제공되는,
    컴퓨터-구현 방법.
  10. 제1항 또는 제2항에 있어서,
    상기 제2 트랜잭션을 유효성 검증하는 단계는 상기 제2 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스하는지를 검증하지 않고 성공적으로 수행되는
    컴퓨터-구현 방법.
  11. 제1항 또는 제2항에 있어서,
    상기 제1 잠금 스크립트는 상기 제1 트랜잭션의 잠금 스크립트이고, 상기 제2 스크립트는 상기 제1 잠금 스크립트에 대한 잠금 해제 스크립트인,
    컴퓨터-구현 방법.
  12. 제1항 또는 제2항에 있어서,
    상기 유효성 검증의 결과에 적어도 부분적으로 기초하여 디지털 자산을 전송하는 단계를 더 포함하는,
    컴퓨터-구현 방법.
  13. 시스템으로서,
    프로세서와,
    상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금 제1항 또는 제2항에 기재된 컴퓨터-구현 방법을 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는,
    시스템.
  14. 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템으로 하여금 제1항 또는 제2항에 기재된 컴퓨터-구현 방법을 적어도 수행하게 하는 실행 가능 명령어를 저장하는,
    비일시적인 컴퓨터 판독 가능 저장 매체.
  15. 삭제
KR1020197035969A 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용 KR102627000B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GBGB1708488.0A GB201708488D0 (en) 2017-05-26 2017-05-26 Computer-implemented system and method
GB1708488.0 2017-05-26
GB1708491.4 2017-05-26
GB1708493.0 2017-05-26
GBGB1708491.4A GB201708491D0 (en) 2017-05-26 2017-05-26 Computer-implemented system and method
GBGB1708493.0A GB201708493D0 (en) 2017-05-26 2017-05-26 Computer-Implemented system and method
PCT/IB2018/053651 WO2018215947A1 (en) 2017-05-26 2018-05-23 Script-based blockchain interaction

Publications (2)

Publication Number Publication Date
KR20200013680A KR20200013680A (ko) 2020-02-07
KR102627000B1 true KR102627000B1 (ko) 2024-01-19

Family

ID=62597818

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020197035955A KR102627490B1 (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020247001803A KR20240014591A (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020237042262A KR20230170820A (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020197035962A KR102612793B1 (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020197035969A KR102627000B1 (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용

Family Applications Before (4)

Application Number Title Priority Date Filing Date
KR1020197035955A KR102627490B1 (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020247001803A KR20240014591A (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020237042262A KR20230170820A (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용
KR1020197035962A KR102612793B1 (ko) 2017-05-26 2018-05-23 스크립트 기반 블록체인 상호작용

Country Status (8)

Country Link
US (3) US20200151713A1 (ko)
EP (6) EP3631721A1 (ko)
JP (7) JP7201622B2 (ko)
KR (5) KR102627490B1 (ko)
CN (3) CN111247546A (ko)
TW (1) TWI784002B (ko)
WO (3) WO2018215949A1 (ko)
ZA (1) ZA201907921B (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7201622B2 (ja) * 2017-05-26 2023-01-10 エヌチェーン ライセンシング アーゲー スクリプトに基づくブロックチェーン相互作用
JP2019109635A (ja) * 2017-12-16 2019-07-04 株式会社bitFlyer ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノード
US10298585B1 (en) * 2018-01-26 2019-05-21 Accenture Global Solutions Limited Blockchain interoperability
WO2019233614A1 (en) * 2018-06-07 2019-12-12 Coinfirm Blockchain Lab Sp. Z O.O. A method for registration of data in a blockchain database and a method for verifying data
US10944548B2 (en) * 2018-06-07 2021-03-09 Coinfirm Blockchain Lab Sp. Z O.O. Method for registration of data in a blockchain database and a method for verifying data
CN108848184B (zh) * 2018-06-29 2020-08-28 北京金山安全软件有限公司 一种基于信任机制的区块链节点同步方法及装置
US11334439B2 (en) 2018-08-29 2022-05-17 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11196542B2 (en) 2018-08-29 2021-12-07 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US10901957B2 (en) * 2018-08-29 2021-01-26 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
CN109345388B (zh) * 2018-09-20 2020-09-08 百度在线网络技术(北京)有限公司 区块链智能合约验证方法、装置及存储介质
US11062042B1 (en) 2018-09-26 2021-07-13 Splunk Inc. Authenticating data associated with a data intake and query system using a distributed ledger system
JP2020127100A (ja) * 2019-02-03 2020-08-20 株式会社bitFlyer Blockchain 複数のノードを有する分散ネットワークに資産の移転を表すトランザクションを記憶する方法及びそのためのプログラム並びに当該分散ネットワークを構成するためのノード
CN110869967B (zh) 2019-03-28 2024-04-16 创新先进技术有限公司 用于并行处理区块链交易的系统和方法
US20200334677A1 (en) * 2019-04-16 2020-10-22 Nokia Solutions And Networks Oy Transparent blockchain sidechains to support blockchain processing heterogeneity
US11507562B1 (en) 2019-05-22 2022-11-22 Splunk Inc. Associating data from different nodes of a distributed ledger system
US11269859B1 (en) * 2019-05-22 2022-03-08 Splunk Inc. Correlating different types of data of a distributed ledger system
GB201907347D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd In-script functions within a blockchain transaction
US11487819B2 (en) 2019-06-19 2022-11-01 Amazon Technologies, Inc. Threaded leaf nodes in database journal
US11487733B2 (en) 2019-06-19 2022-11-01 Amazon Technologies, Inc. Database journal redaction
US11418345B2 (en) 2019-06-19 2022-08-16 Amazon Technologies, Inc. Digest proofs in a journaled database
US11310054B2 (en) * 2019-06-19 2022-04-19 Amazon Technologies, Inc. Symmetric function for journaled database proof
WO2020252753A1 (zh) * 2019-06-20 2020-12-24 深圳市网心科技有限公司 区块链节点设备及其认证方法、装置、存储介质
CN110347660B (zh) * 2019-06-28 2020-08-11 阿里巴巴集团控股有限公司 基于区块链的分级存储方法及装置、电子设备
US10789222B2 (en) 2019-06-28 2020-09-29 Alibaba Group Holding Limited Blockchain-based hierarchical data storage
US11036720B2 (en) 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
JP6651042B1 (ja) * 2019-08-28 2020-02-19 株式会社bitFlyer Blockchain 複数のノードを有する分散ネットワークに資産の移転を表すトランザクションを記憶する方法及びそのためのプログラム並びに当該分散ネットワークを構成するためのノード
GB201913143D0 (en) * 2019-09-12 2019-10-30 Nchain Holdings Ltd Running a program from a blockchain
GB201915443D0 (en) * 2019-10-24 2019-12-11 Nchain Holdings Ltd Data Structure for efficiently verifying data
CA3098939A1 (en) * 2019-11-29 2020-05-22 Alipay (Hangzhou) Information Technology Co., Ltd. Taking snapshots of blockchain data
US20210182840A1 (en) * 2019-12-17 2021-06-17 Paypal, Inc. Token processing to facilitate storage of transaction data in a blockchain
GB2592211A (en) * 2020-02-19 2021-08-25 Nchain Holdings Ltd Adapting connections of a layered network
GB2592225A (en) * 2020-02-19 2021-08-25 Nchain Holdings Ltd Attestation service for use with a blockchain network
US11792022B2 (en) 2020-02-21 2023-10-17 International Business Machines Corporation Resolution of conflicting data
EP3907644B1 (en) 2020-05-07 2022-10-05 Cambridge Cryptographic Ltd Blockchain
TWI789971B (zh) * 2020-05-15 2023-01-11 華南商業銀行股份有限公司 交互判斷合法性的交易驗證系統及方法
CN111737256A (zh) * 2020-06-12 2020-10-02 北京众享比特科技有限公司 一种基于可信执行环境和区块链的数据库表操作方法和系统
CN112215707B (zh) * 2020-09-21 2024-01-09 上海泼墨网络科技有限公司 一种基于区块链的定制化的资产交易智能合约的使用方法
GB2599735A (en) 2020-10-12 2022-04-13 Cambridge Cryptographic Ltd Blockchain
WO2022118263A1 (en) 2020-12-02 2022-06-09 Trock Stanislav Blockchain
GB2609194A (en) * 2021-07-19 2023-02-01 Nchain Licensing Ag Enforcing conditions on blockchain transactions
TWI788989B (zh) * 2021-09-01 2023-01-01 中華電信股份有限公司 一種基於區塊鏈的行動支付整合系統、方法及其電腦可讀媒介
WO2023233029A1 (en) * 2022-06-02 2023-12-07 Nchain Licensing Ag Methods and systems for distributing and validating alerts in a distributed computing system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120095911A1 (en) * 2009-06-16 2012-04-19 Smart Hub Pte. Ltd. Transaction system and method
FR3018378A1 (fr) * 2014-03-12 2015-09-11 Enrico Maim Systeme et procede transactionnels a architecture repartie fondees sur des transactions de transferts d'unites de compte entre adresses
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
US10230526B2 (en) * 2014-12-31 2019-03-12 William Manning Out-of-band validation of domain name system records
KR101660627B1 (ko) * 2015-02-03 2016-09-28 한양대학교 에리카산학협력단 암호화 화폐의 거래를 보호하는 방법 및 장치
AU2016242888A1 (en) * 2015-03-31 2017-11-16 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
EP3317775B1 (en) * 2015-07-02 2022-02-16 Nasdaq, Inc. Systems and methods of secure provenance for distributed transaction databases
US20170046689A1 (en) * 2015-07-14 2017-02-16 Fmr Llc Crypto Voting and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US10339523B2 (en) * 2015-07-14 2019-07-02 Fmr Llc Point-to-point transaction guidance apparatuses, methods and systems
EP3424179B1 (en) * 2016-03-04 2022-02-16 Ping Identity Corporation Method and system for authenticated login using static or dynamic codes
US10095653B2 (en) * 2016-04-02 2018-10-09 Intel Corporation Apparatuses, systems, and methods for accurately measuring packet propagation delays through USB retimers
US10803537B2 (en) * 2016-04-18 2020-10-13 R3 Ltd. System and method for managing transactions in dynamic digital documents
CN105956923B (zh) * 2016-04-20 2022-04-29 上海如鸽投资有限公司 资产交易系统以及资产的数字化认证和交易方法
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
KR102050129B1 (ko) * 2016-05-03 2019-11-28 안규태 블록 검증을 위한 복수의 일방향 함수를 지원하는 블록 체인
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US10198325B2 (en) * 2016-05-24 2019-02-05 Mastercard International Incorporated Method and system for desynchronization recovery for permissioned blockchains using bloom filters
US10417188B2 (en) * 2016-05-27 2019-09-17 Mastercard International Incorporated Method and system for transferring trust across block chain segments
US10097344B2 (en) * 2016-07-15 2018-10-09 Mastercard International Incorporated Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains
US10257496B2 (en) * 2016-07-26 2019-04-09 Qcify Inc. Quality inspection data distributed ledger
KR101727525B1 (ko) * 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치
CN106385319B (zh) * 2016-09-29 2020-11-27 江苏通付盾科技有限公司 区块链网络中信息的验证方法及系统
US10719771B2 (en) * 2016-11-09 2020-07-21 Cognitive Scale, Inc. Method for cognitive information processing using a cognitive blockchain architecture
US10862959B2 (en) * 2016-11-28 2020-12-08 Keir Finlow-Bates Consensus system and method for adding data to a blockchain
JP7201622B2 (ja) * 2017-05-26 2023-01-10 エヌチェーン ライセンシング アーゲー スクリプトに基づくブロックチェーン相互作用

Also Published As

Publication number Publication date
JP2023036794A (ja) 2023-03-14
KR20200013679A (ko) 2020-02-07
ZA201907921B (en) 2023-05-31
JP7262402B2 (ja) 2023-04-21
WO2018215949A1 (en) 2018-11-29
EP3631720A1 (en) 2020-04-08
KR102612793B1 (ko) 2023-12-13
CN111247546A (zh) 2020-06-05
JP7201622B2 (ja) 2023-01-10
JP2020522053A (ja) 2020-07-27
EP4184404A1 (en) 2023-05-24
JP2023089101A (ja) 2023-06-27
TW201901575A (zh) 2019-01-01
WO2018215951A1 (en) 2018-11-29
US20200151713A1 (en) 2020-05-14
JP2020522051A (ja) 2020-07-27
JP7247107B2 (ja) 2023-03-28
TWI784002B (zh) 2022-11-21
EP4191494A1 (en) 2023-06-07
US20200151165A1 (en) 2020-05-14
EP3631721A1 (en) 2020-04-08
EP4184405A1 (en) 2023-05-24
JP7372434B2 (ja) 2023-10-31
EP3631719A1 (en) 2020-04-08
KR20200013680A (ko) 2020-02-07
KR20230170820A (ko) 2023-12-19
JP2020522049A (ja) 2020-07-27
JP2023179743A (ja) 2023-12-19
KR20200016238A (ko) 2020-02-14
WO2018215947A1 (en) 2018-11-29
CN110692071A (zh) 2020-01-14
CN111247547A (zh) 2020-06-05
US20200151714A1 (en) 2020-05-14
JP2023072051A (ja) 2023-05-23
KR20240014591A (ko) 2024-02-01
JP7486630B2 (ja) 2024-05-17
KR102627490B1 (ko) 2024-01-19

Similar Documents

Publication Publication Date Title
KR102627000B1 (ko) 스크립트 기반 블록체인 상호작용
JP7220702B2 (ja) ブロックチェーンにおける擬似乱数生成
KR20230165886A (ko) 미결정 데이터에 기초한 블록체인 트랜잭션 보안 기법
WO2020240321A1 (en) Hash function attacks
WO2020240289A1 (en) Knowledge proof
Mishra et al. BB-tree based secure and dynamic public auditing convergence for cloud storage

Legal Events

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