KR20220088956A - 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 - Google Patents

기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 Download PDF

Info

Publication number
KR20220088956A
KR20220088956A KR1020227020662A KR20227020662A KR20220088956A KR 20220088956 A KR20220088956 A KR 20220088956A KR 1020227020662 A KR1020227020662 A KR 1020227020662A KR 20227020662 A KR20227020662 A KR 20227020662A KR 20220088956 A KR20220088956 A KR 20220088956A
Authority
KR
South Korea
Prior art keywords
node
proof
nodes
generated
shared data
Prior art date
Application number
KR1020227020662A
Other languages
English (en)
Other versions
KR102537774B1 (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 KR20220088956A publication Critical patent/KR20220088956A/ko
Application granted granted Critical
Publication of KR102537774B1 publication Critical patent/KR102537774B1/ko

Links

Images

Classifications

    • 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
    • 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/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

공유된 데이터를 노출하지 않고 공유된 데이터로부터 생성된 증명들을 검증하기 위한 시스템들 및 방법들이 제공된다. 한 양태에서, 한 방법은 : 제1 노드로부터, 제1 노드와 연관된 제1 개인 키 및 제1 노드와 제2 노드 사이에서 공유된 데이터로부터 생성된 제1 증명을 수신하는 단계; 제2 노드로부터, 제2 노드와 연관된 제2 개인 키 및 공유된 데이터로부터 생성된 제2 증명을 수신하는 단계; 공유된 데이터를 노출하지 않고, 제1 증명 및 제2 증명 양쪽 모두가 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 단계; 및 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 단계를 포함한다.

Description

기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들
관련 출원의 상호참조
본 출원은, 모든 목적을 위해 참조에 의해 본 명세서에 포함되는, 2020년 7월 30일에 출원된 미국 특허출원 번호 제63/058,918호에 대한 우선권을 주장한다.
기술적 분야
개시된 기술은 대체로, 향상된 데이터 검증 및 암호화 서명을 제공하기 위한 시스템들 및 방법들에 관한 것이다.
고전적인 암호화 서명 방식에서, 개인 키는 서명자에 의해 취급되는 유일한 비밀 데이터이다. 대응하는 공개 키는 공개적이라고 알려진 데이터이다. 예를 들어, 서명 엔티티는 개인 키를 저장하고 대응하는 공개 키를 임의의 다른 당사자와 공유할 수 있다.
서명되는 메시지는 공개 데이터이며 서명자의 개인 키에 대응하는 공개 키와 마찬가지로 서명을 검증하는 누구에게라도 요구된다.
검증자 엔티티는, 메시지, 공개 키, 및 디지털 서명이 서로 대응하는지를 검증할 수 있다. 검증 프로세스는 3개의 데이터 일관성(즉, 메시지, 공개 키, 및 디지털 서명이 서로 대응하는지)을 수락(예를 들어, "성공"을 출력 등) 또는 거부(예를 들어, "실패"를 출력 등)한다. 검증 프로세스가 "성공"을 출력하면, 제3자는 비밀 개인 키 보유자에 의해 메시지가 서명되었음을 높은 확률로 확신한다. 엔티티의 개인 키를 알지 못한 채 서명 엔티티에 의해 유효한 디지털 서명을 생성하는 것은 계산적으로 불가능하다는 가정이 있다. 검증자는, 서명 엔티티의 신원이 개인 키를 소유한 엔티티에 의해 달성된다는 가정에 의존할 수 있다. 일부 예에서, 검증자는, 디지털적으로 결정된 신원의 가정하에 서명 엔티티에 상품 또는 서비스를 제공할 수 있다. 일부 예에서, 검증자는, 서명이 이용된 응용에 따라, 검증된 정보에 대한 응답으로서 다른 액션들을 수행할 수 있다(예를 들어, 서명된 문서에 대한 계약/합의/조치를 승인 등).
여기서 설명된 시스템들은 SPoCK(Specialized Proof of Confidential Knowledge) 방식을 채용한다. 이 방식은, 개인 키가 여전히 비밀이지만 메시지도 비밀인 시나리오를 제시한다. 이 방식은, 설명된 시스템들 내에서 증명자들에 의해 이들 2개의 비밀 데이터를 이용하여 증명을 생성하기 위해 채용될 수 있다. 일부 실시예에서, 이 방식은 둘 이상의 당사자가 그들이 동일한 비밀(예를 들어, 비밀 메시지)을 알고 있다는 것을 보여주는 공개 증명을 제공하는 것을 허용한다. 일부 실시예에서, 증명을 생성하고 둘 이상의 증명을 검증하는 프로세스는 비대화형이다. 일부 실시예에서, 모든 증명은 증명자의 개인 키를 이용하여 생성되기 때문에 증명자에게 특화된다. 일부 실시예에서, 증명은 비밀 메시지를 비밀로 유지하면서 증명자에 의해 공개적으로 노출될 수 있다.
증명들은 특화되거나 비특화될 수 있다. 증명은 한 명의 증명자 사용자에게만 귀속될 수 있는 경우 "특화"된다. "특화된" 증명은 증명자 사용자에 의해서만 소유된 데이터(예를 들어, 개인 키)를 이용하여 생성될 수 있다. "비특화된" 증명은, 특정한 증명자 사용자에게 귀속될 수 없고 임의의 증명자 사용자에 의해 생성되었다고 주장할 수 없는 증명이다.
한 예시적인 예에서, 2명의 증명자 사용자 A와 B는 양쪽 모두 비밀을 알고 있으며 이를 검증자 사용자에게 또는 심지어 공개적으로 증명하기를 원한다. 증명자 사용자들은 비밀을 공개적으로 노출할 수 없으며(그렇지 않으면 더 이상 비밀이 아님) 비밀의 비특화된 증명을 공유할 수 없다. 예를 들어, 비밀을 해시하고 해시를 공유하는 것은 비밀을 공개적으로 보호하지만, 임의의 당사자는 해시를 복사하여 비밀을 알고 있다고 주장할 수 있다. 본 개시내용의 일부 실시예에서, 증명은, 그 증명을 생성한 디바이스가 그 증명자 사용자에게만 귀속될 수 있도록 생성될 수 있다. 이 방식은 2명의 증명자 사용자와 함께 작동할 수 있지만, 동일한 비밀을 모두가 알고 있다는 것을 보여주기 위해 임의의 수의 증명자 사용자에게 일반화될 수 있다.
한 예로서, 일부 실시예에서, 증명자 사용자는 비밀 메시지 및 디바이스의 개인 키를 이용하여 증명(예를 들어, 기밀 지식의 특화된 증명)을 생성할 수 있다. 생성된 증명은, 단 한 명의 증명자 사용자의 대응하는 공개 키를 이용하여 검증자가 자체적으로 검증될 수 없다. 이것은, 메시지가 비밀이고 검증자가 알 수 없기 때문이다. 그러나, 제2 개인 키를 보유하고 있는 제2 당사자(제2 증명자 사용자)가 동일한 비밀 메시지와 이 제2 개인 키를 이용하여 증명(예를 들어, 기밀 지식의 특화된 증명)을 생성하는 경우, 검증자는, 증명자 사용자들의 2개의 공개 키를 이용하여, 2개의 증명 양쪽 모두가 동일한 비밀 메시지로부터 생성되었는지를 결정할 수 있다. 이러한 실시예들에서, 검증자는 비밀 메시지의 내용에 액세스할 수 없지만, 검증 프로세스가 "성공"을 출력한다면, 검증자는 양쪽 증명자 사용자들이 동일한 비밀 메시지를 이용했는지를 결정할 수 있다.
따라서, 한 양태에서, 공유된 데이터를 노출하지 않고 공유된 데이터로부터 생성된 증명들을 검증하기 위한 컴퓨터-구현된 방법들이 여기서 설명된다. 이 방법들은 하나 이상의 프로세서에 의해 실행된다. 이 방법들은, 제1 노드로부터, 제1 노드와 연관된 제1 개인 키 및 제1 노드와 제2 노드 사이에서 공유된 데이터로부터 생성된 제1 증명을 수신하는 단계; 제2 노드로부터, 공유된 데이터 및 제2 노드와 연관된 제2 개인 키로부터 생성된 제2 증명을 수신하는 단계; 공유된 데이터를 노출하지 않고, 제1 증명 및 제2 증명 양쪽 모두가 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 단계; 및 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 단계를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 각각 제1 노드 및 제2 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 제1 증명은 제1 노드에만 귀속될 수 있다. 일부 실시예에서, 제2 증명은 제2 노드에만 귀속될 수 있다. 일부 실시예에서, 제1 증명 또는 제2 증명은 그 상응하는 공개 키만으로 검증될 수 없다. 일부 실시예에서, 제1 증명 및 제2 증명 각각은, 그 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 서명들은 BLS 서명 방식에 기초하여 한다. 일부 실시예에서, 제1 증명 및 제2 증명의 검증은, 2개의 서명, 제1 공개 키 및 제2 공개 키에 기초한 페어링 동등성 체크(pairing equality check)를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명을 검증하는 단계는 페어링 동등성 체크를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다. 일부 실시예에서, 제1 노드는 실행 노드의 계산의 올바름을 보장하기 위해 채용되는 검증 노드를 포함한다. 일부 실시예에서, 계산은 실행 트레이스를 포함한다. 일부 실시예에서, 제2 노드는 블록의 적어도 하나의 거래를 실행하기 위해 채용되는 실행 노드를 포함한다. 일부 실시예에서, 검증 노드는 계산이 검증되었다는 증명으로서 제1 증명을 공개한다. 일부 실시예에서, 액션은 상태 응답을 클라이언트에 제공하는 것을 포함하고, 상태 응답은 블록에 대한 출력에 기초하여 결정된다. 일부 실시예에서, 계산은 병렬 및 독립적인 방식의 더 가벼운 계산 검증을 허용하기 위해 청크들로 분할된다. 일부 실시예에서, 액션은, 청크들 각각이 실행 노드 및 검증 노드에 의해 동일한 중간 결과들로부터 일관되게 생성되도록 중재하는 것을 포함한다.
또 다른 양태에서, 공유된 데이터를 노출하지 않고 공유된 데이터로부터 생성된 증명들을 검증하기 위한 시스템들이 여기서 설명된다. 이들 시스템들은 : 하나 이상의 프로세서; 및 하나 이상의 프로세서에 결합되고, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령어들이 저장된 컴퓨터-판독가능한 저장 디바이스를 포함한다. 이들 동작들은, 제1 노드로부터, 제1 노드와 연관된 제1 개인 키 및 제1 노드와 제2 노드 사이에서 공유된 데이터로부터 생성된 제1 증명을 수신하는 것; 제2 노드로부터, 공유된 데이터 및 제2 노드와 연관된 제2 개인 키로부터 생성된 제2 증명을 수신하는 것; 공유된 데이터를 노출하지 않고, 제1 증명 및 제2 증명 양쪽 모두가 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 것; 및 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 것을 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 각각 제1 노드 및 제2 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 제1 증명은 제1 노드에만 귀속될 수 있다. 일부 실시예에서, 제2 증명은 제2 노드에만 귀속될 수 있다. 일부 실시예에서, 제1 증명 또는 제2 증명은 그 상응하는 공개 키만으로 검증될 수 없다. 일부 실시예에서, 제1 증명 및 제2 증명 각각은, 그 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 서명들은 BLS 서명 방식에 기초하여 한다. 일부 실시예에서, 제1 증명 및 제2 증명의 검증은, 2개의 서명, 제1 공개 키 및 제2 공개 키에 기초한 페어링 동등성 체크(pairing equality check )를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명을 검증하는 단계는 페어링 동등성 체크를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다. 일부 실시예에서, 제1 노드는 실행 노드의 계산의 올바름을 보장하기 위해 채용되는 검증 노드를 포함한다. 일부 실시예에서, 계산은 실행 트레이스를 포함한다. 일부 실시예에서, 제2 노드는 블록의 적어도 하나의 거래를 실행하기 위해 채용되는 실행 노드를 포함한다. 일부 실시예에서, 검증 노드는 계산이 검증되었다는 증명으로서 제1 증명을 공개한다. 일부 실시예에서, 액션은 상태 응답을 클라이언트에 제공하는 것을 포함하고, 상태 응답은 블록에 대한 출력에 기초하여 결정된다. 일부 실시예에서, 계산은 병렬 및 독립적인 방식의 더 가벼운 계산 검증을 허용하기 위해 청크들로 분할된다. 일부 실시예에서, 액션은, 청크들 각각이 실행 노드 및 검증 노드에 의해 동일한 중간 결과들로부터 일관되게 생성되도록 중재하는 것을 포함한다.
또 다른 양태에서, 하나 이상의 프로세서에 결합되고 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령어들이 저장된 비일시적인 컴퓨터-판독가능한 저장 매체가 여기서 설명된다. 이들 동작들은, 제1 노드로부터, 제1 노드와 연관된 제1 개인 키 및 제1 노드와 제2 노드 사이에서 공유된 데이터로부터 생성된 제1 증명을 수신하는 것; 제2 노드로부터, 공유된 데이터 및 제2 노드와 연관된 제2 개인 키로부터 생성된 제2 증명을 수신하는 것; 공유된 데이터를 노출하지 않고, 제1 증명 및 제2 증명 양쪽 모두가 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 것; 및 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 것을 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 각각 제1 노드 및 제2 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 제1 증명은 제1 노드에만 귀속될 수 있다. 일부 실시예에서, 제2 증명은 제2 노드에만 귀속될 수 있다. 일부 실시예에서, 제1 증명 또는 제2 증명은 그 상응하는 공개 키만으로 검증될 수 없다. 일부 실시예에서, 제1 증명 및 제2 증명 각각은, 그 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 서명들은 BLS 서명 방식에 기초하여 한다. 일부 실시예에서, 제1 증명 및 제2 증명의 검증은, 2개의 서명, 제1 공개 키 및 제2 공개 키에 기초한 페어링 동등성 체크(pairing equality check )를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명을 검증하는 단계는 페어링 동등성 체크를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다. 일부 실시예에서, 제1 노드는 실행 노드의 계산의 올바름을 보장하기 위해 채용되는 검증 노드를 포함한다. 일부 실시예에서, 계산은 실행 트레이스를 포함한다. 일부 실시예에서, 제2 노드는 블록의 적어도 하나의 거래를 실행하기 위해 채용되는 실행 노드를 포함한다. 일부 실시예에서, 검증 노드는 계산이 검증되었다는 증명으로서 제1 증명을 공개한다. 일부 실시예에서, 액션은 상태 응답을 클라이언트에 제공하는 것을 포함하고, 상태 응답은 블록에 대한 출력에 기초하여 결정된다. 일부 실시예에서, 계산은 병렬 및 독립적인 방식의 더 가벼운 계산 검증을 허용하기 위해 청크들로 분할된다. 일부 실시예에서, 액션은, 청크들 각각이 실행 노드 및 검증 노드에 의해 동일한 중간 결과들로부터 일관되게 생성되도록 중재하는 것을 포함한다.
또 다른 양태에서, 공유된 데이터를 노출하지 않고 공유된 데이터로부터 생성된 증명들을 검증하기 위한 시스템들이 여기서 설명된다. 이들 시스템들은 : 하나 이상의 프로세서; 및 하나 이상의 프로세서에 결합되고, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령어들이 저장된 컴퓨터-판독가능한 저장 디바이스를 포함한다. 이들 동작들은 : 복수의 노드들 각각으로부터, 노드들 사이에서 공유된 데이터 및 각각의 노드와 연관된 상응하는 개인 키로부터 생성된 상응하는 증명을 수신하는 것; 공유된 데이터를 노출하지 않고, 증명들 각각이 개인 키들 중 상응하는 것과 각각 수학적으로 관련된 복수의 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 것; 및 증명들이 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 것을 포함한다. 일부 실시예에서, 증명들 각각은 상응하는 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 증명들 각각은 상응하는 생성 노드에만 귀속될 수 있다. 일부 실시예에서, 증명들 각각은 상응하는 공개 키로만 검증될 수 없다. 일부 실시예에서, 증명들 각각은 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 증명들의 검증은 서명들 및 공개 키들에 기초한 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들을 검증하는 것은 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다.
또 다른 양태에서, 공유된 데이터를 노출하지 않고 공유된 데이터로부터 생성된 증명들을 검증하기 위한 컴퓨터-구현된 방법들이 여기서 설명된다. 이 방법들은 하나 이상의 프로세서에 의해 실행된다. 이 방법들은 : 복수의 노드들 각각으로부터, 노드들 사이에서 공유된 데이터 및 각각의 노드와 연관된 상응하는 개인 키로부터 생성된 상응하는 증명을 수신하는 단계; 공유된 데이터를 노출하지 않고, 증명들 각각이 개인 키들 중 상응하는 것과 각각 수학적으로 관련된 복수의 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 단계; 및 증명들이 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 단계를 포함한다. 일부 실시예에서, 증명들 각각은 상응하는 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 증명들 각각은 상응하는 생성 노드에만 귀속될 수 있다. 일부 실시예에서, 증명들 각각은 상응하는 공개 키로만 검증될 수 없다. 일부 실시예에서, 증명들 각각은 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 증명들의 검증은 서명들 및 공개 키들에 기초한 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들을 검증하는 단계는 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다.
또 다른 양태에서, 하나 이상의 프로세서에 결합되고 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령어들이 저장된 비일시적인 컴퓨터-판독가능한 저장 매체가 여기서 설명된다. 이들 동작들은 : 복수의 노드들 각각으로부터, 노드들 사이에서 공유된 데이터 및 각각의 노드와 연관된 상응하는 개인 키로부터 생성된 상응하는 증명을 수신하는 것; 공유된 데이터를 노출하지 않고, 증명들 각각이 개인 키들 중 상응하는 것과 각각 수학적으로 관련된 복수의 공개 키를 이용하여 공유된 데이터로부터 생성되었음을 검증하는 것; 및 증명들이 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 것을 포함한다. 일부 실시예에서, 증명들 각각은 상응하는 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 증명들 각각은 상응하는 생성 노드에만 귀속될 수 있다. 일부 실시예에서, 증명들 각각은 상응하는 공개 키로만 검증될 수 없다. 일부 실시예에서, 증명들 각각은 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 증명들의 검증은 서명들 및 공개 키들에 기초한 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들을 검증하는 것은 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다. 일부 실시예에서, 증명들의 검증의 횟수는 노드의 수에 선형이고 2차적이지 않다. 일부 실시예에서, 증명들을 검증하는 것은 노드의 수보다 하나 적은 검증을 요구한다.
본 개시내용에 따른 방법들은 여기서 설명된 양태들 및 피처들의 임의의 조합을 포함할 수 있다는 것을 이해해야 한다. 즉, 본 개시내용에 따른 방법들은 여기서 구체적으로 설명된 양태들 및 피처들의 조합으로 제한되지 않고, 제공된 양태들 및 피처들의 임의의 조합을 포함할 수 있다.
본 개시내용의 하나 이상의 실시예의 상세사항은 첨부된 도면들 및 이하의 설명에 개시되어 있다. 본 개시내용의 다른 피처들 및 이점들은 상세한 설명 및 도면들, 및 청구항들로부터 명백할 것이다. 본 요약은, 본 명세서에 첨부된 청구항들에 의해서만 정의되는, 여기서 설명된 임의의 발명들의 범위를 제한하려는 의도가 아니다.
하나 이상의 다양한 실시예에 따라 여기서 개시된 기술이, 이하의 도면들을 참조하여 상세하게 설명된다. 도면들은 단지 예시의 목적으로 제공되며, 개시된 기술의 전형적인 또는 예시적인 실시예를 도시할 뿐이다. 이들 도면들은 개시된 기술에 대한 독자의 이해를 용이화하기 위해 제공되며, 그 폭, 범위 또는 적용가능성을 제한하는 것으로 간주되어서는 안 된다. 예시의 명료성과 용이성을 위해 이들 도면들은 반드시 축척 비율대로 그려진 것은 아님에 유의해야 한다.
도 1은 본 개시내용의 다양한 실시예에 예시된 분산형 원장 및/또는 블록체인 시스템을 나타낸다;
도 2는 본 개시내용의 구현들을 실행하기 위해 채용될 수 있는 비제한적인 예시적인 환경을 도시한다;
도 3은 설명된 시스템에 대한 비제한적인 예시적인 아키텍쳐를 도시한다;
도 4 내지 도 7은 이 방식의 다양한 속성을 설명하는 비제한적인 예시적인 흐름도들을 도시한다;
도 8 및 도 9는 여기서 설명된 시스템들의 실시예들에 의해 구현될 수 있는 비제한적인 예시적인 프로세스들을 도시한다;
도 10은 본 개시내용의 방법들 또는 시스템들을 구현하도록 프로그래밍되거나 기타의 방식으로 구성될 수 있는 비제한적인 예시적인 컴퓨터 시스템을 도시한다.
도면들은 철저히 남김없이 드러내거나 본 발명을 개시된 그대로의 형태만으로 제한하려는 의도는 아니다. 본 발명은 수정 및 변경되어 실시될 수 있으며, 개시된 기술은 청구항들 및 그 균등물들에 의해서만 제한됨을 이해해야 한다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 기술적 용어들은 본 주제가 속하는 기술분야의 통상의 기술자에 통상 이해하는 바와 동일한 의미를 갖는다. 본 명세서 및 첨부된 청구항들에서 사용될 때, 단수 형태들 "한(a)", "하나(an)", 및 "그 하나(the)"은, 정황상 분명하게 달리 지시하지 않는 한 복수의 대상을 포함한다. 본 명세서에서 "또는"에 대한 모든 언급은, 달리 언급되지 않는 한, "및/또는"을 포괄하기 위한 의도이다.
본 명세서에서 "실시간"이라는 용어는, 시스템의 처리 한계들, 데이터 및 이미지들을 정확하게 획득하는데 요구되는 시간, 데이터 및 이미지들의 변화율 등을 주어졌을 때 의도적인 지연 없이 데이터를 전송하거나 처리하는 것을 의미한다. 일부 예에서, "실시간"은 본 개시내용의 실시예들의 컴포넌트들로부터 획득된 정보의 프리젠테이션을 서술하기 위해 사용된다.
본 명세서에서 사용될 때, "스마트 계약"이라는 용어는, 디지털화된 환경에서 계산 이벤트들 및 액션들을 자동으로 실행, 제어 또는 문서화할 수 있는 컴퓨터-구현된 명령어 세트를 말한다. 일부 예에서, 계산은 계산 디바이스들의 블록체인 또는 분산형 원장에서 수행될 수 있다. 스마트 계약의 구현은, 블록체인 네트워크에서 암호로 서명된 거래들을 이용하여 배치될 수 있다. 일부 예에서, 스마트 계약은, 합의의 규칙들 및 벌칙들에 관련된 컴퓨터-구현된 명령어 세트를 구현한다. 스마트 계약은, 입력으로서 정보를 취하고, 스마트 계약에 나와 있는 규칙들을 통해 그 입력에 값을 할당하고, 이들 규칙들에 의해 요구되는 컴퓨터-구현된 액션들을 자체-실행함으로써 이를 달성할 수 있다. 예를 들어, 스마트 계약은, 자산이 목적지 엔티티에 전송되어야 하는지 또는 원래의 엔티티에 반환해야 하는지를 결정할 수 있다.
한 예시적인 예로서, 스마트 계약은 아이템이 수신될 때 지불을 전달하도록 프로그래밍될 수 있다. 이 포맷에서, 스마트 계약은 컴퓨터 코드로서 생성되고, 시스템 상에(예를 들어, 블록체인 또는 분산형 원장 등)에 저장 및 복제될 수 있으며, 블록체인을 실행하는 컴퓨터들의 네트워크에 의해 감독될 수 있다. 스마트 계약은 데이터를 저장할 수 있다. 저장된 데이터는, 정보, 사실, 연관들, 잔고, 및 실세계 계약들에 대한 로직을 구현하는데 필요한 기타 임의의 정보를 기록하는데 이용될 수 있다. 일부 실시예에서, 스마트 계약은 가상 머신 내에서 배치, 저장 및 실행된다.
본 명세서에서 사용될 때, "결합능력(composability)"이라는 용어는 컴포넌트들의 상호관계들을 다루는 시스템 설계 원리를 포함한다. 예를 들어, 고도로 결합가능한 시스템은 특정한 사용자 요구조건들을 충족시키기 위해 다양한 조합으로 선택되고 조립될 수 있는 컴포넌트들을 제공한다. 블록체인 및 스마트 계약들의 맥락에서, 결합능력은 복수의 독립적인 스마트 계약을 수반하는 동작들을 함께 연계하는 능력을 포함한다. 결합능력의 최근 예는 Ethereum 블록체인 상에 구축된 금융 파생 상품들을 위한 탈중앙화 프로토콜인 dY/dX이다. dY/dX는 담보 대출들을 인에이블함으로써 탈중앙화 마진 거래를 허용한다. 전형적인 dY/dX 거래는 적어도 3개의 별개의 스마트 계약을 결합한다 : 코어 dY/dX 계약 자체, 0x 등의 탈중앙화 거래소, DAI 등의 적어도 하나의 ERC(Ethereum Request for Comment)-20 토큰.
본 명세서에서 사용될 때, "샤딩(sharding)"이라는 용어는, 일반적으로, 네트워크를, 비동기식으로 상호작용하는 일련의 서브유닛들로 분할하는 다양한 스케일링 제안들을 말한다. 이 개념은 데이터베이스들을 더욱 스케일링가능하게 만들기 위해 데이터베이스들에서 널리 이용되었다. 더 최근에는, 블록체인의 거래 속도를 향상시키기 위해 블록체인에 샤딩이 이용되었다. 데이터베이스 맥락에서, 예를 들어, 샤딩은 데이터베이스 내에서 데이터를 수평으로 파티션화하기 위한 방법을 포함할 수 있다. 더 일반적으로, 데이터베이스는 "샤드"라고 불리는 작은 조각들로 나뉘며, 이들은 함께 집결되면 원래의 데이터베이스를 형성한다. 분산형 블록체인 네트워크들에서, 네트워크는 중앙 권한 없이 피어 투 피어 포맷으로 접속된 일련의 노드들로 구성된다. 블록체인 시스템들의 일부 예에서, 각각의 노드는 네트워크의 모든 상태를 저장하고 모든 거래를 처리한다. 이것은, 특히 Bitcoin 및 Ethereum® 등의 작업 증명(PoW; Proof of Work) 시스템들에서, 탈중앙화를 통해 높은 수준의 보안을 제공하지만, 합법적인 스케일링 문제들로 이어질 수 있다. 예를 들어, Ethereum 네트워크 내의 전체 노드는, 계정 잔액들, 스토리지, 및 계약 코드를 포함한, 블록체인의 전체 상태를 저장한다. 불행히도, 참가자 수가 선형적으로 증가함에 따라, 참가자들 사이의 상호통신 오버헤드가 기하급수적으로 증가한다. 이 제한은, 의견일치(consensus)에 도달하는데 필요한 노드들 사이에서 필요한 통신에 기인한다. 네트워크 내의 노드들은 특별한 특권을 갖지 않으며 네트워크 내의 모든 노드는 모든 거래를 저장하고 처리한다. 그 결과, Ethereum 크기의 네트워크에서, 높은 가스 비용과 긴 거래 확정 시간 등의 문제들은, 네트워크가 무리하게 사용될 때 눈에 띄는 문제가 된다. 네트워크는, 그 부분들의 합이 아니라 개개의 노드들만큼 빠르다. 따라서, 샤딩은 이들 문제를 완화하는데 도움이 된다. 이 개념은, 노드들의 서브세트들을 샤드들로 그룹화하는 것을 포함하며, 샤드들은 결국 그 샤드 특유의 거래를 처리한다. 이러한 유형의 아키텍쳐의 채용은, 시스템이 많은 거래들을 병렬로 처리하는 것을 허용한다.
본 명세서에 사용될 때, "의견일치 알고리즘" 또는 "의견일치 프로토콜"이라는 용어는, 노드들 등의 전자 디바이스들 사이의 데이터의 통신 및 전송이 작동하는 방식을 기술하는 규칙 세트를 포함한다. 의견일치는, 무엇이 사실이고 무엇이 블록체인에 기록되어야 하는지에 대해 충분한 디바이스들이 동의할 때 달성된다. 따라서, 의견일치 프로토콜은, 전 세계에 흩어져 있는 디바이스들이 실제로 합의에 이르게 하여 블록체인 네트워크가 파손되지 않고 기능하는 것을 허용하는 통제 규칙이다.
여기서 사용될 때, 분산형 시스템들의 맥락에서 "BFT(Byzantine Fault Tolerance) 의견일치 알고리즘"이라는 용어는, 설명되는 시스템 내의 노드들의 피어 투 피어 네트워크 등의, 분산형 컴퓨터 네트워크가 원하는 대로 기능하고 시스템의 악의적인 컴포넌트들(노드들)이 고장나거나 잘못된 정보를 다른 피어에게 전파하더라도 충분한 의견일치에 올바르게 도달하는 능력을 포함한다. 목적은, 이들 악의적인 노드들이 네트워크의 정확한 기능과 시스템 내의 정직한 노드들에 의해 도달되는 올바른 의견일치에 미치는 영향을 완화함으로써 재앙적인 시스템 고장을 방어하는 것이다.
본 명세서에서 사용될 때, "슬래시(slash)"라는 용어는, 예를 들어, 네트워크에 대해 설정된 규칙들을 따르지 못하는 것에 대해, 네트워크 참가자를 처벌(punish)하는 것이다. 처벌은 에스크로에 넣거나 지분출자된(staked) 자금들에 적용되는 벌금의 형태일 수 있다.
본 명세서에서 사용될 때, 당사자들(예를 들어, 노드들) 사이의 "대화형 프로토콜"이라는 용어는, 당사자들이 일종의 대화로(예를 들어, 질문 및 답변을 통해) 메시지를 교환한다는 제약을 포함한다. 일부 실시예에서, 이러한 메시지 교환은 메시지를 전송하고 받기 위해 어떤 형태의 동기화를 요구한다.
본 명세서에서 사용될 때, 당사자들(예를 들어, 노드들) 사이의 "비대화형 프로토콜"이라는 용어는, 당사자들 각각이 다른 당사자를 기다리지 않고 액션들을 수행하는 것을 허용한다. 설명되는 시스템의 일부 실시예에서, 노드는 자체적으로 증명을 생성하고 임의의 다른 노드에게 입력을 요구하지 않는다. 유사하게, 설명되는 시스템의 일부 실시예에서, 검증은, 사용자들의 초기 증명만으로 충분하기 때문에 사용자들과의 추가 논의를 요구하지 않는다.
도 1은 본 개시내용의 다양한 실시예에 예시된 분산형 원장 및/또는 블록체인 시스템을 나타낸다. 분산형 원장은, 하나 이상의 컴퓨팅 디바이스(102, 104, 106, 108), 및 피어 투 피어 네트워크를 형성하는데 이용될 수 있는 네트워크(110)를 포함할 수 있다. 일부 실시예에서, 네트워크(110)는, 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷, 또는 이들의 조합을 포함하고, 디바이스들(예를 들어, 컴퓨팅 디바이스들(102, 104, 106, 108))을 접속한다. 일부 실시예에서, 네트워크(110)는, 인터넷과 통신하는 인트라넷, 엑스트라넷, 또는 인트라넷 또는 엑스트라넷을 포함한다. 일부 실시예에서, 네트워크(110)는, 통신 또는 데이터 네트워크를 포함한다. 일부 실시예에서, 네트워크(110)는 유선 또는 무선 통신 링크를 통해 액세스될 수 있다.
분산형 원장(예를 들어, 블록체인)은, 상이한 위치들과 사람들에 걸쳐 탈중앙화 형태로 유지되는 임의의 거래들 또는 계약들의 원장으로서 기술될 수 있으므로, 조작을 견제하기 위한 중앙 기관의 필요성을 제거한다. 모든 정보는 암호화를 이용하여 안전하고 정확하게 저장되고, 키들과 암호화 서명들을 이용하여 액세스될 수 있다. 일단 정보가 저장되고 나면, 정보는, 네트워크 규칙들이 지배하는, 변경할 수 없는 데이터베이스가 된다. 분산형 원장들은, 공격이 성공하기 위해서는 모든 분산된 사본들이 동시에 공격될 필요가 있기 때문에, 예를 들어 중앙집중형 원장보다 본질적으로 공격하기 어렵다. 또한, 이들 기록들은 단일의 당사자에 의한 악의적인 변경들에 내성이 있다.
효율성은 블록체인 공간에서 관찰되는 2개의 실질적인 문제를 해결하는 다면형 기둥(multi-faceted pillar)이다. 첫 번째는 작업 증명(PoW)으로, 과도한 전력 사용과 비효율적인 자원 할당 때문에 지속적으로 비판을 받고 있다. PoW는 시스템 보안을 위한 옵션으로서 거부된다. 두 번째 문제는, 모든 노드가 PoW 문제를 해결하고 있지 못하더라도 모든 상태를 유지할 것을 여전히 요구하는 지분 증명(PoS; Proof of Stake) 기반의 시스템에서도, 블록체인이 작동하기 위해 요구하는 상당한 양의 중복적 노력이다. 전통적인 블록체인에서, 예를 들어, 각각의 노드는 블록 생성과 연관된 모든 태스크를 수행할 수 있다. 이러한 중복은, 규모의 관문일 뿐만 아니라, 그들 각각의 강점에 적용될 경우 더 나은 서비스를 제공받을 자원들의 빈약한 할당이다.
또한, 블록체인 기술은, 자율적이고 상호운용가능한 소프트웨어 생태계의 장기적 가치가 사실상 탈중앙화 혁명의 가장 강력한 결과일 수 있기 때문에 허가없는 및 자율적인 소프트웨어 시스템들을 생성할 수 있다. 개방형의, 소비자-규모의 블록체인 시스템들에 대한 기존 제안들의 압도적 다수는 어떤 종류의 샤딩에 의존한다. 샤딩에 대한 다양한 접근법은 네트워크가 처리할 수 있는 거래 수를 합법적으로 증가시킬 수 있지만, 이들은 이들 거래들의 능력을 제한할 수 있다. 특히, 각각의 거래는 그 자신의 샤드 내에서만 정보를 판독하고 수정할 수 있다. 일부 샤드 블록체인 구현에서, 다른 샤드들과의 통신은 비동기식으로 발생해야 하며 -비용이 많이 들고 복잡한 잠금 동작들 없이- 오래된 정보에 관해 작용할 위험이 있다. 게다가, 샤드 블록체인에 대한 기존 제안은 단일 원자 거래(single atomic transaction)가 복수의 샤드와 상호작용하기 위한 능력을 제공하지 않는다. 예를 들어, 각각의 샤드에 관해 별개의 거래가 발행될 수 있고, 원자성 보장이 요구되는 경우(예를 들어, 가치의 어떤 상호 교환이 있는 경우) 블록체인 상단에 구축된 어떤 종류의 복잡한 잠금 및 커밋 시스템이 있을 수 있다.
한 예시적인 분산형 원장은 흔하게 알려진 블록체인이다. 블록체인은 예시의 목적으로 본 개시내용 내에서 언급된다. 그러나, 임의의 적절한 분산형 원장이 본 개시내용의 구현들에서 이용될 수 있다는 것이 고려된다. 블록체인은 암호화를 이용하여 링크되고 보호되는 레코드들 또는 블록들의 지속적으로 성장하는 목록이다. 블록체인 내의 각각의 블록은, 양도가능한 증서 거래, 디지털 화폐 거래 등의 하나 이상의 컨텍스트에서 실행된 거래들로부터 제공되는 거래 데이터를 포함할 수 있다. 일부 예에서, 거래는, 현재 또는 미래에, 화폐, 암호 화폐 또는 어떤 다른 자산 대신에 자산들, 제품들 또는 서비스들의 교환이 있을 것이라는, 구매자와 판매자, 공급자와 소비자, 제공자와 소비자 사이의 합의를 포함한다. 일부 예에서, 단일 블록은, 복수의 거래들(예를 들어, 상이한 사람들에 의한 상이한 수표의 복수의 예치)로부터 제공되는 거래 데이터를 포함할 수 있다. 블록체인은, 완료된 블록들이 새로운 세트의 거래들과 함께 추가되어 거래의 원장을 형성함에 따라 성장할 수 있다. 각각의 블록은, 영구적인 방식으로 거래 데이터와 함께 이전 블록에 대한 해시 포인터 및 타임스탬프를 포함할 수 있다.
일부 실시예에서, 블록체인의 블록 내의 거래는 해시되고 Merkle 트리 내로 인코딩된다(예를 들어, 거래들은 Merkle 트리의 리프 노드들임). Merkle 트리(또는 해시-기반의 트리)는 해시 목록의 일반화일 수 있는 해시-기반의 데이터 구조이다. Merkle 트리는, 각각의 리프 노드가 해시 값 또는 "해시"를 생성하기 위해 거래에 적용된 암호화 해시 함수(CHF; cryptographic hash function)의 결과이고 각각의 비-리프 노드는 그 자식 노드들의 라벨들의 암호화 해시로 라벨링되는 트리 구조를 포함한다. 예시적인 CHF들은, 특히 보안 해시 알고리즘 256(SHA-256), SHA-3, 및 메시지 다이제스트 5(MD5)를 포함한다. 일반적으로, CHF는 정보를 입력으로 수신하고 출력으로서 해시 값을 제공한다. 해시 값은 미리결정된 길이일 수 있다. 예를 들어, SHA-256은 256비트(32바이트, 64 문자) 해시 값을 출력한다. 일부 예에서, 해시 값은, 해시 값이 '해시 해제'되어 입력이 무엇이었는지를 결정할 수 없다는 점에서 단방향 해시 값이다. 추가적으로, Merkle 트리는 k-ary 트리로 구현될 수 있는데, 이것은 각각의 노드가 k개 이하의 자식을 갖는 루트형 트리 데이터 구조(rooted tree data structure)이다. 예를 들어, Merkle 트리는, 각각의 노드가 0, 1 또는 2개의 자식을 가질 수 있는 2진 트리로서 구현될 수 있다. 이러한 2진 트리의 Merkle 루트(또는 루트 해시)는, 단 하나의 해시만 남을 때까지 각각의 쌍의 노드들을 반복적으로 해시함으로써 생성될 수 있다. 일부 예에서, 거래 수가 홀수인 경우, 마지막 해시를 한 번 복제하여 짝수개의 리프 노드를 생성할 수 있다. 임의의 거래에서의 단일의 상세사항 또는 거래 순서가 변경되면, Merkle 루트도 변경된다. 따라서, Merkle 루트는 관련 거래들의 모든 데이터를 요약하고, 데이터의 무결성을 유지하기 위해 블록에 저장될 수 있다. 따라서, Merkle 트리의 채용은 특정한 거래가 세트에 포함되는지의 여부에 대한 빠르고 간단한 테스트를 허용한다.
일반적으로, 블록들은, 블록체인 프로토콜을 실행하는 상호접속된 컴퓨팅 디바이스들의 피어 투 피어 네트워크 내의 하나 이상의 컴퓨팅 디바이스에 의해 선형적, 시간 순서로 블록체인에 추가된다. 요컨대, 피어 투 피어 네트워크는 상호접속된 복수의 노드로서 기술될 수 있으며, 각각의 노드는 클라이언트를 이용하여 거래들(예를 들어, 수표 예치)을 유효성확인하고 중계하는 컴퓨팅 디바이스이다. 각각의 노드는, 피어 투 피어 네트워크에 참여할 때 노드에 자동으로 다운로드되는 블록체인의 사본을 유지한다. 블록체인 프로토콜은, 중앙 기관을 이용하지 않고 피어 투 피어 네트워크에 걸쳐 그 사본들이 분산되는, 블록체인을 업데이트하는 안전하고 신뢰할 수 있는 방법을 제공한다.
블록체인 네트워크 상의 모든 엔티티는 요청된 거래를 유효성확인하기 위해 모든 이전 거래(예를 들어, 예금들, 인출들 등)을 알아야 할 필요가 있을 수 있으므로, 엔티티들은 어떤 거래들이 어떤 순서로 실제로 발생했는지에 관해 합의할 수 있다. 예를 들어, 2개의 엔티티가 상이한 거래 이력들을 관찰하는 경우, 이들은 거래의 유효성에 대해 동일한 결론에 도달하지 못할 수 있다. 블록체인은, 엔티티들이 이미 발생한 거래들과 그 순서에 대해 합의할 수 있게 한다. 간단히 말해서, 아래에서 더 상세히 설명되는 바와 같이, 거래들의 원장은 거래들의 원장에 거래를 추가(예를 들어, 블록체인에 블록을 추가)하는데 요구되는 작업량에 기초한다고 합의된다. 이러한 맥락에서, 작업은 피어 투 피어 네트워크 내의 임의의 단일 노드(예를 들어, 컴퓨팅 디바이스)가 빠르게 완료하기 어려운 태스크이지만, 노드(예를 들어, 컴퓨팅 디바이스)가 검증하기에는 비교적 쉽다.
전형적인 피어 투 피어 네트워크는 블록체인 프로토콜에 기초하여 블록체인에 블록들을 추가하는 소위 채굴자들(예를 들어, 컴퓨팅 디바이스들)을 포함할 수 있다. 일반적으로 복수의 채굴자들이 블록에 추가될 거래들을 유효성확인하고 자신의 블록을 블록체인에 추가하기 위해 경쟁한다(예를 들어, 위에서 소개된 바와 같이, 작업을 수행한다). 거래들의 검증은 각각의 거래들과 연관된 디지털 서명들을 검증하는 것을 포함할 수 있다. 블록이 블록체인에 추가되기 위해, 채굴자는 제공된 거래들의 블록이 피어 투 피어 네트워크에서 수락되기 전에 PoW를 입증해야 한다. 블록체인 프로토콜은 CHF에 기초하는 PoW 방식을 포함한다. 일부 실시예에서, 블록체인 프로토콜은 CHF에 대한 입력으로서 복수의 정보를 요구할 수 있다. 예를 들어, CHF에 대한 입력은, 블록체인 내의 이전 (가장 최근) 블록에 대한 참조, 생성될 블록에 포함될 거래(들)의 상세사항, 및 nonce 값을 포함할 수 있다.
복수의 노드는 한 세트의 거래들을 해시하고 블록체인에 추가될 다음 블록을 제공하기 위해 경쟁할 수 있다. 블록체인 프로토콜은 블록체인에 추가될 블록을 적격화하기 위해 문턱값 해시를 제공할 수 있다. 예를 들어, 문턱값 해시는, 해시 값이 시작 부분에서 가져야 하는 미리정의된 수의 제로(0)를 포함할 수 있다(예를 들어, 해시 값의 적어도 처음 4개 문자는 각각 0이어야 함). 0의 수가 많을수록, 적격의 해시 값에 도달하는데 더 많은 시간이 소요된다.
일부 블록체인-기반의 플랫폼에서, 예를 들어, 각각의 블록 생성 노드는 후보 블록을 생성하기 위해 다수의 단계들을 거칠 수 있다. 예를 들어, 공개적으로 공유된 푸울의 보류 중인 거래들로부터 다수의 거래가 선택된다. 일부 실시예에서, 선택된 거래들은 예를 들어 선형 목록의 순서로 할당된다. 전형적으로, 포함될 수 있는 거래의 최대 수를 제한하는 몇 가지 메커니즘이 있다. 그러나 많은 실시예에서 강제된 최소값은 없다. 거래들에 의해 명시된 계산들이 수행된다. 일부 실시예에서, 각각의 계산은 글로벌 공유된 상태에 액세스하며, 그 공유된 상태에 대한 소정의 변경을 가할 수 있다. 더욱이, 일부 실시예에서, 하나의 거래의 입력은 또 다른 거래의 출력에 의존할 수 있다. 이러한 실시예에서, 이들 계산들이 순서대로 엄격하게 수행되는 것이 중요하다. 거래들은, 이들 거래들의 처리로부터 발생하는 최종 정규 상태(canonical state)의 스냅샷과 결합될 수 있다. 결과들은 네트워크의 나머지에 브로드캐스트된다. 일부 실시예에서, "스냅샷"은 정규 상태의 해시이고, 예를 들어 Merkle 트리의 루트 노드의 형태일 수 있다.
일부 실시예에서, 후보 블록을 수신하는 네트워크 내의 각각의 노드는 거래 목록에 의해 암시된 계산들이 올바르게 계산되었음을 검증한다. 이들 노드는 후보 블록에 의해 명시된 순서대로 각각의 계산을 반복할 수 있다. 그 다음, 노드들은 자신들이 계산한 최종 정규 상태의 스냅샷을 원래 노드로부터의 후보 블록 내의 스냅샷과 비교한다. 스냅샷들이 매칭하면, 그 블록은 유효한 후보로서 간주될 수 있다.
Bitcoin 등의 미소비 거래 출력(UTXO; unspent transaction output) 블록체인들에서, 토큰들을 성공적으로 전송한 거래들만이 블록에 포함될 수 있다. 반면에, Ethereum 등의 상태-모델 블록체인에서는, 실패한 거래들을 포함하는 것이 유효할 수(및 심지어 일반적일 수) 있다. 일부 실시예에서, 이들 거래들은 블록에 포함되지만 정규 상태를 수정하지 않는다(거래 수수료 지불을 제외하고). 따라서 "올바르게 처리된" 거래가, 실제로는, 그 거래를 시작한 사용자가 의도한 대로 수행되지 않을 수 있다.
일단 하나 이상의 유효한 후보 블록이 생성되고 나면, 네트워크는 단일의 유효한 후보에 관해 집합적으로 합의하기 위해 어떤 의견일치 메커니즘을 이용할 수 있다. 이것은 전형적으로 현재 블록체인들에서의 "작업 증명"이지만, "지분 증명(proof-of-stake)"을 이용하는 미래의 네트워크들 또는 기존 네트워크들의 진화에 대한 많은 제안들이 있다. 여기서 설명된 탈중앙화 계산 시스템의 실시예들은, 의견일치 메커니즘들의 패밀리에서 또는 즉각적인 최종성, 지분 증명 의견일치(instant-finality, proof-of-stake consensus)와 결합될 때 동등하게 잘 작동한다.
일부 실시예에서, 설명된 방식을 채용할 수 있는 한 예시적인 시스템은 높은 처리량을 갖고 샤딩이 없는 구조적 접근법을 제공하여, 그 결과 결합능력을 생성한다. 일부 실시예에서, 이러한 결합능력은 더 단순한 무신뢰 시스템들의 신규한 조합을 통해 생성될 복잡한 신규 무신뢰 시스템을 제공한다. 예시적인 탈중앙화 계산 시스템은, 예를 들어 탈중앙화 애플리케이션들을 지원하기 위해 채용될 수 있다. 일부 실시예에서, 예시적인 탈중앙화 계산 시스템은 피어 투 피어 네트워크를 3개의 별개의 노드 유형으로 나누고, 각각은, 3개의 작업 : 외부로부터 네트워크에 액세스하는 것, 공격들로부터 네트워크를 보호하는 것, 및 네트워크의 상태를 계산하는 것 중 하나를 담당한다. 이러한 관심사항의 분리는 노드 특화를 가능케하여, 네트워크의 처리량을 극적으로 개선시키면서 배치된 시스템의 보안 및 탈중앙화 가능성들을 향상시킨다. 추가로, 결합능력은 소프트웨어 재사용의 강력한 표현일 수 있지만, 원자성이 없는 결합능력은 일관성 없는 결과들(예를 들어, "원하지 않는 상태들")로 이어질 수 있다. 예시적인 탈중앙화 계산 시스템은, 상호작용하도록 인가된 정규 상태의 일부를 원자적으로 액세스하고 수정하는 능력을 각각의 거래에게 허용하는 스케일링 메커니즘을 채용할 수 있다.
위에서 설명된 바와 같이, 일부 실시예에서, 예시적인 탈중앙화 계산 시스템은 네트워크 내의 노드들을 3개의 별개의 역할로 나눈다 : 액세스, 보안, 및 실행. 이러한 관심사항의 분리는, 탈중앙화 시스템의 무결성을 특성규정하고 유지하는 액세스, 보안, 신뢰성, 및 검증가능성을 유지하는 환경에서 동기성(synchrony)을 희생하지 않고 높은 처리량을 가능케할 수 있다. 일부 실시예에서, 상이한 노드 유형들 사이의 핵심 관계는, 거래 포함, 순서, 및 출력에 관한 강한 의견일치를 보장하고 이력의 정규 상태를 결정하는, 체크들 및 균형들 중 하나이다. 이 접근법의 과제들 중 하나는 3개의 별개의 그룹의 노드들을 조율하고 이들 사이의 효율적인 상호작용들을 보장하는 것이다.
일부 실시예에서, 예시적인 탈중앙화 계산 시스템은 대규모 시장 청중(예를 들어, 수십억 명의 활성 사용자)에게 이용가능하게 될 수 있는 번성하고 참여적인 생태계를 지원하는 거래 용량 및 계산 처리량을 제공한다. . 일부 실시예에서, 예시적인 탈중앙화 계산 시스템은 초당 백만 거래(TPS) 이상 정도로 처리한다.
예시적인 탈중앙화 계산 시스템은 실용적인 유용성을 희생하지 않을 수 있다. 특히, 일부 실시예에서, 시스템은 스마트 계약들 사이의 완전한 동기 통신을 보존한다. 완전 동기성은, 계약간 통신들이 에러 또는 악용에 취약한 복잡한 잠금 방식들 없이 올바름에 대한 ACID(Atomicity, Consistency, Isolation, Durability)(원자성, 일관성, 격리, 내구성) 보장을 유지하는 것을 보장한다. 간단히 말해서, 하나의 스마트 계약이, 또 다른 스마트 계약이 올바르게 실행됨을 확신하고 안전을 희생하지 않으면서 독립적인 스마트 계약들이 결합되어 복잡한 시스템화되는 것을 허용하기 위해, 동기성이 요구될 수 있다.
장기간의 지속적인 탈중앙화는 예시적인 탈중앙화 계산 시스템에 의해 제공되는 한 양태일 수 있다. 많은 블록체인-가능형 시스템들은 탈중앙화를 시스템의 핵심 가치라기보다는 선택사항 또는 겉치레로 취급한다. 이것은 단기적으로는 약간의 빠른 성과를 거둘 수 있지만, 이들 시스템은 시간 경과에 따라 저하될 수 있다. 게다가, 명시적인 인센티브가 없다면, 어느 정도의 중앙집중화를 갖는 가치있는 시스템들은 더욱 중앙집중화되는 경향이 있다. 예시적인 탈중앙화 계산 시스템이 제공하는 탈중앙화의 품질들은, 액세스, 보안, 신뢰성, 및 검증가능성을 포함한다.
일부 실시예에서, 예시적인 탈중앙화 계산 시스템은, 고정 비용으로 네트워크의 시스템 자원을 이용하는 능력을 통해 액세스를 제공한다(사용자가 이용 비용을 지불할 수 있다고 가정). 이러한 액세스는, 임의의 부류의 사용자들의 네트워크 이용을 거부하거나 일부 트래픽을 다른 것들보다 우선시할 수 있는 행위자 또는 그럴듯한 행위자 그룹이 없다는 것을 제공한다.
일부 실시예에서, 예시적인 탈중앙화 계산 시스템은, 네트워크 내의 각각의 정직한 참여자가 다른 정직한 참여자들과 동일한 이력 뷰를 갖고 이 이력 기록이 사후에 수정될 수 없음을 보장함으로써 보안을 유지한다.
신뢰성은, 시스템의 규칙들이 균일하고 적용되고, 엄격하게 강제되며, 예측가능하고 투명한 방식으로만 변경될 수 있다는 보증을 포함한다. 일부 실시예에서, 예시적인 탈중앙화 계산 시스템은, 시스템의 사용자들이 (예를 들어, 하드 포크(hard fork)를 통해) 이들 변경들을 옵트-아웃(opt-out)하는 것을 허용하지 않는 방식으로 이들 규칙들을 변경할 수 있는, 행위자 또는 그럴듯한 행위자 그룹이 없음을 보장함으로써 신뢰성을 제공한다.
일부 실시예에서, 예시적인 탈중앙화 계산 시스템은, 일부 또는 모든 액션들(예를 들어, 프로토콜 규칙들을 따르는 체인의 상위 레벨 동작들 등)의 투명성을 허용한다는 점에서 검증가능하다. 따라서, 누구나, 예를 들어 자신의 제어 하에 있는 컴퓨터 자원들을 이용하여, 프로토콜(및 프로토콜 내에 정의된 규칙들)이 올바르게 준수되었는지를 확인할 수 있다. 이것은, 모든 체인상 활동들을 볼 수 있는 능력을 묵시적으로 포함한다. 예를 들어, 사용자는 제출한 거래가 체인 상에서 올바르게 실행되었는지를 검증할 수 있다.
액세스, 보안, 신뢰성, 및 검증가능성을 보장하는 예시적인 탈중앙화 계산 시스템은 탈중앙화 환경으로부터 훨씬 더 광범위한 세트의 이점들을 포착한다. 예를 들어, 액세스를 보장하는 것은, 누구나 네트워크에 참여할 수 있고 네트워크를 예속하는 규칙들을 쉽게 이해하는 것을 보장하는데 도움이 될 수 있다. 더욱이, 보안 네트워크는 실패없이 이들 규칙들을 시행할 수 있다. 이 조합은, 사용자들이 시스템에 대해 추론하고 알려진 입력 세트를 이용하여 결과를 안정적으로 예측하고 궁극적으로 검증할 수 있는 환경을 생성할 수 있다. 함께, 이들 요건들은, 완전한 탈중앙화, 및 투명성, 자율성, 상호운용성 및 불변성의 연관된 이점들을 달성하는데 필요한 강력한 기준들을 제공한다.
도 2는 본 개시내용의 구현들을 실행하기 위해 채용될 수 있는 예시적인 환경을 도시한다. 이 예시적인 시스템은, 피어-투-피어 네트워크를 형성하는데 이용될 수 있는, 컴퓨팅 디바이스들(102, 104, 106, 108) 및 네트워크(110)를 포함한다. 일부 실시예에서, 네트워크(110)는, 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷, 또는 이들의 조합을 포함하고, 디바이스들(예를 들어, 컴퓨팅 디바이스들(102, 104, 106, 108))을 접속한다. 일부 실시예에서, 네트워크(110)는, 인터넷과 통신하는 인트라넷, 엑스트라넷, 또는 인트라넷 또는 엑스트라넷을 포함한다. 일부 실시예에서, 네트워크(110)는, 통신 또는 데이터 네트워크를 포함한다. 일부 실시예에서, 네트워크(110)는 유선 또는 무선 통신 링크를 통해 액세스될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(예를 들어, 스마트폰 디바이스(102) 및 태블릿 디바이스(106))는 네트워크(110)에 액세스하기 위해 셀룰러 네트워크를 이용할 수 있다.
일부 예에서, 사용자들(122-128)은 탈중앙화 계산 시스템과 상호작용하기 위해 에이전트 소프트웨어를 채용하는 사용자 에이전트들로서 작업할 수 있다. 예를 들어, 사용자들은, 설명된 시스템에서 거래를 제공하거나 노드들로서 기능하는 각자의 디바이스(102-108)를 이용할 수 있다.
일부 실시예에서, 컴퓨팅 디바이스들(102, 104, 106, 108)은, 도 5에 도시된 컴퓨팅 디바이스(510)와 지속적으로 유사하다. 간소화를 위해, 4개의 컴퓨팅 디바이스가 도 1 및 도 2에 도시되어 있다. 그러나, 본 개시내용의 구현들은, 이전에 언급된 것들 등의, 임의의 적절한 컴퓨팅 디바이스로 실현될 수 있음이 고려된다. 더욱이, 본 개시내용의 구현들은, 요구될 때 피어 투 피어 네트워크에서 노드들로서 기능하는 임의의 수의 디바이스를 채용할 수 있다.
컴퓨팅 디바이스들(102, 104, 106) 각각은, 데스크탑 컴퓨터, 랩탑 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 개인 휴대 정보 단말기(PDA), 셀룰러 전화, 네트워크 기기, 카메라, 스마트폰, EGPRS(Enhanced General Packet Radio Service) 모바일 전화, 미디어 플레이어, 네비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 또는 이들 디바이스들 또는 기타의 데이터 컴퓨팅 디바이스들 중 임의의 둘 이상의 적절한 조합 등의, 임의의 적절한 유형의 컴퓨팅 디바이스를 포함할 수 있다. 도시된 예에서, 컴퓨팅 디바이스(102)는 스마트폰이고, 컴퓨팅 디바이스(104)는 태블릿 컴퓨팅 디바이스며, 컴퓨팅 디바이스(106)는 데스크탑 컴퓨팅 디바이스이다.
서버 컴퓨팅 디바이스(108)는, 컴퓨팅 디바이스들(102-106) 뿐만 아니라 서버급 하드웨어를 갖는 컴퓨팅 디바이스들에 대해 위에서 설명된 것 등의, 임의의 적절한 유형의 컴퓨팅 디바이스를 포함할 수 있다. 일부 실시예에서, 서버 컴퓨팅 디바이스(108)는, 단일 푸울의 심리스 자원들로서 작용하는 클러스터형 컴퓨터들 및 컴포넌트들을 이용하는 컴퓨터 시스템을 포함할 수 있다. 예를 들어, 이러한 구현들은 데이터 센터 및 클라우드 컴퓨팅에서 이용될 수 있다. 일부 실시예에서, 백엔드 시스템(130)은 가상 머신(들)을 이용하여 배치된다.
일부 실시예에서, 컴퓨팅 디바이스들(102-108)은 예시적인 탈중앙화 계산 시스템 내의 노드들로서 배치되고 피어 투 피어 네트워크를 형성한다. 예를 들어, 컴퓨팅 디바이스들(102-108)은, 도 3에 도시된 바와 같이, 형성된 피어 투 피어 네트워크 내의 액세스 노드, 보안 노드, 또는 실행 노드로서, 설명된 탈중앙화 계산 내에 채용될 수 있다. 일부 실시예에서, 형성된 피어 투 피어 네트워크는, 각각의 네트워크 노드(예를 들어, 컴퓨팅 디바이스들(102-108))가 네트워크 상의 다른 모든 노드에 직접 또는 간접적으로 접속되는 분산형 네트워크이다. 따라서, 중앙 서버를 필요로 하지 않고 노드들 사이에 정보(예를 들어, 거래)가 직접 공유될 수 있다. 일부 실시예에서, 노드들은 통신하기 위해 피어 투 피어 프로토콜을 채용한다.
일부 실시예에서, 시스템은 컴퓨팅 디바이스들(102-108) 각각에 저장될 수 있는 탈중앙화 블록체인에 대응할 수 있다. 일부 실시예에서, 한 세트의 컴퓨팅 디바이스들은 블록체인을 저장한다. 블록체인은 거래들을 포함하는 블록들을 포함한다. 일부 실시예에서, 이러한 거래들은, 예시적인 탈중앙화 계산 시스템에 의해 수신되고, 검증되고 실행된다. 일부 실시예에서, 블록체인에 저장된 거래들은 스마트 계약들을 포함한다. 일부 실시예에서, 스마트 계약은 맞춤형 기능으로 확장될 수 있고, 도 3에 도시된 바와 같이, 형성된 피어 투 피어 네트워크 내의 실행 노드에 의해 거래의 일부로서 기동될 수 있다. 예를 들어, 컴퓨팅 디바이스들(102-108)은 블록체인 상의 블록 내에서 처리되고 저장될 거래들을 수신하기 위해 각각의 사용자들(222-226)에 의해 이용될 수 있다. 일부 실시예에서, 컴퓨팅 디바이스들(102-108)은 스마트 계약 코드를 실행하기 위한 실행 런타임으로서 가상 머신을 채용한다. 예를 들어, 이러한 메커니즘은 한 상태에서 또 다른 상태로의 천이를 허용한다: (다수의 거래가 저장되는) 소정의 블록이 주어지고, 상태 s가 주어지면, 계산을 수행하는 것은 머신을 새로운 상태 S'로 가져다 놓을 것이다. 일부 실시예에서, 상태 천이 메커니즘은, 거래 관련 계정들에 액세스하고, 연산을 계산하고, 가상 머신의 상태를 업데이트/기입하는 것으로 구성된다. 가상 머신에서 실행되는 어떠한 것이라도 (예를 들어, 스마트 계약 코드) 그 상태를 변경할 수 있다. 일부 실시예에서, 블록의 모든 거래를 실행한 후, 현재 상태가 저장될 수 있다.
도 3은, 예를 들어 도 1 및 도 2의 예시적인 환경을 통해 배치될 수 있는, 예시적인 탈중앙화 계산 시스템에 대한 일반 아키텍쳐의 한 예를 도시한다. 일반 아키텍쳐는, 도 1 및 도 2의 디바이스들(102-108) 등의 디바이스를 통해 배치될 수 있는, 클라이언트(302), 액세스 노드들(310), 보안 노드들(320), 및 실행 노드들(330)을 포함한다. 일부 실시예에서, 액세스 노드들(310)은 클라이언트(302)에 대한 네트워크 가용성을 유지하고 세계 상태(world state)와 관련된 질의들에 응답한다. 일부 실시예에서, 보안 노드들(320)은 블록들에 대한 강력한 보증을 제공하는 BFT 의견일치 알고리즘에 참여함으로써 네트워크의 안전성을 보장한다. 일부 실시예에서, 실행 노드들은, 일단 보안 노드(320)로부터 수신된 블록을 처리한다(종결된 블록들(325)). 일부 실시예에서, 실행 노드들은, 보안 노드들(320)에 의해 종결된, 거래(305) 등의, 거래들의 결과를 결정하고 결과적인 세계 상태를 저장하는 계산 능력을 제공할 수 있다. 이들 역할에 대한 더 상세한 설명은 아래에서 제공된다.
일부 실시예에서, 예시적인 탈중앙화 계산 시스템은, 도 1 및 도 2의 블록체인 등의, 탈중앙화 블록체인을 채용한다. 일부 실시예에서, 탈중앙화 블록체인의 잡(job)은, 다양한 컴포넌트 기능들로 나눌 수 있다; 이들 기능들 중 일부는 완전히 결정론적일 수 있고 객관적으로 올바른 출력을 가질 수 있으며, 이들 태스크들 중 일부는 주관적일 수 있고 네트워크-레벨 의견일치를 요구할 수 있다. 탈중앙화 블록체인 시스템은, 자율적이고 리더가 없는 탈중앙화 시스템을 생성하여, 본질적으로 주관적인 어떤 것 : 어떤 거래들이 공유된 상태에 포함되는지, 어떤 순서인지("거래 로그")에 관한 네트워크 의견일치에 신뢰성있게 도달할 수 있다. 일부 실시예에서, 이러한 주관적인 태스크는, 거래 로그를 지시하는 전능한 중앙 기관, 또는 탈중앙화 네트워크가 정규 거래 로그(canonical transaction log)의 공유된 뷰를 결정하는 것을 허용하는 많은 의견일치 시스템들 중 하나를 요구할 수 있다. 블록체인의 다른 2개의 태스크는 주관적이지 않을 수 있고, 완전히 결정론적일 수 있다 : 거래 로그를 저장하는 것, 및 로그의 내용들을 의견일치 순서로 올바르게 적용한 결과로서 나오는 세계 상태를 결정하는 것. 블록체인들이 소비자 규모에 도달하지 못하게 하는 주요 병목들이 이 두번째 범주에 속한다.
일부 실시예에서, 예시적인 탈중앙화 계산 시스템은, 결정론적 프로세스들에서의 모든 Byzantine 결함이 4가지 중요한 속성 : 검출가능성, 귀속가능성, 처벌가능성, 및 정정가능성을 갖도록 설계된다. 일부 실시예에서, 결정론적 프로세스는 객관적으로 올바른 출력을 가질 수 있다. 네트워크 내의 정직한 단일 노드라도 결정론적 에러들을 검출하고 잘못 실행된 프로세스의 일부를 재생성하도록 요청함으로써 다른 모든 정직한 노드들에게 에러를 증명할 수 있다는 것을 의미한다. 더욱이, 일부 실시예에서, 예시적인 탈중앙화 계산 시스템에서의 결정론적 프로세스들은 검증가능한 랜덤 함수(VRF; verifiable random function)를 이용하여 노드들에 할당될 수 있다. 따라서, 검출된 임의의 에러는 그 프로세스를 담당한 노드들에게 명확하게 귀속될 수 있다. 일부 실시예에서, 예시적인 탈중앙화 계산 시스템에 참여하는 모든 노드는, 결정론적 프로세스들에서도, Byzantine 거동을 나타내는 것으로 밝혀지면 슬래싱(slash)될 수 있는 지분을 올려야 한다. 결정론적 프로세스들에서의 모든 에러는 자명하게(trivially) 검출될 수 있고 귀속될 수 있으므로, 이들 에러들은 슬래싱을 통해 신뢰성있게 처벌될 수 있다. 일부 실시예에서, 설명된 시스템은, 에러들이 검출되자마자 에러들을 신속하게 취소하는 수단을 가져야 한다. 이것은, 악의적인 행위자들이 슬래싱 패널티보다 더 이익이 되는 에러들을 유도하는 것을 저지하는 역할을 한다.
설명된 시스템의 설계는, 프로세스의 비결정론적 부분들을 지원하기 위해서는 많은 참여자가 필요하지만, 결정론적 프로세스들은 그들의 속성이 확실한 검출 및 그에 따른 프로토콜을 준수하지 않는 이들의 처벌을 지시하기 때문에 훨씬 더 적은 수의 참여자가 필요하다는 통찰력에 의해 영향을 받았다. 따라서, 설명된 시스템은, (도 3에 도시된 바와 같이) 결정론적 프로세스들을 분리할 수 있고 광범위한 청중이 면밀히 조사하는 더 적은 수의 더 강력한 참여자들에게 이들을 할당할 수 있다. 더 적은 수의 노드들은, 네트워크의 결정론적 요소들을, 특히 계산 실행에 대해, 훨씬 더 효율적으로 만든다. 예를 들어, 한 가지 개념 증명은 이 접근법이 보안 보장의 어떠한 저하도 없이 100,000 TPS 이상을 달성할 수 있다는 것을 보여준다. 5개 대륙의 11개의 상이한 데이터 센터에서 실행되는 30개 이상의 노드로 구성된 이기종 네트워크로서의 테스트베드 셋업에서 성능에 대한 개념 증명. 이것은, 문제들이 결정론적 부분과 비결정론적 부분들로 분리되어 그에 따라 할당될 때 가능한 개선사항들의 한 예일 뿐이다.
일부 실시예에서, 액세스 노드들(310)은 예시적인 탈중앙화 계산 시스템 외부의 세계와의 정보 교환을 중재할 수 있으며, 이것은 상태 및 이력 양쪽 모두에 관한 체계적이고 시기적절한 통신을 보장하는데 도움이 될 수 있다. 일부 실시예에서, 액세스 노드들(310)은, 거래 푸울을 관리하고 보안 노드들(320)에 제공하기 위해 클라이언트(302)로부터의 거래(305) 등의 양호하게-형성된 거래들을 수집하는 태스크를 부여받을 수 있다. 일부 실시예에서, 양호하게-형성된 거래는 거래의 보증인으로부터의 인증서(credential)를 포함할 수 있다. 일부 실시예에서, 액세스 노드(310)가 양호하게-형성된 거래를 볼 때, 액세스 노드(310)는 그 거래의 텍스트를 해시하고 거래에 서명하여 2가지를 표시할 수 있다: 첫째, 그것이 양호하게-형성되어 있다는 것, 및 둘째, 실행 노드들(330)이 그 처리를 완료할 때까지 거래 텍스트를 저장하는 것을 커밋할 것이라는 것. 일부 실시예에서, 임계 수의 액세스 노드들(310)이 거래를 검토하고 그것이 양호하게-형성되었다고 결론지었을 때, 이들은 검토를 위해 그 거래를 보안 노드들(320)에 전송할 수 있다. 액세스 노드들(310)의 임계 수는 실시예별로 달라질 수 있다. 예를 들어, 액세스 노드들(310)의 임계 수는 다양한 프로토콜 파라미터에 의존할 수 있다. 일부 예에서, 액세스 노드(310)의 임계 수는, 몇몇 악의적인 액세스 노드들이 일부 거래들을 우선화하거나 다른 거래들을 검열함으로써 블록체인의 무결성을 위협할 수 없는 방식으로 선택될 수 있다.
일부 실시예에서, 보안 노드들(320) 및 실행 노드들(330) 양쪽 모두가 블록을 구축하고 처리한 후, 액세스 노드들(310)은 그들의 출력(예를 들어, 계산 결과들)에 대해 실행 노드(330)에 질의할 수 있다. 일부 실시예에서, 액세스 노드들(310)은 실행 노드들(330)로부터 수신된 출력의 캐시를 저장한다. 일부 실시예에서, 액세스 노드들(310)은 더 직접적인 질의들로 실행 노드들(330)에 부담을 주지 않으면서 캐시된 계산 결과들(예를 들어, 상태 응답(345))을 클라이언트(302)에 제공한다. 일부 실시예에서, 검증가능한 랜덤 함수(VRF)는 실행 노드들(330)로부터의 어떤 출력들이 올바르게 계산되었는지를 체크하기 위해 액세스 노드들(310)이 질의할 수 있는지를 결정한다. 궁극적으로, 액세스 노드들(310)은 실행 노드들(330)을 "정직한 상태로" 유지할 수 있다. 이것은, 설명된 시스템에 의해 제공되는 탈중앙화의 액세스, 보안, 및 검증가능성 기준 사이의 힘의 균형을 유지하기 위해 수행될 수 있다. 시스템의 제공된 프로토콜들 및 기저 구조들은 BFT(Byzantine Fault Tolerance)가 높은데, 그 이유는, 일부 실시예에서, 액세스 노드들(310)의 푸울에 상당한 수의 Byzantine 에러가 있더라도, 보안 노드들(320)은 그들이 서명한 거래들이 네트워크의 임계 양에 의해 검토되었음을 승인할 것이 여전히 요구되기 때문이다. BFT 프로토콜은 소수의 악의적인 액세스 노드들 또는 보안 노드들(예를 들어, "소수"는 어떤 임계 수보다 적음을 의미)로부터 네트워크를 보호하여 그들이 네트워크의 무결성과 활성을 위협하지 못하게 할 수 있다. 노드에 의한 임의의 의도적 또는 비의도적 실수는 네트워크의 나머지 부분에 의해 검출, 수정, 귀속 및 처벌될 수 있다.
일부 실시예에서, 액세스 노드들(310)은, 그들의 질의들 및 거래들이 각각 응답되고 캡처될 수 있기 때문에 공중과 통신하기 위해 높은 레벨의 대역폭 및 낮은 레이턴시를 요구한다. 일부 실시예에서, 액세스 노드들(310)(예를 들어, 도 2의 사용자들(222-228))은 그들이 보장하는 모든 거래에 대해, 및 그들이 성공적으로 검증하는 각각에 대해, 정액 요금(또는 다른 보상)을 지불받을 수 있다. 일부 실시예에서, 액세스 노드들(310)은, 자신들이 불량-형성된 컬렉션들을 제공하거나 자신들이 보유할 것이라고 말한 거래 텍스트를 저장하는데 실패한 경우 슬래싱된다.
슬래싱은, 노드 오작동을 방지하고 전반적인 네트워크 보안 및 가용성을 유지하기 위해 블록체인 프로토콜들(예를 들어, 지분 증명)에 내장된 메커니즘일 수 있다. 유사하게, 인센티브들은, 프로토콜 보안, 가용성, 및 네트워크 참여를 장려하도록 설계될 수 있다. 슬래싱은 처벌의 한 형태이며, 노드의 제거, 금전적 페널티들, 및/또는 기타의 처벌들을 포함할 수 있다.
일부 실시예에서, 보안 노드들(320)은, 블록체인의 무결성을 보장하기 위해, 블록 최종성(block finality)을 달성하게끔 설명된 시스템에 의해 채용되는 의견일치 알고리즘에 참여한다. 이러한 맥락에서, 최종성은 임계 다수에 의해 서명되었고 액세스 노드들(310)에 의해 양호하게-형성되고 또한 저장되는 것으로 확정된 거래들의 종결된 블록(325)을 포함한다. 일부 실시예에서, 보안 노드들(320)은, 거래의 결정론적 출력을 알기 위해 필요한 순서를 설정하는 후보 블록들(315)에 관해 신속하게 투표할 수 있기 때문에 주로 보안 및 규모에 기여한다. 일부 실시예에서, 보안 노드들(320)은, 액세스 노드들(310)에 의해 자신들에게 제출된 서명된 거래 해시들이 설명된 시스템에 의해 요구되는 바와 같이 액세스 노드의 임계 수량에 의해 서명되었음을 유효성확인한다. 일부 실시예에서, 액세스 노드의 임계 수량은 구성가능한 문턱값에 의해 결정된다.
보안 노드들(320)에 의해 수행되는 의견일치 알고리즘(예를 들어, 지분 증명 알고리즘 등)은 서브프로토콜일 수 있다. 의견일치 알고리즘은, 보안 노드들(320)이 체인에 추가할 다음 블록에 관해 합의(예를 들어, "의견일치"에 도달)하는 것을 도울 수 있다.
일부 실시예에서, 일단 보안 노드들(320)이 제공된 거래들이 임계 수의 액세스 노드들(310)에 의해 서명되었다는 의견일치에 성공적으로 도달하고 나면, 거래들은 종결된 블록(325)으로 간주된다. 설명된 시스템 내의 프로세스의 보안은 기저 의견일치 알고리즘의 보안에 의존하며, 그 중 일부는 속도와 많은 수의 참여자를 지원하는 능력이다. 일부 실시예에서, 예시적인 탈중앙화 계산 시스템에 의해 채용되는 의견일치 알고리즘은 Casper CBC, Tendermint-derived SBFT, Hot Stuff, Fantomette, 또는 많은 참여자를 지원하기에 매우 적합한 다른 것들의 한 변형을 포함한다. 일부 실시예에서, 종결된 블록은 포함된 거래들의 순서를 결정할 수 있다. 일부 실시예에서, 거래들의 순서는, 컬렉션들의 순서, 및 컬렉션 내의 거래들의 순서에 기초한다. 일부 실시예에서, 이들 요소들의 순서는 제안 노드에 의해 실행되는 의사 랜덤 알고리즘에 대응할 수 있다.
일부 실시예에서, 보안 노드들(320)은 임계 수의 액세스 노드들(310)이 거래에 대해 검토했고 서명했는지를 체크하는 그룹이기 때문에 액세스 노드들(310)에 대한 체크포인트를 제공한다. 일부 실시예에서, 보안 노드들(320)은 특히 동료 보안 노드들(320)에 의해서만 책임지도록 유지된다. PoW 및 PoS 기반의 시스템의 일반적인 우려는, 집단의 작은 서브세트가 블록들을 생성하고 블록들에 관해 투표하는데 필요한 채굴 또는 지분 등의 중요한 자원을 제어할 수 있어서, 시스템 보안을 저하시킨다는 것이다. 일부 실시예에서, 참여 요건들을 낮춤으로써, 예시적인 탈중앙화 계산 시스템은 예를 들어 Byzantine 카르텔 또는 악의적인 행위자에 의한 다른 공모 활동을 조율하는 것을 더 어렵거나 비용이 많이 들게 할 수 있다.
일부 실시예에서, 보안 노드들(320)은, 최소 대역폭 및 계산 요건들을 가질 수 있어, 스마트폰 또는 저전력 ARM® 시스템 등의 저성능 컴퓨팅 디바이스라도 투표 프로세스에 참여하고 네트워크의 안전을 보장하는 것을 허용한다. 많은 네트워크들은 탈중앙화 네트워크로의 실질적 참여를 통한 개방된 참여를 주장할 수 있다. 이러한 문턱값을 유지하는 것은 네트워크 보안을 손상시킨다. 보안 노드들(320)에 대해 위에서 설명된 바와 같이 참여 요건들을 낮추는 것은 조율 문제를 보존하며, 이것은 불량 행위자들의 서브세트가 네트워크를 전복시키는 것이 극히 어려울 수 있기 때문에 높은 수준의 BFT를 제공하는데 핵심이 될 수 있다. 일부 실시예에서, 보안 노드들(320)은 그들이 블록에 포함시키는 거래들에 대해 지불받을 수 있다. 일부 실시예에서, 의견일치 프로세스에 참여하는 것은 이들 노드들이 지분을 올릴 것을 요구하며, 지분은 이들이 무효 블록에 서명하는 경우 슬래싱될 수 있다. 일부 실시예에서, 무효 블록은 액세스 노드들(310)로부터 임계 수의 서명들을 갖지 못한다.
일부 실시예에서, 실행 노드들(330)은 그들이 제공받는 종결된 블록들(325)의 출력들을 계산한다. 일부 실시예에서, 실행 노드들(330)은 보안 노드들(320)에 의해 종결되고 제공되었을 수 있는 후보 블록(315)(예를 들어, 종결된 블록(325))을 실행한다. 일부 실시예에서, 실행 노드들(330)은 보안 노드들(320)에 의해 제공된 해시와 매칭하는 거래 텍스트에 대해 액세스 노드들(310)에게 질의한다. 이 데이터를 이용하여, 실행 노드들(330)은 출력을 계산할 수 있고, 일부 실시예에서, 이 출력은 나중에 정직성을 보장하기 위해 액세스 노드들(310)의 무작위로 할당된 서브세트에 의해 무작위로 질의된다. 일부 실시예에서, 실행 노드들(330)은, 이력 상태를 계산하고 저장하기 위해 매우 적은 수의 이들 강력한 컴퓨터 자원만 요구되기 때문에 규모 및 효율성에서의 시스템의 개선사항들 중 적어도 일부를 책임질 수 있다.
일부 실시예에서, 실행 노드들(330) 중 하나는, 일단 종결된 블록(325)의 출력 또는 종결된 블록(325) 내의 거래들의 서브세트를 계산하고 나면 해시된 커밋(hashed commitment)을 제공한다. 해시된 커밋은, 새로운 블록을 실행한 후 블록체인의 전체 상태의 해시일 수 있는 상태 커밋에 대응할 수 있다. 일부 예에서, 이 해시된 커밋은 블록체인의 상태가 Merkle 트리에 저장될 때 Merkle 트리 해시와 대응할 수 있다. 일부 실시예에서, 이 출력은, 그 공동 실행자(예를 들어, VRF에 의해 결정된 다른 실행 노드들(330))도 역시 그들의 출력을 제출한 후에만 노출될 수 있다. 이것은 노드가 서로의 작업을 스푸핑하지 않음을 보장하는데 중요하다. 일부 실시예에서, 일단 실행 노드들(330)이 그들의 응답을 제출하고 나면, 출력이 노출된다. 일부 실시예에서, 일단 노출되고 나면, 출력은 액세스 노드들(310)에 의해 실행되는 무작위 질의들 및 체크들의 대상이 된다. 일부 실시예에서, 실행 노드들(330)은 비교적 낮은 BFT를 가질 수 있다. 그러나, 이것은, 그들이 수행하는 프로세스가 결정론적이기 때문에 이것은 시스템의 전체 보안을 손상시키지 않는다. 예를 들어, 임의의 나쁜 행위자는 액세스 노드들(310)에 의해 쉽게 검출되고 처벌될 수 있다.
일부 실시예에서, 이 비교적 작은 그룹의 노드들(예를 들어, 실행 노드들(330))은 네트워크의 출력을 결정하는데 필요한 계산들을 실행하거나 수행하는 태스크를 부여받을 수 있기 때문에 프로세서 속도 및 대역폭에 대한 가장 실질적인 기술적 요건들 갖는다. 일부 실시예에서, 이러한 정도의 특화를 허용하는 것은, 다른 전통적인 분산형 네트워크들에 비해 계산 비용을 적어도 천 배, 아마도 훨씬 더 줄일 수 있다.
일부 실시예에서, 실행 노드들(330)이 블록체인의 전체 세계 상태를 계산하고 저장할 책임이 있지만, 실행 노드들(330)은 그 상태에 대한 모든 외부 질의에 응답할 것이 요구되지 않을 수 있다. 일부 실시예에서, 실행 노드들(330)은 그들의 출력을 확정하기 위해 검증 기간 동안 적어도 한번 액세스 노드들(310)에 응답할 수 있다. 일부 실시예에서, 이 질의는 앞서 설명된 바와 같이 클라이언트(302)로부터의 미래의 질의들에 대한 답변(예를 들어, 상태 응답(345))을 액세스 노드들(310)에 제공하며, 이것은 미래에 그들에게 부담을 주는 과도한 질의들을 실행 노드들(330)로부터 경감시킨다. 그러나, 일부 실시예에서, 실행 노드들(330)은, 촉구받을 때 액세스 노드들(310)로의 그들의 출력에 대한 답변을 제공하지 못하면 처벌(예를 들어, 슬래싱)될 수 있다. 일부 실시예에서, 실행 노드들(330)은, 일단 그들의 출력이 검증되고 나면, 검증 기간의 끝에서 그들의 작업에 대해 지불받을 수 있다. 일부 실시예에서, 실행 노드들(330)에 의해 청구되는 비용들은 계산별로 달라지고 계산에 요구된 명령어들의 수에 기초할 가능성이 많다.
일부 실시예에서, 이들 상이한 노드 유형들(예를 들어, 액세스 노드(310), 보안 노드(320), 및 실행 노드(330)) 사이의 공통 스레드(thread)는 네트워크에 의해 유지되는 상태에 대한 그들의 관계 및 상태에 관한 권한일 수 있다. 예를 들어, 일부 실시예에서, 세계 상태 전체는 계산들을 수행하기 위해 각각의 및 모든 실행 노드들(330)에 의해 유지될 수 있다. 일부 실시예에서, 일단 실행 노드들(330)이 계산들을 실행하고 출력을 결정하고 나면, 이들은 세계 상태를 업데이트할 수 있고 그 후에 액세스 노드들(310)에 의해 검증된다. 일부 실시예에서, 실행 노드들(330)은 문제의 출력 상태에 대한 Merkle 증명을 제공해야 한다. 이러한 복잡성은 출력들의 무결성의 검증을 허용할 수 있다.
일부 실시예에서, 액세스 노드들(310)은 가장 최근에 업데이트되거나 액세스된 데이터를 샤딩된 방식으로 캐시할 수 있으며(예를 들어, 캐시된 상태(340)), 각각의 액세스 노드들(310)은 전체 정규 상태(335)의 일부를 보유한다. 이 캐시된 상태(340)는, 실행 노드들(330)이 바쁘고 답변할 수 없는 경우 사용자 질의들에 답변하기 위해(예를 들어, 클라이언트(302)에 답변 상태(345)를 제공하기 위해) 데이터가 쉽게 액세스될 수 있음을 보장하는데 도움이 될 수 있다. 더 신속하게 답변을 제공하는 이러한 능력은, 공중을 위한 네트워크의 액세스 및 검증가능성을 보장하는데 도움이 된다. 일부 실시예에서, 액세스 노드들(310)은 또한, 거래가 처리되고 결과가 실행 노드들(330)에 의해 검증될 때까지 거래 데이터를 보유할 책임이 있다. 일부 실시예에서, 일단 처리되고 나면, 거래 자체는 정규 상태(345)의 일부가 되고 액세스 노드들(310)은 더 이상 캐시된 상태(340)(예를 들어, 거래 텍스트)를 저장할 것이 요구되지 않는다.
일부 실시예에서, (예를 들어, 클라이언트 디바이스들(302) 중 하나에 의해) 거래가 생성될 때, 거래는 : 실행될 명시적 코드 및/또는 명시적 데이터(예를 들어, 스마트 계약), 및 거래를 생성하는 사용자 계정 또는 데이터 보유자와는 상이할 수 있는, 거래에 대해 지불하는 계정으로부터의 인증서들을 포함한다. 일부 실시예에서, 이 거래는 네트워크에 제출되고, 그 곳에서 예를 들어 인증서들을 체크하기 위해 액세스 노드들(310)에 의해 처리된다. 일부 실시예에서, 액세스 노드들(310)은, 실행 노드들(330)이 거래를 처리하고 그들의 출력이 검증될 때까지 그 거래를 유지하기로 커밋하기 위해 거래에 서명한다. 일부 실시예에서, 일단 임계 수량의 액세스 노드들(310)이 거래에 서명하고 나면, 거래는 2가지를 검증하기 위해 보안 노드들(320)에 전송될 수 있다 : 1) 임계 수량의 액세스 노드들(310)이 거래를 보았고, 저장하는데 동의했으며, 양호하게-형성되었음을 확인했다는 것, 및 2) 보안 노드들(320)은, 그들이 이전에 공개한 것이 무효하다는 증명을 제공받지 않는 한, 그 높이에서 또 다른 블록을 결코 검증하지 않을 것이라는 것.
일부 실시예에서, 보안 노드들(320)은 종결된 블록(325)에 관해 합의하기 위해 BFT 의견일치 알고리즘을 따른다. 일부 실시예에서, 후보 블록(305)이 보안 노드들(320)에 의해 종결되고 나면, 종결된 블록(325)은 계산을 위해 실행 노드들(330)에 전송될 수 있다. 일부 실시예에서, VRF가 채용되어 각각의 종결된 블록(325)을 계산할 책임이 있는 실행 노드들(330)의 서브세트를 결정한다. 일부 실시예에서, 일단 실행 노드(330)가 출력을 계산하고 나면, 실행 노드(330)는 결과의 해시된 커밋을 생성한다. 일부 실시예에서, 선택된 노드들 모두(예를 들어, 결정된 서브세트 내의 실행 노드들)가 그들의 커밋들을 제출했을 때, 그들은 암호화되지 않은 결과 출력을 노출시킬 수 있다. 일부 실시예에서, 모든 참여 실행 노드들(330)로부터의 이 출력이 동일한 것으로 나타날 때, 액세스 노드들(310) 각각은 VRF를 이용하여 검증될 소수의 거래를 선택한다. 일부 실시예에서, 일단 액세스 노드들(310)에 답변이 제공되고 나면, 액세스 노드들(310)은 이를 캐시하여 클라이언트(302)로부터의 미래의 질의에 답변한다. 예를 들어, 사용자가 시스템으로부터 상태를 회수하기를 원할 때, 이들은 (예를 들어, 클라이언트(302)를 통해) 액세스 노드들(310)에게 질의를 제기할 수 있다. 예를 들어, 질의는, "이 블록 높이에서 이 레지스터의 내용은 무엇인가?" 등의 형태일 수 있다. 일부 실시예에서, 액세스 노드들(310)은 그들이 보유하고 있는 캐시된 상태를 통해 질의를 이행하거나 출력에 대해 실행 노드들(330)에게 질의할 수 있다.
일부 실시예에서, 거래 및 거래가 포함된 상응하는 블록은, 검증 기간이 끝난 후에만 정규화된 것으로 간주될 수 있다. 일부 실시예에서, 검증 기간 동안, 예를 들어, 결과들은 액세스 노드들(310)과 공중 양쪽 모두에게 개방되어 잘못된 출력의 증명들을 제출한다. 일부 실시예에서, 검증 기간은 최대 몇 시간일 수 있다.
일부 실시예에서, 전술된 바와 같이 예시적인 탈중앙화 계산 시스템의 아키텍쳐를 분할함으로써, 다수의 이점이 달성될 수 있다: 특히, 동기화, 효율성, 및 규모. 예를 들어, 탈중앙화 환경에서 개발하는 것은 개발자에게 많은 불확실성과 함께 다가오며, 그 중 적잖은 것은, 그들이 기입할 수 있기 전에 변경되는 데이터를 판독하는 것이다. 이를 염두에 두고, 강력한 직렬성 보장은, 그 결과물이 거래들이 중첩되지 않는 순차적 스케쥴과 동등하며, 예시적인 탈중앙화 계산 시스템에 의해 제공되는 환경 등의 탈중앙화 개발 환경이 제공할 수 있는 가장 중요한 것들 중 하나이다. 거래들의 순서를 커밋함으로써, 거래들이 절대적 순서로 실행된 것처럼 보일 수 있으므로, 처리량 향상을 위해 일부가 병렬로 실행되더라도 개발자는 시스템에 대해 추론할 수 있다. 일부 시스템은, 특히 거래들이 샤드들 사이에 이동할 때, 직렬성을 유지하기 위해 잠금 메커니즘들에 의존한다. 일부 실시예에서, 실행 노드들(330)이 출력을 결정하기 이전의 예시적인 탈중앙화 계산 시스템 프로토콜의 순서에 관한 합의는, 일단 거래가 정렬되고 나면, 그 결과에 대한 확실성이 있다는 것을 보장한다.
일부 실시예에서, 자원들을 효율적으로 채용하기 위해, 예시적인 탈중앙화 계산 시스템은 지분 증명(PoS) 기반의 시스템을 포함할 수 있고 가능한 한 많은 중복 태스크들을 제거하도록 설계된다. 예를 들어, 고전적인 블록체인 구현에서, 모든 노드는 모든 거래를 검토하고 모든 상태를 저장할 것이 요구될 수 있다. 결정론적 태스크들과 비결정론적 태스크들을 나누고 그들 각각의 실행에 특화될 수 있는 자원들에 태스크들을 할당함으로써, 예시적인 탈중앙화 계산 시스템의 처리량이 엄청나게 향상될 수 있다.
일부 실시예에서, 아키텍쳐 레벨에서, 예시적인 탈중앙화 계산 시스템의 보안은,1) 3개의 상이한 노드 유형들 사이의 권한 및 책임의 분할, 2) 의견일치 알고리즘에 의해 지원되는 높은 참여 정도, 및 3) 액세스 노드들(310)을 네트워크의 인터페이스들로서 지정하는 것에 의해 제공된다. 이들 설계 요소들은 탈중앙화 시스템들이 자주 직면하는 흔한 공격들 각각을 해결하기 위해 상이하게 표면화될 수 있다. 예시적인 탈중앙화 계산 시스템의 액세스 및 검증가능성 요건들은, 더 넓은 네트워크와 공중 양쪽 모두가 검증 기간 동안 프로세스를 검증하고 이에 대해 논쟁할 수 있도록 보장한다. 계산의 출력이 결정론적이지만, 일부 실시예에서, 일단 그 순서가 종결된 블록(325)에서 설정되고 나면, 증명가능한 에러가 네트워크에 제출되는 경우 상태가 재계산되기 위한 검증 기간이 남아 있어서, 검출가능성에 대한 기회를 보장한다. 예를 들어, 일부 실시예에서, 액세스 노드들(310)은 모든 거래에 서명하여 서명 보증인이 거래에 대해 지불하고 귀속을 보장한다는 것을 확신시킨다. 일부 실시예에서, 모든 노드들은 그들이 네트워크의 그 부분으로부터 제거되는 경우 잃게 될 가치에 관해 스테이킹(stake)되며, 이것은 위반이 커밋되는 경우 처벌(예를 들어, 슬래싱)을 보장한다.
블록체인 맥락에서, 검열 저항은 하나의 그룹이 또 다른 그룹의 네트워크 액세스를 거부하는 어려움에 대응할 수 있다. 따라서, 일부 실시예에서, 액세스 노드들(310)의 역할은 액세스를 보장하고 누구라도 거래를 감사하고 제출할 수 있도록 보장하는 것이다. 검열을 방지하기 위해 배치된 아키텍쳐 레벨 조치들에 추가하여, 일부 실시예에서 보안 노드들(320)은 거래 해시들만을 볼 수 있다. 따라서, 이러한 실시예에서, 보안 노드들(320)이 거래를 검열하기 위해서, 그들은 서명자들의 해시, 데이터, 및 액션들을 알아야 할 필요가 있을 것이다. 일부 실시예에서, 보안 노드들은, 일반적으로, 공동 참여자들의 순수 볼륨(sheer volume)에 의해 설명된 시스템을 훼손하는 것이 방지된다. 따라서, 임의의 문제에 관한 공모는 조율하기가 극히 어려울 것이다.
일부 실시예에서, 보안 노드들(320)은 이중 지출 공격(double spend attack)으로부터 방어할 수 있다. 예를 들어, 일부 실시예에서, 이 그룹에 대한 광범위한 참여는 동일한 높이의 대안 블록을 존중(honor)하기 위해 공모하는 소그룹의 위험을 크게 감소시킨다. 예를 들어, 이 노드 푸울이 한 그룹의 거래들과 함께 제공될 때, 그들은 그 그룹에 서명하는 충분한 수의 액세스 노드들(310)과, 그 순간과 미래 양쪽 모두에서 그 높이에서 그들이 존중할 유일한 블록을 형성하는 그 그룹 양쪽 모두에 관해 의견일치에 도달한다. 일부 실시예에서, 경쟁 높이에 있는 것에 대해 블록을 거부하는 사기 증명이 검증 기간 동안 성공적으로 제출되지 않는 한, 제공된 임의의 다른 블록은 네트워크에 의해 거부될 것이다.
전방 실행 공격(front running attack)에서, 적대적 노드는 자신의 거래를 다른 노드보다 먼저 삽입하는 것이 유리하다고 결정한다. 이러한 움직임은 경쟁 입찰가보다 더 높은 입찰가를 제시하는 것처럼 간단할 수도 있고, 또는 그 출력을 잘못 조작하도록 전략적으로 거래를 삽입하는 것처럼 교활할 수도 있다. 이를 방지하기 위해, 일부 실시예에서 실행 노드들(330)은 VRF를 수행하여 거래들의 순서를 계산한다. 이것은, 거래가 이미 결정론적으로 정렬완료된 후까지 거래들의 순서를 알 수 없거나 지시할 수 없도록 보장한다.
일부 실시예에서, 액세스 노드들(310) 및 보안 노드들(320) 각각은 블록에 포함된 거래들에서 발언권을 갖는다. 이러한 실시예들에서, 어느 한 그룹이 사전에 거래 순서를 설정할 수 있을 때, 그것은 그들이 그 순서를 이용하고 그들 자신의 거래들을 우선화할 기회를 제공한다. 일부 실시예에서 거래들의 정규 순서(정규 상태(335))를 노출하기 위해 VRF를 실행할 것을 실행 노드들에게 요구함으로써, 노드들이 시퀀스를 조작할 방법이 없게 된다. 일부 실시예에서, VRF를 결정하는데 이용되는 파라미터들은 결정론적일 것이고 보안 노드들(320)로부터의 출력에 의존할 것이다.
잠재적인 가짜 계정들 및 활동들에 대한 저항은, 이러한 악의적인 거래들이 노드들에 막대한 부담을 야기할 수 있기 때문에, 네트워크의 처리량을 유지하는 한 양태이다. 일부 실시예에서, 네트워크의 인터페이스로서, 액세스 노드들(310)은 거래에 서명하는 계정들 각각의 잔액을 알고 있다. 일부 실시예에서, 거래들에 대해 지불하는 사용자는 또한, 스팸 방지를 보장하기 위해 거래를 제출하기 위한 최소 잔액도 보유해야 한다.
일부 실시예에서, 액세스 노드들(310)에 의해 수행되는 제1 프로세스는 블록에 포함시키기 위해 보안 노드들(320)에 제출되어야 하는 거래들의 목록 및 거래들이 발생해야 하는 순서를 결정하는 것이다. 이 프로세스는, 이 문제에 대해, 각각이 동등하게 "옳은" 많은 가능한 답변들이 존재하는 "순수한 의견일치 문제"이다. 그러나, 상이한 선택들은 상이한 정규 상태들로 이어지기 때문에 네트워크는 단일의 답변에 동의할 수 있다.
일단 거래들의 정렬된 목록에 관해 합의가 이루어지고 나면, 이들 거래들의 처리로부터 어떤 정규 상태가 발생할 수 있는지에 대해 단일의 객관적으로 정확한 답변이 있을 수 있다. 예를 들어, 에러 없이 그 거래 목록을 처리하는 임의의 노드는 동일한 거래 목록을 올바르게 처리하는 임의의 다른 노드와 정확히 동일한 정규 상태로 끝날 수 있다. 일부 예에서, 블록체인 계산들은 다른 노드들에 의해 검증되는 것을 허용하기 위해 완전히 결정론적일 수 있다. 따라서, 2개의 성능 프로파일과 함께 2개의 문제가 있을 수 있다. 첫째, 정렬 프로세스는 다양한 BFT 의견일치 알고리즘에 의해 해결될 수 있는 순수한 의견일치 문제일 수 있다. 일부 실시예에서, 이러한 프로세스는 의견일치 노드들 사이의 많은 통신(예를 들어, 문턱값보다 큰 통신 메시지들)을 요구할 수 있지만, 계산적으로 복잡하지 않을 수 있다. 이 프로세스에 관여하는 노드가 많을수록 체인을 전복시키기가 더 어렵기 때문에, 네트워크 보안은 이 프로세스로부터 직접 나온다. 둘째, 일부 실시예에서, 계산 프로세스는 네트워크가 바쁠 때 계산적으로 강력한 노드들을 요구할 수 있지만, 노드들 중 임의의 것이 객관적으로 계산 노드의 "작업을 체크"하고 에러 발생시 에러를 증명할 수 있으므로 많은 수의 노드를 필요로 하지 않는다. 일부 실시예에서, 노드가 무효 출력을 제공할 때, 그 노드는 자신의 지분의 일부 또는 전부를 잃고 잘못 처리된 계산들은 정직한 노드들에서 재실행될 수 있다. 상기 프로세스의 결과는, 일부 실시예에서, 중앙집중화로 인한 보안 저하없이 최대 처리량을 달성할 수 있는 단일의 샤딩되지 않은 네트워크이다.
스키마의 예시적 통합
일부 실시예에서, 상기의 예시적인 탈중앙화 계산 시스템은 파이프라인 아키텍쳐 및 네트워크 내의 노드 역할들의 분리에 기초하여 문턱값보다 큰 처리량을 달성하는 블록체인을 포함한다. 전술된 바와 같이, 블록에서의 거래들의 실행은 실행 노드들(330)에 의해 수행된다. 일부 실시예에서, 설명된 증명 방식(예를 들어, 기밀 지식의 특화된 증명)의 통합은, 계산의 올바름(예를 들어, 사용자로서의 역할)을 보장하기 위해, 검증 노드들(미도시)이라고 불리는, 또 다른 유형의 노드들에 의해 실행이 재수행되는 것을 포함할 수 있다. 이들 노드들, 즉, 실행 노드들(330) 및 검증 노드들 양쪽 모두의 각각에 의한 실행 프로세스는, 블록의 거래들의 실행 증명으로서 간주될 수 있는 실행 트레이스를 생성한다.
실행 트레이스는, 블록 거래들의 실행을 추적하는 일련의 단계들을 포함할 수 있다. 단계들의 식별은, 블록체인 상태로의 및 상태로부터의 기입을 포함할 수 있다.
일부 실시예에서, 검증 노드들이 계산을 검증하는 올바른 잡을 수행하고 있고 값비싼 체크를 건너뜀으로써 실행 노드들(330)의 결과들을 유효성확인하지 않고 있다는 것을 보장하기 위해, 증명 방식의 통합은 각각의 검증 노드가 실행 트레이스를 알고 있다는 증명을 공개하게 한다. 실행 트레이스 자체를 공개하면, 결과적으로 임의의 검증 노드가 자신이 거래들을 계산했다고 주장하게 된다. 따라서, 실행 트레이스는 이 시나리오에서 비밀이며 보호된 상태로 유지되어야 한다. 실행 노드들(330) 및 검증 노드들은 실행 트레이스를 안다는 특화된 증명(예를 들어, 증명)을 공개한다.
일부 실시예에서, 의견일치 노드들로서 작용하는 액세스 노드들(310)은 모든 증명을 수집하고 그들이 모두 동일한 실행 트레이스로부터 생성되었음을 검증한다. 검증이 유효한 경우, 실행 트레이스를 올바르게 계산하는 정직한 검증 노드들의 문턱값이 존재함을 프로토콜이 확신시키므로 실행 트레이스는 유효해야 한다. 검증에서의 모든 미스매칭은 검출가능하고 부정직한 당사자에게 귀속된다.
일부 실시예에서, 검증 노드들은 거래들을 병렬 방식으로 재계산하는 반면, 의견일치 노드들(310)은 전술된 증명을 이용하여 결과들의 안전성을 보장한다. 일부 실시예에서, 전술된 예시적인 탈중앙화 계산 시스템은 간결하고 효율적인 방식을 구현하는 프로세스 또는 프로토콜을 채용한다. 이 프로세스는 한 방식에 대한 공식적인 일반 설명뿐만 아니라 그 보안 정의에 따라 여기서 설명된다. 일부 실시예에서, 프로세스는 BLS(Boneh-Lynn-Shacham) 서명 방식에 기초한 구성을 포함한다. 아래의 설명은 이 방식에 대한 적절한 계산 가정들 하에서 보안의 증명을 제공한다.
일부 실시예에서, 실행 노드들(330)은 종결된 블록 내의 모든 거래의 과중한 계산을 수행한다. 설명된 프로세스는 블록 거래들을 재계산하기 위해 검증 노드들을 할당함으로써 결함이 있는 결과들을 검출하고 귀속시키는 메커니즘을 도입한다. 일부 실시예에서, 이 계산은 병렬 및 독립적인 방식의 더 가벼운 계산 검증을 허용하기 위해 청크들로 분할된다. 일부 실시예에서, 의견일치 노드들(310)은 블록 결과들을 커밋하고 계산이 대다수의 검증 노드들에 의해 검증되었음을 확신시킨다. 일부 실시예에서, 설명된 BLS 기반의 프로세스 구현은, 전체 청크를 실행함에 의한 것보다 더 저렴하게 중간 결과들이 도출될 수 없다는 가정하에 청크 계산의 중간 결과들을 그 청크의 거래들의 실행 증명으로서 채용하는 것을 포함한다.
일부 예에서, 청크들은 청킹 알고리즘(chunking algorithm)을 이용하여 분할된다. 청킹 알고리즘은 블록을 청크들로 분할하여 청크들이 비슷한 계산 시간을 갖게 할 수 있다. 일부 예에서, 검증 노드들은, 청크들 덕분에, 더 가볍고 병렬적이며 독립적인 방식으로 블록을 계산한다.
일부 실시예에서, 실행 노드들(330)은 각각의 블록 청크의 계산 중간 결과들에 대한 커밋으로서 증명을 제공하고, 검증 노드들은 그들이 검증하는 각각의 청크의 그들 자신의 중간 결과들에 대한 커밋으로서 또 다른 것을 제공한다. 일부 실시예에서, 의견일치 노드들(310)의 역할은 각각의 청크의 증명들이 동일한 중간 결과로부터 일관되게 생성되었음을 검증함으로써 중재하는 것이다. 단일의 정직한 검증 노드는 프로토콜이 청크 계산에서 잘못된 결과를 검출하는 것을 허용한다. 이 프로세스는 블록 계산이 높은 확률로 정확함을 보장한다. 채택된 프로세스는, "게으른" 검증 노드들이 청크를 재계산했다고 주장하는 것을 방지하지만 중간 결과들을 계산한 임의의 당사자와의 공모를 방지하거나 검출하지는 못한다. 그러나, 정직한 결과로부터 증명을 생성하는 단일의 비공모 노드는, 의견일치 노드들(310)이 다른 잘못된 증명들을 발견하는데 도움을 주기에 충분하다.
일부 실시예에서, BLS 기반의 프로세스는 당사자가 비밀 자체에 대해 더 많이 알지 않고도 동일한 비밀 메시지에 서명한 둘 이상의 서명을 체크하는 것을 허용하는 방식(예를 들어, 페어링 동등성 체크)을 포함한다. 일부 실시예에서, 특히 BLS 기반의 프로세스 구성은 또한, 예시적인 탈중앙화 계산 시스템 내에서 채용되는 방식에 의해 요구되는 속성들을 넘어서는 어떤 우아한 속성들을 제공한다.
검증자의 딜레마에 대한 관계
일부 예에서, 이 시스템은 검증자의 딜레마를 완화하는데 도움이 될 수 있다. 검증자의 딜레마는 일부 참여 노드들이 다른 노드(들)의 작업을 검증해야 하는 분산형 시스템들에서 발생할 수 있다. 또한, 검증자에 대한 보상이 (통계적으로) 그 속도에 따라 증가하고 검증자들이 체크하고 있는 결과들이 1에 충분히 가까운 확률로 올바른 시스템의 경우, 대부분의 블록체인들은 노드들이 가능한 한 빠르게 실행되고 정확한 결과를 제공하게 하는 내장된 인센티브들을 갖는다. 검증자들이 그들의 작업에 대해 보상을 받더라도, 모든 결과를 맹목적으로 승인하는 것이 이러한 환경에서 여전히 가장 수익성 있는 전략이 될 수 있는데, 그 이유는, 이러한 전략은 시간을 절약할 뿐만 아니라 검증 작업을 위한 하드웨어 및 에너지 비용을 절약하기 때문이다. 또한, 이러한 전략을 채택하는 노드들은 장기적으로 악의적인 행위자들에 대한 네트워크의 복원력을 손상시킨다.
일부 실시예에서, 설명된 시스템은 그 아키텍쳐를 통해 검증자의 딜레마를 완화한다. 특히, 일부 실시예에서, 검증 노드들은 그들이 할당받은 청크들의 실행 트레이스를 알고 있다는 것을 증명해야 한다; 그들은 잘못된 결과를 승인하는 것에 대해 슬래싱된다; 그리고, 잘못된 결과를 체크하는 소수의 정직한 검증 노드들만으로, 잘못된 결과를 생성한 실행 노드(들)뿐만 아니라 이를 승인한 모든 검증 노드를 슬래싱하기에 충분하다.
문제의 이론적/수학적 추상화
G 1G 2를 2개의 순환 그룹이라고 하고, g1과 g2를 각각 G 1G 2의 생성자들이라고 하자. co-CDH(Computational co-Diffie-Hellman) 문제는,
Figure pct00001
이 주어질 때
Figure pct00002
를 계산하는 것이다. co-CDH 가정은, 어떠한 확률적 다항식-시간 알고리즘도 무시할 수 없는 확률로 co-CDH 문제를 해결하지 못한다라고 언급한다.
관련된 문제는 co-DCDH(Divisible Computational co-Diffie Hellman problem)이다 :
Figure pct00003
이 주어질 때,
Figure pct00004
를 계산한다. co-DCDH 가정은 co-CDH 문제와 유사하게 정의된다. 이 2개의 가정이 동등하다는 것이 나와 있다.
보조정리 1
(G 1 , G 2 ) 에서 co-DCDH 및 co-CDH 가정들은 동등하다.
증명. co-DCDH 문제를 해결하는 적대자 A 는 co-CDH 문제도 해결하고 그 반대의 경우도 도시되어 있다.
·co-CDH ⇒ co-DCDH:
A 는 co-DCDH 챌린지
Figure pct00005
가 주어지고 다음과 같은 co-CDH 솔버 알고리즘에 액세스할 수 있다.
G1 × G2에서 임의의 랜덤(r 1, r 2)에 대해
Figure pct00006
가 되도록 하는 A co-cDH.
A는,
Figure pct00007
를 출력하는
Figure pct00008
를 계산하고, co-DCDH 챌린지를 해결한다.
· co-CDH
Figure pct00009
co-DCDH:
A는 co-CDH 챌린지
Figure pct00010
가 주어지고 다음과 같은 co-DCDH 솔버 알고리즘에 액세스할 수 있다.
G1 × G2에서 임의의 랜덤(r 1 , r 2)에 대해
Figure pct00011
가 되도록 하는 A co-DCDH.
A는,
Figure pct00012
를 출력하는
Figure pct00013
를 계산하고, co-CDH 챌린지를 해결한다.
두 문제는 동등하므로 2개의 가정도 역시 동등하다.
BLS 서명들
BLS 서명 방식에 대한 간략한 검토로서, G1, G2G T 를, (G1, G2)가 쌍선형 그룹 쌍인 프라임 차수(prime order) p의 3개의 순환 그룹이라고 하자. e를 효율적으로 계산가능한 비축퇴 페어링 e : G1 × G2G T 라고 하고, H를 (랜덤 오라클로서 모델링된) 해시 함수
Figure pct00014
이라고 하자. 3개의 그룹에 대해 곱셈적 표기가 이용된다. 서명 방식은 다음과 같이 정의된다 :
Figure pct00015
, 여기서,
Figure pct00016
Figure pct00017
.
Figure pct00018
, 여기서,
Figure pct00019
.
Figure pct00020
, 여기서
Figure pct00021
Figure pct00022
인 경우에는 OK이고 그 외에는 FAIL이다.
Dan Boneh, Ben Lynn 및 Hovav Shacham. Weil 페어링으로부터의 짧은 서명들. 2001년 12월 ASIACRYPT(이후부터, Boneh 등)은, 서명 방식이, (G1, G2)에서 선택된 메시지 공격, 랜덤 오라클 및 co-CDH 가정 하에서 실존적 위조(existential forgery)에 대해 안전함을 증명했다.
등록된 키 및 비밀 키의 인지(knowledge) 모델들
Thomas Ristenpart와 Scott Yilek. 소유 증명들의 힘: 불량-키 공격들에 대해 다자 서명들을 보호. 2007년 5월 EUROCRYPT(이후부터, Ristenpart 등)은, 프로토콜 R = (Reg-Prove, Reg-Verify)인, 등록된 키 모델을 정의한다.
· Reg-Prove(sk, pk) → π는 등록 증명을 생성한다.
· Reg-Verify(pk, π) → {OK, FAIL}은 pk에 대해 증명이 유효한 경우 OK를 출력하고, 그 외에는 FAIL을 출력한다.
키 등록이 요구되지 않은 경우, (Reg-Prove, Reg-Verify)를 다음과 같이 텅 빈 함수로 대체할 수 있다: Reg-Prove는 빈 문자열을 출력하고, Reg-Verify는 임의의 입력에 관해 OK를 출력한다.
아래의 BLS 서명들에 기초한 증명에서, 당사자들이 그들의 공개 키에 대응하는 비밀의 인지를 증명하는 한 부류의 키 등록 프로토콜들이 고려된다; 이것은 비밀 키 인지(KOSK; knowledge of secret key) 모델이라 불린다. 이 모델에서, 모든 당사자는, 각각, 증명들을 생성하고 검증하는 함수 RKOSK = (KOSK-Prove, KOSK-Verify)에 액세스할 수 있다.
이 모델을 인스턴스화하기 위해, 당사자들은 비밀에 대한 그들의 인지의 0-인지 증명(ZKPK; zero-knowledge proof of knowledge)을 이용할 것이 요구된다. ZKPK에 기초한 키 등록 프로토콜들은 기저 ZKPK로부터 상속하는 2개의 추가 알고리즘인 KOSK-Simulate 및 KOSK-Extract를 제공한다.
· KOSK-Simulate(pk) → π는 증명 검증에 이용되는 무작위성에 대한 액세스가 주어지면, 실제 증명과는 계산적으로 구별될 수 없는 증명을 출력하는 시뮬레이터이다.
· KOSK-Extract(pk, π) → sk는 설득력 있는 증명으로부터 sk를 출력하기 위해 π를 생성한 당사자와 상호작용(특히, 되감기)하는 추출기이다.
시뮬레이션 및 추출은 ZKPK의 표준 개념이므로, 더 공식적으로 정의되지 않는다.
증명 방식
예시적인 탈중앙화 계산 시스템에서, 정직한 실행 및 검증 노드들은 지분투자(staking) 개인 키와 여기서는 기밀 지식이라고 하는 비밀을 이용하여 증명을 생성한다. 의견일치 노드는 대응하는 공개 키들을 이용하여 실행 및 검증 노드들에 의해 생성된 증명들을 검증한다. 검증 프로세스는 모든 증명이 동일한 기밀 지식에 기초하여 생성되었음을 보장해야 한다. 이 이용 사례에 기초하여, 한 방식의 일반적인 정의가 제공된다.
방식 정의
정의 1
기밀 지식의 특화된 증명은 4가지 알고리즘을 포함할 수 있다 :
·
Figure pct00023
. 나머지 알고리즘들에 대한 묵시적 입력인 공개 파라미터들 pp를 생성한다.
·
Figure pct00024
개인 및 공개 키 쌍을 출력한다.
·
Figure pct00025
. 비밀 키 sk하에서 메시지 m에 대한 증명 a를 생성한다.
·
Figure pct00026
. pka에 대응하는 비밀 ska에 대해, pkb에 대응하는 skb처럼, 다음과 같은 경우 OK를 반환하고,
Figure pct00027
그 외의 경우, FAIL을 반환하며, 기껏해야 무시할만한 확률로 예외를 동반한다.
동일한 기밀 지식으로부터 정직하게 증명들이 생성된 경우, SP-Verify는, 이 방식의 올바름을 정의하는 높은 확률로 OK를 출력할 것이 요구된다.
정의 2
올바름 한 방식은 다음의 경우에 올바르다
Figure pct00028
여기서, negl(λ)은 보안 파라미터 λ에서 무시할 수 있는 함수이다.
이 방식은 또한, 상기의 등록된 키 모델 섹션에도 정의되어 있다. 이 경우, 올바름 조건은 등록된 키들에 관해서만 유지된다.
SP-Verify 정의는 σ- a 및 σ- b와 일치하는 메시지 m의 존재만을 요구한다. 이 정의는 두 당사자들에게 충분하지만 셋 이상의 당사자들로 확장하는 것이 더 미묘하다. 그 이유를 알아보기 위해, ska 및 skb의 소유자들이 비밀 m1을 공유하는 반면, ska 및 skc의 소유자들은 비밀 m2를 공유하는 경우를 고려하자. SP-Verify의 정의에 의해, SP-Verify
Figure pct00029
및 SP-Verify
Figure pct00030
는 m1 ≠ m2인 경우에도 양쪽 모두 OK를 출력할 수 있다. 그 결과, 이들 2개의 체크는 skb 및 skc의 소유자들이 어떠한 비밀을 공유한다는 것을 보장하기에 충분하지 않다.
그러나, 예시적인 탈중앙화 계산 시스템에서 검증 프로세스를 채용하여 ska 및 skbc 및 skc의 소유자들 모두가 동일한 비밀 지식 m을 공유한다는 것을 보장할 수 있다(그리고, 셋보다 큰 그룹들에 대해서도 마찬가지)는 점을 기억해야 한다. 이 속성을 반영하기 위해, 한 방식에 대한 강한 천이성(strong transitivity)이 정의된다.
정의 3
강한 천이성. 한 방식은, n ≥ 3인 모든 정수에 대해, 모든 유효한 키 쌍들
Figure pct00031
, 및 모든 증명 σ1, ..., σn에 대해, 다음과 같은 속성이 만족된다면, 강한 천이성을 충족한다 :
Figure pct00032
모든 i에 대해,
Figure pct00033
이도록 하는 메시지 m이 존재한다면, 모든 증명 σi는 서로를 검증한다, 즉, 모든
Figure pct00034
에 대해,
Figure pct00035
success이다.
강한 천이성 정의는, 복수의 증명이 동일한 기준 증명 σi에 대해 검증하는 경우, 이들 증명들은 서로를 검증해야 할 뿐만 아니라(천이성) 이들 모든 증명(기준 증명 포함)이 생성될 수 있는 메시지 m이 존재한다고 명시한다.
예시적인 탈중앙화 계산 시스템에서, 실행 노드는 기준 증명을 생성하는 반면, 복수의 증명은 상이한 검증 노드들에 의해 생성된다. 강한 천이성을 만족하는 방식의 경우, 모든 노드가 동일한 비밀 지식을 공유함을 보장하기 위해 단일 실행 노드의 증명과 대조하여 모든 증명을 검증하는 것으로 충분하다.
방식 보안
의견일치 노드는, SP-Verify 알고리즘을 실행하기 위해 2개의 증명과 대응하는 키들 외에 기밀 지식에 대한 어떠한 정보도 요구하지 않는다. 직관적으로, 기밀 지식은 블록을 실행한 이들을 제외한 네트워크의 모든 당사자에게 비밀로 유지되어야 한다. 이것은, 증명이 기밀 지식을 복구하는 것을 허용해서는 안 된다는 것을 의미한다.
더 구체적으로, 이 방식은, 비밀 지식을 복구하거나 그 지식에 대한 액세스없이 증명을 위조하는 악의적인 행위자들에 대해 내성이 있어야 한다. 예시적인 탈중앙화 계산 시스템에서, 이러한 공격들은, 비용이 많이 드는 블록 실행을 건너뛰고 비밀을 알고 있다고 주장하는 "게으른" 검증 노드들에 의해 취해질 수 있다. 공격자들은 또한, 예를 들어 잘못된 결과에 대해 더 많은 "투표"를 누적하기 위해, 또 다른 노드를 대신하여 증명을 위조하려고 시도할 수 있다.
직관적으로, 증명을 생성하는 것은, 2개의 비밀, 즉, 키 sk와 메시지 m을 알 것을 요구한다. 이 직관은 도전자 C와 적대자 A 사이에 각각 있는 2개의 보안 게임을 통해 아래에서 공식화된다. 제1 게임인 인지-위조(knowledge-forgery)는 기밀 지식 m을 모른 채 그 자신의 키로 증명을 위조하는 게으른 노드의 능력을 모델링한다. 제2 게임인 키 위조(key-forgery)는 대응하는 비밀 키를 모른 채 또 다른 노드의 공개 키 하에서 어떤 선택된 m에 대한 증명을 생성하는 악의적인 노드의 능력을 모델링한다. 이들 게임들은, 어떠한 등록도 요구되지 않는 경우 텅 빈 방식일 수 있는, 키 등록 방식(Reg-Prove, Reg-Verify)을 가정하여 정의된다.
정의 4
인지-위조 게임.
· 셋업. C는 랜덤 메시지
Figure pct00036
를 샘플링한다.
· 질의. AC에게 임의의 수의 질의를 한다. 각각의 이러한 질의에서, C는 새로운 키
Figure pct00037
를 샘플링하고, 등록 증명
Figure pct00038
과 증명
Figure pct00039
을 계산하고,
Figure pct00040
A에게 전송한다.
· 출력. 적대자가
Figure pct00041
을 출력하고, 다음과 같은 경우 게임에서 승리한다
Figure pct00042
정의 5
키-위조 게임.
· 셋업. C
Figure pct00043
을 샘플링하고,
Figure pct00044
을 계산하고,
Figure pct00045
A에 전송한다. C는 또한, 2개의 목록을 초기화한다: 초기에 비어 있는 L m , 초기에 튜플
Figure pct00046
을 포함하는 L k .
· 질의. A는, 임의의 순서로, 임의의 개수의 2개의 유형의 질의를 할 수 있다:
―Q1: A
Figure pct00047
C에 전송한다. Cpk=pk g 인 첫 번째 튜플(sk, pk)L k 에서 회수한다; 이러한 튜플이 없으면 C는 ⊥를 반환한다. 그렇지 않다면, C
Figure pct00048
를 계산하고 σ i A에 전송한다. 마지막으로 pk = pk c 이면 Cm i rni를 목록 L m 에 추가한다.
―Q2: AC에게 빈 질의를 전송하고, C
Figure pct00049
를 샘플링하여
Figure pct00050
를 목록
Figure pct00051
에 추가하고,
Figure pct00052
를 계산하고,
Figure pct00053
A에게 전송한다.
· 출력. A
Figure pct00054
를 출력하고 다음과 같은 경우 승리한다
Figure pct00055
적대자가 기밀 지식이나 비밀 키를 갖지 않는 경우 포착하기 위해 제3의 게임을 정의할 수 있다. 이 경우는, 공격자가 비밀이나 타겟의 키를 모를 때 타겟 노드가 일부 비밀에 액세스할 수 있다고 주장하기 위해 예시적인 탈중앙화 계산 시스템에서 증명을 위조하는 것에 대응한다. 이 위조는 분명히 다른 2개의 게임보다 더 어렵다: 이러한 위조에 성공적인 알고리즘을 가진 적대자는 다른 2개의 게임 중 하나에서 쉽게 승리할 수 있다. 따라서, 이 게임은 고려되지 않는다.
정의 6
위조불능. 소정의 방식은, 어떠한 확률론적 다항식-시간 적대자 A도 인지-위조에서 승리하지 못한다면 인지-위조에 대해 안전하며, 기껏해야 무시할만한 확률로 예외를 동반한다. 소정의 방식은, 어떠한 확률론적 다항식-시간 적대자 A도 키-위조에서 승리하지 못한다면 키-위조에 대해 안전하며, 기껏해야 무시할만한 확률로 예외를 동반한다. 인지-위조와 키-위조 양쪽 모두에 대해 안전한 방식은 위조할 수 없다.
소정의 방식의 한 추가적인 속성인, 비가단성(non-malleabilit)이 정의된다. 직관적으로, 증명 σ b 및 2개의 공개 키 pk a pk b 에 대해,
Figure pct00056
에 대조하여 검증되는 증명 aa가 주어지면,
Figure pct00057
에 대조하여 검증되는 별개의 증명
Figure pct00058
을 생성하는 것이 불가능하다. 상기의 예시적인 탈중앙화 계산 시스템 등의 다양한 시스템을 통한 이 방식의 구현들은 이 속성을 가질 것이 요구되지 않지만, 실제로 비가단성은 미묘한 공격들을 제거할 수 있다.
정의 7
비가단성. 모든 확률적 다항식-시간 적대자 A에 대해 아래와 같다면, 그 방식은 비가단성이다,
Figure pct00059
비가단성에 관련된 약간 더 강력한 개념은 고유성(uniqueness)이다:
정의 8-고유성
소정의 방식은, 모든 증명 σ a 및 모든 공개 키 pk a pk b 에 대해,
Figure pct00060
이도록 하는 고유 증명 ab가 존재한다면 고유성을 충족한다.
결론 1
고유성을 충족하는 소정의 방식은 또한 비가단성(non-malleable)이다.
BLS 서명들에 기초한 방식
이 섹션에서, BLS 서명들로 방식이 구현되고 정의된다. 이것은, BLS-SPoCK 방식, 또는 BLS 서명들을 여기서 논의된 기밀 지식의 특화된 증명(Proof of Confidential Knowledge) 방식과 통합하는 것이라고 지칭될 수 있다.
정의 9
BLS-SPoCK는 4개의 알고리즘을 포함한다: BS P-Setup, BSP-KeyGen, BSP-Prove 및 BSP-Verify.
·
Figure pct00061
: 다음을 포함하는 공개 파라미터를 출력한다:
― 각각, 생성기 g1 및 g2를 갖는 차수 p의 쌍선형 그룹 쌍(G1, G2).
― 차수 p의 타겟 그룹 GT.
― 비축퇴 페어링 e : G1 × G2 → GT.
랜덤 오라클로서 모델링된 해시 함수
Figure pct00062
.
·
Figure pct00063
:
Figure pct00064
를 출력한다.
·
Figure pct00065
:
Figure pct00066
를 출력한다.
즉, σ는 개인 키 sk 하에서 메시지 m의 BLS 서명이다.
·
Figure pct00067
:
Figure pct00068
이면 OK를 출력하고
그 외의 경우, FAIL을 출력한다.
따라서, 여기서 논의된 페어링 피처를 이용하는 것을 포함한, 페어링 동등성 체크를 이용하여 검증이 이루어질 수 있다.
보조정리 2
BLS-SPoCK 방식은 올바른 방식이다.
증명. 임의의 메시지 m 및 키 쌍들
Figure pct00069
에 대해, e의 정의에 의해, 다음이 제공된다:
Figure pct00070
Figure pct00071
.
이것은,
Figure pct00072
이 정의 2를 충족함을 의미한다.
보조정리 3
BLS-SPoCK 방식은 강한 천이성을 충족한다.
증명. 정수 n이 3보다 크다고 하고, 한 세트의 n개의 유효한 키 쌍들이
Figure pct00073
Figure pct00074
이라고 하고, 한 세트의 n개의 증명들이
Figure pct00075
이라 하되, 다음과 같이 되도록 한다고 하자 :
Figure pct00076
페어링 e의 쌍선형성에 의해,
Figure pct00077
는 프라임 차수의 순환 그룹이므로,
Figure pct00078
이 추론되어 모든
Figure pct00079
에 대해
Figure pct00080
이다. 그 다음,
Figure pct00081
Figure pct00082
은,
Figure pct00083
를 충족하는 일부 메시지 m이 존재하는 G 1 내의 요소이다. 메시지 m은 강력한 천이성을 확립하는 모든
Figure pct00084
에 대해
Figure pct00085
를 분명히 충족한다.
결론 2
BLS-SPoCK 방식은 고유성(Def. 8)을 충족한다.
증명.
Figure pct00086
이고
Figure pct00087
이라 하자.
Figure pct00088
Figure pct00089
와 대조하여 검증되는 G 1의 한 요소는
Figure pct00090
로 쓸 수 있다는 점에 유의한다. 따라서, σ는 pk a pk b 와 대조하여 검증되는 G 1의 고유한 요소이다.
결론 3
BLS-SPoCK 방식은 비가단성이다.
보안 증명
이 섹션에서, 정의 6에서와 같이 BLS-SPoCK 방식이 위조에 대해 안전한 것을 보여준다. BLS-SPoCK는, 이산 로그에 대한 인지의 Schnorr 0-인지 증명을 이용하여 KOSK 모델에서 인스턴스화된다.
이론 1
BLS-SPoCK 방식은 KOSK 모델에서 (G 1 , G 2 )에서의 co-CDH 가정하에 인지 위조에 대해 안전하다.
증명. 인지 위조를 깨는 적대자 A know 는 co-DCDH(및 그에 따라 co-CDH; Lem 1)를 깨뜨리는 블랙박스로서 이용될 수 있다는 것을 보여준다. 이를 위해, 인지 위조 게임의 경우 도전자와 co-DCDH 게임에 대한 적대자로서 역할을 하는 알고리즘 C know 가 구성된다.
시작하기 위해, C know 가 co-DCDH 챌린지
Figure pct00091
를 요청한다. A의 질의들 각각에서, C know
Figure pct00092
를 샘플링하고 ;
Figure pct00093
Figure pct00094
Figure pct00095
를 설정하고;
Figure pct00096
A에게 전송한다. 마지막으로, A know
Figure pct00097
로 응답하고, C know
Figure pct00098
이거나
Figure pct00099
면 중단한다.
C는 중단하지 않으며, 이것은 A know 가 인지 위조를 깨뜨린다는
Figure pct00100
가정에 의해 무시할 수 없는 확률로 발생한다고 가정한다. 그 다음, C know 는, 먼저
Figure pct00101
을 계산한 다음 co-DCDH 게임에 대해
Figure pct00102
을 답변함으로써 co-DCDH 게임에서 승리한다.
이것이 작동하는 이유를 알기 위해, BSP-Verify가 일부 i에 대해 OK를 반환했기 때문에, 즉,
Figure pct00103
이 제공되고,
Figure pct00104
을 의미하므로,
Figure pct00105
, 올바른 co-DCDH 답변을 의미한다는 점에 유의한다. 또한, pk i , π i , 및 σ i 가 실제의 인지 위조 게임에서와 같이 분포되어 있다:
Figure pct00106
는,
Figure pct00107
에 대응하는 균일하게 랜덤인 비밀 키이고, πi는, KOSK-Simulate의 정의에 의해 KOSK 증명과는 구분불가능하다.
따라서, 단순히 A know 가 이기면 C know 가 co-DCDH 게임에서 이기고, KOSK-Simulate는 설득력 있는
Figure pct00108
를 출력하고 KOSK-Extract는 ska를 출력한다. KOSK-Simulate 및 KOSK-Extract는 정의에 의해 압도적인 확률로 성공하므로, C know 는 무시할 수 없는 확률로 co-DCDH 게임에서 승리한다. 보조정리 1에 의해, 이것은 co-CDH가 어렵기 때문에 A know 는 무시할 수 없는 확률로 인지 위조에서 승리할 수 없다는 가정과 모순된다.
이론 2
일부 예에서, BLS-SPoCK 방식은 (G1, G2)의 co-CDH 가정하에서 랜덤 오라클 모델의 키 위조에 대해 안전하다.
증명. 키 위조 게임에서 승리하기 위해, A는, 어떤 정직하게 생성된 키 쌍(pk, sk)에 대해
Figure pct00109
Figure pct00110
Figure pct00111
에 대해 검증되도록, 메시지
Figure pct00112
에 대한 BLS-SPoCK 증명
Figure pct00113
를 위조해야 한다. BLS-SPoCK 증명들의 고유성에 의해, 키 쌍
Figure pct00114
에 관한 BLS 서명 메시지
Figure pct00115
인,
Figure pct00116
Figure pct00117
인 경우여야만 한다. 즉, 키 위조에서 승리하기 위해서는,
Figure pct00118
에 관한 BLS 서명의 위조가 요구된다. Bonehet 등은, 랜덤 오라클 모델에서 및 정리를 증명하는
Figure pct00119
에 대한 co-CDH 가정하에서, 선택된 메시지(즉, EUF-CMA 보안)에 대한 실존적 위조에 맞서는 BLS 서명들의 보안을 증명한다.
결론 4
일부 예에서, BLS-SPoCK 방식은 KOSK에서 위조불가능하고 (G1, G2)에서 co-CDH 가정하의 랜덤 오라클 모델일 수 있다.
도 4 내지 도 7은 시스템 및/또는 증명 방식의 전술된 다양한 속성을 설명하는 예시적인 흐름도를 도시한다. 플로차트들은, 사용자들 Alice, Bob 및 Eve와 검증자 Oscar를 나타낸다. 사용자들은, 그들 각자의 개인 키(sk_a, sk_b, sk_e)와 공유된 메시지(m)(이들은 여기에 액세스할 수 있음)로 증명(p_a, p_b, p_e)을 생성한다. 검증자는 Verify 함수를 이용하여 제공된 증명들을 검증한다. 일부 실시예에서, 사용자 및 검증자 각자는, 위에서 상세히 설명된 바와 같이, 각자의 Proof 또는 Verify 함수들을 실행하기 위해, 도 1 및 도 2에 도시된 컴퓨팅 디바이스들(102, 104, 106, 108) 및 도 10에 도시된 컴퓨팅 디바이스(1010) 등의 컴퓨팅 디바이스를 채용한다. 예를 들어, 사용자들 및 검증자들은, 위에서 설명된 예시적인 탈중앙화 계산 시스템 등의 시스템에서 노드들로서 동작할 수 있다.
일부 예에서, Verify 함수는 (예를 들어, 도 5에 나타낸) 천이성에 대응할 수 있다. 천이성 정의는, 복수의 증명이 동일한 기준 증명 σi에 대해 검증하는 경우, 이들 증명들은 서로를 검증해야 할 뿐만 아니라(천이성) 이들 모든 증명(기준 증명 포함)이 생성될 수 있는 메시지 m이 존재한다고 명시한다. 인증 및 검증에서 Verify 함수와 그 이용에 관한 추가 정보는 도 4 내지 도 7에 예시되어 있다(예를 들어, "Verify( )"로서 등).
도 4는 이 방식의 올바름 속성(correctness property)을 보여주는 플로차트를 도시한다. 도시된 바와 같이, 증명자 사용자들인 Alice와 Bob은 그들의 상응하는 개인 키(sk_a, sk_b), 비밀 데이터(m) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다(알고 있다). Proof 함수를 이용하여, 증명자 사용자들 각자는, 그들 각자의 개인 키(sk_a, sk_b) 및 비밀 데이터(m)를 이용하여 비밀 데이터(m)의 인지의 특화된 증명(p_a, p_b)을 생성한다. 검증자 Oscar는 이들 생성된 특화된 증명들(p_a, p_b) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다. Oscar는 특히 비밀 데이터(m)에 액세스할 수 없다. Oscar는, 제공된 특화된 증명들(p_a, p_b) 및 증명자 사용자들 각자에 대한 상응하는 공개 키들(pk_a, pk_b)과 함께 Verify 함수를 이용하여, 비밀 데이터(m)의 내용에 대한 인지를 취득하지 않고도, 증명자 사용자들이 동일한 비밀 데이터(m)를 공유하는지를 결정할 수 있다. 제공된 특화된 증명들(p_a, p_b)이 Verify 함수를 통해 검증되지 않은 경우(예를 들어, 증명들이 동일한 비밀 데이터를 이용하여 생성되지 않았거나 공개 키들(pk_a, pk_b)이 특화된 증명들을 생성하기 위해 채용된 그들 각자의 개인 키(p_a, p_b)와 매칭하지 않아서), 제공된 특화된 증명들(p_a, p_b)은 Oscar에게 어떤 것도 확신시키지 못했다.
도 5는 이 방식의 강한 천이 속성을 보여주는 플로차트를 도시한다. 도시된 바와 같이, 증명자 사용자들인 Alice와 Bob_i (Bob_1 - Bob_n)는 그들의 상응하는 개인 키(sk_a, sk_b1 - sk_bn), 비밀 데이터(m) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다(알고 있다). Proof 함수를 이용하여, 증명자 사용자들 각자는, 그들 각자의 개인 키(sk_a, sk_b1 - sk_bn) 및 비밀 데이터(m)를 이용하여 비밀 데이터(m)의 특화된 증명(p_a, p_b1 - p_bn)을 생성한다. 검증자 Oscar는 이들 생성된 특화된 증명들(p_a, p_b1 - p_bn) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다. Oscar는 특히 비밀 데이터(m)에 액세스할 수 없다. Oscar는, 제공된 특화된 증명들(p_a, p_b1 - p_bn) 및 증명자 사용자들 각자에 대한 상응하는 공개 키들(pk_a, pk_b1 - pk_bn)과 함께 Verify 함수를 이용하여, 비밀 데이터(m)의 내용에 대한 인지를 취득하지 않고도, 증명자 사용자들(Bob_1 - Bob_n) 각자가 증명자 사용자 Alice와 동일한 비밀 데이터(m)를 공유하는지를 결정할 수 있다. 제공된 특화된 증명들(p_a, p_bi)이 Verify 함수를 통해 검증되지 않은 경우, 제공된 특화된 증명들(p_a, p_bi)은 Oscar에게 Alice와 특정한 Bob_i에 관한 어떤 것도 확신시키지 못했다.
도 6은 이 방식의 인지 위조불가 속성을 보여주는 플로차트를 도시한다. 도시된 바와 같이, 증명자 사용자들인 Alice와 Eve는 그들의 상응하는 개인 키(sk_a, sk_e) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다(알고 있다). 그러나, Alice만 비밀 데이터(m)에 액세스할 수 있다; Eve는 비밀 데이터(m)에 액세스할 수 없다. Proof 함수를 이용하여, Alice는 그녀의 개인 키(sk_a) 비밀 데이터(m)로 특화된 증명 p_a를 생성한다. Eve는 비밀 데이터(m)에 액세스하지 못하기 때문에, 그녀의 개인 키(p_e)로 Malicious Proof 함수를 통해 증명 p_e를 생성한다(예를 들어, Eve는 자신이 비밀 데이터(m)에 액세스할 수 있다고 Oscar가 믿도록 속이려고 시도하고 있다). 검증자 Oscar는 이들 생성된 특화된 증명들(p_a, p_e) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다. Oscar는 특히 비밀 데이터(m)에 액세스할 수 없다. Oscar는, 제공된 특화된 증명들(p_a, p_e) 및 증명자 사용자들 각자에 대한 상응하는 공개 키들(pk_a, pk_e)과 함께 Verify 함수를 이용하여, 비밀 데이터(m)의 내용에 대한 인지를 취득하지 않고도, 증명자 사용자들이 동일한 비밀 데이터(m)를 공유하는지를 결정할 수 있다. 도시된 이용 사례에서, 제공된 특화된 증명들(p_a, p_e)은 Alice와 Eve가 동일한 비밀 데이터(m)에 액세스할 수 있다는 것을 Oscar에게 확신시키지 못한다.
도 7은 이 방식의 키 위조불가 속성을 보여주는 플로차트를 도시한다. 도시된 바와 같이, 증명자 사용자들인 Alice와 Eve는 비밀 데이터(m) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다(알고 있다). 그러나, Alice는 자신의 개인 키(sk_a)에 액세스할 수 있다; 반면, Eve는 Bob의 개인 키(pk_b)에 액세스할 수 없다. Proof 함수를 이용하여, Alice는 그녀의 개인 키(sk_a) 비밀 데이터(m)로 특화된 증명 p_a를 생성한다. Eve는 Bob의 개인 키에 액세스하지 못하기 때문에, 비밀 데이터(m)로 Malicious Proof 함수를 통해 증명 p_b'를 생성한다(예를 들어, Eve는 Bob이 비밀 데이터(m)에 액세스할 수 있다고 Oscar가 믿도록 속이려고 시도하고 있다). 검증자 Oscar는 이들 생성된 특화된 증명들(p_a, p_b′) 및 시스템 내의 다른 공개 키들에 액세스할 수 있다. Oscar는 특히 비밀 데이터(m)에 액세스할 수 없다. Oscar는, 제공된 특화된 증명들(p_a, p_b′) 및 Alice와 연관된 공개 키(pk_a) 및 Bob과 연관된 공개 키(pk_b)와 함께 Verify 함수를 이용하여, 비밀 데이터(m)의 내용에 대한 인지를 취득하지 않고도, Alice와 Bob 양쪽 모두가 동일한 비밀 데이터(m)에 액세스할 수 있는지를 결정할 수 있다. 도시된 이용 사례에서, 제공된 특화된 증명들(p_a, p_b')은 Alice와 Bob이 동일한 비밀 데이터(m)에 액세스할 수 있다는 것을 Oscar에게 확신시키지 못한다.
도 8은 예시적인 탈중앙화 계산 시스템에서 (예를 들어, 도 3에 설명된) 다양한 노드들에 의해 구현될 수 있는 예시적인 프로세스(800)의 플로차트를 도시한다. 이 프로세스는 시스템이 공유된 데이터를 노출하지 않고 증명들을 검증하기 위해 공유된 데이터를 이용하는 방법을 보여줄 수 있다. 이 프로세스는, 임의의 다른 적절한 시스템, 환경, 소프트웨어 및 하드웨어, 또는 시스템들, 환경들, 소프트웨어 및 하드웨어의 적절한 조합에 의해 수행될 수 있다. 일부 실시예에서, 프로세스들의 다양한 동작들은, 병렬로, 조합으로, 루프로, 또는 임의의 순서로 실행될 수 있다.
802에서, 제1 증명이 제1 노드로부터 수신된다; 제1 증명은, 제1 노드와 연관된 제1 개인 키 및 제1 노드와 제2 노드 사이에서 공유되는 데이터로부터 생성된다. 802에서, 프로세스(800)는 804로 진행한다.
804에서, 제2 노드로부터 제2 증명이 수신된다; 제2 증명은 공유된 데이터 및 제2 노드와 연관된 제2 개인 키로부터 생성된다. 804에서, 프로세스(800)는 806으로 진행한다.
806에서, 공유된 데이터를 노출하지 않고 제1 증명과 제2 증명이 양쪽 모두가 공유된 데이터로부터 생성된 것으로 검증된다. 증명은, 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 검증된다. 일부 실시예에서, 제1 증명은 제1 노드에만 귀속될 수 있다. 일부 실시예에서, 제2 증명은 제2 노드에만 귀속될 수 있다. 일부 실시예에서, 제1 증명 또는 제2 증명은 그 상응하는 공개 키만으로 검증될 수 없다. 일부 실시예에서, 제1 증명 및 제2 증명 각각은, 그 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 서명들은 BLS 서명 방식에 기초하여 한다. 일부 실시예에서, 제1 증명 및 제2 증명의 검증은, 2개의 서명, 제1 공개 키 및 제2 공개 키에 기초한 페어링 동등성 체크(pairing equality check)를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명을 검증하는 단계는 페어링 동등성 체크를 포함한다. 일부 실시예에서, 제1 증명 및 제2 증명은 비대화형 프로토콜에서 생성되고 검증된다. 806에서, 프로세스(800)는 808로 진행한다.
808에서, 양쪽 모두가 공유된 데이터로부터 생성되는 제1 증명 및 제2 증명의 검증에 기초하여 액션이 수행된다. 일부 실시예에서, 제1 증명 및 제2 증명은 각각 제1 노드 및 제2 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다. 일부 실시예에서, 제1 노드는 실행 노드의 계산의 올바름을 보장하기 위해 채용되는 검증 노드를 포함한다. 일부 실시예에서, 계산은 실행 트레이스를 포함한다. 일부 실시예에서, 제2 노드는 블록의 적어도 하나의 거래를 실행하기 위해 채용되는 실행 노드를 포함한다. 일부 실시예에서, 검증 노드는 계산이 검증되었다는 증명으로서 제1 증명을 공개한다. 일부 실시예에서, 액션은 상태 응답을 클라이언트에 제공하는 것을 포함하고, 상태 응답은 블록에 대한 출력에 기초하여 결정된다. 일부 실시예에서, 계산은 병렬 및 독립적인 방식의 더 가벼운 계산 검증을 허용하기 위해 청크들로 분할된다. 일부 실시예에서, 액션은, 청크들 각각이 실행 노드 및 검증 노드에 의해 동일한 중간 결과들로부터 일관되게 생성되도록 중재하는 것을 포함한다. 808로부터, 프로세스(800)는 종료한다.
도 9는 예시적인 탈중앙화 계산 시스템에서 (예를 들어, 도 3에 설명된) 다양한 노드들에 의해 구현될 수 있는 예시적인 프로세스(900)의 플로차트를 도시한다. 이 프로세스는 시스템이 공유된 데이터를 노출하지 않고 증명들을 검증하기 위해 공유된 데이터를 이용하는 방법을 보여줄 수 있다. 이 프로세스는, 임의의 다른 적절한 시스템, 환경, 소프트웨어 및 하드웨어, 또는 시스템들, 환경들, 소프트웨어 및 하드웨어의 적절한 조합에 의해 수행될 수 있다. 일부 실시예에서, 프로세스들의 다양한 동작들은, 병렬로, 조합으로, 루프로, 또는 임의의 순서로 실행될 수 있다.
902에서, 복수의 노드들 각각으로부터 증명이 수신되고, 각각의 증명은 노드들 사이에서 공유된 데이터 및 각각의 노드와 연관된 상응하는 개인 키로부터 생성되었다. 일부 실시예에서, 증명들 각각은 상응하는 노드에 의해 공개적으로 노출된다. 일부 실시예에서, 증명들 각각은 상응하는 생성 노드에만 귀속될 수 있다. 일부 실시예에서, 증명들 각각은 상응하는 공개 키로만 검증될 수 없다. 일부 실시예에서, 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스(execution trace)를 포함한다. 902에서, 프로세스(900)는 904로 진행한다.
904에서, 증명들 각각은, 공유된 데이터를 노출하지 않고, 공유된 데이터로부터 생성된 것으로 검증된다. 증명들은 개인 키들 중 상응하는 것과 수학적으로 관련된 복수의 공개 키를 이용하여 검증된다. 일부 실시예에서, 증명들 각각은 상응하는 개인 키를 이용하여 생성된 공유된 데이터의 서명을 포함한다. 일부 실시예에서, 증명들의 검증은 서명들 및 공개 키들에 기초한 페어링 동등성 체크를 포함한다. 일부 실시예에서, 서명들은 BLS 서명 방식에 기초하여 한다. 일부 실시예에서, 증명들을 검증하는 것은 페어링 동등성 체크를 포함한다. 일부 실시예에서, 증명들은 비대화형 프로토콜에서 생성되고 검증된다. 일부 실시예에서, 증명들의 검증의 횟수는 노드의 수에 선형이고 2차적이지 않다. 일부 실시예에서, 증명들을 검증하는 것은 노드의 수보다 하나 적은 검증을 요구한다. 904에서, 프로세스(900)는 906으로 진행한다.
906에서, 증명들이 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션이 수행된다. 일부 실시예에서, 액션은 제1 증명 및 제2 증명 양쪽 모두가 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함한다. 906으로부터, 프로세스(900)는 종료한다.
일부 실시예에서, 여기서 설명된 플랫폼들, 시스템들, 매체, 및 방법들은, 컴퓨팅 디바이스들, 프로세서들, 또는 이들의 이용을 포함한다. 추가 실시예에서, 컴퓨팅 디바이스는, 디바이스의 기능들을 실행하는 하나 이상의 하드웨어 중앙 처리 유닛(CPU) 또는 범용 그래픽 처리 유닛(GPU)을 포함한다. 역시 추가적인 실시예들에서, 컴퓨팅 디바이스는 실행가능한 명령어들을 수행하도록 구성된 운영 체제를 더 포함한다. 일부 실시예에서, 컴퓨팅 디바이스는 선택사항으로서 컴퓨터 네트워크에 접속된다. 추가적인 실시예들에서, 컴퓨팅 디바이스는 선택사항으로서 인터넷에 접속되어 월드 와이드 웹에 액세스한다. 역시 추가적인 실시예들에서, 컴퓨팅 디바이스는 선택사항으로서 클라우드 컴퓨팅 기반구조에 접속된다. 다른 실시예에서, 컴퓨팅 디바이스는 선택사항으로서 인트라넷에 접속된다. 다른 실시예에서, 컴퓨팅 디바이스는 선택사항으로서 데이터 저장 디바이스에 접속된다.
본 명세서의 설명에 따르면, 적합한 컴퓨팅 디바이스는, 비제한적인 예로서, 클라우드 컴퓨팅 자원들, 서버 컴퓨터들, 서버 클러스터들, 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 노트북 컴퓨터들, 서브노트북 컴퓨터들, 넷북 컴퓨터들, 넷패드 컴퓨터들, 핸드헬드 컴퓨터들, 모바일 스마트폰들, 및 태블릿 컴퓨터들을 포함한다. 본 기술분야의 통상의 기술자라면, 많은 스마트폰이 여기서 설명된 시스템에서 이용하기에 적합하다는 것을 인식할 것이다. 본 기술분야의 통상의 기술자라면 또한, 선택사항적인 컴퓨터 네트워크 접속을 갖는 선택된 텔레비전, 비디오 플레이어들, 및 디지털 음악 플레이어들이 여기서 설명된 시스템에서 이용하기에 적합하다는 것을 인식할 것이다. 적합한 태블릿 컴퓨터들은, 본 기술분야의 통상의 기술자에게 공지된 북릿(booklet), 슬레이트 및 컨버터블 구성을 갖는 것들을 포함한다.
일부 실시예에서, 컴퓨팅 디바이스는 실행가능한 명령어들을 수행하도록 구성된 운영 체제를 포함한다. 운영 체제는, 예를 들어, 디바이스의 하드웨어를 관리하고 애플리케이션 실행을 위한 서비스들을 제공하는 프로그램들 및 데이터를 포함하는 소프트웨어이다. 본 기술분야의 통상의 기술자라면, 적절한 서버 운영 체제는, 비제한적인 예로서, FreeBSD, OpenBSD, NetBSD®, Linux, Apple® Mac OS X Server®, Oracle® Solaris®, Windows Server®, 및 Novell® NetWare®를 포함한다는 것을 인식할 것이다. 본 기술분야의 통상의 기술자라면, 적절한 개인용 컴퓨터 운영 체제는, 비제한적인 예로서, Microsoft® Windows®, Apple® Mac OS X®, UNIX®, 및 GNU/Linux® 등의 UNIX류 운영 체제를 포함한다는 것을 인식할 것이다. 일부 실시예에서, 운영 체제는 클라우드 컴퓨팅에 의해 제공된다. 본 기술분야의 통상의 기술자라면 또한, 적절한 모바일 스마트폰 운영 체제는, 비제한적인 예로서, Nokia® Symbian® OS, Apple® iOS®, Research In Motion® BlackBerry OS®, Google® Android®, Microsoft® Windows Phone® OS, Microsoft® Windows Mobile® OS, Linux®, and Palm® WebOS®를 포함한다는 것을 인식할 것이다.
일부 실시예에서, 컴퓨팅 디바이스는 저장 디바이스 및/또는 메모리 디바이스를 포함한다. 저장 및/또는 메모리 디바이스는, 데이터 또는 프로그램을 임시로 또는 영구적으로 저장하는데 이용되는 하나 이상의 물리적 장치이다. 일부 실시예에서, 디바이스는 휘발성 메모리이고 저장된 정보를 유지하기 위해 전력을 요구한다. 일부 실시예에서, 디바이스는 비휘발성 메모리이고 컴퓨팅 디바이스에 전력이 공급되지 않을 때 저장된 정보를 유지한다. 추가 실시예들에서, 비휘발성 메모리는 플래시 메모리를 포함한다. 일부 실시예에서, 비휘발성 메모리는 동적 랜덤 액세스 메모리(DRAM)를 포함한다. 일부 실시예에서, 비휘발성 메모리는 강유전성 랜덤 액세스 메모리(FRAM)를 포함한다. 일부 실시예에서, 비휘발성 메모리는 상변화 랜덤 액세스 메모리(PRAM)를 포함한다. 다른 실시예들에서, 디바이스는, 비제한적인 예로서, CD-ROM들, DVD들, 플래시 메모리 디바이스들, 자기 디스크 드라이브들, 자기 테이프 드라이브들, 광 디스크 드라이브들, 및 클라우드 컴퓨팅 기반의 저장소를 포함하는 저장 디바이스이다. 추가 실시예에서, 저장 및/또는 메모리 디바이스는 여기서 개시된 것들 등의 디바이스들의 조합이다.
일부 실시예에서, 컴퓨팅 디바이스는 시각적 정보를 사용자에게 전송하는 디스플레이를 포함한다. 일부 실시예에서, 디스플레이는 음극선관(CRT)이다. 일부 실시예에서, 디스플레이는 액정 디스플레이(LCD)이다. 추가 실시예에서, 디스플레이는 박막 트랜지스터 액정 디스플레이(TFT-LCD)이다. 일부 실시예에서, 디스플레이는 유기 발광 다이오드(OLED) 디스플레이이다. 다양한 추가 실시예에서, OLED 디스플레이 상에 수동-매트릭스 OLED(PMOLED) 또는 능동-매트릭스 OLED(AMOLED) 디스플레이가 있다. 일부 실시예에서, 디스플레이는 플라즈마 디스플레이이다. 다른 실시예에서, 디스플레이는 비디오 프로젝터이다. 역시 또 다른 실시예에서, 디스플레이는 가상 현실(VR) 헤드셋 등의 컴퓨터와 통신하는 머리 장착형 디스플레이 이다. 추가 실시예에서, 적합한 VR 헤드셋은, 비제한적인 예로서, HTC Vive, Oculus Rift, Samsung Gear VR, Microsoft HoloLens, Razer Open-Source Virtual Reality (OSVR), FOVE VR, Zeiss VR One, Avegant Glyph, Freefly VR 헤드셋 등을 포함한다. 역시 또 다른 실시예에서, 디스플레이는 여기서 개시된 것들 등의 디바이스들의 조합이다.
일부 실시예에서, 컴퓨팅 디바이스는, 사용자로부터 정보를 수신하는 입력 디바이스를 포함한다. 일부 실시예에서, 입력 디바이스는 키보드이다. 일부 실시예에서, 입력 디바이스는, 비제한적인 예로서, 마우스, 트랙볼, 트랙 패드, 조이스틱, 게임 제어기, 또는 스타일러스를 포함하는 포인팅 디바이스이다. 일부 실시예에서, 입력 디바이스는 터치 스크린 또는 멀티터치 스크린이다. 다른 실시예들에서, 입력 디바이스는 음성 또는 기타의 사운드 입력을 캡처하는 마이크로폰이다. 다른 실시예들에서, 입력 디바이스는 모션 또는 시각적 입력을 캡처하는 비디오 카메라 또는 기타의 센서이다. 추가적인 실시예들에서, 입력 디바이스는 Kinect, Leap Motion 등이다. 역시 추가적인 실시예들에서, 입력 디바이스는 여기서 개시된 것들 등의 디바이스들의 조합이다.
본 개시내용의 플랫폼들, 시스템들, 매체, 및 방법을 구현하는데 이용될 수 있는 컴퓨터 제어 시스템이 여기서 제공된다. 도 10은 본 개시내용의 플랫폼, 시스템, 매체, 및 방법들을 구현하도록 프로그래밍되거나 기타의 방식으로 구성될 수 있는 예시적인 컴퓨팅 디바이스(1010)를 도시한다. 예를 들어, 컴퓨팅 디바이스(1010)는 도 1 및 도 2에 도시된 컴퓨팅 디바이스들(102, 104, 106, 108)에 관한 설명과 같이 프로그래밍되거나 구성될 수 있다.
도시된 실시예에서, 컴퓨팅 디바이스(1010)는, 선택사항으로서, 단일 코어, 다중 코어 프로세서, 또는 병렬 처리를 위한 복수의 프로세서인 CPU(여기서는 "프로세서" 및 "컴퓨터 프로세서")(1012)를 포함한다. 컴퓨팅 디바이스(1010)는 또한, 메모리 또는 메모리 위치(1017)(예를 들어, 랜덤 액세스 메모리, 판독 전용 메모리, 플래시 메모리), 전자 저장 유닛(1014)(예를 들어, 하드 디스크), 하나 이상의 다른 시스템과 통신하기 위한 통신 인터페이스(1015)(예를 들어, 네트워크 어댑터), 및 캐시, 기타의 메모리, 데이터 스토리지 또는 전자 디스플레이 어댑터 등의 주변 디바이스들(1016)을 포함한다.
일부 실시예에서, 메모리(1017), 저장 유닛(1014), 통신 인터페이스(1015), 및 주변 디바이스들(1016)은 마더보드 등의 통신 버스(실선)를 통해 CPU(1012)와 통신한다. 저장 유닛(1014)은 데이터를 저장하기 위한 데이터 저장 유닛(또는 데이터 저장소)을 포함한다. 컴퓨팅 디바이스(1010)는, 선택사항으로서, 통신 인터페이스(1015)의 도움으로 도 1 및 도 2에 도시된 네트워크(110) 등의 컴퓨터 네트워크에 동작적으로 결합된다. 일부 실시예에서, 컴퓨팅 디바이스(1010)는 설명된 플랫폼 내에 배치된 백엔드 서버로서 구성된다.
일부 실시예에서, CPU(1012)는, 프로그램 또는 소프트웨어로 구현될 수 있는 머신 판독가능 명령어들의 시퀀스를 실행할 수 있다. 명령어들은 메모리(1017) 등의 메모리 위치에 저장될 수 있다. 명령어들은 CPU(1012)로 향할 수 있고, CPU(1012)는, 후속적으로, 본 개시내용의 방법들을 구현하도록 CPU(1012)를 프로그래밍하거나 기타의 방식으로 구성할 수 있다. CPU(1012)에 의해 수행되는 동작들의 예는, 인출(fetch), 디코딩, 실행 및 라이트 백(write back)을 포함할 수 있다. 일부 실시예에서, CPU(1012)는 집적 회로 등의 회로의 일부이다. 컴퓨팅 디바이스(1010)의 하나 이상의 다른 컴포넌트는 선택사항으로서 회로에 포함될 수 있다. 일부 실시예에서, 회로는 주문형 집적 회로(ASIC) 또는 필드 프로그래머블 게이트 어레이(FPGA)이다.
일부 실시예에서, 저장 유닛(1014)은, 드라이버들, 라이브러리들 및 저장된 프로그램들 등의 파일들을 저장할 수 있다. 일부 실시예에서, 저장 유닛(1014)은, 검출 로직; 기업이 직면한 다양한 위협의 분석; 위협들, 거짓 양성(false positive)들, 및 성능 메트릭들 등을 완화하기 위해 수행되는 선별 등급에 관한 메타데이터 등의 데이터를 저장한다. 일부 실시예에서, 컴퓨팅 디바이스(1010)는, 인트라넷 또는 인터넷을 통해 통신하는 원격 서버에 위치하는 등의 외부에 있는 하나 이상의 추가 데이터 저장 유닛을 포함한다.
일부 실시예에서, 컴퓨팅 디바이스(1010)는 네트워크를 통해 하나 이상의 원격 컴퓨터 시스템과 통신한다. 예를 들어, 컴퓨팅 디바이스(1010)는 원격 컴퓨터 시스템과 통신할 수 있다. 원격 컴퓨터 시스템의 예들은, 개인용 컴퓨터들(예를 들어, 휴대형 PC), 슬레이트 또는 태블릿 PC(예를 들어, Apple® iPad, Samsung® Galaxy Tab 등), 스마트폰(예를 들어, Apple® iPhone, Android-가능형 디바이스, Blackberry® 등), 또는 도 1 및 도 2에 묘사된 것 등의 개인용 휴대 정보 단말기를 포함한다. 일부 실시예에서, 사용자는, 도 1 및 도 2에 도시된 것 등의, 네트워크를 통해 컴퓨팅 디바이스(1010)에 액세스할 수 있다.
일부 실시예에서, 여기서 설명된 플랫폼들, 시스템들, 매체, 및 방법들은, 예를 들어, 메모리(1017) 또는 전자적 저장 유닛(1014) 등의, 컴퓨팅 디바이스(1010)의 전자적 저장 위치에 저장된 머신(예를 들어, 컴퓨터 프로세서) 실행가능한 코드를 통해 구현된다. 일부 실시예에서, CPU(1012)는 코드를 실행하도록 구성된다. 일부 실시예에서, 머신 실행가능한 또는 머신 판독가능한 코드는 소프트웨어의 형태로 제공된다. 일부 실시예에서, 이용 동안에, 코드는 CPU(1012)에 의해 실행된다. 일부 실시예에서, 코드는 저장 유닛(1014)으로부터 회수되고 CPU(1012)에 의한 준비된 액세스를 위해 메모리(1017)에 저장된다. 일부 상황에서, 전자 저장 유닛(1014)은 배제되고, 머신 실행가능 명령어들은 메모리(1017)에 저장된다. 일부 실시예에서, 코드는 미리 컴파일된다. 일부 실시예에서, 코드는 런타임 동안 컴파일된다. 코드는, 미리 컴파일된 방식으로 또는 컴파일되는 대로 코드가 실행될 수 있게 하는 선택될 수 있는 프로그래밍 언어로 공급될 수 있다.
일부 실시예에서, 컴퓨팅 디바이스(1010)는 전자 디스플레이(1035)를 포함하거나 전자 디스플레이(1035)와 통신할 수 있다. 일부 실시예에서, 전자 디스플레이(1035)는 사용자 인터페이스(UI)(1040)를 제공한다.
일부 실시예에서, 본 명세서에 개시된 플랫폼, 시스템, 매체, 및 방법은, 선택사항으로서 네트워킹된 컴퓨팅 디바이스의 운영 체제에 의해 실행가능한 명령어들을 포함하는 프로그램으로 인코딩된 하나 이상의 비일시적인 컴퓨터 판독가능한 저장 매체를 포함한다. 추가 실시예에서, 컴퓨터 판독가능한 저장 매체는 컴퓨팅 디바이스의 유형의 컴포넌트(tangible component)이다. 또 다른 실시예에서, 컴퓨터 판독가능한 저장 매체는 선택사항으로서 컴퓨팅 디바이스로부터 제거가능하다. 일부 실시예에서, 컴퓨터 판독가능한 저장 매체는, 비제한적인 예로서, CD-ROM들, DVD들, 플래시 메모리 디바이스들, 솔리드 스테이트 메모리, 자기 디스크 드라이브들, 자기 테이프 드라이브들, 광 디스크 드라이브들, 클라우드 컴퓨팅 시스템 및 서비스들을 포함한 분산형 컴퓨팅 시스템 등을 포함한다. 일부 경우에는, 프로그램 및 명령어들이 매체 상에 영구적으로, 실질적 영구적으로, 반영구적으로 또는 비일시적으로 인코딩된다.
일부 실시예에서, 여기서 개시된 플랫폼들, 시스템들, 매체, 및 방법들은 적어도 하나의 컴퓨터 프로그램, 또는 이들의 이용을 포함한다. 컴퓨터 프로그램은 하나 이상의 명시된 태스크를 수행하도록 작성된 컴퓨팅 디바이스의 CPU에서 실행가능한 일련의 명령어들을 포함한다. 컴퓨터 판독가능한 명령어들은, 특정한 태스크를 수행하거나 특정한 추상 데이터 유형을 구현하는, 기능들, 객체들, 애플리케이션 프로그래밍 인터페이스(API), 데이터 구조들 등의 프로그램 모듈들로서 구현될 수 있다. 본 명세서에 제공된 개시내용에 비추어, 본 기술분야의 통상의 기술자라면, 컴퓨터 프로그램이 다양한 언어의 다양한 버전으로 작성될 수 있다는 것을 인식할 것이다.
컴퓨터 판독가능한 명령어들의 기능은 다양한 환경에서 원하는 대로 결합되거나 분산될 수 있다. 일부 실시예에서, 컴퓨터 프로그램은 명령어들의 하나의 시퀀스를 포함한다. 일부 실시예에서, 컴퓨터 프로그램은 명령어들의 복수의 시퀀스를 포함한다. 일부 실시예에서, 컴퓨터 프로그램은 하나의 위치로부터 제공된다. 다른 실시예들에서, 컴퓨터 프로그램은 복수의 위치로부터 제공된다. 다양한 실시예에서, 컴퓨터 프로그램은 하나 이상의 소프트웨어 모듈을 포함한다. 다양한 실시예에서, 컴퓨터 프로그램은, 부분적으로 또는 전체적으로, 하나 이상의 웹 애플리케이션, 하나 이상의 모바일 애플리케이션, 하나 이상의 독립형 애플리케이션, 하나 이상의 웹 브라우저 플러그인, 확장, 애드인 또는 애드온, 또는 이들의 조합을 포함한다.
일부 실시예에서, 컴퓨터 프로그램은 웹 애플리케이션을 포함한다. 본 명세서에 제공된 개시내용에 비추어, 본 기술분야의 통상의 기술자라면, 웹 애플리케이션은 다양한 실시예에서 하나 이상의 소프트웨어 프레임워크 및 하나 이상의 데이터베이스 시스템을 이용한다는 것을 인식할 것이다. 일부 실시예에서, 웹 애플리케이션은 Microsoft® .NET 또는 Ruby on Rails (RoR) 등의 소프트웨어 프레임워크 상에서 생성된다. 일부 실시예에서, 웹 애플리케이션은, 비제한적인 예로서, 관계형, 비관계형, 객체 지향형, 연관형, 및 XML 데이터베이스 시스템들을 포함하는 하나 이상의 데이터베이스 시스템을 이용한다. 추가적인 실시예들에서, 적절한 관계형 데이터베이스 시스템들은, 비제한적인 예로서, Microsoft® SQL Server, mySQL™, 및 Oracle®을 포함한다. 본 기술분야의 통상의 기술자라면, 또한, 다양한 실시예에서 웹 애플리케이션은 하나 이상의 언어의 하나 이상의 버전으로 작성된다는 것을 인식할 것이다. 웹 애플리케이션은, 하나 이상의 마크업 언어, 프리젠테이션 정의 언어, 클라이언트 측 스크립팅 언어, 서버측 코딩 언어, 데이터베이스 질의 언어, 또는 이들의 조합으로 작성될 수 있다. 일부 실시예에서, 웹 애플리케이션은 어느 정도는 HTML(Hypertext Markup Language), XHTML(Extensible Hypertext Markup Language) 또는 XML(eXtensible Markup Language) 등의 마크업 언어로 작성된다. 일부 실시예에서, 웹 애플리케이션은 어느 정도는 CSS(Cascading Style Sheets) 등의 프리젠테이션 정의 언어로 작성된다. 일부 실시예에서, 웹 애플리케이션은, 어느 정도는, AJAX(Asynchronous JavaScript and XML), Flash® ActionScript, JavaScript, 또는 Silverlight® 등의 클라이언트 측 스크립팅 언어로 작성된다. 일부 실시예에서, 웹 애플리케이션은, 어느 정도는, ASP(Active Server Pages), ColdFusion®, Perl, Java™, JSP(JavaServer Pages ), PHP(Hypertext Preprocessor), Python™, Ruby, Tcl, Smalltalk, WebDNA®, 또는 Groovy 등의, 서버측 코딩 언어로 작성된다. 일부 실시예에서, 웹 애플리케이션은, 어느 정도는, SQL(Structured Query Language) 등의 데이터베이스 질의 언어로 작성된다. 일부 실시예에서, 웹 애플리케이션은 IBM® Lotus Domino® 등의 엔터프라이즈 서버 제품들을 통합한다. 일부 실시예에서, 웹 애플리케이션은 미디어 플레이어 요소를 포함한다. 다양한 추가 실시예에서, 미디어 플레이어 요소는, 비제한적인 예로서, Adobe® Flash®, HTML 5, Apple® QuickTime®, Microsoft® Silverlight®, Java™, 및 Unity®를 포함한 많은 적절한 멀티미디어 기술들 중 하나 이상을 이용한다.
일부 실시예에서, 컴퓨터 프로그램은 모바일 컴퓨팅 디바이스에 제공되는 모바일 애플리케이션을 포함한다. 일부 실시예에서, 모바일 애플리케이션은 제조시 모바일 컴퓨팅 디바이스에 제공된다. 다른 실시예들에서, 모바일 애플리케이션은 여기서 설명된 컴퓨터 네트워크를 통해 모바일 컴퓨팅 디바이스에 제공된다.
본 명세서에 제공된 개시내용에 비추어, 모바일 애플리케이션은, 하드웨어, 언어들, 및 본 기술분야에 알려진 개발 환경들을 이용하여 본 기술분야의 통상의 기술자에게 알려진 기술들에 의해 생성된다. 본 기술분야의 통상의 기술자라면, 모바일 애플리케이션이 수개의 언어로 작성된다는 것을 인식할 것이다. 적합한 프로그래밍 언어는 비제한적인 예로서 C, C++, C#, Objective-C, Java™, JavaScript, Pascal, Object Pascal, Python™, Ruby, VB.NET, WML, 및 CSS가 있거나 없는 XHTML/HTML, 또는 이들의 조합을 포함한다.
적합한 모바일 애플리케이션 개발 환경은 수개의 소스로부터 이용할 수 있다. 상업적으로 이용가능한 개발 환경들은, 비제한적인 예로서, AirplaySDK, alcheMo, Appcelerator®, Celsius, Bedrock, Flash Lite, .NET Compact Framework, Rhomobile, 및 WorkLight Mobile Platform을 포함한다. 비제한적 예들로서, Lazarus, MobiFlex, MoSync 및 Phonegap을 포함한 다른 개발 환경들이 비용 없이 이용가능하다. 또한, 모바일 디바이스 제조업체들은, 비제한적인 예로서, iPhone and iPad (iOS) SDK, Android™ SDK, BlackBerry® SDK, BREW SDK, Palm® OS SDK, Symbian SDK, webOS SDK, 및 Windows® Mobile SDK를 포함한, 소프트웨어 개발자 키트들을 배포한다.
본 기술분야의 통상의 기술자라면, 비제한적인 예로서, Apple® App Store, Google® Play, Chrome WebStore, BlackBerry® App World, App Store for Palm devices, App Catalog for webOS, Windows® Marketplace for Mobile, Ovi Store for Nokia® devices, Samsung® Apps, 및 Nintendo® DSi Shop를 포함한 모바일 애플리케이션들의 배포를 위한 수개의 상업적 포럼들이 이용가능하다는 것을 인식할 것이다.
일부 실시예에서, 여기서 개시된 플랫폼들, 시스템들, 매체, 및 방법들은, 소프트웨어, 서버, 및/또는 데이터베이스 모듈, 또는 이들의 이용을 포함한다. 본 명세서에 제공된 개시내용에 비추어, 소프트웨어 모듈들은, 본 기술분야에 공지된 머신들, 소프트웨어, 및 언어들을 이용하여 본 기술분야의 통상의 기술자에게 공지된 기술들에 의해 생성된다. 여기서 개시된 소프트웨어 모듈들은 다양한 방식으로 구현된다. 다양한 실시예에서, 소프트웨어 모듈은, 파일, 코드 섹션, 프로그래밍 객체, 프로그래밍 구조, 또는 이들의 조합을 포함한다. 추가적인 다양한 실시예에서, 소프트웨어 모듈은, 복수의 파일, 복수의 코드 섹션, 복수의 프로그래밍 객체, 복수의 프로그래밍 구조, 또는 이들의 조합을 포함한다. 다양한 실시예에서, 하나 이상의 소프트웨어 모듈은, 비제한적인 예로서, 웹 애플리케이션, 모바일 애플리케이션, 및 독립형 애플리케이션을 포함한다. 일부 실시예에서, 소프트웨어 모듈들은 하나의 컴퓨터 프로그램 또는 애플리케이션에 있다. 다른 실시예들에서, 소프트웨어 모듈들은 하나보다 많은 컴퓨터 프로그램 또는 애플리케이션에 있다. 일부 실시예에서, 소프트웨어 모듈들은 하나의 머신에서 호스팅된다. 다른 실시예들에서, 소프트웨어 모듈들은 하나보다 많은 머신에서 호스팅된다. 추가적인 실시예들에서, 소프트웨어 모듈들은 클라우드 컴퓨팅 플랫폼들에서 호스팅된다. 일부 실시예에서, 소프트웨어 모듈들은 한 위치의 하나 이상의 머신에서 호스팅된다. 다른 실시예들에서, 소프트웨어 모듈들은 하나보다 많은 위치에 있는 하나 이상의 머신에서 호스팅된다.
일부 실시예에서, 여기서 개시된 플랫폼들, 시스템들, 매체, 및 방법들은 하나 이상의 데이터베이스, 또는 이들의 이용을 포함한다. 여기서 제공된 개시내용에 비추어, 본 기술분야의 통상의 기술자라면, 많은 데이터베이스가 데이터 레코드들의 저장 및 회수에 적합하다는 것을 인식할 것이다. 다양한 실시예에서, 적절한 데이터베이스들은, 비제한적인 예로서, 관계형 데이터베이스들, 비관계형 데이터베이스들, 객체 지향형 데이터베이스들, 객체 데이터베이스들, 엔티티-관계 모델 데이터베이스들, 연관 데이터베이스들, 및 XML 데이터베이스들을 포함한다. 추가의 비제한적인 예들로는, SQL, PostgreSQL, MySQL, MongoDB, Oracle, DB2 및 Sybase가 포함된다. 일부 실시예에서, 데이터베이스는 웹 기반이다. 역시 추가적인 실시예들에서, 데이터베이스는 클라우드 컴퓨팅 기반이다. 다른 실시예들에서, 데이터베이스는 하나 이상의 로컬 컴퓨터 저장 디바이스에 기초한다.

Claims (30)

  1. 공유된 데이터를 노출하지 않고 공유된 데이터로부터 생성된 증명들을 검증하기 위한 컴퓨터-구현된 방법으로서,
    제1 노드로부터, 상기 제1 노드와 연관된 제1 개인 키 및 상기 제1 노드와 제2 노드 사이에서 공유된 데이터로부터 생성된 제1 증명을 수신하는 단계;
    상기 제2 노드로부터, 상기 공유된 데이터 및 상기 제2 노드와 연관된 제2 개인 키로부터 생성된 제2 증명을 수신하는 단계;
    상기 공유된 데이터를 노출하지 않고, 상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 상기 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 상기 공유된 데이터로부터 생성되었음을 검증하는 단계; 및
    상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 제1 증명 및 상기 제2 증명은 각각 상기 제1 노드 및 상기 제2 노드에 의해 공개적으로 노출되는, 방법.
  3. 제1항에 있어서, 상기 액션은 상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함하는, 방법.
  4. 제1항에 있어서, 상기 제1 증명은 상기 제1 노드에만 귀속될 수 있고, 상기 제2 증명은 상기 제2 노드에만 귀속될 수 있는, 방법.
  5. 제1항에 있어서, 상기 제1 증명 또는 상기 제2 증명은 상응하는 공개 키만으로는 검증될 수 없는, 방법.
  6. 제1항에 있어서, 상기 제1 증명 및 상기 제2 증명 각각은 상응하는 개인 키를 이용하여 생성된 상기 공유된 데이터의 서명을 포함하는, 방법.
  7. 제6항에 있어서, 상기 서명은 BLS(Boneh-Lynn-Shacham) 서명 방식에 기초하는, 방법.
  8. 제6항에 있어서, 상기 제1 증명 및 상기 제2 증명의 검증은, 2개의 상기 서명, 상기 제1 공개 키, 및 상기 제2 공개 키에 기초한 페어링 동등성 체크(pairing equality check)를 포함하는, 방법.
  9. 제1항에 있어서, 상기 제1 증명 및 상기 제2 증명을 검증하는 단계는 페어링 동등성 체크를 포함하는, 방법.
  10. 제1항에 있어서, 상기 제1 증명 및 상기 제2 증명은 비대화형 프로토콜에서 생성되고 검증되는, 방법.
  11. 제1항에 있어서, 상기 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스를 포함하는, 방법.
  12. 제11항에 있어서, 상기 제1 노드는 실행 노드의 계산의 올바름을 보장하기 위해 채용되는 검증 노드를 포함하고, 상기 계산은 상기 실행 트레이스를 포함하는, 방법.
  13. 제12항에 있어서, 상기 제2 노드는 상기 블록의 적어도 하나의 거래를 실행하기 위해 채용되는 상기 실행 노드를 포함하고, 상기 검증 노드는 상기 계산이 검증되었다는 증명으로서 상기 제1 증명을 공개하는, 방법.
  14. 제12항에 있어서, 상기 액션은 상태 응답을 클라이언트에 제공하는 것을 포함하고, 상기 상태 응답은 상기 블록에 대한 출력에 기초하여 결정되는, 방법.
  15. 제12항에 있어서, 상기 계산은 병렬적이고 독립적인 방식으로 계산 검증을 허용하기 위해 청크들로 분할되고, 상기 액션은 상기 실행 노드 및 상기 검증 노드에 의해 청크들 각각이 동일한 중간 결과들로부터 일관되게 생성되도록 중재하는 것을 포함하는, 방법.
  16. 공유된 데이터를 노출하지 않고 상기 공유된 데이터로부터 생성된 증명들을 검증하기 위한 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고 명령어들을 저장한 컴퓨터-판독가능한 저장 디바이스
    를 포함하고, 상기 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 동작들을 수행하게 하고, 상기 동작들은 :
    제1 노드로부터, 상기 제1 노드와 연관된 제1 개인 키 및 상기 제1 노드와 제2 노드 사이에서 공유된 데이터로부터 생성된 제1 증명을 수신하는 것;
    상기 제2 노드로부터, 상기 공유된 데이터 및 상기 제2 노드와 연관된 제2 개인 키로부터 생성된 제2 증명을 수신하는 것;
    상기 공유된 데이터를 노출하지 않고, 상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 제1 개인 키와 수학적으로 관련된 제1 공개 키 및 상기 제2 개인 키와 수학적으로 관련된 제2 공개 키를 이용하여 상기 공유된 데이터로부터 생성되었음을 검증하는 것; 및
    상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 것
    을 포함하는, 시스템.
  17. 제16항에 있어서, 상기 액션은 상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함하는, 시스템.
  18. 제16항에 있어서, 상기 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스를 포함하고, 상기 제1 노드는 실행 노드의 계산의 올바름을 보장하기 위해 채용되는 검증 노드를 포함하고, 상기 계산은 상기 실행 트레이스를 포함하고, 상기 제2 노드는 상기 블록의 적어도 하나의 거래를 실행하기 위해 채용되는 상기 실행 노드를 포함하는, 시스템.
  19. 제16항에 있어서, 상기 계산은 병렬적이고 독립적인 방식으로 더 가벼운 계산 검증을 허용하기 위해 청크들로 분할되고, 상기 액션은 상기 실행 노드 및 상기 검증 노드에 의해 청크들 각각이 동일한 중간 결과들로부터 일관되게 생성되도록 중재하는 것을 포함하는, 시스템.
  20. 하나 이상의 프로세서에 결합되고 상기 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령어들이 저장된 하나 이상의 비일시적인 컴퓨터 판독가능한 저장 매체로서, 상기 동작들은,
    복수의 노드들 각각으로부터, 상기 노드들 사이에서 공유된 데이터 및 각각의 노드와 연관된 상응하는 개인 키로부터 생성된 상응하는 증명을 수신하는 것;
    공유된 데이터를 노출하지 않고, 개인 키들 중 상응하는 것과 수학적으로 각각 관련된 복수의 공개 키를 이용하여 상기 공유된 데이터로부터 상기 증명들 각각이 생성되었음을 검증하는 것; 및
    상기 증명들이 상기 공유된 데이터로부터 생성되었음의 검증에 기초하여 액션을 수행하는 것
    을 포함하는, 매체.
  21. 제20항에 있어서, 상기 증명들 각각은 상응하는 노드들에 의해 공개적으로 노출되는, 매체.
  22. 제20항에 있어서, 상기 액션은 상기 제1 증명 및 상기 제2 증명 양쪽 모두가 상기 공유된 데이터로부터 생성되었음의 검증을 공개적으로 노출하는 것을 포함하는, 매체.
  23. 제20항에 있어서, 상기 증명들 각각은 상응하는 생성 노드에만 귀속될 수 있는, 매체.
  24. 제20항에 있어서, 상기 증명들 각각은 상응하는 공개 키만으로는 검증될 수 없는, 매체.
  25. 제20항에 있어서, 상기 증명들 각각은 상응하는 개인 키를 이용하여 생성된 상기 공유된 데이터의 서명을 포함하고, 상기 증명들의 검증은 상기 서명들 및 상기 공개 키들에 기초한 페어링 동등성 체크를 포함하는, 매체.
  26. 제20항에 있어서, 상기 증명들은 비대화형 프로토콜에서 생성되고 검증되는, 매체.
  27. 제20항에 있어서, 상기 공유된 데이터는 블록체인 내의 블록의 적어도 하나의 거래의 실행을 증명하는 실행 트레이스를 포함하는, 매체.
  28. 제20항에 있어서, 상기 증명들의 검증의 횟수는 노드의 수에 선형이고 2차적이지 않은, 매체.
  29. 제20항에 있어서, 상기 증명들을 검증하는 것은 상기 노드의 수보다 하나 적은 검증을 요구하는, 매체.
  30. 제20항에 있어서, 상기 증명들을 검증하는 것은 페어링 동등성 체크를 포함하는, 매체.
KR1020227020662A 2020-07-30 2021-07-30 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 KR102537774B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063058918P 2020-07-30 2020-07-30
US63/058,918 2020-07-30
PCT/IB2021/000518 WO2022023816A1 (en) 2020-07-30 2021-07-30 Systems and methods providing specialized proof of confidential knowledge

Publications (2)

Publication Number Publication Date
KR20220088956A true KR20220088956A (ko) 2022-06-28
KR102537774B1 KR102537774B1 (ko) 2023-05-30

Family

ID=80003571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227020662A KR102537774B1 (ko) 2020-07-30 2021-07-30 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들

Country Status (8)

Country Link
US (2) US11394550B2 (ko)
EP (1) EP4055773A4 (ko)
JP (1) JP7251035B2 (ko)
KR (1) KR102537774B1 (ko)
CN (1) CN115152177B (ko)
AU (1) AU2021316961B2 (ko)
CA (1) CA3158874C (ko)
WO (1) WO2022023816A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10887090B2 (en) * 2017-09-22 2021-01-05 Nec Corporation Scalable byzantine fault-tolerant protocol with partial tee support
AU2021316961B2 (en) 2020-07-30 2023-04-13 Dapper Labs Inc. Systems and methods providing specialized proof of confidential knowledge
US11336685B1 (en) * 2021-12-22 2022-05-17 Nasuni Corporation Cloud-native global file system with rapid ransomware recovery
CN114499885B (zh) * 2022-02-14 2024-03-19 中国农业银行股份有限公司 一种工作量证明的方法及系统
US20230269082A1 (en) * 2022-02-18 2023-08-24 RISC Zero, Inc. Zero knowledge prover
CN114661637B (zh) * 2022-02-28 2023-03-24 中国科学院上海天文台 针对射电天文数据密集型科学运算的数据处理系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190121847A1 (en) * 2017-10-21 2019-04-25 ScienceSheet Inc. Data analysis and prediction of a dataset through algorithm extrapolation from a spreadsheet formula
US20200184469A1 (en) * 2018-12-07 2020-06-11 0Chain, LLC Systems and methods of blockchain for transaction rewards on token locking
US20200186363A1 (en) * 2018-12-04 2020-06-11 Journey.ai Receiving information through a zero-knowledge data management network

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070071243A1 (en) * 2005-09-23 2007-03-29 Microsoft Corporation Key validation service
US7930597B2 (en) * 2008-09-18 2011-04-19 Alcatel-Lucent Usa Inc. Method and apparatus for validating system properties exhibited in execution traces
JP6261538B2 (ja) * 2015-03-24 2018-01-17 日本電信電話株式会社 楕円曲線暗号装置、楕円曲線暗号システム、楕円曲線暗号方法、およびプログラム
JP2017118447A (ja) * 2015-12-25 2017-06-29 学校法人東京理科大学 管理局装置、著作権保護装置、編集装置、検証装置、管理プログラム、著作権保護プログラム、編集プログラム、及び検証プログラム
US20210111880A1 (en) * 2016-02-18 2021-04-15 Agency For Science, Technology And Research Access control methods, access control devices, and computer readable media
US10587609B2 (en) * 2016-03-04 2020-03-10 ShoCard, Inc. Method and system for authenticated login using static or dynamic codes
JP6684930B2 (ja) * 2016-09-18 2020-04-22 深▲セン▼前▲海▼▲達▼▲闥▼▲雲▼端智能科技有限公司Cloudminds (Shenzhen) Robotics Systems Co., Ltd. ブロックチェーンに基づくアイデンティティ認証方法、装置、ノード及びシステム
GB201709760D0 (en) * 2017-06-19 2017-08-02 Nchain Holdings Ltd Computer-Implemented system and method
EP3662636B1 (en) * 2017-08-05 2022-07-20 Proclus Technologies Limited Method and system for securing blockchain with proof-of-transactions
US10594488B2 (en) * 2017-08-05 2020-03-17 Proclus Technologies Limited Method and system for implementing automatic transaction rebroadcasting for transient blockchains
SG11202000804PA (en) * 2017-08-15 2020-02-27 Nchain Holdings Ltd Threshold digital signature method and system
US11042934B2 (en) * 2017-11-13 2021-06-22 Bank Of America Corporation Crypto-machine learning enabled blockchain based profile pricer
US10997125B2 (en) * 2017-11-29 2021-05-04 Technion Research & Development Foundation Limited Proof of lottery (PoL) blockchain
US20190164150A1 (en) * 2017-11-29 2019-05-30 Bank Of America Corporation Using Blockchain Ledger for Selectively Allocating Transactions to User Accounts
US11159537B2 (en) * 2017-11-30 2021-10-26 Bank Of America Corporation Multicomputer processing for data authentication and event execution using a blockchain approach
US10567156B2 (en) * 2017-11-30 2020-02-18 Bank Of America Corporation Blockchain-based unexpected data detection
US10949511B2 (en) * 2017-11-30 2021-03-16 Bank Of America Corporation Multicomputer processing for data authentication using a blockchain approach
US11196747B2 (en) * 2017-12-07 2021-12-07 Bank Of America Corporation Automated event processing computing platform for handling and enriching blockchain data
US20190180276A1 (en) * 2017-12-07 2019-06-13 Bank Of America Corporation Automated Event Processing Computing Platform for Handling and Enriching Blockchain Data
US11296863B2 (en) * 2018-01-04 2022-04-05 Bank Of America Corporation Blockchain enterprise data management
US20190207751A1 (en) * 2018-01-04 2019-07-04 Bank Of America Corporation Blockchain enterprise data management
US10659217B2 (en) * 2018-01-05 2020-05-19 Bank Of America Corporation Blockchain-based automated user matching
EP3740919A4 (en) * 2018-01-17 2021-11-10 tZERO IP, LLC MULTI-APPROVAL SYSTEM USING M OF N KEYS TO RESTORE A CUSTOMER PORTFOLIO
US11188897B2 (en) * 2018-02-13 2021-11-30 Bank Of America Corporation Multi-tiered digital wallet security
US10693646B2 (en) * 2018-02-27 2020-06-23 Bank Of America Corporation Event execution using a blockchain approach
US11153069B2 (en) * 2018-02-27 2021-10-19 Bank Of America Corporation Data authentication using a blockchain approach
US20190303939A1 (en) * 2018-03-27 2019-10-03 Bank Of America Corporation Cryptocurrency Storage Distribution
US10498808B2 (en) * 2018-03-28 2019-12-03 Bank Of America Corporation Blockchain-based property management
US11295402B2 (en) * 2018-03-28 2022-04-05 Bank Of America Corporation Blockchain-based property repair
US20190333030A1 (en) * 2018-04-30 2019-10-31 Bank Of America Corporation Blockchain-based digital token utilization
US11012242B1 (en) * 2018-09-28 2021-05-18 Wells Fargo Bank, N.A. Systems and methods for trusted chain code system
US11308184B2 (en) * 2018-12-07 2022-04-19 Nike, Inc. Video game integration of cryptographically secured digital assets
US11271963B2 (en) * 2018-12-20 2022-03-08 Micro Focus Llc Defending against domain name system based attacks
US10735205B1 (en) * 2019-03-08 2020-08-04 Ares Technologies, Inc. Methods and systems for implementing an anonymized attestation chain
CN110198213B (zh) * 2019-04-01 2020-07-03 上海能链众合科技有限公司 一种基于秘密共享随机数共识算法的系统
US20200320527A1 (en) * 2019-04-03 2020-10-08 Coolbitx Ltd. Method for digital currency transaction with authorization of multiple private keys
US11507569B2 (en) * 2019-05-20 2022-11-22 Chia Network Inc. Methods for extending a proof-of-space-time blockchain
US11157899B1 (en) * 2019-05-28 2021-10-26 Hiro Systems Pbc System and method for bootstrapping a separate proof of work chain
US11290280B1 (en) * 2019-05-28 2022-03-29 Hiro Systems Pbc Cryptocurrency mining using a single-leader election algorithm
US11223475B2 (en) * 2019-06-05 2022-01-11 International Business Machines Corporation Document validation
US11811933B2 (en) * 2019-11-27 2023-11-07 Visa International Service Association System and method for fair, secure n-party computation using at least one blockchain
US11113677B1 (en) * 2020-01-14 2021-09-07 Hiro Systems Pbc Data processing using proof-of-transfer
US11463258B2 (en) * 2020-03-13 2022-10-04 Ebay Inc. Secure token refresh
AU2021316961B2 (en) 2020-07-30 2023-04-13 Dapper Labs Inc. Systems and methods providing specialized proof of confidential knowledge

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190121847A1 (en) * 2017-10-21 2019-04-25 ScienceSheet Inc. Data analysis and prediction of a dataset through algorithm extrapolation from a spreadsheet formula
US20200186363A1 (en) * 2018-12-04 2020-06-11 Journey.ai Receiving information through a zero-knowledge data management network
US20200228506A1 (en) * 2018-12-04 2020-07-16 Journey.ai Storing information within a zero-knowledge data management network
US20200184469A1 (en) * 2018-12-07 2020-06-11 0Chain, LLC Systems and methods of blockchain for transaction rewards on token locking

Also Published As

Publication number Publication date
CA3158874A1 (en) 2022-02-03
AU2021316961B2 (en) 2023-04-13
WO2022023816A1 (en) 2022-02-03
CN115152177B (zh) 2023-11-21
EP4055773A1 (en) 2022-09-14
US20220278844A1 (en) 2022-09-01
JP2023504935A (ja) 2023-02-07
CN115152177A (zh) 2022-10-04
KR102537774B1 (ko) 2023-05-30
EP4055773A4 (en) 2023-12-13
US11824990B2 (en) 2023-11-21
AU2021316961A1 (en) 2022-06-02
JP7251035B2 (ja) 2023-04-04
US11394550B2 (en) 2022-07-19
US20220038285A1 (en) 2022-02-03
CA3158874C (en) 2023-02-07

Similar Documents

Publication Publication Date Title
US11770238B2 (en) Decentralized computation system architecture based on node specialization
US11778024B2 (en) Decentralized computation system architecture based on node specialization
JP7320493B2 (ja) 分散協調を用いるスマートコントラクトの実行
KR102537774B1 (ko) 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들
CN109964446B (zh) 一种基于投票的共识方法
US11694110B2 (en) Aggregated machine learning verification for database
US11562228B2 (en) Efficient verification of machine learning applications
US11983608B2 (en) Efficient verification of machine learning applications
CN115427995A (zh) 时间锁定的区块链事务和相关区块链技术
WO2022236406A1 (en) Decentralized computation system based on node specialization
Pop et al. Blockchain based decentralized applications: Technology review and development guidelines
CN116508291A (zh) 默克尔证明实体
Manevich et al. Redacting transactions from execute-order-validate blockchains
Antal et al. Distributed Ledger Technology Review and Decentralized Applications Development Guidelines. Future Internet 2021, 13, 62
CN112016118B (zh) 用于匿名数据库评级更新的方法和系统
US20230208648A1 (en) Htlc with proof of elapsed time
WO2023180486A1 (en) Ordered, append-only data storage

Legal Events

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