KR20200080263A - 중재자 컴퓨터 시스템을 이용하여 컴퓨터 프로그램의 정확한 실행을 보장하기 위한 시스템 및 방법 - Google Patents

중재자 컴퓨터 시스템을 이용하여 컴퓨터 프로그램의 정확한 실행을 보장하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200080263A
KR20200080263A KR1020207014130A KR20207014130A KR20200080263A KR 20200080263 A KR20200080263 A KR 20200080263A KR 1020207014130 A KR1020207014130 A KR 1020207014130A KR 20207014130 A KR20207014130 A KR 20207014130A KR 20200080263 A KR20200080263 A KR 20200080263A
Authority
KR
South Korea
Prior art keywords
program
computer system
value
attestor
execution
Prior art date
Application number
KR1020207014130A
Other languages
English (en)
Inventor
알렉산드라 코바시
시몬 마데오
패트릭 모틸린스키
스테판 빈센트
Original Assignee
엔체인 홀딩스 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB1718505.9A external-priority patent/GB201718505D0/en
Priority claimed from GBGB1719998.5A external-priority patent/GB201719998D0/en
Priority claimed from GBGB1720768.9A external-priority patent/GB201720768D0/en
Priority claimed from GBGB1720946.1A external-priority patent/GB201720946D0/en
Priority claimed from GBGB1805948.5A external-priority patent/GB201805948D0/en
Priority claimed from GBGB1806444.4A external-priority patent/GB201806444D0/en
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20200080263A publication Critical patent/KR20200080263A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/755Deformable models or variational models, e.g. snakes or active contours
    • G06V10/7557Deformable models or variational models, e.g. snakes or active contours based on appearance, e.g. active appearance models [AAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • H04L9/3221Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

분산 시스템에 있어서, 제1 컴퓨터 시스템은 제2 컴퓨터 시스템에 의해 수행되는 계산(예컨대, 프로그램의 실행의 일부로서 수행됨)의 진본성 및 무결성의 보증을 요구할 수 있다. 본 명세서에서 설명되는 방법들은 프로그램의 정확한 실행을 시행 및/또는 보장하는 데 이용될 수 있다. 제1 컴퓨터 시스템은 프로그램의 실행을 제2 컴퓨터 시스템에 위임할 수 있고, 프로그램의 정확한 실행을 수행하도록 제2 컴퓨터 시스템을 제약하기 위한 프로토콜이 채용될 수 있다. 프로토콜은 프로그램의 부정확한 실행을 완화 및/또는 수정하는 완화 및 수정 루틴을 포함할 수 있다. 본 명세서에서 설명되는 다양한 시스템 및 방법에 있어서, 프로토콜은 비트코인-기반의 블록체인 네트워크와 같은 블록체인 네트워크를 이용할 수 있다.

Description

중재자 컴퓨터 시스템을 이용하여 컴퓨터 프로그램의 정확한 실행을 보장하기 위한 시스템 및 방법
본 발명은 일반적으로 분산 컴퓨팅 환경에서 컴퓨터 프로그램들의 정확한 실행을 보장하는 기술에 관한 것이며, 특히 제1 컴퓨팅 엔티티가 프로그램의 실행을 제2 컴퓨팅 엔티티에게 위임하는 프로그램의 정확한 실행을 보장하기 위한 프로토콜에 관한 것이다. 본 발명은 블록체인 네트워크에서의 사용에 특히 적합하지만, 이에 제한되는 것은 아니다.
본 명세서에서, '블록체인(blockchain)'이라는 용어는 몇 가지 타입의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledger) 중 어느 것을 의미할 수 있다. 이는 컨센서스-기반의 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함한다. 다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 용례는 비트코인(Bitcoin) 원장이다. 비트코인이 본 개시물에서 설명되는 기술의 유용한 용례로서 참조될 수 있지만, 편의 및 예시의 목적으로, 비트코인은 본 개시물에서 설명되는 기술을 적용할 수 있는 많은 용례들 중 하나일 뿐이다. 그러나, 본 발명은 비트코인 블록체인에 사용하는 것으로 제한되지 않으며; 비-상업적인 용례를 포함하는 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위 내에 있는 것이라는 점에 유의해야 한다.
블록체인은, 결국 트랜잭션들 및 그 밖의 정보로 구성될 수 있는 블록들로 구성되는 컴퓨터-기반의 탈-중앙집중형 분산 시스템으로 구현된 피어-투-피어(peer-to-peer) 전자 원장이다. 일부 실시예에 있어서, "블록체인 트랜잭션(blockchain transaction)"은 데이터 및 조건 세트를 포함하는 구조화된 필드 값들의 집합을 인코딩하는 입력 메시지를 의미하며, 조건 세트의 충족은 블록체인 데이터 구조에 작성될 필드 세트에 대한 전제 조건이다. 예를 들어, 비트코인에 의하면, 각각의 트랜잭션은 블록체인 시스템 참여자들 사이의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 일부 실시형태에 있어서, "디지털 자산(digital asset)"은 사용할 권리와 연관된 이진 데이터를 의미한다. 디지털 자산은 비트코인, 이더(ether), 및 라이트코인(Litecoin)을 예로서 포함한다. 일부 구현예에 있어서, 디지털 자산의 제어를 전송하는 것은 디지털 자산의 적어도 일부를 제1 엔티티로부터 제2 엔티티로 재연관시키는 것에 의해 수행될 수 있다. 블록체인의 각각의 블록이 이전 블록의 해시를 포함하므로, 블록들이 함께 연쇄되어 그 개시 이래로 블록체인에 작성된 모든 트랜잭션의 영구적인 불변의 레코드를 생성한다. 트랜잭션은 그 입력 및 출력에 내재된 스크립트라고 하는 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 비트코인 플랫폼의 경우, 이러한 스크립트는 스택-기반 스크립팅 언어를 사용해서 작성된다.
블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션이 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴 노드)는, 각각의 트랜잭션이 유효함을 보장하고, 무효한 트랜잭션이 네트워크로부터 거부되게 하는 작업을 수행한다. 한 노드는 다른 노드들과는 다른 유효성에 대한 표준을 가질 수 있다. 블록체인에서의 유효성이 컨센서스 기반으로 되기 때문에, 트랜잭션은 대부분의 노드가 트랜잭션이 유효하다고 동의할 경우에 유효한 것으로 간주된다. 노드에 인스톨된 소프트웨어 클라이언트는 아직 소비되지 않은 트랜잭션 출력(UTXO)의 잠금 및 잠금 해제 스크립트를 실행함으로써 UTXO를 부분적으로 참조하는 트랜잭션에 대한 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가하고, 적용 가능할 경우, 다른 유효성 검증 조건들이 충족되면, 트랜잭션은 노드에 의해 유효성 검증된다. 유효성 검증된 트랜잭션은 다른 네트워크 노드들에 전파되고, 그 결과 채굴 노드는 블록체인에 트랜잭션을 포함시키도록 선택할 수 있다. 따라서, 블록체인에 트랜잭션이 작성되게 하기 위해서는, i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 ― 트랜잭션이 유효성 검증되면, 해당 노드가 네트워크 내의 다른 노드들에 트랜잭션을 중계하고; ii) 채굴 노드에 의해 구축되는 신규 블록에 추가되어야 하고; iii) 채굴, 즉 과거 트랜잭션들의 공공 원장에 추가되어야 한다.
암호화폐 구현용으로 블록체인 기술이 가장 널리 알려져 있지만, 디지털 사업가는 비트코인이 기초로 하는 암호학적 보안 시스템 및 신규 시스템을 구현하기 위해 블록체인에 저장될 수 있는 데이터를 모두 이용하는 것을 모색하기 시작했다. 블록체인이 암호화폐의 영역에 한정되지 않는 자동화된 태스크 및 프로세스에 사용될 수 있다면 매우 유리할 것이다. 이러한 해법은 블록체인의 이점(예컨대, 영구적인 변조 방지 이벤트 레코드, 분산 처리 등)을 활용할 수 있으면서 그 용례에 있어서 더욱 다용도이다.
본 개시물은 하나 이상의 블록체인 기반의 컴퓨터 프로그램의 기술적인 양태를 설명한다. 블록체인 기반의 컴퓨터 프로그램은 블록체인 트랜잭션에 기록되는 기계 판독 가능 및 실행 가능 프로그램일 수 있다. 블록체인 기반의 컴퓨터 프로그램은 결과를 생성하기 위해 입력을 처리할 수 있으며, 후속하여 해당 결과에 따라 동작이 수행되게 할 수 있는 규칙을 포함할 수 있다. 현재 연구의 한 영역은 "스마트 계약(smart contracts)"을 구현하기 위해 블록체인 기반의 컴퓨터 프로그램을 사용하는 것이다. 자연 언어로 작성되는 종래의 계약과 달리, 스마트 계약은 기계-판독 가능 계약서 또는 합의서의 조건의 실행을 자동화하도록 설계되는 컴퓨터 프로그램일 수 있다.
블록체인-관련 관심사의 다른 영역은 블록체인을 통해 현실-세계 엔티티를 나타내고 전송하기 위한 '토큰(tokens)'(또는 '컬러드 코인(coloured coins)')을 사용하는 것이다. 잠재적으로 민감한 또는 은밀한 아이템은 식별 가능한 의미 또는 값을 갖지 않는 토큰으로 나타내질 수 있다. 따라서, 토큰은 현실-세계 아이템이 블록체인에 대하여 참조될 수 있게 하는 식별자로서의 역할을 한다.
따라서, 하나 이상의 이들 양태에서 블록체인 기술을 향상시키는 방법 및 시스템을 제공하는 것이 바람직하다. 그래서, 이러한 향상된 해법이 고안되었다. 따라서, 본 발명에 따르면, 첨부된 청구항들에서 정의되는 바와 같은 방법이 제공된다.
본 발명에 따르면, 블록체인 네트워크의 노드에 대한 컴퓨터-구현 방법이 제공될 수 있으며, 컴퓨터-구현 방법은, 중재자 컴퓨터 시스템과 연관되는 공개 키 하에서 비밀 값을 암호화하는 단계; 암호화된 비밀 값을 작업자 컴퓨터 시스템에 제공― 암호화된 비밀 값은 제1 프로그램을 총괄적으로 실행하도록 작업자 컴퓨터 시스템 및 중재자 컴퓨터 시스템에 의해 사용 가능함 ―하는 단계; 제2 프로그램이 블록체인 데이터 구조에 대하여 이용 가능― 제2 프로그램의 실행은 입력을 가짐 ―해지게 하는 단계; 블록체인 데이터 구조가 제2 프로그램의 정확한 실행의 증명; 및 입력 값을 반영한다고 결정― 증명을 생성하기 위한 제2 프로그램의 실행은 입력 값을 제2 프로그램에 대한 입력으로서 사용하는 것에 적어도 부분적으로 기초함 ―하는 단계; 및 입력 값이 유효하다는 결정에 응답하여, 비밀 값을 작업자 컴퓨터 시스템에 제공― 작업자 컴퓨터 시스템은 적어도 비밀 값을 사용해서 제1 프로그램을 실행할 수 있음 ―하는 단계를 포함한다.
바람직하게는, 방법은, 비밀 값에 적어도 부분적으로 기초하여 암호학적 해시 출력을 생성하는 단계; 암호화된 값 및 암호학적 해시 출력이 모두 비밀 값에 적어도 부분적으로 기초하여 결정된다는 입증(attestation)을 생성하는 단계; 암호학적 해시 출력 및 입증을 작업자 컴퓨터 시스템에 제공― 작업자 컴퓨터 시스템은 입증을 사용하여 암호화된 비밀 값 및 암호학적 해시 출력이 동일한 값에 적어도 부분적으로 기초하는지의 여부를 결정하도록 동작 가능함 ―하는 단계를 포함할 수 있다.
입증은 영-지식 증명(zero-knowledge proof)일 수 있으며 영-지식 증명의 정확성(correctness)은 작업자 컴퓨터 시스템에 의해 계산적으로 검증 가능할 수 있다. 계산 검증은 암호학적 연산의 사용을 수반하여 무결성(integrity) 및/또는 진본성(authenticity)의 보증을 제공할 수 있다.
바람직하게는, 입력 값은 제1 입력 값일 수 있고, 방법은, 제1 입력 값이 부정확하다고 결정하는 것에 응답하여, 제1 입력 값에 적어도 부분적으로 기초하여 제2 입력 값을 계산하는 단계; 제2 입력 값을 작업자 컴퓨터 시스템에 제공하는 단계; 및 작업자 컴퓨터 시스템이 제2 입력 값을 사용하여 제3 프로그램을 실행했다고 결정하는 것에 응답하여, 비밀 값을 작업자 컴퓨터 시스템에 제공하는 단계를 포함할 수 있다.
바람직하게는, 제2 입력 값을 계산하는 단계는 가중된 해밍 거리(weighted Hamming distance)를 계산하는 단계를 포함할 수 있다.
바람직하게는, 방법은, 제2 입증을 취득― 제2 입증은 작업자 컴퓨터 시스템과 데이터 소스 사이의 통신 세트를 포함하고, 통신 세트는 입력 값이 유효한지의 여부를 결정하는 데 사용 가능하며, 제2 입증은 데이터 소스에 의해 디지털 서명됨 ―하는 단계; 적어도 데이터 소스와 연관되는 공개 키를 사용하여 제2 입증의 진본성을 검증하는 단계; 및 통신 세트에 적어도 부분적으로 기초하여 입력이 유효한지의 여부를 결정하는 단계를 포함할 수 있다.
경우에 따라, 제2 프로그램이 블록체인 데이터 구조에 대하여 이용 가능해지게 하는 단계는 블록체인 트랜잭션이 블록체인 데이터 구조에 대하여 채굴― 블록체인 트랜잭션은 제2 프로그램을 결정하는 데 사용 가능한 정보 및 잠금 스크립트를 포함함 ―되게 하는 단계를 포함한다. 잠금 스크립트는 디지털 자산을 저당잡을 수 있으며, 잠금 스크립트 및 상응하는 잠금 해제 스크립트를 총괄적으로 실행하는 것은 디지털 자산에 대한 저당잡기를 해제하고, 잠금 스크립트 및 상응하는 잠금 해제 스크립트를 총괄적으로 실행하는 것은 적어도 2개의 디지털 서명이 디지털 서명 세트로 이루어지는지를 검증하는 것을 포함한다. 디지털 서명 세트는, 본 명세서에서 설명되는 컴퓨터-구현 방법을 수행하는 컴퓨팅 엔티티와 연관되는 제1 디지털 서명; 작업자 컴퓨터 시스템과 연관되는 제2 디지털 서명; 및 중재자 컴퓨터 시스템과 연관되는 제3 디지털 서명으로 구성될 수 있다. 적어도 디지털 서명 세트의 대부분의 서명의 검증은 저당잡기를 해제하기 위해 잠금 스크립트 및 잠금 해제 스크립트를 총괄적으로 실행하는 것의 일부로서 수행될 수 있다.
제1 프로그램의 실행은 디지털 자산의 제어를 작업자 컴퓨터 시스템에 전송할 수 있다.
바람직하게는, 방법은, 작업자 컴퓨터 시스템이 시간 임계치 내에서 제2 입력 값을 사용하여 제3 프로그램을 실행하는 데 실패했다고 결정하는 것에 응답하여, 제4 프로그램이 블록체인 데이터 구조에 대하여 이용 가능― 제4 프로그램은 디지털 자산의 제어를 얻는 데 사용 가능함 ―해지게 하는 단계를 더 포함할 수 있다.
시간 임계치는 제4 프로그램의 일부분을 포함하는 블록체인 트랜잭션이 블록체인 데이터 구조에 대하여 채굴될 수 있는 가장 빠른 시간을 인코딩할 수 있다.
바람직하게는, 방법은 디지털 서명을 생성하는 단계 및 디지털 서명을 잠금 해제 스크립트에 대하여 인코딩하는 단계를 포함할 수 있다. 잠금 해제 스크립트는 작업자 컴퓨터 시스템과 연관되는 의도된 디지털 서명을 더 인코딩할 수 있으며, 제4 애플리케이션은 잠금 스크립트 및 잠금 해제 스크립트를 포함하고 블록체인 데이터 구조와 연관되는 블록체인 네트워크의 하나 이상의 노드에 의한 제4 프로그램의 실행은 디지털 서명 및 의도된 디지털 서명이 모두 유효하다고 결정하는 것을 포함한다.
제1 애플리케이션은 잠금 스크립트 및 잠금 해제 스크립트를 포함할 수 있고, 잠금 해제 스크립트는 작업자 컴퓨터 시스템과 연관되는 의도된 비밀 값 및 의도된 디지털 서명을 인코딩한다. 블록체인 데이터 구조와 연관되는 블록체인 네트워크의 하나 이상의 노드에 의한 제1 애플리케이션의 실행은 의도된 비밀 값 및 의도된 디지털 서명이 모두 유효하다고 결정하는 것을 포함할 수 있다.
잠금 스크립트는 암호학적 해시 출력을 포함할 수 있다. 의도된 비밀이 유효하다고 결정하는 것은 의도된 비밀 값을 사용하여 암호학적 해시 알고리즘의 출력을 계산하는 것 및 출력 및 암호학적 해시 출력이 일치한다고 결정하는 것을 포함할 수 있다.
또한, 프로세서; 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공하는 것이 바람직하다.
또한, 컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 청구된 바와 같은 방법들 중 어느 하나를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터-판독 가능 저장 매체를 제공하는 것이 바람직하다.
부가적으로 또는 대안으로서, 본 발명은 향상된 블록체인 프로그래밍 툴 또는 보조 수단을 제공할 수 있다. 분산된 검증 가능한 계산을 용이하게 또는 가능하게 하는 향상된, 효율적인, 최적화된 구성을 제공할 수 있다.
본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도1은 적어도 하나의 실시형태에 따른 프로그램의 정확한 실행을 검증하기 위한 환경을 예시하고;
도 2는 다양한 실시형태에 따른 프로토콜을 구현하는 데 이용될 수 있는 컴퓨팅 환경을 예시하고;
도 3은 검증 가능한 계산의 수행에 적합한 환경의 다이어그램을 예시하고;
도 4는 분산 컴퓨팅 환경에서 프로그램의 정확한 실행을 시행하기 위한 프로토콜이 구현될 수 있는 환경의 다이어그램을 예시하고;
도 5는 분산 컴퓨팅 환경에서 프로그램의 정확한 실행을 강제하기 위한 블록체인 기반의 프로토콜에 따른 트랜잭션 레코드의 실시예를 예시하고;-
도 6은 프로토콜에 따른, 프로그램의 실행을 요청하는 프로세스의 예시적인 다이어그램이고;
도 7은 프로토콜에 따른, 프로그램의 정확한 실행을 검증하는 프로세스의 예시적인 다이어그램이고;
도 8은 프로토콜에 따른, 프로그램의 실행 요청을 이행하기 위한 프로세스의 예시적인 다이어그램이고;
도 9는 프로토콜에 따른, 수정 루틴을 수행하기 위한 프로세스의 예시적인 다이어그램이고;
도 10은 프로토콜에 따른, 분쟁을 중재하기 위한 프로세스의 예시적인 다이어그램이고;
도 11은 본 개시물의 적어도 하나의 실시형태를 실시하는 데 사용될 수 있는 컴퓨팅 장치를 예시한다.
다양한 실시형태들에 있어서, 본 명세서에서 설명되는 시스템 및 방법은 다수의 엔티티가 분산 컴퓨팅 환형의 제어 노드들을 제어할 수 있는 분산 컴퓨팅 환경에서 컴퓨터 프로그램의 정확한 실행을 보장하는 데 이용된다. 이러한 분산 환경에 있어서는, 컴퓨팅 엔티티가 태스크의 실행을 다른 엔티티에게 위임하는 것이 어려울 수 있는데, 적어도 그 이유는, 실행 엔티티가 태스크를 실제로 수행했고 태스크를 정확하게 수행했다는 보증을 위임 엔티티가 제공받는 신뢰 관계가 두 엔티티에게 없기 때문이다. 본 개시물에 따른 프로토콜은 제1 컴퓨팅 엔티티가 프로그램의 실행을 제2 컴퓨팅 엔티티에게 위임하는 프로그램의 암호로 검증 가능한 정확한 실행 보증을 제공하는 데 이용될 수 있다. 따라서, 이러한 프로토콜의 사용은, 프로그램을 실행하기 위해 전체 시스템에 걸쳐 가용 컴퓨팅 리소스를 보다 효율적으로 이용하면서도 해당 프로그램이 정확하게 실행되었다는 암호로 검증 가능한 보증을 제공함으로써 컴퓨팅 시스템(예컨대, 분산 컴퓨팅 환경)의 효율을 향상시키는 데 이용될 수 있다.
도 1은 본 명세서에서 설명되는 시스템 및 방법이 프로그램의 정확한 실행을 시행 및/또는 보장하는 데 이용될 수 있는 환경을 예시한다. 일부 실시형태에 있어서, 제1 컴퓨터 시스템(예컨대, 클라이언트(102))은 프로그램(108)의 실행을 제2 컴퓨터 시스템(예컨대, 증명자(prover)(104))에게 위임한다. 증명자(104)는 프로그램을 실행하고, 해당 프로그램을 증명자(104)가 정확하게 실행했음을 입증하는 정확한 실행의 증명(110)을 클라이언트(102)에게 제공할 수 있다. 경우에 따라, 증명자가 프로토콜에 따라 프로그램(108)을 정확하게 실행했는지의 여부를 결정하기 위해 제3 컴퓨터 시스템(예컨대, 중재자(mediator)(106))이 이용될 수 있다. 본 명세서에서 설명되는 기술은 분산 컴퓨팅 환경에서 실시될 수 있으며, 블록체인 네트워크와 관련되어 이용될 수 있다.
클라이언트(102)는 다른 컴퓨터 시스템일 수 있는 증명자(104)에게 계산 태스크의 수행을 위임하는 컴퓨터 시스템을 의미할 수 있다. 증명자(104)는, 일반적으로, 프로그램(108)과 같이, 임의의 적절한 포맷으로 인코딩될 수 있는 계산 태스크를 수행할 수 있는 임의의 적절한 컴퓨터 시스템일 수 있다. 클라이언트(102)는 프로그램을 실행할 수 있는 복수의 컴퓨터 시스템 중에서 증명자(104)를 선택할 수 있다. 증명자(104)는 클라이언트(102)가 통제하지 못하는, 일반적으로 클라이언트(102)와 신뢰 관계를 가질 필요가 없는 컴퓨터 시스템일 수 있으며, 클라이언트(102)는, 본 명세서에서 설명되는 프로토콜 이외에, 증명자(104)가 특정 방식으로 동작을 수행(클라이언트(102)에 의해 지정되는 입력 세트에 따라 프로그램을 실행)할 것이라는 임의의 추가적인 보증을 필요로 하지 않는다.
프로그램(108)은 계산 태스크를 의미할 수 있으며 도 2와 관련하여 설명되는 기술을 사용하여 생성될 수 있다. 프로그램(108)은, 예를 들어, 도 2와 관련하여 설명되는 것들과 같은 이차 프로그램 Q일 수 있다. 일반적으로, 프로그램(108)은 명령어 세트와 관련하여 하나 이상의 출력을 결정하는 데 사용되는 하나 이상의 입력을 가질 수 있다. 입력(들) 및/또는 출력(들)은 증명자(104)에 의해 생성되는 입증인 정확한 실행의 증명(110)을 생성하는 데 이용될 수 있으며, 이 입증은 입력(들) 및/또는 출력(들)이 정확한 값을 갖는다는 계산적으로 검증 가능한 입증이다. 실시형태에 있어서, 입증은 영-지식 증명이다.
중재자(106)는 클라이언트(102) 및/또는 증명자(104)와 신뢰 관계를 갖거나 및/또는 확립한 컴퓨터 시스템일 수 있다. 이와 관련하여, 신뢰 관계는 클라이언트(102)와 증명자(104) 사이에서 발생할 수 있는 분쟁을 중재하기에 적합한 컴포넌트로서 중재자가 클라이언트(102) 및/또는 증명자(104)에 의해 결정된다는 것을 의미할 수 있다. 예를 들어, 신뢰 관계는 클라이언트 또는 증명자 중 어느 하나와 협업하여 하나 이상의 수정 프로그램을 실행하는 능력을 중재자에게 부여할 의사를 나타낼 수 있다.
일부 실시형태에 있어서, 프로토콜은 블록체인 트랜잭션을 통한 프로그램의 실행 및 유효성 검증을 가능하게 한다. 본 명세서에서 더 상세하게 설명되는 바와 같이, 영-지식 프로토콜은, 제한되는 것은 아니지만, 생성 단계, 계산 단계, 및 검증 단계를 포함하는 일련의 단계를 가질 수 있다. 생성 단계에 있어서는, 영-지식 증명의 작성 및 검증에 사용 가능한 공개 파라미터의 계산이 수행된다. 실행 단계에 있어서는, 프로그램이 하나 이상의 입력에 기초하여 실행될 수 있고, 하나 이상의 입력은 신뢰할 수 있는 기관, 웹사이트 등과 같은 블록체인 외부의 소스로부터 취득된 데이터를 포함할 수 있다. 증명자는 데이터를 프로그램의 실행의 일부로서 외부 데이터 소스로부터 취득할 수 있다. 검증 단계에 있어서는, 입력이 영-지식 증명 검증에 따라 실행되는 검증 함수의 하나 이상의 파라미터를 나타낼 수 있다. 경우에 따라, 프로그램을 실행하는 데 사용되는 입력이 정확하다는 것을 보장하는 프로토콜을 갖는 것이 바람직하며 ― 다시 말해, 프로그램의 실행시에 증명자가 정확하게 거동하고 정확한 입력을 제공하도록 제약하는 것이 바람직할 수 있다.
도 2는 다양한 실시형태에 따른 프로토콜을 구현하는 데 이용될 수 있는 컴퓨팅 환경(200)을 예시한다. 프로토콜은 정확성 증명(proof-of-correctness)을 저장하고 "CBC(correct-by-construction)" 암호화 해법을 스마트 계약과 결합하는 블록체인 기술을 이용해서 구현될 수 있다. 실시형태에 있어서, 공개 검증 가능한 계산 스킴은 3가지 단계, 즉 설정 단계, 계산 단계 및 검증 단계를 포함한다.
설정 단계는 계산 태스크의 수행을 외부에 위탁하는 프로세스의 일부로서 수행될 수 있다. 아래에서 언급되는 바와 같이, 클라이언트는 계산 태스크의 수행을 다른 컴퓨터 시스템일 수 있는 증명자에게 위임하는 고객 또는 클라이언트 컴퓨터 시스템과 같은 엔티티를 의미할 수 있다. 클라이언트는, 일반적으로, 제한되는 것은 아니지만, 한정된 컴퓨팅 리소스, 컴퓨팅 리소스의 부족, 클라이언트 컴퓨터 시스템을 이용하여 태스크를 수행하는 것과 연관된 재정 비용, 클라이언트 컴퓨터 시스템을 이용하여 태스크를 수행하는 것과 연관된 에너지 비용(예컨대, 전원용 배터리에 의존하는 모바일 장치 또는 랩톱은 증명자를 이용해서 계산 집약적인 태스크를 수행할 수 있고, 이로써 전력이 절약되고 배터리-급전식 장치의 사용이 연장됨) 등을 포함하여 다양한 이유로 계산 태스크의 수행을 위임할 수 있다.
실시형태에 있어서, 설정 단계는 클라이언트, 고객, 조직의 직원, 또는 정확한 의미의 형식 언어로 계약을 작성하는 임의의 다른 적절한 엔티티를 수반한다. 계약은 C 또는 자바(Java)와 같은 고급 프로그래밍 언어로 작성될 수 있다. 일반적으로, 계약은 컴퓨터 시스템에 의해 조작될 수 있는 포맷인 또는 그러한 포맷으로 변환될 수 있는 임의의 언어 또는 신택스로 표현될 수 있다. 실시형태에 있어서, 제한된 목적을 갖는 도메인 특정 언어는 타입 안전성(type-safety)을 제공할 수 있고, 제한된 표현능력이 이용될 수 있다. 생성된 소스 코드는 계약의 정확한 설명일 수 있다.
컴파일러(202)는, 컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행시에, 해당 시스템으로 하여금 소스 코드(206)를 입력으로서 취하여 회로를 생성하게 하는 실행 가능 코드를 포함하는 임의의 하드웨어, 소프트웨어, 또는 이들의 조합일 수 있다. 컴파일러(202)는 이진 코드와 같은 기계-판독 가능 포맷으로 컴파일된 명령어에 기초하여 명령어를 실행 또는 수행하는 컴퓨터 프로그램을 의미할 수 있다. 소스 코드를 회로로 변환하기 위해 컴파일러(202)가 예시되지만, 인터프리터, 어셈블러, 및 다른 적절한 소프트웨어 및/또는 하드웨어 컴포넌트가 이용될 수 있다는 점에 유의해야 한다. 실시형태에 있어서, 회로는 필드(F)로부터 값들을 운반하고 논리 및/또는 산술 연산 게이트에 연결하는 와이어를 포함하는 산술 연산 회로이다. 실시형태에 있어서, 회로 C는 시스템에 의해, 원래의 회로 C의 완전한 설명을 제공하는 다항식 세트를 포함하는 이차 프로그램 Q(208)를 생성하는 데 사용된다.
실시형태에 있어서, 컴파일러(202)는, 제한되는 것은 아니지만, 전-처리 장치 지시문, 정적 이니셜라이저, 글로벌 및 로컬 기능, 블록-범위 변수, 어레이, 데이터 구조, 포인터, 함수 호출, 함수 연산자(예컨대, 함수 기호), 조건문 및 루프문, 및 산술 연산 및 비트단위 불린(Boolean) 연산자를 포함하는, C 또는 자바와 같은 프로그래밍 언어의 상당한 서브세트를 인식할 수 있다. 실시형태에 있어서, 컴파일러(202)는 프로그래밍 언어의 표준에 따라 커맨드 세트 전체를 지원하지 않는다(이는, 경우에 따라, 스마트 계약에서 특정 타입의 알고리즘이 실행되는 것을 방지하려는 것, 예를 들면, 재귀적 알고리즘을 금지하려는 것일 수 있음). 실시형태에 있어서, 컴파일러는 소스 코드의 표현을 산술 연산 게이트 언어로 확장하여 산술 연산 회로를 생성한다. 회로 구현예는 과거에는 Campanelli, M. 등에 의해 "Zero-Knowledge Contingent Payments Revisited: Attacks and Payments for Services"(2017)에서, 그리고 Tillich, S. 및 Smart, B에 의해 "Circuits of Basic Functions Suitable For MPC and FHE"에서 고려되었다. 산술 연산 회로는 컴파일러(202) 또는 임의의 다른 적절한 하드웨어, 소프트웨어, 또는 이들의 조합(예컨대, 도 2에 예시되지 않은 소프트웨어 모듈)에 의해 이차 산술 연산 프로그램(Quadratic Arithmetic Program)(QAP)을 구축하는 데 이용될 수 있다. 이차 프로그램은 실시형태에 따른 클라이언트에 대한 일련의 암호학적 루틴(예컨대, 키 생성 및 검증) 및 증명자에 대한 일련의 암호학적 루틴(예컨대, 계산 및 증명 생성)에 컴파일된다.
실시형태에 있어서, 키 생성기(204)는, 컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행시에, 시스템으로 하여금 이차 프로그램을 형성하는 평가 키 및 검증 키를 생성하게 하는 실행 가능 코드를 포함하는 하드웨어, 소프트웨어, 또는 이들의 조합이다. 이차 프로그램으로서 계산을 인코딩하는 기술은 Gennaro, R. 등에 의한 "Quadratic Span Programs and Succinct NIZKs without PCPs"(2013)에서 고려된다. 실시형태에 있어서, 이차 산술 연산 프로그램(QAP) Q는 필드 F에 걸쳐 회로 C를 인코딩하고 m+1개의 다항식 세트를 포함한다:
V = {vk(x)}, W = {wk(x)}, Y = {yk(x)}
0 ≤ k ≤ m임. 목표 다항식 t(x)도 정의된다. F의 n개의 요소를 취하여 n'개의 요소를 출력하는 함수 f를 고려― N = n + n'임 ―하면, {c1, ..., cN} ∈ FN이 f의 입력 및 출력 그룹의 유효한 할당일 경우, 그리고 t(x)가 다음과 같은 p(x)를 나누도록 계수 리스트 {cN+1, ..., cm}가 존재할 경우, Q가 f를 계산한다:
Figure pct00001
따라서, 실시형태에 있어서, h(x)·t(x) = p(x)이도록 일부 다항식 h(x)가 존재해야 한다. Q의 사이즈는 m이고, 그 차수는 t(x)의 차수이다.
실시형태에 있어서, 산술 연산 회로에 대한 QAP의 구축은 회로 내의 각각의 곱셈 게이트 g에 대하여 임의의 루트 rg ∈ F를 선택하고 목표 다항식을 t(x) = Πg(x ― rg)로 정의하는 것을 포함한다. 실시형태에 있어서, 인덱스 k ∈ {1 ... m}은 회로의 각각의 입력 및 곱셈 게이트로부터의 각각의 출력과 연관된다. V에서의 다항식은 좌측 입력을 각각의 게이트에 인코딩하고, W는 우측 입력을 각각의 게이트에 인코딩하고, Y는 출력들을 인코딩한다. 예를 들면, k-번째 와이어가 게이트 g에 대한 좌측 입력일 경우 vk(rg) = 1이고, 그렇지 않으면 vk(rg) = 0이다. 따라서, 특정 게이트 g 및 그 루트 rg에 대하여, 이전의 식이 다음과 같이 단순화될 수 있다:
Figure pct00002
게이트의 출력 값은 그 입력들의 곱과 같다. 가분성 검사는 p(rg) = 0이 되도록 t(x)의 각각의 게이트 g 및 루트 rg에 대한 deg(t(x)) 개별 검사들로 분해된다. 덧셈 게이트 및 정수에 의한 곱셈 게이트는 QAP의 사이즈 또는 차수에는 영향을 미치지 않는다.
실시형태에 있어서, QAP는 필드 Fp에 걸쳐 정의되고, 여기서 p는 큰 소수이다. 실시형태에 있어서, Fp에 걸친 QAP는 덧셈 및 곱셈 모듈로(modulo; 나머지 연산) p에 관하여 표현될 수 있는 임의의 함수를 효율적으로 계산하는 것이 바람직하다. 산술 연산 분할 게이트는 [0, 2k-1]에 있다고 알려진 산술 연산 와이어 a ∈ Fp를 k개의 이진 출력 와이어로 변환하도록 설계될 수 있다. 따라서, 불린 함수가 산술 연산 게이트를 사용하여 표현될 수 있다는 것이 된다. 예를 들면, NAND(a,b) = 1 ― ab이다. 각각의 내재된 불린 게이트는 한 번의 곱셈만 한다. 또한, 분할 게이트와 같은 새로운 게이트들은 독립형으로 정의되고 다른 게이트들과 조합될 수 있다. [0, 2k-1]에 있다고 알려진 입력 a ∈ Fp를 고려하면, 분할 게이트는 Σk2i-1ai = a와 같이 a의 이진 숫자 a1, ..., ak를 유지하는 k개의 와이어를 출력하고 각각의 ai가 0 또는 1이다.
마지막으로, 모든 증명자 및 검증자에 의해 사용될 공개 파라미터들은 설정 단계의 일부로서 시스템에 의해 생성된다. 평가 키 EK 및 검증 키 VK는 클라이언트에 의해 선택되는 비밀 값을 사용하여 도출된다는 점에 유의해야 한다. 키 생성기(204)는 키 생성 알고리즘과 관련하여 이차 산술 연산 프로그램(QAP)을 이용하여 평가 키 EK(210) 및 검증 키 VK(212)를 생성할 수 있다.
실시형태에 있어서, 계산 태스크를 수행하는 것은 증명자에 의한 입력(216)에 대한 함수의 계산(즉, f(x)를 평가하기 위한 프로세스)을 수반한다. 실시형태에 있어서, 증명자는 클라이언트가 계산 태스크를 위임할 수 있는 임의의 적절한 컴퓨터 시스템이다. 실시형태에 있어서, 입력(216)은 증명자와 연관되는 개인 키를 사용하여 생성되는 디지털 서명과 같은 증명자의 아이덴티티를 입증하는 정보를 포함한다. 실시형태에 있어서, 증명자는 계산 태스크를 성공적으로 완료한 대가로 디지털 자산을 전송하는 것에 클라이언트가 동의한 컴퓨터 시스템이다. 실시형태에 있어서, 클라이언트는 입력 x 및 평가 키 EK를 증명자에게 제공하고, 증명자는 계산 루틴에 대한 평가 모듈(214)을 사용하여 출력 y를 계산하고(즉, y = f(x)이고, 여기서 입력은 x이고 함수는 f임), 평가 키 EK(210)를 사용하여 정확성 증명(218)을 생성한다. 실시형태에 있어서, 평가 모듈은, 컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행시에, 컴퓨터 시스템으로 하여금 QAP(208)의 내부 회로 와이어들의 값들을 평가하고 QAP의 출력 y를 생성하게 하는 명령어를 포함하는 하드웨어 및/또는 소프트웨어이다.
실시형태에 있어서, 이차 프로그램의 각각의 다항식 vk(x) ∈ F는 이중선형(bilinear) 그룹의 요소 gvk(s)에 맵핑되고, 여기서 s는 클라이언트에 의해 선택되는 비밀 값이고, g는 그룹의 생성기이고, F는 g의 이산 대수의 필드이다. 실시형태에 있어서, 주어진 입력에 대하여, 증명자는 회로를 평가하여 이차 프로그램의 계수 ci에 대응하는 내부 회로 와이어들의 값들 및 출력을 취득한다. 따라서, 증명자는 v(s) = Σk∈{m} ck·vk(s)를 평가하여 gv(s)를 구하고; w(s) 및 y(s)를 계산하고; h(x) = p(x)/t(x) = Σd hi·xi를 계산하고; 평가 키에서의 hi 항 및 gs(i) 항을 사용하여 gh(s)를 계산할 수 있다. 실시형태에 있어서, 정확성 증명(218)은 (gv(s), gw(s), gy(s), gh(s))를 포함하고 검증자는 이중선형 맵을 사용하여 p(s) = h(s)·t(s)임을 검사한다. 실시형태에 있어서, 증명(proof) π는 나중에 사용하기 위해 블록체인 네트워크(222)에 저장되거나, 또는 증명자가 다수의 당사자들 각각과 개별적으로 상호작용하도록 요구할 필요 없이 다수의 당사자들에 의해 검증될 수 있다. 실시형태에 있어서, 정확성 증명의 회로 저장의 평가는 트랜잭션의 잠금 스크립트에 의해 저당잡힌 리소스(예컨대, 디지털 자산)를 잠금 해제하기 위해 수행될 수 있다.
실시형태에 있어서, 도 2에 예시된 예시적인 블록체인 네트워크(222)는 피어-투-피어 분산 전자 장치들로서 구현된 블록체인 노드들을 포함하고, 이들 노드는 각각 적어도 부분적으로 노드들의 연산자들간에 합의된 블록체인 프로토콜을 따르는 동작을 수행하는 소프트웨어 및/또는 하드웨어의 인스턴스를 실행한다. 일부 실시예에 있어서, "노드"는 블록체인 네트워크 사이에 분산된 피어-투-피어 전자 장치를 의미한다. 블록체인 프로토콜의 실시예는 비트코인 프로토콜이다.
실시형태에 있어서, 노드들 중 적어도 일부는 암호학적 문제의 해결과 같은 복잡한 계산을 수행하는 채굴 노드이다. 암호학적 문제를 해결한 채굴 노드는 블록체인을 위한 새로운 블록을 생성하고 새로운 블록을 다른 노드들에 브로드캐스트한다. 다른 노드들은 채굴 노드의 작업을 검증하고, 검증시에, 블록을 블록체인에 수용한다(예컨대, 블록을 블록체인의 분산 원장에 추가하는 것에 의함). 일부 실시예에 있어서, 블록은 이전 블록의 타입스탬프(timestamp) 및 "핑거프린트(fingerprint)"(예컨대, 해시)로 표시되곤 하는 트랜잭션들의 그룹이다. 이러한 방식으로, 각각의 블록이 이전 블록과 연결될 수 있고, 그에 따라 블록체인에서 블록들을 연결하는 "체인(chain)"이 생성된다. 실시형태들에 있어서, 유효한 블록들은 노드들의 컨센서스에 의해 블록체인에 추가된다. 또한, 일부 실시예에 있어서, 블록체인은 유효성 검증된 블록들의 리스트를 포함한다.
실시형태에 있어서, 증명(proof) π는 블록체인 네트워크(222)에 브로드캐스트되고 검증자(220)는 증명을 검증하는 데 사용된다. 실시형태에 있어서, 검증자(220)는 블록체인 상의 노드와 같은 임의의 적절한 컴퓨팅 엔티티이다. 경우에 따라, 평가 키 EK 및 검증 키 VK를 생성하는 동일한 컴퓨팅 엔티티도 증명을 검증한다는 점에 또한 유의해야 한다. 실시형태에 있어서, 블록체인의 노드들은 검증 키 VK 및 증명 π를 사용하여 디지털 자산의 제어를 전송하는 트랜잭션을 유효성 검증할 수 있고, 따라서, 검증이 성공하면 계약이 유효성 검증된다. 프로토콜의 한 가지 요건은 증명자가 부정확한 증명을, 그것이 검증 키 VK를 알고 있는 경우에도, 제공할 수 없다는 점이다. 따라서, 이 프로토콜에 있어서, 공통 참조 문자열(CRS)이 클라이언트에 의해 또는 적어도 평가 키 EK 및 검증 키 VK를 공개한 신뢰할 수 있는 제3자에 의해 생성된다. 실시형태에 있어서, 공개된 검증 키 VK는 임의의 컴퓨팅 엔티티에 의해 계산을 검증하는 데 사용될 수 있다.
일반적으로, 클라이언트는 P2PK(pay-to-public-key) 및 P2PKH(pay-to-public-key-hash)와 같은 표준 트랜잭션(예컨대, 비트코인-기반의 블록체인 네트워크에서 정의되는 바와 같은 표준 트랜잭션)을 사용해서 상대방 또는 증명자에게 지불할 수 있다. 예를 들어, 실시형태에 있어서, 클라이언트는 P2PK 잠금 스크립트를 산술 연산 회로로 변환하고 회로로부터 도출되는 퍼즐을 포함하는 트랜잭션을 브로드캐스트한다. 상대방 또는 증명자는 회로를 수신하고, 적절한 입력(예컨대, 클라이언트와 증명자 사이의 공유 비밀 또는 증명자의 비밀 키를 사용하여 생성되는 디지털 서명과 같이 증명자의 아이덴티티를 입증하는 정보)을 제공하고, 회로를 실행하여 정확성 증명 π를 생성한다. 실시형태에 있어서, 증명은 디지털 자산을 잠금 해제하는 데 사용되고, 더욱이, 상대방 또는 증명자(예컨대, 상대방 또는 증명자와 연관되는 공개 키 및/또는 디지털 서명)를 식별하는 정보가 해독된 포맷으로 블록체인에 기록되지 않는 경우일 수 있다.
실시형태에 있어서, 검증 키 및 상응하는 증명은 상기에서 및/또는 하기에서 설명되는 기술에 따라 생성된다. 따라서, 검증자에게는 다음과 같은 검증 키 VK 및 증명 π가 주어지고:
Figure pct00003
검증자는 복수의 타원 곡선 곱셈(예컨대, 각각의 공개 입력 변수마다 하나) 및 다섯 번의 페어(pair) 검사를 계산하고, 그 중 하나가 추가적인 페어링(pairing) 곱셈을 포함한다.
t(x)가 p(x)를 나누고, 그에 따라 (xN+1, ..., xm) = f(x0, ..., xN)임을 검증하게 위해 검증 키 VK, 증명 π, 및 (a1, a2, ..., aN)이 주어지면, 검증자는 다음과 같이 진행된다. 먼저, 3개의 α 항을 모두 검사한다:
Figure pct00004
여기서,
Figure pct00005
,
Figure pct00006
, 및
Figure pct00007
이다. 이후, 검증자는 항 β를 검사한다:
Figure pct00008
Figure pct00009
이다. 마지막으로, 검증자는 가분성 요건을 검사한다:
Figure pct00010
여기서,
Figure pct00011
,
Figure pct00012
,
Figure pct00013
, 및
Figure pct00014
이다.
따라서, 전술한 단락들 및 본 개시물에서 설명되는 실시예들로부터의 표기법을 고려할 때, 일 실시형태에 따라, 검증은 하기의 요소들의 페어 검사 세트를 포함한다:
Figure pct00015
도 3은 검증 가능한 계산의 수행을 조정하기 위한 다이어그램(300)을 예시한다. 클라이언트(302), 증명자(304), 및 검증자(306)는 블록체인 네트워크의 노드들일 수 있다. 클라이언트(302)는, 컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행시에, 컴퓨터 시스템으로 하여금 스마트 계약(308)을 수신하게 하는 실행 가능 코드를 포함할 수 있는 임의의 적절한 컴퓨터 시스템일 수 있다. 실시형태에 있어서, 스마트 계약(308)은 C, C++, 또는 자바와 같은 소스 코드로서의 고급 프로그래밍 언어로 인코딩된다. 실시형태에 있어서, 컴파일러, 인터프리터, 및/또는 어셈블러와 같은 소프트웨어는 스마트 계약(308)을, 필드 F로부터 값들을 운반하고 덧셈 및 곱셈 게이트에 연결하는 "와이어(wires)"로 구성된 산술 연산 회로(310)로 변환하는 데 이용될 수 있다. 산술 연산 회로는 물리적 와이어에 의해 연결되는 일련의 물리적 게이트(예컨대, 7400-시리즈 게이트와 같은 트랜지스터-트랜지스터 논리(TTL) 집적 회로, 플립-플롭, 버퍼, 디코더, 멀티플렉서 등을 이용)를 포함하는 물리적 회로에 의해 구현될 수 있는 논리 회로를 의미할 수 있다는 점에 유의해야 한다. 스마트 계약(308)의 실행이 도 3 등과 관련하여 설명되지만, 스마트 계약의 사용은 산술 연산 회로로 변환될 수 있는 소스 코드의 하나의 비제한적인 실시예일 뿐이다. 실시형태에 있어서, 클라이언트(302)(예컨대, 단독으로 또는 다른 엔티티와 함께)는 일련의 동작에 의해 정의되는 태스크를 수행하기 위한 소스 코드를 결정하고, 태스크의 실행은 증명자(304)에게 위임된다. 일반적으로, 검증자(306)는, 예를 들면 증명자(304)에 의해 생성되는 정확성 증명의 유효성을 검증함으로써, 증명자(304)가 태스크를 정확하게 실행했다고 결정하는 것과 연관되는 태스크를 수행할 수 있다.
실시형태에 있어서, 클라이언트(302)는 증명자(304)에게 산술 연산 회로(310)를 제공하고 증명자(304)는 회로에 대한 입력(312)을 취득한다. 입력 데이터의 소스는 블록체인에 저장된 데이터일 수 있거나, 또는 산술 연산 회로(310)에서 지정되는 특정 데이터 피드(data feed)와의 상호작용의 결과로서 외부에서 취득될 수 있다. 입력 데이터는 로컬 네트워크, 내부 네트워크, 인터넷과 같은 공중 네트워크, 와이드-에어리어 네트워크, 무선 네트워크, 모바일 네트워크, 위성 네트워크, 복수의 네트워크 노드를 갖는 분산 컴퓨팅 시스템 등과 같은 네트워크(318)를 통해 데이터 제공자(320) 및/또는 신뢰할 수 있는 엔티티(322)와 같은 데이터 피드로부터 취득될 수 있다. 경우에 따라, 입력(312)은 현실-세계 상태 및 이벤트에 관한 데이터와 같은 데이터일 수 있다. 회로(310)는 원래의 회로의 완전한 설명을 제공하는 다항식 세트를 포함하는 이차 프로그램 Q를 생성하는 데 사용될 수 있다. 어느 경우이든, 증명자(304)는 입력(312)에서 회로 C 또는 이차 프로그램 Q를 실행하여 하나 이상의 중간 출력 및 하나의 최종 출력을 생성할 수 있다. 일부 실시형태에 있어서, 증명자는, 입력 와이어들에 할당된 값들이 x의 값들이고, 중간 값들이 C에서 각각의 게이트의 정확한 동작에 대응하고, 출력 와이어(들)에 할당된 값들이 y가 되도록 회로 와이어들에 대한 값들의 할당인 {C, x, y}에 대한 유효한 트랜스크립트를 출력으로서 취득할 것으로 예상되고, 청구된 출력이 부정확(즉, y≠P(x))한 경우, {C, x, y}에 대한 유효한 트랜스크립트는 존재하지 않는다. 실시형태에 있어서, 증명자는 회로 와이어들의 값들의 서브세트를 제공할 것으로 예상되는데, 회로 와이어들의 값들의 선택된 서브세트는 증명자에게 선험적으로 알려지지 않는다.
실시형태에 있어서, 증명자(304)는 다음과 같은 방식으로 데이터 제공자(320)로부터 외부 데이터를 취득한다: 즉, 증명자(304) 및 데이터 제공자(320)는 암호로 보호된 통신 세션을 확립하고; 증명자(304)는 암호로 보호된 통신 세션을 통해 요청을 하고; 데이터 제공자는 요청에 응답하여 데이터를 제공하고; 증명자는 데이터를 수신하고, 데이터 수신에 응답하여, 당사자들 사이의 통신의 입증을 요청하고; 데이터 제공자는 암호로 보호된 통신 세션 동안 증명자와 데이터 제공자 사이의 암호로 검증 가능한 통신 증명(proof-of-communications) πCommunications를 계산하고, 데이터 제공자의 개인 키로 입증에 디지털 서명하고; 증명자는 통신 증명을 수신한다. 일반적으로, 통신 증명은 클라이언트와 서버 사이(예컨대, 증명자(304)와 데이터 제공자(320) 사이)에서 하나 이상의 통신이 발생했다는 암호로 검증 가능한 입증이다. 실시형태에 있어서, 입증은 클라이언트와 서버 사이의 통신 내용을 검증하는 데 사용될 수 있지만, 경우에 따라, 삭제된 정보를 정보의 난독화(예컨대, 암호화된 또는 해싱된 포맷의 정보)로 대체하거나 또는 소정의 디폴트 값으로 대체하는 등에 의해, 통신의 일부(예컨대, 그 개시가 법적 규제의 대상이 되는 정보)가 삭제될 수 있다는 점에 유의해야 한다. 실시형태에 있어서, 입증은 적어도 부분적으로 머클 트리(Merkle tree)의 루트 값에 기초하여 결정된다. 실시형태에 있어서, 입증(예컨대, 통신 증명)은 데이터 제공자(320)가 액세스 가능한 암호학적 개인 키를 사용하여 디지털 서명된다. 인증 기관과 같은 엔티티는 암호학적 공개 키가 개인 키에 대응함을 증명하는 디지털 인증서를 발행할 수 있다. 본 개시물의 범위에서, 통신 증명은 일반적으로 표기 πCommunications를 이용해서 언급되지만, 정확한 실행의 증명은 πProver 또는, 더 간단하게 π로 언급될 수 있다는 점에 유의해야 한다. 데이터 제공자(320)로부터 데이터를 취득하는 기술 및/또는 데이터 제공자(320)로부터 취득된 데이터의 무결성 및/또는 진본성을 검증하는 기술은 영국 특허 출원 제1720946.1호에서 설명되는 기술에 따라 수행될 수 있다.
실시형태에 있어서, 신뢰할 수 있는 엔티티(322) 또는 신뢰할 수 있는 기관은 (예컨대, 현재 또는 장래에) 입력 데이터에 액세스할 수 있을 것으로 예상된 컴퓨팅 시스템과 같은 엔티티일 수 있다. 데이터 피드의 공개 키는 잠금 스크립트에 내재되어 잠금 해제 스크립트의 서명 및 메시지를 고정된 값이 아니라 해당 키와 수학적 관계를 갖도록 제약할 수 있다. 이렇게 해서, 잠금은 데이터의 임의의 수정이 검출되도록 구성되고, 완화 및/또는 무효화와 같은 수정 동작이 취해질 수 있다. 미결정 데이터는 디지털 자산을 잠그는 데 사용될 수 있으며, 잠금 스크립트가 구성될 때에는 아직 잠금 노드에게 알려지지 않은 데이터일 수 있다. 이 데이터는 아직 확립되지 않은 데이터(예를 들면, 장래에 생성될 것으로 예상되지만 아직 생성되지 않은 데이터) 또는 다른 노드에게 알려져 있지만 잠금 노드에게는 아직 이용 가능하지 않은 데이터일 수 있다. 그러나, 데이터는 신뢰할 수 있는 엔티티(322)로부터 (현재 또는 장래에) 이용 가능할 것으로 예상되는 데이터이다. 잠금 스크립트는 결정된 데이터 소스(예컨대, 신뢰할 수 있는 엔티티(322))에 대한 공개 키, 및 잠금 스크립트를 실행하는 유효성 검증 노드로 하여금, a) 결정된 데이터 소스에 대한 공개 키에 기초하여, 그리고 잠금 해제 스크립트에서 정의되는 데이터에 기초하여 수정된 공개 키를 생성하는 것; 및 b) 수정된 공개 키에 기초하여 잠금 해제 스크립트에서 서명을 평가하는 것에 의해 잠금 해제 스크립트에서 제공되는 데이터의 소스를 검증하게 하는 명령어를 포함한다. 본 명세서에서 설명되는 다양한 기술에 따라 신뢰할 수 있는 엔티티(322)를 이용하는 기술은 영국 특허 출원 제1705749.8호와 관련하여 설명되는 내용을 따를 수 있다.
실시형태들에 있어서, 출력 y, 내부 회로 와이어들(또는 그 서브세트)의 값들, 및 평가 키 EK는 정확성 증명(316)을 생성하는 데 사용된다. 증명 π는 블록체인에 저장될 수 있으며 증명자(304)에게 다수의 당사자들과 개별적으로 상호작용하도록 요구할 필요 없이 다수의 당사자에 의해 검증될 수 있다. 이렇게 해서, 검증자(306)는 공개 검증 키 VK 및 증명 π를 사용하여 브로드캐스트된 트랜잭션을 유효성 검증할 수 있으며, 이로써 계약이 유효성 검증된다. 경우에 따라, 클라이언트(302)는 검증에 실패할 경우 브로드캐스트된 트랜잭션에 의해 저당잡힌 디지털 자산을 되찾을 수 있다. 경우에 따라, 검증자(306) 및 클라이언트(302)는 동일한 컴퓨터 시스템이다.
실시형태에 있어서, 도 4는, 프로그램(예컨대, 스마트 계약)의 입력 데이터가 유효성 검증되는, 프로그램의 실행을 보장하기 위한 프로토콜의 다이어그램(400)을 예시한다. 실시형태에 있어서, 프로토콜은 프로그램의 부정확한 실행에 의해 야기되는 잠재적인 피해의 자동 보상을 제공한다. 클라이언트(402), 증명자(404), 및 중재자(406)는 본 개시물의 다른 곳에서 설명되는 내용을 따를 수 있다.
다른 곳에서 논의되는 바와 같이, 도 4에서 예시되는 클라이언트(402)와 같은 클라이언트는 엔티티에 의해 제어되는 컴퓨터 시스템을 의미할 수 있으며, 여기서 클라이언트 컴퓨터 시스템 및/또는 클라이언트 엔티티가 계약 당사자이다. 예를 들어, 클라이언트(402)는 토큰의 발행자 또는 소유자에게 전송되는 비트코인과 같은 디지털 자산과 교환하여 토큰을 구매하려고 주문하는 엔티티와 연관될 수 있다. 토큰이 스마트 계약일 수 있다.
증명자(404)는, 다른 곳에서 설명되는 바와 같이, 스마트 계약과 같은 프로그램을 내재 또는 참조한 트랜잭션을 찾기 위해 네트워크를 모니터링하는 컴퓨터 시스템일 수 있다. 예를 들어, 증명자(404)는 블록체인 네트워크의 노드일 수 있다. 증명자를 작업자 또는 작업자 컴퓨터 시스템이라고 할 수도 있다.
중재자(406)는 클라이언트(402) 및/또는 증명자(404)와 신뢰 관계를 갖거나 및/또는 확립한 중재자 컴퓨터 시스템일 수 있다. 이와 관련하여, 신뢰 관계는 클라이언트(402)와 증명자(404) 사이에서 발생할 수 있는 분쟁을 중재하기에 적합한 컴포넌트로서 중재자가 클라이언트(402) 및/또는 증명자(404)에 의해 결정된다는 것을 의미할 수 있다. 예를 들어, 신뢰 관계는 클라이언트 또는 증명자 중 어느 하나와 협업하여 스마트 계약의 실행과 연관되는 디지털 자산을 잠금 해제하는 능력을 중재자에게 부여할 의사를 나타낼 수 있다. 예를 들어, 중재자는 프로그램(예컨대, 스마트 계약)의 부정확한 실행으로부터 발생할 가능성이 있는 피해의 자동 보상을 제공하는 데 사용될 수 있다.
클라이언트(402)는 랜덤하게 또는 의사-랜덤하게 생성될 수 있는 비밀 값을 결정할 수 있다. 비밀 값은, 클라이언트(402)가 증명자(404)에 의해 포스팅된 보증금이 반환될 수 있다고 결정할 때까지는, 증명자(404)에게 평문으로 제공되지 않아야 하는 값을 의미할 수 있다. 경우에 따라, 보증금은 증명자(404)가 프로그램의 정확한 실행을 위해 프로토콜을 따르는 것에 대한 인센티브로서 기능― 프로토콜을 따르지 않으면, 증명자(404)는 보증금 트랜잭션에 의해 저당잡힌 자산의 제어를 잃게 될 위험이 있음 ―한다는 점에 유의해야 한다. 따라서, 클라이언트(402)가 증명자(404)가 프로토콜에 따라 증명자의 모든 책임을 이행했다고 결정하는 것에 응답하여, 클라이언트(402)가 비밀 값을 증명자(404)에게 드러내는 경우일 수 있다.
비밀 값을 결정한 후에, 클라이언트(402)는 비밀 값을 암호화할 수 있으며, 이로써 암호화된 비밀이 생성된다. 비밀 값은 암호문을 생성하기 위해 중재자(406)와 연관되는 공개 키를 사용해서 암호화될 수 있다. 실시형태에 있어서, 중재자(406)는 클라이언트(402) 및 증명자(404)에 의해 공동으로 선택된다. 실시형태에 있어서, 중재자(406)는 도 1과 관련하여 설명되는 블록체인 네트워크의 노드이다. 실시형태에 있어서, 비밀 값은 클라이언트(402) 및 중재자(406) 모두에게 알려진 대칭 키 하에서 암호화된다. 클라이언트(402)는 또한, 비밀 값을 SHA-256 암호학적 해시 알고리즘과 같은 암호학적 해시 알고리즘에 대한 입력으로서 사용하여 해시 출력을 계산할 수도 있다. 또한, 클라이언트(402)는 암호문 및 해시 출력이 모두 동일한 비밀 값을 인코딩한다는 입증을 생성할 수 있다. 실시형태에 있어서, 입증은 영-지식 증명이다. 클라이언트(402)는 암호문, 해시 출력, 및 입증을 프로토콜의 일부로서 증명자(404)에게 전송할 수 있다.
증명자(404)는 보증금 트랜잭션을 블록체인 네트워크에 포스팅할 수 있고, 여기서 보증금 트랜잭션은 증명자(404)의 디지털 자산을 저당잡고 증명자(404)가 프로토콜에 따라 거동하게 하는 데 사용된다. 증명자(404)가 프로토콜을 따르지 않으면, 증명자(404)는 보증금 트랜잭션에 의해 저당잡힌 자산을 몰수당할 위험이 있다. 실시형태에 있어서, 보증금 트랜잭션은 증명자(404)에 의해 생성되어 값 D 비트코인의 이전 트랜잭션을 상환하고, 다음 두 가지 방식으로, 즉, 첫째, 비밀 값 및 증명자(404)의 디지털 서명을 공개함으로써 상환될 수 있거나(예치금 회수 트랜잭션이라고 함); 또는 둘째, 클라이언트(402) 및 증명자(404) 모두에 의한 동일한 트랜잭션에 대한 디지털 서명의 생성에 의해 상환될 수 있다(보상 트랜잭션이라고 함). 보증금 트랜잭션은 증명자(404)에 속하는 D 비트코인(또는 다른 적절한 디지털 자산)의 UTXO와의 이전 트랜잭션을 참조할 수 있다. 보증금 트랜잭션은 증명자(404)의 디지털 서명과 같은 하나 이상의 입력을 포함할 수 있다. 보안 트랜잭션에 의해 저당잡힌 디지털 자산의 타입 및/또는 금액은 클라이언트(402) 및 증명자(404)에 의해 상호 동의될 수 있거나 또는 클라이언트(402)에 의해 특정될 수 있고, 부정확한 입력 데이터를 사용한 프로그램(예컨대, 스마트 계약)의 실행에 의해 야기될 수 있는 최대 피해에 적어도 부분적으로 기초하여 선택될 수 있다.
실시형태에 있어서, 클라이언트(402) 및 상대방은 프로그램(예컨대, 스마트 계약)의 실행에 대한 조건에 동의한다. 상대방은 출력들 중 하나가 프로그램(예컨대, 스마트 계약 스크립트)에 의해 잠금된 잠금 트랜잭션을 생성하여 클라이언트(402)에게 송신할 수 있다. 상대방은 프로그램(예컨대, 스마트 계약)의 발행자를 의미할 수 있다. 이 시점에, 잠금 트랜잭션은 입력들의 값이 잠금 트랜잭션의 출력들의 값과 동일하지 않기 때문에 아직 유효하지 않다는 점에 유의해야 한다. 클라이언트(402)가 잠금 트랜잭션을 수신하면, 클라이언트(402)는 입력을 잠금 트랜잭션에 추가하고 클라이언트(402)에 의해 제어되는 UTXO를 잠금 해제하여, 디지털 자산에 동의한, 또한 프로그램(예컨대, 스마트 계약)의 실행을 위해 증명자(404)에게 지불될 수수료, 및 증명자(404)에 대한 수수료의 값 및 다음과 같은 3개의 서명, 즉 클라리언트(402)로부터의 서명, 증명자(404)로부터의 서명, 및 중재자(406)로부터의 서명 중 2개가 제공될 때 수수료에 대한 저당잡기를 해제하는 다중-서명 잠금 해제 스크립트를 갖는 출력에 동의한 발행자에게 전송한다. 클라이언트(402)는 증명자(404)가 보증금 트랜잭션을 포스팅했음을 검출하는 것에 응답하여 잠금 트랜잭션을 블록체인 네트워크에 브로드캐스트할 수 있다.
증명자(404)는 외부 데이터를 수집하고 계약 실행에 필요한 영-지식 증명을 계산할 수 있다. 외부 데이터를 수집하는 기술은 데이터 소스와의 통신을 인증하는 것을 포함할 수 있다. 통신을 인증하는 것에 대한 해법은 클라이언트(영-지식 프로토콜과 관련하여 설명되는 클라이언트와는 다른 엔티티일 수 있음) 및 서버가 서명된 데이터의 전송을 시작 또는 중지한 때 피어에게 통지하는 TLSSignOnOff라고 하는 새로운 서브-프로토콜을 정의한 "TLS Sign"에서 Hajjeh 및 M. Badra에 의해 고려되었다. 중지 메시지 이후, 서버는 대화의 해시를 수집하여 서명한다. 클라이언트가 요청을 할 때 시작되는 증거 창을 정의하는 R. Housley 및 M. Brown에 의해 설명되는 기술 "Transport Layer Security (TLS) Evidence Extensions" 및 H. Ritzdorf, K. Wuest, A. Gervais, G. Felley, 및 S. Capkun에 의해 설명되는 기술, "TLS-N: Non-repudiation over TLS Enabling Ubiquitous Content Signing for Disintermediation"과 같이, 암호로 보호된 통신 세션의 레코드 데이터를 인증(예컨대, 세션의 레코드를 저장하고 기록된 대화의 진본성 및/또는 무결성의 암호로 검증 가능한 증명으로 대화에 서명)하는 다양한 다른 해법이 사용될 수 있으며, 당사자들 중 하나가 증거 창에 가까워질 경우, 메시지의 해시 및 증거의 생성의 타임스탬프가 서버에 의해 서명되며, 선택적으로 민감한 레코드는 숨겨진다. 외부 데이터 수집(Gathering external data)에서 기술되는 내용을 따를 수도 있는 외부 데이터를 수집하는 기술은 영국 특허 출원 제1705749.8호와 관련하여 신뢰할 수 있는 데이터 소스를 또한 이용할 수 있다. 증명자(404)는 잠금 해제 트랜잭션을 블록체인 네트워크에 브로드캐스트할 수 있다.
증명자(404)가 잠금 해제 트랜잭션을 브로드캐스트한 후에, 검증자 컴퓨터 시스템은 정확한 실행의 증명이 유효한지의 여부를 결정하기 위해 검증 프로세스를 수행할 수 있다. 일부 실시형태에 있어서, 검증자는 클라이언트(402)와는 다른 컴퓨팅 엔티티이지만 그럴 필요가 없으며 ― 클라이언트가 검증 프로세스를 수행할 수 있다. 실시형태에 있어서, 검증 프로세스는 정확한 실행의 증명(예컨대, 회로에 대한 하나 이상의 입력에 적어도 부분적으로 기초하여 출력이 회로로부터 생성되었다는 것)의 유효성을 검증하는 것 및 증명자(404)에 의해 회로에 입력된 데이터가 정확한 입력이었다는 것을 검증하는 것을 모두 포함한다. 예를 들어, 검증은 프로그램에 대한 입력의 값이 외부 데이터(예컨대, 당사자가 지연에 대하여 보증받는 운항 정보; 작물 보험에 대한 물가 지수 대신 날씨의 데이터 피드를 사용한 금융 파생상품 계약에 대한 날씨 데이터)를 제공하는 신뢰할 수 있는 데이터 소스로부터의 인증된 대화에 기초한 예상된 값인지의 여부를 검사하는 것을 포함할 수 있다.
클라이언트(402)(또는 일반적으로, 검증 프로세스를 수행하기 위한 임의의 적절한 시스템)가 입력 데이터가 정확하지 않다고 결정하면, 증명자(404)는 정확한 입력 값에 기초하여 생성된 제1 출력과 잠금 해제 트랜잭션에서 증명자(404)에 의해 브로드캐스트된 부정확한 입력 값에 기초하여 생성된 제2 출력 사이의 차이를 반영하는 피해 d를 계산할 수 있다. 예를 들어, 스마트 계약(예컨대, 프로그램)은 특정 운항의 지연에 대하여 당사자를 보증할 수 있고, 프로그램의 실행은 특정 날짜에 특정 상용 비행의 운항 정보와 같은 외부 데이터를 이용해서 특정 운항이 지연되었는지의 여부를 결정하는 것을 포함할 수 있다. 운항이 지연되었으면, 프로그램의 당사자는 자산(예컨대, 지연에 대한 여행 보험을 제공하는 스마트 계약)의 전송을 수신할 수 있다. 본 명세서에서는 다양한 확장, 수정, 및 대체 실시형태가 또한 고려되고 ― 예를 들어, 자산의 전송은, 특정한 이유로 인한 지연(예컨대, 날씨-관련 지연/취소), 지연이 적어도 특정 지속기간이어야 한다는 요건(예컨대, 3시간 이상의 지연만이 보증됨), 및 지연의 지속기간에 따른 가변적인 전송(예컨대, 금액이 클수록 더 긴 지연이 보증됨)과 같은 추가적인 기준에 적어도 부분적으로 기초할 수 있다. 제2 실시예로서, 프로그램에 대한 입력이 통화들 사이의 환율에 대응하는 경우에, 피해 d는 정확한 통화 환율에 기초하여(예컨대, 신뢰할 수 있는 소스에 의해 인증된 통신 세션에서 인코딩되는 환율에 기초하여), 또한 증명자(404)가 프로그램을 실행하는 데 사용한 통화 환율에 기초하여 클라이언트(402)가 수령해야 하는 금액의 차이를 측정할 수 있다. 실시형태에 있어서, 증명자(404)는 피해 d의 계산을, 도 4에서 예시되는 증명자(404)와는 상이한 다른 작업자와 같은 다른 컴퓨터 시스템에게 위임한다. 경우에 따라, 시스템은 증명자(404)에 의한 피해의 계산을 요청할 수도 있다는 점에 유의해야 한다. 실시형태에 있어서, 피해 금액의 영-지식 증명은 상이한 회로(예컨대, 프로그램)의 출력에 대응할 수 있는 피해 금액의 입증을 제공하기 위해 생성될 수 있다.
시스템(예컨대, 클라이언트(402))이 (예컨대, 다른 증명자로부터 계산의 결과를 수신함으로써) 피해의 값(가액)을 계산 내지는 결정하면, 시스템은 계산된 피해가 증명자(404)에게 이용 가능해지게 할 수 있다. 실시형태에 있어서, 계산된 피해 값 및 피해 값의 유효성을 입증하는 영-지식 증명은 피해 값 및/또는 증명을 블록체인 네트워크에 브로드캐스트함으로써 증명자(404)에게 이용 가능해질 수 있고, 이는 블록체인의 다른 노드들이 피해 값이 정확한지의 여부를 결정하게 할 수 있다. 실시형태에 있어서, 피해 값 및/또는 증명은 블록체인 외부의 증명자(404)에게 이용 가능해지고 ― 예를 들어, 시스템은 메시지를 임의의 적절한 방식으로 증명자(404)에게 전송할 수 있으며, 메시지는 피해 값 및/또는 증명을 포함한다. 일부 실시형태에 있어서, 시스템은 피해 값이 영이 아닌 필요충분 조건이 충족되는 경우, 증명자(404)에게 피해를 제공한다.
일부 실시형태에 있어서, 증명자(404)는 피해 값을 수신 내지는 취득한다. 피해 값이 영이면, 증명자(404)는 마치 피해 값이 수신되지 않았던 것과 동일 또는 유사한 방식으로 진행될 수 있다. 예를 들어, 증명자(404)는 특정 프로그램(예컨대, 스마트 계약)의 실행과 연관되는 피해가 영임을 나타내는 메시지를 수신하고, 보상 루틴이 실행될 필요가 없다고 결정할 수 있다. 실시형태에 있어서, 증명자(404)는 클라이언트(402)가 비밀 값을 제공하기를 기다린다. 비밀 값은 블록체인 트랜잭션에 의해 저당잡힌 디지털 자산을 상환하는 데 사용 가능할 수 있으며 ― 예를 들어, 블록체인 트랜잭션은, 총괄적으로 실행될 때, 정확한 비밀 값이 잠금 해제 스크립트에 제공되었고 디지털 자산에 대한 저당잡기를 해제한다는 것을 검증하는 잠금 스크립트 및 잠금 해제 스크립트를 포함할 수 있다.
그러나, 증명자(404)가 영이 아닌 피해 가치를 수신하면, 증명자(404)는 프로토콜에 따라 하나 이상의 동작을 수행할 수 있다. 실시형태에 있어서, 증명자(404)는 피해 가치 및 피해 가치에 관한 상응하는 영-지식 증명을 수신한다. 증명자(404)는 해당 증명을 검증할 수 있다. 증명이 검증되면, 증명자(404)는 증명자(404)가 수신된 피해 값의 값에 동의하는지의 여부에 대한 결정을 할 수 있다. 실시형태에 있어서, 증명자(404)는 피해를 계산하기 위한 프로그램을 실행하거나, 프로그램의 실행을 다른 컴퓨팅 엔티티에 위임(예컨대, 이로써 증명자(404)는 다른 증명자에 의한 프로그램의 실행을 위한 클라이언트가 됨)하는 등에 의해 피해 값을 결정하기 위한 임의의 적절한 동작 세트를 수행한다.
증명자(404)에 의해 결정되는 피해 값이 증명자(404)에게 제공되는 피해 값과 일치하면, 증명자(404)는 피해 값이 정확하다고 결정할 수 있으며, 피해 값 d와 동일한 자산의 제어를 클라이언트(402)에게 보상으로서 전송하게 하는 하나 이상의 단계를 실행할 수 있다. 실시형태에 있어서, 증명자(404)는 피해 값 d와 동일한 자산의 제어를 클라이언트(402)와 연관되는 어드레스에 전송하는 것을 포함하는 트랜잭션을 블록체인 네트워크에 브로드캐스트한다. 그러나, 증명자(404)가 피해에 대하여 상이한 값을 결정하면(또는 영-지식 증명이 검증하지 않으면), 증명자(404)는 중재자(406)에게 대화의 타임스탬프된 트랜스크립트를 제공할 수 있다. 중재자는 트랜스크립트를 이용하여 클라이언트(402) 또는 증명자(404)에 의해 계산된 피해 값이 정확한지의 여부를 결정할 수 있다.
증명자(404)는 다양한 시점에 다양한 엔티티로부터 비밀 값을 수신할 수 있다. 예를 들어, 증명자(404)가 프로그램(예컨대, 스마트 계약)을 정확하게 실행했고 프로그램의 출력을 생성하는 데 사용된 하나 이상의 입력이 블록체인 외부의 데이터(예컨대, 정확성 및/또는 값이 블록체인 네트워크에 저장된 데이터만을 사용하여 계산적으로 검증할 수 없는 데이터)에 기초한 예상된 값과 일치한다는 정확한 작업의 증명의 검증시에, 비밀 값이 클라이언트(402)에 의해 증명자(404)에게 제공될 수 있다. 클라이언트(402)는 피해 값 d의 계산시 및 증명자(404)로부터의 보상으로서 해당 금액의 디지털 자산의 전송의 수신시에 증명자(404)에게 비밀 값을 제공할 수 있다. 증명자(404)는, 클라이언트(402)가 증명자(404)에게 제공한 피해 값 d가 부정확하다는 것, 증명자(404)가 정확한 피해 값인 상이한 피해 값 d'를 제공했다는 것, 피해 값 d'와 동일한 디지털 자산의 전송이 클라이언트(402)에 대하여 이루어졌다는 것, 및 이들의 조합을 중재자가 결정한 것에 응답하여 중재자(406)로부터 비밀 값을 수신할 수 있다.
비밀 값을 수신하면, 증명자(404)는 보증금에서 저당잡힌 디지털 자산을 회수하기 위한 블록체인 트랜잭션을 생성할 수 있다. 증명자(404)는 비밀 값 및 증명자(404)의 디지털 서명을 인코딩하는 잠금 해제 스크립트를 포함하는 블록체인 트랜잭션을 생성할 수 있다. 디지털 자산을 저당잡는 상응하는 잠금 스크립트는, 비밀 값의 해시와 잠금 스크립트에서 인코딩된 출력 값을 비교함으로써 잠금 해제 스크립트가 정확한 비밀 값을 인코딩한다는 것을 검증하는 한편, 증명자(404)와 연관되는 공개 키를 사용하여 잠금 스크립트의 디지털 서명을 검증하는 명령어를 포함할 수 있다. 따라서, 잠금 스크립트 및 잠금 해제 스크립트는 총괄적으로, 실행될 경우, 보증금 트랜잭션의 잠금 스크립트에 의해 저당잡힌 디지털 자산의 제어를 전송하는 프로그램을 형성할 수 있다. 일부 실시형태에 있어서, 디지털 자산을 회수하기 위한 블록체인 트랜잭션은 예치금 회수 트랜잭션이 지속 시간 tw 내에 블록체인 네트워크에 브로드캐스트(예컨대, 채굴)되어야 하도록 시간 제한될 수 있다. 실시형태에 있어서, 이 제한은 잠금 스크립트에 인코딩된다. 일부 실시형태에 있어서, 제한은 프로그램에 따라 인코딩되는 것이 아니라, 다른 트랜잭션(예컨대, 보상 트랜잭션)에게 시간 tw 이후에 클라이언트(402)를 대신하여 보증금 트랜잭션에 의해 저당잡힌 디지털 자산을 청구하게 함으로써 시행된다.
예를 들어, 실시형태에 있어서, 클라이언트(402)는 프로그램(예컨대, 스마트 계약)을 실행하기 위해 증명자(404)에 의해 사용되는 입력 값이 신뢰할 수 있는 소스로부터 (예컨대, 인증된 통신 세션을 통해) 취득되는 정보에 기초한 예상 입력 값이 아니라고 결정하고 증명자(404)에게 계산된 피해 값 d를 나타내는 메시지를 송신한다. 증명자(404)가 적어도 d의 보상 값에 대응하는 디지털 자산을 전송하지 않으면, 클라이언트(402)는 보증금의 디지털 자산을 청구하기 위해 블록체인 트랜잭션을 포스팅할 시간 tw까지 대기할 수 있다. 보상 트랜잭션은 클라이언트(402) 및 증명자(404) 모두의 디지털 서명을 인코딩할 수 있고, 시간 tw 이전에는 보상 트랜잭션이 블록체인 네트워크에 대하여 채굴될 수 없도록 시한 잠금될 수 있다. 보상 트랜잭션은 클라이언트(402)가 보증금 트랜잭션에 의해 저당잡힌 디지털 자산을 제어할 수 있게 하는 잠금 해제 스크립트를 포함할 수 있다. 실시형태에 있어서, 보상 트랜잭션의 본문은 프로토콜의 시작시이거나 또는 시작 전일 수 있는 통신의 시작시에 증명자에 의해 서명된다.
도 5는 Bob(밥)에 의해 동작되는 제1 클라이언트 컴퓨터 시스템 및 Alice(앨리스)에 의해 동작되는 제2 클라이언트 컴퓨터 시스템에 의해 생성되는 트랜잭션 레코드의 실시예를 예시한다. Bob을 토큰의 발행자라고 할 수 있으며, Alice를 클라이언트라고 할 수 있다. 다이어그램(500)은 프로그램(예컨대, 스마트 계약)의 실행을 위한 잠금 트랜잭션의 생성을 예시한다. 잠금 트랜잭션(502)은 스마트 계약의 대가로 Bob이 액세스할 수 있는 암호화폐 지갑 또는 어드레스로의 디지털 자산의 전송을 지시할 수 있다. 도시된 실시예에 있어서, Alice는 Bob에 의해 제어되는 개인 키와 연관된 공개 키의 해시를 특정함으로써 P2PKH(pay-to-public-key-hash)를 이용한다. 다른 실시예들에 있어서, Alice는 Bob에게 디지털 자산을 전송하기 위해 P2PK(pay-to-public-key) 또는 P2SH(pay-to-script-hash) 연산 부호를 이용할 수 있다. 제1 클라이언트 컴퓨터 시스템을 이용하여, Bob은 2개의 입력 및 2개의 출력으로 공급된 계약에 대한 잠금 트랜잭션(502)을 준비한다. 도시된 바와 같은 실시예에 있어서, Bob은 적은 Satoshi(사토시)의 값을 가질 수 있는 x의 값을 갖는 제1 입력(504) 및 계약 조건을 기술하는 메타데이터를 포함하는 제1 출력(508)을 생성한다. 제1 출력(508)은 영(zero)의 값을 가질 수 있다(OP_RETURN). 도시된 실시예에 있어서, Bob은 마찬가지로 값 x 또는 적은 Satoshi를 갖는 제2 입력(506) 및 Alice가 전송해야 하는 디지털 자산을 나타내는 y의 값, 및 공개 키 해시의 지불("P2PKH")을 갖는 제2 출력(510)을 생성한다. 잠금 트랜잭션(502)은 Bob에 의해 동작되는 제1 클라이언트 컴퓨터 시스템으로부터 Alice에 의해 동작되는 제2 클라이언트 컴퓨터 시스템으로 전송될 수 있다.
실시형태에 있어서, 노드들 중 적어도 일부는 본 개시물에 개시된 바와 같이 트랜잭션들을 유효성 검증하는 유효성 검증 노드로서 동작한다. 일부 실시예에 있어서, 트랜잭션은 디지털 자산(예컨대, 다수의 비트코인)의 소유권의 증명을 제공하는 데이터 및 디지털 자산의 소유권/제어를 수용 또는 전송하기 위한 조건을 포함한다. 일부 실시예에 있어서, "잠금 해제 트랜잭션(unlocking transaction)"은 이전 트랜잭션의 아직 소비되지 않은 트랜잭션 출력(UTXO)에 의해 표시되는 디지털 자산의 적어도 일부를 블록체인 어드레스와 연관되는 엔티티에 재연관시키는(예컨대, 소유권 또는 제어를 전송하는) 블록체인 트랜잭션을 의미한다. 일부 실시예에 있어서, "이전 트랜잭션(previous transaction)"은 잠금 해제 트랜잭션에 의해 참조되는 UTXO를 포함하는 블록체인 트랜잭션을 의미한다. 일부 실시형태에 있어서, 트랜잭션은 소유권/제어가 전송("잠금 해제")될 수 있기 전에 이행되어야 하는 조건으로 트랜잭션을 저당잡는 "잠금 스크립트(locking script)"를 포함한다.
잠금 트랜잭션(502)은 제2 클라이언트 컴퓨터 시스템을 이용하여 Alice에 의해 수정된다. 도 5에 도시된 실시예에 있어서, 최종 수정된 잠금 트랜잭션(512)은 3개의 입력 및 출력을 포함한다. 제1 입력(514)은 변경되지 않으며 x의 값(적은 Satoshi)을 포함한다. 제1 출력(520)은 변경되지 않으며 계약 조건을 기술하는 메타데이터를 유지한다. 제2 입력(516)은 변경되지 않으며 x의 값(적은 Satoshi)을 갖는다. 잠금 트랜잭션(502)에서와 같이, 제2 출력(522)은 y의 값(Alice가 그 제어를 전송해야 하는 디지털 자산에 대응함), 및 P2PKH를 유지한다. 제2 클라이언트 컴퓨터 시스템을 이용하여, Alice는 제3 입력(518) 및 제3 출력(524)을 추가한다. 제3 입력(518)은 계약을 위해 Alice가 제어를 전송하는 디지털 자산, 및 작업자에 대한 수수료에 대응하는 y+z의 값을 갖는다. 제3 출력(524)은 작업자에 대한 수수료에 대응하는 z의 값을 갖는다. 클라이언트가 계약 실행을 위한 리소스(예컨대, 디지털 자산)를 거래 당사자들(예컨대, 클라이언트 및 증명자) 각각에 의해 제어되는 하나의 키 및 중재자에 의해 제어되는 하나의 키로 3-중-2 다중서명(2-of-3 multisig) 어드레스에 송신하는 스킴에서는 다자 서명 특징이 이용될 수 있다. 이를 위해, 클라이언트(예컨대, Alice)가 클라이언트, 증명자, 및 중재자의 개인 키들에 대한 다중서명 어드레스를 생성한다. 실시형태에 있어서, Alice가 자신의 리소스(예컨대, 디지털 자산)를 시간대 tw 이후에 회수할 수 있게 하는 잠금 트랜잭션이 시한 잠금된다.
중재자는 도 4와 관련하여 전술한 바와 같은 중재자 컴퓨터 시스템일 수 있다. 분쟁(예컨대, 프로그램의 실행에 있어서 Alice가 증명자에 의해 사용된 입력 값에 동의하지 않음)이 있으면, 중재자는 자금을 상환하기에 적합한 클라이언트 또는 증명자와 협업할 수 있고 ― 예를 들어, 클라이언트가 확립된 프로토콜을 따르지 않으면, 중재자는 증명자와 협업하여 제3 출력(예컨대, 수수료 값 z) 하에서 저당잡힌 디지털 자산을 증명자에게 전송함에 있어서 협력할 수 있다. 반대로, 증명자가 프로토콜을 따르지 않으면, 예탁된 자금을 상환하는 데에는 3개의 서명 중 2개이면 충분하기 때문에, 중재자는 클라이언트와 협업할 수 있다. 프라이버시를 강화하기 위해, 공개적으로 중재자와 연관된 오래된 어드레스를 포함하지 않고, 당사자들이 블라인드 처리된 어드레스를 사용할 수 있다는 점에 유의해야 한다. 데이터의 정확성에 관하여 중재자를 납득시키기 위해, 당사자들은 통신의 증명을 포함하는 트랜스크립트를 제시할 수 있다. 경우에 따라, 중재자에 대한 블라인드 처리된 어드레스가 사용되어 스킴을 내부적으로 숨기게 되고 ― 다만, 프로토콜의 목적이 투명성을 제공하는 것이면(예컨대, 블록체인 네트워크의 노드들이 트랜잭션을 검증하게 함), 블라인드 처리되지 않은 어드레스가 실시형태에서 이용될 수 있다.
경우에 따라, 프로토콜은 안전한 프로토콜이며, 이는 중재자가 예탁된 자금을 일방적으로 상환할 수 없음을 의미할 수 있다. 경우에 따라, 프로토콜은 낙관적 프로토콜이며, 이는 중재자가 분쟁을 자발적으로 중재할 것이라는 가정을 의미할 수 있다. 일부 실시형태에 있어서, 프로토콜은 중재자에게 거래 당사자들과 함께 예치금에 대응하는 값 M을 갖는 제4 입력을 공급하도록 요구하고, 중재자는 작업자 수수료를 저당잡는 예탁 트랙잭션이 상환되는 필요충분 조건이 충족되는 경우 예치금 값 M을 회수할 수 있다. 이렇게 해서, 중재자는 작업자 수수료가 상환될 때까지 예치금 값을 되찾을 수 없기 때문에, 중재자가 분쟁을 중재하는 것을 거부함으로써 서비스 거부 공격(denial-of-service attack)을 야기할 가능성이 완화된다.
도 6은 본 개시물에서 설명되는 프로토콜에 따른 프로세스의 흐름도(600)를 예시한다. 이 흐름도는, 도 1, 도 4 및 도 12와 같이, 본 개시물의 다른 곳에서 설명된 실시형태들에 따라 구현될 수 있다. 프로세스는 도 7과 관련하여 설명되는 프로세스를 구현하는 동일한 시스템에 의해 구현될 수 있다. 프로세스는 본 개시물의 다른 곳에서 설명되는 바와 같은 클라이언트에 의해 또는 임의의 다른 적절한 컴퓨팅 엔티티에 의해 구현될 수 있다. 적절한 시스템(예컨대, 도 4와 관련하여 설명되는 바와 같은 클라이언트)은 하나 이상의 프로세서, 및 실행될 경우, 하나 이상의 프로세서로 하여금 도 6과 관련하여 설명되는 프로세스의 적어도 일부를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함한다.
프로세스의 일부로서, 시스템은 적절한 증명자 및 중재자를 선택(602)할 수 있다. 실시형태에 있어서, 클라이언트는 프로그램(예컨대, 스마트 계약)의 실행을 요청하는 요청을 프로그램 실행 플랫폼을 통해 발행한다. 요청은 프로그램의 표시(예컨대, 프로그램의 계산 복잡성 또는 예상 실행 시간에 대한 정보, 클라이언트가 프로그램의 실행을 위해 그 제어를 전송할 의사가 있는 디지털 자산에 대응하는 수수료 등을 포함함)를 포함할 수 있다. 플랫폼의 하나 이상의 예비 증명자는, 해당 예비 증명자가 프로그램을 실행할 의사가 있음을 나타내는 요청에 대한 응답을 제공할 수 있다. 실시형태에 있어서, 플랫폼은 예비 증명자들이 플랫폼에 대한 과거 수행과 연관되는 등급을 갖는 피드백 시스템을 포함한다. 예를 들어, 증명자는 과거 요청을 정확하게 이행한 것에 대한 긍정적인 등급 및 과거 요청을 이행하는 데 실패했거나 또는 부정확하게 이행한 것에 대한 부정적인 등급을 받을 수 있다. 등급은, 예비 증명자가 얼마나 자주 부정확한 입력 데이터를 사용했는지, 수정 트랜잭션을 브로드캐스트했는지, 중재자에 의해 해결된 분쟁에 연루되었는지 등과 같은 추가 정보를 포함할 수 있다. 실시형태에 있어서, 클라이언트는 예비 증명자 s와 연관되는 등급들에 적어도 부분적으로 기초하여 증명자를 선택한다(예컨대, 해당 증명자는 응답하는 모든 증명자들 중에서 가능 높은 등급을 가짐).
실시형태에 있어서, 클라이언트는 비밀 값 x를 결정(604)한다. 비밀 값은, 클라이언트가 증명자가 프로그램(예컨대, 스마트 계약)을 실행했다고 결정하고 프로그램이 정확하게 실행되었음을 검증할 때까지, 클라이언트가 증명자에게 드러내지 않는 값을 의미할 수 있다. 프로그램의 정확한 실행을 검증하는 것은 정확한 입력 데이터가 프로그램의 실행을 제어하는 데 사용되었는지의 여부를 결정하는 것을 포함할 수 있다.
시스템은 중재자 컴퓨터 시스템과 연관되는 공개 키를 취득하고, 중재자의 공개 키 하에서 비밀 값을 암호화(606)할 수 있고, 이로써 암호화된 비밀 값 EncMediator(x)가 생성된다. 시스템은 비밀 값을 SHA-256 암호학적 해시 알고리즘과 같은 암호학적 해시 알고리즘에 대한 입력으로서 사용하여 출력 y = H(x)를 생성(606)할 수 있다. 일반적으로, 일방향 함수와 같은 역상 저항(pre-image resistant) 함수가 이와 관련하여 설명되는 바와 같은 암호학적 해시 함수를 대신하여 이용될 수 있다. 또한, 시스템은 암호화된 비밀 값 EncMediator(x) 및 출력 y가 동일한 비밀을 인코딩한다는 영-지식 증명을 생성(608)할 수 있다. 영-지식 증명은 공유된 값에 액세스하지 않은 컴퓨팅 엔티티들에 의해 계산적으로 검증 가능한 것일 수 있다(예컨대, 비밀 값 x에 액세스할 수 없는 컴퓨터 시스템들은 여전히 EncMediator(x) 및 y가 동일한 값으로부터 생성되었다는 것을 계산적으로 검증할 수 있음).
전술한 데이터를 생성한 후에, 시스템은 암호화된 비밀 값, 해시 출력, 및 영-지식 증명을 증명자에게 전송(610)할 수 있다. 이 정보는 임의의 적절한 방식으로, 예를 들면, 다수의 데이터 패킷들에 걸쳐 정보를 제공하는 것에 의해, 또는 데이터를 증명자가 액세스할 수 있는 위치에 저장하고 해당 위치에 대한 참조(예컨대, 인터넷 식별자)를 제공하는 것에 의해, 증명자에게 이용 가능해질 수 있다.
클라이언트는 증명자가 프로그램을 이용 가능하게 할 수 있다(612). 프로그램은 클라이언트가 증명자에게 실행하도록 요청하는 프로그램을 의미할 수 있다. 프로그램은 도 3과 관련하여 설명되는 것들과 같은 네트워크 블록체인 또는 오프-체인 데이터 소스로부터 취득 가능할 수 있는 입력 데이터에 따라 실행되는 스마트 계약일 수 있다. 실시형태에 있어서, 클라이언트는 프로그램에 대한 참조를 인코딩하는 자금 트랜잭션을 브로드캐스트함으로써 증명자가 프로그램을 이용할 수 있게 하고, 자금 조달 트랜잭션은, 예를 들어, 도 5와 관련하여 설명된 내용에 따른다. 자금 트랜잭션 및/또는 프로그램은 증명자가 보증금 트랜잭션을 블록체인 네트워크에 브로드캐스트했음을 검출하는 것에 응답하여 클라이언트에 의해 브로드캐스트될 수 있다. 증명자는 도 8 및 도 9에 따라 설명되는 프로세스들에 따라 프로그램을 실행할 수 있다.
도 7은 본 개시물에서 설명되는 프로토콜에 따른 프로세스의 흐름도(700)를 예시한다. 이 흐름도는, 도 1, 도 4 및 도 12와 같이, 본 개시물의 다른 곳에서 설명된 실시형태들에 따라 구현될 수 있다. 프로세스는 도 6과 관련하여 설명되는 프로세스를 구현하는 동일한 시스템에 의해 구현될 수 있다. 프로세스는 본 개시물의 다른 곳에서 설명되는 바와 같은 클라이언트에 의해 또는 임의의 다른 적절한 컴퓨팅 엔티티에 의해 구현될 수 있다. 적절한 시스템(예컨대, 도 4와 관련하여 설명되는 바와 같은 클라이언트)은 하나 이상의 프로세서, 및 실행될 경우, 하나 이상의 프로세서로 하여금 도 7과 관련하여 설명되는 프로세스의 적어도 일부를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함한다.
시스템은 (예컨대, 도 6에서 설명된 바와 같이) 프로그램이 실행되었다는 표시를 검출(702)할 수 있다. 일부 실시형태에 있어서, 증명자는 프로그램의 실행을 나타내는 잠금 해제 트랜잭션을 브로드캐스트한다. 표시는 정확성 증명 또는 프로그램의 정확한 실행의 증명을 포함할 수 있다. 표시는 증명자와 데이터 제공자 사이의 통신 증명을 또한 포함할 수 있다. 프로그램의 실행은 블록체인 네트워크 외부의 데이터에 기초하여 값들이 결정될 수 있는 하나 이상의 입력에 의해 제어될 수 있다.
표시를 검출하면, 시스템은 프로그램의 실행을 검증(704)할 수 있다. 경우에 따라, 시스템은 검증 단계들을 도 3과 관련하여 설명된 검증자 컴퓨터 시스템과 같은 다른 컴퓨터 시스템에 위임한다. 프로그램 실행을 검증하는 것은, 프로그램이 완료될 때까지 실행되었고 출력을 생성했음을 검증하는 것, 증명자에 의해 생성된 정확성 증명의 유효성을 검증하는 것, 프로그램에의 입력이 정확한 값을 가짐을 검증하는 것 등을 포함할 수 있다. 시스템이 프로그램(예컨대, 스마트 계약)이 정확하고 유효하게 실행되었다고 결정하면, 시스템은 증명자가 비밀 값 x를 이용 가능하게 할 수 있다(712). 일반적으로, 시스템은 증명자가 프로토콜에 따라 다양한 단계를 수행(예컨대, 프로그램의 정확한 실행)했다고 결정하면 증명자가 비밀 값 x를 이용 가능하게 할 수 있다. 비밀 값 x는 보안 트랜잭션에 의해 저당잡힌 디지털 자산을 되찾기 위해 증명자에 의해 사용될 수 있다. 경우에 따라, 클라이언트 및 증명자는 프로그램을 실행하기 위한 수수료로서의 디지털 자산을 증명자에게 해제하는 다자 서명을 협력적으로 생성한다.
시스템이 프로그램이 정확하게 실행되지 않았다고 결정하면, 시스템은 부정확한 실행이 부정확한 입력 값의 사용에 기인했다고 결정할 수 있고 ― 예를 들어, 프로그램에 대한 입력은 도 3과 관련하여 전술한 바와 같이 데이터 피드로부터 취득된 예상 입력 값과 다를 수 있다. 시스템은 프로그램을 실행하는 데 사용된 실제 입력 값과 데이터 피드로부터 취득된 예상 입력 값 사이의 차이에 기초할 수 있는 수정 값을 결정(706)할 수 있다. 실시형태에 있어서, 수정 값은 다음과 같은 가중된 해밍 거리를 나타내는 메트릭을 통해 표현될 수 있고:
Figure pct00016
, 여기서 u = u[1..m], v = v[1..m]이고, 여기서 u 및 v는 비교할 문자열이다. 실시형태에 있어서, 수정 값은 스마트 계약의 예상 및 실제 실행에 있어서의 차이, 프로그램 실행을 검증하는 비용 등에 기초한 클라이언트가 겪는 피해 금액을 반영할 수 있다. 시스템은 수정 값을 증명자에게 전송하거나 내지는 증명자가 이용 가능하게 할 수 있고(708) ― 시스템은 또한 수정 값의 영-지식 증명을 생성하고 이용 가능하게 할 수 있다.
수정 값을 증명자에게 송신한 후에, 시스템은 수정 트랜잭션이 검출되었는의 여부(710)를 결정할 수 있다. 수정 트랜잭션은, 프로그램이 부정확하게 실행되었다는 인정인, 블록체인 네트워크에 증명자에 의해 브로드캐스트된 트랜잭션을 의미할 수 있으며 프로그램의 부정확한 실행에 대한 수정일 수 있다. 예를 들어, 경우에 따라, 수정 트랜잭션은 프로그램의 정확한 실행 하에서 시스템이 수신한 것과 프로그램의 부정확한 실행 하에서 시스템이 수신한 것 사이의 차이에 달하는 디지털 자산의 전송을 포함한다.
수정 트랜잭션이 검출되면, 시스템은 비밀 값 x를 증명자에게 제공하거나 내지는 증명자가 이용 가능하게 할 수 있다(712). 시간 제한 간격 tw 이후에 수정 트랜잭션이 검출되지 않으면, 클라이언트를 대신하여 보증금 트랜잭션에 의해 저당잡힌 디지털 자산을 청구하기 위해 다른 트랜잭션(예컨대, 보상 트랜잭션)이 브로드캐스트될 수 있다.
도 8은 본 개시물에서 설명되는 프로토콜에 따른 프로세스의 흐름도(800)를 예시한다. 이 흐름도는, 도 1, 도 4 및 도 12와 같이, 본 개시물의 다른 곳에서 설명된 실시형태들에 따라 구현될 수 있다. 프로세스는 도 9와 관련하여 설명되는 프로세스를 구현하는 동일한 시스템에 의해 구현될 수 있다. 프로세스는 본 개시물의 다른 곳에서 설명되는 바와 같은 증명자에 의해 또는 임의의 다른 적절한 컴퓨팅 엔티티에 의해 구현될 수 있다. 적절한 시스템(예컨대, 도 4와 관련하여 설명되는 바와 같은 증명자)은 하나 이상의 프로세서, 및 실행될 경우, 하나 이상의 프로세서로 하여금 도 8과 관련하여 설명되는 프로세스의 적어도 일부를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함한다.
증명자는 암호화된 값, 해시 출력, 및 암호화된 값 및 해시 출력이 동일한 값에서 도출된다는 영-지식 증명을 수신(802) 내지는 취득할 수 있다. 증명자는 이 데이터를 클라이언트로부터 (예컨대, 클라이언트에 의해 증명자에게 전송되는 메시지를 통해) 직접적으로 수신하거나, 또는 (예컨대, 데이터를 블록체인 네트워크에 브로드캐스트하고, 데이터를 데이터 저장 위치에 저장하고, 그 위치에 대한 링크를 제공하는 클라이언트에 의해) 간접적으로 수신할 수 있다. 증명자는 영-지식 증명을 검증(804)할 수 있다.
증명자는 실행할 프로그램을 취득(806)할 수 있다. 프로그램에 대한 참조는 본 개시물의 다른 곳에서 설명되는 바와 같은 자금 트랜잭션에 인코딩될 수 있다. 더욱이, 시스템은 프로그램의 실행을 위한 입력 데이터를 결정(808)할 수 있다. 예를 들어, 입력 데이터는 블록체인 네트워크로부터 또는 도 3과 관련하여 설명되는 네트워크를 통한 데이터 피드로부터 직접적으로 취득된 데이터일 수 있다. 실시형태에 있어서, 증명자는 입력 데이터에 따라 프로그램(예컨대, 스마트 계약)을 실행(810)한다. 시스템은, 프로그램의 실행 완료시에, 프로그램 실행의 출력 및 정확성 증명을 생성(812)할 수 있다. 출력 및 증명은 잠금 해제 트랜잭션에서 검증자 컴퓨터 시스템에게 이용 가능해질 수 있다(814). 검증자 컴퓨터 시스템은 도 4와 관련하여 설명되는 클라이언트와 같이, 검증 프로세스를 수행하기 위한 임의의 적절한 컴퓨터 시스템일 수 있다.
도 9는 본 개시물에서 설명되는 프로토콜에 따른 프로세스의 흐름도(900)를 예시한다. 이 흐름도는, 도 1, 도 4 및 도 12와 같이, 본 개시물의 다른 곳에서 설명된 실시형태들에 따라 구현될 수 있다. 프로세스는 도 8과 관련하여 설명되는 프로세스를 구현하는 동일한 시스템에 의해 구현될 수 있다. 프로세스는 본 개시물의 다른 곳에서 설명되는 바와 같은 증명자에 의해 또는 임의의 다른 적절한 컴퓨팅 엔티티에 의해 구현될 수 있다. 적절한 시스템(예컨대, 도 4와 관련하여 설명되는 바와 같은 증명자)은 하나 이상의 프로세서, 및 실행될 경우, 하나 이상의 프로세서로 하여금 도 9와 관련하여 설명되는 프로세스의 적어도 일부를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함한다.
증명자는 수정 값이 수신되는지의 여부(902)를 결정할 수 있다. 증명자는, 프로토콜에 따라, 수정 값이 수신되기를 소정의 기간 동안 대기하고, 해당 기간 내에 아무것도 수신되지 않으면, 수정 값이 수신되지 않았거나 및/또는 수정 값이 영이라고, 또한 수정 트랜잭션이 필요 없다고 암시적으로 결정할 수 있다. 수정 값은 증명자에 의한 프로그램의 부정확한 실행을 결정하는 클라이언트 또는 임의의 적절한 검증자에 응답하여 클라이언트로부터 수신될 수 있다.
증명자가 수정 값이 수신되지 않았거나 및/또는 수정 값이 영이라고 결정하면, 후속하여 증명자는 비밀 값을 수신(910)한다. 비밀 값은, 보증금 트랜잭션의 잠금 스크립트와 함께 총괄적으로 실행될 경우, 증명자가 보증금 트랜잭션에 의해 저당잡힌 디지털 자산을 되찾을 수 있게 하는 잠금 해제 스크립트를 생성 및/또는 실행하는 데 사용 가능할 수 있다. 비밀 값은 또한 자금 트랜잭션의 작업자 수수료를 상환하는 데 사용될 수도 있다. 클라이언트가 비밀 값을 증명자에게 제공하기를 거부하면(즉, 클라이언트가 프로토콜의 제약을 위반함), 증명자는 중재자로부터 비밀 값을 취득할 수 있다는 점에 유의해야 한다.
증명자가 수정 값을 수신하면, 증명자는 수정 값이 정확하게 계산되는지의 여부(904)를 결정할 수 있다. 증명자는 수정 값의 계산의 영-지식 증명을 취득하고 계산이 증명을 사용하여 정확하게 또는 부정확하게 계산되었다고 결정하거나 및/또는 별도의 계산을 수행할 수 있다. 경우에 따라, 증명자는 항상 클라이언트의 수정 값을 정확하게 계산된 것으로서 수용한다. 시스템이 수정 값이 정확하게 계산되었으며 값이 정확하다고 결정하면, 증명자는 수정 값에 적어도 부분적으로 기초하여 수정 트랜잭션을 생성(914)할 수 있다. 예를 들어, 수정 트랜잭션은 블록체인에 채굴된 트랜잭션일 수 있으며 수정 값의 금액과 동등한 디지털 자산을 전송할 수 있다. 이후, 시스템은 전술한 방식으로 비밀 값을 수신(910)하기를 대기할 수 있다.
그러나, 증명자가 제공된 수정 값에 동의하지 않으면, 시스템은 (예컨대, 별도의 계산에 기초하여) 다른 수정 값을 결정(906)할 수 있다. 증명자는 수정 값이 정확하다는 것에 관하여 증명자와 클라이언트 사이의 분쟁을 중재하는 데 사용 가능한 트랜스크립트 및 암호화된 비밀 값을 중재자에게 제공(908)할 수 있다. 트랜스크립트는 증명자 및/또는 클라이언트에 의해 계산되는 수정 값 및 상응하는 영-지식 증명, 수정 값을 생성하는 데 사용되는 하나 이상의 입력 값, 및/또는 통신 증명과 같은 정보를 포함할 수 있다. 중재자는 증명자에 의해 계산되는 다른 수정 값이 정확하다고 결정하고, 암호화된 비밀 값을 복호하고, 비밀 값을 증명자에게 제공할 수 있다.
경우에 따라, 피해 값을 계산하는 방법은, 클라이언트가 계산을 수행하기 위해 증명자를 선택할 때와 같이, 클라이언트와 증명자 사이의 프로토콜의 초기 단계에 동의된다. 클라이언트는, 실시형태에 있어서, 실행할 프로그램 및 해당 프로그램의 부정확한 실행에 의해 야기되는 피해를 계산하는 데 사용되는 방정식을 모두 예비 증명자에게 요청의 일부로서 전송할 수 있다. 실시형태에 있어서, 증명자는 프로그램을 실행하는 것에 동의할지의 여부를 결정하기 전에 피해 값을 계산하기 위한 방정식을 알고 있다. 경우에 따라, 중재자는 클라이언트, 증명자, 또는 둘 모두로부터 방정식을 수신하고, 방정식은 두 당사자 중 어느 하나 또는 둘 모두에 의해 디지털 서명될 수 있고 ― 프로토콜은 중재자가 클라이언트 및 증명자 모두로부터 동일한 방정식을 수신하도록 요구하고, 방정식들이 서로 다르면, 프로토콜을 종료할 수 있다.
도 10은 본 개시물에서 설명되는 프로토콜에 따른 프로세스의 흐름도(1000)를 예시한다. 이 흐름도는, 도 1, 도 4 및 도 12와 같이, 본 개시물의 다른 곳에서 설명된 실시형태들에 따라 구현될 수 있다. 프로세스는 본 개시물의 다른 곳에서 설명되는 바와 같은 중재자 컴퓨터 시스템에 의해 또는 임의의 다른 적절한 컴퓨팅 엔티티에 의해 구현될 수 있다. 적절한 시스템(예컨대, 도 4와 관련하여 설명되는 바와 같은 증명자)은 하나 이상의 프로세서, 및 실행될 경우, 하나 이상의 프로세서로 하여금 도 10과 관련하여 설명되는 프로세스의 적어도 일부를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함한다. 실시형태에 있어서, 중재자― 중재자 컴퓨터 시스템이라고도 함 ―는 분쟁을 해결하기 위해 프로토콜의 클라이언트 및/또는 증명자에 의해 이용된다. 클라이언트와 증명자 사이에서, 한 당사자 또는 두 당사자가 단계를 수행하지 않거나 또는 단계를 정확하게 수행하지 않는 것과 같이 프로토콜을 따르지 않을 경우에 분쟁이 발생할 수 있다.
실시형태에 있어서, 증명자는 중재자와의 분쟁을 개시하고, 중재자는 증명자로부터 암호화된 비밀 값 및 트랜스크립트를 수신(1002)한다. 암호화된 비밀 값은 중재자의 공개 키 하에서 암호화될 수 있으며, 중재자는 상응하는 개인 키에 액세스할 수 있다. 트랜스크립트는 분쟁을 판정하는 데 사용 가능한 정보를 포함할 수 있다. 예를 들어, 트랜스크립트는 특정 상태 및/또는 값을 입증하는 영-지식 증명을 포함할 수 있다. 중재자는 임의의 적절한 방식으로, 예를 들면, 증명의 정확성을 검증함으로써 트랜스크립트를 검증할 수 있다. 중재자는 검증 프로세스의 일부 또는 모든 단계를 블록체인 네트워크의 노드와 같은 다른 컴퓨팅 시스템에 위임할 수 있다. 중재자가 증명자(예컨대, 증명자에 의해 주장된 상태 또는 값을 입증하는 증명의 정확성)와 동의하면, 중재자는 암호화된 비밀 값을 복호하고 비밀 값을 증명자에게 제공(1006)할 수 있다. 또한, 중재자는 증명자와 협력하여, 잠금 트랜잭션의 작업자 수수료를 상환하기 위해 사용 가능한 프로그램과 같은 하나 이상의 프로그램을 실행하는 데 사용될 수 있는 하나 이상의 다자 서명을 생성(1008)할 수 있다. 그러나, 중재자가 대신 클라이언트와 동의하면, 중재자는 클라이언트와 협력하여, (예컨대, 프로토콜을 따르지 않는 것에 대한 페널티로서) 증명자에 의해 포스팅된 디지털 자산을 청구하기 위한 프로그램 및/또는 잠금 트랜잭션의 작업자 수수료를 되찾기 위한 프로그램과 같은 다양한 프로그램을 실행하는 데 이용될 수 있는 하나 이상의 다자 서명을 생성(1012)할 수 있다.
유사한 방식으로, 클라이언트는 암호화된 비밀 값 및 트랜스크립트를 중재자에게 제공함으로써 중재자와의 분쟁 해결 루틴을 개시할 수 있다. 트랜스크립트는 영-지식 증명과 같은 정보를 포함할 수 있다. 중재자는 암호화된 비밀 값 및 트랜스크립트를 수신(1010)하고 전술한 기술을 적용함으로써 분쟁을 판정할 수 있다.
도 11은 본 개시물의 적어도 하나의 실시형태를 실시하는 데 사용될 수 있는 컴퓨팅 장치(1100)의 예시적인 간략화된 블록도이다. 다양한 실시형태들에 있어서, 컴퓨팅 장치(1100)는 상기에 예시 및 설명된 시스템들 중 어느 하나를 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 장치(1100)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 장치, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 장치로서 사용하도록 구성될 수 있다. 도 11에 도시된 바와 같이, 컴퓨팅 장치(1100)는, 실시형태들에 있어서, 버스 서브시스템(1104)을 통해 다수의 주변 서브시스템과 통신하도록 구성되며 작동 가능하게 결합되는 하나 이상의 프로세서(1102)를 포함할 수 있다. 일부 실시형태에 있어서, 이들 주변 서브시스템은 메모리 서브시스템(1108) 및 파일/디스크 스토리지 서브시스템(1110)을 포함하는 스토리지 서브시스템(1106), 하나 이상의 사용자 인터페이스 입력 장치(1112), 하나 이상의 사용자 인터페이스 출력 장치(1114), 및 네트워크 인터페이스 서브시스템(1116)을 포함한다. 이러한 스토리지 서브시스템(1106)은 정보의 임시 또는 장기 저장에 사용될 수 있다.
일부 실시형태에 있어서, 버스 서브시스템(1104)은 컴퓨팅 장치(1100)의 다양한 컴포넌트들 및 서브시스템들이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공한다. 버스 서브시스템(1104)이 단일의 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대체 실시형태들은 다수의 버스를 이용한다. 일부 실시형태에 있어서, 네트워크 인터페이스 서브시스템(1116)은 다른 컴퓨팅 장치들 및 네트워크들에 대한 인터페이스를 제공한다. 네트워크 인터페이스 서브시스템(1116)은, 일부 실시형태에 있어서, 컴퓨팅 장치(1100)로부터 다른 시스템들에 데이터를 전송하고 다른 시스템들로부터 데이터를 수신하기 위한 인터페이스로서 기능한다. 일부 실시형태에 있어서, 버스 서브시스템(1104)은 세부 내용, 검색어 등과 같은 데이터를 통신하는 데 이용된다.
일부 실시형태에 있어서, 사용자 인터페이스 입력 장치(1112)는 키보드와 같은 하나 이상의 사용자 입력 장치; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 장치; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 장치; 및 그 밖의 유형의 입력 장치들을 포함한다. 일반적으로, "입력 장치(input device)"라는 용어의 사용은 컴퓨팅 장치(1100)에 정보를 입력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다. 일부 실시형태에 있어서, 하나 이상의 사용자 인터페이스 츨력 장치(1114)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 장치와 같은 비-시각적 디스플레이 등을 포함한다. 일부 실시형태에 있어서, 디스플레이 서브시스템은 CRT(cathode ray tube), 또는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 장치 또는 그 밖의 디스플레이 장치를 포함한다. 일반적으로, "출력 장치(output device)"라는 용어의 사용은 컴퓨팅 장치(1100)로부터 정보를 출력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 장치(1114)는, 예를 들어, 그러한 상호작용이 적절할 수 있을 경우, 설명되는 프로세스들 및 그 변형들을 수행하는 애플리케이션들과의 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는 데 사용될 수 있다.
일부 실시형태에 있어서, 스토리지 서브시스템(1106)은 본 개시물의 적어도 하나의 실시형태의 기능을 제공하는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터-판독 가능 저장 매체를 제공한다. 일부 실시형태에 있어서, 하나 이상의 프로세서에 의한 실행시에, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시물의 하나 이상의 실시형태의 기능을 제공하고, 실시형태들에 있어서, 스토리지 서브시스템(1106)에 저장된다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(1102)에 의해 실행될 수 있다. 다양한 실시형태들에 있어서, 스토리지 서브시스템(1106)은 본 개시물에 따라 사용되는 데이터를 저장하기 위한 저장소를 부가적으로 제공한다. 일부 실시형태에 있어서, 스토리지 서브시스템(1106)은 메모리 서브시스템(1108) 및 파일/디스크 스토리지 서브시스템(1110)을 포함한다.
실시형태들에 있어서, 메모리 서브시스템(1108)은 프로그램 실행 동안 명령어 및 데이터의 저장을 위한 메인 RAM(random access memory)(1118) 및 정해진 명령어가 저장될 수 있는 ROM(read only memory)(1120)과 같이 다수의 메모리를 포함한다. 일부 실시형태에 있어서, 파일/디스크 스토리지 서브시스템(1110)은 프로그램 및 데이터 파일을 위한 비-일시적인 영구적인(비-휘발성) 스토리지를 제공하고, 연관된 이동식 매체와 함께 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM(Compact Disk Read Only Memory) 드라이브, 광학 드라이브, 착탈식 매체 카트리지, 또는 그 밖의 유사한 저장 매체를 포함할 수 있다.
일부 실시형태에 있어서, 컴퓨팅 장치(1100)는 적어도 하나의 로컬 클록(1124)을 포함한다. 로컬 클록(1124)은, 일부 실시형태에 있어서, 특정 시작일로부터 발생한 틱(tick)의 수를 나타내는 카운터이고, 일부 실시형태에 있어서, 컴퓨팅 장치(1100) 내에 일체로 위치된다. 다양한 실시형태에 있어서, 로컬 클록(1124)은 컴퓨팅 장치(1100) 및 그 안에 포함되는 서브시스템들에 대한 프로세서들에서 특정 클록 펄스로 데이터 전송을 동기화하는 데 사용되고, 컴퓨팅 장치(1100)와 데이터 센터 내의 다른 시스템들 사이의 동기 동작들을 조정하는 데 사용될 수 있다. 다른 실시형태에 있어서, 로컬 클록은 프로그램 가능 인터벌 타이머이다.
컴퓨팅 장치(1100)는 휴대용 컴퓨터 장치, 태블릿 컴퓨터, 워크스테이션, 또는 후술되는 임의의 다른 장치를 포함하여, 다양한 유형 중 어느 하나로 될 수 있다. 부가적으로, 컴퓨팅 장치(1100)는, 일부 실시형태에 있어서, 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 장치(1100)에 연결될 수 있는 다른 장치를 포함할 수 있다. 실시형태들에 있어서, 이러한 장치는 광섬유 커넥터를 수용하도록 구성되는 포트를 포함한다. 따라서, 일부 실시형태에 있어서, 이 장치는 광 신호를, 처리를 위해 장치를 컴퓨팅 장치(1100)에 연결하는 포트를 통해 전송되는 전기 신호로 변환하도록 구성된다. 컴퓨터 및 네트워크는 시시각각 변하기 때문에, 도 11에서 묘사되는 컴퓨팅 장치(1100)의 설명은 장치의 바람직한 실시형태를 예시할 목적으로 특정 실시예로서만 의도된다. 도 11에서 묘사되는 시스템보다 더 많거나 적은 컴포넌트를 갖는 많은 다른 구성들이 가능하다.
명세서 및 도면은, 결국, 제한적인 의미가 아니라 예시적인 의미인 것으로 간주되어야 한다. 그러나, 청구항들에 제시된 바와 같은 본 발명의 범위로부터 일탈함이 없이 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 마찬가지로, 그 밖의 변형들도 본 개시물의 범위 내에 있다. 따라서, 개시된 기술은 다양한 수정 및 대체 구성의 영향을 받기 쉽지만, 그 특정한 예시된 실시형태들이 도면에 도시되며 상세하게 전술되었다. 그러나, 본 발명을 개시된 특정 형태 또는 형태들로 제한하려는 의도는 없으며, 반대로, 본 발명은 첨부된 청구항들에서 규정된 바와 같이, 본 발명의 범위 내에서의 모든 수정, 대체 구성 및 등가물을 포함하려는 것이라는 점을 이해해야 한다.
개시된 실시형태들을 설명하는 문맥에서(특히, 하기의 청구항들의 문맥에서) 부정관사 및 정관사("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 프로그램을 총괄적으로 실행하도록 상기 작업자 컴퓨터 시스템 및 상기 중재자 컴퓨터 시스템에 의해 사용 가능함 ―하는 단계;
    제2 프로그램이 블록체인 데이터 구조에 대하여 이용 가능― 상기 제2 프로그램의 실행은 입력을 가짐 ―해지게 하는 단계;
    상기 블록체인 데이터 구조가, 상기 제2 프로그램의 정확한 실행의 증명 및 입력 값을 반영함을 판정― 상기 증명을 생성하기 위한 상기 제2 프로그램의 실행은 상기 입력 값을 상기 제2 프로그램에 대한 입력으로서 사용하는 것에 적어도 부분적으로 기초함 ―하는 단계;
    상기 증명에 적어도 부분적으로 기초하여, 상기 입력 값이 유효함을 판정하는 단계; 및
    상기 입력 값이 유효하다는 판정에 응답하여, 상기 비밀 값을 상기 작업자 컴퓨터 시스템에 제공― 상기 작업자 컴퓨터 시스템은 적어도 상기 비밀 값을 사용해서 상기 제1 프로그램을 실행할 수 있음 ―하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 비밀 값에 적어도 부분적으로 기초하여 암호학적 해시 출력을 생성하는 단계;
    상기 암호화된 값 및 상기 암호학적 해시 출력이 모두 상기 비밀 값에 적어도 부분적으로 기초하여 결정된다는 입증(attestation)을 생성하는 단계;
    상기 암호학적 해시 출력 및 상기 입증을 상기 작업자 컴퓨터 시스템에 제공― 상기 작업자 컴퓨터 시스템은 상기 입증을 사용하여 상기 암호화된 비밀 값 및 상기 암호학적 해시 출력이 동일한 값에 적어도 부분적으로 기초하는지의 여부를 판정하도록 동작 가능함 ―하는 단계를 더 포함하는
    방법.
  3. 제2항에 있어서,
    상기 입증은 영-지식 증명(zero-knowledge proof)이며 상기 영-지식 증명의 정확성(correctness)은 상기 작업자 컴퓨터 시스템에 의해 계산적으로 검증 가능한
    방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 입력 값은 제1 입력 값이고, 상기 방법은, 상기 제1 입력 값이 부정확하다는 판정에 응답하여,
    상기 제1 입력 값에 적어도 부분적으로 기초하여 제2 입력 값을 계산하는 단계;
    상기 제2 입력 값을 상기 작업자 컴퓨터 시스템에 제공하는 단계; 및
    상기 작업자 컴퓨터 시스템이 상기 제2 입력 값을 사용하여 제3 프로그램을 실행했다는 판정에 응답하여, 상기 비밀 값을 상기 작업자 컴퓨터 시스템에 제공하는 단계를 더 포함하는
    방법.
  5. 제4항에 있어서,
    상기 제2 입력 값을 계산하는 단계는 해밍 거리(Hamming distance)를 계산하는 단계를 포함하는
    방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    제2 입증을 취득― 상기 제2 입증은 상기 작업자 컴퓨터 시스템과 데이터 소스 사이의 통신 세트를 포함하고, 상기 통신 세트는 상기 입력 값이 유효한지의 여부를 판정하는 데 사용 가능하며, 상기 제2 입증은 상기 데이터 소스에 의해 디지털 서명됨 ―하는 단계;
    적어도 상기 데이터 소스와 연관되는 공개 키를 사용하여 상기 제2 입증의 진본성(authenticity)을 검증하는 단계; 및
    상기 통신 세트에 적어도 부분적으로 기초하여 상기 입력이 유효한지의 여부를 판정하는 단계를 더 포함하는
    방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제2 프로그램이 상기 블록체인 데이터 구조에 대하여 이용 가능해지게 하는 단계는 블록체인 트랜잭션이 상기 블록체인 데이터 구조에 대하여 채굴되게 하는 단계를 포함하고,
    상기 블록체인 트랜잭션은:
    상기 제2 프로그램을 결정하는 데 사용 가능한 정보; 및
    디지털 자산을 저당잡는 잠금 스크립트― 상기 잠금 스크립트 및 잠금 해제 스크립트를 총괄적으로 실행하는 것은 상기 디지털 자산에 대한 저당잡기를 해제하고, 상기 잠금 스크립트 및 상기 잠금 해제 스크립트를 총괄적으로 실행하는 것은 2개의 디지털 서명이 디지털 서명 세트로 이루어지는지를 검증하는 것을 포함함 ―를 포함하고;
    상기 디지털 서명 세트는:
    상기 컴퓨터-구현 방법을 수행하는 컴퓨팅 엔티티와 연관되는 디지털 서명;
    상기 작업자 컴퓨터 시스템과 연관되는 디지털 서명; 및
    상기 중재자 컴퓨터 시스템과 연관되는 디지털 서명을 포함하는
    방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 제1 프로그램의 실행은 디지털 자산의 제어를 상기 작업자 컴퓨터 시스템에 전송하는
    방법.
  9. 제4항에 있어서,
    상기 작업자 컴퓨터 시스템이 시간 임계치 내에서 상기 제2 입력 값을 사용하여 상기 제3 프로그램을 실행하는 데 실패했다는 판정에 응답하여, 제4 프로그램이 상기 블록체인 데이터 구조에 대하여 이용 가능― 상기 제4 프로그램은 상기 디지털 자산의 제어를 얻는 데 사용 가능함 ―해지게 하는 단계를 더 포함하는
    방법.
  10. 제9항에 있어서,
    상기 시간 임계치는 상기 제4 프로그램의 일부분을 포함하는 블록체인 트랜잭션이 상기 블록체인 데이터 구조에 대하여 채굴될 수 있는 가장 빠른 시간을 인코딩하는
    방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    디지털 서명을 생성하는 단계; 및
    상기 디지털 서명을 잠금 해제 스크립트에 대하여 인코딩― 상기 잠금 해제 스크립트는 또한 상기 작업자 컴퓨터 시스템과 연관되는 의도된 디지털 서명을 인코딩하고, 상기 제4 애플리케이션은 잠금 스크립트 및 상기 잠금 해제 스크립트를 포함하고, 상기 블록체인 데이터 구조와 연관되는 블록체인 네트워크의 하나 이상의 노드에 의한 상기 제4 프로그램의 실행은 상기 디지털 서명 및 상기 의도된 디지털 서명이 모두 유효함을 판정하는 것을 포함함 ―하는 단계를 더 포함하는
    방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 제1 애플리케이션은 잠금 스크립트 및 잠금 해제 스크립트를 포함하고, 상기 잠금 해제 스크립트는 상기 작업자 컴퓨터 시스템과 연관되는 의도된 비밀 값 및 의도된 디지털 서명을 인코딩하고;
    상기 블록체인 데이터 구조와 연관되는 블록체인 네트워크의 하나 이상의 노드에 의한 상기 제1 애플리케이션의 실행은 상기 의도된 비밀 값 및 상기 의도된 디지털 서명이 모두 유효함을 판정하는 것을 포함하는
    방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 잠금 스크립트는 상기 암호학적 해시 출력을 포함하고, 상기 의도된 비밀 값이 유효함을 판정하는 것은,
    상기 의도된 비밀 값을 사용하여 암호학적 해시 알고리즘의 출력을 계산하는 것; 및
    상기 출력 및 상기 암호학적 해시 출력이 일치함을 판정하는 것을 포함하는
    방법.
  14. 시스템으로서,
    프로세서; 및
    상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금 제1항 내지 제13항 중 어느 한 항에 기재된 컴퓨터-구현 방법을 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는
    시스템.
  15. 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템으로 하여금 제1항 내지 제13항 중 어느 한 항에 기재된 컴퓨터-구현 방법을 적어도 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터-판독 가능 저장 매체.
KR1020207014130A 2017-11-09 2018-10-30 중재자 컴퓨터 시스템을 이용하여 컴퓨터 프로그램의 정확한 실행을 보장하기 위한 시스템 및 방법 KR20200080263A (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
GBGB1718505.9A GB201718505D0 (en) 2017-11-09 2017-11-09 Computer-implemented system and method
GB1718505.9 2017-11-09
GBGB1719998.5A GB201719998D0 (en) 2017-11-30 2017-11-30 Computer-Implemented system and method
GB1719998.5 2017-11-30
GBGB1720768.9A GB201720768D0 (en) 2017-12-13 2017-12-13 Computer-implemented system and method
GB1720768.9 2017-12-13
GB1720946.1 2017-12-15
GBGB1720946.1A GB201720946D0 (en) 2017-12-15 2017-12-15 Computer-implemented system and method
GB1805948.5 2018-04-10
GBGB1805948.5A GB201805948D0 (en) 2018-04-10 2018-04-10 Computer-implemented system and method
GB1806444.4 2018-04-20
GBGB1806444.4A GB201806444D0 (en) 2018-04-20 2018-04-20 Computer-implemented system and method
PCT/IB2018/058491 WO2019092552A1 (en) 2017-11-09 2018-10-30 Systems and methods for ensuring correct execution of computer program using a mediator computer system

Publications (1)

Publication Number Publication Date
KR20200080263A true KR20200080263A (ko) 2020-07-06

Family

ID=64267869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207014130A KR20200080263A (ko) 2017-11-09 2018-10-30 중재자 컴퓨터 시스템을 이용하여 컴퓨터 프로그램의 정확한 실행을 보장하기 위한 시스템 및 방법

Country Status (8)

Country Link
US (2) US11546162B2 (ko)
EP (1) EP3707872A1 (ko)
JP (2) JP7208990B2 (ko)
KR (1) KR20200080263A (ko)
CN (2) CN118041602A (ko)
SG (1) SG11202004150XA (ko)
TW (1) TWI770307B (ko)
WO (1) WO2019092552A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11151558B2 (en) 2018-12-12 2021-10-19 American Express Travel Related Services Company, Inc Zero-knowledge proof payments using blockchain
US11699203B2 (en) 2019-02-20 2023-07-11 Aon Risk Services, Inc. Of Maryland Digital property authentication and management system
US11182866B2 (en) * 2019-02-20 2021-11-23 Aon Risk Services, Inc. Of Maryland Digital property authentication and management system
EP3702951A1 (de) * 2019-03-01 2020-09-02 Siemens Aktiengesellschaft Computerimplementiertes verfahren und blockchain-system zur erkennung eines angriffs auf ein computersystem bzw. computernetzwerk
GB201907347D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd In-script functions within a blockchain transaction
EP3754899B1 (en) * 2019-06-20 2022-03-02 Telefónica Iot & Big Data Tech, S.A. Method and system for inter-dlt networks trust enhancement
WO2019170171A2 (en) 2019-06-26 2019-09-12 Alibaba Group Holding Limited Improved anti-replay device based on memory space interchange
CN110413345A (zh) * 2019-07-26 2019-11-05 云湾科技(嘉兴)有限公司 程序验证方法、装置、计算设备及计算机存储介质
CN110532036A (zh) * 2019-07-26 2019-12-03 云湾科技(嘉兴)有限公司 程序验证方法、装置、计算设备及计算机存储介质
GB201913143D0 (en) * 2019-09-12 2019-10-30 Nchain Holdings Ltd Running a program from a blockchain
US11245514B1 (en) * 2019-10-15 2022-02-08 ArcBlock, Inc Blockchain delegation
JP7284064B2 (ja) * 2019-10-16 2023-05-30 株式会社日立製作所 コンソーシアムブロックチェーンシステム、計算機、トランザクション承認方法
KR102103177B1 (ko) * 2019-11-20 2020-04-22 충남대학교 산학협력단 블록체인의 확장성을 위한 영지식 증명의 선택적 검증 시스템 및 그 방법
KR102103179B1 (ko) * 2019-11-25 2020-04-22 충남대학교 산학협력단 블록체인 오라클에서의 프라이버시 보호를 위한 영지식 증명 시스템 및 그 방법
US20210374731A1 (en) * 2020-05-26 2021-12-02 Coinbase, Inc. Systems and methods for consensus-based access control for smart contract functions
CN112636928B (zh) * 2020-12-29 2023-01-17 广东国腾量子科技有限公司 一种基于区块链的去中心化可信认证方法、存储装置及移动终端
TWI807479B (zh) * 2021-11-11 2023-07-01 財團法人國家實驗研究院 Qap型式同態加密中的半公鑰系統設計的方法
US11882216B1 (en) * 2023-06-08 2024-01-23 Auradine, Inc. End-to-end hardware acceleration for ZKP from witness generation to proof generation

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667290A (en) 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
JPH03126133A (ja) 1989-10-11 1991-05-29 Matsushita Electric Ind Co Ltd コンパイラ処理方法
US5499191A (en) 1992-06-15 1996-03-12 Minc Incorporated Multi-level logic optimization in programmable logic devices
US5297150A (en) 1992-06-17 1994-03-22 International Business Machines Corporation Rule-based method for testing of programming segments
US5920830A (en) 1997-07-09 1999-07-06 General Electric Company Methods and apparatus for generating test vectors and validating ASIC designs
US6519754B1 (en) 1999-05-17 2003-02-11 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
EP1283422A1 (en) 2001-08-07 2003-02-12 Lucent Technologies Inc. Testbench for the validation of a device under test
US7085701B2 (en) 2002-01-02 2006-08-01 International Business Machines Corporation Size reduction techniques for vital compliant VHDL simulation models
US7281017B2 (en) 2002-06-21 2007-10-09 Sumisho Computer Systems Corporation Views for software atomization
US20050195975A1 (en) * 2003-01-21 2005-09-08 Kevin Kawakita Digital media distribution cryptography using media ticket smart cards
US7610407B2 (en) * 2003-12-11 2009-10-27 Hewlett-Packard Development Company, L.P. Method for exchanging information between at least two participants via at least one intermediary to limit disclosure between the participants
US8234638B2 (en) * 2004-12-28 2012-07-31 Hercules Software, Llc Creating a relatively unique environment for computing platforms
US20160004820A1 (en) 2005-02-01 2016-01-07 Newsilike Media Group, Inc. Security facility for maintaining health care data pools
US8200700B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
TW200725415A (en) 2005-12-30 2007-07-01 Tatung Co Ltd Method for automatically translating high level programming language into hardware description language
US7926040B2 (en) * 2006-09-06 2011-04-12 International Business Machines Corporation Method and system for timing code execution in a korn shell script
JP5141558B2 (ja) 2006-10-30 2013-02-13 日本電気株式会社 共通鍵ブロック暗号化装置、その方法、そのプログラム、及び記録媒体
AU2015261664B2 (en) * 2007-09-14 2016-07-14 Security First Corp. Systems and Methods for Managing Cryptographic Keys
US8543885B2 (en) * 2007-11-18 2013-09-24 Lg Electronics Inc. Methods of joint coding in mobile communication system
US8336036B2 (en) 2008-11-21 2012-12-18 Korea University Industrial & Academic Collaboration Foundation System and method for translating high programming level languages code into hardware description language code
US9846628B2 (en) * 2010-06-15 2017-12-19 Microsoft Technology Licensing, Llc Indicating parallel operations with user-visible events
JP5697153B2 (ja) 2011-08-04 2015-04-08 キヤノンマーケティングジャパン株式会社 情報処理システム、携帯端末、制御方法、及びプログラム
US20140321644A1 (en) 2013-04-29 2014-10-30 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of National Defence Method and system for calculations on encrypted data
US9026978B1 (en) 2013-10-24 2015-05-05 Cadence Design Systems, Inc. Reverse interface logic model for optimizing physical hierarchy under full chip constraint
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
US11196566B2 (en) * 2014-05-09 2021-12-07 Reginald Middleton Devices, systems, and methods for facilitating low trust and zero trust value transfers
US10320781B2 (en) 2016-12-08 2019-06-11 Sensoriant, Inc. System and methods for sharing and trading user data and preferences between computer programs and other entities while preserving user privacy
US10025926B2 (en) * 2014-11-19 2018-07-17 The Mitre Corporation Side-channel leakage evaluator and analysis kit
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
PL3073670T4 (pl) 2015-03-27 2021-08-23 Black Gold Coin, Inc. System i sposób osobistej identyfikacji i weryfikacji
US10911235B2 (en) 2015-03-31 2021-02-02 Nec Corporation Method for verifying information
US10812274B2 (en) * 2015-05-07 2020-10-20 Blockstream Corporation Transferring ledger assets between blockchains via pegged sidechains
JP2017004044A (ja) * 2015-06-04 2017-01-05 富士通株式会社 ライセンス管理プログラム、ライセンス管理方法、およびライセンス管理システム
CN106293892B (zh) 2015-06-26 2019-03-19 阿里巴巴集团控股有限公司 分布式流计算系统、方法和装置
EP3320475B1 (en) * 2015-07-10 2020-03-04 Nec Corporation A method and a system for reliable computation of a program
CN108140180A (zh) * 2015-07-28 2018-06-08 雷蛇(亚太)私人有限公司 用于奖励产生分布式数字资源场的服务器及控制用于奖励产生分布式数字资源场的服务器的方法
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
US20180331832A1 (en) 2015-11-05 2018-11-15 Allen Pulsifer Cryptographic Transactions System
US10269012B2 (en) 2015-11-06 2019-04-23 Swfl, Inc. Systems and methods for secure and private communications
US10048952B2 (en) 2015-11-11 2018-08-14 Oracle International Corporation Compiler optimized data model evaluation
FR3043811B1 (fr) 2015-11-16 2017-11-10 Morpho Procede d'identification d'une entite
US11423498B2 (en) 2015-12-16 2022-08-23 International Business Machines Corporation Multimedia content player with digital rights management while maintaining privacy of users
US9715373B2 (en) 2015-12-18 2017-07-25 International Business Machines Corporation Dynamic recompilation techniques for machine learning programs
US10044696B2 (en) * 2015-12-22 2018-08-07 Mcafee, Llc Simplified sensor integrity
US9483596B1 (en) 2016-01-08 2016-11-01 International Business Machines Corporation Multi power synthesis in digital circuit design
US10108812B2 (en) * 2016-01-28 2018-10-23 Nasdaq, Inc. Systems and methods for securing and disseminating time sensitive information using a blockchain
US9849364B2 (en) * 2016-02-02 2017-12-26 Bao Tran Smart device
AU2017222471B2 (en) * 2016-02-23 2022-09-01 nChain Holdings Limited A method and system for securing computer software using a distributed hash table and a blockchain
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
EP3862947A1 (en) 2016-03-03 2021-08-11 NEC Laboratories Europe GmbH Method for managing data in a network of nodes
US11017387B2 (en) * 2016-03-24 2021-05-25 International Business Machines Corporation Cryptographically assured zero-knowledge cloud services for elemental transactions
US11017388B2 (en) 2016-03-25 2021-05-25 International Business Machines Corporation Cryptographically assured zero-knowledge cloud service for composable atomic transactions
US10839096B2 (en) 2016-03-28 2020-11-17 International Business Machines Corporation Cryptographically provable zero-knowledge content distribution network
AU2017240796A1 (en) 2016-03-31 2018-10-25 Clause, Inc. System and method for creating and executing data-driven legal contracts
WO2017175073A1 (en) 2016-04-05 2017-10-12 Vchain Technology Limited Method and system for managing personal information within independent computer systems and digital networks
US10545739B2 (en) 2016-04-05 2020-01-28 International Business Machines Corporation LLVM-based system C compiler for architecture synthesis
KR102608099B1 (ko) * 2016-04-11 2023-12-01 엔체인 홀딩스 리미티드 블록체인에서 안전한 피어-투-피어 통신을 위한 방법
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
US10046228B2 (en) 2016-05-02 2018-08-14 Bao Tran Smart device
US20170337319A1 (en) 2016-05-20 2017-11-23 Ecole polytechnique fédérale de Lausanne (EPFL) System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths
CN107438002B (zh) 2016-05-27 2022-02-11 索尼公司 基于区块链的系统以及系统中的电子设备和方法
US10447478B2 (en) 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
FR3052286B1 (fr) 2016-06-06 2018-06-15 Morpho Procede de verification d'un droit d'acces d'un individu
US20180018738A1 (en) * 2016-07-14 2018-01-18 Digital Asset Holdings Digital asset platform
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
JP6644195B1 (ja) 2017-01-06 2020-02-12 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 認証されたデータ上のピノキオ/トリノキオ
WO2018127446A1 (en) 2017-01-06 2018-07-12 Koninklijke Philips N.V. Distributed privacy-preserving verifiable computation
CN107274184A (zh) 2017-05-11 2017-10-20 上海点融信息科技有限责任公司 基于零知识证明的区块链数据处理
CN107179932A (zh) 2017-05-26 2017-09-19 福建师范大学 基于fpga高层次综合指令的优化方法及其系统
US10333710B2 (en) 2017-09-12 2019-06-25 Qed-It Systems Ltd. Method and system for determining desired size of private randomness using Tsallis entropy
GB201715423D0 (en) * 2017-09-22 2017-11-08 Nchain Holdings Ltd Computer-implemented system and method
US10521616B2 (en) * 2017-11-08 2019-12-31 Analog Devices, Inc. Remote re-enrollment of physical unclonable functions

Also Published As

Publication number Publication date
US11546162B2 (en) 2023-01-03
SG11202004150XA (en) 2020-06-29
JP2023036963A (ja) 2023-03-14
TWI770307B (zh) 2022-07-11
US20210226795A1 (en) 2021-07-22
WO2019092552A1 (en) 2019-05-16
US20230216833A1 (en) 2023-07-06
EP3707872A1 (en) 2020-09-16
CN111316615B (zh) 2024-02-13
JP2021502750A (ja) 2021-01-28
CN118041602A (zh) 2024-05-14
TW201924278A (zh) 2019-06-16
CN111316615A (zh) 2020-06-19
JP7208990B2 (ja) 2023-01-19

Similar Documents

Publication Publication Date Title
US20230216833A1 (en) Systems and methods for ensuring correct execution of computer program using a mediator computer system
JP7285840B2 (ja) プルーフ検証に基づいてオフ・チェーン・データを認証するシステム及び方法
US20230318805A1 (en) System for securing verification key from alteration and verifying validity of a proof of correctness
JP7284747B2 (ja) 分散協調を用いるスマートコントラクトの実行
TW202414256A (zh) 基於證明驗證之認證資料饋入

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal