KR102542981B1 - 분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템 - Google Patents

분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템 Download PDF

Info

Publication number
KR102542981B1
KR102542981B1 KR1020187034208A KR20187034208A KR102542981B1 KR 102542981 B1 KR102542981 B1 KR 102542981B1 KR 1020187034208 A KR1020187034208 A KR 1020187034208A KR 20187034208 A KR20187034208 A KR 20187034208A KR 102542981 B1 KR102542981 B1 KR 102542981B1
Authority
KR
South Korea
Prior art keywords
contract
user
transaction
person
distributed ledger
Prior art date
Application number
KR1020187034208A
Other languages
English (en)
Other versions
KR20190004310A (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
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20190004310A publication Critical patent/KR20190004310A/ko
Application granted granted Critical
Publication of KR102542981B1 publication Critical patent/KR102542981B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/385Payment protocols; Details thereof using an alias or single-use codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

스마트 계약의 실행을 제어하는 컴퓨터로 구현된 방법 100 및 시스템 1. 상기 방법은 컴퓨터 기반의 저장소 내에 또는 상에 계약을 저장하는 단계를 포함한다. 상기 계약은 제1 사용자(U1)과 제2 사용자(U2) 사이의 라이선스와 관련이 있다. 상기 방법은 에이전트(A)로부터 제1 사용자(U1) 또는 제2 사용자(U2)로 토큰의 전송을 포함하는 거래를 통신 네트워크를 통해 수신하는 단계를 더 포함한다. 거래는 계약이 저장되는 위치를 나타내는 식별자를 포함하는 메타데이터를 포함한다. 상기 방법은 거래가 적어도 하나의 미사용 출력(UTXO)를 포함하는지 여부를 결정하도록 개인대개인 분산 대장(예로, 블록체인)에 질의하는 단계를 더 포함한다. 상기 방법은 개인대개인 분산 대장에 질의하는 것에 응답하여 계약의 실행을 변형하는 여부를 결정하는 단계를 더 포함할 수 있다. 블록체인은 비트코인 블록체인일 수 있다.

Description

분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템
본 발명은 컴퓨터 소프트웨어를 보안하고 분산 해시 테이블 및 개인대개인 분산 대장을 사용하여 컴퓨터 소프트웨어에 접근을 허가하는 방법에 관한 것이다.
이 문서에서는 전자, 컴퓨터 기반, 분산 대장의 모든 형태를 포함하는 '블록체인(blockchain')이라는 용어를 사용한다. 여기에는 합의(consensus) 기반 블록체인 및 거래체인(transaction-chain) 기술, 허가된 및 허가되지 않은 대장, 공유된 대장 및 그 변형을 포함한다. 다른 블록체인 구현이 제안되고 개발되었지만, 블록체인 기술의 가장 널리 알려진 어플리케이션은 비트코인 대장이다. 비트코인은 본 명세서에서 편의상 및 설명을 위해 언급될 수 있지만, 본 발명은 블록체인과 함께 사용하는 것으로 제한되지 않으며, 다른 블록체인 구현 및 프로토콜도 본 발명의 범위 내에 속한다는 것을 알아야 한다. "사용자"라는 용어는 여기에서 인간 또는 프로세서 기반 리소스(processor-based resource)를 가르킬 수 있다.
블록체인은 개인대개인 전자 대장으로서, 거래(transactions)을 구성하는 블록으로 이루어진 컴퓨터 기반의 분산형 분산 시스템(distributed system)으로 구현된다. 각 거래는 블록체인 시스템의 참여자 사이에서 디지털 자산의 제어 전송을 인코딩하는 데이터 구조이며, 최소한 하나의 입력과 하나 이상의 출력을 포함한다. 각 블록은 이전 블록의 해시를 포함하여 해당 블록이 서로 연결되어 영구적이며 변경 불가능한 모든 거래의 기록을 생성하고, 이 거래는 처음부터 블록체인에 기록딘다. 거래는 입력 및 출력에 임베디드된(embedded) 스크립트라고 알려진 작은 프로그램을 포함하며, 이는 거래의 출력이 접근(access)될 수 있는 방법 및 사용자를 구체화한다. 비트코인 플랫폼 상에서, 이러한 스크립트는 스택 기반 스크립팅 언어(stack-based scripting language)를 사용하여 작성된다.
블록체인에 거래를 기록하기 위해서는 거래가 "유효화(validated)"되어야 한다. 네트워크 노드(채굴자(miners))는 네트워크로부터 유효하지 않은 거래를 거부하여 각 거래가 유효한지 확인하는 작업을 수행한다. 노드 상에 설치된 소프트웨어 클라이언트는 잠금 및 잠금 해제 스크립트를 실행하여 사용되지 않은 거래(unspent transaction, UTXO)에 대한 검증 작업(validation work)를 수행한다. 잠금 및 잠금해제 스크립트의 실행이 TRUE로 평가되면, 거래가 유효하며 블록체인에 기록된다. 따라서 거래를 블록체인에 쓰기 위해서, i) 거래를 수신하는 제1 노드에 의해 유효성이 검사되어야 한다 - 거래가 유효화되면, 노드는 네트워크의 다른 노드로 릴레이한다; 그리고 ii) 채굴자에 의해 만들어진 새로운 블록에 추가되고, iii) 채굴, 즉 과거 거래의 공개 대장에 추가된다.
블록체인 기술이 암호화폐 실행의 이용으로 가장 널리 알려져 있지만, 디지털 기업들은 비트코인이 기반인 암호화폐 보안 시스템과 새로운 시스템을 구현하기 위해 블록체인 상에 저장될 수 있는 데이터의 사용을 모색하기 시작했다. 블록체인이 암호화폐의 범위에 제한되지 않는 자동화된 작업 및 프로세스에 사용될 수 있다면 매우 유용할 것이다. 이러한 해결책은 블록체인의 이점(예로, 영구적이고, 쉽게 변경할 수 없는 이벤트 기록(tamper proof records of events), 분산 처리(processing) 등)을 활용할 수 있을 뿐만 아니라, 해당 어플리케이션(application)에서 보다 다목적일 수 있다.
현재 연구 분야 중 하나는 "스마트 계약(smart contracts)"를 구현하기 위한 블록체인의 사용이다. 이들은 약정(agreement) 또는 계약과 같은 기계 가독성 문서의 조건(terms)의 실행을 자동화하도록 설계된 컴퓨터 프로그램이다. 자연어(natural language)로 작성된 기존 계약과 달리, 스마트 계약은 결과를 산출하기 위해 입력을 처리할 수 있는 규칙을 포함하는 기계 실행가능 프로그램으로, 결과에 따라 조치(actions)이 수행을 야기할 수 있다.
블록체인과 관련된 또 다른 영역은 블록체인을 통해 실제 세계 엔터티(entities)를 표현하고 전달하기 위한 '토큰(tokens)'을 사용하는 것이다. 잠재적으로 민감하거나 또는 비밀스러운 항목이 식별할 수 없는 의미 또는 가치 없는 토큰으로서 나타날 수 있다. 따라서 토큰은 실제 세계 항목을 블록체인으로부터 참조될 수 있게 해주는 식별자 역할을 한다.
이러한 기술 연구 분야는 예를 들어 소프트웨어와 같은 디지털 자산의 제어와 관련하여 유리하게 적용될 수 있다. 컴퓨터 소프트웨어의 무결성과 공유를 보장하기 위한 기존의 접근 방식은 컴퓨터 소프트웨어의 실행 파일에 디지털 서명을 포함한다. 예를 들어, 공개키 및 개인키와 같은 암호화 키 쌍으로 실행 파일이나 기타 관련 코드에 서명한다. 공개키는 종종 인증 기관과 같은 신뢰할 수 있는 중앙 기관으로부터 얻어진다.
컴퓨터 소프트웨어는 종종 계약 상의 의무(contractual obligations)을 포함하는 라이선스를 수반한다. 라이선스는 소프트웨어의 사용 또는 재배포를 규율하는 조건을 포함할 수 있다. 컴퓨터 소프트웨어 또는 관련 라이선스가 불법적으로 다른 사용자에게 양도되는 경우 이슈가 발생할 수 있다.
본 명세서에 포함된 문서, 행위, 재료, 장치, 완제품 등의 논의는 이러한 것들 중 일부 또는 전부가 선행기술의 일부를 이루는 것의 승인이나, 이 출원의 각각의 청구항의 우선권 날짜 이전에 존재하였던 본 개시와 관련된 분야의 일반적인 지식으로 간주되어서는 안된다.
본 명세서 전반에 걸쳐 "포함하는"이라는 단어 또는 "포함하다"또는 "포함하는"과 같은 변형은 명시된 구성요소, 정수 또는 단계, 구성요소, 정수 또는 단계의 그룹을 포함하는 것을 의미하는 것으로 이해되어야 하고, 정수 또는 단계 또는 구성요소, 정수(integers) 또는 단계 그룹을 배제하는 것이 아니다.
특허문헌 1(등록특허공보 제10-1342258호) 특허문헌 2(미국 특허출원공개공보 US2015/0379510호)
본 발명은 컴퓨터 구현된 제어 방법을 포함할 수 있다. 컴퓨터 실행된 프로세스의 실행(performance)을 제어하도록 구성될 수 있다. 프로세스는 계약에 의해 구체화될 수 있다. 계약은 기계에 실행가능한 문서인 스마트 계약일 수 있다. 용어 "사용자(user)"는 인간 사용자 또는 기계(컴퓨터)를 지칭하기 위해 본 명세서에서 사용될 수 있다. 추가적으로 또는 선택적으로, 본 발명은 보안 솔루션(방법/시스템)을 제공하는 것으로 설명될 수 있다. 통제된 자원 또는 디지털 자산의 무결성을 보존하도록 조정될 수 있다. 제어된 자원 또는 디지털 자산의 전송을 제어하도록 조정될 수 있다. 자원 또는 자산은 소프트웨어일 수 있다.
상기 방법은 제1 사용자와 제2 사용자 사이의 라이선스와 관련된 계약을 컴퓨터 기반 저장소(repository) 상에 또는 내부에 상기 계약을 저장하는 단계; 에이전트(A)에서 상기 제1 사용자(U1) 또는 상기 제2 사용자(U2)로 토큰의 전송을 포함하는 거래를 통신 네트워크를 통해 수신하는 단계; 거래가 적어도 하나의 미사용(unspent) 출력(UTXO)을 포함하는지 여부를 결정하도록 개인대개인(peer-to-peer) 분산 대장(distributed ledger)에 질의하는 단계; 및 상기 개인대개인 분산 대장에 질의하는 단계에 응답하여 상기 계약의 실행을 변형할지 여부를 결정하는 단계;를 포함하고, 상기 거래는 상기 계약이 저장된 위치를 나타내는 식별자를 포함하는 메타데이터를 포함한다.
미사용 출력(UTXO)는 계약의 대표를 포함할 수 있다. 개인대개인 분산 대장에 질의하는 단계는 개인대개인 분산 대장(블록체인)에 계약을 나타내는 적어도 하나의 미사용 출력(UTXO)를 스캐닝하는 단계를 포함할 수 있다. 상기 계약은 제1 및 제2 사용자 사이의 라이선스와 연관될 수 있다.
거래는 결정론적 상환 스크립트 주소를 더 포함할 수 있다. 상기 상환 스크립트 주소는 페이 투 스크립트 해시(P2SH) 주소일 수 있다. 따라서 계약(또는 계약 내에서 정의된 요소)의 존재는 계약의 발행자 및/또는 계약의 메타데이터에 의해 결정되거나 제공된 페이투 스크립트 해시 주소를 사용하여 개인대개인 분산 대장(예를 들어, 블록 체인)에 게시된 거래를 사용하여 공개적으로 사용할 수 있다.
상기 결정하는 단계는, 상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장으로부터 식별될 수 없는 경우에 계약을 종료하는 단계; 또는 상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장으로부터 식별되는 경우에 상기 계약을 유지하는 단계를 포함할 수 있다.
상기 계약을 종료하는 단계는 상기 적어도 하나의 미사용 출력(UTXO)을 소비하기 위한 추가 거래를 퍼뜨리는 단계를 포함할 수 있다. 또한, 상기 추가 거래를 퍼뜨리는 단계에서,
상기 추가 거래는 지정된 데이터 및/또는 시간에 적어도 하나의 미사용 출력(UTXO)을 소비하라는 명령을 포함할 수 있다. 예를 들어, 상기 명령은 CheckLockTimeVerify 명령일 수 있다.
상기 추가 거래는 상기 적어도 하나의 미사용 출력(UTXO)인 입력; 및 서명, 상기 메타데이터, 상기 에이전트와 연관된 에이전트 공개키(PA) 및 상기 제1 사용자(U1)와 연관된 제1 사용자 공개키(PU1)를 포함하는 상환 스크립트를 포함할 수 있다. 이는 P2P(개인대개인) 분산 대장 상에 미사용 출력(UTXO)을 보내기 위한 거래를 구현함으로써 계약의 종료 및 라이선스의 이점을 제공한다.
상기 계약은 적어도 하나의 조건을 정의하고, 상기 적어도 하나의 조건은 상기 제1 사용자(U1)와 상기 제2 사용자(U2) 사이에서 라이선스의 동작에 관련되고, 그리고 적어도 하나의 행동의 실행이 상기 조건의 평가에 의존한다. 조건은 참(True) 또는 거짓(false)로 평가할 수 있는 테스트일 수 있다. 조건은 계약의 일부(예를 들어, 조항(clause)일 수 있다. 계약의 이행을 위해 조건의 완료 또는 이행이 필요할 수 있다. 그것이 참으로 평가되면 조건은 완료될 수 있다.
메타데이터는 계약이 컴퓨터 기반 저장소에 저장되는 주소의 주소 또는 표현 및/또는 계약의 해시를 포함할 수 있다.
상기 개인대개인 분산 대장에 질의하는 단계는 상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장을 위한 미사용 거래 출력의 리스트에 존재하는지 여부를 결정함으로써 상기 계약이 종료되었는지 여부를 검사하는 단계를 더 포함할 수 있다.
컴퓨터 기반 저장소는 서버를 포함하거나 서버일 수 있다. 저장소는 컴퓨터 기반 리소스 상에 제공된 저장 장치 또는 데이터 베이스일 수 있다. 저장소는 인덱스되고(indexed) 검색되도록 허용할 수 있다. 저장소는 DHT(Distributed Hash Table)를 포함할 수 있다. 계약은 DHT에 또는 DHT와 관련하여 저장될 수 있다.
계약은 계약을 이행하기 위한 결정성 유한 오토메이션(Deterministic Finite Automation, DFA)을 포함할 수 있다. 또한, 결정성 유한 오토메이션(DFA)는 코드 체계를 이용하여 정의될 수 있다.
상기 방법은 상기 계약을 갱신하는 단계는 상기 계약과 연관된 이전 키와 관련된 서브키를 생성하는 단계; 상기 서브키, 상기 계약의 위치 및 상기 계약의 해시를 포함하는 추가 상환 스크립트를 생성하는 단계; 및 상기 추가 상환 스크립트에 암호화폐의 양(C)을 지불하는 단계에 의해 실행됨으로써 (by performing) 상기 계약을 갱신(renewing)하는 단계를 더 포함할 수 있다.
상기 방법은 상기 계약으로부터 유래된(derived) 하위 계약을 생성하는 단계를 더 포함하고, 상기 하위 계약은 결정적 주소와 연관되고, 시드(seed)를 사용하여 유래된(derived) 새로운 공개키를 사용하는 단계; 상기 계약에 대한 참조로 상기 컴퓨터 기반 저장소 내에 또는 상에 상기 하위 계약을 저장하는 단계; 상기 계약에 대한 참조를 포함하는 상기 하위 계약 거래를 상기 개인대개인 분산 대장으로 퍼뜨리는 단계; 및 상기 계약과 연관된 메타데이터에 상기 하위 계약에 대한 참조를 추가하는 단계에 의해 실행되어 생성된다.
상기 제1 사용자(U1)과 상기 제2 사용자(U2) 사이의 라이선스는 컴퓨터 소프트웨어; 및 음악, 비디오 및 전자 서적을 포함하는 디지털 미디어(digital media) 중 하나 이상과 관련될 수 있다.
개인대개인 분산 대장은 블록체인일 수 있다. 또한, 암호화폐는 비트코인일 수 있다.
본 발명은 또한 상기 언급된 본 발명의 모든 실시예를 수행하도록 구성된 컴퓨터 구현된 시스템을 포함할 수 있다.
처리 장치가 상술한 방법을 실행하게 하는 기계 판독 가능한 명령어를 포함하는 컴퓨터 소프트웨어 프로그램.
본 발명은 상술한 방법의 모든 실시예에 대응하는 컴퓨터 시스템을 포함할 수 있다. 상기 방법은 (스마트) 계약에서 정의된 바와 같이 컴퓨터 실행된 프로세스의 실행을 제어하도록 구성될 수 있다.
상기 시스템은 제1 사용자와 제2 사용자 사이의 라이선스와 관련된 계약을 컴퓨터 기반 저장소(repository) 상에 또는 내부에 상기 (스마트) 계약을 저장하고, 에이전트(A)에서 상기 제1 사용자(U1) 또는 상기 제2 사용자(U2)로 토큰의 전송을 포함하는 거래를 통신 네트워크를 통해 수신하고, 거래가 적어도 하나의 미사용(unspent) 출력(UTXO)을 포함하는지 여부를 결정하도록 개인대개인(peer-to-peer) 분산 대장(distributed ledger)에 질의하고, 그리고 상기 개인대개인 분산 대장에 질의하는 단계에 응답하여 상기 계약의 실행을 변형할지 여부를 결정하며, 상기 거래는 상기 계약이 저장된 위치를 나타내는 식별자를 포함하는 메타데이터를 포함하는 처리 장치를 포함할 수 있다.
미사용 출력(UTXO)은 계약의 표현을 포함할 수 있다. 개인대개인 분산 대장(블록체인)에 질의하는 단계(Querying)는 계약을 대표하는 적어도 하나의 미사용 출력(UTXO)를 거래가 포함하는지 여부를 결정하도록 개인대개인 분산 대장(블록체인)을 스캐닝하는 단계(scanning)를 포함할 수 있다.
하나의 양태 또는 실시예와 관련하여 상술한 임의의 특징은 임의의 다른 양상 또는 실시예와 관련하여 사용될 수 있다. 본 발명의 시스템과 관련하여 설명된 임의의 특징은 상응하는 방법에 적용될 수 있고 그 반대일 수도 있다.
P2P(개인대개인) 분산 대장 상에 미사용 출력(UTXO)을 보내기 위한 거래를 구현함으로써 계약의 종료 및 라이선스의 이점을 제공한다.
도 1은 해시 테이블의 예를 도시한다.
이하 본 발명의 실시예를 설명한다.
도 2는 분산 해시 테이블을 사용하여 컴퓨터 소프트웨어를 보안하기 위한 메타데이터(M)을 결정하기 위한 예시적 시스템의 개략도를 도시한다.
도 3은 분산 해시 테이블을 사용하여 컴퓨터 소프트웨어를 보안하기 위한 메타데이터(M)를 결정하기 위한 컴퓨터 구현 방법의 흐름도를 도시한다.
도 4는 머클 트리(Merkle Tree)의 예를 도시한다.
도 5는 컴퓨터 소프트웨어 및 컴퓨터 소프트웨어와 관련된 라이선스를 참조하여 머클 트리의 예를 도시한다.
도 6은 분산 해시 테이블을 사용하여 컴퓨터 소프트웨어의 위치를 나타내는 식별자를 결정하기 위한 컴퓨터 구현된 방법의 흐름도를 도시한다.
도 7은 예시적인 처리 장치의 개략도를 도시한다. 그리고
도 8은 분산 해시 테이블 및 개인대개인 분산 대장을 사용하여 계약의 성능을 제어하는 컴퓨터 구현된 방법의 흐름도를 도시한다.
본 발명은 일반적으로 컴퓨터 소프트웨어에 대한 접근(access)를 보안하고 허가하는 것을 가능하도록 비트코인 블록체인과 같은 개인대개인(peer-to-peer,P2P) 분산 대장(블록체인(blockchain)) 및 분산 해시 테이블을 이용하는 방법 및 시스템에 관한 것이다.
후술되는 실시예들은 비트코인 블록체인(여기서 블록체인이라 칭함) 상에서 발생하는 거래를 구체적으로 지칭할 수 있지만, 본 발명은 다른 P@P 분산 대장을 사용하여 구현될 수 있음을 이해해야 한다. 블록체인은 표준화(standardisation) 수준이 높고 관련 공개문서가 많기 때문에 단순화를 위해 본 발명의 측면을 설명하기 위해 아래에서 사용된다.
분산 해시 테이블(distributed hash table)
전형적인 클라이언트/서버(client/server) 모델에서, 중앙 서버(central server)는 대다수의 지원을 담당할 수 있다. 즉, 중앙 서버에서 공격 또는 실패가 발생하면 중앙 서버에 저장된 대부분의 리소스가 손상될 수 있다(compromise). 반대로, 분산 모델에서는 자원이 참여 노드(participating nodes) 사이에 공유된다. 이러한 방식으로, 모든 참여 노드의 용량이 활용되면, 한 서버의 실패로 대부분의 리소스가 손상되지 않는다.
도 1은 해시 테이블의 예를 도시한다. 해시 테이블은 키-값 쌍으로 구성된다. 각 키-값 쌍의 키는 해시 함수를 통해 인덱스에 매핑된다(mapped). 인덱스는 키-값 쌍들의 저장된 값의 위치를 정의한다.
DHT는 분산 모델을 해시 테이블에 적용한 예이다. 해시 테이블과 마찬가지로, DHT는 키-값 쌍을 포함하며, 단지 키만 제공된 키-값 쌍의 값을 찾는("조회, lookup")하는 효율적인 방법을 제공한다. 그러나, 해시 테이블과 달리 키-값 쌍은 여러 참여 노드에서 분산되고 저장된다. 이러한 방식으로, 키-값 쌍을 저장하고 유지하는 책임은 참여 노드에 의해 공유된다.
해시 테이블과 동일한 방식으로 DHT에서 각 키-값 쌍은 인덱스에 매핑된다. 인덱스는 키 상의 해시 함수를 수행함으로써 각 키-값 쌍에 대해 결정된다. 예를 들어, 암호화(cryptographic) 보안 해시 알고리즘(Secure Hash Algorithm) SHA-!을 사용하여 인덱스를 결정할 수 있다.
각 참여 노드는 키 공간 분할(partitioning)에 의해 적어도 하나의 인덱스가 할당된다. 참여 노드가 할당된 각 색인에 대해 참여 노드는 해당 키-값 쌍의 값을 저장한다.
키-값 쌍의 값들이 효율적으로 검색될 수 있는 이점이 있다. 키와 연관된 값을 검색하기 위해, 노드는 (인덱스를 통해) 책임 노드(responsible node)를 결정하기 위해 "검색(lookup)"을 실행할 수 있다. 책임 노드는 그 다음 값을 결정하도록 액세스될 수 있다.
비트코인 및 블록체인(Bitcoin and the blockchain)
당해 기술 분야에서 잘 알려진 바와 같이, 블록체인은 저장 용량이 비트코인 프로토콜에 기초한 시스템에 참여하는 네트워크 노드를 통해 분산 데이터 베이스의 거래 유형 대장이다. 각 비트코인 거래는 네트워크로 퍼뜨리고(broadcast), 거래는 확인된 다음 블록들로 집계된다(aggregated). 그 다음 블록들은 여러 참여 노드에 블록을 저장하여 블록체인 상에 포함된다.
암호화폐(cryptocurrency)의 P2P 분산 대장은 암호화폐에서 실행된 모든 거래를 포함한다. 따라서 지속적으로 증가하는 거래 데이터 기록이 제공된다. 블록체인에 입력된 각 거래는 암호로 시행되기 때문에, 블록체인은 참여 노드의 운영자에 의한 변조(tampering) 및 수정(revision)에 대해 강화된다.
블록체인의 투명성으로 인해, 히스토리(histories)는 각각의 거래에 공개적으로 이용가능하다.
블록체인의 또 다른 이점은 거래의 기록이 동일하다는 것이다.
이러한 방식으로, 거래와 관련된 정보가 실제 거래에서 캡쳐된다(captured). 이러한 기록은 영구적이며 변경 불가능하므로, 제3 자가 거래 기록을 별도의 데이터 베이스에 보관해야 한다는 요구사항을 제거한다.
페이 투 스크립트 해시 및 복수-서명(multi-signature) 이하의 실시예는 비트코인 프로토콜의 페이투 스크립트 해시(P2SH) 방법을 사용하는 거래를 구체적으로 지칭할 수 있지만, 본 발명은 유료(pay-in) 프로토콜과 같은 비트코인 프로토콜의 다른 방법을 사용하여 구현될 수 있으며, 페이 투 공개키 해시(pay-to-public-key-hash) 방법을 사용한다.
블록체인 상의 각 거래 기록은 거래 및 공개키의 수를 나타내는 정보를 포함하는 스크립트를 포함한다. 이러한 공개키는 암호화폐의 발신자(sender)와 수신자(recipient)와 연관될 수 있다. 스크립트는 사용자가 거래 기록에서 구체화된 암호화폐에 접근을 얻는 방법을 설명하는 블록체인 상의 각 거래기록과 함께 기록된 명령 목록(list)로 간주될 수 있다. 스크립트는 암호화폐에 액세스하기 위한 요구사항(requirement) 예컨대, 요구 서명(required signatures)을 설명할 수도 있다.
배경으로서, 비트코인 프로토콜의 표준 P2SH 방법에서, 출력 스크립트(output script) 또는 상환 스크립트(redeem script)는 다음과 같은 형태를 가질 수 있다:
<NumSigs PubK1 PubK2 ? PubK15 NumKeys OP_CHECKMULTISIG>
여기서, NumSigs - 는 거래를 잠금 해제하기 위해 상환 스크립트를 만족하는데 필요한 유효 서명의 수 "m"이다. PubK1, PubK2 ? PubK15 는 거래를 잠금 해제할 수 있는 서명에 대응하는 공개키(최대 15개의 공개키)이고, NumKeys - 는 공개키의 수"n"이다.
비트코인 프로토콜에서, 사용자의 개인키에 기초한 서명은 타원 곡선 전자 서명 알고리즘(Elliptic Curve Digital Signature Algorithm)을 사용하여 생성될 수 있다. 그 다음 서명은 출력 스크립트 또는 상환 스크립트와 관련된 암호화폐의 상환을 위해 사용된다. 사용자가 출력 스크립트 또는 상환 스크립트를 상환할 때, 사용자는 그들의 서명과 공개키를 제공한다. 출력 스크립트 또는 상환 스크립트는 공개키에 대한 서명을 검증한다.
상기 상환 스크립트를 상환하기 위해, 공개키에 대응하는 적어도 "m" 개의 서명이 요구된다. 일부 예에서, 공개키들의 순서가 중요하며 서명을 위한 "n" 서명의 수"m"가 순서대로 수행되어야 한다. 예를 들어, "m"이 2이고, "n"이 15인 경우를 고려해보라. 사용 가능한 Sig1(PubK1에 대응)과 Sig 15(PubK15에 대응)의 2개의 서명이 있는 경우, 상환 스크립트는 먼저 Sig1에 서명한 다음 Sig15에 의해 서명되어야 한다.
(시스템의 개요)Overview of the system
도 2는 통신 네트워크5를 통해 제2 노드7와 통신하는 제1 노드3를 포함하는 시스템을 도시한다. 제1 노드3는 관련된 제1 처리 장치21을 갖고, 제2 노드5는 관련된 제2 처리 장치 27을 갖는다. 제1 및 제2 노드 3,7의 예는 컴퓨터, 태블릿 컴퓨터, 이동 통신 장치, 컴퓨터 서버 등과 같은 전자 장치를 포함한다.
키-값 쌍들을 기록하고 저장하기 위한 DHT13는 또한 도 2에 도시된다. DHT13은 키-값 쌍의 값을 수신, 기록 및 저장하기 위해 적어도 하나의 처리 장치19와 관련될 수 있다. 처리 장치 19는 DHT13의 "참여 노드(participating nodes)"에 의해 사용될 수 있다. 전술한 바와 같이, DHT13은 키-값 쌍의 값들을 위치시키는 효율적인 방법을 제공한다.
도 2는 또한 거래를 기록하기 위한 P2P 분산 대장 14을 도시한다. P2P 분산 대장14은 거래를 수신하고 기록하는 적어도 하나의 처리 장치들 20과 연관될 수 있다. 전술한 바와 같이, P2P 분산 대장14의 예는 비트코인 블록체인이다. 그러므로, 블록체인의 내용(context)에서, P2P 분산 대장14과 관련된 처리 장치20는 "채굴자(miners)"라고 불리는 처리 장치일 수 있다.
제1 노드 3는 제1 사용자23과 연관되고, 제2 노드7는 제2 사용자24와 연관된다. 예를 들어, 제1 노드3는 컴퓨터 소프트웨어의 벤더(vendor)를 나타낼 수 있다. 다른 예에서, 제1 노드3는 에이전트(agent) 또는 서비스 제공자를 나타낼 수 있다. 또 다른 예에서, 제1 노드3는 컴퓨터 소프트웨어의 사용자를 나타낼 수 있다.
유사하게, 제2 노드7는 에이전트, 서비스 제공자, 컴퓨터 소프트웨어의 벤더 또는 컴퓨터 소프트웨어의 사용자를 나타낼 수 있다.
일 예에서, 제1 노드3는 도 3 및 도 6에서 도시된 바와 같이 방법 100, 500을 수행한다. 다른 예에서, 제2 노드7는 방법 100, 500을 수행한다. 이하의 예시적인 실시예가 방법을 수행하는 제1 노드3를 언급할 수 있지만, 본 개시는 다른 노드에 의해 수행되도록 변형되거나 수정될 수도 있다.
도 3에 도시된 바와 같이 방법 100은 컴퓨터 소프트웨어와 관련된 데이터(D1)를 결정하는 단계110를 포함한다. 데이터(D1)은 컴퓨터 소프트웨어와 관련된 라이선스를 더 포함할 수 있다. 방법 100은 또한 컴퓨터 소프트웨어에 기초하여 제1 해시값(H1)을 결정하는 단계 120을 포함한다. 일예에서, 제1 해시값(H1)은 컴퓨터 소프트웨어의 실행과 관련될 수 있다.
방법 100은 또한 데이터(D1) 및 컴퓨터 소프트웨어를 기초하여 제2 해시값(H2)을 결정하는 단계130를 포함한다. 일예에서, 제2 해시값(H2)은 컴퓨터 소프트웨어와 연관된 라이선스 컴퓨터 소프트웨어의 세부사항을 나타낼 수 있다. 다른 예에서, 제2 해시값(H2)은 추가 정보를 포함할 수 있다.
방법 100은 통신 네트워크5를 통해 데이터(D1), 제1 해시값(H1) 및 제2 해시값(H2)을 분산 해시 테이블13 상의 엔트리(entry)에 전송하는 단계140를 포함하고, 상기 제2 해시값(H2)은 키-값 쌍의 키에 할당되고, 데이터(D1) 및 제1 해시값(H1)은 키-값 쌍의 값에 할당된다. 키-값 쌍 내의 값은 컴퓨터 소프트웨어 또는 라이선스의 위치를 나타내는 식별자를 더 포함할 수 있다.
방법 100은 개인대개인 분산 대장14 상에 포함을 위해 제2 해시값(H2)에 기초한 메타데이터(M)을 결정하는 단계150를 포함한다. 일 예에서, 메타데이터(M)는 개인대개인 분산 대장14 상에 포함을 위한 제1 상환 스크립트(RS1)에 포함될 수 있다.
컴퓨터 소프트웨어와 연관된 데이터 결정하는 단계110(Determining a data associated with the computer software 110)
전술한 바와 같이, 방법100은 컴퓨터 소프트웨어와 연관된 데이터(D1)을 결정하는 단계110를 포함한다. 데이터(D1)를 결정하는 단계110는 사용자, 노드 또는 데이터 저장소로부터 데이터(D1)를 수신하는 단계를 포함할 수 있다. 데이터(D1)를 결정하는 단계110는 제1 노드3에서 데이터(D1)를 생성하는 단계를 더 포함할 수 있다.
일 예에서, 제1 노드3는 사용자 인터페이스15를 통해 제1 사용자23로부터 데이터(D1)을 수신할 수 있다. 다른 예에서, 제1 노드3는 제2 사용자24로부터 데이터(D1)을 수신할 수 있다. 도 다른 예에서, 제1 노드3는 데이터 저장소17로부터 데이터(D1)을 수신할 수 있다.
데이터(D1)는 컴퓨터 소프트웨어, 추가 정보, 컴퓨터 소프트웨어의 라이선스를 식별하거나 컴퓨터 소프트웨어의 위치를 나타낼 수 있는 컴퓨터 소프트웨어와 연관된다. 예를 들어, 데이터(D1)는 컴퓨터 소프트웨어를 식별하는 문자열(string) 또는 데이터 구조(data structure)를 포함할 수 있다. 문자열 또는 데이터 구조는 컴퓨터 소프트웨어에 관한 식별 키워드(identifying keywords) 및/또는 추가 정보(additional information)의 집합을 포함할 수 있다. 추가 정보의 예는 컴퓨터 소프트웨어 버전의 식별자, 예를 들어 숫자일 수 있다. 예를 들어, 컴퓨터 소프트웨어에 Bobsoftware라는 제목이 있고 버전이 3.0인 경우, 문자열 또는 데이터 구조(D1)는 "BobSoftware/3.0"을 포함할 수 있다.
또 다른 예에서, 데이터(D1)는 컴퓨터 소프트웨어와 관련된 라이선스의 식별자를 포함할 수 있다. 이는 소프트웨어 라이선스 식별 번호(identification number, ID) 또는 소프트웨어 라이선스 키일 수 있다. 다른 예에서, 라이선스의 식별자는 라이선스의 내용의 암호화 해시를 포함할 수 있다.
데이터(D1)는 컴퓨터 소프트웨어의 저장 위치를 나타내는 식별자를 더 포함할 수 있다. 일 예에서, 식별자(identifier)는 인터넷 상의 객체(object)에 대한 URL을 포함할 수 있다. 또 다른 예에서, 해시 테이블 또는 분산 해시 테이블과 같은 저장소 상의 컴퓨터 소프트웨어의 저장 위치에 대한 링크가 제공될 수 있다.
또 다른 예에서, 데이터(D1)는 컴퓨터 소프트웨어의 벤더를 식별하는 정보를 포함할 수 있다. 여기는 이름, 주소, 연락 세부 정보(contact details) 또는 벤더와 관련된 공개키와 같은 개인 정보를 포함할 수 있다.
컴퓨터 소프트웨어에 기초한 제1 해시값(H1) 결정하는 단계 120Determining a first hash value (H1) based on the computer software 120
또한, 전술한 바와 같이 방법 100은 컴퓨터 소프트웨어의 제1 해시값(H1)을 결정하는 단계120를 더 포함할 수 있다. 제1 해시값(H1)을 결정하는 단계는 사용자로부터 제1 해시값(H1)을 수신하는 단계 또는 데이터 저장소로부터 제1 해시값(H1)에 액세스하는 단계를 포함할 수 있다. 제1 해시값(H1)을 결정하는 단계120는 제1 노드3에서 해시값을 계산하는 단계를 더 포함할 수 있다.
일예에서, 제1 노드3는 사용자 인터페이스15를 통해 제1 사용자23로부터 제1 해시값(H1)을 수신할 수 있다. 다른 예에서, 제1 노드3는 제2 사용자24로부터 제1 해시값(H1)을 수신할 수 있다. 또 다른 예에서, 제1 노드3는 로컬(local) 데이터 저장소17 또는 원격(remote) 데이터 저장소로부터 제1 해시값(H1)을 액세스할 수 있다.
일 예에서, 제1 해시값(H1)은 컴퓨터 소프트웨어의 실행파일(executable)이다. 컴퓨터 소프트웨어의 실행파일은 인터넷과 같은 통신 네트워크5로부터 검색될 수 있다. 다른 예에서, 실행파일은 제1 사용자23 또는 제2 사용자24에 의해 제공될 수 있다. 또 다른 예에서, 실행파일은 데이터 저장소17로부터 검색될 수 있다. 또 다른 예에서, 실행 파일은 해시 테이블 또는 DHT와 같은 저장소(repository)로부터 검색가능하다.
소프트웨어 실행 파일의 해시는 정보의 256비트 표현을 생성하는 SHA-256알고리즘을 사용하여 결정될 수 있다. 보안 해시 알고리즘(Secure Hash Algorithm, SHA) 군(family)에서 다른 알고리즘을 포함하여 다른 해시 알고리즘이 사용될 수 있다는 것을 이해해야 한다. 일부 특정 예는 SHA-3하위집합(subset)의 예로 SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256을 포함한다. 다른 해시 알고리즘들은 RACE Integrity Primitives Evaluation Message Digest (RIPEMD) 군(family)에서의 예들을 포함할 수 있다. 특정 예는 RIPEMD-160을 포함할 수 있다. 다른 해시 함수는 Zemor-Tillich 해시 함수 및 knapsack-기반의 해시 함수를 기초로 한 군(families)을 포함할 수 있다.
데이터(D1와 컴퓨터 소프트웨어를 기초로 한 제2 해시값(H2)을 결정하는 단계130(Determining a second hash value (H2) based on the data (D1) and the computer software 130)
방법 100은 또한 데이터(D1) 및 컴퓨터 소프트웨어에 기초한 제2 해시값(H2)을 결정하는 단계130를 포함한다.
일 예에서, 제2 해시값(H2)은 데이터(D1)의 연쇄(concatenation) 해시와 컴퓨터 소프트웨어의 실행파일(또는 즉, 제1 해시값(H1)인 실행파일의 해시)에 기초하여 결정될 수 있다. 또 다른 예에서, 제2 해시값(H2)은 데이터(D1)의 연쇄 해시, 컴퓨터 소프트웨어의 실행파일(또는 실행파일의 해시) 및 추가 정보를 기초로 하여 결정될 수 있다.
추가 정보는 제1 사용자23(PU1) 또는 제2 사용자24(PU2)의 공개키를 포함할 수 있다. 또 다른 예에서, 추가 정보(additional information)는 제1 사용자23 또는 제2 사용자24와 연관된 개체(entitiy)의 식별자(identifier)를 포함할 수 있다. 예를 들어, 개체는 제1 사용자23 또는 제2 사용자24의 고용자(employer)일 수 있다. 다른 예에서, 개체는 제1 사용자23 또는 제2 사용자24의 서비스 제공자일 수 있다.
추가 정보는 제1 노드3, 제2 노드7, 제1 사용자23 또는 제2 사용자24와 연관된 장치의 장치 식별자를 더 포함할 수 있다. 장치의 예는 도 2에서 도시된 바와 같이 제1 처리 장치21이다. 장치 식별자는 아래의 MAC 주소, 마더보드 시리얼 번호(serial number)또는 장치 식별 번호 중 적어도 하나를 포함할 수 있다. 장치 식별자는 MAC 주소, 마더보드 시리얼 번호, 또는 장치 식별 번호 중 적어도 2개의 연결을 더 포함할 수 있다. 다른 예에서, 장치 식별자는 MAC 주소, 마더보드 시리얼 번호 또는 장치 식별 번호 또는 상술된 연쇄와 관련된 해시값을 포함할 수 있다.
또 다른 예에서, 추가 정보는 컴퓨터 소프트웨어와 연관된 라이선스의 만기일(expiry data)를 포함할 수 있다.
컴퓨터 소프트웨어와 연관된 계약(예, 라이선스)(Contract (e.g. Licence) associated with the computer software)
또 다른 예에서, 제2 해시값(H2)은 데이터(D1)의 연쇄, 컴퓨터 소프트웨어의 실행파일(또는 실행파일의 해시), 추가 정보 또는 컴퓨터 소프트웨어와 연관된 계약(예로, 라이선스)를 기초로 결정될 수 있다.
계약(예로, 라이선스)의 표현은 라이선스의 내용을 구체화하는 파일 또는 문서일 수 있다. 예를 들어, 일반(plain) 아스키 텍스트(ASCII text), PDF 문서 또는 워드(WORD) 문서가 있다. 제2 해시값(H2)은 라이선스를 원래의 형태로 포함할 수 있거나, 예를 들어, 인터넷과 같은 공개적으로 액세스 가능한 통신 네트워크 상의 라이선스의 위치에 대한 링크를 제공할 수 있다. 도 다른 예에서, 해시 테이블 또는 DHT와 같은 저장소 상의 라이선스의 위치에 대한 링크가 제공될 수 있다. 또 다른 예에서, 데이터 저장소17와 같은 컴퓨터 기반 자원상의 라이선스의 위치에 대한 링크가 제공될 수 있다.
일 예에서, 라이선스는 컴퓨터 소프트웨어와 연관된 제1 해시값(H1)을 포함할 수 있다.
컴퓨터 소프트웨어와 연관된 라이선스는 상술한 바와 같은 추가 정보를 더 포함할 수 있다. 일 예에서, 라이선스는 제1 사용자23 또는 제2 사용자 24와 연관될 수 있다. 라이선스는 제1 사용자23(PU1) 또는 제2 사용자24(PU2)의 공개키를 포함할 수 있다. 다른 예에서, 라이선스는 제1 사용자23 또는 제2 사용자24와 관련된 개체(entity)의 식별자를 포함할 수 있다.
컴퓨터 소프트웨어와 연관된 라이선스는 제1 노드3, 제2 노드7, 제1 사용자23 또는 제2 사용자24와 연관된 장치의 장치 식별자를 더 포함할 수 있다. 장치의 예는 도 2에 도시된 바와 같이 제1 처리 장치21이다. 장치 식별자는 아래의 MAC 주소, 마더보드 시리얼 번호 또는 장치 식별자 번호 중 적어도 하나를 포함할 수 있다. 장치 식별자는 MAC 주소, 마더보드 시리얼 번호 또는 장치 식별자 번호 중 적어도 2개의 연쇄를 더 포함할 수 있다. 다른 예에서, 장치 식별자는 MAC 주소, 마더보드 시리얼 번호 또는 장치 식별자 번호 또는 상술한 연쇄와 연관된 해시값을 포함할 수 있다.
제1 사용자23는 컴퓨터 소프트웨어의 벤더일 수 있고, 제2 사용자24는 컴퓨터 소프트웨어의 수신자("최종 사용자(end user)")일 수 있다. 다른 예에서, 제2 사용자23는 컴퓨터 소프트웨어의 벤더일 수 잇고, 제2 사용자24는 컴퓨터 소프트웨어의 최종 사용자일 수 있다.
일 예에서, 컴퓨터 소프트웨어와 연관된 라이선스는 단지 하나의 최종 사용자("단일 사용자 라이선스(single-user licence)")만 허가할 수 있다. 다른 예에서, 컴퓨터 소프트웨어와 연관된 라이선스는 최종 사용자("단일 사용자 라이선스(single-user licence)")의 하나의 장치를 허가할 수 있다. 다른 예에서, 컴퓨터 소프트웨어와 연관된 라이선스는 최종 사용자의 두 개 이상의 장치("다중 장치 라이선스")를 허가할 수 있다.
또 다른 예에서, 둘 이상의 최종 사용자("다중 사용자 라이선스")가 있을 수 있다. 또 다른 예에서, 컴퓨터 소프트웨어와 연관된 라이선스는 최종 사용자 당 하나의 장치를 허가할 수 있다. 다른 예에서, 컴퓨터 소프트웨어와 연관된 라이선스는 최종 사용자 당 하나의 장치 이상을 허가할 수 있다.
라이선스가 제1 사용자23 또는 제2 사용자24와 연관된 경우에, 라이선스가 제1 사용자23와 연관된 제1 사용자 공개키(PU1) 및 제2 사용자24와 연관된 제2 사용자 공개키(PU2)를 포함할 수 있다.
머클 트리(Merkle tree)
다른 예에서, 라이선스는 머클 트리의 최상위(top) 해시값일 수 있다. 머클 트리의 예가 도 4에 도시된다. 머클 트리에서, 각 노드의 해시값은 각각의 "하위(child)" 노드의 해시이다. 예를 들어, 해시값 Hash-A305는 2개의 "하위" 노드309 및 311에서 해시값의 해시이다. 머클트리, Hash-AB303의 최상위 해시값은 머클 트리에서 모든 해시값을 포함하는 것으로 보여진다. 즉, 그것은 트리의 아래, A1 317, A2 319, B1 321 및 B2 323에서 4개 "잎들(leaves)"의 해시값을 캡쳐한다(capture).
본 발명의 예에서, 머클 트리의 각 "잎(leaf)"은 라이선스의 정보의 일면을 나타낼 수 있다. 예시적인 라이선스는 도 5에서 도시된다. 데이터(D1) 417는 해시값 Hash-D 409에서 캡쳐되고, 소프트웨어실행파일419은 해시값 Hash-S411(H1)에서 캡쳐되고, 사용자23 및/또는 24의 공개키들421은 해시값 Hash-P 413에서 캡쳐되고, 그리고 만기일 423은 해시값 Hash-E415에서 캡쳐된다. 노드 405 및 407는 데이터(D1) 417 및 소프트웨어 419 위한 잎들과 공개키들421 및 만기일423 각각에 연관된 해시값들을 캡쳐한다.
상기에서 다르게 기술되지 않은 다른 정보는 해시값(H2)이 기초로 하는 추가 정보를 포함할 수 있다는 것을 이해해야 한다.
데이터(D1), 제1 해시값(H1) 및 제2 해시값(H2)을 분산 해시 테이블로 전송하는 단계140(Sending the data (D1), first hash value (H1) and second hash value (H2) to a distributed hash table 140)
방법 100은 또한 통신 네트워크5를 통해 데이터(D1), 제1 해시값(H1) 및 제2 해시값(H2)을 분산 해시 테이블13 상의 엔트리에 전송하는 단계140를 포함한다.
일 예에서, 제2 해시값(H2)은 키-값 쌍의 키일 수 있고, 데이터(D1)및 제1 해시값(H1)은 키-값 쌍에서 값일 수 있다.
또 다른 예에서, 상술한 추가 정보는 키-값 쌍에서 값의 일부일 수도 있다. 이것은 제1 사용자23 또는 제2 사용자24의 공개키, 제1 노드3, 제2 노드7, 제1 사용자23 또는 제2 사용자24와 연관된 장치의 장치 식별자, 컴퓨터 소프트웨어 또는 라이선스의 위치 또는 라이선스와 관련된 추가 정보를 포함하는 이에 의해 제한되지 않는다.
상술한 바와 같이, DHT13는 각 키-값 쌍으로 구성되고, 각 키-값 쌍은 인덱스에 할당된다. 일 예에서, 제2 해시값(H2)은 인덱스를 발생하는데 사용될 수 있다. 해시 함수 또는 암호 해시 함수는 제2 해시값(H2)에 대해 수행될 수 있다. 예를 들어, 암호화 함수 SHA-1이 사용될 수 있다.
Index = SHA-1(H2)
제2 해시값(H2)이 DHT13에서 키-값 쌍의 키가 되고, 그리고 데이터(D1) 및 제1 해시값(H1)이 키-값 쌍에서 값이 되도록, 키와 값이 DHT13의 어떤 참여 노드로 전송된다.
일 예에서, put(키, 값)과 같은 메시지는 DHT13의 참여 노드로 전송될 수 있고, 상기 키는 제2 해시값(H2)이고, 값은 데이터(D1)와 제1 해시값(H1)이다. 메시지는 키 공간 분할에 의해 표시된 대로 인덱스에 할당된 참여 노드에 의해 그것이 수신될때까지 모든 참여 노드 주위로 전송될 수 있다. 메시지에 표시된 인덱스에 할당된 참여 노드는 DHT13 상의 키-값 쌍을 저장하고 키-값 쌍과 관련된 엔트리를 유지할 책임이 있다고 가정한다.
임의의 주어진 키의 값은 DHT13으로부터 검색될 수 있는 이점이 있다. 일 예에서, 제1 사용자 23 또는 제2 사용자24는 값을 검색하기 원할 수 있다. 제1 노드3, 제2 노드7 또는 달리 도시되지 않은 다른 노드를 통해 제1 사용자23 또는 제2 사용자24는 DHT의 임의의 참여 노드에 get(키)와 같은 요청 메시지를 제공할 수 있다. 요청 메시지는 키 공간 분할에 의해 표시된대로 인덱스에 할당된 참여 노드에 의해 그것이 수신될 때까지 모든 참여 노드 주위로 전송될 수 있다.
메타데이터(M)를 결정하는 단계150(Determining a metadata (M) 150)
방법 100은 제2 해시값H2을 포함하는 메타데이터M를 결정하는 단계150를 더 포함한다. 메타데이터(M)를 결정하는 단계150는 사용자, 노드 또는 데이터 저장소로부터 메타데이터M를 수신하는 단계를 포함한다. 메타데이터M는 예를 들어 P2P 분산 대장14 상에 거래의 P2SH 다중 서명(multi-signature) 제1 상환 스크립트(RS1)에서 공개키에 대한 이용 가능한 15개 장소 중 하나 이상에 포함될 수 있다.
P2P 분산 대장14 상의 거래의 제1 상환 스크립트(RS1)은 메타데이터에 포함된 콘텐츠(content)를 나타내는 토큰화된 거래("발행 토큰(issuance token)")의 발행 또는 생성을 나타낼 수 있다. 일 예에서, 토큰은 에이전트(A)에 의해 발행될 수 있다.
비트코인 프로토콜의 P2SH 방법에서, 메타데이터는 "블록체인 기반의 암호화폐를 위한 범용 토큰화 시스템"이라는 공동 소유의 영국 특허 출원 제1603125.4호에 처음 도입된 방법에 의한 상환 스크립트에 포함될 수 있으며, 이는 본원에 참고로 인용된다. 상환 스크립트에서 메타데이터를 포함시키는 과정이 그 안에 기술된다. 그러나, 간략한 요약은 아래에 제공된다.
메타데이터(Metadata)
메타데이터(M)는 P2SH 다중 서명 상환 스크립트(RS1) 내에 공개키들을 이용할 수 있는 15개 장소 중 하나 이상에 설치될(embedded) 수 있다. 예를 들어, 상환 스크립트(Rs1)는 아래의 형태를 가질 수 있다:
<NumSigs Metadata1 Metadata2? PubK1 PubK2? NumKeys OP_CHECKMULTISIG>
Metadata1 및 Metadata2는 각각 상환 스크립트 내의 공개키 대신 메타데이터 포함하고, PubK1 및 PubK2는 공개키들이다.
메타데이터(M)는 제2 해시값(H2)을 포함할 수 있다. 메타데이터(M)은 컴퓨터 소프트웨어 또는 라이선스와 관련된 조건을 기술하는 설명 또는 키워드를 더 포함할 수 있다. 예를 들어, 라이선스의 날짜, 이름, 생년월일, 주소, 연락처 세부 정보 또는 라이선스와 연관된 사용자의 세부정보가 있다. 또 다른 예에서, 암호화폐의 양과 관련된 정보가 포함될 수 있다.
메타데이터(M)은 복수의 방식으로 정보를 포함할 수 있다. 일 예에서, 정보의 내용이 포함될 수 있다. 또 다른 예에서, 정보의 암호화 해시가 포함될 수 있다. SHA-256 알고리즘을 사용하여 정보의 256비트 표현을 생성하도록 정보의 해시가 결정될 수 있다. Secure Hash Algorithm (SHA) 군에서 다른 알고리즘을 포함하여 다른 해시 알고리즘이 사용될 수 있다는 것을 이해해야 한다. 일부 특정 예는 SHA-3하위집합(subset)의 예로 SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256을 포함한다. 다른 해시 알고리즘들은 RACE Integrity Primitives Evaluation Message Digest (RIPEMD) 군(family)에서의 예들을 포함할 수 있다. 특정 예는 RIPEMD-160을 포함할 수 있다. 다른 해시 함수는 Z
Figure 112018117745659-pct00001
mor-Tillich 해시 함수 및 knapsack-기반의(based) 해시 함수를 기반으로 하는 군을 포함할 수 있다.
본 발명의 다른 실시예에서, 상기 중 하나 이상을 포함하는 조합이 메타데이터(M)에 포함될 수 있다. 메타데이터(M)는 블록체인과 같이 p2p 분산 대장14에 의해 공개되거나 비보안(unsecure) 네트워크를 통해 전송될 수 있기 대문에, 프라이버시를 이유로 인해 메타데이터의 특정 세부사항이 가려지거나(veiled) 또는 숨겨지는(hidden) 것이 바람직할 수 있다.
그러므로, 본 출원의 실시예에서 다중 서명 P2SH 비트코인 거래의 사용은 컴퓨터 소프트웨어 및 라이선스와 관련된 정보의 전송 및 영구 기록을 가능하게 함으로써 이점을 제공한다. 이러한 기록은 거래의 출력 스크립트 예를 들어 상환 스크립트에 메타데이터를 포함시켜 얻어질 수 있다.
제1 상환 스크립트(First redeem script)
전술한 바와 같이, 상환 스크립트는 비트코인 프로토콜의 표준 P2SH 방법에서 출력 스크립트의 일예이며, 사용자가 거래 기록에 구체화된 암호화폐에 대한 액세스를 얻기 위한 방법을 설명한다.
본 출원에서, 발행 토큰을 위한 제1 상환 스크립트(RS1)는 메타데이터(M)을 기초로 할 수 있다. 제1 상환 스크립트(RS1)는 에이전트 개인키(VA)와 암호화 쌍을 형성하는 에이전트 공개키(PA)를 더 포함할 수 있다. 이러한 방식으로 에이전트 개인키(VA)는 거래와 관련된 암호화폐를 "잠금해제(unlock)" 또는 지출해야할 필요가 있다.
일 예에서, 발행 토큰을 위한 제1 상환 스크립트(RS1)는 메타데이터(M)를 포함할 수 있다. 제1 상환 스크립트(RS1)은 에이전트 공개키(PA)를 더 포함할 수 있다. 이러한 예에서, 제1 상환 스크립트(Rs1)은 다음 형식일 수 있다:
<OP_1 PA Metadata1 Metadata2 OP_3 OP_CHECKMULTISIG>
여기서 OP_1은 거래를 잠금해제하기 위해 제1 상환 스크립트(RS1)를 충족시키는데 요구되는 서명수("NumSigs")를 나타내며, OP_3은 상환 스크립트에서 공개키 개수("NumKeys")를 나타낸다.
이 예에서, 제1 상환 스크립트(RS1)는 메타데이터, Metadata1(메타데이터1) 및 Metadata2(메타데이터2)에 대한 2개의 지정된 필드를 포함할 수 있다. Metadata1 및 Metadata2의 구체적인 예는 아래 표 1에 도시된다.
필드(Field) 부필드(Sub-field) 바이트(Bytes) 코멘트(Comments)
Metadata1 LicenceType 4 코드화된 값은 라이선스의 유형을 나타낸다(Coded value indicates type of licence).
LicencePointer 16 DHT를 식별하는 IPv7주소(IPv6 address identifying the DHT).
LicenceTypeData1 12 형식은 라이선스유형의 값에 의존한다(Format depends on value of LicenceType). 0으로 채워진다( Padded with zeros).
Metadata2 LicenceHash 20 RIPEMD-160(SHA256(실제 라이선스포인터에의해 어드레스된 실제 라이선스파일(actual licence file addressed by LicencePointer)))
LicenceTypeData2 12 형식은 라이선스타입의 값에 의존한다(Format depends on value of LicenceType). 0으로 채워진다(Padded with zeros).
이 예는 라이선스의 크기가 메타데이터(M)에서 이러한 세부사항을 포함하는 것을 배제하는 경우에 유용할 수 있는 Metadata1에서 라이선스에 대한 포인터를 제공하는 단계(것)를 포함한다. 또한, 메타데이터(M)이 공개되거나 비보안 네트워크를 통해 전송될 수 있기 대문에, 프라이버시를 이유로 가려지거나 숨겨지는 것이 바람직할 수 있다.Metadata1의 처음 4개 바이트는 라이선스의 종류를 나타낸다. 예를 들어, 라이선스 유형은 BobSoftware와 같은 컴퓨터 소프트웨어의 이름을 나타낼 수 있다. 다른 예에서, 라이선스 유형은 전술한 바와 같이 "단일 사용자" 도는 "다중 장치"와 같은 라이선스의 인가 유형(authorisation type)을 나타낼 수 있다. 다음 16바이트는 실지 전자 라이선스 파일의 위치에 대한 IP 주소를 보유하여 IPv6 주소를 허용한다. 일부 실시예에서, 이러한 값은 라이선스 파일이 집중화되기보다 클라우드를 통해 분산될 수 있도록 토렌트 파일의 시드(seed)를 가르킬 수 있음을 주목해야 한다. 다음 12바이트는 라이선스의 유형에 특유한 데이터를 포함한다.
Metadata2의 처음 20바이트는 라이선스 파일의 실제 내용에 적용되는 SHA256에 대한 RIPEMD-160을 사용하는 실제 라이선스 파일의 해시이다. 실제 라이선스 파일은 검색할 수 있으므로 계약에 대한 거래의 유효성을 확인할 수 있다. 라이선스 파일 자체는 특정 실시예의 요구 사항에 따라 완전히 공개(암호화되지 않고 사람이 읽을 수 있는)되거나 개인 정보 보호를 위해 암호화될 수 있다. Metadata2의 나머지 12바이트의 내용은 라이선스의 유형에 따라 사용될 수 있다.
전술한 제1 상환 스크립트(RS1)의 예에서, 발행 토큰은 사용되기 위해 에이전트에 의해 서명되어야 한다. '발행 토큰의 거래의 예는 표 2에 제공되고, 간결하게 하기 위해 채굴자의 수수료는 도시되지 않는다.
ID-600 거래-ID(Transaction-ID)
Version number 버전수(Version number)
1 입력수(Number of inputs)
ID-110 Prev Trans Output
IDX-00 Prev Trans Output index
Script length 스크립트 길이(Script length)
OP_0 Sig-VA < redeem script ID-110 > ScriptSig
0000 0000 0000 0001 시퀀스 수(Sequence number)
1 출력수(Number of outputs)
C1 출력값(Output value)
Output script length 출력스크립트길이(Output script length)
OP_HASH160 < hash of redeem script (RS1) > OP_EQUAL 출력 스크립트(Output script)
LockTime 잠금시간(LockTime)
표 2의 네번째 줄에서 여덟번째 줄은 발행 토큰(즉, "토큰화된")에 포함될 암호화폐의 제1 양(C1)인 거래에 대한 입력을 나타낸다. '이 예에서, 암호화폐의 제1 양(C1)은 암호화폐의 제1 양이 에이전트의 이익으로 전달된 이전 거래(ID-110)의 결과이고, 그러므로 이전 거래(ID-110) 출력 스크립트9상환 스크립트ID-110)이 에이전트의 공개키(PA)를 포함한다. 따라서 이러한 이전 출력 스크립트(상환 스크립트 ID-110)을 잠금 해제하기 위해서는 제1 사용자의 개인키(VA)와 함께 서명되어야 한다. 마지막으로, 표 2의 여덟번째줄은 암호화폐의 제1 양(C1)이 이 거래(ID-600)에서 제1 출력이 될 것임을 나타낸다.표 2의 아홉번째줄 내지 열세번째줄은 거래(ID-600)의 제1 출력(및 유일한)을 나타내며, 이 경우 생성되고 에이전트로 다시 전송된 발행 토큰의 대표를 나타낸다. 열번째줄은 암호화폐의 제1 양(C!)인 출력 값을 나타낸다. 열한번째줄은 비트코인 프로토콜의 P2SH에서 사용되는 "<상환 스크립트의 해시>"를 포함하는 출력 스크립트를 도시한다. 이 예에서, 상환 스크립트는 상술된 형태에서 제1 상환 스크립트(RS1)이다.
표 2에서 도시된 거래(ID-600)의 출력은 제1 데이터 출력(O1)과 함께 P2P 분산 대장14 상에 기록된다. 특히, 제1 데이터 출력(O1)은 거래에서 전달된 암호화폐의 제1 양(C1)의 표시를 포함할 수 있다. 제1 데이터 출력(O1)은 제1 상환 스크립트(RS1)의 해시를 더 포함할 수 있다.
예를 들어 제1 사용자23 또는 제2 사용자24에 토큰의 전송과 같은 암호화폐의 제1 양(C1)의 향후 거래에서, 암호화폐의 제1 양(C1)(즉, 향후 거래의 입력(input) ScriptSig)을 잠금해제하는 스크립트는 다음과 같은 형태일 수 있다:
Sig-VA Sig-VU1 <OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG>
여기서Sig-VU1는 제1 사용자23의 서명을 나타낸다. 상기 스크립트는 에이전트(A) 또는 제1 사용자23로부터의 하나의 서명만이 암호화폐의 제1 양(C1)을 잠금해제하는 것을 요구한다고 가정한다.
발행 토큰은 제2 상환 스크립트(RS2)의 방법에 의해 다른 사용자에게 전송될 수 있다.
제2 상환 스크립트(Second redeem script)
컴퓨터 소프트웨어 및 라이선스와 연관된 토큰은 에이전트(A)로부터 다른 사용자 예를 들어 제1 사용자 또는 제2 사용자로 전송될 수 있다. 일 예에서, 토큰의 전송은 컴퓨터 소프트웨어 또는 라이선스를 위한 사용자로 액세스 권한을 부여하는 것을 대표할 수 있다. 전송은 제2 상환 스크립트(RS2)에 의해 실행될 수 있다.
일 예에서, 에이전트(A)는 발행 토큰이 제1 사용자23에게 전달되기를 원한다. 제1 사용자23는 예를 들어 컴퓨터 소프트웨어의 벤더를 대표할 수 있다.
이러한 예에서, 제2 상환 스크립트(Rs2)는 메타데이터(M), 제1 사용자23와 연관된 제1 사용자 공개키(PU1) 그리고 에이전트(A)와 연관된 에이전트 공개키(PA)를 기초로 할 수 있다.
제2 상환 스크립트(RS2)는 다음과 같은 형태일 수 있다:
<OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG>
이러한 예에서, 제2 상환 스크립트(RS2)는 제1 상환 스크립트(RS1)와 같이 동일한 2개의 메타데이터 필드를 포함한다. 제2 상환 스크립트(RS2)는 에이전트와 연관된 에이전트 공개키(PA) 및 제1 사용자와 연관된 제1 사용자 공개키(PU1)를 더 포함한다.
상기 제공된 제2 상환 스크립트(RS2)의 예에서 전송된 토큰은 에이전트(A) 또는 제1 사용자23에 의해 서명되어 사용되어야만 한다는 것을 알 수 있다. 발행 토큰의 이러한 전송에 대한 거래의 예는 표 3에 제공되고, 간략하게 채굴자의 수수료가 도시되지 않는다.
ID-610 거래-ID(Transaction-ID)
Version number 버전 수(Version number)
1 입력 수(Number of inputs)
ID-600 Prev Trans Output
IDX-00 Prev Trans Output index
Script length 스크립트 길이(Script length)
Sig-VA < OP_1 PA Metadata1 Metadata2 OP_3 OP_CHECKMULTISIG > ScriptSig
0000 0000 0000 0001 시퀀스 수(Sequence number)
1 출력 수(Number of outputs)
C1 출력값(Output value)
Output script length 출력 스크립트 길이(Output script length)
OP_HASH160 < hash of redeem script (RS2) > OP_EQUAL 출력 스크립트(Output script)
LockTime 잠금시간(LockTime)
표 2와 유사하게, 표3의 네번째줄 내지 여덟번째줄은 거래(ID-610)에 대한 입력을 나타낸다. 이 예에서, 입력은 발행 토큰, 즉 표 2에 도시된 거래(ID-600)의 출력이다. 일곱번째줄에서 상환 스크립트는 발행 토큰의 상환 스크립트 즉, 제1 상환스크립트(RS1)에 대응한다. 따라서 거래(ID-600)의 출력을 잠금 해제하려면 제1 상환 스크립트(RS1)가 에이전트의 공개키(Pa)로 서명되어야 한다.표 3의 아홉번째줄 내지 열세번째줄은 이 경우에 에이전트(A) 또는 제1 사용자23(U1)로 전송되는 발행 토큰을 나타내는 거래(ID-610)의 출력을 나타낸다. 열번째줄은 암호화폐의 제1 양(C1)인 출력값을 보여준다. 열한번째줄은 비트코인 프로토콜의 P2SH방법에서 사용된 "< 상환 스크립트의 해시(hash of redeem script) >"를 포함하는 출력 스크립트를 도시한다. 이 예에서, 상환 스크립트는 상기 설명된 형태의 제2 상환 스크립트(RS2)이다.
거래(ID-610)의 출력은 P@P 분산 대장14 상에 제2 데이터 출력(O2)와 함께 기록된다. 제2 데이터 출력(O2)은 제1 데이터 출력(O1)으로부터 암호화폐의 제1 양(C1)이 거래에서 전송되는 표시를 포함할 수 있다. 제2 데이터 출력(O2)은 제2 상환 스크립트(RS2)의 해시를 더 포함할 수 있다.
계약 실행 제어(Controlling Performance of the Contract)
블록체인에 내장된 스마트 계약은 비트코인 거래(즉, 잠금/잠금 해제 스크립트 내) 및/또는 외부 컴퓨터 기반 어플리케이션을 통해 직접 내장된 로직을 통해 시행될 수 있다(enforced). '에이전트', '오라클(oracles)' 또는 '봇(bots)'이라 불리는 외부 컴퓨터 기반 어플리케이션. 또한, 일부 계약 조건(contractual conditions)은 nLockTime 필드와 같은 다른 비트코인 거래 요소를 통해 시행될 수 있다.
본 개시(발명)는 계약을 나타내는 블록체인 상에 유효한 미사용(unspent) 거래 출력(UTXO)이 존재하는 만큼 거래(즉, 라이선스)가 유효한(in effect) 상태로 유지하도록 제공함으로써 계약의 실행을 제어하는 것에 관한 것이다. 이러한 미사용 상태는 행위가 계약 자체의 조건 또는 규정에 의해 제어되는 다양한 메커니즘(mechanisms)(예로, 프로그래밍된 컴퓨터 에이전트)의 결과로서 영향을 받고 변경될 수 있음을 이해할 것이다. 예를 들어, 계약은 특정 날짜에 만료되거나 특정 값이 지정된 지정된 임계값에 도달하면 만료되도록 규정한다.
계약을 표현하기 위해 미사용 거래 출력을 사용하는 이러한 원리는 암호화 기술과 같은 다른 특징과 함께 사용될 수 있다. 이는 복잡한 시나리오와 활동을 구현할 수 있다. 효과적으로, 서명되지 않은 거래 출력 UTXO와 그것이 소비되게 하는 스크립트 내에서 관련 메타데이터는 계약의 정식 세부사항을 포함하는 오프 체인지 저장소(off-chain repository)에 대한 포인터 또는 참조로 작동할 수 있다. 여기서, 오프체인은 블록체인 자체의 일부가 아니라는 것을 의미한다. 이것은 누구나 계약이 종료되었는지 또는 블록체인을 검사하여 유효/개방 상태인지를 결정할 수 있는 메커니즘을 제공한다. 계약이 종료되면, 거래에서 지출된 출력으로 블록체인 상에 기록될 수 있고, 공개 검사에 이용가능하다. 블록체인 거래는 영구적이고, 변경 불가능하고 계약의 존재와 현재 상태의 공개 기록이 된다.
도 8에 도시된 방법 800은 제1 사용자(U1)과 제2 사용자(U2) 사이의 라이선스와 관련된 계약을 컴퓨터 기반 저장소에 또는 그 안에 저장하는 단계810를 포함한다. 컴퓨터 기반 저장소(또한 '레지스트리' 또는 '레지스터' 라고 불림)는 예를 들어 분산 해시 테이블(DHT)과 같은 다양한 방식으로 구현될 수 있다. 계약의 해시(예, 라이선스)는 블록체인 거래 내에서 메타데이터로 생성되거나 저장될 수 있으며, 블록체인으로부터 계약을 참조하기 위한 룩업(look-up)키 역할을 할 수 있다. 계약의 위치에 대한 참조는 거래 메타데이터 내에도 제공된다. 예를 들어, 저장소의 URL이 제공될 수 있다. 메타데이터는 공개적으로 볼 수 있지만, 계약 자체는 공개되지 않거나 부분적으로 보호될 수 있다.
CheckLockTimevVerify(CLTV)와 같은 표준 비트코인 특징은 미래에 계약 시점에 공식적으로 자동 만료되도록 계약을 허용할 수 있다. 블록체인의 사용은 이러한 만기일(expiry date)이 안전한(변경 불가능한) 공개 기록의 문제(matter)가 될 수 있게 한다. 이 개념은 아래에 설명된 여러 암호화 키의 사용과 결합하여 명시적으로 취소하지 않는 한 CLTV 모델이 자동적으로 계약을 롤온(roll-on) 또는 갱신할 수 있게 한다.
방법 800은 또한 통신 네트워크를 통해 에이전트(A)에서 제1 사용자(U1) 또는 제2 사용자(U2)로 토큰의 전달을 포함하는 거래, 계약이 저장된 위치를 지시하는 식별자를 포함하는 메타데이터를 포함하는 거래를 수신하는 단계820를 포함한다.
여기에 설명된 토큰화 메커니즘과 결합된 결정적 서브키의 사용은 계약에 대한 하위 계약 또는 일정을 생성하도록 허용한다.
더 나아가, 오프 블록 컴퓨팅 에이전트(또한, '오라클(oracles)'이라고도 함)의 사용은 계약이 신뢰할 수 있는 제3 자에 의해 세워지고 변형될 수 있게 한다. 이는 에이전트의 행동이 계약 정의 내에서 제공되는 조건(예, "IF" 구문(statements))에 의해 영향을 받을 수 있다는 것을 의미한다.
핵심 용어(Key Terms)
다음 용어가 여기에 사용될 수 있다.
계약 발급자(Contract issuer):
이 개체(entity)는 계약을 블록체인에 개시할 책임이 있는 액터(actor)를 대표한다.
이해 관계인(Interested party):
이 개체(entity)는 특히 계약이 여전히 제자리(in place)에 있는지 여부를 결정할 필요가 있는 액터(actor)를 대표한다.
저장소(Repository:
이 개체는 블록체인 스마트 계약이 참조하는 계약의 구조화된 표현을 보호하거나/저장하는 위치를 대표한다.
계약 상대(Contract counterparty):
이 개체는 특정 계약의 상대방을 대표한다. 많은 경우에 이 개체는 존재하지 않을 것으로 알아야 한다.
계약(Contract):
이것은 저장소 내에 저장된 구조화된 문서 또는 파일이며 블록체인으로부터 참조된다. 계약은 모든 유형의 계약 또는 약정(agreement)일 수 있다. 여기에는 예를 들어, 금융 계약, 소유 증서(title deeds), 서비스 계약 등이 포함될 수 있다. 계약은 내용면에서 공개 또는 비공개가 될 수 있다. 계약은 코드 체계(codification scheme)를 사용하여 구조화된 방식으로 표현된다는 점에서 공식화되었다.
계약 모델(Contract Model)
계약 모델의 기본 요소는 다음과 같다:
모든 계약 유형의 완전한 설명을 허용하는 코드 체계. 체계(scheme)는 새로운 구조이거나 XBRL, XML, JSON (등)과 같은 존재하는 기능(facility)를 사용할 수 있다.
코드 체계 내에 완전히 정의될 수 있는 계약을 구현하기 위한 DFD(Deterministic Finite Automaton). 이것은 다음으로 구성된다:
매개 변수의 집합(set) 및 이러한 매개 변수의 출처
상태 정의 집합
전환(transition) 동안 따르는 규칙과 전환 동안 트리거(trigger)를 포함하는 상태들 사이의 전환 집합(A set of transitions between the states)
규칙 정의 테이블(Rules definition table)
이 계약의 예에 대한 특정 매개 변수의 정의;
계약을 보호하고 보호하는 메커니즘;
'연락처(contact)를 공식 법률 언어로 사람이 읽을 수 있도록 만드는 '브라우저(browser);와
코드 체계를 오라클 코드 및/또는 비트코인 스크립트와 같은 스크립트로 변환하는 '컴파일러(compiler)'
계약 이행(Implementing the contract)
계약이 컴퓨터 기반 저장소에 등록되면 관련 주소 예로, URL 및 해시는 블록체인 거래 내에서 메타데이터로 사용되어 체인 상의 거래를 제어 계약 자체와 연관시킬 수 있다. 이것은 다양한 형태로 구현될 수 있지만, 적절한 코드 체계는 "코드 체계(codification scheme)"라는 제목의 절에서 완전성을 위해 아래에 제공된다.
계약 정의에 포함된 DFA를 구현하는 방법에는 여러 가지 상이한 방법들이 있다.
블록 체인 거래 또는 거래의 시퀀스(sequence). 비트코인 스크립팅 언어 내에 다양한 형태의 DFA를 직접 구현하는 방법을 다루는 여러 분할된 백서(white papers)가 있다;
에이전트 기반의(예로 오라클) 프로세스 또는 프로세스 시퀀스(sequence). "발명과 함께 사용되는 예시적 컴퓨팅 에이전트"라는 제목의 섹션은 블록체인 및 가능한 다른 외부 소스(sources)를 모니터링하기 위해 적합한 에이전트를 정의하고 실행하기 위한 기본 프로세스를 설명한다.
스마트 지갑에 대한 명령의 집합(set of instructions). 이 컨텐츠에서 스마트 지갑은 효과적으로 블록체인 거래에 거래 입력을 할당과 같은 특정 계약 조건을 처리할 수 있는 로컬 오라클 프로세스이다.
주어진 계약 정의는 위의 세가지 메커니즘의 혼합으로 구현될 수 있으며, 각 계약 상태 전환은 효과적으로 분할 구현이다. 관련 거래/코드를 수작업으로(hand-crafting)작성하는 것을 포함하는 계약 정의로부터 이행(implementation)을 생성하는 여러 가지 방법이 있다.
계약의 존재 게시(Publishing the Contract's Existence)
계약(또는 계약 내에서 정의된 요소)의 존재를 게시하기 위해 거래(에이전트(A)에서 제1 사용자(U1) 또는 제2 사용자(U2)로 토큰의 전송을 포함하는)는 페이 투 스크립트 해시 주소(P2SH)를 사용하여 블록체인에 게시된다. P2SH 거래는 수신자(recipient)가 스크립트 해시와 일치하는 스크립트와 소비하기 위해 스크립트를 참으로 평가하는 데이터를 제공하는 경우의 하나이다. 본 발명의 실시예와 관련하여, 페이 투 스크립트 해시(P2SH)는 계약의 발행자(예를 들어, 제1 사용자(U1) 또는 제2 사용자(U2)) 및 계약의 메타데이터로부터 용이하게 결정될 수 있다.
이 출력이 블록체인 상의 UTXO 목록 내에 남아있지만,(예로, 거래는 여전히 미소비됨) 이것은 메타데이터 자체에 포함된 계약의 유효성을 나타낸다. 출력이 소비되면 계약이 완료된 것으로 간주된다.
하위 계약/조건(Sub-contracts/Conditions)
하위 계약은 기존 계약과 직접 관련이 있는 계약이다. 조건은 계약의 조건을 충족시키기 위해 공개적으로 이행해야하는 기존(existing) 계약 내의 조항(clause)이다. 본 발명의 일실시예에 따르면, 하위 계약 및 조건은 모두 동일한 방식으로 즉 결정론적 상환 스크립트 주소를 갖는 UTXO로서 구현되는 계약과 같이 구현될 수 있다. 두 경우 모두 개체는 UTXO가 소비될 때 완료된 것으로 간주된다(조건의 경우, 이는 조건이 충족되었음을 나타낸다)
조건 또는 하위 계약의 결정적 주소를 생성하는데 사용할 수 있는 다양한 메커니즘이 있다:
시드(seed) 정보를 사용하여 새로운 공개키를 도출하는 단계;
저장소 내의 마스터 계약에 대한 참조로 하위 계약서를 작성 및 게시하고 메타데이터 참조로 이를 사용하는 단계; 및
기존 계약의 메타데이터에 조건/ 하위 계약 참조를 추가하는 단계
계약 확보(Securing the Contract)
비록 계약의 존재의 공개적 기록이 모든 경우에 메타데이터 기록 내에 포함된 블록체인 상에 게시될지라도(구체적 메타데이터 구조의 세부사항인 "코드 체계" 섹션 참조) 계약의 공식적인 표현(즉, 계약의 내용을 구체화한 문서 또는 파일)은 구체적인 계약의 공식 요구에 따라 다양한 방식으로 확보될 수 있다.
이 블록체인 기록으로부터 권한이 부여된 개체는 거래가 게시된 이후에 공식 표현이 변형되지 않았음을 결정하기 위해 해시와 함께 공식 표현의 위치를 알 수 있을 것이다.
그러나, 여러 가지 방법을 통해 공식 표현(formal representation) 그 자체를 더욱 안전하게 할 수 있다;
문서 저장소 자체는 액세스 제어 메커니즘(access control mechansims)을 나타낸다; 그리고
계약 자체는 관련 암호 해독 키에 대한 액세스 권한을 가진 해당 개체에 대한 액세스를 제한하는 표준 암호 기술을 통해 보안될 수 있다.
계약 해지(Terminating the Contract)
블록체인은 영구적이고, 변경 불가능한 거래의 기록을 제공하므로, 관련 계약 문서를 단순히 제거하거나 계약을 해지할 수 없다. 이는 보안 계약 저장소가 많은 표준 메커니즘을 통해 지원되는 블록체인 자체와 동일한 저장소 및 보관 규칙(retention rules)를 가져야 한다는 것을 의미한다. 이는 솔루션이 블록체인 기록을 통해 계약의 만료를 직접적으로 감지하는 메커니즘을 나타내야 한다는 것을 의미한다.
이것은 계약을 대표하는 UTXO의 지출을 통해 처리된다. 여러 가지 계약 유형의 경우, 계약의 만료는 계약 자체의 게시와 동시에 게시된다. 효과적으로 2개의 거래가 생성되고, 하나(one)는 계약을 게시하고 계약을 나타내는 거래 출력을 가져오고, 두번째(second one)는 출력을 보낸다. 이 두번째 거래는 CheckLockTimeVerify 설정을 가져 그것을 주어진 미래 날짜(계약의 끝을 나타내는)에 출력을 보낸다.
이 자동 지출(auto-spending)은 계약의 롤온을 지원하기 위해 연장될 수 있다(예를 들어, 그들이 취소되지 않는 다면 12개월 동안 자동 연장되는 계약). 이러한 상황에서, UTXO는 그것을 '새로운' 롤온 계약으로 보내지도록 소모된다.
방법 800은 거래가 적어도 하나의 미사용 출력(UTXO)을 포함하는지 여부를 결정하기 위해 개인대개인 분산 대장에 질의하는 단계(Querying)830를 포함한다. 개인대개인 분산 대장에 질의하는 이러한 프로세스는 계약과 관련된 UTXO가 지출되었는지 여부를 확인하기 위해 블록 체인을 확인하는 단계를 포함한다. UTXO가 아직 소모되지 않은 경우에도 계약은 유효하다. UTXO가 여전히 소모되지 않지만, 보류중인 잠금시간(locktime) 거래가 있는 경우 이것은 계약의 만기 시간(expiry time)을 결정한다. UTXO가 소모되면 계약은 일부면에서 완료되었다.
개인대개인 분산 대장에 질의하는 단계830는 이해 관계인(interested party)(예를 들어, 에이전트 또는 제1 당사자(U1), 제2 사용자(U2))이 일부 다른 경로를 통해 계약을 관리하는(govern) 거래를 알고 있다고 가정한다(일반적으로, 그들은 계약 발급 기관 또는 계약 상대방 중 하나이다). 그러나, 계약 문서(Contract Document)에 대한 액세스와 계약 발행자(Contract Issuer)의 지식을 가진 개체는 다음에 의해 확인할 수 있다:
UTXO 거래에 대한 상환 스크립트 유도 하는 단계 (deriving); 그리고
상환 스크립트 해시에 일치하는 UTXO를 찾기 위해 블록체인을 스캐닝하는 단계(scanning).
본 발명의 다른 실시예에서, 개인대개인 분산 대장에 질의하는 단계830는 자동 폴링(polling) 프로세스의 일부로 수행되며, 이에 따라 블록체인은 거래가 적어도 하나의 미사용 출력(UTXO)을 포함하는지 여부를 결정하도록 미리 결정된 시간 간격으로 스캔된다(즉, 거래가 사용되지 않은 상태로 남아 있는지 여부를 결정)
방법 800은 또한 개인대개인 분산 대장에 질의하는 것에 응답하여 계약의 실행(performance)을 변형할지 여부를 결정하는 단계840를 포함한다. 결정하는 단계840는 적어도 하나의 미사용 출력(UTXO)이 개인대개인 분산 대장으로부터 식별될 수 없는 경우에 계약을 종료하거나 적어도 하나의 미사용 출력(UTXO)이 개인대개인 분산 대장으로부터 식별되는 경우에 계약을 유지하는 것 중 어느 하나를 포함한다. 결정하는 단계 840는 자동화된 프로세스의 일부를 형성할 수 있는 것으로 이해되어야 한다. 예를 들어, 컴퓨터 소프트웨어의 특정 라이선스는 정기적으로(예로, 월별 또는 매년) 지불을 요구하거나, 특정 시간에만 실행되도록 설계될 수 있다. 각각의 경우에, 소프트웨어는 개인대개인 분산 대장을 등록(poll)하고 이에 따라 조치를 취할 수 있어야 한다(예로, 컴퓨터 소프트웨어에 대한 활성 라이선스를 유지하기 위해 사용자로부터 지불을 요청). 소프트웨어가 오라클을 등록(poll)할 수 있는 경우, 다른 외부 조건에 따라 조건부로 소프트웨어를 실행할 수 있다. 지역 잠금(regional lockout)(즉, 지리적 활성화 제한, geographical activation restriction)이 필요한 경우, 사용자의 IP 주소가 해시되고 분산 해시 테이블에 다른 필드를 생성하는데 사용될 수 있다.
대안으로, 또는 추가적으로, 계약 거래가 오라클의(또는 에이전트(A)의) 서명에 의해 소비될 수 있도록 공식화되는 경우 주어진 날짜에 라이선스가 만료될 수 있으며, 다른 거래가 거래의 비소모된 출력(UTXO)을 오라클(또는 에이전트(A))에 자동으로 지불하게 만료일로 설정된 잠금시간(locktime)으로 공식화된다.
하나 이상의 미사용 출력(UTXO)이 개인대개인 대장에서 식별될 수 없는 경우에, 계약 발행자(예로, 에이전트 또는 벤더) 또는 계약 상대방(예로, 라이선스 사용자(lincesee))은 기존 계약을 종료할 수 있다(예로, 컴퓨터 소프트웨어와 같은 라이선스를 종료한다) 종결(closure)의 선동자(instigator)(대부분의 경우 컴퓨터 소프트웨어의 벤더 또는 벤더를 대신한 에이전트(A))는 계약이 취소되었는지 여부를 이전 UTXO가 소모되었는지 여부를 확인함으로써 블록체인을 점검한다(방법 800의 단계830에 따라). 그것이 소비된 경우, 계약이 이미 종결되었으므로 프로세스는 종료한다. 그러나 적어도 하나의 미사용 출력(UTXO)이 개인대개인 대장으로부터 식별될 수 없다면 사용자(예로, 라이선스 사용자)는 분산 해시 테이블(DHT)를 통해 벤더의 서버에 연결될 수 있고 라이선스를 갱신하기 위해 예를 들어 지불할 기회가 주어진다.
기존 종결 거래(closure transaction)이 있는 경우, 선동자(instigator)는 이러한 거래에 단순히 서명하고 블록체인에 제출한다. 기존 종결 거래가 없는 경우, 선동자는 거래 입력을 최종 거래의 UTXO로 하는 거래와 그들의 서명, 계약과 그들의 공개키와 연관된 메타데이터를 생성할 수 있다.
거래가 블록체인에 승인될 때, (참가자는 특정 이유를 알게되지만) 계약이 종료되었음을 알게된다.
적어도 하나의 미사용 출력(UTXO)을 지출함으로써 계약(예로 라이선스)을 종료하기 위한 거래의 예는 표 4에서 제공되어 있으며 간략하게 채굴자의 요금은 표시되지 않는다.
ID-620 거래 ID(Transaction-ID)
Version number 버전수(Version number)
1 입력 수(Number of inputs)
ID-610 Prev Trans Output
IDX-00 Prev Trans Output index
Script length 스크립트 길이(Script length)
Sig-VA < OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG > ScriptSig
0000 0000 0000 0001 시퀀스 수(Sequence number)
1 출력수(Number of outputs)
C1 출력 값(Output value)
Output script length 출력 스크립트 길이(Output script length)
OP_DUP OP_HASH160 < hash of agent public key (PA) > OP_EQUALVERIFY OP_CHECKSIG 출력 스크립트(Output script)
잠금시간(LockTime)
표 3과 유사하게, 표3의 네번째줄 내지 여덟번째줄은 거래(ID-610)에 대한 입력을 나타낸다. 이 예에서, 입력은 1/4(1-of-4) 다중 서명P2SH 거래, 즉 표 3에 도시된 거래(ID-610) 의 출력이다. 일곱번째줄의 상환 스크립트는 1/4다중서명P2SH 거래, 즉 제2 상환 스크립트(RS2)의 상환 스크립트와 대응된다. 따라서 거래(ID-610)의 출력을 잠금해제 하기 위해, 제2 상환 스크립트(RS2)는 에이전트의 공개키(PA) 또는 제1 사용자의 공개키(PU1)로 서명되어야 한다.표 3의 아홉번째줄 내지 열세번째줄은 미사용 출력(UTXO)을 나타내는 경우 거래(ID-620)의 출력을 나타낸다(즉, 에이전트(A) 또는 오라클에 지불되는 암호화폐의 양(C1)) 열번째줄은 암호화폐의 제1 양(C1)인 출력값을 보여준다.
컴퓨터 소프트웨어 또는 라인센서의 위치를 나타내는 식별자(Identifier indicative of the location of the computer software or licence)
상술한 바와 같이 데이터(D1) 또는 라이선스는 각각 컴퓨터 소프트웨어 또는 라이선스의 위치를 나타내는 식별자를 포함할 수 있다.
일 예에서, 식별자는 데이터(D1) 또는 라이선스와 독립적으로 결정될 수 있고, 데이터(D1) 또는 라이선스와 별개로 유지될 수 있다. 식별자는 상기 방법100에서 설명된 바와 같이 데이터(D1) 및 제1 해시값(H1)과 함께 키-값 쌍의 값에 할당될 수 있다. 이러한 방식으로, 식별자는 메시지 풋(put(키, 값))의 값 필드에 포함될 수 있고, 상술한 바와 같이 DHT13의 참여 노드에 전송될 수 있다.
일 예에서, 위치를 나타내는 식별자는 인터넷 상의 객체에 대한 URL을 포함할 수 있다. 다른 예에서, 위치를 나타내는 식별자는 해시 테이블 또는 DHT13과 같은 저장소에 대한 주소를 포함할 수 있다. 또 다른 예에서, 위치를 나타내는 식별자는 제1 노드3의 제1 처리 장치21와 연관된 데이터 저장소17와 같은 컴퓨터 기반의 자원 상에 제공되는 서버, 데이터 베이스 또는 저장 장치와 같은 컴퓨터 기반의 저장소의 주소를 포함할 수 있다.
도 6은 컴퓨터 소프트웨어 또는 라이선스의 위치를 결정하는 방법500을 도시한다. 방법 500은 제1 상환 스크립트(RS1)으로부터 메타데이터(M)를 결정하는 단계510를 포함한다. 상술한 바와 같이, 메타데이터(M)는 제1 상환 스크립트(RS1)의 공개키에 사용할 수 있는 15개 장소 중 하나 이상에 내장될 수 있다.
비트코인 프로토콜의 P2SH 방법에서 거래의 출력이 후속 거래에서 소비될 때 상환 스크립트는 후속 거래에서 볼 수 있다. 전술한 바와 같이, 표 2를 참조하면 발행 토큰에 대한 거래(ID-600) 은 에이전트(A)에게 지불된다. 이러한 방법으로 에이전트(A)는 제1 상환 스크립트(RS1)를 노출하도록 이러한 발행 토큰을 소모할 수 있다. 제2 해시값(H2)에 기초한 메타데이터(M)는 P2P 분산 대장14 상에서 볼 수 있다. 이러한 방식으로, 제2 해시값(H2)은 제1 상환 스크립트(RS1)에서 메타데이터(M)로부터 검색될 수 있다520. 일 예에서, 키-값 쌍의 키와 연관된 값은 요청 메시지 get(키)를 사용하여 DHT13으로부터 검색될 수 있다.
방법 500은 DHT13의 참여 노드와 연관된 프로세서에 제2 해시값(H2)을 통신 네트워크5를 통해 전송하는 단계530를 포함한다. 전술한 바와 같이, 제2 해시값(H2) 은 키-값 쌍의 키일 수 있다. 위에서 설명한 바와 같이, 주어진 키에 대한 값은 DHT13의 임의의 참여 노드에 키를 포함하는 메시지를 제공함으로써 검색될 수 있다. 그로므로, 식별자가 키-값 쌍의 값 필드에 포함되는 예에서, 방법 500은 참여 노드의 프로세서로부터 컴퓨터 소프트웨어 또는 라이선스의 위치를 나타내는 식별자를 결정할 수 있다 540.
처리 장치(Processing device)
전술한 바와 같이, 제1 3 및 제2 노드 7는 컴퓨터, 태블릿 컴퓨터, 이동 통신 장치, 컴퓨터 서버 등과 같은 전자 장치일 수 있다. 전자 장치는 처리 장치 21, 27, 데이터 저장소 17 및 사용자 인터페이스 15를 포함할 수 있다.
도 7은 처리 장치 21, 27의 예를 도시한다. 처리 장치 21, 27은 제1 노드 3, 제2 노드7 또는 달리 도시되지 않은 다른 노드에서 사용될 수 있다. 처리 장치 21, 27는 버스1530을 통해 서로 통신하는 프로세서1510, 메모리 1520 및 인터페이스 장치 1540를 포함한다. 메모리 1520는 전술한 방법 100 및 500을 구현하기 위한 기계 판독가능한 명령어 및 데이터를 포함하는 소프트웨어 프로그램을 저장하고, 프로세서 1510는 메모리1520로부터 명령어를 수행하여 방법 100 및 500을 구현한다. 인터페이스 장치1540는 통신 네트워크5와 함께 일부예에서 사용자 인터페이스15와 데이터 저장소17와 같은 주변 장치와의 통신을 용이하게 하는 통신 모듈을 포함할 수 있다. 처리 장치1510가 독립적인 네트워크 요소일수도 있지만, 처리 장치1510는 다른 네트워크 요소의 일부일 수도 있다는 것을 알아야 한다. 또한, 처리 장치1510에 의해 수행되는 일부 기능들은 다수의 네트워크 요소들 사이에 분산될 수 있다. 예를 들어, 제1 노드3는 제1 노드3와 관련된 보안 로컬 영역 네트워크에서 방법 100, 500을 수행하기 위해 다수의 처리 장치21를 가질 수 있다.
이러한 개시에서 사용자, 고용주, 피고용인, 발행인, 판매자, 제공자 또는 기타 개체가 서명, 발행, 결정, 계산, 전송, 수신, 생성 등의 특정 작업을 수행한다고 설명하는 경우 이러한 워딩(wording)은 설명의 명확화를 위해 사용된다. 이러한 동작은 이런 개체에 의해 동작되는 컴퓨팅 장치에 의해 수행된다는 것을 이해해야 한다.
당업자는 본 개시물의 넓은 범용 범위를 벗어나지 않으면서 상술한 실시예에 대해 다양한 변형 및/또는 수정이 이루어질 수 있음을 이해할 것이다. 따라서 본 실시예들은 모든 면에서 예시적으로 제한적이지 않은 것으로 간주되어야 한다.

Claims (20)

  1. 각 단계가 처리 장치(processing resource)에 의해 수행되는 방법으로서,
    제1 사용자 장치와 연관된 제1 사용자와 제2 사용자 장치와 연관된 제2 사용자 사이의 라이선스와 관련된 계약을 컴퓨터 기반 저장소(repository) 상에 또는 내부에 상기 계약을 저장하는 단계;
    에이전트에서 상기 제1 사용자 또는 상기 제2 사용자로 토큰의 전송을 포함하는 거래를 통신 네트워크를 통해 수신하는 단계;
    거래가 적어도 하나의 미사용(unspent) 출력(UTXO)을 포함하는지 여부를 결정하도록 개인대개인(peer-to-peer) 분산 대장(distributed ledger)에 질의하는 단계(Querying); 및
    상기 개인대개인 분산 대장에 질의하는 단계에 응답하여 상기 계약의 실행을 변형할지 여부를 결정하는 단계;를 포함하고,
    상기 거래는 상기 계약이 저장된 위치를 나타내는 식별자를 포함하는 메타데이터를 포함하고,
    상기 개인대개인 분산 대장에 질의하는 단계는 적어도 하나의 미사용 출력(UTXO)을 식별하기 위해 상기 개인대개인 분산 대장을 스캔하는 단계를 포함하고,
    상기 결정하는 단계는,
    상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장으로부터 식별될 수 없는 경우에 계약을 종료하는 단계; 또는
    상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장으로부터 식별되는 경우에 상기 계약을 유지하는 단계를 더 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  2. 제1항에 있어서,
    상기 거래는 결정론적(deterministic) 상환 스크립트 주소를 더 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  3. 제2 항에 있어서,
    상기 상환 스크립트 주소는 페이 투 스크립트 해시(P2SH) 주소인 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  4. 제1항에 있어서,
    상기 계약을 종료하는 단계는 상기 적어도 하나의 미사용 출력(UTXO)을 소비하기 위한 블록체인에 추가 거래를 퍼뜨리는 단계를 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  5. 제4항에 있어서,
    상기 추가 거래를 퍼뜨리는 단계에서,
    상기 추가 거래는 지정된 데이터 및/또는 시간에 적어도 하나의 미사용 출력(UTXO)을 소비하라는 명령을 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  6. 제4항에 있어서,
    상기 추가 거래는,
    상기 적어도 하나의 미사용 출력(UTXO)인 입력; 및
    서명, 상기 메타데이터, 상기 에이전트와 연관된 에이전트 공개키(PA) 및 상기 제1 사용자와 연관된 제1 사용자 공개키(PU1)를 포함하는 상환 스크립트를 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 계약은 적어도 하나의 조건을 상기 제1 사용자와 상기 제2 사용자 사이에서 라이선스의 동작에 관련되고; 그리고
    적어도 하나의 행동의 실행이 상기 조건의 평가에 의존하는 것으로 정의하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  8. 제1항 내지 제6항 중 어느 항에 있어서,
    상기 메타데이터는,
    상기 계약이 컴퓨터 기반 저장소에 저장되는 주소(address) 또는 상기 주소의 표현(representation); 및/또는
    계약의 해시;를 포함하는,
    계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  9. 제1항 내지 제6항 중 어느 어느 한 항에 있어서,
    상기 개인대개인 분산 대장에 질의하는 단계는,
    상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장을 위한 미사용 거래 출력의 리스트에 존재하는지 여부를 결정함으로써 상기 계약이 종료되었는지 여부를 검사하는 단계를 더 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  10. 제1항 내지 제6항 중 어느 어느 한 항에 있어서,
    상기 계약은 분산 해시 테이블(Distributed Hash Table(DHT))에 저장되는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  11. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 계약은 상기 계약을 이행하기 위한 결정성 유한 오토메이션(Deterministic Finite Automation, DFA)를 포함하는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  12. 제11항에 있어서,
    상기 결정성 유한 오토메이션(Deterministic Finite Automation, DFA)은 코드 체계(codification scheme)를 사용하여 정의되는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  13. 제1항 내지 제6항 중 어느 어느 한 항에 있어서,
    상기 계약을 갱신(renewing)하는 단계를 더 포함하고,
    상기 계약을 갱신하는 단계는,
    상기 계약과 연관된 이전 키와 관련된 서브키를 생성하는 단계;
    상기 서브키, 상기 계약의 위치 및 상기 계약의 해시를 포함하는 추가 상환 스크립트를 생성하는 단계; 및
    상기 추가 상환 스크립트에 암호화폐의 양(C)을 지불하는 단계에 의해 실행되는(perform) 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  14. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 계약으로부터 유래된(derived) 하위 계약을 생성하는 단계를 더 포함하고,
    상기 하위 계약은 결정적 주소와 연관되고, 시드(seed)를 사용하여 유래된(derived) 새로운 공개키를 사용하는 단계; 상기 계약에 대한 참조로 상기 컴퓨터 기반 저장소 내에 또는 상에 상기 하위 계약을 저장하는 단계; 상기 계약에 대한 참조를 포함하는 상기 하위 계약 블록체인 거래를 상기 개인대개인 분산 대장으로 퍼뜨리는 단계; 및 상기 계약과 연관된 메타데이터에 상기 하위 계약에 대한 참조를 추가하는 단계에 의해 실행되어 생성되는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  15. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제1 사용자과 상기 제2 사용자 사이의 라이선스는 컴퓨터 소프트웨어; 및 음악, 비디오 및 전자 서적을 포함하는 디지털 미디어(digital media) 중 하나 이상과 관련되는 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  16. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 개인대개인 분산 대장은 블록체인인 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  17. 제1항 내지 제6항 중 어느 한 항에 있어서,
    암호화폐는 비트코인인 계약 실행(performance)을 제어하는 컴퓨터 구현된 방법.
  18. 처리 장치가 제1항 내지 제6항 중 어느 한 항의 방법을 실행하게 하는 기계 판독 가능한 명령어를 포함하고, 컴퓨터 저장 매체에 저장되도록 구성되는 컴퓨터 소프트웨어 프로그램.
  19. 계약 실행을 제어하는 컴퓨터 시스템로,
    상기 컴퓨터 시스템은 처리 장치를 포함하고,
    상기 처리 장치는,
    제1 사용자와 제2 사용자 사이의 라이선스와 관련된 계약을 컴퓨터 기반 저장소(repository) 상에 또는 내부에 상기 계약을 저장하고,
    에이전트(A)에서 상기 제1 사용자 또는 상기 제2 사용자로 토큰의 전송을 포함하는 거래를 통신 네트워크를 통해 수신하고,
    거래가 적어도 하나의 미사용(unspent) 출력(UTXO)을 포함하는지 여부를 결정하도록 개인대개인(peer-to-peer) 분산 대장(distributed ledger)에 질의하고, 그리고
    상기 개인대개인 분산 대장에 질의하는 단계에 응답하여 상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장으로부터 식별될 수 없는 경우에 계약을 종료하거나, 또는 상기 적어도 하나의 미사용 출력(UTXO)이 상기 개인대개인 분산 대장으로부터 식별되는 경우에 상기 계약을 유지함으로써 상기 계약의 실행을 변형할지 여부를 결정하며,
    상기 거래는 상기 계약이 저장된 위치를 나타내는 식별자를 포함하는 메타데이터를 포함하는,
    계약 실행을 제어하는 컴퓨터 시스템.
  20. 삭제
KR1020187034208A 2016-04-29 2017-04-28 분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템 KR102542981B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1607477.5 2016-04-29
GBGB1607477.5A GB201607477D0 (en) 2016-04-29 2016-04-29 A method and system for controlling the performance of a contract using a distributed hash table and a peer to peer distributed ledger
PCT/IB2017/052463 WO2017187395A1 (en) 2016-04-29 2017-04-28 A method and system for controlling the performance of a contract using a distributed hash table and a peer-to-peer distributed ledger

Publications (2)

Publication Number Publication Date
KR20190004310A KR20190004310A (ko) 2019-01-11
KR102542981B1 true KR102542981B1 (ko) 2023-06-13

Family

ID=56234104

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187034208A KR102542981B1 (ko) 2016-04-29 2017-04-28 분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템

Country Status (13)

Country Link
US (1) US20190095909A1 (ko)
EP (2) EP4057200A1 (ko)
JP (3) JP7029408B2 (ko)
KR (1) KR102542981B1 (ko)
CN (1) CN109074566A (ko)
AU (1) AU2017257447B2 (ko)
BR (1) BR112018071814A2 (ko)
CA (1) CA3019267A1 (ko)
GB (2) GB201607477D0 (ko)
IL (1) IL262533B2 (ko)
PH (1) PH12018502269A1 (ko)
SG (2) SG10202010638YA (ko)
WO (1) WO2017187395A1 (ko)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10354325B1 (en) 2013-06-28 2019-07-16 Winklevoss Ip, Llc Computer-generated graphical user interface
US9892460B1 (en) 2013-06-28 2018-02-13 Winklevoss Ip, Llc Systems, methods, and program products for operating exchange traded products holding digital math-based assets
US10068228B1 (en) 2013-06-28 2018-09-04 Winklevoss Ip, Llc Systems and methods for storing digital math-based assets using a secure portal
US11170346B2 (en) * 2016-09-19 2021-11-09 Sap Se Decentralized credentials verification network
US10185550B2 (en) 2016-09-28 2019-01-22 Mcafee, Inc. Device-driven auto-recovery using multiple recovery sources
JP2020503579A (ja) 2016-10-25 2020-01-30 エヌチェーン ホールディングス リミテッドNchain Holdings Limited 電子通信の受信者を指定するブロックチェーンに基づく方法及びシステム
US20190279197A1 (en) * 2016-10-28 2019-09-12 nChain Holdings Limited Systems and methods for implementing deterministic finite automata (dfas) via a blockchain
WO2018126076A1 (en) 2016-12-30 2018-07-05 Intel Corporation Data packaging protocols for communications between iot devices
GB201701589D0 (en) * 2017-01-31 2017-03-15 Nchain Holdings Ltd Computer-implemented system and method
CN106941487B (zh) * 2017-02-24 2021-01-05 创新先进技术有限公司 一种数据发送方法及装置
CN108881120B (zh) * 2017-05-12 2020-12-04 创新先进技术有限公司 一种基于区块链的数据处理方法及设备
US10552556B2 (en) 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
CN110019516B (zh) * 2017-11-10 2021-08-20 华为技术有限公司 一种信息管理方法、装置及系统
KR101878869B1 (ko) * 2017-11-17 2018-08-16 주식회사 미탭스플러스 블록체인 기반의 사용자 식별 관리를 위한 분산 원장 장치 및 분산 원장 방법
WO2019113016A1 (en) * 2017-12-04 2019-06-13 Dan Kikinis System and method for performance testing of scalable distributed network transactional databases
WO2019124610A1 (ko) * 2017-12-21 2019-06-27 문인식 블록체인을 이용한 개인정보 분리 후 분산 저장 및 조합을 통한 인증 방법
WO2019138391A1 (fr) * 2018-01-15 2019-07-18 Enrico Maim Systèmes et procédés transactionnels à base de tokens
US11438139B2 (en) * 2018-02-07 2022-09-06 Raouf Boutaba Blockchain based secure naming and update verification
US11308487B1 (en) 2018-02-12 2022-04-19 Gemini Ip, Llc System, method and program product for obtaining digital assets
US10438290B1 (en) 2018-03-05 2019-10-08 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
US11200569B1 (en) 2018-02-12 2021-12-14 Winklevoss Ip, Llc System, method and program product for making payments using fiat-backed digital assets
US10540654B1 (en) 2018-02-12 2020-01-21 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
US10373129B1 (en) 2018-03-05 2019-08-06 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
US11475442B1 (en) 2018-02-12 2022-10-18 Gemini Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US10373158B1 (en) 2018-02-12 2019-08-06 Winklevoss Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US11909860B1 (en) 2018-02-12 2024-02-20 Gemini Ip, Llc Systems, methods, and program products for loaning digital assets and for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain
US11494344B2 (en) * 2018-03-06 2022-11-08 International Business Machines Corporation Customized endorsement logic for blockchain
US10846375B2 (en) * 2018-04-11 2020-11-24 Microsoft Technology Licensing, Llc Software license distribution and validation using a distributed immutable data store
GB201806448D0 (en) * 2018-04-20 2018-06-06 Nchain Holdings Ltd Computer-implemented methods and systems
US11563557B2 (en) * 2018-04-24 2023-01-24 International Business Machines Corporation Document transfer processing for blockchains
KR20210003234A (ko) * 2018-04-27 2021-01-11 엔체인 홀딩스 리미티드 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
JP6684850B2 (ja) * 2018-05-16 2020-04-22 株式会社日立製作所 分散台帳システム、分散台帳サブシステム、および、分散台帳ノード
CN108664650B (zh) * 2018-05-17 2020-05-22 百度在线网络技术(北京)有限公司 一种区块链网络的事务处理方法、装置、设备及存储介质
CN108921542B (zh) * 2018-05-30 2021-09-28 招商银行股份有限公司 数字资产的离线支付方法、付款端、收款端及存储介质
CN109003078B (zh) 2018-06-27 2021-08-24 创新先进技术有限公司 基于区块链的智能合约调用方法及装置、电子设备
CN113095822A (zh) * 2018-06-27 2021-07-09 创新先进技术有限公司 基于区块链的智能合约调用方法及装置、电子设备
US10944560B2 (en) * 2018-08-02 2021-03-09 International Business Machines Corporation Privacy-preserving identity asset exchange
US10721069B2 (en) 2018-08-18 2020-07-21 Eygs Llp Methods and systems for enhancing privacy and efficiency on distributed ledger-based networks
EP3844637A4 (en) * 2018-08-30 2022-06-08 Neuralia Technologies Inc. SYSTEM AND PROCEDURES FOR ENHANCED BLOCKCHAIN IMPLEMENTED INTELLIGENT CONTRACT
CN109274667B (zh) * 2018-09-14 2020-06-23 阿里巴巴集团控股有限公司 一种基于区块链的版权事件存证方法及系统
US11226971B2 (en) 2018-10-03 2022-01-18 International Business Machines Corporation Blockchain implementing reliability database
US11243917B2 (en) 2018-10-03 2022-02-08 International Business Machines Corporation Blockchain implementing reliability database
US11314749B2 (en) 2018-10-03 2022-04-26 International Business Machines Corporation Blockchain implementing reliability database
US11146399B2 (en) 2018-10-19 2021-10-12 Eygs Llp Methods and systems for retrieving zero-knowledge proof-cloaked data on distributed ledger-based networks
RS20181564A1 (sr) 2018-12-21 2020-06-30 Zivanovic Sava Sistem za automatsko upravljanje i deponovanje srži (heša) dokumenata (slika) u blok-čejn tehnologiji
US10425230B1 (en) * 2019-03-01 2019-09-24 Capital One Services, Llc Identity and electronic signature verification in blockchain
US11677563B2 (en) 2019-04-15 2023-06-13 Eygs Llp Systems, apparatus and methods for local state storage of distributed ledger data without cloning
US11943358B2 (en) 2019-04-15 2024-03-26 Eygs Llp Methods and systems for identifying anonymized participants of distributed ledger-based networks using zero-knowledge proofs
US11502838B2 (en) 2019-04-15 2022-11-15 Eygs Llp Methods and systems for tracking and recovering assets stolen on distributed ledger-based networks
US11316691B2 (en) 2019-04-15 2022-04-26 Eygs Llp Methods and systems for enhancing network privacy of multiple party documents on distributed ledger-based networks
US11537592B1 (en) 2019-04-22 2022-12-27 Wells Fargo Bank, N.A. Metadata management through blockchain technology
US11194770B2 (en) * 2019-05-02 2021-12-07 International Business Machines Corporation Database mergeable ledgers
US11206138B2 (en) 2019-05-02 2021-12-21 Ernst & Young U.S. Llp Biosignature-based tokenization of assets in a blockchain
CN110232094A (zh) * 2019-05-06 2019-09-13 深圳壹账通智能科技有限公司 跨链交易的装置、方法及存储介质
GB2583767A (en) * 2019-05-10 2020-11-11 Nchain Holdings Ltd Methods and devices for public key management using a blockchain
GB2588072A (en) * 2019-05-24 2021-04-21 Nchain Holdings Ltd Malleability of transactions for inclusion in a blockchain
US11232439B2 (en) 2019-08-09 2022-01-25 Eygs Llp Methods and systems for preventing transaction tracing on distributed ledger-based networks
US10990879B2 (en) 2019-09-06 2021-04-27 Digital Asset Capital, Inc. Graph expansion and outcome determination for graph-defined program states
US11132403B2 (en) * 2019-09-06 2021-09-28 Digital Asset Capital, Inc. Graph-manipulation based domain-specific execution environment
CN110688679B (zh) * 2019-09-30 2023-09-05 湖南天河国云科技有限公司 一种基于区块链的账户锁定/解锁方法及装置
EP4062585A1 (en) 2019-11-20 2022-09-28 Eygs LLP Systems, apparatus and methods for identifying and securely storing distinguishing characteristics in a distributed ledger within a distributed ledger-based network based on fungible and non-fungible tokens
WO2021125106A1 (ja) * 2019-12-19 2021-06-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 制御方法、装置、および、プログラム
GB201919298D0 (en) * 2019-12-24 2020-02-05 Nchain Holdings Ltd Computer-implemented system and method
US11475453B2 (en) 2019-12-31 2022-10-18 Capital One Services, Llc System and techniques for utilizing a smart contracts library
US11874804B2 (en) 2020-02-05 2024-01-16 International Business Machines Corporation Load balancing based blockchain transaction submission
US11334879B2 (en) * 2020-02-14 2022-05-17 1191212 B.C. Ltd. Method and system for digital payment instrument deployment of authentication seal
CA3180231A1 (en) 2020-04-15 2021-10-21 Eygs Llp Intelligent assertion tokens for authenticating and controlling network communications using a distributed ledger
EP4256751A1 (en) * 2020-12-02 2023-10-11 Trock, Stanislav Blockchain
KR102572232B1 (ko) * 2020-12-18 2023-08-28 재단법인 경주스마트미디어센터 스마트 컨트랙트 기반의 계약서에 따른 정산을 수행하기 위한 방법 및 이를 위한 장치
US20220318209A1 (en) * 2021-03-31 2022-10-06 International Business Machines Corporation Computer mechanism for analytics outcome transparency
US20230026057A1 (en) * 2021-07-21 2023-01-26 Hewlett Packard Enterprise Development Lp Secure data center update and monitoring

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101342258B1 (ko) * 2011-12-26 2013-12-16 텔코웨어 주식회사 분산 데이터 관리 시스템 및 그 방법
US20150379510A1 (en) * 2012-07-10 2015-12-31 Stanley Benjamin Smith Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7627644B2 (en) * 2003-11-28 2009-12-01 Canon Kabushiki Kaisha Recipient-centred proactive caching in a peer-to-peer system
US7526672B2 (en) * 2004-02-25 2009-04-28 Microsoft Corporation Mutual exclusion techniques in a dynamic peer-to-peer environment
CN100581109C (zh) * 2004-02-25 2010-01-13 微软公司 动态对等网络环境中的互斥系统和方法
WO2007011841A2 (en) * 2005-07-15 2007-01-25 Indxit Systems, Inc. Systems and methods for data indexing and processing
US8301880B2 (en) * 2009-11-09 2012-10-30 Cisco Technology, Inc. Certificate enrollment with purchase to limit sybil attacks in peer-to-peer network
JP5615779B2 (ja) 2011-09-02 2014-10-29 日本電信電話株式会社 ファイル共有システム、分析サーバ及びファイル共有方法
CN103092845A (zh) 2011-10-27 2013-05-08 镇江雅迅软件有限责任公司 一种基于哈希表技术的合同收费系统
US9876775B2 (en) * 2012-11-09 2018-01-23 Ent Technologies, Inc. Generalized entity network translation (GENT)
US9282693B2 (en) * 2013-02-20 2016-03-15 Deere & Company Data encoding with planting attributes
US9595034B2 (en) * 2013-10-25 2017-03-14 Stellenbosch University System and method for monitoring third party access to a restricted item
US20150206106A1 (en) * 2014-01-13 2015-07-23 Yaron Edan Yago Method for creating, issuing and redeeming payment assured contracts based on mathemematically and objectively verifiable criteria
FR3018378A1 (fr) * 2014-03-12 2015-09-11 Enrico Maim Systeme et procede transactionnels a architecture repartie fondees sur des transactions de transferts d'unites de compte entre adresses
FR3018370A1 (fr) * 2014-03-07 2015-09-11 Enrico Maim Procede et systeme de generation automatique de crypto-monnaies
US20160098723A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods
EP3324355B1 (en) * 2015-07-13 2020-08-26 Nippon Telegraph and Telephone Corporation Contract agreement method, agreement verification method, contract agreement system, agreement verification device, contract agreement device, contract agreement program and agreement verification program
WO2017170912A1 (ja) * 2016-03-31 2017-10-05 株式会社bitFlyer トランザクション処理装置、トランザクション処理方法、及びそのためのプログラム
JP6709243B2 (ja) * 2018-03-01 2020-06-10 株式会社エヌ・ティ・ティ・データ 情報処理装置
CN108647963B (zh) * 2018-05-02 2020-05-12 百度在线网络技术(北京)有限公司 区块链主链的确定方法、装置、服务器和存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101342258B1 (ko) * 2011-12-26 2013-12-16 텔코웨어 주식회사 분산 데이터 관리 시스템 및 그 방법
US20150379510A1 (en) * 2012-07-10 2015-12-31 Stanley Benjamin Smith Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
‘[Mastering Bitcoin #4] Keys, Address and Wallets’, 워드프레스(2015.08.24. 게재)*
‘차세대 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼’, P2PFWiki(2015.03.16. 게재)*

Also Published As

Publication number Publication date
IL262533B1 (en) 2023-07-01
JP7029408B2 (ja) 2022-03-03
GB201607477D0 (en) 2016-06-15
JP2019515534A (ja) 2019-06-06
EP4057200A1 (en) 2022-09-14
KR20190004310A (ko) 2019-01-11
AU2017257447A1 (en) 2018-10-25
IL262533B2 (en) 2023-11-01
CN109074566A (zh) 2018-12-21
CA3019267A1 (en) 2017-11-02
JP7381625B2 (ja) 2023-11-15
SG10202010638YA (en) 2020-11-27
IL262533A (en) 2018-12-31
SG11201808758TA (en) 2018-11-29
EP3449446A1 (en) 2019-03-06
BR112018071814A2 (pt) 2019-02-19
GB201806703D0 (en) 2018-06-06
PH12018502269A1 (en) 2019-09-09
GB2564207A (en) 2019-01-09
AU2017257447B2 (en) 2023-03-30
WO2017187395A1 (en) 2017-11-02
JP2024001326A (ja) 2024-01-09
JP2022078115A (ja) 2022-05-24
US20190095909A1 (en) 2019-03-28

Similar Documents

Publication Publication Date Title
KR102542981B1 (ko) 분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템
US11366882B2 (en) Method and system for verifying integrity of a digital asset using a distributed hash table and a peer-to-peer distributed ledger
JP6877448B2 (ja) 分散ハッシュテーブル及びブロックチェーンを用いてコンピュータソフトウェアを保証する方法及びシステム
US20210374214A1 (en) Method and system for securing computer software using a distributed hash table and a blockchain

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
X701 Decision to grant (after re-examination)