KR20190094229A - 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법 - Google Patents

스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법 Download PDF

Info

Publication number
KR20190094229A
KR20190094229A KR1020197020420A KR20197020420A KR20190094229A KR 20190094229 A KR20190094229 A KR 20190094229A KR 1020197020420 A KR1020197020420 A KR 1020197020420A KR 20197020420 A KR20197020420 A KR 20197020420A KR 20190094229 A KR20190094229 A KR 20190094229A
Authority
KR
South Korea
Prior art keywords
blockchain
script
stack
transaction
additional
Prior art date
Application number
KR1020197020420A
Other languages
English (en)
Other versions
KR102525244B1 (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 GBGB1621831.5A external-priority patent/GB201621831D0/en
Priority claimed from GBGB1621827.3A external-priority patent/GB201621827D0/en
Priority claimed from GBGB1621830.7A external-priority patent/GB201621830D0/en
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20190094229A publication Critical patent/KR20190094229A/ko
Application granted granted Critical
Publication of KR102525244B1 publication Critical patent/KR102525244B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/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/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/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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
    • 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/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
    • H04L2209/38
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

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

Abstract

본 발명은 비트코인 블록체인과 같은 블록체인 기술에 관한 것이다. 본 발명은 블록체인 트랜잭션 스크립트의 기능을 몇 개의 청크 또는 기능적 부분들로 분해하고, 한 청크의 출력을 다음 청크의 입력으로 사용하기 위한 새로운 기술을 사용한다. 유리하게는, 이는 블록체인으로 하여금 스크립트 크기를 최소화하면서도 복잡한 태스크 및 계산에 사용되도록 하며, 이는 또한 계산 프로세스의 분산 실행을 위한 새로운 아키텍처를 제공한다. 본 발명은 컴퓨터 구현 태스크를 실행하기 위해 복수의 블록체인 트랜잭션들을 사용하는 방법에 관한 것으로, 스택 상에 결과를 제공하도록 적어도 하나의 데이터 항목을 다른 트랜잭션(Tx1)의 잠금 스크립트(LS1)에 제공하기 위하여 블록체인 트랜잭션(Tx2)에서 잠금 해제 스크립트 (ULS1)를 사용하는 단계; 상기 스택 상에 제공되는 결과를 포함하는 추가 잠금 해제 스크립트 (ULS2)를 생성하는 단계; 상기 스택으로부터의 결과가 추가 잠금 스크립트에 대한 입력으로 제공되도록 상기 추가 잠금 해제 스크립트 (ULS2)를 상기 추가 잠금 스크립트 (LS2)에 제공하는 단계를 포함한다.

Description

스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법
본 발명은 일반적으로 블록체인 기술에 관한 것으로서, 더 상세하게는 블록체인을 통해 복합 기능을 구현하는 것에 관한 것이다. 이점으로는, 본 발명은 실행된 코드 또는 계산의 결과가 서로 전달되도록 하며, 컴퓨터로 구현되는 프로세스의 활동을 가능하게 하고, 영향을 미치고, 지시하기 위한 제어 메커니즘으로서 블록체인 트랜잭션을 이용하는 메커니즘을 제공한다. 본 발명은 자동화된 프로세스의 제어 및 구현에 특히 적합하나 이에 제한되지 않는다.
본 명세서에서 우리는 블록체인 및 트랜잭션-체인 기술, 허가형 또는 비-허가형 원장, 공유 원장 및 그 변형을 포함하되 이에 국한되지 않는 전자적, 컴퓨터 기반 분산 원장의 모든 형태를 포함하기 위해 '블록체인'이라는 용어를 사용한다. 비록 다른 블록체인 구현예가 제안되고 개발되었으나, 가장 널리 알려진 블록체인 기술의 어플리케이션은 비트코인 원장이다. 비트코인은 여기서 편의와 설명의 목적을 위해 언급될 수 있지만, 본 발명은 비트코인 블록체인을 사용하는 것에 제한되지 않으며 대안적인 블록체인 구현예 및 프로토콜이 본 발명의 범위 내에 있음에 주목해야 한다.
블록체인은 차례대로 트랜잭션(거래)을 구성하는 블록으로 구성된 컴퓨터 기반 분산형, 분배형 시스템으로 구현되는 합의 기반, 전자 원장이다. 각각의 트랜잭션은 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 블록은 생성 이래로 블록체인에 기록된 모든 트랜잭션의 영구적이고 변경 불가능한 기록을 생성하기 위해 해당 블록이 서로 연결되는 이전 블록의 해시를 포함한다. 트랜잭션은 입력 및 출력에 내장된 스크립트라고 하는 작은 프로그램을 포함하며, 이는 어떻게 그리고 누구에 의해 트랜잭션의 출력에 접근할 수 있는지를 지정한다. 비트코인 플랫폼에서, 이러한 스크립트는 스택 기반(스택-based)의 스크립팅 언어를 이용하여 기록된다. 스크립트는 스택에 데이터 항목을 넣거나(push), 이들을 스택에서 빼내는(pop)는 명령어(연산 부호(opcodes))로 구성된다.
거래(transaction)가 블록체인에 기록되기 위해서, "유효"해야 한다. 네트워크 노드(채굴자)는 네트워크로부터 거부된 유효하지 않은 트랜잭션을 통해, 각각의 트랜잭션이 유효한지 확인하는 작업을 수행한다. 노드에 설치된 소프트웨어 클라이언트는 잠금 및 잠금해제 스크립트를 실행하여 미사용 트랜잭션(UTXO)에 대한 이러한 확인 작업을 수행한다. 잠금 및 잠금해제 스크립트의 실행이 참(TRUE)으로 평가하면, 트랜잭션은 유효하고 트랜잭션은 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인에 기록되기 위해서는, i) 트랜잭션을 수신한 제1 노드에 의해 유효성이 검사되고 - 트랜잭션이 유효하면, 노드는 네트워크의 다른 노드에 이를 중계함; ii) 채굴자에 의해 생성된 새로운 블록에 추가되고; iii) 채굴, 즉 과거 트랜잭션의 공개 원장에 추가되어야 한다.
블록체인 기술이 암호화폐 구현(implementation)의 사용으로 가장 널리 알려져 있지만, 디지털 기업은 새로운 시스템을 구현하기 위해 블록체인에 저장될 수 있는 데이터 및 비트코인에 기반한 암호화 보안 시스템 모두의 사용을 모색하기 시작했다. 암호화폐의 영역에 국한되지 않는 자동화된 작업 및 프로세스에 블록체인이 사용될 수 있다면 매우 유용할 것이다. 이러한 솔루션은 블록체인의 이점을 활용할 수 있을 뿐만 아니라(예, 영구적이고, 쉽게 변경할 수 없는 이벤트 기록, 분산 처리 등) 응용 분야에서 더욱 다양하게 활용될 수 있다.
현재 연구의 한 분야는 기계 판독 가능한 문서에서 설정된 조건에 따라 작동하고 결과를 산출하기 위해 입력을 처리할 수 있는 규칙을 포함하며, 동작이 그 결과에 따라 수행될 수 있는 기계 실행 가능한 프로그램인, "스마트 계약"의 구현을 위한 블록체인의 사용이다.
그러나, 점점 더 정교한 어플리케이션이 블록체인 기술에 대해 고안됨에 따라, 끊임없이 복잡해지는 스크립트 기능에 대한 요구도 증가하고 있다. 여기서 기술적인 문제가 발생 하지만, 블록체인 기술은 스크립트 내에서 합법적으로 달성될 수 있는 것을 제한 및 한정하기 위해 의도적으로 설계된다. 예를 들어, 보안 사항으로 인해, 비트코인 스크립트 언어는 의도적으로 비-튜링 컴플리트(non-Turing complete)이다. 또한, 서비스 거부 공격(Denial of Service(Dos) attacks)을 방지하기 위해 스크립트 당 최대 200개 연산 부호 상한치가 부과된다. 비트코인 트랜잭션 스트립트가 200개 미만의 연산 부호를 포함하고 있다면, 유효성이 검사되고 브로드캐스트 될 수 있다. 그러나, 보다 정교한 프로그램 요소(예, 프리미티브(primitives))의 출현으로, 이러한 제한은 스마트 계약 실행과 같은 어플리케이션을 위한 더 복잡한 기술 솔루션의 개발을 제한한다.
따라서, 기존 프로토콜의 어떠한 적응을 요구하거나 및/또는 보안을 침해하지 않고 복잡한 기능이 블록체인 스크립트 내에 생성 가능하도록 하는 기술 솔루션이 요구된다. 가급적, 이러한 솔루션은 비트코인 프로토콜과 같은 기존 블록체인 프로토콜의 기능이, 현재 한계를 넘도록 블록체인의 계산 능력을 확장할 수 있도록 블록체인 트랜잭션 및 스택을 이용함으로써 인프라(infrastructure)가 새롭고 유리한 방법으로 사용될 수 있도록 한다. 이러한 기법은 트랜잭션의 이용이 기술 프로세스의 실행을 제어하고, 영향을 미치며 및 지시하도록 할 수 있다.
이제 이러한 솔루션이 고안되었다. 본 발명은 적어도 여기서 설명된 이점을 제공한다.
본 발명은 첨부된 청구항에서 정의된다.
그러므로, 본 발명에 따르면, 방법 및/또는 대응하는 시스템이 제공될 수 있다.
한 관점에 따르면, 본 발명은 블록체인(blockchain)의 사용을 통해 복잡한 기능들이 수행될 수 있도록 하는 기술 및 대응하는 구현을 제공하는 것으로 간주될 수 있다. 바람직하게는, 이 기술은 정의된 기능을 수행하기 위해 다양한 개별 컴퓨팅 구성 요소의 조합을 사용할 수 있다. 이들은 하나 이상의 소프트웨어 기반 클라이언트들, 적어도 하나의 저장 자원(바람직하게는, 스택-기반 데이터 구조), 적어도 하나의 프로세서 상에서 실행되고 블록체인 트랜잭션을 생성하도록 설정된 적어도 하나의 디지털 지갑, 및/또는 블록 체인을 포함할 수 있다. 바람직하게는, 이는 비트코인 블록체인일 수 있다.
본 발명의 실시예들은 복수의 트랜잭션들 및 그들의 각각의 입력들 및 출력들에 대한 기술적 과제의 분해를 포함할 수 있다. 본 발명의 실시예들은 적어도 하나의 데이터 저장 자원으로부터 데이터를 획득할 수 있으며, 특히 각 트랜잭션 입력들 및 출력들 사이에서 스크립트 출력들을 전달하는 것에 의하여, 복수의 블록체인 트랜잭션들에 대하여 구현되는 태스크 또는 계산의 실행을 제어하기 위하여 그 데이터를 사용할 수 있다.
상술한 다양한 시스템 컴포넌트들은 블록체인 트랜잭션을 통해 계산 및 태스크가 수행될 수 있도록 컴포넌트들 사이에서 데이터 항목을 획득하고 전달하도록 배치 될 수 있다. 이러한 계산들/테스크들은 길고 복잡할 수 있으며, 본 발명 이전에 블록체인 트랜잭션들을 통해 수행될 수 없고, 아마도 스크립트의 크기 및/또는 거기에 사용되는 op_code의 수에 대한 강제적인 제한 때문일 수 있다.
트랜잭션들이 블록체인 상에 있으면, 이들은 불변의 영구적인 방법으로 기록된다. 그러므로, 한 관점으로부터, 본 발명은 개선된 블록체인 프로토콜, 개선된 블록체인 클라이언트, 개선된 계산 기술 및 대응하는 장치, 및/또는 개선된 프로세스 제어 메커니즘을 제공한다.
한 측면에서, 본 발명은 스크립트 크기 및 옵코드(opcode) 제한에 대한 보안 기반 제한을 유지하면서 블록체인 프로토콜을 통해 복잡한 계산을 수행할 수 있게 한다. 본 발명에 앞서, 그러한 긴 계산은 예를 들어 현재의 비트코인 프로토콜을 사용하는 것이 불가능하거나, 또는 스크립트 기반 제한을 포함하지 않는 블록체인의 변형 형태를 사용해야 할 것이다. 후자가 항상 바람직하거나 실현 가능한 것은 아니다. 따라서, 본 발명은 향상된 보안 메커니즘을 제공한다. 프로토콜을 통해 지금까지 불가능했던 결과를 달성하기 위한 수단을 제공하기 때문에, 본 발명은 개선된 블록체인 프로토콜을 제공한다.
본 발명에 따른 방법은 블록체인 방법 (및 대응하는 시스템)으로 설명될 수 있다. 이는 컴퓨터 구현 태스크를 실행하기 위해 복수의 블록체인 트랜잭션을 사용하는 방법으로 설명될 수 있다. 부가적으로 또는 대안적으로, 이는 다음의 방법으로 설명될 수 있다:
2 개 이상의 각각의 블록체인 트랜잭션에 제공되는 잠금 및 잠금 해제 스크립트에 태스크의 일부의 실행을 할당하거나 배포하여 컴퓨터 구현 태스크의 실행을 제어;
스택 기반 데이터 구조로부터 값을 읽고 잠금 해제 스크립트로부터 잠금 스크립트까지의 값으로 이를 전달하여 컴퓨터 구현 태스크의 실행을 제어.
상기 방법은 다음 단계들을 포함할 수 있다:스택 상에서 결과를 제공하도록 적어도 하나의 데이터 항목을 다른 트랜잭션(Tx1)의 잠금 스크립트 (LS1)에 제공하기 위해 블록체인 트랜잭션(Tx2)에서 잠금 해제 스크립트 (ULS1)를 사용하는 단계;
상기 스택 상에 제공되는 상기 결과를 포함하는 추가 잠금 해제 스크립트(ULS2)를 생성하는 단계; 및/또는
상기 스택으로부터의 결과가 추가 잠금 스크립트에 대한 입력으로 제공되도록 상기 추가 잠금 해제 스크립트 (ULS2)를 추가 잠금 스크립트 (LS2)에 제공하는 단계.
블록체인 트랜잭션들은 비트코인 프로토콜의 버전에 따라 정렬될 수 있다.
상기 단계들 중 하나 이상은 반복될 수 있으며, 즉, 한번보다 더 수행될 수 있다.
상기 방법은 상기 잠금 스크립트 (LS1) 내에 제공된 계산 또는 명령 시퀀스의 실행에 상기 적어도 하나의 데이터 항목을 사용하는 단계를 더 포함할 수 있다.
상기 방법은 상기 추가 잠금 스크립트(LS2) 내에 제공되는 계산 또는 명령 시퀀스의 실행에 상기 스택 상에 제공된 결과를 이용하는 단계를 더 포함한다.
상기 방법은 상기 스택으로부터 상기 결과를 획득하는 단계를 더 포함할 수 있다.
상기 방법은 상기 스택 상에 상기 결과를 생성하기 위하여 상기 블록체인 트랜잭션(Tx2) 및/또는 다른 트랜잭션(Tx1)을 인증하는 단계를 더 포함할 수 있다.
상기 잠금해제 스크립트(ULS1) 및 상기 추가 잠금해제 스크립트(ULS2)는 동일한 블록체인 트랜잭션(Tx2) 내 다른 입력들과 연관지어 제공될 수 있다.
상기 잠금 스크립트(LS1) 및 상기 추가 잠금 스크립트(LS2)는 상기 동일한 블록체인 트랜잭션(Tx1) 내 다른 출력들과 연관지어 제공될 수 있다.
상기 잠금 해제 스크립트(ULS1) 및 상기 추가 잠금 해제 스크립트(ULS2)는 다른 블록체인 트랜잭션들 내 입력들과 연관지어 제공될 수 있다. 상기 잠금 스크립트(LS1) 및 상기 추가 잠금 스크립트(LS2)는 다른 블록체인 트랜잭션들 내 출력들과 연관지어 제공될 수 있다.
상기 추가 잠금 해제 스크립트(ULS2)를 추가 잠금 스크립트(LS2)에 제공하는 단계는 상기 스택 또는 다른 스택 상에 추가 결과를 제공할 수 있다.
상기 추가 잠금 해제 스크립트(ULS2)를 생성하는 단계는: 입력(In2)을 삽입하기 위하여 블록체인 트랜잭션(Tx2)을 수정하는 단계를 포함하고, 상기 추가 잠금 해제 스크립트(ULS2)는 삽입된 입력(In2)과 연관된다.
상기 방법은 상기 스택으로부터 상기 결과를 획득하기 위하여 블록체인 클라이언트를 사용하는 단계를 더 포함할 수 있다. 블록체인 클라이언트는 비트코인 클라이언트일 수 있다. 상기 스택은 메인 스택 또는 대체 스택일 수 있다.
상기 방법은 상기 블록체인 네트워크로 상기 블록체인 트랜잭션(Tx2) 및/또는 다른 블록체인 트랜잭션(Tx1)을 제출하는 단계를 더 포함할 수 있다.
상기 적어도 하나의 데이터 항목은 상기 잠금 해제 스크립트(ULS1) 내 메타데이터로써 제공될 수 있고; 및/또는 상기 결과는 상기 추가 잠금해제 스크립트(ULS2) 내 메타데이터로써 제공될 수 있다.
본 발명의 한 실시예는 컴퓨터 구현 태스크를 실행하기 위하여 복수의 블록체인 트랜잭션들을 사용하는 방법도 제공하며, 이는 다음의 단계들을 포함한다:
스택 상에서 결과를 제공하도록 적어도 하나의 데이터 항목을 다른 트랜잭션(Tx1)의 잠금 스크립트 (LS1)에 제공하기 위해 블록체인 트랜잭션(Tx2)에서 제1 입력(In1)과 연관된 잠금 해제 스크립트 (ULS1)를 사용하는 단계;
제2 입력(In2)을 포함하도록 블록체인 트랜잭션(Tx2)을 수정하는 단계;
제2 입력(In2)과 연관된 추가 잠금해제 스크립트(ULS2)를 생성하며, 추가 잠금해제 스크립트(ULS2)는 상기 스택으로부터의 결과를 포함하는 단계; 및
상기 스택으로부터의 결과가 추가 잠금 스크립트에 대한 입력으로 제공되도록 상기 추가 잠금 해제 스크립트 (ULS2)를 추가 잠금 스크립트 (LS2)에 제공하는 단계.
상기 방법은, 상기 단계들 중 하나 이상을 2회 이상 수행하는 단계; 및 / 또는
상기 잠금 스크립트 (LS1) 내에 제공된 계산 또는 명령 시퀀스의 실행에 상기 적어도 하나의 데이터 항목을 사용하는 단계; 및 / 또는
상기 추가 잠금 스크립트 (LS2) 내에 제공된 계산 또는 명령 시퀀스의 실행에 상기 스택 상에 제공된 결과를 사용하는 단계; 및 / 또는
상기 스택으로부터 상기 결과를 획득하는 단계; 및 / 또는
상기 스택 상에 상기 결과를 생성하기 위해 블록체인 트랜잭션(Tx2) 및/또는 다른 트랜잭션(Tx1)을 인증하는 단계를 더 포함할 수 있다.
잠금 해제 스크립트 (ULS1) 및 추가 잠금 해제 스크립트 (ULS2)는 동일한 블록체인 트랜잭션(Tx2) 내의 다른 입력 (In1 In2)과 연관지어 제공될 수 있다. 잠금 스크립트(LS1) 및 추가 잠금 스크립트(LS2)는 동일한 블록체인 트랜잭션(Tx1) 내의 다른 출력들과 연관지어 제공될 수 있다.
추가 잠금해제 스크립트 (ULS2)를 추가 잠금 스크립트 (LS2)에 제공하는 단계는 상기 스택 또는 다른 스택 상에서 추가 결과를 제공할 수 있다. 이 방법은 블록체인 클라이언트를 사용하여 상기 스택으로부터 결과를 획득하는 단계를 포함할 수 있다. 블록체인 클라이언트는 비트코인 클라이언트일 수 있다.
본 발명은 컴퓨터 구현 태스크를 실행하기 위하여 복수의 블록체인 트랜잭션을 이용하는 방법을 제공할 수도 있다. 이는 스택 상에 결과를 제공하도록 다른 트랜잭션(Tx1)의 제1 잠금 스크립트(LS1)에게 적어도 하나의 데이터 항목을 보내기 위하여 블록체인 트랜잭션(Tx2)의 제1 입력(In1)과 연관된 잠금해제 스크립트(ULS1)를 사용하는 단계;
제2 입력(In2)과 연관되고 상기 스택으로부터의 결과를 포함하는 추가 잠금해제 스크립트(ULS2)를 생성하는 단계, 여기서 상기 제2 입력(In2)은 추가 블록체인 트랜잭션(Tx3)에서 제공된다; 그리고
상기 스택으로부터의 결과가 추가 잠금 스크립트에 대한 입력으로 제공되도록 상기 추가 잠금해제 스크립트 (ULS2)를 상기 추가 잠금 스크립트 (LS2)에 제공하는 단계를 포함할 수 있다.
잠금 스크립트 (LS1)와 추가 잠금 스크립트 (LS2)는 서로 다른 블록체인 트랜잭션의 출력들과 연관될 수 있다. 잠금해제 스크립트 (ULS1)와 추가 잠금해제 스크립트(ULS2)는 서로 다른 블록체인 트랜잭션의 입력과 연관될 수 있다.
이 방법은 잠금 스크립트(LS1) 내에 제공된 계산 또는 명령 시퀀스의 실행에 적어도 하나의 데이터 항목을 사용하는 단계를 더 포함할 수 있다.
이 방법은 추가 잠금 스크립트 (LS2) 내에 제공된 계산 또는 명령 시퀀스의 실행에서 상기 스택 상에 제공되는 결과를 사용하는 단계를 더 포함 할 수 있다.
상기 방법은 상기 스택으로부터의 결과를 획득하는 단계를 더 포함할 수 있다.
상기 방법은 블록체인 클라이언트를 사용하여 상기 스택으로부터 결과를 획득하는 단계를 더 포함할 수 있으며, 바람직하게는 블록체인 클라이언트는 비트코인 클라이언트일 수 있다.
이 방법은 스택 상에 상기 결과를 생성하기 위해 블록체인 트랜잭션(Tx2) 및/또는 다른 트랜잭션(Tx1), 및/또는 추가 트랜잭션(Tx3)을 인증하는 단계를 더 포함할 수 있다.
이 방법은 상기 스택으로부터 결과를 얻고 그 결과를 리턴 커맨드(return command) 또는 명령(instruction) 후에 잠금해제 스크립트에 삽입하는 단계를 더 포함할 수 있다. 커맨드 또는 명령은 비트코인 OP_RETURN 옵코드일 수 있다.
본 발명의 실시예들은 또한 대응하는 시스템 및 장치를 포함한다. 본 발명은 전술한 또는 실질적으로 후술되는 임의의 선행 방법 단계(들)을 구현하도록 배치되고 구성된 컴퓨터 구현 시스템을 포함할 수 있다.
본 발명의 이들 또는 다른 양태는 여기서 설명된 본 발명에 관해 상세히 설명되고 명백해 질 것이다. 본 발명의 실시예는 예시를 통해서 첨부된 도면에 관련하여 이제 설명될 것이다.
이점으로는, 이러한 기술은 특정 기능을 수행하기 위해 다양한 개별 컴퓨팅 구성 요소의 조합을 이용할 수 있다.
그러므로, 하나의 관점에서 본 발명은 개선된 블록체인 프로토콜, 개선된 블록체인 클라이언트, 개선된 연산 기법 및 대응하는 장치, 및/또는 개선된 프로세스 제어 메커니즘을 제공한다.
도 1은 본 발명의 제1 실시예에 따른 다중 입력/출력 접근에 관한 일련의 단계 및 트랜잭션 체인을 설명한다.
도 2는 본 발명의 제1 실시예의 예시 버전에 따른 트랜잭션 1(Tx1)을 나타낸다.
도 3은 본 발명의 제1 실시예의 예시 버전에 따른 트랜잭션 2(Tx2)를 나타낸다.
도 4는 실시예 2의 예시 버전에 따른 트랜잭션의 예시적인 체인을 나타낸다.
도 5 내지 8은 실시예 2의 예시 버전에 관한 트랜잭션 1, 2, 3 및 4를 나타낸다.
도 9a 및 9b는 본 발명의 예시 버전이 실시예 1에 관련하여 어떻게 제공될 수 있는지에 대한 설명을 나타낸다.
도 10은 스택의 상단에 남은 항목을 획득하는데 이용되는 블록체인 클라이언트의 간단한 설명을 나타낸다.
본 발명의 예시적 실시예
다음의 예시에서, 우리는 우리의 예시적 블록체인 구현 및 프로토콜로서 비트코인을 이용하는데, 이는 그것이 가장 널리 알려져 있기 때문이다. 이는 단지 설명의 목적을 위한 것이며 본 발명은 이러한 점에 한정되지 않는다는 점에 주목해야 한다. 다른 블록체인 구현 또한 본 발명의 범위 내에 있다.
DoS(Denial of Service) 공격의 배포를 방지하기 위해, 디폴트 비트코인 클라이언트(default Bitcoin client)는 다양한 스크립트 내에 포함될 수 있는 연산 부호(op_code) 및 바이트(byte)의 최대 개수에 대한 제한을 설정한다. 본 출원의 우선일에, 이러한 제한은 10,000 바이트와 201개 연산 부호이다. 201개 연산 부호 또는 10,000 바이트 이상을 포함하는 스크립트는 유효하지 않다. 의미있는 이유로 부과되었으나, 이러한 제한은 더 정교한 스크립트 기능의 개발을 방해하며, 따라서 블록체인 기술과 함께 작동하도록 설계될 수 있는 기술 솔루션의 복잡도(complexity)을 방해한다.
본 발명은 2개 이상의 블록체인 트랜잭션의 사용을 통해 다중 입력/출력에서 블록체인 스크립트를 사용자가 분할할 수 있도록 하는 2개의 기법(실시예들)을 제공한다. 본 발명의 두 버전은 다음으로 구성되는 자동화된 컴퓨팅 에이전트(또는 “봇(bots)”의 능력에 따를 수 있다.
스택의 상태를 읽는다,
전파(propagate), 즉, 실행된 스크립트의 결과를 미사용 트랜잭션 출력의 입력으로 전달한다.
큰 복합 스크립트를 다수의 작고 간단한 단위로 나눈다.
비트코인과 같은, 일부 블록체인 구현에서, 디폴트 비트코인 클라이언트는 이러한 정보 항목에 대한 접근을 제공하지 않으므로, 사용자 정의 참조 클라이언트(customised reference client)는 스크립트가 종결된 후에 스택의 상태가 읽혀질 수 있도록 요구될 수 있다는 점에 주목해야 한다. 스택은 비트코인 코어 프로그램(bitcoin core program)에 포함된 .cpp 파일에 목록으로 나타날 수 있다. 스택 행동을 에뮬레이트(emulate)하는 클래스에 약간의 코드 라인을 삽입함으로써, 목록에 포함된 정보를 입력하거나 획득할 수 있다. 그러면 정보는 다른 연산에서 및/또는 다른 컴퓨팅 리소스에 의한 사용을 위해 전달될 수 있다. 이는 도 10에 도시된다. 따라서, 본 발명은 블록체인 클라이언트 및 장치의 새로운 형태를 제공한다.
실행된 스크립트의 결과의 전파는 어떠한 자동화도 요구하지 않고 수동으로 수행될 수 있다(최소한 원칙적으로). 그러나, 일반적인 구현에서 컴파일러(compiler)와 같은 외부 시스템은 복합 스크립트를 분할하는 것에 관여된 작동의 자동화를 처리할 것으로 예상된다.
이점으로는, 본 발명에 의해 비트코인 프로토콜의 수정이 요구되지 않는다. 다시 말해, 커스텀 클라이언트가 트랜잭션을 준비하기 위해 필요할 수 있지만, 트랜잭션이 브로드캐스트(broadcast)되면, 비트코인 네트워크의 모든 노드는 이들을 검증할 수 있을 것이다.
따라서, (모든 버전의) 발명에 따르면, 기본 개념은 스크립트를 몇몇 청크(chunk) 또는 기능 부분으로 분할하고, 다음 청크의 입력으로서 청크의 출력을 이용하는 것이다. 이는 선행 기술로부터 중요한 차이이다. 이는 스크립트 크기에 대한 제한을 유지하면서 블록체인이 항상 복잡한 작업 및 연산에 이용되도록 하며, 연산 프로세스의 분산된 실행에 대한 새로운 기술과 아키텍처를 제공한다. 따라서, 본 발명은 개선되고 안전한 블록체인을 제공한다.
그러나, 스크립트 실행의 최종 출력은 이진(binary), 즉, 트랜잭션이 유효로 표시되거나 무효로 표시된다는 것을 명심해야 한다(다른 요건을 충족한다고 가정). 그러므로, 연산의 하나의 청크의 출력과 연산의 다음 청크의 입력을 "연결"하기 위해, 위에서 설명한 바와 같이, 하나는 스택에 대한 값에 접근할 수 있는 비기준(non-reference) 클라이언트를 이용하고 이들을 재사용해야 한다.
다음의 간단한 예시를 통해 시작한다.
x + y > 3
이는 다음과 같은 방법으로 연산 부호에 대해 기록될 수 있다.
OP_<x> OP_<y> OP_ADD OP_3 OP_GREATERTHAN
이를 다음 두 개의 청크로 분할한다.
z = x + y
z > 3
첫번째 접근에 따르면, 솔루션은 지금 설명한 대로 채택될 수 있다.
앨리스(Alice)는 다음과 같이 Tx1을 준비한다:
Tx1
In0:
amount: A + <dust> + tf
ref: …
unlocked by: …
Out1:
amount: <dust>
locked by: OP_ADD OP_SWAP <Bob's pubKey> OP_SWAP OP_CHECKSIG OP_DROP
Out2:
amount: A
locked by: OP_3 OP_GREATERTHAN OP_SWAP <Bob's pubKey> OP_DROP
밥(Bob)은 다음의 방법으로 Tx2를 준비하기 시작한다:
Tx2
In0:
amount: tf
ref: …
unlocked by: …
In1:
amount: <dust>
ref: Tx1:Out1
unlocked by: <Bob's signature> OP_2 OP_3
Out0:
amount: <dust>
locked by: …
밥은 이제 트랜잭션에 서명하고, 그것을 검증하고, 스택으로부터 Tx1:Out1의 잠금해제 스크립트와 연결된(chained) Tx2:In1의 잠금해제 스크립트의 출력을 읽을(읽기 위해 최적화된 클라이언트를 이용할) 것이다.
그러면 그는 다음의 입력 및 출력을 추가하여 Tx2를 변경할 것이다:
In2:
amount: A
ref: Tx1:Out2
unlocked by: <Bob's signature> OP_5
Out1:
amount: A
locked by: …
여기서, 분명히 OP_5는 연산의 제1 청크의 결과이다. 또한 이 경우, 밥이 OP_5를 다른 것으로 대체하는 트랜잭션을 브로드캐스트 하지 못하도록 다중 서명(multi-signature)을 이용할 수 있다. 이러한 접근은 많은 수의 청크(트랜잭션에서 입력 및 출력의 개수에 대한 제한까지)가 두 개의 트랜잭션 만을 이용하여 연결될 수 있다는 이점을 가진다. 그러므로, 복잡한 기능 및 연산은 블록체인 네트워크에 의해 채굴되고 검증되기 위해 두 개의 트랜잭션만을 요구하고, 블록체인에 대한 최소한의 필요 메모리(storage requirement)를 이용하여, 효율적인 방식으로 수행될 수 있다.
대안적인 접근에 따라, 다음의 단계가 수행될 수 있다.
제1 트랜잭션 Tx1은 입력의 모든 소유자에 의해 공동으로 서명되고 준비된다.
입력은 다음의 잠금 스크립트를 이용하여 앨리스의 공개키에 전송된다:
OP_ADD OP_SWAP <Alice's pubKey> OP_SWAP OP_CHECKSIG OP_DROP
Tx1
In:
amount: A + tf
ref: …
unlocked by: …
Out1:
amount: A
locked by: OP_ADD OP_SWAP <Alice's pubKey> OP_SWAP OP_CHECKSIG OP_DROP
이제 앨리스는 다음의 방법으로 Tx2를 준비할 것이다:
Tx2
In1:
amount: 2*<dust> + tf
ref: …
unlocked by: …
In2:
amount: A
ref: Tx1:Out1
unlocked by: <Alice's signature> OP_2 OP_3
Out1:
amount: <dust>
locked by: …
여기서 Tx2:In2는 이제 플래그(flag) SIGHASH_NONE으로 서명될 것이므로, 다른 출력이 추가될 수 있다. 기술분야에서 알려진 것처럼, SIGHASH_NONE은 입력만을 서명하는 비트코인 서명 해시 타입이다. 그러므로, SIGHASH_NONE이 사용되면, 누구든 그들이 선택한 어떠한 방식으로든 출력을 수정할 수 있다.
Tx2:In1은 아마도 앨리스의 자금을 고려하고 SIGHASH_SINGLE을 통해 잠금해제 될 수 있으므로, 다시, 다른 출력이 추가될 수 있다. 현재 형태에서, 트랜잭션은 트랜잭션 금액 A를 트랜잭션 수수료로 이체할 것이다. 그러나, 앨리스는 현재 형태에서 트랜잭션을 브로드캐스트 하지 않고, 단순히 국지적으로(locally) 이를 확인한다. 확인 프로세스에서 Tx2:In2의 잠금해제 스크립트는 Tx1:Out의 잠금 스트립트와 함께 실행될 것이다.
<Alice's signature> OP_2 OP_3 OP_ADD OP_SWAP <Alice's pubKey> OP_SWAP OP_CHECKSIG OP_DROP
그리고 스택의 실행 말단에서 나머지 결과는 5, 즉 연산의 제1 청크의 결과일 것이다. 앨리스의 커스텀 비트코인 클라이언트는 연산의 제1 청크의 결과를 기록하거나 저장하고 다음 두 개의 출력을 추가함으로써 Tx2를 수정할 것이다:
Out2:
amount: A
locked by: OP_3 OP_GREATERTHAN OP_SWAP <Bob's pubKey> OP_DROP
Out3:
amount: <dust>
locked by: OP_RETURN OP_5
그러나 이번에는 통상적인 플래그 SIGHASH_ALL을 통해, 그녀는 다시 Tx2의 입력에 서명할 것이며, 이제 트랜잭션의 출력은 수정될 수 없다. 밥은 이제 OP_RETURN후 Out3에 저장된 데이터를 읽음으로써 연산을 완료할 수 있다.
기술분야에서 알려진 것처럼, OP_RETURN은 트랜잭션 출력(TxO)을 무효로 표시하는데 사용될 수 있는 비트코인 연산 부호다. OP_RETURN 후 제공된 데이터는 비트코인 지불에 대하여 무시되므로, OP_RETURN은 블록체인을 통해 미지불 관련 데이터를 전달하기 위한 메커니즘으로서 종래 기술에서 사용되어 왔다.
밥은 이제 다음 트랜잭션을 준비한다:
Tx3
In:
amount: A
ref: Tx2:Out2
unlocked by: <Bob's signature> OP_5
Out: …
원칙적으로, OP_RETURN 후 DHT에 인덱스 된 해시를 저장할 수 있으므로, 임의로 긴 중간 결과가 트랜잭션 사이에 전달될 수 있다. 분명히, 이 예시에서 앨리스는 밥이 상기에서처럼 Tx3를 준비할 것으로 믿으므로, 연산은 성공적으로 완료될 수 있다. 간단한 확장은 Tx2:Out2가 앨리스와 밥에 의해 서명되도록 요청할 수 있으므로, 앨리스는 밥이 올바른 트랜잭션을 준비하였다는 것을 검증할 수 있다. 그러나, 밥은 트랜잭션을 준비하거나 이에 서명하는 것을 거절함으로써 실행을 무기한 연기할 수 있다. 앨리스는 또한 Tx3를 준비하고, 그것을 밥에서 보내고, OP_RETURN 후 데이터를 저장하지 않을 수 있다. 이러한 접근은 누군가에게 연산의 각 청크가 블록체인에 있다는 확인을 기다리도록 요청할 수 있다는 점에 주목해야 한다.
기본 기법의 이러한 두 가지 구현의 상세한 예시는 첨부된 도면을 참조하여 아래에서 제공된다. 다음의 설명은 아래와 같이 구성된다.
"실시예 1"은 두 개의 트랜잭션만을 이용하는 첫번째 접근을 설명한다; 다중 입력 및 출력이 조작됨
"실시예 2"는 동일한 기술 효과를 얻기 위해 다중 트랜잭션을 "링크(link)"하거나 연결(chain)시키는 대체 접근을 설명한다. 두 가지 접근의 조합이 가능하다는 점에 주목해야 한다.
두 실시예의 이용을 설명하기 위해, 우리는 이제 다음과 같이 정의되는 함수 f(x,y,z)를 평가하는 다음의 예시를 고려한다.
Figure pct00001
우리(또는 컴파일러)는 간단한 함수의 합으로써 f(x,y,z)를 표현한다.
Figure pct00002
Figure pct00003
Figure pct00004
양 실시예에서, 함수(function) g1 및 g2 자체는 잠금 스크립트에 포함되는 반면, 인수(argument) g1 및 g2를 나타내는 변수(variable) x, y 및 z는 트랜잭션 잠금해제 스크립트에 포함될 것이다. 그러므로, 이후부터는, 용어 “함수” 및 “잠금 스크립트”를 교환적으로 사용할 것이다. 특히, x 및 y는 g1을 포함하는 잠금 스크립트를 잠금해제하는 스크립트에 있을 것이다. 유사하게, g1(x, y) 및 z는 g2를 포함하는 잠금 스크립트를 잠금해제하는 스크립트에 있을 것이다.
이 문서의 후속 섹션에서, 우리가 사용하는 예시는 연산 부호 OP_ADD 및 PrO_MULT를 포함한다. 이들 식별자는 산술 연산자 덧셈(+) 및 곱셈
Figure pct00005
을 각각 나타낸다. 연산 부호 OP_X, OP_Y 및 OP_Z는 변수 x, y 및 z를 나타낸다. 부호 G1 및 G2는 g1 및 g2에 대응하는 잠금 스크립트가 잠금해제 된 후 스택의 상단에 있는 값을 나타낸다. OP_ADD는 비트코인 스크립트 언어의 일부를 형성하는 연산 부호이다. 우리는 곱셈 연산을 수행하기 위해 실행될 수 있는 연산을 나타내는 “기본 연산자(primitive operator)”를 줄인, 용어 “PrO_MULT”를 사용한다. 비트코인의 현재 버전에서, 곱셈에 대한 연산 부호(OP_MUL, OP_2MUL과 같은)는 비활성화되고, 그래서 PrO_MULT는 그러한 현재 비활성화된 기능을 제공하기 위해 맞춤 정의된(custom-defined) 연산일 수 있다. 물론, OP_MUL 등의 연산 부호가 재활성화되면 이들은 대신 사용될 수 있다. 따라서, 본 발명은 표준(활성화된) 연산 부호를 사용하는 기능에만 사용될 수 있고, 맞춤 생성(custom-built) 연산자의 구현 세부 사항은 본 발명의 일부가 아니거나 관련성이 없다. 그러므로 PrO_MULT가 어떻게 구현될 수 있는가에 관련된 세부 사항은 본 발명의 이해에 필수적이지 않고, 명확성을 위해 여기에 포함되지 않았다.
여기서 제시된 예시는 긴 스크립트의 성공적인 실행을 조건으로, 자금이 앨리스에서 밥으로 전달되는 매우 간단한 스마트 계약의 실행에 해당한다. 스크립트 입력은 밥에 의해 제공되고, 두 개의 가능한 악의적 행동을 예상할 수 있다. 첫번째로, 밥은 스크립트가 성공적으로 실행되고 자금이 그에게 전달되도록 잘못된 입력을 제공할 수 있다. 그러나, 트랜잭션이 블록체인에 저장되면, 입력은 앨리스가 계약에 이의를 제기할 수 있도록 공개적으로 이용될 수 있다. 두번째로, 밥이 앨리스로터의 전달을 거절한 어떠한 이유를 가진다면, 그는 트랜잭션을 무기한 연기하도록 결정할 수 있고, 따라서 계약의 실행을 방해할 수 있다. 가장 간단한 시나리오에서, 앨리스는 밥이 계약의 실행을 연기하지 않을 것이고 그는 올바른 입력을 제공할 것이라는 것을 간단히 신뢰해야 한다. 추가적인 보안 메커니즘은 보안을 강화하기 위해 독창적 개념과 함께 활용될 수 있다.
실시예 1: 스크립트를 다수의 입력 및 출력으로 분할하기
도 1, 9a 및 9b는 실시예 1의 다중 입력/출력 접근에 관련된 순차적인 단계 및 일련의 트랜잭션을 도시한다. Tx1은 Tx2에 의해 소비될 미사용 트랜잭션 출력(Unspent Transaction Outputs, UTXOs)의 세트를 포함한다. Tx2의 구성은 점진적으로, 단계적으로 진행된다. 각 단계에서, (자동화된 소프트웨어) 에이전트는 Tx1의 하나의 UTXO에 잠금해제 스크립트를 제시한다. 에이전트는 Tx2를 검증하고, 스택 상단에 대한 값을 읽고, 새로운 잠금해제 스크립트를 준비한다. 스크립트 및 블록체인 트랜잭션의 자동화된 생성은 기술분야에 알려져 있고 따라서 여기서 설명하지 않는다.
에이전트는 이전 단계(또는 더 이른 단계로부터)의 스택으로부터 획득된 정보를 이용할 수 있고, 이러한 새로운 잠금해제 스크립트를 Tx1 내에 포함된 다른 UTXO에 제시할 수 있다. Tx2는 모든 필수 단계가 현재 작업에 대해 완료되면 브로드캐스트된다
이점으로, 이러한 기법은 Tx2에 의해 제공된 잠금해제 스크립트에 포함된 인수로부터 Tx1의 잠금 스크립트에 포함된 함수를 분리시킨다. Tx1이 블록체인에 추가되고 검증되면 함수는 변경되지 않는다. 게다가, 이 단계에서, 함수 인수(입력)는 심지어 알려지지 않을 수 있다. Tx2가 준비되면, 이들은 나중에 공개된다. 이는 장점이고 강화된 보안을 제공할 수 있다.
실시예 1에 대한 단계의 시퀀스는 도 1, 도 9a 및 도 9b에 도시되고 다음과 같이 설명될 수 있다.
단계 0: 앨리스는 비트코인 네트워크에 트랜잭션 1을 제출한다(도1에 도시된 것처럼).
단계 1: 밥은 트랜잭션 2의 최초 버전을 준비한다.
단계 3: 밥은 출력0에 <Bob's signature> <OP_X> <OP_Y> <Redeem script 1>를 제시한다. 밥은 트랜잭션 2를 검증하고, 스택 상단에서 값 G1을 읽으나, 트랜잭션 2를 브로드캐스트하지 않는다.
단계 4: 밥은 출력1에 <Bob's signature> <G1> <OP_Z> <Redeem script 2>를 제시한다. 밥은 트랜잭션 2를 검증하고, 스택 상단에서 값 G2를 읽으나, 트랜잭션 2를 브로드캐스트하지 않는다.
단계 5: 밥은 출력2에 <Bob's signature> <G2> <OP_X> <Redeem script 3>를 제시한다. 밥은 트랜잭션 2를 검증하고 이를 브로드캐스트한다
단순화를 위해, 우리는 Tx1의 입력 및 Tx2의 출력에 관한 확장된 세부 사항을 제공하지 않는다. 도 2는 트랜잭션 1(Tx1)을 나타낸다. 도 3은 트랜잭션2(Tx2)를 나타낸다.
실시예 2: 스크립트를 다중 트랜잭션으로 분할하기
두번째 실시예는 함수를 구성하기 위해 블록체인 트랜잭션을 이용한다(도 4 참조). 이러한 접근은 이전 실시예와 원칙적으로 유사하다. 그러나, 검증 단계 동안, 에이전트는 스택 상단에서 값을 읽고, 상기에서 설명된 OP_RETURN 후에 그것/그것들을 추가한다.
도 5 내지 도 8은 실시예 2의 예시 버전에 따른 트랜잭션 1, 2, 3 및 4를 나타낸다.
상기에서 언급한 실시예는 본 발명을 제한하기 보다는 설명하기 위한 것이며, 기술분야의 당업자는 첨부된 청구항에 의해 정의되는 본 발명의 범위로부터 출발하지 않고 많은 다른 대안을 설계할 수 있음에 주목해야 한다. 청구항에서, 괄호 안에 있는 참조 부호는 청구항을 제한하는 것으로 해석해서는 안된다. "포함하는" 및 "포함한다" 그리고 이와 유사한 단어는 어떤 청구항 또는 명세서 전체에 나열된 것 이외의 구성 요소나 단계의 존재를 배제하지 않는다. 본 명세서에서, "포함한다"는 "구성하거나 이루어진다"를 의미하고, "구성하는"은 "구성하거나 이루어지는"을 의미한다. 구성 요소의 단일 참조는 그러한 구성 요소의 복수 참조를 배제하지 않으며 그 반대도 마찬가지이다. 본 발명은 몇몇 개별 구성 요소를 포함하는 하드웨어에 의해 그리고 적절하게 프로그램된 컴퓨터에 의해 구현될 수 있다. 몇몇 수단을 열거하는 장치 청구항에서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어 물품에 의해 실시될 수 있다. 특정 방법이 서로 다른 종속항에 나열된다는 단순한 이러한 방법의 조합이 유리하게 이용될 수 없다는 것을 나타내지 않는다.

Claims (19)

  1. 컴퓨터 구현 태스크를 실행하기 위해 복수의 블록체인 트랜잭션들을 사용하는 방법에 있어서,
    스택 상에 결과를 제공하도록 적어도 하나의 데이터 항목을 잠금 스크립트(LS1)에 제공하기 위하여 블록체인 트랜잭션(Tx2)에서 잠금 해제 스크립트 (ULS1)를 사용하는 단계;
    상기 스택 상에 제공되는 결과를 포함하는 추가 잠금 해제 스크립트 (ULS2)를 생성하는 단계;
    상기 스택으로부터의 결과가 추가 잠금 스크립트에 대한 입력으로 제공되도록 상기 추가 잠금 해제 스크립트 (ULS2)를 상기 추가 잠금 스크립트 (LS2)에 제공하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    제1항의 단계들의 하나 이상을 한번보다 더 수행하는 단계를 더 포함하는 방법.
  3. 제1항 또는 제2항에있어서,
    상기 잠금 스크립트 (LS1) 내에 제공된 계산 또는 명령 시퀀스의 실행에 상기 적어도 하나의 데이터 항목을 사용하는 단계를 더 포함하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 추가 잠금 스크립트(LS2) 내에 제공되는 계산 또는 명령 시퀀스의 실행에 상기 스택 상에 제공된 결과를 이용하는 단계를 더 포함하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 스택으로부터 상기 결과를 획득하는 단계를 더 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 스택 상에 상기 결과를 생성하기 위하여 상기 블록체인 트랜잭션(Tx2) 및/또는 다른 트랜잭션(Tx1)을 인증하는 단계를 더 포함하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 잠금해제 스크립트(ULS1) 및 상기 추가 잠금해제 스크립트(ULS2)는 동일한 블록체인 트랜잭션(Tx2) 내 다른 입력들과 연관지어 제공되는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 잠금 스크립트(LS1) 및 상기 추가 잠금 스크립트(LS2)는 상기 동일한 블록체인 트랜잭션(Tx1) 내 다른 출력들과 연관지어 제공되는 방법.
  9. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 잠금해제 스크립트(ULS1) 및 상기 추가 잠금해제 스크립트(ULS2)는 다른 블록체인 트랜잭션들 내 입력들과 연관지어 제공되는 방법.
  10. 제1항 내지 제6항 및 제9항 중 어느 한 항에 있어서,
    상기 잠금 스크립트(LS1) 및 상기 추가 잠금 스크립트(LS2)는 다른 블록체인 트랜잭션들 내 출력들과 연관지어 제공되는 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 추가 잠금 해제 스크립트(ULS2)를 추가 잠금 스크립트(LS2)에 제공하는 단계는 상기 스택 또는 다른 스택 상에 추가 결과를 제공하는 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 추가 잠금 해제 스크립트(ULS2)를 생성하는 단계는:
    입력(In2)을 삽입하기 위하여 블록체인 트랜잭션(Tx2)을 수정하는 단계를 포함하고, 상기 추가 잠금해제 스크립트(ULS2)는 삽입된 입력(In2)과 연관되는 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 스택으로부터 상기 결과를 획득하기 위하여 블록체인 클라이언트를 사용하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 블록체인 클라이언트는 비트코인 클라이언트인 방법.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 블록체인 네트워크로 상기 블록체인 트랜잭션(Tx2) 및/또는 다른 블록체인 트랜잭션(Tx1)을 제출하는 단계를 더 포함하는 방법.
  16. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 블록체인은 컨센서스 기반의 분산된 전자 원장; 및/또는 비트코인 블록체인이고;
    상기 트랜잭션들 중 하나, 일부 또는 전부는 비트코인 트랜잭션들이며; 및/또는
    상기 방법은 비트코인 블록체인 상에서 실행되도록 구성되는 방법.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 적어도 하나의 데이터 항목은 상기 잠금해제 스크립트(ULS1) 내 메타데이터로써 제공되고; 및/또는
    상기 결과는 상기 추가 잠금해제 스크립트(ULS2) 내 메타데이터로써 제공되는 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서,
    최종 결과를 계산하기 위하여 상기 방법을 사용하고, 상기 블록체인 상에서 수행되는 프로세스를 제어하기 위하여 상기 최종 결과를 사용하는 단계를 더 포함하는 방법.
  19. 제1항 내지 제18항 중 어느 한 항의 방법을 수행하도록 설정된 컴퓨터 구현 시스템.
KR1020197020420A 2016-12-21 2017-12-15 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법 KR102525244B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GB1621831.5 2016-12-21
GB1621830.7 2016-12-21
GB1621827.3 2016-12-21
GBGB1621831.5A GB201621831D0 (en) 2016-12-21 2016-12-21 Computer-implemented system and method
GBGB1621827.3A GB201621827D0 (en) 2016-12-21 2016-12-21 Computer-implemented system and method
GBGB1621830.7A GB201621830D0 (en) 2016-12-21 2016-12-21 Computer-implemented system and method
PCT/IB2017/058009 WO2018116106A1 (en) 2016-12-21 2017-12-15 Computer-implemented systems and methods to enable complex functionality on a blockchain while preserving security-based restrictions on script size and opcode limits

Publications (2)

Publication Number Publication Date
KR20190094229A true KR20190094229A (ko) 2019-08-12
KR102525244B1 KR102525244B1 (ko) 2023-04-24

Family

ID=60990839

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020197019947A KR102504033B1 (ko) 2016-12-21 2017-12-15 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법
KR1020197020420A KR102525244B1 (ko) 2016-12-21 2017-12-15 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법
KR1020197020330A KR102481934B1 (ko) 2016-12-21 2017-12-15 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197019947A KR102504033B1 (ko) 2016-12-21 2017-12-15 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197020330A KR102481934B1 (ko) 2016-12-21 2017-12-15 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법

Country Status (9)

Country Link
US (5) US11669836B2 (ko)
EP (3) EP3387787B1 (ko)
JP (3) JP6983890B2 (ko)
KR (3) KR102504033B1 (ko)
CN (3) CN110063041B (ko)
HK (3) HK1254559B (ko)
TW (1) TWI753983B (ko)
WO (3) WO2018116105A1 (ko)
ZA (2) ZA201903969B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6983890B2 (ja) * 2016-12-21 2021-12-17 エヌチェーン ホールディングス リミテッドNchain Holdings Limited スクリプトサイズ及びオペコードリミットに対するセキュリティベース制限を維持しながらブロックチェーン上の複雑な機能を有効するためのコンピュータにより実現されるシステム及び方法
GB201701589D0 (en) 2017-01-31 2017-03-15 Nchain Holdings Ltd Computer-implemented system and method
US11989208B2 (en) * 2018-08-06 2024-05-21 Inveniam Capital Partners, Inc. Transactional sharding of blockchain transactions
CN109447636A (zh) * 2018-10-15 2019-03-08 联动优势科技有限公司 一种资产转移方法及装置
CN109903161B (zh) * 2019-02-28 2021-11-09 百度在线网络技术(北京)有限公司 基于区块链的对象处理方法、装置、设备及介质
GB201907345D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd Protocol for validating blockchain transactions
GB201907346D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd Using blockchain transactions to provide off-chain functionality
CN110337102A (zh) * 2019-06-28 2019-10-15 阿里巴巴集团控股有限公司 基于区块链的终端锁定方法及装置
KR102057570B1 (ko) * 2019-09-16 2020-01-23 (주) 모로보기 블록체인 네트워크
GB2588660A (en) * 2019-10-31 2021-05-05 Nchain Holdings Ltd Request and response protocol using blockchain transactions
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
CN112488712A (zh) * 2020-06-24 2021-03-12 杨刘琴 基于区块链大数据的安全识别方法及安全识别系统
CN112801665B (zh) * 2021-03-19 2021-08-24 北京万物智链科技有限公司 一种基于服务器中继的跨链交易方法及系统
GB202109064D0 (en) * 2021-06-24 2021-08-11 Nchain Licensing Ag Computer implemented method and system

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101430097B1 (ko) * 2006-09-15 2014-08-13 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
US20160085955A1 (en) * 2013-06-10 2016-03-24 Doosra, Inc. Secure Storing and Offline Transferring of Digitally Transferable Assets
US11250493B2 (en) 2014-03-31 2022-02-15 Monticello Enterprises LLC System and method for performing social media cryptocurrency transactions
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
CN103927397B (zh) * 2014-05-05 2017-02-22 湖北文理学院 一种基于区块树的Web页面链接块的识别方法
CA2985040A1 (en) 2014-05-06 2015-12-03 Case Wallet, Inc. Cryptocurrency virtual wallet system and method
EP4148642A1 (en) 2014-05-09 2023-03-15 Veritaseum, Inc. Devices, systems, and methods for facilitating low trust and zero trust value transfers
KR101660627B1 (ko) * 2015-02-03 2016-09-28 한양대학교 에리카산학협력단 암호화 화폐의 거래를 보호하는 방법 및 장치
CN105991731A (zh) 2015-02-13 2016-10-05 中兴通讯股份有限公司 一种获取信息的方法、智能终端和服务端
US20160260095A1 (en) 2015-03-02 2016-09-08 Dell Products, Lp Containerized Computational Task Execution Management Using a Secure Distributed Transaction Ledger
US10484168B2 (en) 2015-03-02 2019-11-19 Dell Products L.P. Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger
SI3073670T1 (sl) 2015-03-27 2021-07-30 Black Gold Coin, Inc. Sistem in postopek za osebno identifikacijo in verifikacijo
AU2016242888A1 (en) 2015-03-31 2017-11-16 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
SG11201708295XA (en) * 2015-04-06 2017-11-29 Bitmark Inc System and method for decentralized title recordation and authentication
US10963881B2 (en) * 2015-05-21 2021-03-30 Mastercard International Incorporated Method and system for fraud control of blockchain-based transactions
JP6636058B2 (ja) 2015-07-02 2020-01-29 ナスダック, インコーポレイテッドNasdaq, Inc. 分散トランザクションデータベースにおける出所保証のシステムおよび方法
CN105573828B (zh) * 2015-12-17 2019-04-12 布比(北京)网络技术有限公司 一种操作处理方法及装置
US9948467B2 (en) * 2015-12-21 2018-04-17 Mastercard International Incorporated Method and system for blockchain variant using digital signatures
WO2017145004A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
US20170287090A1 (en) 2016-03-31 2017-10-05 Clause, Inc. System and method for creating and executing data-driven legal contracts
US10333705B2 (en) * 2016-04-30 2019-06-25 Civic Technologies, Inc. Methods and apparatus for providing attestation of information using a centralized or distributed ledger
US10838846B1 (en) 2016-05-16 2020-11-17 Jpmorgan Chase Bank, N.A. Method and system for implementing an automation software testing and packaging framework
CN106096967A (zh) * 2016-06-20 2016-11-09 深圳市淘淘谷信息技术有限公司 一种用区块链来标示数字货币流通的方法
CN106130738A (zh) * 2016-08-25 2016-11-16 杭州天谷信息科技有限公司 一种支持国密算法的区块链系统
CN106503053B (zh) 2016-09-26 2019-07-16 江苏通付盾科技有限公司 Utxo查询方法及装置
JP6983890B2 (ja) * 2016-12-21 2021-12-17 エヌチェーン ホールディングス リミテッドNchain Holdings Limited スクリプトサイズ及びオペコードリミットに対するセキュリティベース制限を維持しながらブロックチェーン上の複雑な機能を有効するためのコンピュータにより実現されるシステム及び方法
CA3055829A1 (en) * 2017-03-08 2018-09-13 Ip Oversight Corporation System and method for creating commodity asset-secured tokens from reserves
US10891384B2 (en) * 2017-10-19 2021-01-12 Koninklijke Kpn N.V. Blockchain transaction device and method
WO2019116249A1 (en) * 2017-12-15 2019-06-20 nChain Holdings Limited Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords
JP6736033B2 (ja) 2018-06-12 2020-08-05 フレセッツ株式会社 暗号通貨のためのウォレット装置及びその装置を用いる署名方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Alexander Mulli. A Decentralized Bitcoin Exchange with Bitsquare-Attack Scenarios and Countermeasures. Diss. Master’s thesis, 2015. *
Andreas M Antonopoulos. Mastering Bitcoin: unlocking digital cryptocurrencies. " O'Reilly Media, Inc.", 2014. *
Ilias Giechaskiel 외 2명. "On Bitcoin Security in the Presence of Broken Cryptographic Primitives." European Symposium on Research in Computer Security. Springer, Cham, 2016. *

Also Published As

Publication number Publication date
TWI753983B (zh) 2022-02-01
JP7003133B2 (ja) 2022-01-20
ZA201903968B (en) 2021-01-27
HK1254558B (zh) 2020-03-20
JP2020503749A (ja) 2020-01-30
EP3387785A1 (en) 2018-10-17
WO2018116106A1 (en) 2018-06-28
JP7039594B2 (ja) 2022-03-22
JP2020514853A (ja) 2020-05-21
EP3387786B1 (en) 2019-02-20
WO2018116105A1 (en) 2018-06-28
WO2018116104A1 (en) 2018-06-28
US20200092105A1 (en) 2020-03-19
US11669836B2 (en) 2023-06-06
US20190354976A1 (en) 2019-11-21
US11238450B2 (en) 2022-02-01
CN110169013A (zh) 2019-08-23
CN110063041A (zh) 2019-07-26
JP6983890B2 (ja) 2021-12-17
EP3387787A1 (en) 2018-10-17
US20230410106A1 (en) 2023-12-21
ZA201903969B (en) 2021-01-27
CN110169013B (zh) 2023-04-18
HK1254559B (zh) 2020-03-20
CN110063041B (zh) 2022-08-05
JP2020514854A (ja) 2020-05-21
US11087322B2 (en) 2021-08-10
KR102525244B1 (ko) 2023-04-24
TW201830271A (zh) 2018-08-16
KR102481934B1 (ko) 2022-12-27
US20220398579A1 (en) 2022-12-15
HK1254560B (zh) 2020-03-27
CN110169012B (zh) 2023-04-18
KR102504033B1 (ko) 2023-02-28
KR20190094217A (ko) 2019-08-12
EP3387786A1 (en) 2018-10-17
US20190356467A1 (en) 2019-11-21
CN110169012A (zh) 2019-08-23
EP3387787B1 (en) 2019-03-20
EP3387785B1 (en) 2019-02-20
KR20190094224A (ko) 2019-08-12

Similar Documents

Publication Publication Date Title
KR102525244B1 (ko) 스크립트 크기 및 연산 부호 제한에 대한 보안 기반 제한을 유지하는 동안 블록체인에서 복잡한 기능을 활성화하는 컴퓨터 구현 시스템 및 방법
Seijas et al. Scripting smart contracts for distributed ledger technology
US11941381B2 (en) Method for compiling from a high-level scripting language to a blockchain native scripting language
CN111033542A (zh) 区块链中解锁交易的输入约束
Yan et al. Confidentiality support over financial grade consortium blockchain
Chakravarty et al. Functional blockchain contracts
Vanspauwen et al. Verifying protocol implementations by augmenting existing cryptographic libraries with specifications
Petz et al. Formally verified bundling and appraisal of evidence for layered attestations

Legal Events

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