KR102611572B1 - 잠금 해제 트랜잭션 바이트코드의 인젝션을 제한하는 기법 - Google Patents

잠금 해제 트랜잭션 바이트코드의 인젝션을 제한하는 기법 Download PDF

Info

Publication number
KR102611572B1
KR102611572B1 KR1020197035513A KR20197035513A KR102611572B1 KR 102611572 B1 KR102611572 B1 KR 102611572B1 KR 1020197035513 A KR1020197035513 A KR 1020197035513A KR 20197035513 A KR20197035513 A KR 20197035513A KR 102611572 B1 KR102611572 B1 KR 102611572B1
Authority
KR
South Korea
Prior art keywords
transaction
script
data
node
execution
Prior art date
Application number
KR1020197035513A
Other languages
English (en)
Other versions
KR20200010288A (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 GBGB1708192.8A external-priority patent/GB201708192D0/en
Priority claimed from GBGB1708200.9A external-priority patent/GB201708200D0/en
Priority claimed from GBGB1708190.2A external-priority patent/GB201708190D0/en
Priority claimed from GBGB1708185.2A external-priority patent/GB201708185D0/en
Priority claimed from GBGB1708196.9A external-priority patent/GB201708196D0/en
Priority claimed from GBGB1708198.5A external-priority patent/GB201708198D0/en
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20200010288A publication Critical patent/KR20200010288A/ko
Application granted granted Critical
Publication of KR102611572B1 publication Critical patent/KR102611572B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/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/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0658Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3674Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes involving authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of 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/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Power Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Peptides Or Proteins (AREA)
  • Window Of Vehicle (AREA)
  • Slot Machines And Peripheral Devices (AREA)

Abstract

본 발명은 컨센서스-기반 블록체인과 같은 분산 원장 기술에 관한 것이다. 잠금 해제 트랜잭션의 직렬화된 필드 값 세트가 잠금 스크립트 내로 인젝션되는 것을 야기하는 본 개시의 방법 및 시스템이 제공된다. 본 발명은, 예를 들어, 비트코인 블록체인일 수 있는 블록체인 네트워크를 사용해서 구현된다. 유효성 검증을 위한 제1 트랜잭션이 블록체인 네트워크에서의 노드에서 수신된다. 제1 트랜잭션은 제1 스크립트를 포함하는데, 이 제1 스크립트는 제1 트랜잭션의 필드 값 세트를 포함하고 실행되는 경우, 노드로 하여금 필드 값 세트를 획득하게 한다. 유효성 검증된 제2 트랜잭션이 획득된다. 제2 트랜잭션은 제2 스크립트를 포함하는데, 이 제2 스크립트는 실행되는 경우 노드로 하여금, 제1 스크립트의 실행의 결과로서 제공된 필드 값 세트에 적어도 부분적으로 기초하여 서명을 생성하게 한다. 제1 트랜잭션은 제1 스크립트 및 제2 스크립트를 실행함으로써 유효성 검증된다.

Description

잠금 해제 트랜잭션 바이트코드의 인젝션을 제한하는 기법
본 발명은, 일반적으로 블록체인 트랜잭션(blockchain transaction)을 포함하는 분산 원장(distributed ledger) 기술에 관한 것으로, 특히 블록체인 트랜잭션으로부터 잠금 해제(unlocking) 트랜잭션 스크립트에의 필드의 인젝션(injection; 주입)을 야기하는 기술에 관한 것이다. 본 발명은 블록체인 네트워크를 통해 수행되는 전자 전송과 관련하여 보안을 강화하기 위해 암호화 및 수학 기술을 이용한다. 본 발명은, 특히 스마트 계약(smart contracts) 및 상태 기계(state machines)에서 사용하기에 적합하지만, 이에 한정되는 것은 아니다.
본 명세서에 있어서는, "블록체인(blockchain)"이라는 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장을 포함한다는 의미로 사용한다. 이는 컨센서스(합의)-기반의 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함한다. 다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 용례는 비트코인(Bitcoin) 원장이다. "비트코인"이 본 개시물에서 설명되는 기술의 유용한 용례로서 참조될 수 있지만, 편의 및 예시의 목적으로, 비트코인은 본 개시물에서 설명되는 기술을 적용할 수 있는 많은 용례들 중 하나일 뿐이다. 그러나, 본 발명은 비트코인 블록체인에 사용하는 것으로 한정되지 않으며; 비-상업적인 용례를 포함하는 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위 내에 있는 것이라는 점에 유의해야 한다. 예를 들어, 본 기술은, 암호화폐 교환의 발생 여부와 관계 없이, 트랜잭션 내에 어떤 제약(constraints)이 인코딩될 수 있는지에 관하여 비트코인과 유사한 제한을 갖는 블록체인 구현예들을 이용하는 것에 대하여 장점을 제공할 것이다.
블록체인은, 결국 트랜잭션들 및 그 밖의 정보로 구성된 블록들로 구성되는 컴퓨터-기반의 탈-중앙집중형 분산 시스템으로 구현된 피어-투-피어(peer-to-peer) 전자 원장이다. 일부 실시예에 있어서, "블록체인 트랜잭션"은 데이터 및 조건 세트를 포함하는 구조화된 필드 값들의 집합을 인코딩하는 입력 메시지를 의미하며, 조건 세트의 충족은 블록체인 데이터 구조에 작성될 필드 세트에 대한 전제 조건이다. 예를 들어, 비트코인에 의하면, 각각의 트랜잭션은 블록체인 시스템 참여자들 사이의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 일부 구현예에 있어서, 디지털 자산의 제어를 전송하는 것은 디지털 자산의 적어도 일부를 제1 엔티티로부터 제2 엔티티로 재연계시키는 것에 의해 수행될 수 있다. 각각의 블록이 이전 블록의 해시를 포함하므로, 블록들이 함께 연쇄되어 그 개시 이래로 블록체인에 작성된 모든 트랜잭션의 영구적인 불변의 레코드를 생성한다. 트랜잭션은 그 입력 및 출력에 내재된 스크립트라고 하는 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 비트코인 플랫폼의 경우, 이러한 스크립트는 스택(stack)-기반 스크립팅 언어를 사용해서 작성된다.
즉, 스택-기반 스크립팅 언어는 스택을 이용할 수 있다. 스택에 의하면, 값들이 스택의 상위에 밀어넣어지거나(push) 또는 스택의 상위로부터 꺼내질(pop) 수 있다. 스택에 대하여 수행되는 다양한 연산은 스택의 상위에 대하여 하나 이상의 값을 밀어넣거나 또는 꺼내는 것을 초래할 수 있다. 예를 들어, OP_EQUAL 연산은 스택으로부터 상위 2개의 항목을 꺼내고, 이들을 비교하고, 결과(예컨대, 같으면 1 또는 같지 않으면 0)를 스택의 상위에 밀어넣는다. 스택에 대하여 수행되는 OP_PICK와 같은 다른 연산은 항목들이 스택의 상위 이외의 위치로부터 선택되게 할 수 있다. 본 발명의 일부 실시형태에 의해 채용되는 일부 스크립팅 언어에 있어서는, 적어도 2개의 스택: 즉, 메인 스택 및 대체 스택이 있을 수 있다. 스크립팅 언어의 일부 연산은 항목들을 하나의 스택의 상위로부터 다른 스택의 상의로 이동시킬 수 있다. 예를 들어, OP_TOALTSTACK은 값을 메인 스택의 상위로부터 대체 스택의 상위로 이동시킨다.
블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션이 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴자)는, 각각의 트랜잭션이 유효함을 보장하고, 무효한 트랜잭션이 네트워크로부터 거부되게 하는 작업을 수행한다. 한 노드는 다른 노드들과는 다른 유효성에 대한 표준을 가질 수 있다. 블록체인에서의 유효성이 컨센서스 기반으로 되기 때문에, 트랜잭션은 대부분의 노드가 트랜잭션이 유효하다고 동의할 경우에 유효한 것으로 간주된다. 노드에 인스톨된 소프트웨어 클라이언트는 아직 소비되지 않은 트랜잭션(UTXO)의 잠금 및 잠금 해제 스크립트를 실행함으로써 UTXO를 부분적으로 참조하는 트랜잭션에 대한 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가하고, 적용 가능할 경우, 다른 유효성 검증 조건들이 충족되면, 트랜잭션은 노드에 의해 유효한 것으로 된다. 유효성 검증된 트랜잭션은 다른 네트워크 노드들에 전파되고, 그 결과 채굴자 노드는 블록체인에 트랜잭션을 포함시키도록 선택할 수 있다. 따라서, 블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션은 i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고, 트랜잭션이 유효성 검증되면, 해당 노드가 네트워크 내의 다른 노드들에 트랜잭션을 중계하고; ii) 채굴자에 의해 구축되는 신규 블록에 추가되어야 하고; iii) 채굴, 즉 과거 트랜잭션들의 공공 원장에 추가되어야 한다. 트랜잭션을 사실상 불가역적으로 만들기 위해 충분한 수의 블록들이 블록체인에 추가된 경우, 트랜잭션은 확인된 것으로 간주된다.
본 개시물은 하나 이상의 블록체인 기반의 컴퓨터 프로그램의 기술적인 양태를 설명한다. 블록체인 기반의 컴퓨터 프로그램은 블록체인 트랜잭션에 기록되는 기계 판독 가능 및 실행 가능 프로그램이다. 블록체인 기반의 컴퓨터 프로그램은, 결과를 생성하기 위해 입력을 처리할 수 있으며, 후속하여 해당 결과에 따라 동작이 수행되게 할 수 있는 규칙을 포함한다. 잠금 스크립트가 잠금 해제 트랜잭션 및 이전의 트랜잭션 모두에 액세스할 수 있으면, 블록체인은 매우 유연하고 복잡한 스마트 계약을 가능하게 하는 데 이용될 수 있다. 현재 연구의 한 영역은 "스마트 계약"을 구현하기 위해 블록체인 기반의 컴퓨터 프로그램을 사용하는 것이다. 자연 언어로 작성되는 종래의 계약과 달리, 스마트 계약은 기계 판독 가능 계약서 또는 합의서의 조건의 실행을 자동화하도록 설계되는 컴퓨터 프로그램일 수 있다.
실시형태들에 있어서, 특정 엔티티들과의 상호작용이 스마트 계약의 특정 단계들에서 인코딩될 수 있지만, 스마트 계약은 자동으로 실행 및 자력-집행될 수도 있다. 일부 실시예에 있어서, 자동 실행은 UTXO의 전송을 가능하게 하기 위해 성공적으로 수행되는 스마트 계약의 실행을 의미한다. 이러한 실시예들에 있어서, UTXO의 전송을 야기할 수 있는 "엔티티"는 일부 비밀의 지식을 입증할 필요 없이 잠금 해제 스크립트를 생성할 수 있는 엔티티를 의미한다는 점에 유의한다. 다시 말해, 잠금 해제 트랜잭션은 데이터의 소스(예컨대, 잠금 해제 스크립트를 생성한 엔티티)가 암호화 비밀(예컨대, 개인 비대칭 키, 대칭 키 등)에 액세스할 수 있는지를 검증하지 않고 유효성이 검증될 수 있다. 또한, 이러한 실시예들에 있어서, 자력 집행은 블록체인 네트워크의 유효성 검증 노드가 잠금 해제 트랜잭션을 제약에 따라 집행하도록 야기된다는 것을 의미한다. 일부 실시예에 있어서, UTXO를 "잠금 해제"하는 것(UTXO를 "소비하는" 것이라고도 함)은, UTXO를 참조하고 유효한 것으로서 실행하는 잠금 해제 트랜잭션을 생성하는 것을 가리키는 기술적인 의미로 사용된다.
블록체인 트랜잭션 출력은 잠금 스크립트 및 비트코인과 같은 디지털 자산의 소유권에 관한 정보를 포함한다. 저당(encumbrance; 예상 지출)이라고 할 수도 있는 잠금 스크립트는 UTXO를 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 디지털 자산을 "잠금(locks)"한다. 예를 들어, 잠금 스크립트는 연계된 디지털 자산을 잠금 해제하도록 특정 데이터가 잠금 해제 스크립트에 제공되는 것을 필요로 할 수 있다. 비트코인에서는 잠금 스크립트를 "scriptPubKey"라고도 한다. 한 파티가 디지털 자산을 잠금 해제하기 위한 데이터를 제공하도록 요구하는 기술은 잠금 스크립트 내부에 데이터의 해시를 내재하는 것을 수반한다. 그러나, 이는 잠금 스크립트가 생성되는 시점에 데이터가 결정되지 않은 경우(예컨대, 알려지고 고정되지 않은 경우)에는 문제점을 드러낸다.
따라서, 하나 이상의 이들 양태에서 블록체인 기술을 향상시키는 개선된 방법 및 시스템을 제공하는 것이 바람직하다. 따라서, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법 및 상응하는 시스템이 제공된다.
본 발명은 검증 방법/시스템으로서, 및/또는 블록체인 트랜잭션의 유효성 검증을 제어하기 위한 제어 방법/시스템으로서 설명될 수 있다. 일부 실시형태에 있어서, 유효성 검증된 블록체인 트랜잭션은, 일부 용례에 있어서는 블록체인을 통해 디지털 자산의 교환 또는 전송을 초래할 수 있는, 블록체인에 대한 트랜잭션의 기록을 초래한다. 디지털 자산은 블록체인에 의해 관리되는 리소스의 단위이다. 일부 실시형태에 있어서는, 디지털 자산이 암호화폐로서 사용될 수 있지만, 실시형태들에 있어서의 디지털 자산은 부가적으로 또는 대안으로서 다른 상황에서 사용 가능할 것으로 생각된다. 디지털 자산의 제어에 적용 가능한 본 발명은 본질적으로 기술적인 것이며, 디지털 자산의 전송을 수반할 필요없이, 블록체인 데이터 구조를 이용하는 다른 상황에서 사용될 수 있다는 점에 유의한다. 후술되는 바와 같이, 본 발명은 또한, 블록체인 네트워크 또는 플랫폼을 통해 동작을 수행하는 새롭고, 개선되고, 유리한 방식을 위한 보안 방법/시스템으로서 설명될 수도 있다.
보다 상세하게 후술되는 바와 같이, 일 실시형태에 있어서, 잠금 스크립트는 잠금 해제 트랜잭션의 필드 값 세트 및 잠금 해제 트랜잭션의 잠금 해제 스크립트로부터의 서명 해시(SIGHASH) 타입을 취하고 서명 생성 및 검증 동작을 수행함으로써 잠금 해제 트랜잭션의 특정 필드들에 대한 액세스를 제공받을 수 있다.
보다 상세하게 후술되는 바와 같이, 일 실시형태에 있어서, 잠금 스크립트는, 직렬화된 이전 트랜잭션이 잠금 해제 트랜잭션의 잠금 해제 스크립트에 포함되도록, 잠금 해제 트랜잭션의 특정 필드들로부터 추출되는 트랜잭션 식별자(ID)를 제한함으로써 이전 트랜잭션에서의 필드 세트에 대한 액세스를 제공받을 수 있다. 실시형태에 따르면, 제1 트랜잭션에 대응하는 제1 필드 값 세트 및 다른 트랜잭션에 대응하는 제2 필드 값 세트를 입력으로서 취하고, 제1 필드 값 세트로부터 트랜잭션 식별자를 추출하고, 제2 필드 값 세트에 기초하여 다른 트랜잭션이 트랜잭션 식별자에 대응하는 것으로 결정함으로써, 직렬화된 이전 트랜잭션을 블록체인 트랜잭션 잠금 스크립트에 인젝션하는 방법이 제공될 수 있다.
보다 상세하게 후술되는 바와 같이, 일 실시형태에 있어서, 잠금 스크립트 및 잠금 해제 스크립트는 결정된 또는 미결정 소스(determined or undetermined source)로부터 미결정 데이터(undetermined data)의 안전한 제공을 가능하게 하도록 구성될 수 있다. 미결정 소스로부터의 데이터가 변조로부터 안전해지도록, 해당 데이터는 직렬화된 이전 트랜잭션에 내재될 수 있다. 데이터가 직렬화된 이전 트랜잭션 내에 있다고 해도, 이는 잠금 스크립트가 데이터를 특정 값으로 되도록 제한하지 않는다는 점에서 미결정인 것으로 간주된다는 점에 유의한다. 결정된 소스로부터의 데이터가 변조로부터 안전해지도록, 결정된 소스로부터의 공개 키가 잠금 스크립트에 포함될 수 있고, 여기서는 데이터가 공개 키를 수정하는 데 사용될 수 있으며, 이후 수정된 개인 키를 사용해서 서명되는 데이터의 서명을 유효성 검증하는 데 사용될 수 있다. 실시형태에 따르면, 미결정 데이터 및 제2 값을 취득하고, 미결정 데이터가 잠금 해제 스크립트에 제공되는 데이터 및 제2 값에 기초하여 데이터 소스와 연계되는지를 검증하기 위한 방법이 제공될 수 있다.
보다 상세하게 후술되는 바와 같이, 일 실시형태에 있어서, 파라미터화된 스마트 계약은 이전 트랜잭션으로부터 제약 파라미터를 추출하고 해당 제약 파라미터를 잠금 해제 트랜잭션의 필드에 적용함으로써 생성될 수 있다. 파라미터화된 스마트 계약은 결정된 또는 미결정 소스로부터 잠금 해제 트랜잭션의 잠금 해제 스크립트에 제공되는 안전한 미결정 데이터에 의해 파라미터화된 제약을 갖는 잠금 스크립트롤 통해 실현될 수 있다. 실시형태에 따르면, 디지털 자산의 재연계에 적용하기 위한 제약 세트를 결정할 수 있는 미결정 데이터를 취득하고 디지털 자산을 제약 세트에 따라 제2 엔티티와 재연계시키기 위한 방법이 제공될 수 있다.
보다 상세하게 후술되는 바와 같이, 일 실시형태에 있어서, 스마트 계약은 종료 조건에 도달될 때까지 자기-복제하도록 생성된다. 실시형태에 따르면, 종료 조건의 충족을 검사하고, 종료 조건이 충족되지 않으면, 이전 트랜잭션의 잠금 스크립트가 잠금 해제 트랜잭션의 잠금 스크립트와 일치하는지를 검사하기 위한 방법이 제공될 수 있다.
보다 상세하게 후술되는 바와 같이, 일 실시형태에 있어서, 파라미터화된 자기-복제 스마트 계약은 무신뢰(trustless) 결정성 상태 기계를 생성하는 데 사용될 수 있다. 실시형태에 따르면, 자기-복제 잠금 스크립를 검증하고, 결정된 소스로부터의 입력 및 무신뢰 결정성 상태 기계의 현재 상태에 적어도 부분적으로 기초하여, 무신뢰 결정성 상태 기계에 대한 다음 상태를 결정하기 위한 방법이 제공될 수 있다.
본 개시물에서 설명 및 제안되는 신규한 기술은 블록체인 데이터 구조 내에 저장되는 데이터의 무결성을 보장하는 블록체인의 속성을 파괴하지 않으면서 블록체인의 기능을 확장시킨다. 예를 들어, 이 기술은 연산 분야, 특히 디지털 자산들을 재연계시키기 위한 기준을 설정 및 강화하기 위해 블록체인 네트워크를 이용함으로써, 유효성 검증을 위한 조건이 레코드에 내재되는 스마트 계약으로 정의된 디지털 레코드 유효성 검증 분야를 개선한다. 부가적으로, 본 개시물에서 설명 및 제안되는 기술은 컴퓨터 프로그램 기능이 이러한 상태 기계에 기록되는 상태들에 의존할 수 있도록 블록체인 트랜잭션이 상태 기계로서 기능할 수 있게 함으로써 블록체인 네트워크의 기능을 개선할 수 있다.
또한, 본 개시물에서 설명 및 제안되는 기술은, 보안상의 이유로 기능을 제한하도록 특별히 설계된 블록체인 기술(예를 들면, 비트코인의 스크립트(Bitcoin's Script))에 의해 특별히 발생하는 문제점들을 극복하기 위해 필연적으로 컴퓨터 기술을 근거로 할 수 있다. 예를 들어, 스크립트(Script)는 근본적으로 복잡한 흐름 제어 기능, 예를 들어, 루프의 발생을 지원하지 않는다. 이 제한의 한 가지 장점은 프로그램들이 예측 가능한 실행 시간을 갖는다는 점이다. 스크립트리를 선형 또는 트리-형 결정 태스크로 제한하는 또 다른 현저한 장점은 이것이 서비스 거부(DoS 또는DDoS) 공격과 같은 익스플로잇 공격을 시작하는 수단으로서 사용될 수 있는 무한 루프를 회피한다는 점이다. 따라서, 블록체인 전송/교환의 보안이 강화되고 보존되지만, 언어 자체에 의해서는 허용되거나 제공되지 않는 기능을 구현하기 위한 메커니즘을 찾아야 한다. 본 발명은 이 점에 있어서, 자기-복제 및 자기-참조 블록체인 트랜잭션 잠금 스크립트의 구현으로 블록체인 트랜잭션의 현재의 한계를 적어도 부분적으로 해결하는 진전을 제공한다. 따라서, 본 발명은 기술적인 문제점에 대한 기술적인 해법을 제공하고, 보안, 블록체인을 통한 디지털 자산 교환/전송의 향상된 제어, 및 현재의 블록체인-관련 기능의 확장의 관점에서 장점을 제공한다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 컴퓨터-구현 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크에서의 노드에서, 디지털 자산의 제어를 전송하기 위한 제1 트랜잭션을 수신― 제1 트랜잭션은 적어도: 제1 트랜잭션의 필드 값 세트를 포함하고; 실행의 결과로서, 노드로 하여금 필드 값 세트를 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 디지털 자산과 연계되고, 실행의 결과로서, 노드로 하여금 적어도 제1 스크립트의 실행의 결과로서 공급되는 필드 값 세트에 적어도 부분적으로 기초하여 서명을 생성하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행될 수 있다.
제1 스크립트는 비대칭 키 쌍의 개인 암호화 키를 더 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는 노드로 하여금 개인 암호화 키 및 마스크 번호(mask number)에 적어도 부분적으로 기초하여 서명을 더 생성하게 할 수 있다. 부가적으로 또는 대안으로서, 제1 트랜잭션을 유효성 검증하는 단계는 서명이 비대칭 키 쌍의 공개 암호화 키와 연계되는지를 검증하는 단계를 더 포함할 수 있다.
제1 스크립트는 서명 해시 타입을 더 특정할 수 있다. 부가적으로 또는 대안으로서, 필드 값 세트는 서명 해시 타입에 적어도 부분적으로 기초할 수 있다.
서명 해시 타입은 제1 트랜잭션의 필드 값 세트의 어느 필드 값들이 서명에 포함되는지를 나타내는 값일 수 있다.
제2 스크립트는 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다. 부가적으로 또는 대안으로서, 잠금 스크립트의 실행은 조건 세트가 충족되었는지의 여부를 결정함으로써 노드로 하여금 제1 트랜잭션을 유효성 검증하게 할 수 있다.
제1 스크립트는 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
디지털 자산은 블록체인 네트워크에서 아직 소비되지 않은 트랜잭션 출력과 연계될 수 있다.
노드는 블록체인 네트워크에서 적어도 하나의 다른 노드에 통신 가능하게 연결된 컴퓨팅 장치일 수 있다.
블록체인 네트워크는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치로 구성될 수 있다.
제1 스크립트 및 제2 스크립트는 튜링 불완전성(Turing incomplete) 명령어 세트를 사용해서 작성될 수 있다.
제1 스크립트 및 제2 스크립트는 튜링 완전성(Turing complete) 명령어 세트를 사용해서 작성된다.
제1 스크립트는, 필드 세트를 포함함으로써, 제1 스크립트의 실행의 결과로서, 노드로 하여금 필드 세트를 제2 스크립트에 대한 입력으로서 이용 가능한 것으로 만들게 할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 컴퓨터-구현 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크에서의 노드에서, 디지털 자산의 제어를 전송하기 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도: 제1 트랜잭션에 대응하는 제1 필드 값 세트를 취득하게 하고; 특정 트랜잭션에 대응하는 제2 필드 값 세트를 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 디지털 자산과 연계되고, 실행의 결과로서, 노드로 하여금 적어도: 제1 스크립트의 실행의 결과로서 공급되는 제1 필드 값 세트 및 특정 트랜잭션의 제2 필드 값 세트를 취득하게 하고; 제1 필드 값 세트로부터 트랜잭션 식별자를 추출하게 하고; 제2 필드 값 세트에 적어도 부분적으로 기초하여, 특정 트랜잭션이 트랜잭션 식별자에 대응한다고 결정하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제2 필드 값 세트는 정규화된 포맷으로 될 수 있다.
노드는 제2 필드 값 세트의 해시를 생성함으로써 특정 트랜잭션이 트랜잭션 식별자에 대응한다고 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 해시가 트랜잭션 식별자와 일치하는지를 검증함으로써 특정 트랜잭션이 트랜잭션 식별자에 대응한다고 결정할 수 있다.
특정 트랜잭션은 디지털 자산의 제어가 전송되는 것과 연계될 수 있다.
특정 트랜잭션은 전송되는 디지털 자산과 다른 제2 디지털 자산과 연계될 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공할 수 있다.
노드는 블록체인 네트워크의 유효성 검증 노드일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는, 제1 트랜잭션의 성공적인 유효성 검증의 결과로서, 블록체인 네트워크에서의 블록체인에 제1 트랜잭션을 추가하는 단계를 더 포함할 수 있다.
제2 스크립트는 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다. 부가적으로 또는 대안으로서, 잠금 스크립트의 실행은 조건 세트가 충족되었는지의 여부를 결정함으로써 노드로 하여금 제1 트랜잭션을 유효성 검증하게 할 수 있다.
제1 스크립트는 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제1 스크립트는 서명 해시 타입을 특정할 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는, 실행의 결과로서, 노드로 하여금 제1 스크립트의 실행의 결과로서 공급되는 서명 해시 타입을 더 취득하게 할 수 있다.
제2 스크립트는, 실행의 결과로서, 노드로 하여금, 서명 해시 타입에 적어도 부분적으로 기초하여, 특정 트랜잭션이 제1 트랜잭션과 연계되는 트랜잭션 세트의 멤버라고 더 결정하게 할 수 있다.
제2 스크립트는, 실행의 결과로서, 노드로 하여금, 서명 해시 타입에 적어도 부분적으로 기초하여, 특정 트랜잭션이 제2 트랜잭션에 대응한다고 더 결정하게 할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 컴퓨터-구현 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크에서의 노드에서, 디지털 자산의 제어를 전송하기 위한 제1 트랜잭션을 수신― 제1 트랜잭션은 적어도: 제1 값― 제1 값의 적어도 일부는 제2 스크립트에 의해 제한되지 않는 데이터를 포함함 ―; 및 제2 값을 포함하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 디지털 자산과 연계되고, 실행의 결과로서, 노드로 하여금 적어도: 제1 스크립트의 실행의 결과로서 제1 값 및 제2 값을 취득하게 하고; 제1 값 및 제2 값에 적어도 부분적으로 기초하여, 데이터가 특정 소스와 연계되는지를 검증하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제2 스크립트는 제2 트랜잭션을 유효성 검증하기 위한 조건 세트를 포함하는 잠금 스크립트일 수 있다. 부가적으로 또는 대안으로서, 제1 스크립트는 잠금 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 수행될 수 있다.
데이터가 데이터 소스와 연계되는지를 검증하는 것에 실패하면, 제1 트랜잭션을 유효성 검증하는 것에 실패할 수 있다.
특정 소스의 아이덴티티는 제2 스크립트에 의해 제한되지 않을 수 있다.
특정 트랜잭션은 데이터의 특정 소스일 수 있다. 부가적으로 또는 대안으로서, 제1 값은 특정 트랜잭션의 필드 값 세트일 수 있다. 부가적으로 또는 대안으로서, 제2 값은 특정 트랜잭션과 연계되는 트랜잭션 식별자를 포함할 수 있다. 제2 스크립트는 특정 트랜잭션이 트랜잭션 식별자에 대응하는지를 검증함으로써 데이터가 데이터 소스와 연계되는지를 검증할 수 있다.
제2 스크립트는 트랜잭션 식별자가 특정 트랜잭션의 필드 세트의 해시와 일치하는지를 검증함으로써 특정 트랜잭션이 트랜잭션 식별자에 대응하는지를 검증할 수 있다.
제1 스크립트는, 특정 트랜잭션의 필드 세트를 포함함으로써, 제1 스크립트의 실행의 결과로서, 노드로 하여금 특정 트랜잭션의 필드 세트를 제2 스크립트에 대한 입력으로서 이용 가능한 것으로 만들게 할 수 있다.
특정 트랜잭션은 제2 트랜잭션일 수 있다.
데이터는 특정 트랜잭션의 필드에서 인코딩될 수 있다.
제2 스크립트는 특정 소스의 아이덴티티를 제한할 수 있다.
제2 값은 서명일 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는 노드로 하여금 데이터 소스와 연계되는 공개 키를 더 취득하게 하고, 부가적으로 또는 대안으로서, 공개 키 및 데이터에 적어도 부분적으로 기초하여, 수정된 공개 키를 더 생성하게 할 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는 수정된 공개 키에 적어도 부분적으로 기초하여 데이터가 데이터 소스와 연계되는지를 검증할 수 있다.
수정된 공개 키는 데이터의 값으로 공개 키에 대한 타원 곡선 점 곱셈(elliptic curve point multiplication)을 수행함으로써 생성될 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다. 그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 컴퓨터-구현 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크에서의 노드에서, 디지털 자산의 제어를 전송하기 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도 제1 트랜잭션의 데이터 및 제1 필드 값 세트를 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도: 제1 스크립트의 실행의 결과로서 공급되는 데이터에 적어도 부분적으로 기초하여 제약 세트를 결정하게 하고; 제1 필드 값 세트에 적어도 부분적으로 기초하여, 제1 트랜잭션에 대하여 제약 세트를 검증하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트의 실행의 결과로서 제약 세트에 따라 디지털 자산의 제어를 전송하는 단계를 포함할 수 있다.
디지털 자산의 제어를 전송하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 수행될 수 있다.
데이터의 소스의 아이덴티티는 제2 스크립트에 의해 제한되지 않을 수 있다.
제2 스크립트는 데이터의 소스의 아이덴티티를 제한할 수 있다.
제2 스크립트는 데이터를 검증하는 데 사용 가능한 특정 데이터 소스의 공개 키를 포함할 수 있다.
데이터를 검증하는 것은, 공개 키 및 데이터에 적어도 부분적으로 기초하여, 수정된 공개 키를 생성하는 것, 및 부가적으로 또는 대안으로서, 수정된 공개 키에 적어도 부분적으로 기초하여 데이터가 데이터 소스와 연계되는지를 결정하는 것을 포함할 수 있다.
제약 세트는 데이터의 파라미터 세트로부터 적어도 부분적으로 도출될 수 있다.
제약 세트의 충족은 디지털 자산의 적어도 일부를 재연계시키기 위한 조건일 수 있다.
디지털 자산의 제어를 전송하는 단계는 디지털 자산을 제1 엔티티로부터 제2 엔티티로 재연계시키는 단계를 포함할 수 있다.
제2 엔티티의 아이덴티티는 제약 세트에 적어도 부분적으로 기초하여 결정될 수 있다.
데이터의 소스는 제2 트랜잭션일 수 있다. 부가적으로 또는 대안으로서, 데이터는 제2 트랜잭션의 제2 필드 값 세트를 포함한다. 부가적으로 또는 대안으로서, 제2 스크립트의 실행은 제약 세트가 적어도 부분적으로 제2 필드 값 세트로부터 도출되게 할 수 있다.
제2 엔티티의 아이덴티티는 제약 세트에 적어도 부분적으로 기초하여 결정될 수 있다.
제약 세트는 디지털 자산의 적어도 일부가 제3 엔티티와 더 재연계되게 할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 컴퓨터-구현 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크에서의 노드에서, 디지털 자산의 제어를 전송하기 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도: 제1 트랜잭션의 제1 필드 값 세트를 취득― 제1 필드 값 세트는 제3 스크립트를 포함함 ―하게 하고; 제2 트랜잭션의 제2 필드 값 세트를 취득― 제2 필드 값 세트는 제2 스크립트의 복사본을 포함함 ―하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은, 실행의 결과로서, 노드로 하여금, 종료 조건이 충족되지 않는다고 결정한 결과로서, 적어도: 제1 필드 값 세트로부터 제3 스크립트를 취득하게 하고; 제2 스크립트의 복사본이 제3 스크립트와 일치한다고 결정하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트의 실행의 결과로서 디지털 자산의 제어를 전송하는 단계를 포함할 수 있다.
제2 트랜잭션은 디지털 자산과 연계되는 트랜잭션일 수 있다. 부가적으로 또는 대안으로서, 제1 트랜잭션은 디지털 자산의 적어도 일부를 제1 엔티티로부터 제2 엔티티로 재연계시키기 위한 트랜잭션일 수 있다.
제1 스크립트는 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제2 스크립트는 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다.
제3 스크립트는 장래의 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다.
디지털 자산의 제어를 전송하는 단계는 디지털 자산을 제1 엔티티로부터 제2 엔티티로 재연계시키는 단계를 포함할 수 있다.
종료 조건이 충족되지 않는다고 결정하는 것은 제2 트랜잭션과 연계되는 디지털 자산의 수량이 디지털 자산의 적어도 일부를 재연계시키기에 충분하다고 결정하는 것을 포함할 수 있다.
제3 스크립트는 제1 필드 값 세트의 필드 값에 내재될 수 있다.
블록체인 네트워크는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치로 구성될 수 있다.
디지털 자산의 제어를 전송하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 수행될 수 있다.
제2 스크립트는, 노드로 하여금, 디지털 자산의 제어를 전송하기 위한 추가 조건으로서, 제1 트랜잭션이 추가적인 제약을 충족시키는지를 더 검증하게 할 수 있다.
제1 및 제2 트랜잭션은 디지털 자산과 연계되는 반복되는 스마트 계약 세트의 멤버들일 수 있다.
반복되는 스마트 계약 세트는 종료 조건에 의해 종료될 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 컴퓨터-구현 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 컴퓨터-구현 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 컴퓨터-구현 방법은: i) 블록체인 네트워크에서의 노드에서, 디지털 자산의 제어를 전송하기 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도 제1 트랜잭션의 제1 필드 값 세트, 제2 트랜잭션의 제2 필드 값 세트, 및 입력을 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 규칙 세트를 포함하는 제2 스크립트― 제2 스크립트는, 실행의 결과로서, 노드로 하여금 적어도: 제2 스크립트가 제1 필드 값 세트에 내재되는 제3 스크립트와 일치하는지를 검증하게 하고; 제2 필드 값 세트에 적어도 부분적으로 기초하여, 현재 상태를 결정하게 하고; 현재 상태, 입력, 및 규칙 세트에 적어도 부분적으로 기초하여, 다음 상태를 결정하게 하고; 다음 상태가 제1 필드 값 세트에 포함되는지를 검증하게 함 ―를 포함함 ―하는 단계; iii) 제1 스크립트 및 제2 스크립트의 실행의 결과로서 디지털 자산의 제어를 전송하는 단계를 포함할 수 있다.
제2 스크립트는 입력 소스의 아이덴티티를 제한할 수 있다.
청구된 방법들 중 어느 하나는 입력 소스의 암호화 비밀을 검증하는 단계를 더 포함할 수 있다.
규칙 세트는 상태-전이 매트릭스일 수 있다.
제3 스크립트는 장래의 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다.
제2 스크립트는 노드로 하여금 종료 조건이 충족되지 않는다고 더 결정하게 할 수 있다.
입력은 제2 필드 값 세트에 내재될 수 있다.
종료 조건은 제2 트랜잭션과 연계되는 디지털 자산이 전송되기에 불충분한 크기로 된다는 것일 수 있다.
현재 상태는 제2 트랜잭션의 상태를 나타낼 수 있다.
다음 상태는 유효성 검증시의 제1 트랜잭션의 상태를 나타낼 수 있다.
청구된 방법들 중 어느 하나는 제3 트랜잭션을 수신하는 단계를 더 포함할 수 있다. 부가적으로 또는 대안으로서, 청구된 방법들 중 어느 하나는 제1 트랜잭션으로부터 제4 스크립트를 취득― 제4 스크립트는, 실행의 결과로서, 노드로 하여금, 다음 상태, 제2 입력, 및 규칙 세트에 적어도 부분적으로 기초하여, 다음 상태 및 현재 상태와는 상이한 다른 상태를 결정하게 함 ―하는 단계를 더 포함할 수 있다.
현재 상태 및 다음 상태는 제1 트랜잭션 및 제2 트랜잭션에 대한 가능한 상태 세트의 멤버들일 수 있다.
디지털 자산의 제어를 전송하는 단계는 디지털 자산을 제1 엔티티로부터 제2 엔티티로 재연계시키는 단계를 포함할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 방법은: i) 블록체인 네트워크에서의 노드에서, 유효성 검증을 위한 제1 트랜잭션을 수신― 제1 트랜잭션은 적어도: 제1 트랜잭션의 필드 값 세트를 포함하고; 실행의 결과로서, 노드로 하여금 필드 값 세트를 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 유효성 검증되어 있고, 실행의 결과로서, 노드로 하여금 적어도 제1 스크립트의 실행의 결과로서 공급되는 필드 값 세트에 적어도 부분적으로 기초하여 서명을 생성하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행될 수 있다.
제1 스크립트는 비대칭 키 쌍의 개인 암호화 키를 더 포함할 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는 노드로 하여금 개인 암호화 키 및 마스크 번호(mask number)에 적어도 부분적으로 기초하여 서명을 더 생성하게 할 수 있다. 부가적으로 또는 대안으로서, 제1 트랜잭션을 유효성 검증하는 단계는 서명이 비대칭 키 쌍의 공개 암호화 키와 연계되는지를 검증하는 단계를 더 포함할 수 있다.
제1 스크립트는 서명 해시 타입을 더 특정할 수 있다. 부가적으로 또는 대안으로서, 필드 값 세트는 서명 해시 타입에 적어도 부분적으로 기초할 수 있다.
서명 해시 타입은 제1 트랜잭션의 필드 값 세트의 어느 필드 값들이 서명에 포함되는지를 나타내는 값일 수 있다.
제2 스크립트는 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다. 부가적으로 또는 대안으로서, 잠금 스크립트의 실행은 조건 세트가 충족되었는지의 여부를 결정함으로써 노드로 하여금 제1 트랜잭션을 유효성 검증하게 할 수 있다.
제1 스크립트는 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 아직 소비되지 않은 트랜잭션 출력의 전송을 야기할 수 있다.
노드는 블록체인 네트워크에서 적어도 하나의 다른 노드에 통신 가능하게 연결된 컴퓨팅 장치일 수 있다.
블록체인 네트워크는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치로 구성될 수 있다.
제1 스크립트 및 제2 스크립트는 튜링 불완전성(Turing incomplete) 명령어 세트를 사용해서 작성될 수 있다.
제1 스크립트 및 제2 스크립트는 튜링 완전성(Turing complete) 명령어 세트를 사용해서 작성된다.
제1 스크립트는, 필드 세트를 포함함으로써, 제1 스크립트의 실행의 결과로서, 노드로 하여금 필드 세트를 제2 스크립트에 대한 입력으로서 이용 가능한 것으로 만들게 할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 방법은: i) 블록체인 네트워크에서의 노드에서, 유효성 검증을 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도: 제1 트랜잭션에 대응하는 제1 필드 값 세트를 취득하게 하고; 특정 트랜잭션에 대응하는 제2 필드 값 세트를 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 유효성 검증되어 있고, 실행의 결과로서, 노드로 하여금 적어도: 제1 스크립트의 실행의 결과로서 공급되는 제1 필드 값 세트 및 특정 트랜잭션의 제2 필드 값 세트를 취득하게 하고; 제1 필드 값 세트로부터 트랜잭션 식별자를 추출하게 하고; 제2 필드 값 세트에 적어도 부분적으로 기초하여, 특정 트랜잭션이 트랜잭션 식별자에 대응한다고 결정하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제2 필드 값 세트는 정규화된 포맷으로 될 수 있다.
노드는 제2 필드 값 세트의 해시를 생성함으로써 특정 트랜잭션이 트랜잭션 식별자에 대응한다고 결정할 수 있다. 부가적으로 또는 대안으로서, 노드는 해시가 트랜잭션 식별자와 일치하는지를 검증함으로써 특정 트랜잭션이 트랜잭션 식별자에 대응한다고 결정할 수 있다.
특정 트랜잭션은 제1 트랜잭션을 유효성 검증한 결과로서 전송되는 디지털 자산의 제어와 연계될 수 있다.
특정 트랜잭션은 제1 트랜잭션을 유효성 검증한 결과로서 전송되는 디지털 자산과는 다른 제2 디지털 자산과 연계될 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공할 수 있다.
노드는 블록체인 네트워크의 유효성 검증 노드일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는, 제1 트랜잭션의 성공적인 유효성 검증의 결과로서, 블록체인 네트워크에서의 블록체인에 제1 트랜잭션을 추가하는 단계를 더 포함할 수 있다.
제2 스크립트는 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다. 부가적으로 또는 대안으로서, 잠금 스크립트의 실행은 조건 세트가 충족되었는지의 여부를 결정함으로써 노드로 하여금 제1 트랜잭션을 유효성 검증하게 할 수 있다.
제1 스크립트는 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제1 스크립트는 서명 해시 타입을 특정할 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는, 실행의 결과로서, 노드로 하여금 제1 스크립트의 실행의 결과로서 공급되는 서명 해시 타입을 더 취득하게 할 수 있다.
제2 스크립트는, 실행의 결과로서, 노드로 하여금, 서명 해시 타입에 적어도 부분적으로 기초하여, 특정 트랜잭션이 제1 트랜잭션과 연계되는 트랜잭션 세트의 멤버라고 더 결정하게 할 수 있다.
제2 스크립트는, 실행의 결과로서, 노드로 하여금, 서명 해시 타입에 적어도 부분적으로 기초하여, 특정 트랜잭션이 제2 트랜잭션에 대응한다고 더 결정하게 할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 방법은: i) 블록체인 네트워크에서의 노드에서, 유효성 검증을 위한 제1 트랜잭션을 수신― 제1 트랜잭션은 적어도: 제1 값― 제1 값의 적어도 일부는 제2 스크립트에 의해 제한되지 않는 데이터를 포함함 ―; 및 제2 값을 포함하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 유효성 검증되어 있고, 실행의 결과로서, 노드로 하여금 적어도: 제1 스크립트의 실행의 결과로서 제1 값 및 제2 값을 취득하게 하고; 제1 값 및 제2 값에 적어도 부분적으로 기초하여, 데이터가 특정 소스와 연계되는지를 검증하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트를 실행함으로써 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제2 스크립트는 제2 트랜잭션을 유효성 검증하기 위한 조건 세트를 포함하는 잠금 스크립트일 수 있다. 부가적으로 또는 대안으로서, 제1 스크립트는 잠금 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 수행될 수 있다.
데이터가 데이터 소스와 연계되는지를 검증하는 것에 실패하면, 제1 트랜잭션을 유효성 검증하는 것에 실패할 수 있다.
특정 소스의 아이덴티티는 제2 스크립트에 의해 제한되지 않을 수 있다.
특정 트랜잭션은 데이터의 특정 소스일 수 있다. 부가적으로 또는 대안으로서, 제1 값은 특정 트랜잭션의 필드 값 세트일 수 있다. 부가적으로 또는 대안으로서, 제2 값은 특정 트랜잭션과 연계되는 트랜잭션 식별자를 포함할 수 있다. 제2 스크립트는, 실행의 결과로서, 특정 트랜잭션이 트랜잭션 식별자에 대응하는지를 검증함으로써 데이터가 데이터 소스와 연계되는지를 검증할 수 있다.
제2 스크립트는, 실행의 결과로서, 트랜잭션 식별자가 특정 트랜잭션의 필드 세트의 해시와 일치하는지를 검증함으로써 특정 트랜잭션이 트랜잭션 식별자에 대응하는지를 검증할 수 있다.
제1 스크립트는, 특정 트랜잭션의 필드 세트를 포함함으로써, 제1 스크립트의 실행의 결과로서, 노드로 하여금 특정 트랜잭션의 필드 세트를 제2 스크립트에 대한 입력으로서 이용 가능한 것으로 만들게 할 수 있다.
특정 트랜잭션은 제2 트랜잭션일 수 있다.
데이터는 특정 트랜잭션의 필드에서 인코딩될 수 있다.
제2 스크립트는 특정 소스의 아이덴티티를 제한할 수 있다.
제2 값은 서명일 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는 노드로 하여금 데이터 소스와 연계되는 공개 키를 더 취득하게 하고, 부가적으로 또는 대안으로서, 공개 키 및 데이터에 적어도 부분적으로 기초하여, 수정된 공개 키를 더 생성하게 할 수 있다. 부가적으로 또는 대안으로서, 제2 스크립트는, 실행의 결과로서, 수정된 공개 키에 적어도 부분적으로 기초하여 데이터가 데이터 소스와 연계되는지를 검증할 수 있다.
수정된 공개 키는 데이터의 값으로 공개 키에 대한 타원 곡선 점 곱셈(elliptic curve point multiplication)을 수행함으로써 생성될 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 방법은: i) 블록체인 네트워크에서의 노드에서, 유효성 검증을 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도 제1 트랜잭션의 데이터 및 제1 필드 값 세트를 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도: 제1 스크립트의 실행의 결과로서 공급되는 데이터에 적어도 부분적으로 기초하여 제약 세트를 결정하게 하고; 제1 필드 값 세트에 적어도 부분적으로 기초하여, 제1 트랜잭션에 대하여 제약 세트를 검증하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트의 실행의 결과로서 제약 세트에 따라 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 수행될 수 있다.
데이터의 소스의 아이덴티티는 제2 스크립트에 의해 제한되지 않을 수 있다.
제2 스크립트는 데이터의 소스의 아이덴티티를 제한할 수 있다.
제2 스크립트는 데이터를 검증하는 데 사용 가능한 특정 데이터 소스의 공개 키를 포함할 수 있다.
데이터를 검증하는 것은, 공개 키 및 데이터에 적어도 부분적으로 기초하여, 수정된 공개 키를 생성하는 것, 및 부가적으로 또는 대안으로서, 수정된 공개 키에 적어도 부분적으로 기초하여 데이터가 데이터 소스와 연계되는지를 결정하는 것을 포함할 수 있다.
제약 세트는 데이터의 파라미터 세트로부터 적어도 부분적으로 도출될 수 있다.
제약 세트의 충족은 디지털 자산의 적어도 일부를 재연계시키기 위한 조건일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 디지털 자산을 제1 엔티티로부터 제2 엔티티로 재연계시키는 단계를 포함할 수 있다.
제약 세트는 디지털 자산의 적어도 일부가 제3 엔티티와 더 재연계되게 할 수 있다.
제2 엔티티의 아이덴티티는 제약 세트에 적어도 부분적으로 기초하여 결정될 수 있다.
데이터의 소스는 제2 트랜잭션일 수 있다. 부가적으로 또는 대안으로서, 데이터는 제2 트랜잭션의 제2 필드 값 세트를 포함한다. 부가적으로 또는 대안으로서, 제2 스크립트의 실행은 제약 세트가 적어도 부분적으로 제2 필드 값 세트로부터 도출되게 할 수 있다.
제2 엔티티의 아이덴티티는 제약 세트에 적어도 부분적으로 기초하여 결정될 수 있다.
제약 세트는 디지털 자산의 적어도 일부가 제3 엔티티와 더 재연계되게 할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 방법은: i) 블록체인 네트워크에서의 노드에서, 유효성 검증을 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도: 제1 트랜잭션의 제1 필드 값 세트를 취득― 제1 필드 값 세트는 제3 스크립트를 포함함 ―하게 하고; 제2 트랜잭션의 제2 필드 값 세트를 취득― 제2 필드 값 세트는 제2 스크립트의 복사본을 포함함 ―하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은, 실행의 결과로서, 노드로 하여금, 종료 조건이 충족되지 않는다고 결정한 결과로서, 적어도: 제1 필드 값 세트로부터 제3 스크립트를 취득하게 하고; 제2 스크립트의 복사본이 제3 스크립트와 일치한다고 결정하게 하는 제2 스크립트를 포함함 ―하는 단계; 및 iii) 제1 스크립트 및 제2 스크립트의 실행의 결과로서 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제1 스크립트는 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트일 수 있다.
제2 스크립트는 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다.
제3 스크립트는 장래의 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다.
제2 트랜잭션은 디지털 자산과 연계되는 트랜잭션일 수 있다. 부가적으로 또는 대안으로서, 제1 트랜잭션은 디지털 자산의 적어도 일부를 제1 엔티티로부터 제2 엔티티로 재연계시키기 위한 트랜잭션일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 디지털 자산을 제1 엔티티로부터 제2 엔티티로 재연계시키는 단계를 포함할 수 있다.
종료 조건이 충족되지 않는다고 결정하는 것은 제2 트랜잭션과 연계되는 디지털 자산의 수량이 디지털 자산의 적어도 일부를 재연계시키기에 충분하다고 결정하는 것을 포함할 수 있다.
제3 스크립트는 제1 필드 값 세트의 필드 값에 내재될 수 있다.
블록체인 네트워크는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치로 구성될 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 수행될 수 있다.
제2 스크립트는 노드로 하여금, 제1 트랜잭션을 유효성 검증하기 위한 추가 조건으로서, 제1 트랜잭션이 추가적인 제약을 충족시키는지를 더 검증하게 할 수 있다.
제1 및 제2 트랜잭션은 디지털 자산과 연계되는 반복되는 스마트 계약 세트의 멤버들일 수 있다.
반복되는 스마트 계약 세트는 종료 조건에 의해 종료될 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
그러므로, 본 발명에 따르면, 첨부된 청구항들에서 규정되는 바와 같은 방법(및 그에 상응하는 시스템(들))이 제공될 수 있다. 방법은 블록체인 데이터 제약 방법으로서 설명될 수 있다. 방법은: i) 블록체인 네트워크에서의 노드에서, 유효성 검증을 위한 제1 트랜잭션을 수신― 제1 트랜잭션은, 실행의 결과로서, 노드로 하여금 적어도 제1 트랜잭션의 제1 필드 값 세트, 제2 트랜잭션의 제2 필드 값 세트, 및 입력을 취득하게 하는 제1 스크립트를 포함함 ―하는 단계; ii) 제2 트랜잭션을 취득― 제2 트랜잭션은 규칙 세트를 포함하는 제2 스크립트― 제2 스크립트는, 실행의 결과로서, 노드로 하여금 적어도: 제2 스크립트가 제1 필드 값 세트에 내재되는 제3 스크립트와 일치하는지를 검증하게 하고; 제2 필드 값 세트에 적어도 부분적으로 기초하여, 현재 상태를 결정하게 하고; 현재 상태, 입력, 및 규칙 세트에 적어도 부분적으로 기초하여, 다음 상태를 결정하게 하고; 다음 상태가 제1 필드 값 세트에 포함되는지를 검증하게 함 ―를 포함함 ―하는 단계; iii) 제1 스크립트 및 제2 스크립트의 실행의 결과로서 제1 트랜잭션을 유효성 검증하는 단계를 포함할 수 있다.
제2 스크립트는 입력 소스의 아이덴티티를 제한할 수 있다.
청구된 방법들 중 어느 하나는 입력 소스의 암호화 비밀을 검증하는 단계를 더 포함할 수 있다.
규칙 세트는 상태-전이 매트릭스일 수 있다.
제3 스크립트는 장래의 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트일 수 있다.
제2 스크립트는 노드로 하여금 종료 조건이 충족되지 않는다고 더 결정하게 할 수 있다.
입력은 제2 필드 값 세트에 내재될 수 있다.
종료 조건은 제2 트랜잭션과 연계되는 디지털 자산이 전송되기에 불충분한 크기로 된다는 것일 수 있다.
제1 트랜잭션을 유효성 검증하는 단계는 디지털 자산을 제1 엔티티로부터 제2 엔티티로 재연계시키는 단계를 포함할 수 있다.
현재 상태는 제2 트랜잭션의 상태를 나타낼 수 있다.
다음 상태는 유효성 검증시의 제1 트랜잭션의 상태를 나타낼 수 있다.
청구된 방법들 중 어느 하나는 제3 트랜잭션을 수신하는 단계를 더 포함할 수 있다. 부가적으로 또는 대안으로서, 청구된 방법들 중 어느 하나는 제1 트랜잭션으로부터 제4 스크립트를 취득― 제4 스크립트는, 실행의 결과로서, 노드로 하여금, 다음 상태, 제2 입력, 및 규칙 세트에 적어도 부분적으로 기초하여, 다음 상태 및 현재 상태와는 상이한 다른 상태를 결정하게 함 ―하는 단계를 더 포함할 수 있다.
현재 상태 및 다음 상태는 제1 트랜잭션 및 제2 트랜잭션에 대한 가능한 상태 세트의 멤버들일 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하다.
본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 다양한 실시형태가 구현될 수 있는 블록체인 환경을 도시하고;
도 2는 일 실시형태에 따른 무신뢰 결정성 상태 기계의 실시예를 도시하고;
도 3은 일 실시형태에 의해 해결되는 잠금 스크립트와 연계되는 문제점의 실시예를 도시하고;
도 4는 일 실시형태에 따른 잠금 해제 스크립에 액세스 가능한 데이터의 실시예를 도시하고;
도 5는 일 실시형태에 따른 직렬화된 트랜잭션 필드 세트로부터 서명을 생성하는 실시예를 도시하고;
도 6은 일 실시형태에 따른 직렬화된 잠금 해제 트랜잭션 필드 세트의 인젝션을 야기하는 실시예를 도시하는 흐름도이고;
도 7은 일 실시형태에 의해 해결되는 잠금 스크립트와 연계되는 문제점의 다른 실시예를 도시하고;
도 8은 일 실시형태에 따른 직렬화된 이전 트랜잭션의 인젝션을 야기하는 실시예를 도시하고;
도 9는 일 실시형태에 따른 서명 해시 타입에 따라 이용 가능한 필드 세트의 실시예를 도시하고;
도 10은 일 실시형태에 따른 직렬화된 트랜잭션으로부터 트랜잭션 식별자를 추출하는 실시예를 도시하고;
도 11은 일 실시형태에 따른 직렬화된 이전 트랜잭션의 인젝션을 야기하는 실시예를 도시하는 흐름도이고;
도 12는 일 실시형태에 따른 미결정 소스로부터 미결정 데이터의 안전하지 않은 제공의 실시예를 도시하고;
도 13은 일 실시형태에 따른 결정된 소스로부터 미결정 데이터의 안전한 제공의 실시예를 도시하고;
도 14는 일 실시형태에 따른 미결정 소스로부터 잠금 스크립트로의 미결정 데이터의 안전한 제공의 실시예를 도시하고;
도 15는 일 실시형태에 따른 잠금 스크립트로의 미결정 데이터의 안전한 제공의 실시예를 도시하는 흐름도이고;
도 16은 일 실시형태에 따른 파라미터화된 스마트 계약의 실시예를 도시하고;
도 17은 일 실시형태에 따른 파라미터화된 스마트 계약의 실행의 실시예를 도시하는 흐름도이고;
도 18은 일 실시형태에 의해 해결되는 스마트 계약 복제의 문제점의 실시예를 도시하고;
도 19는 일 실시형태에 따른 스마트 계약 복제의 문제점에 대한 해법의 실시예를 도시하고;
도 20은 일 실시형태에 따라 해결되는 스마트 계약 복제의 문제점의 다른 실시예를 도시하고;
도 21은 일 실시형태에 따른 자기-복제 스마트 계약의 실시예를 도시하고;
도 22는 일 실시형태에 따른 종료 조건을 갖는 자기-복제 스마트 계약의 실시예를 도시하는 흐름도이고;
도 23은 일 실시형태에 따라 해결되는 다음 상태 결정에 관한 문제점의 실시예를 도시하고;
도 24는 일 실시형태에 따른 무신뢰 결정성 상태 기계의 실시예를 도시하고;
도 25는 일 실시형태에 따른 무신뢰 결정성 상태 기계의 실시예를 도시하는 흐름도이고;
도 26은 다양한 실시형태가 구현될 수 있는 컴퓨팅 환경을 도시한다.
먼저, 본 개시물의 일 실시형태에 따른 블록체인과 연계되는 예시적인 블록체인 네트워크(100)를 도시하는 도 1을 참조한다. 실시형태에 있어서, 예시적인 블록체인 네트워크(100)는 블록체인 프로토콜의 인스턴스를 실행하는 피어-투-피어 분산 전자 장치로 구성된다. 일부 실시예에 있어서는, 분산 전자 장치를 노드(102)라고 한다. 블록체인 프로토콜의 실시예는 비트코인 프로토콜이다.
노드(102)는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치(예컨대, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰 등)에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다.
일 실시형태에 있어서, 노드(102)들 중 하나 이상의 노드는 노드(102)들 중 하나 이상의 다른 노드에 통신 가능하게 연결된다. 이러한 통신 가능한 연결은 하나 이상의 유선 또는 무선 통신을 포함할 수 있다. 일 실시형태에 있어서, 노드(102)들 각각은 블록체인에서의 모든 트랜잭션의 "원장(ledger)"의 적어도 일부를 유지한다. 이러한 방식으로, 원장은 분산 원장이다. 원장에 영향을 미치는 노드에 의해 처리되는 트랜잭션은 원장의 무결성이 유지되도록 하나 이상의 다른 노드들에 의해 검증될 수 있다.
일 실시형태에 있어서, 노드(102)들 중 적어도 일부는 암호화 문제의 해결과 같은 복잡한 계산을 수행하는 채굴자 노드이다. 암호화 문제를 해결한 채굴자 노드는 블록체인을 위한 새로운 블록을 생성하고 새로운 블록을 다른 노드(102)들에 브로드캐스트한다. 다른 노드(102)들은 채굴자 노드의 작업을 검증하고, 검증시에, 블록을 블록체인에 수용한다(예컨대, 블록을 블록체인의 분산 원장에 추가하는 것에 의함). 일부 실시예에 있어서, 블록은 이전 블록의 타입스탬프(timestamp) 및 "핑거프린트(fingerprint)"(예컨대, 해시)로 표시되곤 하는 트랜잭션들의 그룹이다. 이러한 방식으로, 각각의 블록이 이전 블록과 연결되고, 그에 따라 블록체인에서 블록들을 연결하는 "체인(chain)"이 생성된다. 실시형태들에 있어서, 유효한 블록들은 노드(102)들의 컨센서스에 의해 블록체인에 추가된다. 또한, 일부 실시예에 있어서, 블록체인은 유효성 검증된 블록들의 리스트를 포함한다.
일 실시형태에 있어서, 노드(102)들 중 적어도 일부는 본 개시물에 개시된 바와 같이 트랜잭션들을 유효성 검증하는 유효성 검증 노드로서 동작한다. 일부 실시예에 있어서, 트랜잭션은 디지털 자산(예컨대, 다수의 비트코인)의 소유권의 증명을 제공하는 데이터 및 디지털 자산의 소유권/제어를 수용 또는 전송하기 위한 조건을 포함한다. 일부 실시예에 있어서, "잠금 해제 트랜잭션(unlocking transaction)"은 이전 트랜잭션의 아직 소비되지 않은 트랜잭션 출력(UTXO)에 의해 표시되는 디지털 자산의 적어도 일부를 블록체인 어드레스와 연계되는 엔티티에 재연계시키는(예컨대, 소유권 또는 제어를 전송하는) 트랜잭션을 의미한다. 일부 실시예에 있어서, "이전 트랜잭션(previous transaction)"은 잠금 해제 트랜잭션에 의해 참조되는 UTXO를 포함하는 트랜잭션을 의미한다. 일부 실시형태에 있어서, 트랜잭션은 소유권/제어가 전송("잠금 해제")될 수 있기 전에 충족되어야 하는 조건을 갖는 트랜잭션을 저당잡는 "잠금 스크립트(locking script)"를 포함한다. 일부 실시형태에 있어서, 블록체인 어드레스는 디지털 자산의 적어도 일부의 제어가 전송/재연계되고 있는 엔티티와 연계된 문자숫자로 된 문자열이다. 일부 실시형태에서 구현되는 일부 블록체인 프로토콜에 있어서, 엔티티와 연계되는 공개 키와 블록체인 어드레스 사이에는 일대일 대응관계가 존재한다. 트랜잭션들의 유효성 검증은 잠금 스크립트 및/또는 잠금 해제 스크립트에서 특정되는 하나 이상의 조건을 유효성 검증하는 것을 수반할 수 있다. 트랜잭션(104)의 성공적인 유효성 검증시에, 유효성 검증 노드는 트랜잭션(104)을 블록체인에 추가하고 노드(102)들에게 분산시킨다.
도 2는 본 개시물의 예시적인 실시형태(200)를 도시한다. 구체적으로, 도 2는 제1 상태(206)를 인코딩하는 이전 블록체인 트랜잭션(202) 및 제2 상태(208)를 인코딩하는 잠금 해제 블록체인 트랜잭션(204)을 묘사한다. 예시적인 실시형태(200)에 있어서, 최초의 제1 상태(206)는 이전 블록체인 트랜잭션(202)에 내재되는 파라미터로서 나타내진다. 제약을 파라미터화하는 것에 관한 추가적인 세부 내용은 도 16의 설명에서 확인된다. 잠금 해제 블록체인 트랜잭션(204)은 제2 상태(208)를 나타내는 파라미터를 포함할 것이다.
예시적인 실시형태(200)에 있어서, 트랜잭션들(202 및 204)은 하나 이상의 입력 및 하나 이상의 출력을 포함하는 필드 값들의 세트들이다. 일부 실시형태에 있어서, 입력들 및 출력들은 적어도 하나의 엔티티로부터 적어도 다른 엔티티로 디지털 자산의 적어도 일부를 재연계시키려는 의도를 반영한다. 예시적인 실시형태(200)에 있어서, 이전 블록체인 트랜잭션(202)은 블록체인에 포함된, 가장 최신의 확인된 트랜잭션이다. 예시적인 실시형태(200)에 있어서, 잠금 해제 블록체인 트랜잭션(204)은 아직 확인되지 않고 아직 블록체인에 포함되지 않은 가까운 장래의 트랜잭션이다. 잠금 해제 블록체인 트랜잭션(204)의 입력들은 각각 이전 블록체인 트랜잭션(202)의 출력을 수신한다.
비트코인과 같은 일부 블록체인 기술은 디지털 서명을 위한 수학적 스킴으로서 타원 곡선 디지털 서명 알고리즘(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인 바이트로 표현되고, SIGHASH_SINGLE은 값이 3인 바이트로 표현되고, 또한 SIGHASH_ANYONECANPAY는 값이 80인 바이트로 표현된다. 일부 구현예에 있어서, 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-비트 숫자들 중 제1 숫자 r이 다음 식에 따라 결정된다:
r = x mod n
이후, ECDS에서 256-비트 숫자들 중 제2 숫자 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에서의 특정 연산 부호가 아닌 연산 부호에 의해 수행되는 연산을 예시하는 것으로 간주된다. 일부 실시형태에 있어서, 스크립팅 시스템은 튜링 불완전성 명령어 세트(예컨대, 루프, 재귀, "goto" 문(스테이트먼트) 등에 대한 지원의 결여)이다. 다른 실시형태들에 있어서, 스크립팅 시스템은 튜링 완전성 명령어 세트이다.
본 개시물의 특정 실시형태들은 설명된 명령어 세트를 구현하기 위한 스크립팅 시스템 또는 다른 시스템이 단일의 스크립트에서 200개 이상의 명령어(예컨대, 연산 부호)를 허용한다는 가정하에서 동작한다. 유사하게, 본 개시물의 특정 실시형태들은 다음을 더 가정한다:
· 본 개시물에서 참조되는 연산 부호들에 의해 제공되는 기능은 명령어의 연산 부호 스크립트/세트를 실행하는 시스템에 존재하고 사용 가능하다; 및/또는
· 원하는 거동을 제공하기 위해 작성된 사용자 정의 함수의 생성에 의해 필요한 기능을 실현할 수 있다. 이러한 사용자 정의 함수는 언어로 나타나되 비활성화되어 있는 op_codes의 기능을 구현하도록 작성될 수 있거나, 또는 기본적으로 스크립팅 언어 자체에서는 제공되지 않는 특정 기능을 제공하는 "새로운" op_codes일 수 있다.
본 개시물에서 참조되는 연산 부호들의 실시예는 다음을 포함한다:
· 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_MUL, 스택 상의 상위 2개의 항목을 곱한다
· OP_NOTIF, 상위 스택 값이 거짓이면, 스테이트먼트가 실행되고 상위 스택 값이 제거된다
· OP_ROLL, 스택에서 n 항목 깊이에 있는 항목이 상위에서 제거된다
· OP_SUBSTR, 문자열의 한 섹션을 반환한다
· OP_SWAP, 스택 상의 상위 2개의 항목이 스왑된다
· OP_TOALTSTACK, 대체 스택의 상위에 입력을 더하고, 메인 스택으로부터 그것을 제거한다
· OP_VERIFY, 상위 스택 값이 참(true)이 아니면, 트랜잭션을 무효한 것으로 표시한다
일 실시형태에 있어서, ECDS 생성 스크립트는 말미에 SIGHASH 바이트를 첨부함으로써 서명 생성 스크립트 OP_GENSIG를 생성하도록 확장될 수 있는 연산 부호를 사용해서 생성될 수 있다.
표 1:
상기 스크립트에 있어서, <SIGHASH Byte>, 메시지 <m>, 개인 키 <a>, 및 숫자 <k>는 상기의 순서로 메인(후입 선출) 스택에 입력된다. 스크립트 연산 "OP_DUP OP_TOALTSTACK <PubK G> OP_ECPMULT"의 실행은 숫자 <k>가 대체 스택에 복사되게 하고, <k>는 타원 곡선 생성기 <PubK G>에 승산되어 메인 스택의 상위에 타원 곡선 점 K를 생성한다. 스크립트 연산 "OP_ECPX <N> OP_BIGMOD OP_DUP OP_TOALTSTACK"의 실행은 r이 K modulus 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를 참조하는 것은 상기의 스크립트에서 실행되는 연산들에 대한 속기로서 간주되어야 한다.
도 3은 본 개시물의 일 실시형태에 의해 해결되는 블록체인 트랜잭션과 연계되는 문제점을 도시하는 실시예(300)이다. 즉, 도 3에 도시된 예시적인 실시예(300)에 있어서, 이전 트랜잭션(302)의 잠금 스크립트(306)는 잠금 해제 트랜잭션(304)의 필드들을 직접 판독할 수 없다. 주지된 바와 같이, 일부 실시형태에 있어서, 이전 트랜잭션(302)은 블록체인에 포함된 가장 최신의 확인된 트랜잭션이다. 유사하게, 일부 실시형태에 있어서, 잠금 해제 트랜잭션(304)은 아직 확인되지 않고 아직 블록체인에 포함되지 않은 장래의 트랜잭션이고, 이는 이전 트랜잭션(302)에 의해 제어되는 디지털 자산의 적어도 일부를 재연계시키려는 시도를 나타낸다.
상기에서 주지되는 바와 같이, 일부 실시형태에 있어서, 잠금 스크립트(306)는 출력을 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 트랜잭션을 저당잡는 스크립트이다. 보다 구체적으로, 잠금 스크립트(306)를 실행하는 것은, 블록체인 시스템의 유효성 검증 노드에 의한 실행의 결과로서, 실행된 잠금 해제 스크립트로부터 데이터를 수용하고 해당 데이터에 기초하여 특정 연산을 수행하고, 잠금 해제 스크립트의 실행이 잠금 스크립트를 성공적으로 "잠금 해제(unlocked)"(즉, 잠금 스크립트 내의 조건 세트를 충족)했는지의 여부를 표시하는 결과를 반환하도록 구성된다. 일부 실시형태에 있어서, 잠금 스크립트(306)는 트랜잭션의 유효성 검증이 성공적으로 되도록 (예컨대, 잠금 해제 스크립트를 통해 제공되는 데이터에 의해) 만족되어야 하는 하나 이상의 데이터 제약을 정의한다. 예를 들어, 잠금 스크립트(306)는 이전 트랜잭션(302)의 연계된 디지털 자산을 잠금 해제하도록 특정 데이터가 잠금 해제 스크립트에 제공되는 것을 필요로 할 수 있다.
도 4는, 이전 트랜잭션(402)의 잠금 스크립트(406)와 달리, 본 개시물의 잠금 해제 스크립트(408)가 일 실시형태에 있어서의 잠금 해제 트랜잭션(404)의 필드들(예컨대, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트)에 액세스할 수 있다는 것을 도시하는 실시예(400)을 묘사한다. 일부 실시형태에 있어서, 이전 트랜잭션(402)은 도 3의 이전 트랜잭션(302)과 유사하다. 일부 실시형태에 있어서, 잠금 해제 트랜잭션(404)은 잠금 해제 트랜잭션(304)과 유사하다. 일부 실시형태에 있어서, 잠금 스크립트(406)는 도 3의 잠금 스크립트(306)와 유사한 특징을 갖는다.
일부 실시형태에 있어서, 잠금 해제 스크립트(408)는 잠금 스크립트에 의해 트랜잭션의 출력에 위치되는 조건 세트를 만족시키려고 시도하는 트랜잭션의 입력에 위치되는 실행 가능 스크립트이다. 잠금 해제 스크립트를 "scriptSig"라고도 한다. 앞서 주지된 바와 같이, 잠금 해제 스크립트(408)는 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 잠금 스크립트에 입력으로서 제공하도록 설계되어 있고, 그에 따라 잠금 스크립트가 잠금 해제 트랜잭션의 필드들에 액세스하게 된다. 직렬화된 트랜잭션의 내용 및 구성에 관한 추가적인 세부 내용은 아래의 도 5의 설명에서 확인할 수 있다. 실시형태들에 있어서, 트랜잭션들(402 및 404)은 추가적인 필드들을 포함한다는 점에 유의한다. 예를 들어, 일부 실시형태에 있어서, "nVersion"은 블록체인 프로토콜 버전을 의미하고, "#vin"은 트랜잭션의 다수의 입력의 카운트를 의미하고, "hash"는 디지털 자산이 재연계되고 있는 엔티티의 P2PKH(pay-to-public-key-hash)를 의미하고, "#vout"은 트랜잭션의 다수의 출력의 카운트를 의미하고, "nValue"는 아직 소비되지 않고 남아 있는 디지털 자산의 수량을 의미하고, 또한, "nLockTime"은 트랜잭션이 최종이 되는 때의 타임스탬프를 의미한다.
도 5는 직렬화된 트랜잭션 필드 세트가 형성되는 방법의 실시예(500)를 도시한다. 도 5에 도시된 바와 같이, 직렬화된 트랜잭션(510)(즉, 특정 포맷의 일련의 바이트들로 표현되는 트랜잭션)은 트랜잭션의 필드 값 세트를 포함한다. 서명자는, 512에서, SIGHASH 타입 및 숫자 k를 선택한다. 숫자 k는 일반적으로 개인 키를 마스킹/보호하기 위해 난수 또는 의사 난수이므로, 본 개시물에서는 때때로 "마스크 번호(mask number)"라고 참조되기도 한다. 트랜잭션(514)의 수정된 복사본은 지정된 SIGHASH 타입(예컨대, 실시예(500)에서는 SIGHASH_NONE + ANYONECANPAY임)에 따라 선택된 직렬화된 트랜잭션(510)의 필드 세트의 실시예이다. 서명자는 트랜잭션(514)의 수정된 복사본을 해싱하고(예컨대, 더블 SHA-256을 수행함), 이는 메시지 m(516)을 초래한다. 이후, 서명자는, 도 2와 함께 전술한 방식에서와 같이, SIGHASH 타입, 메시지 m, 서명자의 개인키, 및 숫자 k를 사용해서 서명을 생성한다.
아래의 표는 OP_CHECKSIG 연산 부호를 사용해서 엔티티 A의 공개 키에 대하여 잠금 해제 스크립트에 지정된 엔티티 A의 상정된 서명이 검사되게 하는 일반적인 잠금 해제 및 잠금 해제 스크립트의 실시예를 예시한다.
표 2:
따라서, 도 5의 서명 생성을 이해하면, 아래의 표는 실시예(500)에 도시되는 절차의 일부가 잠금 해제 스크립트 내로 이동될 경우의 잠금 해제 및 잠금 스크립트의 실시예를 예시한다.
표 3:
잠금 해제 스크립트는 잠금 해제 스크립트에서 메시지 m을 계산하는 단계를 포함하도록 더 수정될 수 있다.
표 4:
그러나, SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제외하고, 절차의 다른 연산들은 잠금 스크립트로 이동될 수 있다는 점에 유의한다.
표 5:
따라서, 잠금 스크립트 내에서 "OP_HASH256 <a> <k> OP_GENSIG"의 연산을 이동시킴으로써, 잠금 해제 스크립트에는 SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트가 유효해지도록 포함된다.
이러한 방식으로, 직렬화된 이전 트랜잭션은 잠금 스크립트에 인젝션되게 된다. 아래의 표는 잠금 스크립트 및 잠금 해제 스크립트가 어떻게 실시예(500)의 각각의 단계 절차를 수행하고 트랜잭션을 유효성 검증하는지를 예시한다.
표 6:
본 개시물에 있어서, 상기 스크립트는 OP_UNLOCKINGTXINJECTION으로서 참조될 수 있다. 따라서, 본 개시물의 실시형태들에서 OP_UNLOCKINGTXINJECTION을 참조하는 것은 상기의 스크립트에서 실행되는 연산들에 대한 속기로서 간주되어야 한다. 그러나, SIGHASH 타입 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트를 제공하는 임의의 엔티티가 트랜잭션 출력을 수신할 수 있다는 점에 유의한다. 그러나, 이는 아래에서 더 상세하게 설명되는 바와 같이 유용한 특징이 된다. 앞서 주지된 바와 같이, 일부 실시예에 있어서, 트랜잭션 출력을 수신하는 것은 트랜잭션 출력을 참조하고 유효한 것으로 평가해서, 결국 트랜잭션 출력이 수신되게 하는 잠금 해제 트랜잭션을 생성하는 것을 의미한다.
도 6은 다양한 실시형태들에 따른 일 실시형태에 따라, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트의 인젝션을 야기하기 위한 프로세스(600)의 실시예를 도시하는 흐름도이다. 프로세스(600)(또는 설명된 임의의 다른 프로세스들, 또는 이러한 프로세스들의 변형 및/또는 조합)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램).
예를 들어, 프로세스(600)의 일부 또는 전부는 도 1의 예시적인 블록체인 네트워크(100)와 같은 블록체인 네트워크에서 유효성 검증 노드에 의해 수행될 수 있다. 이러한 유효성 검증 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다. 프로세스(600)는 일련의 동작을 포함하고, 프로세스(600)를 수행하는 시스템은 도 5에서 설명되는 방식으로 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트 및 잠금 스크립트를 함께 실행하고, 결과적으로, SIGHASH 타입 및 트랜잭션 필드 값 세트를 취득하고, 서명을 생성하고, 서명을 유효성 검증한다.
602에서, 시스템은 디지털 자산의 적어도 일부를 재연계시키려고 하는 엔티티로부터 유효성 검증되지 않은 트랜잭션을 취득한다. 유효성 검증되지 않은 트랜잭션은 잠금 스크립트 및 잠금 해제 스크립트를 포함한다. 잠금 스크립트를 실행하기 전에 시스템에 의해 잠금 해제 스크립트가 실행된다. 잠금 해제 스크립트는 상기 표 5 및 표 6에 도시된 잠금 해제 스크립트와 유사할 수 있으며, SIGHASH 타입을 지정하고 유효성 검증되지 않은 트랜잭션의 직렬화된 필드 세트를 포함한다. 결과적으로, 604 및 606에서, 프로세스(600)를 수행하는 시스템은 잠금 해제 스크립트로부터 SIGHASH 타입 및 유효성 검증되지 않은 트랜잭션의 직렬화된 트랜잭션 필드 값 세트를 취득하고, 이들을 메인 스택에 위치시킨다. 잠금 해제 스크립트의 실행의 성공적인 완료시에, 시스템은 잠금 해제 스크립트의 실행이 완료되는 시점에 메인 스택의 상태(및 일부 구현예에 있어서는 대체 스택의 상태)를 사용해서 잠금 스크립트의 실행을 시작한다. 잠금 스크립트는 상기 표 5 및 표 6에 도시된 잠금 스크립트와 유사할 수 있다.
608에서, 잠금 스크립트에 따라, 시스템은 적어도 SIGHASH 타입, 및 잠금 해제 스크립트 및 공개-개인 키 쌍과 연계되는 개인 키의 실행의 결과로서 메인 스택에 위치되는 트랜잭션 필드 값 세트를 사용해서 서명을 생성한다. 610에서, 잠금 스크립트에 따라, 시스템은 키 쌍의 공개 키에 대하여 서명을 성공적으로 유효성 검증한다. 이러한 방식으로, 트랜잭션 필드 세트는 잠금 해제 스크립트에 의해 잠금 스크립트에 인젝션되게 된다. 동작들(602-610)은 구현예에 따라 다양한 순서 및 조합으로 수행될 수 있으며, 동작들 중 일부는 프로세스(600)의 다른 동작들과 병행하여 수행될 수 있다는 점에 유의한다.
도 7은 본 개시물의 일 실시형태에 의해 해결되는 블록체인 트랜잭션과 연계되는 문제점을 도시하는 실시예(700)이다. 즉, 도 7에 도시되는 실시예(700)에서, 잠금 스크립트(706)는 그것이 내재된 트랜잭션의 입력을 판독할 수 없고, 결과적으로, 이전 트랜잭션의 필드를 직접 판독할 수 없다. 일부 실시형태에 있어서, 트랜잭션(704)은 이전 트랜잭션에 의해 제어되는 디지털 자산의 적어도 일부를 재연계시키려는 시도를 나타내는, 도 3의 잠금 해제 트랜잭션(304)과 유사하다. 앞서 주지된 바와 같이, 일부 실시형태에 있어서, 잠금 스크립트(706)는 출력을 전송하기 위해 충족될 필요가 있는 조건을 특정함으로써 트랜잭션을 저당잡는, 도 3의 잠금 스크립트(306)와 유사한, 스크립트이다.
도 8은 트랜잭션 ID를 추출하고 제약 검사를 수행함으로써 잠금 해제 스크립트(808)로 하여금 직렬화된 이전 트랜잭션을 포함하게 하는 실시예(800)를 도시한다. 구체적으로, 도 8은 이전 트랜잭션(802A-802B)으로부터의 출력을 이용하는 잠금 해제 스크립트(808)를 갖는 잠금 해제 트랜잭션(804)을 묘사한다. 알 수 있듯이, 잠금 해제 스크립트(808)는 직렬화된 이전 트랜잭션들이 검색되게 한다. 일부 실시예에 있어서, 직렬화된 이전 트랜잭션은 이전 트랜잭션의 필드 값 세트의 수정되지 않은 버전을 의미한다.
도 8에 묘사된 실시형태는 트랜잭션 ID가 직렬화된 트랜잭션의 더블 SHA-256인 점 및 트랜잭션 ID가 트랜잭션에 대한 일대일 맵핑을 갖는다는 점을 관찰함으로써 이해될 수 있다. 따라서, 트랜잭션은 아래의 표 7에 도시된 제약을 적용함으로써 잠금 해제 스크립트에 인젝션될 수 있다.
표 7:
본 개시물의 실시형태들은, 임의의 직렬화된 트랜잭션의 인젝션을 야기하는 것 뿐만 아니라, 잠금 해제 트랜잭션(804)의 입력에서 참조되는 하나 이상의 직렬화된 이전 트랜잭션(예컨대, 이전 트랜잭션(802A-802B))의 인젝션을 야기하는 것에 의해, 이러한 인젝션을 더욱 향상시킨다. 도 7을 참조하여 전술한 바와 같이, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트는 잠금 해제 스크립트(808)를 통해 잠금 스크립트에 인젝션될 수 있고, 도 9는 지정된 SIGHASH 타입에 따라 어떤 필드가 직렬화된 트랜잭션에 포함되는지를 도시한다.
도 9는 지정된 SIGHASH 타입에 따라 직렬화된 트랜잭션에서 이용 가능한 필드 세트의 실시예(900)를 도시한다. 그러나, 도 9는 설명을 위한 것이며, 다양한 실시형태에 있어서는, 도 9에 묘사된 것보다 많은 SIGHASH 타입이 존재한다는 점에 유의한다. 도 9에 도시된 바와 같이, 상이한 SIGHASH 타입들에 의하면, 상이한 이전 트랜잭션 ID 세트들이 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트에 포함된다("해시(hash)" 필드는 트랜잭션 ID를 빅-엔디언(big endian) 포맷으로 나타낸다는 점에 유의한다). 일부 실시형태에 있어서, 잠금 스크립트를 내재하는 이전 트랜잭션의 트랜잭션 ID는 어느 SIGHASH 타입이 지정되는지에 관계없이 항상 이용 가능하다.
따라서, 다음과 같은 방식으로 SIGHASH 타입을 제한함으로써 결정되는 잠금 해제 트랜잭션 필드 세트에 특정 필드가 존재할 수 있다: 먼저, SIGHASH 타입을 복제한다. 다음으로, SIGHASH 타입을 스택에 밀어넣는다(예컨대, SIGHASH_ALL). 마지막으로, OP_EQUALVERIFY를 호출한다. 도 9에서 알 수 있듯이, SIGHASH_ALL(잠금 해제 트랜잭션(904A)과 함께 도시됨)은 주지된 바와 같이, 이전 트랜잭션 y 및 z의 트랜잭션 ID를 나타내는 해시를 포함한다. 반대로, SIGHASH_ALL + ANYONECANPAY(잠금 해제 트랜잭션(904B)과 함께 도시됨)는 직전 트랜잭션 y의 해시만을 포함한다. 일부 실시형태에 있어서, 잠금 해제 트랜잭션(904A-904B)은 이전 트랜잭션(예컨대, 트랜잭션 y 및/또는 x)에 의해 제어되는 디지털 자산의 적어도 일부를 재연계시키려는 시도를 나타내는 도 3의 잠금 해제 트랜잭션(304)과 유사하다. 트랜잭션 ID를 추출하는 것은 도 10에 도시된 원하는 필드(들)에 이를 때까지 부분 문자열 연산 부호를 사용해서 직렬화된 트랜잭션을 파싱함으로써 달성될 수 있다.
도 10은 본 개시물의 일 실시형태에서 트랜잭션 ID를 추출하는 실시예(1000)를 도시한다. 구체적으로, 도 10은 빅 엔디언 포맷의 트랜잭션 ID로 구성된 해시(1020)가 스크립트 내의 부분 문자열 연산 부호를 사용해서 추출될 수 있는 직렬화된 트랜잭션(1010)의 부분 문자열임을 도시한다. 일부 실시형태에 있어서, 직렬화된 트랜잭션(1010)은, 일부 필드(예컨대, #vin, scriptSigLen, scriptSig, scriptPubKeyLen 및 scriptPubKey)가 다양한 바이트 길이로 이루어지기 때문에, 트랜잭션 ID가 추출될 수 있기 전에, 먼저 해시(1020)의 위치를 식별하기 위해 파싱된다. 그러나, 필드들이 고정된 길이를 갖는 구현예에 있어서는, 파싱이 필수적이지 않을 수도 있을 것으로 생각된다.
따라서, 일부 실시형태에 있어서, 도 6를 참조하여 설명되는 방식으로 잠금 해제 트랜잭션에서 참조되는 특정한 직렬화된 이전 트랜잭션의 인젝션을 야기하는 잠금 스크립트를 구축함으로써, 이전 트랜잭션 ID가 액세스 가능해질 수 있다. 예를 들어, 먼저 SIGHASH 타입 제약이 결정되고, 트랜잭션 ID가 추출되고, 직렬화된 이전 트랜잭션이 잠금 해제 트랜잭션의 직렬화된 필드 세트로부터 (SIGHASH 타입에 따라) 추출되는 트랜잭션 ID에 대하여 복제 및 검사된다. 이 프로세스는 다수의 상이한 직렬화된 이전 트랜잭션들의 인젝션을 야기하기 위해 수행될 수 있다는 점에 유의한다. 실시예로서, 표 8은 잠금 해제 트랜잭션의 입력 X에 대응하는 이전 트랜잭션의 인젝션을 야기하는 스크립트를 나타낸다.
표 8:
상기 스크립트에서, OP_EXTRACTXID는 트랜잭션 ID 및 트랜잭션 ID 위치를 포함하는 데이터를 추출된 트랜잭션 ID의 입력 및 출력으로서 취하는 연산 부호/스크립트이다. 본 개시물에 있어서, 상기 스크립트는 OP_PREVTXINJECTION으로서 참조될 수 있다. 따라서, 본 개시물의 실시형태들에서 OP_PREVTXINJECTION을 참조하는 것은 상기의 스크립트에서 실행되는 연산들에 대한 속기로서 간주되어야 한다.
그러나, SIGHASH 타입, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트, 및 직렬화된 이전 트랜잭션을 제공하는 임의의 엔티티는 트랜잭션 출력을 취득할 수 있다는 점에 유의한다. 그러나, 이는 아래에서 더 상세하게 설명되는 바와 같이 유용한 특징이 된다.
다른 실시예로서, 표 9는 서명되는 입력에 대응하는 이전 트랜잭션의 인젝션을 야기하는 스크립트를 제시한다.
표 9:
본 개시물에 있어서, 표 8의 스크립트에서처럼, 표 9의 상기 스크립트는 OP_SELFTXINJECTION이라고 참조될 수도 있다. 따라서, 본 개시물의 실시형태들에서 OP_SELFTXINJECTION을 참조하는 것은 상기의 스크립트에서 실행되는 연산들에 대한 속기로서 간주되어야 한다.
마찬가지로, SIGHASH 타입, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트, 및 직렬화된 이전 트랜잭션을 제공하는 임의의 엔티티는 트랜잭션 출력을 취득할 수 있다는 점에 유의한다. 그러나, 이는 아래에서 더 상세하게 설명되는 바와 같이 유용한 특징이 된다. 앞서 주지된 바와 같이, 일부 실시예에 있어서, 트랜잭션 출력을 취득하는 것은 트랜잭션 출력을 참조하는 잠금 해제 트랜잭션을 생성하고 잠금 해제 트랜잭션을 성공적으로 유효성 검증하는 것을 의미한다.
도 11은 다양한 실시형태들에 따른 직렬화된 이전 트랜잭션의 인젝션을 야기하는 프로세스(1100)의 실시예를 도시하는 흐름도이다. 프로세스(1100)(또는 설명된 임의의 다른 프로세스들, 또는 이러한 프로세스들의 변형 및/또는 조합)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램).
예를 들어, 프로세스(1100)의 일부 또는 전부는 도 1의 예시적인 블록체인 네트워크(100)와 같은 블록체인 네트워크에서 유효성 검증 노드에 의해 수행될 수 있다. 이러한 유효성 검증 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다. 예시적인 프로세스(1100)는 일련의 동작을 포함하고, 예시적인 프로세스(1100)를 수행하는 시스템은 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트 및 잠금 스크립트를 함께 실행하고, 결과적으로, 유효성 검증되지 않은 트랜잭션으로부터 추출되는 트랜잭션 ID에 대응하는 직렬화된 이전 트랜잭션을 취득한다.
1102에서, 시스템은 디지털 자산의 적어도 일부를 재연계시키려고 하는 엔티티로부터 유효성 검증되지 않은 트랜잭션을 취득한다. 유효성 검증되지 않은 트랜잭션은 잠금 스크립트 및 잠금 해제 스크립트를 포함한다. 잠금 스크립트 및 잠금 해제 스크립트는 상기 표 8 및 표 9에 도시된 잠금 스크립트 및 잠금 해제 스크립트와 유사할 수 있다. 즉, 잠금 스크립트는, 예를 들면, 잠금 해제 스크립트에 의해, 메인 스택 및 대체 스택에 저장되는 입력 값으로서 취하는 명령어 세트를 포함한다. 명령어 세트의 실행은, 참(TRUE)으로 평가될 경우, 유효성 검증되지 않은 트랜잭션을 성공적으로 유효성 검증한다. 따라서, 잠금 해제 스크립트는 잠금 스크립트보다 먼저 실행되고, 잠금 스크립트에 의해 사용될 메인 스택 및 대체 스택에서의 값을 설정한다. 도 11의 실시형태에서 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트는 직렬화된 이전 트랜잭션, SIGHASH 타입, 및 직렬화된 잠금 해제 트랜잭션 필드 세트를 포함한다.
잠금 해제 스크립트에 이은 잠금 스크립트의 실행의 결과로서, 1104에서, 시스템은 잠금 해제 스크립트에 포함되는 직렬화된 이전 트랜잭션, SIGHASH 타입, 및 직렬화된 잠금 해제 트랜잭션 필드 세트를 취득한다. 1106에서, 시스템은 SIGHASH를 기초로 유효성 검증되지 않은 트랜잭션의 직렬화된 필드 값 세트에 기초하여 서명을 생성한다. SIGHASH 타입은 어느 필드가 서명 생성에 사용되는지에 영향을 미치고, 원하는 SIGHASH는 확인된 특정한 이전 트랜잭션에 의존할 수 있다는 점에 유의한다. 예를 들어, 이전 트랜잭션― 다만, 반드시 동일한 잠금 스크립트를 포함하는 이전 트랜잭션일 필요는 없음 ―을 추출하기 위한 잠금 스크립트 및 잠금 해제 스크립트를 예시하는 표 8은 SIGHASH_ALL의 SIGHASH 타입을 이용한다. 도 9에 도시된 바와 같이, SIGHASH_ALL 타입은 잠금 해제 트랜잭션의 다른 이전 트랜잭션들의 입력의 검색을 가능하게 한다. 대조적으로, 동일한 잠금 스크립트를 갖는 이전 트랜잭션(즉, 서명되는 입력에 대응하는 이전 트랜잭션)을 추출하기 위한 잠금 스크립트 및 잠금 해제 스크립트를 예시하는 표 9는 SIGHASH_ALL | ANYONECANPAY의 SIGHASH 타입을 이용한다. 도 9에 도시된 바와 같이, SIGHASH_ALL | ANYONECANPAY의 SIGHASH 타입은 서명되는 입력을 갖는 이전 트랜잭션 이외의 다른 이전 트랜잭션들의 입력을 제거한다.
시스템은, 1108에서, 이전에 생성된 서명을 유효성 검증하고, 1110에서, 취득된 직렬화된 이전 트랜잭션의 더블 SHA-256을 수행함으로써, 잠금 해제 트랜잭션의 트랜잭션 ID와 일치해야 하는 값(즉, 직렬화된 필드 값 세트)을 생성한다. 시스템은, 1112에서, 부분 문자열 연산 부호를 사용해서, 직렬화된 필드 값 세트의 트랜잭션 ID를 추출하고, 시스템은, 1114에서, 직렬화된 이전 트랜잭션의 더블 SHA-256에 의해 생성되는 트랜잭션 ID가 직렬화된 필드 값 세트의 트랜잭션 ID와 일치하는지의 여부를 결정한다. 다양한 실시형태에 있어서, 일치가 반드시 균등을 요구하는 것은 아니라는 점에 유의한다. 예를 들어, 2개의 값은 같지 않더라도 수학적으로 동등할 경우에는 일치하는 것일 수 있다. 다른 실시예로서, 2개의 값은, 공통 객체(예컨대, 값)에 대응하거나 또는 소정의 어떤 방식에서는 상보적일 경우, 및/또는 하나 이상의 일치 기준을 만족시킬 경우에는 일치하는 것일 수 있다. 일반적으로, 일치하는지의 여부를 결정하는 임의의 방식이 사용될 수 있다. 또한, 1102-1114에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 12는 본 개시물의 일 실시형태에 의해 해결되는 잠금 스크립트와 연계되는 문제점을 도시하는 실시예(1200)를 도시한다. 즉, 도 12에 묘사되는 실시예(1200)는 미결정 데이터를 잠금 스크립트에 제공하는 것에 의해 제시되는 쟁점을 도시한다. 일부 실시예에 있어서, "미결정 데이터(undetermined data)"라는 용어는 잠금 스크립트를 실행하는 노드가 사전 표시하지 않는, 잠금 스크립트를 잠금 해제하는 잠금 해제 스크립트를 통해 제공되는 데이터를 의미한다.
일부 실시형태에 있어서, 이전 트랜잭션(1202)은 도 3의 이전 트랜잭션(302)과 유사하다. 마찬가지로, 일부 실시형태에 있어서, 잠금 해제 트랜잭션(1204)은 304와 유사하다. 일부 실시형태에 있어서, 블록체인(1224)은 피어-투-피어 전자 원장에서 트랜잭션들의 일련의 블록으로 구성된다. 실시형태들에 있어서, 블록체인(1224)의 각각의 블록은 블록체인에서 모든 유효성 검증된 트랜잭션의 영구적인 불변의 레코드를 생성하기 위해 블록들이 함께 연결(즉, "연쇄(chained)")되도록 이전 블록의 해시를 포함한다.
일부 실시형태에 있어서, 미결정 소스(1222A)는 이전 트랜잭션(1202)의 UTXO를 취득하려고 시도하는 엔티티일 수 있다. 미결정 소스(1222B)는 미결정 소스(1222A)와 동일할 수 있거나, 또는 미결정 소스(1222A)와 다른 엔티티일 수 있다. 어느 경우에든, 잠금 스크립트를 실행하는 노드는 잠금 스크립트의 실행 전에는 미결정 소스(1222A-1222B)에 대한 사전 지식이 없다.
실시예(1200)에 있어서, 잠금 스크립트(1206)는 비어 있기 때문에, 데이터의 소스에 대한, 또는 데이터가 무엇인지에 대한 사전 지식 없이 데이터를 수용할 수 있게 된다. 잠금 해제 트랜잭션(1204)이 생성되는 시점에 (예컨대, 미결정 소스(1222A)에 의해) 데이터("<d>")가 결정된다. 그러나, 잠금 해제 트랜잭션(1204)은 블록체인(1224)에서 확인(그때, 잠금 해제 트랜잭션(1204)이 변경 불가능해짐)되기 전에, 예를 들면 미결정 소스(1222B)에 의해 변조되기 쉽기(다시 말해, 변경 가능함) 때문에, 이러한 잠금 스크립트는 보안 문제를 드러낸다.
도 13은 본 개시물의 일 실시형태에 있어서 결정된 소스로부터 미결정 데이터가 잠금 스크립트(1306)에 어떻게 안전하게 제공될 수 있는지를 예시하는 실시예(1300)를 도시한다. 즉, 도 13에 묘사된 실시예(1300)는 잠금 스크립트(1306)를 실행하는 노드가 데이터를 제공하는 소스(예컨대, 결정된 소스(1326))에 대한 사전 지식을 갖지만 데이터가 무엇인지에 대한 사전 지식은 없는 상황에서 드러나는 쟁점을 도시한다. 일부 실시형태에 있어서, 이전 트랜잭션(1302)은 도 3의 이전 트랜잭션(302)과 유사하다. 마찬가지로, 일부 실시형태에 있어서, 잠금 해제 트랜잭션(1304)은 304와 유사하다. 일부 실시형태에 있어서, 블록체인(1324)은 도 12의 블록체인(1224)과 유사하다.
실시예(1300)에 있어서, 잠금 스크립트(1306)는 잠금 스크립트(1306)를 실행하는 유효성 검증 노드로 하여금 잠금 해제 스크립트(1308)에 제공된 데이터가, 결정된 데이터 소스에 의해 제공된 것인지의 여부를 검사하게 하도록 구성된다. 즉, 개인 키는 다음과 같이, 데이터(d)를 곱해서 수정된 개인 키(a')를 생성하도록 데이터에 기초하여 수정될 수 있다:
a' = a × d
수정되지 않은 개인 키에 대응하는 공개 키(A)는 다음과 같이, 수정된 공개 키(A')를 생성하도록 타원 곡선 점 곱셈을 수행해서 유사하게 수정될 수 있다:
A' = d × A
결과적으로, 잠금 스크립트(1306)는 유효성 검증 노드로 하여금 데이터 소스에 대한 공개 키(A)를 사용해서 데이터에 기초하여 수정된 개인 키를 사용해서 서명된 서명을 평가하게 하도록 구성될 수 있다. 특히, 서명 검사 연산 부호는 수정된 개인 키를 사용해서 서명되는 서명(Sig A')이 수정된 공개 키에 대응하고, 그에 따라 유효한 서명인지의 여부를 검사하는 잠금 스크립트(1306)에 포함될 수 있다. 검사는, 예를 들어, OP_CHECKSIG 연산 부호를 사용해서 수행될 수 있다.
실시예(1300)에서 알 수 있듯이, 잠금 스크립트(1306)의 실행은 노드로 하여금 공개 키를 스택상에 위치시키게 하는 한편, 잠금 해제 스크립트(1308)의 이전의 실행에 의해 스택에 위치된 데이터와 공개 키 사이의 타원 곡선 점 곱셈 연산(OP_ECMULT)을 수행한다. 이후, 데이터는 잠금 해제 트랜잭션이 잠금 스크립트에서 지정된 소스(예컨대, 결정된 소스(1326))에 의해 생성되는 시점에 결정될 수 있다. 따라서, 잠금 스크립트는 데이터를 제공하는 소스에 대한 지식은 있지만, 데이터가 무엇인지에 대한 지식은 없다. 잠금 스크립트(1306)의 추가적인 실행은, 수정된 개인 키를 사용해서 서명되는 데이터의, 마찬가지로 잠금 해제 스크립트(1308)의 이전의 실행에 의해 스택에 위치된, 서명에 대한 유효성 검증 결과(예컨대, 값들이 일치하면, OP_CHECKSIG가 TRUE를 반환함)를 야기한다. 잠금 해제 트랜잭션(1304)을 변조하면 무효화되기 때문에, 이 접근방법은 안전하다. 그러나, 데이터의 소스(결정된 소스(1326))는 지정되어야 한다. ECDSA에서의 서명 검증 알고리즘은 서명, 공개 키, 및 메시지가 특정한 수학적 관계를 갖는지의 여부를 검사하는 것을 수반한다. 메시지는 임의의 데이터일 수 있다. 비트코인에서, 검증 연산 부호 OP_CHECKSIG는, 메시지가 특정 소스로부터의 메시지인지를 검증하는 것을 허용하되 메시지를 직렬화된 트랜잭션으로 제한함으로써, 임의의 데이터가 메시지로 되는 것을 방지한다. 본 개시물의 실시형태들은 이 제한에 대한 대체 해법을 제공한다.
일부 실시형태에 있어서, 미결정 소스(1322)는 데이터를 변조할 수 없는 엔티티이다. 일부 실시형태에 있어서, 잠금 스크립트(1306)가 결정된 소스(1326)의 공개 키를 포함하도록, 잠금 스크립트(1306)가 생성되는 시점에, 결정된 소스(1326)는 기지의 엔티티이다.
도 14는 미결정 데이터가 미결정 소스로부터 잠금 스크립트(1406)에 어떻게 안전하게 제공될 수 있는지를 보여주는 실시예(1400)를 도시한다. 구체적으로, 도 14는 도 11의 프로세스(1100)와 함께 설명되는 잠금 스크립트에 기초하여 잠금 스크립트를 실행하는 잠금 해제 트랜잭션(1404)을 묘사한다. 일부 실시형태에 있어서, 이전 트랜잭션(1402)은 도 3의 이전 트랜잭션(302)과 유사하다. 마찬가지로, 일부 실시형태에 있어서, 잠금 해제 트랜잭션(1404)은 304와 유사하다. 일부 실시형태에 있어서, 블록체인(1424)은 도 12의 블록체인(1224)과 유사하다.
실시예(1400)는 잠금 스크립트(1406)가 생성되는 시점에 실시예(1400)에서의 데이터가 결정되지 않을 수 있다는 점에서 도 13의 실시예(1300)와 다르다. 해당 데이터는 이전 트랜잭션(1402)의 어딘가에 내재될 것이고, 따라서 상기 도 8 내지 도 11과 관련하여 전술한 바와 같이 직렬화된 이전 트랜잭션을 파싱함으로써 추출될 수 있다.
이러한 방식으로, 잠금 스크립트(1406)를 실행하는 노드는 직렬화된 이전 트랜잭션을 제공하는 엔티티에 대한 사전 지식을 가질 필요가 없으며, 이전 트랜잭션(1402)에 대한 사전 지식도 가질 필요가 없다. 또한, 블록체인(1424)에 커미트된 이전 트랜잭션(1402)은 잠금 해제 트랜잭션(1404)이 생성되는 시점에 이미 변경 불가능하므로, 잠금 해제 트랜잭션(1404)을 무효해지게 하지 않아도 변조로부터 안전하다. 그러나, 잠금 스크립트(1406)를 실행하는 노드가 데이터에 대한 사전 지식이 없더라도, 데이터는 이전 트랜잭션(1402)이 생성되는 시점에 결정된다.
일부 실시형태에 있어서, 잠금 스크립트(1406)는 도 11의 프로세스(1100)에 관하여 설명되는 스크립트에 따른 스크립트이다. 일부 실시형태에 있어서, 잠금 해제 스크립트(1408)는 도 8 내지 도 11과 함께 설명되는 잠금 해제 스크립트와 유사하다. 예를 들어, 실시예(1400)에서 알 수 있듯이, 잠금 해제 스크립트(1408)는 잠금 해제 트랜잭션(1404)의 적어도 하나의 직렬화된 이전 트랜잭션, SIGHASH 타입, 및 직렬화된 잠금 해제 트랜잭션 필드 세트를 포함한다.
미결정 소스(1422A)는 직렬화된 이전 트랜잭션에 인코딩되는 데이터를 공급하는 엔티티이다. 미결정 소스(1422B)는 잠금 해제 트랜잭션(1404)을 가로채서 변조하려고 시도하는 엔티티이다. 일부 실시형태에 있어서, 미결정 소스들(1422A-1422B)은 동일한 또는 상이한 엔티티일 수 있다. 실시예(1400)에서 알 수 있듯이, 잠금 스크립트(1406)가 생성되는 시점에 미결정 소스(1422A)의 아이덴티티를 알 필요는 없다. 또한, 잠금 스크립트(1406)가 생성되는 시점에 데이터를 알 필요도 없다. 그런데도 미결정 소스(1422B)는 여전히 데이터를 변조하는 것이 방지되고 있다.
실시형태들에 있어서, 잠금 해제 트랜잭션(1404)에 의해 실행된 잠금 스크립트 이외의, 이전 트랜잭션(1402)의 다양한 필드는 이전 트랜잭션(1402)의 출력에서의 디지털 자산의 수량을 포함하는 안전한 미결정 데이터 또는 이전 트랜잭션(1402)의 다른 출력의 잠금 스크립트로 인코딩되는 메타데이터를 저장하는 데 사용될 수 있다. 따라서, 실시예(1400)의 해당 실시형태는 사실상 임의의 엔티티가 이전 트랜잭션에 데이터를 내재시키고 , 잠금 스크립트(1406)의 일부 변형에 지불하고, 다른 엔티티가 해당 데이터를 수정할 수 없게 할 수 있다. 이러한 특징은 아래에서 설명되는 추가적인 실시형태들에서 유용하다.
도 15는 다양한 실시형태들에 따라 미결정 데이터를 안전하게 제공하기 위한 프로세스(1500)의 실시예를 도시하는 흐름도이다. 프로세스(1500)(또는 설명된 임의의 다른 프로세스들, 또는 이러한 프로세스들의 변형 및/또는 조합)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램).
예를 들어, 프로세스(1500)의 일부 또는 전부는 도 1의 예시적인 블록체인 네트워크(100)와 같은 블록체인 네트워크에서 유효성 검증 노드에 의해 수행될 수 있다. 이러한 유효성 검증 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다. 프로세스(1500)는, 유효성 검증되지 않은 트랜잭션이 수신되고, 잠금 해제 스크립트의 실행의 결과로서 미결정 데이터 및 제2 값이 취득되고, 미결정 데이터가 신뢰할 수 있는 데이터 소스와 연계되는 것으로 유효성 검증되는 일련의 동작을 포함한다.
1502에서, 시스템은 디지털 자산의 적어도 일부를 재연계시키려고 하는 엔티티로부터 유효성 검증되지 않은 트랜잭션을 취득한다. 유효성 검증되지 않은 트랜잭션은 잠금 스크립트 및 잠금 해제 스크립트를 포함한다. 잠금 스크립트 및 잠금 해제 스크립트는 도 13 및 도 14에 도시된 잠금 스크립트 및 잠금 해제 스크립트와 유사할 수 있다. 명령어 세트의 실행은, 참(TRUE)으로 평가될 경우, 유효성 검증되지 않은 트랜잭션을 성공적으로 유효성 검증한다. 따라서, 잠금 해제 스크립트는 잠금 스크립트보다 먼저 실행되고, 잠금 스크립트에 의해 사용될 메인 스택 및 대체 스택에서의 값을 설정한다.
도 13의 실시형태에서 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트는 미결정 데이터("<d>"), 및 결정된 데이터 소스(예컨대, "Bob")의 개인 키와 미결정 데이터의 값을 타원 곡선 점 곱셈을 사용하여 곱해서 수정된, 수정된 개인 키를 사용해서 서명되는 미결정 데이터의 서명("<SigA'>")을 포함한다. 따라서, 개인 키는 타원 곡선 상의 점이 된다. 전술한 바와 같이, 이러한 맥락에서 "미결정(undetermined)"이라는 용어는 데이터가 잠금 스크립트 자체에 의해 지정되거나 제한되지 않는다는 것을 의미한다는 점에 유의한다. 유사한 방식으로, "미결정 데이터 소스(undetermined data source)"는 잠금 스크립트에 의해 아이덴티티가 특정 또는 제한되지 않는 데이터 소스인 반면, "결정된 데이터 소스(determined data source)"는 아이덴티티를 잠금 스크립트 내의 특정 데이터 소스로 제한(예컨대, 데이터 소스의 공개 키를 포함하는 것에 의함)한다. 도 14의 실시형태에서 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트는 직렬화된 이전 트랜잭션, SIGHASH 타입, 및 직렬화된 잠금 해제 트랜잭션 필드 세트의 미결정 데이터를 포함한다. 이러한 방식으로, 데이터 소스는 직렬화된 이전 트랜잭션이기 때문에, 데이터 소스가 잠금 스크립트 자체에 의해 지정되거나 제한될 필요가 없다.
잠금 해제 스크립트에 이은 잠금 스크립트의 실행의 결과로서, 1504에서, 시스템은 미결정 데이터, 및 해당 데이터와 연계되는 결정된 또는 미결정 소스로 데이터를 검증하는 데 사용할 수 있는 값(예컨대, 트랜잭션 식별자가 추출될 수 있는 직렬화된 잠금 해제 트랜잭션 필드 세트 또는 수정된 개인 키로 서명되는 서명)을 취득한다.
1506에서, 시스템은 데이터를 검증한다. 예를 들어, 도 13의 실시형태에 있어서, 시스템은, 타원 곡선 점 곱셈(전술한 바와 같음)을 사용해서 데이터로 공개 키를 수정하고, 수정된 공개 키가 타원 곡선 점 곱셈을 사용해서 자체 수정된 상응하는 개인 키를 사용해서 생성되는 서명과 연계되는지를 검증함으로써, 데이터가 잠금 스크립트에 포함되는 공개 키와 연계되는지를 검증한다. 다른 예로서, 도 14의 실시형태에 있어서, 시스템은, 도 11의 프로세스(1100)의 방식으로, 직렬화된 이전 트랜잭션의 해시가 직렬화된 잠금 해제 트랜잭션 필드 세트로부터 추출되는 트랜잭션 ID와 일치하는지의 여부를 결정함으로써, 데이터가 특정한 이전 트랜잭션에 대응하는지를 검증한다. 1502-1506에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 16은 본 개시물의 일 실시형태의 예시적인 파라미터화 가능한 스마트 계약(1600)을 도시한다. 구체적으로, 도 16은 잠금 해제 트랜잭션(1604)의 잠금 해제 스크립트(1608)에 제약을 부과하는 잠금 스크립트(1606)를 갖는 이전 트랜잭션(1602)을 묘사한다. 도 16에 묘사된 실시형태는, 본 개시물이 도 3 내지 도 6의 설명에서, SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트가 어떻게 잠금 스크립트(1606)에 인젝션되게 될 수 있는지를 설명한 것을 상기함으로써 이해될 수 있다. 직렬화된 이전 트랜잭션으로 하여금 잠금 스크립트(1606)에 인젝션되게 하는 제약을 적용하기 전에 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트가 트랜잭션 ID를 추출하도록 부분 문자열 연산 부호를 사용해서 어떻게 파싱될 수 있는지를 설명한 본 개시물의 도 7 내지 도 11의 설명을 더 상기한다. 이 프로세스는 잠금 해제 트랜잭션 필드 세트 내의 임의의 필드를 작동시키도록 확장될 수 있다.
도 6 및 도 11의 맥락에서 설명되는 잠금 스크립트는 잠금 해제 트랜잭션을 생성하는 특정 엔티티를 제한하지 않는다는 점에 유의한다. 예를 들어, 잠금 스크립트는 특정 엔티티가 비밀(예컨대, 비밀 키, 특정 해시를 생성하는 값 등)에 액세스할 수 있는지를 증명할 필요가 없다. 도 16의 실시형태는 잠금 해제 트랜잭션을 생성하는 특정 엔티티와 관련하여 이 개념을 구별 없이 적용하지만, UTXO가 어떻게 청구될 수 있는지에 대해서는 특정한 제약을 부과한다. 이러한 방식으로, 도 16의 실시형태는 자동으로 실행되고 자력-집행된다. 다시 말해, 스마트 계약의 조건이 충족되지 않으면(즉, 지정된 제약을 위반하고 있을 경우), 유효성 검증이 실패할 것이기 때문에 계약은 실행되지 않을 것이다.
일부 실시형태에 있어서, 잠금 스크립트에서의 스마트 계약은 잠금 해제 트랜잭션(1604)의 입력에 제약(예컨대, 파라미터)을 설정함으로써(예컨대, "Alice"로부터의 입력을 요구함) 상호작용하게 될 수 있다. 잠금 해제 스크립트(1608)가 잠금 스크립트(1606)에 대한 입력의 소스이기 때문에, 실시형태들에 있어서, 잠금 스크립트(1606)에서의 스마트 계약은 잠금 해제 스크립트(1608)에서의 안전한 미결정 데이터를 사용해서 파라미터화될 수 있다. 실시형태들에 있어서, 도 13 내지 도 15와 함께 설명되는 방식의 안전한 미결정된 파라미터화된 데이터는 스마트 계약을 변조로부터 보호한다. 실시형태들에 있어서, 파라미터화된 데이터는 미결정 데이터이다.
본 개시물은 안전한 미결정 데이터를 잠금 스크립트(예컨대, 스마트 계약)에 제공하기 위한 2가지 방법을 설명했다. 제1 방법은, 도 13 및 도 15의 맥락에서 설명된 바와 같이, 안전한 미결정 데이터를 결정된 소스로부터 취득할 수 있는 방법이다. 제2 방법은, 도 14 및 도 15의 맥락에서 설명된 바와 같이, 안전한 미결정 데이터를 미결정 소스(예컨대, 이전 트랜잭션)로부터 취득할 수 있는 방법이다. 제1 방법을 사용하는 실시형태들에 있어서, 파라미터들은 잠금 해제 트랜잭션을 생성하는 엔티티에 의해 결정되고 잠금 해제 트랜잭션의 생성시에 설정될 것이다(예컨대, 잠금 해제 스크립트(1608)에서). 제2 방법을 사용하는 실시형태들에 있어서, 파라미터들은 이전 트랜잭션을 생성한 엔티티에 의해 결정되고 이전 트랜잭션의 생성시에 설정될 것이다(즉, 직렬화된 이전 트랜잭션에 내재됨). 실시형태들에 있어서, 제1 및 제2 방법은 하나 이상의 파라미터가 이전 트랜잭션에 내재될 수 있고, 하나 이상의 다른 파라미터가 잠금 해제 트랜잭션의 잠금 해제 스크립트에 내재될 수 있도록 조합될 수 있다는 점에도 유의한다.
하기의 실시예는 스마트 계약이 이들 방법을 사용해서 어떻게 생성될 수 있는지를 예시하기 위해 제시된다. 실시예에 있어서, 스마트 계약은 Alice에 의해 자신의 수입의 70%를 저축에, 그리고 자신의 수입의 30%를 자신의 투자 관리자인 Bob에게 전달하도록 생성된다. 자신의 저축 계좌는 암호화 공개 키 A(PubK A)와 연계되고, 자신의 Bob과의 계좌는 암호화 공개 키 B(PubK B)와 연계된다. Alice의 고용주는, 급여일에, Alice의 수입이 전술한 방식으로 분배되게 하도록 이 스마트 계약을 구현한다. 결과적으로, Alice의 수입은 그녀가 원하는 방식으로 자동으로 나뉜다.
실시예에 있어서, 파라미터는 스마트 계약의 실행의 결과로서 전송되는 디지털 자산의 수량이다. 스마트 계약의 실행은, 상기 기준에 따라 잠금 해제 트랜잭션(1604)의 출력에 대한 제약을 결정하기 전에, 파라미터가 이전 트랜잭션(1602)으로부터 추출되게 할 것이다. 표 10은 상기 실시예를 구현하기 위한 예시적인 잠금 해제 및 잠금 스크립트를 제시한다:
표 10:
도 17은 다양한 실시형태에 따른 파라미터화된 스마트 계약을 구현하기 위한 프로세스(1700)의 실시예를 도시하는 흐름도이다. 프로세스(1700)(또는 설명된 임의의 다른 프로세스들, 또는 이러한 프로세스들의 변형 및/또는 조합)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램).
예를 들어, 프로세스(1700)의 일부 또는 전부는 도 1의 예시적인 블록체인 네트워크(100)와 같은 블록체인 네트워크에서 유효성 검증 노드에 의해 수행될 수 있다. 이러한 유효성 검증 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다. 프로세스(1700)는 안전한 미결정 데이터에 내재되는 파라미터들로부터 제약들을 추출하는 일련의 동작을 포함한다.
1702에서, 시스템은 직렬화된 이전 트랜잭션(예컨대, 도 16의 이전 트랜잭션(1602)의 직렬화된 필드 값들), SIGHASH 타입, 및 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 세트(예컨대, 잠금 해제 트랜잭션(1604)의 필드 값들)의 인젝션을 야기하는 스크립트를 실행한다. 스크립트는 표 8 또는 표 9로부터의 스크립트의 변형일 수 있다. 미결정 소스로부터의 파라미터가 필요 없으면 직렬화된 이전 트랜잭션이 필요하지 않을 수도 있기 때문에, 도 16 및 도 17의 파라미터화 가능한 스마트 계약에 대해서는 도 11의 프로세스(1100)가 그 전부가 필요하지 않을 수도 있다는 점에 유의한다.
1704에서, 시스템은 파라미터들의 소스가 미결정 또는 결정된 소스인지의 여부를 따르는 방식으로 파라미터를 추출한다. 예를 들어, 결정된 소스의 데이터로부터 파라미터를 추출하는 것은 도 13과 함께 설명되는 방식으로 잠금 해제 스크립트(1608)로부터 파라미터를 추출함으로써 수행될 수 있다. 다른 실시예로서, 미결정 소스의 데이터로부터 파라미터를 추출하는 것은 도 14와 함께 설명되는 방식으로 직렬화된 이전 트랜잭션으로부터 파라미터를 추출함으로써 수행될 수 있다. 또 다른 실시예로서, 일부 파라미터가 미결정 소스의 데이터에 내재되고 일부 파라미터가 결정된 소스로부터 수신되면, 스크립트는 미결정 소스 및 결정된 소스로부터 비롯되는 데이터로부터 파라미터를 추출하기 위해 도 13 및 도 14의 동작들을 조합하도록 작성될 수 있다.
1706에서, 시스템은 파라미터로부터 제약을 도출한다. 예를 들어, 표 10의 예시적인 스크립트에서, 파라미터는 스마트 계약에 지불되는 수량이고, 제약을 도출하는 것은 Alice 및 Bob의 P2PK(paytopublickey) 어드레스들에 지불해야 할 수량(예컨대, 70% 및 30%)을 결정하는 것을 포함한다. 그러나, 파라미터들 및 파라미터들로부터 도출 가능한 제약들은 다양할 수 있으며 상기에 주어진 실시예들을 넘어 달라질 수 있을 것으로 생각된다.
1708에서, 시스템은 SIGHASH 타입에 따라 결정되는 잠금 해제 트랜잭션 필드 값 세트에 대하여 제약을 검증한다. 즉, 시스템은 잠금 해제 트랜잭션의 관련 서브세트가 제약을 충족시키는지를 검증한다. 잠금 해제 트랜잭션의 관련 서브세트가 제약을 충족시키면, 잠금 해제 트랜잭션은 유효한 것으로 확인되고, 그와 달리, 잠금 해제 트랜잭션의 관련 서브세트가 제약을 충족시키지 못하면, 잠금 해제 트랜잭션은 무효한 것으로 간주된다. 1702-1708에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 18은 본 개시물의 일 실시형태에 의해 해결되는 반복되는 스마트 계약들과 연계되는 쟁점의 실시예(1800)를 도시한다. 즉, 기지의 횟수(예컨대, 5회)를 반복하는 트랜잭션을 생성하기 위해, 기지의 수의 잠금 해제 트랜잭션이 미리 생성될 수 있다. 이는 적은 횟수의 트랜잭션에 대해서는 감당할 수 있는 것이지만, 다수의 반복되는 트랜잭션을 갖는 계약의 경우에는, 모든 잠금 해제 트랜잭션(1804A-1804N)을 미리 생성하는 것이 번거로울 수 있고, 스크립트(1806A-1806N)가 매우 커질 수 있다. 일 실시예에 있어서, Alice는 상품 또는 서비스로 교환될 수 있는 가치를 가진 일정 수량의 디지털 자산(예컨대, 비트코인)을 갖고 있다. Alice는 이 수량을 자신의 아들 Bob이 매일 학교 점심식사를 위한 비용을 지불하는 데 사용되도록 할당했다. 도 18의 실시예(1800)는 Alice가 Bob의 개별 점심식사 트랜잭션들 각각에 대하여 미리 잠금 해제 트랜잭션(1804A-1804N)을 생성할 수 있음을 도시한다. 그러나, 도 19에 도시된 바와 같이, 본 개시물은 Alice에 대한 대체 해법을 고려한다.
도 19는 본 개시물의 일 실시형태의 자기-복제 스마트 계약의 실시예(1900)를 도시한다. 도 19에 도시된 바와 같이, 반복되는 계약을 달성하기 위해 소정의 특정 수의 잠금 해제 트랜잭션을 생성하는 것이 아니라, 도 16 및 도 17과 함께 설명된 파라미터화 가능한 스마트 계약에 기초하여, 종료 조건을 가진 자기-복제 스마트 계약(1904)이 생성될 수 있다. 이러한 방식으로, 상기의 실시예에 있어서, Alice는 이전 트랜잭션(1902)에서의 디지털 자산의 초기 수량을 고갈시키는 데 하나의 잠금 해제 트랜잭션만을 생성하면 된다. 잠금 해제 트랜잭션(1904A)은, 잠금 해제 트랜잭션(1904A)이 자신을 다음 잠금 해제 트랜잭션에 복제하게 하는 스크립트를 포함한다. 스크립트는 종료 조건이 충족된 후에(예컨대, n회의 발생 후에) 잠금 해제 트랜잭션(1904N)으로 하여금 복제를 중지하게 하는 종료 조건을 포함한다.
가능한 일 구현예에 있어서, 계약을 위한 트랜잭션 체인을 생성하기 위해, 장래의 트랜잭션들이 미리 생성되고, 도 20에 도시된 바와 같이, 각각의 트랜잭션의 잠금 스크립트에는 연속 트랜잭션의 잠금 스크립트가 내재해 있다. 그러나, 자기-복제 잠금 해제 트랜잭션이 잠금 해제 트랜잭션의 제약들이 수정되지 않았는지를 검증하기 위해, 각각의 이전 트랜잭션의 잠금 스크립트(예컨대, 스마트 계약)가 잠금 해제 트랜잭션에서의 잠금 스크립트와 일치하는지를 안전하게 검증할 필요가 있다.
도 20은 본 개시물의 일 실시형태에 의해 해결되는 반복되는 트랜잭션들을에 관한 쟁점의 실시예(2000)를 도시한다. 즉, 이전 트랜잭션(2002)의 잠금 스크립트(잠금 스크립트 0)는 제1 잠금 해제 트랜잭션(2004A)의 잠금 스크립트(잠금 스크립트 1)를 포함하고, 제1 잠금 해제 트랜잭션(2004A)의 잠금 스크립트(잠금 스크립트 1)는 제2 잠금 해제 트랜잭션(2004B)의 잠금 스크립트(잠금 스크립트 2)를 포함하는 등이고, 이는 최종 잠금 해제 트랜잭션(2004N)까지이다. 완전히 전개하면, 잠금 스크립트 0은 잠금 스크립트 1과 동일하지 않고, 잠금 스크립트 1은 잠금 스크립트 2와 동일하지 않다는 것 등이 분명해진다. 따라서, 실시예(2000)는 잠금 스크립트들이 동일하지 않기 때문에 자기-복제라고 할 수 없다. 이 문제점은 자기-복제에 기인하는 문제점으로 이해될 수 있다. 즉, 잠금 스크립트에는 그 자신의 복사본이 내재될 필요가 있으며, 그에 따라 끝이 없이 풀릴 수 있는 루프가 된다. 결과적으로, 잠금 스크립트는 결정할 수 없는 것이 된다. 실시예(2000)는, n번째 잠금 스크립트에 값을 할당하기 전에 루프가 풀릴 수 있는 횟수(n)를 정하고, 이후 n-1번째 잠금 스크립트에 n번째 잠금 스크립트가 내재될 수 있게 하고, 이어서 n-2번째 잠금 스크립트에 n-1번째 잠금 스크립트가 내재될 수 있게 하는 등이다. 그러나, 이는 n가지의 상이한 잠금 스크립트를 초래한다.
도 21은 자기-복제 트랜잭션들의 전형적인 구현예들과 관련된 문제점에 대한 해법의 실시예(2100)를 도시한다. 구체적으로, 도 21은 자신에게 송신되는 디지털 자산 수량을 매번 일 단위씩 감소시키고, 또한 디지털 자산의 1 단위를 Alice에게 지불하는 복제되는 스마트 계약을 묘사한다. 즉, 이전 트랜잭션(2102)은 초기 수량 X를 유지한다. 제1 잠금 해제 트랜잭션(2104A)은 Alice에게 속하는 P2PKH(pay-to-public-key-hash) 어드레스에 디지털 자산 1 단위를 지불하고, 새로운 총계(X' = X - 1)를 출력하고, 자신을 잠금 해제 트랜잭션(2104B)에 복제한다. 일부 실시예에 있어서, P2PK 또는 P2PKH는 각각의 공개 키와 연계되는 엔티티에 디지털 자산을 직접 전송하기 위한 어드레스로서 사용될 수 있다. 제2 잠금 해제 트랜잭션(2104B)은 다시 Alice에게 디지털 자산 1 단위를 지불하고, 새로운 총계(X" = X' - 1)를 출력하고 자신을 다시 복제한다.
따라서, 초기 수량 X와 관계없이 프로세스가 계속되면, 결국에는 잠금 해제 트랜잭션이 상환 불가능한 수량의 디지털 자산(예컨대, 0(zero))을 출력하도록 생성될 것이라는 점을 알 수 있다. 이는, 각각의 후속 잠금 해제 트랜잭션이, 다양한 블록체인 프로토콜에서 공제되는 최소 트랜잭션 수수료를 공제하지 않더라도, 그 이전 트랜잭션보다 작은 수량의 디지털 자산을 갖게 된다는 것을 관찰함으로써 직관적으로 이해될 수 있다. 결과적으로, 수량 출력은 0을 향해 수렴될 것이고, 그 시점에 트랜잭션을 처리하는 것은 무의미해진다. 그러나, 본 개시물의 실시형태들은 이러한 상환 불가능한 잠금 해제 트랜잭션을 피하기 위해 종료 조건을 구현하는 것에 의한 이 문제점에 대한 해법을 포함한다.
또한, 실시형태들에 있어서, 도 20에 도시된 문제점에 대한 해법은 제1 데이터(예컨대, 잠금 해제 트랜잭션 데이터) 및 제2 데이터(예컨대, 이전 트랜잭션 데이터)를 잠금 스크립트 1이 수신하게 하는 것이고, 이들 두 데이터에는 잠금 스크립트가 내재된다. 이들 실시형태에 있어서, 잠금 스크립트 1은 제1 데이터 및 제2 데이터로부터의 잠금 스크립트가 일치하는지를 검증한다. 잠금 스크립트 1이 제2 데이터(이전 트랜잭션 데이터)에 잠금 스크립트 1이 내재되어 있다는 것을 검증하면, 제1 데이터에도 잠금 스크립트 1이 내재되어 있다는 것이 검증된다.
이러한 스크립트의 기본 개요는 아래의 표 11에서 확인된다:
표 11:
상기 스크립트에서 알 수 있듯이, UTXO를 잠금 해제하는 현재 실행되는 잠금 스크립트인 이전 트랜잭션(2102)의 잠금 스크립트는 제1 잠금 해제 트랜잭션(2104A)의 잠금 스크립트에 대하여 검증되고, 이는 장차 현재의 잠금 해제 트랜잭션이 다른 잠금 해제 트랜잭션(예컨대, 제2 잠금 해제 트랜잭션(2104B))에 대한 이전 트랜잭션일 때 상환될 것이다. 따라서, 도 18 및 도 20에 도시된 바와 같이, 각각의 트랜잭션에 대한 상이한 잠금 해제 트랜잭션을 생성하는 대신에, 스크립트는 각각의 잠금 스크립트가 동일해야 한다고 강제한다. 이전 트랜잭션(2102)의 잠금 스크립트가 제2 잠금 해제 트랜잭션(2104B)이 (예컨대, 제1 잠금 해제 트랜잭션(2104A)을) 잠금 해제하려고 시도할 잠금 스크립트와 동일하면, 잠금 스크립트들은 진짜임이 확인된다.
실시형태들에 있어서, 종료 조건은 이전 트랜잭션이 불충분한 자금을 갖지만 잠금 스크립트가 여전히 유효성 검증하는 상황; 즉, 상환 불가능한 트랜잭션을 회피한다. 예를 들어, 종료 조건은 다음 트랜잭션을 수행하기에 충분한 디지털 자산이 있는지를 검증하고, 그렇지 않으면 유효성 검증을 종료하도록 구현될 수 있다. 보다 구체적인 실시예로서, 초기 풀(pool)이 365 단위의 디지털 자산과 각각의 트랜잭션 수수료에 필요한 수량(예컨대, 1년 동안 하루에 한 번의 트랜잭션에 충분한 수량)을 포함하면, 종료 조건은 나머지 단위의 수가 트랜잭션을 완료하는 데 필요한 수보다 많은지를 검증할 수 있고; 예컨대, 충분한 자금이 있는 한, 트랜잭션을 계속해서 유효성 검증한다. 그렇지 않고, 불충분한 자금이 있으면, 종료 조건이 충족되고 유효성 검증이 중단된다. 따라서, 366일에 대한 자금이 불충분하면, 366번째 잠금 해제 스크립트의 잠금 스크립트를 유효성 검증하는 것은 필요 없게 되고, 종료 조건은 잠금 스크립트의 자기-복제를 종료하는 것을 보장한다.
도 22는 다양한 실시형태들에 따른 종료 조건을 갖는 자기-복제 스마트 계약에 대한 프로세스(2200)의 실시예를 도시하는 흐름도이다. 프로세스(2200)(또는 설명된 임의의 다른 프로세스들, 또는 이러한 프로세스들의 변형 및/또는 조합)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램).
예를 들어, 프로세스(2200)의 일부 또는 전부는 도 1의 예시적인 블록체인 네트워크(100)와 같은 블록체인 네트워크에서 유효성 검증 노드에 의해 수행될 수 있다. 이러한 유효성 검증 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다. 프로세스(2200)는, 종료 조건이 충족되지 않으면, 잠금 해제 트랜잭션 및 이전 트랜잭션의 잠금 스크립트들이 동일한 것으로 검증되고, 다른 제약들이 검증되는 일련의 동작을 포함한다.
2202에서, 시스템은 유효성 검증되지 않은 트랜잭션을 수신한다. 시스템은 유효성 검증되지 않은 트랜잭션의 잠금 해제 스크립트를 실행하는 것으로 시작하고 나서, 유효성 검증되지 않은 트랜잭션에 의해 참조되는 디지털 자산과 연계되는 이전(유효성 검증된) 트랜잭션의 잠금 스크립트의 실행을 시작한다. 프로세스(2200)는 표 11의 예시적인 스크립트들의 변형을 실행하는 것으로 묘사된다. 예를 들어, 2204에서, 프로세스(2200)를 수행하는 시스템은 종료 조건이 충족되는지의 여부를 결정한다. 앞서 주지된 바와 같이, 일 구현예에 있어서, 트랜잭션을 완료하기에 불충분한 수량의 디지털 자산이 있으면 종료 조건이 충족될 수 있다. 그러나, 다른 종료 조건들이 가능할 것으로 생각된다. 예를 들어, 종료 조건은 시간 기반일 수 있다; 즉, 유효성 검증되지 않은 트랜잭션이 특정 날짜 이전에 유효성 검증되지 않으면 종료 조건이 충족될 수 있다.
종료 조건의 충족시에, 2206에서, 프로세스(2200)가 종료되고 유효성 검증이 종료된다. 그렇지 않으면, 2208에서, 시스템은 유효성 검증되지 않은 트랜잭션으로부터 제1 잠금 스크립트를 추출한다. 제1 잠금 스크립트는, 다른 유효성 검증되지 않은 트랜잭션이 현재의 트랜잭션의 UTXO를 전송하려고 시도할 때, 현재의 유효성 검증되지 않은 트랜잭션이 유효성 검증된 후에 실행되는 잠금 스크립트라는 점에 유의한다.
2210에서, 시스템은 직렬화된 이전 트랜잭션으로부터 제2 잠금 스크립트를 추출한다. 이 실시형태에 있어서, 제2 잠금 스크립트는 현재 실행되는 잠금 스크립트의 복사본이다. 2212에서, 프로세스(2200)를 수행하는 시스템은 제1 잠금 스크립트가 제2 잠금 스크립트와 일치하는지의 여부(예컨대, 2개의 잠금 스크립트가 동일한지의 여부)를 결정한다. 잠금 스크립트들이 일치하지 않으면, 2214에서, 시스템은 유효성 검증되지 않은 트랜잭션이 유효성 검증에 실패했고 유효성 검증되지 않은 채로 유지된다고 결정한다.
그렇지 않으면, 2216에서, 시스템은 스크립트에서의 임의의 나머지 제약들을 검증한다(예컨대, 이전 트랜잭션의 디지털 서명 또는 그 밖의 요건을 유효성 검증함). 나머지 제약들이 없거나, 또는 나머지 제약들이 전부 성공적으로 유효성 검증되면, 트랜잭션이 성공적으로 유효성 검증된다. 성공적인 유효성 검증 이후에, 트랜잭션이 블록체인에 추가될 수 있다. 2202-2216에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
도 23은 본 개시물의 일 실시형태에 의해 해결되는 문제점의 실시예(2300)를 도시한다. 구체적으로, 도 23은 블록체인 트랜잭션들을 사용해서 제1 상태로부터 제2 상태로 전이하는 상태 기계를 묘사한다. 일부 실시예에 있어서, 상태 기계의 상태 전이는, 현재 상태, 하나 이상의 입력(2326), 및 상태 규칙 세트(2306)가 주어지면, 다음 상태를 결정하는 것으로 설명된다. 도 23의 실시예(2300)는 상태 규칙 세트(2306) 및 파라미터에 내재되는 제1 상태(2328A)를 갖는 이전 트랜잭션(2302)을 도시한다. 일부 실시형태에 있어서, 잠금 해제 트랜잭션(2304)은 결정된 소스로부터 입력(2326)을 수용하도록 생성된다. 입력(2326)은, 제1 상태(2328A)와 결합하여, 상태 규칙 세트(2306)를 참조해서, 잠금 해제 트랜잭션(2304)의 파라미터에 내재되는 제2 상태(2328B)를 결정하는 데 사용할 수 있다.
실시형태들에 있어서, 상태 규칙 세트는 도 16 및 도 17과 함께 설명되는 바와 같은 방식으로 잠금 해제 트랜잭션(2304)에 대한 제약에 의해 표현될 수 있는 상태-트랜잭션 매트릭스이다. 이러한 실시형태들에 있어서, 제약은 현재 상태 및 다음 상태가 결정되는 입력에 의해 파라미터화된다. 제약은 잠금 해제 트랜잭션(2304)이 특정 필드에 다음 상태 값을 포함하는 것을 보장하기 위한 검사를 포함한다.
실시형태들에 있어서, 현재 상태는 트랜잭션에 내재되는 파라미터로서 표현되고, 잠금 해제 트랜잭션(2304)은 마찬가지로 잠금 해제 트랜잭션(2304)에 내재되는 다음 상태 값을 갖게 된다. 다음 상태 값은, 앞서 주지된 바와 같이, 잠금 해제 트랜잭션(2304)이 생성될 때 액세스될 수 있는 잠금 해제 트랜잭션(2304)의 필드 값 세트 내부의 스마트 계약과 관련된 현재 상태이다. 일부 실시형태에 있어서, 적어도 하나의 입력은 잠금 해제 트랜잭션(2304)이 생성되는 시점에 결정된 파라미터에서 외부 데이터로서 제공된다. 보안을 위해, 이러한 파라미터들은 결정된 소스에서 비롯된다. 이는 결정성 상태 전이를 제공한다. 마지막으로, 도 18 내지 도 22와 함께 전술한 자기-복제 스마트 계약의 스크립트들을 채용함으로써, 무신뢰 결정성 상태 기계가 생성된다. 일부 실시예에 있어서, "무신뢰(trustless)"라는 용어는, 제약들이 충족되는 한 임의의 엔티티가 유효한 잠금 해제 트랜잭션을 생성할 수 있는 속성을 의미하고; 다만, 경우에 따라, 해당 엔티티는 필요한 입력을 취득하기 위해 결정된 소스와의 상호작용이 필요할 수 있다. 도 23 내지 도 25와 함께 설명되는 다양한 실시형태들이 결정된 소스로부터 입력을 취득하는 것을 참조하지만, 일부 실시형태에 있어서는, 하나 이상의 입력이 직렬화된 이전 트랜잭션과 같은 미결정 소스로부터 취득될 수 있을 것으로 생각된다는 점에 유의한다.
도 24는 본 개시물의 일 실시형태의 무신뢰 결정성 상태 기계의 실시예(2400)를 도시한다. 도 24에 도시된 바와 같이, 실시예(2400)는 상태 규칙 세트(2406)에서의 제1 상태(2428A)("S1")에서 이전 트랜잭션(2402)을 포함할 수 있다. 실시예(2400)에서, 상태 규칙 세트(2406)는 다음 상태에 대해 2개의 가능한 상태(2430A)("S2" 또는 "S3")를 공급한다. 실시예(2400)에서 알 수 있듯이, 그 잠금 해제 스크립트에서의 입력(2426) 및 이전 트랜잭션(2402)의 필드 값 세트에 내재되는 제1 상태(2428A)("S1")를 입력으로서 취하는 잠금 해제 트랜잭션(2404)은 상태 규칙 세트(2406)로부터 적절한 제2 상태(2428B)("S2")를 결정한다. 실시예(2400)에서 더 알 수 있듯이, 이제 상태-전이 매트릭스는 제2 상태(2428B)로부터 다음 상태 전이에 대하여 가능한 새로운 상태(2430B)("S4" 또는 "S5")를 제공한다. 상태 규칙 세트(2406)는 현재 상태 및 하나 이상의 입력에 의해 파라미터화되는 스위치 문 또는 그 밖의 조건 문(예컨대, "if-then-else")으로서 코딩될 수 있다는 점에 유의한다.
실시형태들에 있어서, 각각의 가능한 상태는 자기-복제 잠금 스크립트에서 상태-전이 매트릭스와 같이 상태 변화에 대한 규칙 세트로 표현되고, 특정 트랜잭션은 특정 상태의 상태 기계를 표현한다. 이러한 실시형태들에 있어서, 트랜잭션의 잠금 스크립트는 현재의 트랜잭션에 연결되어야 하는 다음 트랜잭션에 디지털 자산의 제어를 전송하려고 시도하는 모든 잠금 해제 트랜잭션에 복제된다. 이 프로세스는 종료 조건이 충족될 때까지 복제된다. 입력들이 정해져 있지 않고 미결정 데이터일 수 있기 때문에, 상태 기계의 상태는 특정 외부 입력에 기초하여 변경될 수 있다. 따라서, 미결정 데이터는 다음 상태에 영향을 미칠 수 있는 입력을 제공한다.
예시적인 실시예에 있어서, Alice는 약간의 돈을 Bob에게 빌려주고, Bob은 Alice에게 돈을 갚는 것에 동의한다. 본 개시물에서 설명되는 바와 같이, 무신뢰 결정성 상태 기계는 Bob이 Alice에게 하는 전송을 나타내기 위해 스마트 계약으로서 구현될 수 있다. 예를 들어, 스마트 계약은 Bob이 다음 3개월 동안 매달 Alice에게 지불하는 것으로 하고, 만약 지불이 누락되면, Bob의 부채가 채권 추심 단계로 들어가도록 구성될 수 있다. 따라서, Bob이 월 단위로 전송(이체)을 하는 한, 현재 상태는 상환 상태를 유지한다. 그러나, 외부 엔티티가 Bob이 전송을 누락했음을 나타내는 입력을 제공하면, 상태는 누락된 전송 상태로 분기된다. 누락된 전송 상태에서는, Alice가 트랜잭션을 해제해서 채권 추심으로 전환할 수 있고, 그 결과 무신뢰 결정성 상태 기계가 채권 추심 상태로 전환된다. 채권 추심 상태에서는, 채권 추심자가 Bob에게서 부채를 추심하게 된다. 이러한 스마트 계약은 도 23 내지 도 25에서 묘사되는 실시형태들의 스크립트들에 대한 변형을 사용해서 생성될 수 있다.
다른 실시예에 있어서, Alice는 1 단위의 디지털 자산을 매달 기부하는 매우 자비로운 사람이다. 그녀의 규칙은 누구든지 디지털 자산을 청구할 수 있지만, 한 달에 단 1 단위만이 청구될 수 있다는 것이다. Alice는 본 개시물에서 설명되는 방식으로 스마트 계약을 생성하고, 초기 3 단위의 디지털 자산 풀을 시드로 한다. Alice는 임의의 엔티티가 한 달에 1 단위의 디지털 자산을 취할 수 있게 하는 스크립트를 구성할 수 있다. 디지털 자산의 나머지 부분은 계속되는 스마트 계약으로 복제된다. 아래의 표는 본 개시물의 무신뢰 결정성 상태 기계를 구현하는 잠금 해제 스크립트 및 잠금 스크립트의 실시예를 도시한다.
표 12:
도 25는 다양한 실시형태들에 따른 무신뢰 결정성 상태 기계에 대한 프로세스(2500)의 실시예를 도시하는 흐름도이다. 프로세스(2500)(또는 설명된 임의의 다른 프로세스들, 또는 이러한 프로세스들의 변형 및/또는 조합)의 일부 또는 전부는 실행 가능 명령어 및/또는 그 밖의 데이터로 구성되는 하나 이상의 컴퓨터 시스템의 제어하에서 수행될 수 있으며, 하나 이상의 프로세서 상에서 총괄하여 실행되는 실행 가능 명령어로서 구현될 수 있다. 실행 가능 명령어 및/또는 그 밖의 데이터는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장될 수 있다(예컨대, 자기, 광학, 또는 플래시 매체에 지속적으로 저장되는 컴퓨터 프로그램).
예를 들어, 프로세스(2500)의 일부 또는 전부는 도 1의 예시적인 블록체인 네트워크(100)와 같은 예시적인 블록체인 네트워크에서 유효성 검증 노드에 의해 수행될 수 있다. 이러한 유효성 검증 노드는 임의의 적절한 컴퓨팅 장치로(예컨대, 데이터 센터의 서버에 의해, 클라이언트 컴퓨팅 장치에 의해, 컴퓨팅 리소스 서비스 제공자의 분산형 시스템에서의 다수의 컴퓨팅 장치에 의해, 또는 도 26의 컴퓨팅 장치(2600)와 같은 임의의 적절한 전자 클라이언트 장치에 의해) 구성될 수 있다. 프로세스(2500)는, 자기-복제 스마트 계약의 잠금 스크립트들이 검증되고, 직렬화된 이전 트랜잭션으로부터 현재 상태가 취득되고, 잠금 해제 스크립트로부터 입력들이 취득되고, 상태 규칙 세트에 적어도 부분적으로 기초하여 다음 상태가 결정되는, 일련의 동작을 포함한다. 프로세스(2500)는 표 12에서 확인되는 예시적인 스크립트들의 변형을 반영한다.
2502에서, 시스템은 잠금 해제 트랜잭션을 수신한다. 시스템은 직렬화된 이전 트랜잭션 및 잠금 스크립트에 내재되는 입력들이 스택에 위치되게 하는 잠금 해제 트랜잭션의 잠금 해제 스크립트를 실행하는 것으로 시작한다. 이들 입력은 2512에서 검색된다. 2504에서, 프로세스(2500)를 수행하는 시스템은 종료 조건이 충족되는지의 여부를 결정한다. 종료 조건은 도 19 내지 도 22와 함께 설명되는 바와 같은 종료 조건일 수 있다. 실시형태들에 있어서, 종료 조건은 충족시에 상태-기계 전이가 종료되게 하는 조건이다. 종료 조건이 충족되면, 프로세스(2500)를 수행하는 시스템은 2506으로 진행하고, 그 결과, 무신뢰 결정성 상태 기계가 자기-복제를 중단한다.
2508에서, 시스템은 이전 트랜잭션 잠금 스크립트가 도 22의 2212에서 설명되는 방식으로 잠금 해제 트랜잭션 잠금 스크립트와 일치하는지를 검증한다. 잠금 스크립트들이 일치하지 않으면, 유효성 검증이 실패하고 잠금 해제 트랜잭션이 유효성 검증되지 않는다. 그렇지 않고, 잠금 스크립트들이 일치하면, 2510에서, 시스템은 직렬화된 이전 트랜잭션으로부터 가능한 상태 세트의 현재 상태를 추출한다. 2512에서, 시스템은 잠금 스크립트의 실행의 결과로서 스택에 위치되는 입력 또는 입력들을 취득한다. 이후, 2514에서, 시스템은 상태 규칙 세트를 적용해서, 현재 상태 및 입력 또는 입력들에 기초하여, 무신뢰 결정성 상태 기계에 대한 가능한 상태 세트의 다음 상태를 결정한다. 2516에서, 시스템은 다음 상태(예컨대, 상태 변수 및 적용 가능할 경우, 다른 상태-관련 데이터)가 잠금 해제 트랜잭션에 내재되는지를 검증한다. 시스템은 잠금 스크립트에 지정된 대로, 임의의 나머지 제약들을 적용할 수도 있다. 2502-2516의 동작들의 성공적인 완료 이후에, 프로세스가 2518로 종료되고, 그 결과 잠금 해제 트랜잭션은 프로세스를 수행하는 시스템에 의해 유효한 것으로 간주될 수 있다. 2502-2518에서 수행되는 동작들 중 하나 이상은 병행을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 점에 유의한다.
개시된 실시형태들을 설명하는 맥락에서, 달리 명시되지 않는 한, "명령어"가 통상적으로는 단독으로 수행하지 않는 동작들(예컨대, 데이터 전송, 계산 등)을 수행하는 실행 가능 명령어에 관한 표현(코드, 애플리케이션, 에이전트 등이라고도 함)의 사용은 명령어가 기계에 의해 실행되고, 그에 따라 기계가 지정된 동작을 수행하게 된다는 것을 나타낸다는 점에 유의한다.
도 26은 본 개시물의 적어도 하나의 실시형태를 실시하는 데 사용될 수 있는 컴퓨팅 장치(2600)의 예시적인 간략화된 블록도이다. 다양한 실시형태들에 있어서, 컴퓨팅 장치(2600)는 상기에 예시 및 설명된 시스템들 중 어느 하나를 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 장치(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 장치, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 장치로서 사용하도록 구성될 수 있다. 도 26에 도시된 바와 같이, 컴퓨팅 장치(2600)는 버스 서브시스템(2604)을 통해 다수의 주변 서브시스템과 통신하도록 구성될 수 있으며 작동 가능하게 연결되는 하나 이상의 프로세서(2602)를 포함할 수 있다. 프로세서(2602)는 본 개시물의 실시형태들에서 (예컨대, 다양한 검색어의 역 문서 빈도(IDF)의 평가 등을 야기하는) 무작위한 감독된 모델들의 트리군(forest; 숲)에서의 결정 트리들의 순회에 이용될 수 있다. 이들 주변 서브시스템은 메모리 서브시스템(2608) 및 파일/디스크 스토리지 서브시스템(2610)을 포함하는 스토리지 서브시스템(2606), 하나 이상의 사용자 인터페이스 입력 장치(2612), 하나 이상의 사용자 인터페이스 출력 장치(2614), 및 네트워크 인터페이스 서브시스템(2616)을 포함할 수 있다. 이러한 스토리지 서브시스템(2606)은 본 개시물에서 설명되는 트랜잭션들과 연계되는 세부 내용과 같은 정보의 임시 또는 장기 스토리지, 본 개시물에서 설명되는 이력 레코드들의 데이터베이스, 및 본 개시물에서의 감독된 모델들의 결정 규칙들의 스토리지에 사용될 수 있다.
버스 서브시스템(2604)은 컴퓨팅 장치(2600)의 다양한 컴포넌트들 및 서브시스템들이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)이 단일의 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대체 실시형태들은 다수의 버스를 이용할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 장치들 및 네트워크들에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 장치(2600)로부터 다른 시스템들에 데이터를 전송하고 다른 시스템들로부터 데이터를 수신하기 위한 인터페이스로서 기능할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자가 사용자 데이터 센터와 같은 원격 위치에 있는 데이터를 전송 및 수신할 수 있도록 데이터 기술자가 장치를 무선 네트워크에 연결하게 할 수 있다. 버스 서브시스템(2604)은 세부 내용, 검색어 등과 같은 데이터를 본 개시물의 감독된 모델에 통신하는 데 이용될 수 있고, 감독된 모델의 출력을 하나 이상의 프로세서(2602)에, 및 네트워크 인터페이스 서브시스템(2616)을 통해 판매자 및/또는 채권자에게 통신하는 데 이용될 수 있다.
사용자 인터페이스 입력 장치(2612)는 키보드와 같은 하나 이상의 사용자 입력 장치; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 장치; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 장치; 및 그 밖의 유형의 입력 장치들을 포함할 수 있다. 일반적으로, "입력 장치(input device)"라는 용어의 사용은 컴퓨팅 장치(2600)에 정보를 입력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 장치(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 장치와 같은 비-시각적 디스플레이 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube); LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 장치; 또는 그 밖의 디스플레이 장치일 수 있다. 일반적으로, "출력 장치(output device)"라는 용어의 사용은 컴퓨팅 장치(2600)로부터 정보를 출력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 장치(2614)는, 예를 들어, 그러한 상호작용이 적절할 수 있을 경우, 설명되는 프로세스들 및 그 변형들을 수행하는 애플리케이션들과의 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는 데 사용될 수 있다.
스토리지 서브시스템(2606)은 본 개시물의 적어도 하나의 실시형태의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터 판독 가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의한 실행시에, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시물의 하나 이상의 실시형태의 기능을 제공할 수 있고, 스토리지 서브시스템(2606)에 저장될 수 있다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 스토리지 서브시스템(2606)은 본 개시물에 따라 사용되는 데이터를 저장하기 위한 저장소를 부가적으로 제공할 수 있다. 스토리지 서브시스템(2606)은 메모리 서브시스템(2608) 및 파일/디스크 스토리지 서브시스템(2610)을 포함할 수 있다.
메모리 서브시스템(2608)은 프로그램 실행 동안 명령어 및 데이터의 저장을 위한 메인 RAM(random access memory)(2618) 및 정해진 명령어가 저장될 수 있는 ROM(read only memory)(2620)을 포함하는 다수의 메모리를 포함할 수 있다. 파일/디스크 스토리지 서브시스템(2610)은 프로그램 및 데이터 파일을 위한 비-일시적인 영구적인(비-휘발성) 스토리지를 제공할 수 있고, 연관된 이동식 매체와 함께 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM(Compact Disk Read Only Memory) 드라이브, 광학 드라이브, 이동식 매체 카트리지, 및 그 밖의 유사한 저장 매체를 포함할 수 있다.
컴퓨팅 장치(2600)는 적어도 하나의 로컬 클록(2624)을 포함할 수 있다. 로컬 클록(2624)은 특정 시작일로부터 발생한 틱(tick)의 수를 나타내는 카운터일 수 있으며 컴퓨팅 장치(2600) 내에 일체로 위치될 수 있다. 로컬 클록(2624)은 컴퓨팅 장치(2600) 및 그 안에 포함되는 서브시스템들 모두에 대한 프로세서들에서 특정 클록 펄스로 데이터 전송을 동기화하는 데 사용될 수 있으며, 컴퓨팅 장치(2600)와 데이터 센터 내의 다른 시스템들 사이의 동기 동작들을 조정하는 데 사용될 수 있다. 일 실시형태에 있어서, 로컬 클록(2624)은 원자 시계이다. 다른 실시형태에 있어서, 로컬 클록은 프로그램 가능 인터벌 타이머이다.
컴퓨팅 장치(2600)는 휴대용 컴퓨터 장치, 태블릿 컴퓨터, 워크스테이션, 또는 후술되는 임의의 다른 장치를 포함하여, 다양한 유형으로 될 수 있다. 부가적으로, 컴퓨팅 장치(2600)는 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 장치(2600)에 연결될 수 있는 다른 장치를 포함할 수 있다. 컴퓨팅 장치(2600)에 연결될 수 있는 장치는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이 장치는 광 신호를, 처리를 위해 장치를 컴퓨팅 장치(2600)에 연결하는 포트를 통해 전송될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크는 시시각각 변하기 때문에, 도 26에서 묘사되는 컴퓨팅 장치(2600)의 설명은 장치의 바람직한 실시형태를 예시할 목적으로 특정 실시예로서만 의도된다. 도 26에서 묘사되는 시스템보다 더 많거나 적은 컴포넌트를 갖는 많은 다른 구성들이 가능하다.
명세서 및 도면은, 결국, 제한적인 의미가 아니라 예시적인 의미인 것으로 간주되어야 한다. 그러나, 청구항들에 제시된 바와 같은 본 발명의 범위로부터 일탈함이 없이 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 마찬가지로, 그 밖의 변형들도 본 개시물의 범위 내에 있다. 따라서, 개시된 기술은 다양한 수정 및 대체 구성의 영향을 받기 쉽지만, 그 특정한 예시된 실시형태들이 도면에 도시되며 상세하게 전술되었다. 그러나, 본 발명을 개시된 특정 형태 또는 형태들로 제한하려는 의도는 없으며, 반대로, 본 발명은 첨부된 청구항들에서 규정된 바와 같이, 본 발명의 범위 내에서의 모든 수정, 대체 구성 및 등가물을 포함하려는 것이라는 점을 이해해야 한다.
개시된 실시형태들을 설명하는 문맥에서(특히, 하기의 청구항들의 문맥에서) 부정관사 및 정관사("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 트랜잭션은 적어도:
    상기 제1 트랜잭션의 필드 값 세트(set of field values)를 포함하고,
    실행의 결과로서, 상기 노드로 하여금 상기 필드 값 세트를 취득하게 하는
    제1 스크립트를 포함함 ―와,
    제2 트랜잭션을 취득하는 단계― 상기 제2 트랜잭션은 유효성 검증되었고, 실행의 결과로서, 상기 노드로 하여금 적어도 상기 제1 스크립트의 실행의 결과로서 공급된 상기 필드 값 세트에 적어도 부분적으로 기초하여 서명을 생성하게 하는 제2 스크립트를 포함함 ―와,
    상기 제1 스크립트 및 상기 제2 스크립트를 실행함으로써 상기 제1 트랜잭션을 유효성 검증하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 제1 트랜잭션을 유효성 검증하는 단계는 상기 제1 트랜잭션을 생성한 엔티티가 비밀 정보에 액세스할 수 있는지를 검증하지 않고 성공적으로 수행되는
    방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 스크립트는 비대칭 키 쌍의 개인 암호화 키를 더 포함하고,
    상기 제2 스크립트는 또한 상기 노드로 하여금 상기 개인 암호화 키 및 마스크 번호(mask number)에 적어도 부분적으로 기초하여 상기 서명을 생성하게 하고,
    상기 제1 트랜잭션을 유효성 검증하는 단계는 상기 서명이 상기 비대칭 키 쌍의 공개 암호화 키와 연관되어 있는지를 검증하는 단계를 더 포함하는
    방법.
  4. 제1항 또는 제2항에 있어서,
    상기 제1 스크립트는 서명 해시 타입을 더 특정하고,
    상기 필드 값 세트는 상기 서명 해시 타입에 적어도 부분적으로 기초하는
    방법.
  5. 제4항에 있어서,
    상기 서명 해시 타입은 상기 제1 트랜잭션의 상기 필드 값 세트의 어느 필드 값이 상기 서명에 포함되는지를 나타내는 값인
    방법.
  6. 제1항 또는 제2항에 있어서,
    상기 제2 스크립트는 상기 제1 트랜잭션을 유효성 검증하기 위한 조건 세트를 부과하는 잠금 스크립트이고,
    상기 잠금 스크립트의 실행은 상기 노드로 하여금 상기 조건 세트가 충족되었는지의 여부를 결정함으로써 상기 제1 트랜잭션을 유효성 검증하게 하는
    방법.
  7. 제1항 또는 제2항에 있어서,
    상기 제1 스크립트는 상기 제2 스크립트의 조건 세트를 만족시키기 위한 잠금 해제 스크립트인
    방법.
  8. 제1항 또는 제2항에 있어서,
    상기 제1 트랜잭션을 유효성 검증하는 단계는 상기 제2 트랜잭션의 소비되지 않은 트랜잭션 출력의 전송을 야기하는
    방법.
  9. 제1항 또는 제2항에 있어서,
    상기 노드는 상기 블록체인 네트워크에서의 적어도 하나의 다른 노드에 통신 가능하게 연결된 컴퓨팅 장치인
    방법.
  10. 제1항 또는 제2항에 있어서,
    상기 블록체인 네트워크는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치로 구성되는
    방법.
  11. 제1항 또는 제2항에 있어서,
    상기 제1 스크립트 및 상기 제2 스크립트는 튜링 불완전성(Turing incomplete) 명령어 세트를 사용해서 작성되는
    방법.
  12. 제1항 또는 제2항에 있어서,
    상기 제1 스크립트 및 상기 제2 스크립트는 튜링 완전성(Turing complete) 명령어 세트를 사용해서 작성되는
    방법.
  13. 제1항 또는 제2항에 있어서,
    상기 제1 스크립트는, 필드 세트를 포함함으로써, 상기 제1 스크립트의 실행의 결과로서, 상기 노드로 하여금 상기 필드 세트를 상기 제2 스크립트에 대한 입력으로서 이용 가능한 것으로 만들게 하는
    방법.
  14. 시스템으로서,
    프로세서와,
    상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금 제1항 또는 제2항에 기재된 방법을 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는
    시스템.
  15. 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템으로 하여금 제1항 또는 제2항에 기재된 방법을 적어도 수행하게 하는 실행 가능 명령어를 저장한 비일시적인 컴퓨터 판독 가능 저장 매체.
KR1020197035513A 2017-05-22 2018-05-14 잠금 해제 트랜잭션 바이트코드의 인젝션을 제한하는 기법 KR102611572B1 (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
GBGB1708192.8A GB201708192D0 (en) 2017-05-22 2017-05-22 Computer-implemented system and method
GB1708200.9 2017-05-22
GB1708190.2 2017-05-22
GBGB1708200.9A GB201708200D0 (en) 2017-05-22 2017-05-22 Computer-implemented system and method
GBGB1708190.2A GB201708190D0 (en) 2017-05-22 2017-05-22 Computer-implemented system and method
GB1708185.2 2017-05-22
GBGB1708185.2A GB201708185D0 (en) 2017-05-22 2017-05-22 Computer-implemented system and method
GB1708198.5 2017-05-22
GB1708196.9 2017-05-22
GBGB1708196.9A GB201708196D0 (en) 2017-05-22 2017-05-22 Computer-implemented system and method
GBGB1708198.5A GB201708198D0 (en) 2017-05-22 2017-05-22 Computer-implemented system and method
GB1708192.8 2017-05-22
PCT/IB2018/053335 WO2018215871A1 (en) 2017-05-22 2018-05-14 Constraining injection of unlocking transaction bytecode

Publications (2)

Publication Number Publication Date
KR20200010288A KR20200010288A (ko) 2020-01-30
KR102611572B1 true KR102611572B1 (ko) 2023-12-08

Family

ID=62495838

Family Applications (9)

Application Number Title Priority Date Filing Date
KR1020237041839A KR20230169472A (ko) 2017-05-22 2018-05-14 무신뢰 결정성 상태 기계
KR1020197035524A KR102611574B1 (ko) 2017-05-22 2018-05-14 블록체인 트랜잭션 내로의 이전 트랜잭션 바이트코드의 인젝션을 강제하는 기법
KR1020197035496A KR102599738B1 (ko) 2017-05-22 2018-05-14 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법
KR1020197035513A KR102611572B1 (ko) 2017-05-22 2018-05-14 잠금 해제 트랜잭션 바이트코드의 인젝션을 제한하는 기법
KR1020197035474A KR102612799B1 (ko) 2017-05-22 2018-05-14 종료 조건을 가진 복제가능 스마트 계약
KR1020197035446A KR102611570B1 (ko) 2017-05-22 2018-05-14 무신뢰 결정성 상태 기계
KR1020237030467A KR20230132891A (ko) 2017-05-22 2018-05-14 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법
KR1020197035454A KR102588710B1 (ko) 2017-05-22 2018-05-14 파라미터화 가능 스마트 계약
KR1020237030465A KR20230135684A (ko) 2017-05-22 2018-05-14 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020237041839A KR20230169472A (ko) 2017-05-22 2018-05-14 무신뢰 결정성 상태 기계
KR1020197035524A KR102611574B1 (ko) 2017-05-22 2018-05-14 블록체인 트랜잭션 내로의 이전 트랜잭션 바이트코드의 인젝션을 강제하는 기법
KR1020197035496A KR102599738B1 (ko) 2017-05-22 2018-05-14 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법

Family Applications After (5)

Application Number Title Priority Date Filing Date
KR1020197035474A KR102612799B1 (ko) 2017-05-22 2018-05-14 종료 조건을 가진 복제가능 스마트 계약
KR1020197035446A KR102611570B1 (ko) 2017-05-22 2018-05-14 무신뢰 결정성 상태 기계
KR1020237030467A KR20230132891A (ko) 2017-05-22 2018-05-14 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법
KR1020197035454A KR102588710B1 (ko) 2017-05-22 2018-05-14 파라미터화 가능 스마트 계약
KR1020237030465A KR20230135684A (ko) 2017-05-22 2018-05-14 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법

Country Status (9)

Country Link
US (12) US11893582B2 (ko)
EP (8) EP3631723A1 (ko)
JP (12) JP2020525880A (ko)
KR (9) KR20230169472A (ko)
CN (8) CN117611146A (ko)
SG (3) SG10202112668XA (ko)
TW (2) TW202405713A (ko)
WO (6) WO2018215874A1 (ko)
ZA (1) ZA201908400B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017184198A (ja) * 2016-03-31 2017-10-05 ソニー株式会社 イメージセンサ、撮像装置、イメージセンサ特定方法、画像偽造防止方法および画像改変制限方法
KR20230169472A (ko) * 2017-05-22 2023-12-15 엔체인 홀딩스 리미티드 무신뢰 결정성 상태 기계
GB201811263D0 (en) * 2018-07-10 2018-08-29 Netmaster Solutions Ltd A method and system for managing digital using a blockchain
WO2020035871A1 (en) * 2018-08-17 2020-02-20 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for prediction of smart contract violation using dynamic state space creation
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
CN109729163A (zh) * 2018-12-28 2019-05-07 合肥达朴汇联科技有限公司 一种区块链的数据处理方法、装置电子设备及存储介质
US11502822B2 (en) 2019-03-04 2022-11-15 International Business Machines Corporation Static analysis of smart contract determinism
GB202002285D0 (en) * 2020-02-19 2020-04-01 Nchain Holdings Ltd Computer-implemented system and method
US11269859B1 (en) * 2019-05-22 2022-03-08 Splunk Inc. Correlating different types of data of a distributed ledger system
US11507562B1 (en) 2019-05-22 2022-11-22 Splunk Inc. Associating data from different nodes of a distributed ledger system
GB201907345D0 (en) 2019-05-24 2019-07-10 Nchain Holdings Ltd Protocol for validating blockchain transactions
GB201907392D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd Proof-of-work
GB201907395D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd Knowledge proof
GB2584154A (en) 2019-05-24 2020-11-25 Nchain Holdings Ltd Knowledge proof
US11050822B2 (en) * 2019-06-05 2021-06-29 International Business Machines Corporation Secure data dissemination
US11126593B2 (en) * 2019-06-15 2021-09-21 Facebook, Inc. Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
US10790990B2 (en) * 2019-06-26 2020-09-29 Alibaba Group Holding Limited Ring signature-based anonymous transaction
CN110264207A (zh) * 2019-08-15 2019-09-20 广州蚁比特区块链科技有限公司 区块链分离处理方法及系统
CN111144887A (zh) * 2019-12-20 2020-05-12 辽宁振兴银行股份有限公司 一种区块链共享数据的保护方法
CN111277415B (zh) * 2020-01-20 2023-12-19 布比(北京)网络技术有限公司 基于区块链智能合约的隐私保护方法及装置
JP2023513849A (ja) * 2020-02-19 2023-04-03 エヌチェーン ライセンシング アーゲー 順序付けられたデータロギングのための方法、データ構造、およびシステム
EP3907644B1 (en) 2020-05-07 2022-10-05 Cambridge Cryptographic Ltd Blockchain
KR102383099B1 (ko) * 2020-05-12 2022-04-04 주식회사 블록체인기술연구소 블록체인 기반의 did 서비스, ipfs 기반의 데이터 공유 기술, 및 개인키 분산 저장 기술이 결합된 비대면 대용량 문서 접근 블록체인 시스템
CN112488712A (zh) * 2020-06-24 2021-03-12 杨刘琴 基于区块链大数据的安全识别方法及安全识别系统
US11709819B2 (en) 2020-09-30 2023-07-25 International Business Machines Corporation Validating test results using a blockchain network
GB2599735A (en) 2020-10-12 2022-04-13 Cambridge Cryptographic Ltd Blockchain
WO2022118263A1 (en) 2020-12-02 2022-06-09 Trock Stanislav Blockchain
CN112714158B (zh) * 2020-12-21 2023-11-17 东软集团股份有限公司 事务处理方法、中继网络、跨链网关、系统、介质和设备
CN113077344B (zh) * 2021-04-15 2023-06-30 恒生电子股份有限公司 基于区块链的交易方法、装置、电子设备及存储介质
GB202108385D0 (en) * 2021-06-11 2021-07-28 Nchain Licensing Ag A computer implemented method and system
KR102344118B1 (ko) 2021-07-01 2021-12-29 (주)코아메소드 블록체인 전자 계약 시스템
GB2609194A (en) * 2021-07-19 2023-02-01 Nchain Licensing Ag Enforcing conditions on blockchain transactions
GB2609193A (en) * 2021-07-19 2023-02-01 Nchain Licensing Ag Enforcing conditions on blockchain transactions
GB202112930D0 (en) * 2021-09-10 2021-10-27 Nchain Licensing Ag Signature verification
GB2611325A (en) * 2021-09-30 2023-04-05 Nchain Licensing Ag Propagating locking scripts

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170085545A1 (en) * 2015-07-14 2017-03-23 Fmr Llc Smart Rules and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257554B1 (en) * 1999-03-19 2007-08-14 Hewlett-Packard Development Company, L.P. Anonymous purchases while allowing verifiable identities for refunds returned along the paths taken to make the purchases
KR101508794B1 (ko) * 2008-07-09 2015-04-06 삼성전자주식회사 Ndef 메시지에서 선택적으로 레코드들을 보안하기 위한 방법
CN102238146B (zh) 2010-04-27 2014-10-08 中国移动通信集团公司 认证方法、装置、认证中心及系统
US10339524B2 (en) * 2012-07-31 2019-07-02 Worldpay, Llc Systems and methods for multi-merchant tokenization
AU2013205125B1 (en) * 2013-04-13 2014-07-31 Hasq Technology Pty Ltd Method and system for the secure transfer and verification of ownership of digital sequences
CN103226270B (zh) * 2013-05-03 2016-01-20 合肥京东方光电科技有限公司 一种半透半反液晶显示面板、显示装置及阵列基板
US10366386B2 (en) * 2013-09-12 2019-07-30 Paypal, Inc. Electronic wallet fund transfer system
US9710808B2 (en) 2013-09-16 2017-07-18 Igor V. SLEPININ Direct digital cash system and method
US9595034B2 (en) * 2013-10-25 2017-03-14 Stellenbosch University System and method for monitoring third party access to a restricted item
US20160012465A1 (en) 2014-02-08 2016-01-14 Jeffrey A. Sharp System and method for distributing, receiving, and using funds or credits and apparatus thereof
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
FR3018370A1 (fr) * 2014-03-07 2015-09-11 Enrico Maim Procede et systeme de generation automatique de crypto-monnaies
US10776761B2 (en) * 2014-03-18 2020-09-15 nChain Holdings Limited Virtual currency system
CN103927659A (zh) * 2014-04-18 2014-07-16 刘志望 一种虚拟货币的即时转移和安全支付方法
US20150302400A1 (en) 2014-04-18 2015-10-22 Ebay Inc. Distributed crypto currency reputation system
EP3140979A4 (en) 2014-05-09 2017-12-27 Veritaseum Inc. Devices, systems, and methods for facilitating low trust and zero trust value transfers
WO2015175619A1 (en) * 2014-05-15 2015-11-19 Alibaba Group Holdiing Limited Method, apparatus, and system for operating an electronic account in connection with an electronic transaction
CN110009315A (zh) * 2014-05-15 2019-07-12 阿里巴巴集团控股有限公司 一种支付方法、支付页面的展示方法及装置
CN104021080B (zh) * 2014-06-13 2017-01-11 中国民航信息网络股份有限公司 基于自定义脚本的自动化测试系统
US10396992B2 (en) 2014-06-30 2019-08-27 Vescel, Llc Authentication of a user and/or a device through parallel synchronous update of immutable hash histories
US11232414B2 (en) * 2014-07-03 2022-01-25 Raise Marketplace Inc. Cryptocurrency verification system
US10148441B2 (en) 2014-09-12 2018-12-04 Verisign, Inc. Systems, devices, and methods for detecting double signing in a one-time use signature scheme
CN104392354B (zh) * 2014-11-05 2017-10-03 中国科学院合肥物质科学研究院 一种公钥地址与用户账号的关联和检索方法及其系统
US20160162897A1 (en) * 2014-12-03 2016-06-09 The Filing Cabinet, LLC System and method for user authentication using crypto-currency transactions as access tokens
KR101660627B1 (ko) 2015-02-03 2016-09-28 한양대학교 에리카산학협력단 암호화 화폐의 거래를 보호하는 방법 및 장치
AU2016255340A1 (en) * 2015-02-27 2017-07-06 Visa International Service Association Transaction signing utilizing asymmetric cryptography
AU2016235539B2 (en) * 2015-03-20 2019-01-24 Rivetz Corp. Automated attestation of device integrity using the block chain
PL3073670T3 (pl) * 2015-03-27 2021-08-23 Black Gold Coin, Inc. System i sposób osobistej identyfikacji i weryfikacji
AU2016242888A1 (en) 2015-03-31 2017-11-16 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
CA2981952A1 (en) * 2015-04-06 2016-10-13 Bitmark, Inc. System and method for decentralized title recordation and authentication
CN104735164B (zh) * 2015-04-10 2018-05-18 网易(杭州)网络有限公司 一种保存文件信息的方法和装置
US20160321629A1 (en) * 2015-05-01 2016-11-03 Monegraph, Inc. Digital content rights transfers within social networks
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
US20170011460A1 (en) 2015-07-09 2017-01-12 Ouisa, LLC Systems and methods for trading, clearing and settling securities transactions using blockchain technology
US11488147B2 (en) 2015-07-14 2022-11-01 Fmr Llc Computationally efficient transfer processing and auditing apparatuses, methods and systems
GB2540976A (en) * 2015-07-31 2017-02-08 British Telecomm Access control
KR101661930B1 (ko) 2015-08-03 2016-10-05 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템
US10402792B2 (en) 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
US10937023B2 (en) * 2015-10-15 2021-03-02 Paypal, Inc. Crypto currency chargeback system
KR101637854B1 (ko) * 2015-10-16 2016-07-08 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법 및 블록체인을 기반으로 하는 공인인증서 인증시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 인증방법
WO2017067587A1 (en) * 2015-10-21 2017-04-27 Rwe Ag Meter of a supply system and supply system
US20170132626A1 (en) 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for processing of a blockchain transaction in a transaction processing network
US20170132625A1 (en) 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for use of a blockchain in a transaction processing network
US11941588B2 (en) 2015-11-06 2024-03-26 Cable Television Laboratories, Inc. Systems and methods for blockchain virtualization and scalability
US20170140408A1 (en) * 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts
KR101590076B1 (ko) 2015-11-18 2016-02-01 주식회사 웨이브스트링 개인정보 관리 방법
US10423938B1 (en) 2015-11-20 2019-09-24 United Services Automobile Association Identifying negotiable instrument fraud using distributed ledger systems
US20180253702A1 (en) 2015-11-24 2018-09-06 Gartland & Mellina Group Blockchain solutions for financial services and other transactions-based industries
US10230756B2 (en) 2015-11-25 2019-03-12 International Business Machines Corporation Resisting replay attacks efficiently in a permissioned and privacy-preserving blockchain network
US9948467B2 (en) 2015-12-21 2018-04-17 Mastercard International Incorporated Method and system for blockchain variant using digital signatures
US10108812B2 (en) 2016-01-28 2018-10-23 Nasdaq, Inc. Systems and methods for securing and disseminating time sensitive information using a blockchain
US9794074B2 (en) 2016-02-04 2017-10-17 Nasdaq Technology Ab Systems and methods for storing and sharing transactional data using distributed computing systems
US11354658B2 (en) 2016-02-11 2022-06-07 Mastercard International Incorporated Method and system for offline blockchain exchanges
US10693658B2 (en) 2016-02-12 2020-06-23 Visa International Service Association Methods and systems for using digital signatures to create trusted digital asset transfers
CN109074563B (zh) 2016-02-23 2022-04-19 区块链控股有限公司 区块链系统内的基于代理的图灵完备交易集成反馈
CN116957790A (zh) 2016-02-23 2023-10-27 区块链控股有限公司 一种实现区块链上交换的通证化方法及系统
BR112018016805A2 (pt) * 2016-02-23 2018-12-26 Nchain Holdings Ltd método e sistema para transferência eficiente de criptomoeda associada com um pagamento em um blockchain que leva a um pagamento automatizado, método e sistema com base em contratos inteligentes
CN105809062B (zh) 2016-03-01 2019-01-25 布比(北京)网络技术有限公司 一种合约构建、执行方法及装置
US10546296B2 (en) * 2016-04-13 2020-01-28 Paypal, Inc. Public ledger authentication system
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 上海如鸽投资有限公司 资产交易系统以及资产的数字化认证和交易方法
US20190149337A1 (en) 2016-04-29 2019-05-16 nChain Holdings Limited Implementing logic gate functionality using a blockchain
EP3449450B1 (en) 2016-04-29 2022-06-15 Nchain Holdings Limited Implementing logic gate functionality using a blockchain
CN106022917A (zh) * 2016-05-08 2016-10-12 杭州复杂美科技有限公司 区块链撮合交易所方案
CN106096967A (zh) * 2016-06-20 2016-11-09 深圳市淘淘谷信息技术有限公司 一种用区块链来标示数字货币流通的方法
JP6939791B2 (ja) 2016-07-28 2021-09-22 日本電気株式会社 掲示板情報管理システム
GB201613176D0 (en) * 2016-07-29 2016-09-14 Eitc Holdings Ltd Computer-implemented method and system
EP4138339A1 (en) 2016-07-29 2023-02-22 Magic Leap, Inc. Secure exchange of cryptographically signed records
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN106055993A (zh) * 2016-08-13 2016-10-26 深圳市樊溪电子有限公司 一种用于区块链的加密存储系统及其使用方法
US10878522B2 (en) 2016-08-18 2020-12-29 First American Financial Corporation Systems and methods for using blockchains to record, manage, and transfer ownership rights to land titles
US10523443B1 (en) 2016-08-24 2019-12-31 Bruce Kleinman Devices, methods, and systems for cryptographic authentication and provenance of physical assets
CN106372941B (zh) * 2016-08-31 2019-07-16 江苏通付盾科技有限公司 基于区块链的ca认证管理方法、装置及系统
CN106372868B (zh) * 2016-09-06 2020-02-18 联动优势科技有限公司 一种对写入区块链的交易数据的验证方法和装置
CA3033144A1 (en) 2016-09-09 2018-03-15 Microsoft Technology Licensing, Llc. Tracing objects across different parties
US10832247B2 (en) * 2016-09-15 2020-11-10 American Express Travel Related Services Company, Inc. Systems and methods for blockchain based payment networks
CN106504094B (zh) * 2016-11-25 2021-06-15 中国银行股份有限公司 基于区块链技术的分布式总账系统的交易撮合方法及系统
CN106649632B (zh) * 2016-12-07 2018-03-16 北京众享比特科技有限公司 数据同步方法及系统
CN106598549B (zh) 2016-12-08 2019-02-01 天津米游科技有限公司 一种基于区块链的智能合约系统及实现方法
US20180260921A1 (en) 2017-03-08 2018-09-13 Bsquare Corp. Remote machine operation through distributed permissioning
CN110603557B (zh) 2017-03-16 2024-04-12 香港物流及供应链管理应用技术研发中心 控制交易账本的系统和方法
EP3379767B1 (en) 2017-03-24 2021-01-13 Hewlett-Packard Development Company, L.P. Distributed authentication
US20180285996A1 (en) * 2017-04-03 2018-10-04 FutureLab Consulting Inc. Methods and system for managing intellectual property using a blockchain
US10832230B2 (en) 2017-04-04 2020-11-10 International Business Machines Corporation Scalable and distributed shared ledger transaction management
EP3396608A1 (en) * 2017-04-24 2018-10-31 BlockSettle AB Method and system for settling a blockchain transaction
KR20230169472A (ko) 2017-05-22 2023-12-15 엔체인 홀딩스 리미티드 무신뢰 결정성 상태 기계
GB201709760D0 (en) 2017-06-19 2017-08-02 Nchain Holdings Ltd Computer-Implemented system and method
EP3422221A1 (en) 2017-06-29 2019-01-02 Nokia Technologies Oy Electronic health data access control
US20190172026A1 (en) * 2017-12-02 2019-06-06 Alchemy Limited LLC Cross blockchain secure transactions
WO2019139678A1 (en) 2018-01-14 2019-07-18 Robot Cache, Inc. Methods and systems for media distribution employing contracts implemented in a distributed ledger
CN108229943B (zh) 2018-01-19 2020-05-05 阿里巴巴集团控股有限公司 区块链余额的调整方法及装置、电子设备
US11257081B2 (en) 2018-05-08 2022-02-22 Oracle International Corporation Integrating a blockchain ledger with an application external to the blockchain ledger

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170085545A1 (en) * 2015-07-14 2017-03-23 Fmr Llc Smart Rules and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems

Also Published As

Publication number Publication date
CN110663054A (zh) 2020-01-07
JP2020522046A (ja) 2020-07-27
JP2022169691A (ja) 2022-11-09
JP2023126974A (ja) 2023-09-12
CN110709872A (zh) 2020-01-17
EP4236199A2 (en) 2023-08-30
ZA201908400B (en) 2023-06-28
JP2020522047A (ja) 2020-07-27
JP7071403B2 (ja) 2022-05-18
US20230188354A1 (en) 2023-06-15
KR20200010289A (ko) 2020-01-30
JP2020521373A (ja) 2020-07-16
EP3631727A1 (en) 2020-04-08
US11528145B2 (en) 2022-12-13
KR102588710B1 (ko) 2023-10-16
JP2023154019A (ja) 2023-10-18
EP3631728A1 (en) 2020-04-08
WO2018215873A1 (en) 2018-11-29
EP4236199A3 (en) 2023-10-18
EP3631724A1 (en) 2020-04-08
KR102611574B1 (ko) 2023-12-08
SG10202112667UA (en) 2021-12-30
JP2020525880A (ja) 2020-08-27
JP7130673B2 (ja) 2022-09-05
US20200143339A1 (en) 2020-05-07
WO2018215876A1 (en) 2018-11-29
US20230092477A1 (en) 2023-03-23
CN110709871A (zh) 2020-01-17
SG10202112659XA (en) 2021-12-30
WO2018215875A1 (en) 2018-11-29
US20230419319A1 (en) 2023-12-28
KR20200011949A (ko) 2020-02-04
KR20230169472A (ko) 2023-12-15
KR20200010286A (ko) 2020-01-30
US20210184849A1 (en) 2021-06-17
EP3631725A1 (en) 2020-04-08
CN110663053A (zh) 2020-01-07
TW201901546A (zh) 2019-01-01
US20230419317A1 (en) 2023-12-28
SG10202112668XA (en) 2021-12-30
US20200099529A1 (en) 2020-03-26
EP3631723A1 (en) 2020-04-08
US11509482B2 (en) 2022-11-22
KR102611570B1 (ko) 2023-12-08
KR20200010288A (ko) 2020-01-30
WO2018215874A1 (en) 2018-11-29
KR20230132891A (ko) 2023-09-18
EP4236198A3 (en) 2023-10-18
KR102612799B1 (ko) 2023-12-13
CN117611146A (zh) 2024-02-27
US20200099528A1 (en) 2020-03-26
EP3631726A1 (en) 2020-04-08
KR20200011435A (ko) 2020-02-03
US20230419318A1 (en) 2023-12-28
EP4236198A2 (en) 2023-08-30
TW202405713A (zh) 2024-02-01
JP7402051B2 (ja) 2023-12-20
US20200160327A1 (en) 2020-05-21
CN117094709A (zh) 2023-11-21
JP2023126973A (ja) 2023-09-12
JP2024063167A (ja) 2024-05-10
US11411740B2 (en) 2022-08-09
JP7186364B2 (ja) 2022-12-09
JP2020521370A (ja) 2020-07-16
CN110709873A (zh) 2020-01-17
TWI820024B (zh) 2023-11-01
KR20200010287A (ko) 2020-01-30
US11893582B2 (en) 2024-02-06
WO2018215871A1 (en) 2018-11-29
CN110651289A (zh) 2020-01-03
US11456875B2 (en) 2022-09-27
JP2023062103A (ja) 2023-05-02
US11893584B2 (en) 2024-02-06
JP2023017958A (ja) 2023-02-07
WO2018215872A1 (en) 2018-11-29
US11810018B2 (en) 2023-11-07
KR20230135684A (ko) 2023-09-25
US20200175511A1 (en) 2020-06-04
US20230376950A1 (en) 2023-11-23
KR102599738B1 (ko) 2023-11-09
JP7232776B2 (ja) 2023-03-03
JP7450678B2 (ja) 2024-03-15
JP2020521371A (ja) 2020-07-16

Similar Documents

Publication Publication Date Title
KR102611572B1 (ko) 잠금 해제 트랜잭션 바이트코드의 인젝션을 제한하는 기법

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