KR20200102460A - 고속 파티션 탄력적 블록체인 - Google Patents

고속 파티션 탄력적 블록체인 Download PDF

Info

Publication number
KR20200102460A
KR20200102460A KR1020207020497A KR20207020497A KR20200102460A KR 20200102460 A KR20200102460 A KR 20200102460A KR 1020207020497 A KR1020207020497 A KR 1020207020497A KR 20207020497 A KR20207020497 A KR 20207020497A KR 20200102460 A KR20200102460 A KR 20200102460A
Authority
KR
South Korea
Prior art keywords
block
entity
user
round
users
Prior art date
Application number
KR1020207020497A
Other languages
English (en)
Inventor
징 첸
조지오스 블라코스
세르게이 고르부노프
실비오 미칼리
Original Assignee
알고란드 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알고란드 인코포레이티드 filed Critical 알고란드 인코포레이티드
Publication of KR20200102460A publication Critical patent/KR20200102460A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3823Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/409Device specific authentication in transaction processing
    • G06Q20/4097Device specific authentication in transaction processing using mutual authentication between devices and transaction partners
    • G06Q20/40975Device specific authentication in transaction processing using mutual authentication between devices and transaction partners using encryption therefor
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

트랜잭션들이 블록들로 조직되는 트랜잭션 시스템에 있어서, 유효한 트랜잭션들의 새로운 블록(Br)은, 엔티티가 이전 블록들로부터 양(Q)을 결정하게 하고, 엔티티 및 Q에 고유하게 연관된 스트링(S)을 연산하도록 엔티티가 비밀 키를 사용하게 하고, 엔티티가 S 자체, S의 함수, 및/또는 S의 해시값 중 하나인 T를 S로부터 연산하게 하고, 엔티티가 T가 소정의 특성을 보유하는지 여부를 결정하게 하고, T가 소정의 특성을 보유한다면, 엔티티가 Br의 해시값(H)을 디지털 서명하게 하고 S, Br, 및 H의 디지털 서명된 버전을 이용가능하게 함으로써, 이전 블록들(
Figure pct00955
)의 시퀀스에 관하여 구성되고, Br은, 라운드(r)의 상이한 단계들에서 제안될 수 있고, 라운드(r) 동안 여러 번 다시 제안될 수 있으며, 엔티티는, 엔티티가 B를 수신하였는지 여부와 무관하게 블록(B)의 해시값(H)을 검증할 수 있다.

Description

고속 파티션 탄력적 블록체인
관련 출원에 대한 상호 참조
본원은, FASTER BYZANTINE AGREEMENT IN PROPAGATION NETWORKS WITH > 2/3 HONEST MAJORITY라는 명칭으로 2017년 12월 19일에 출원된 미국 가특허출원번호 제62/607,558호, ALGORAND라는 명칭으로 2018년 2월 20일에 출원된 미국 가특허출원번호 제62/632,944호, INCENTIVES AND TRANSACTION FEES IN ALGORAND라는 명칭으로 2018년 3월 15일에 출원된 미국 가특허출원번호 제62/643,331호, VIRTUAL BLOCKCHAIN PROTOCOLS FOR FAIR ELECTRONIC EXCHANGE라는 명칭으로 2018년 12월 10일에 출원된 미국 가특허출원번호 제62/777,410호, 및 VIRTUAL BLOCKCHAIN PROTOCOLS FOR FAIR ELECTRONIC EXCHANGE라는 명칭으로 2018년 12월 10일에 출원된 미국 가특허출원번호 제62/778,482호에 대한 우선권들을 주장하며, 이들 모두는 본원에 참고로 원용된다.
본원은, 전자 트랜잭션 분야에 관한 것으로서, 더욱 구체적으로는, 분산형 공개 원장, 트랜잭션 블록들의 시퀀스의 콘텐츠의 보안, 및 전자 지불 검증 분야에 관한 것이다.
블록체인은 블록들(
Figure pct00001
)의 확장가능 시퀀스로 이루어지고, 각 블록은, 다수의 트랜잭션, 이전 블록의 해시, 및 다른 데이터, 예컨대, 블록의 인덱스, 시간 정보 등으로 이루어진다. 블록체인의 유용한 특성들은, (P1) 각 인덱스(1, 2,...)에 대응하는 고유한 블록이 존재하며, (P2) 시스템의 모든 사용자가 결국 모든 블록의 콘텐츠를 학습하고, (P3) 누구도 블록들의 콘텐츠 또는 순서를 변경할 수 없으며, (P4) 임의의 유효 트랜잭션이 결국 체인의 블록에 진입한다는 것이다.
사용자들은 디지털 서명을 행할 수 있으므로, 각 사용자는 적어도 하나의 공개 키와 대응 비밀 키를 보유한다. 블록체인에서는, 일반적으로, 누구라도 공개 키를 알고 있지만, 반드시 그 공개 키를 소유한 사용자를 아는 것은 아니다. 이에 따라, 공개 키를 그 소유자로 식별할 수 있다.
몇 개의 블록체인 시스템에서는, 시스템에서 충분히 많은 사용자의 디지털 서명에 의해 블록을 인증해야 한다. 일부 시스템에서, 이러한 인증 사용자들은 사용자들의 고정된 세트에 속한다. 다른 일부 시스템에서는, 인증 사용자들이 동적으로 변경되는 세트에 속한다. 후자는, 특히 그 세트가 동적일뿐만 아니라 예측할 수 없는 경우에도 적대자가 동적으로 변경되는 세트를 손상시키는 데 시간이 더 걸리기 때문에, 바람직하다.
검증할 수 있지만 예측할 수 없는 방식으로 사용자들의 세트를 선택하는 특히 효과적인 방식은, 본원에 참고로 원용되는 공개된 PCT 국제출원번호 PCT/US2017/031037에 기술되어 있는 암호화 추첨(cryptographic sortition) 기술이다. 여기서, 사용자(i)는, 입력(s, r) 및 가능하게는 다른 입력과 기타 데이터(예를 들어, 사용자가 소정의 일부 정수 k에 대하여 블록(r) 앞의 적어도 k개 블록에서 시스템에 가입하였다는 사실)를 사용하여 자신의 비밀 키를 통해 i가 수행하는 연산 결과에 기초하여 블록 수(r)의 생성 동안 일부 단계(s)에서 기능하도록 권한이 있는 사용자들의 세트에 속한다. 예를 들어, i의 연산은, 이러한 입력들의 i의 디지털 서명(
Figure pct00002
),
Figure pct00003
의 해싱, 및 해시가 주어진 임계값(t)보다 작은지에 대한 확인을 수반할 수 있다(실제로, 다른 임의의 스트링처럼, 해시값은 일부 표준 방식에 있어서 수로서 해석될 수 있다). 이 경우에는,
Figure pct00004
가 블록(r)에 관한 단계(s)에 대한 i의 자격증명(credential)이라고 정의된다. 이러한 자격증명은, i가 실제로 (바람직하게는 서명된) 메시지(
Figure pct00005
)를 생성할 자격이 있음을 누구에게도 입증하며, 이러한 자신의 투표 메시지는, 라운드(r)에서, 즉, 블록(r) 생성을 목표로 하는 프로세스에서, 단계(s)에 대한 것이다. 실제로, i의 디지털 서명은 누구라도 확인할 수 있으며, 누구라도 주어진 값을 해시한 후 그 결과가 실제로 주어진 수보다 작은지(또는 같은지)를 확인할 수 있다.
블록체인은 메시지(예를 들어, 블록, 트랜잭션, 투표 메시지, 디지털 서명 등)를 전파함으로써 기능한다. 전형적으로, 배타적이지는 않지만, 메시지는, 피어-투-피어 방식 또는 릴레이를 통해 메시지를 가십(gossip)함으로써 전파된다. 여러 블록체인 시스템은, 경계 지연 내에서 모든 정직한 사용자에 의해 다른 정직한 사용자들에게 전파되는 메시지의 전달을 보장하도록 전파 네트워크를 필요로 한다. 일부 블록체인 시스템은, 또한, 사용자들이 (대부분) 정렬된 시스템 클록들을 갖는 것을 필요로 하며, 따라서 사용자들은 메시지들을 동기화된 방식으로 전파하며, 예컨대, 사용자들은 11:20:OOam EST에 블록(100) 생성의 단계(2)에 진입하고, 이 단계에 대한 투표 메시지는 11:20:05am EST 시각까지 전달되며, 이어서 사용자들은 블록(100)의 단계(3)에 진입한다. 알고랜드(Algorand)가 도입하는 바와 같이 덜 까다롭고 이에 따라 바람직한 요구 사항은, 사용자들의 클록들이 (대부분) 동일한 속도를 갖지만 클록들에 표시되는 실제 시각들이 서로 독단적으로 다를 있을 수 있다는 점이다. 사용자는, 자신이 전파 네트워크로부터 수신한 메시지에 기초하여 블록(r) 생성에 있어서 자신의 고유한 단계(s)를 시작하고, 수신된 메시지 및 이 단계를 시작한 후 자신의 고유한 클록이 얼마나 오래 진행했는지에 기초하여 그 단계를 종료한다.
전파 네트워크가 이러한 요구 사항을 충족하면, 알고랜드는, 적대자가 블록 체인이 (특성(P1 내지 P4)의 달성을 포함하여) 적절히 기능하는 것을 막지 못하게 할 수 있다. 그러나, 이는 전파 네트워크 자체를 공격하지 않는 적대자에 의존한다. 이러한 공격은, 예를 들어, 사용자들을 동일한 크기의 두 개의 그룹으로 파티션화하고 이들 간의 메시지 전달 채널들을 제어하여, 사용자에 의해 그룹(1)으로부터 전파되는 메시지가 그룹(2)의 임의의 사용자에게 도달하기 전에 무한정의 지연을 가질 수 있게 함으로써, 충분히 많은 양의 사용자에 대해 메시지 전달의 경계 지연을 위반하도록 적대자가 취할 수 있는 임의의 노력을 포함한다.
따라서, 이러한 요구 사항을 약화시키고 알려진 분산형 접근 방식의 비효율성과 불안정성을 겪지 않는 블록체인 및 전자 화폐 시스템을 제공하는 것이 바람직하다.
본원에서 설명하는 시스템에 따르면, 엔티티는, 제r 블록(Br)이 인증되지 않았다면 인증된 블록들(
Figure pct00006
)의 시퀀스에 관한 새로운 유효 트랜잭션들을 포함하는 블록(B')의 해시를 제안하는 엔티티에 의해 및 제r 블록(Br)이 충분한 수의 다른 엔티티들에 의해 인증되었다면 블록(Br)의 해시를 제안하는 엔티티에 의해, 트랜잭션들이 충분한 수의 검증자들의 디지털 서명들에 의해 인증되는 블록들의 시퀀스로 조직되는 트랜잭션 시스템을 관리한다. 블록은, 블록에 대한 트랜잭션을 확인하고 해당 블록을 구성 및 전파할 자격이 있는 엔티티에 의해 블록이 구성 및 전파되었음을 확인하는 경우에만 엔티티에 의해 인증될 수 있다. 엔티티는 해시값을 디지털 서명하여 해시값의 디지털 서명된 버전을 제공함으로써 해시값을 전파할 수 있고, 엔티티는 해시값의 디지털 서명된 버전을 다른 엔티티들을 포함하는 네트워크에 전파할 수 있다. 제r 블록(Br)이 인증되지 않았다면, 엔티티는 블록(B')을 또한 디지털 서명하고 전파할 수 있다. 엔티티는, 이전 블록들로부터 양(Q)을 결정할 수 있고, Q에 고유하게 연관된 스트링(S)을 연산하고 S 자체, S의 함수, 및/또는 S의 해시값인 양(T)을 S로부터 연산하기 위해 비밀 키를 사용할 수 있고, 엔티티는, T가 소정의 특성을 보유하는지 여부를 결정함으로써 해시값을 제안할지 여부를 결정할 수 있다. S는 엔티티의 비밀 키 하에서 Q의 서명일 수 있고, T는 S의 해시일 수 있고, T는, T가 소정의 임계값 미만이면 소정의 특성을 보유할 수 있다. 엔티티는 엔티티들의 네트워크의 일부일 수 있고, 엔티티들 중 특정한 하나의 엔티티가 블록(Br)을 구성 및 전파할 수 있다. 제r 블록(Br)은, 적어도 미리 정해진 수의 엔티티들이 제r 블록(Br)에 대응하는 해시값을 개별적으로 인증하는 표시를 엔티티가 수신하면, 엔티티에 의해 인증되는 것으로 결정될 수 있다. 미리 정해진 수의 엔티티들이 제r 블록(Br)을 개별적으로 인증하였다는 표시를 엔티티가 수신함에 따라, 엔티티는 r을 증분하여 추가 블록들을 블록들의 시퀀스에 추가하기 시작할 수 있다. 엔티티들 중 특정한 하나의 엔티티는, 미리 정해진 수의 엔티티들에 의해 리더(leader)로서 개별적으로 선택될 수 있다. 제r 블록(Br)은, 적어도 미리 정해진 수의 엔티티들이 엔티티들 중 특정한 하나의 엔티티가 제r 블록(Br)에 대응하는 해시값을 미리 정해진 수의 엔티티들의 각각에 제공하였다는 표시의 수신을 개별적으로 검증하는 표시를 엔티티가 수신하면, 엔티티에 의해 인증될 수 있는 것으로 결정될 수 있다.
또한, 본원에서 설명하는 시스템에 따르면, 엔티티는, 인증된 블록들(
Figure pct00007
)의 시퀀스에 관한 새로운 유효 트랜잭션들에 기초하여 블록을 생성한 다른 엔티티로부터 블록(Br)의 해시값을 수신하는 엔티티에 의해 트랜잭션들이 인증된 블록들의 시퀀스로 조직되는 트랜잭션 시스템을 관리하고, 엔티티는, 충분한 수의 다른 엔티티들이 다른 엔티티로부터의 블록(Br)의 해시값의 수신을 표시하고 해시값이 블록(Br)에 대하여 유효함에 따라, 블록(Br)을 인증하고, 엔티티는, 불충분한 수의 다른 엔티티들이 다른 엔티티로부터의 블록(Br)의 해시값의 수신을 나타내고 B'이 Br과 상이함에 따라, 인증된 블록들(
Figure pct00008
)의 시퀀스에 관한 새로운 유효 트랜잭션들에 기초하여 새로운 블록(B')을 생성하며, 엔티티는, 소정의 수의 엔티티들이 제r 블록(Br)을 개별적으로 인증하였거나 소정의 수의 엔티티들이 새로운 블록(B')을 개별적으로 인증하였다는 표시를 엔티티가 수신함에 따라, r을 증분하여 추가 블록들을 블록들의 시퀀스에 추가하기 시작한다. 블록은 디지털 서명에 의해 인증될 수 있다. 새로운 블록은, 소정의 수의 엔티티들이 이전에 제안된 블록을 개별적으로 인증하였다는 표시를 수신할 때까지 엔티티들 중 상이한 엔티티에 의해 제안될 수 있다. 엔티티는, 블록(Br)에 대하여 유효하지 않은 해시값에 응답하여 새로운 블록이 생성되어야 한다는 표시를 제공할 수 있다. 엔티티는, 충분한 수의 다른 엔티티들이 새로운 블록이 생성되어야 한다는 표시를 제공함에 따라, 인증된 블록들(
Figure pct00009
)의 시퀀스에 관한 새로운 유효 트랜잭션들에 기초하여 새로운 블록(B')을 생성할 수 있다. 엔티티는, 충분한 수의 다른 엔티티들이 다른 엔티티로부터의 블록(Br)의 해시값의 수신을 표시하고 해시값에 블록(Br)에 대하여 유효함에 따라, 블록(Br)의 해시값이 전파되어야 한다는 표시를 제공할 수 있다.
또한, 본원에서 설명하는 시스템에 따르면, 엔티티는, 엔티티가 이전 블록들로부터 양(Q)을 결정하게 하고, 엔티티가 Q의 디지털 서명(S)을 연산하게 하고, 엔티티가 S 자체, S의 함수, 및/또는 S의 해시값인 양(T)을 S로부터 연산하게 하고, T가 소정의 특성을 보유하는지 여부를 엔티티가 결정하게 하고, T가 소정의 특성을 보유하면, 새로운 블록(Br)의 제안된 해시값이 새로운 블록(Br)에 대응하는지 여부의 확인과는 무관하게 엔티티가 그 제안된 해시값을 검증하게 함으로써, 트랜잭션들이 블록들로 조직되고 블록들이 디지털 서명들의 세트에 의해 인증되는 트랜잭션 시스템에서 새로운 블록(Br)에 액세스하지 않고 소정의 블록들(
Figure pct00010
)의 시퀀스에 관한 트랜잭션들의 새로운 블록(Br)의 제안된 해시값을 검증한다. 엔티티는, 새로운 블록(Br)을 수신하기 전에 새로운 블록(Br)의 제안된 해시값을 전파할 수 있다.
또한, 본원에서 설명하는 시스템에 따르면, 트랜잭션들이 블록들로 조직되는 트랜잭션 시스템에 있어서, 유효 트랜잭션들의 새로운 블록(Br)은, 엔티티가 이전 블록들로부터 양(Q)을 결정하게 하고, 엔티티가 Q에 고유하게 연관된 스트링(S)을 연산하도록 비밀 키를 사용하게 하고, 엔티티가 S 자체, S의 함수, 및/또는 S의 해시값인 양(T)을 S로부터 연산하게 하고, T가 소정의 특성을 보유하는지 여부를 엔티티가 결정하게 하고, T가 소정의 특성을 보유하면, 엔티티가 Br의 해시값(H)을 연산하게 하고 H를 디지털 서명하게 하고 다른 엔티티들이 S, W, H의 디지털 서명된 버전을 이용할 수 있게 함으로써, 이전 블록들(
Figure pct00011
)의 시퀀스에 관하여 구성된다. 비밀 키는 엔티티의 공개 키에 대응하는 비밀 서명 키일 수 있고, S는 엔티티에 의한 Q의 디지털 서명이다. T는, 수의 이진 확장일 수 있고, T가 소정의 수(p) 미만이면 소정의 특성을 충족한다. Br로부터 S를 추론할 수 있게 함으로써 S를 이용할 수 있다. 각 사용자는 트랜잭션 시스템에서 잔액을 가질 수 있으며, p는 각 사용자의 잔액에 따라 각 사용자마다 다를 수 있다.
또한, 본원에서 설명하는 시스템에 따르면, 블록체인 시스템에서 사용자들의 서브세트를 선택하여 이전 블록들(
Figure pct00012
)의 시퀀스에 관하여 데이터 스트링(m)을 검증하는 구성은, 사용자들 중 적어도 일부가 이전 블록들로부터 양(Q)을 결정하게 하고, 사용자들 중 적어도 일부가 Q의 디지털 서명(S) 및 다른 정보를 연산하게 하고, 사용자들 중 적어도 일부가 디지털 서명의 해시값을 결정하게 하고, 사용자들 중 적어도 일부가 해시값을 미리 정해진 임계값과 비교하게 하고, 사용자들의 서브세트가 m을 다른 정보와 함께 디지털 서명하게 하고 사용자들의 서브세트의 각 사용자에 대하여 미리 정해진 임계값 미만의 해시값에 따라 다른 사용자들이 S 및 m의 디지털 서명된 버전을 이용할 수 있게 하는 구성을 포함한다. 디지털 서명은, 해시값이 미리 정해진 임계값 미만이면 자격증명될 수 있다. 각 사용자는 트랜잭션 시스템에서 잔액을 가질 수 있고, 미리 정해진 임계값은 각 사용자의 잔액에 따라 각 사용자마다 다를 수 있다. 각 사용자에 대하여 미리정해진 임계값은, 사용자들의 서브세트가 사용자들의 최소수를 포함하도록 선택될 수 있다. 데이터 스트링(m)은 새로운 블록(Br)의 해시값일 수 있다. 데이터 스트링(m)은, m의 인증된 서명들의 적어도 소정의 수에 의해 자격증명될 수 있다.
또한, 본원에서 설명하는 시스템에 따르면, 블록체인 시스템에서 사용자들의 서브세트를 선택하여 이전 블록들(
Figure pct00013
)의 시퀀스에 관하여 새로운 블록(Br)을 인증하는 구성은, 사용자들 중 적어도 일부가 이전 블록들로부터 양(Q)을 결정하게 하고, 사용자들 중 적어도 일부가 Q의 디지털 서명(S) 및 다른 정보를 연산하게 하고, 사용자들 중 적어도 일부가 디지털 서명의 해시값을 결정하게 하고, 사용자들 중 적어도 일부가 해시값을 미리 정해진 임계값과 비교하게 하고, 사용자들의 서브세트의 각 사용자에 대하여 해시값이 미리 정해진 임계값 미만임에 따라 사용자들의 서브세트가 Br
Figure pct00014
에 관하여 유효하다고 결정하게 하고, 사용자들의 서브세트가 Br의 해시값(H)을 다른 정보와 함께 디지털 서명하게 하고 다른 사용자들이 S 및 H의 디지털 서명된 버전을 이용할 수 있게 하는 구성을 포함한다. 사용자들 중 특정한 한 사용자는, 사용자들 중 특정한 한 사용자가 새로운 블록(Br)에 제공된 정보를 검증하는 경우에만 새로운 블록(Br)을 디지털 서명할 수 있다. 각 사용자는 트랜잭션 시스템에서 잔액을 가질 수 있으며, 미리 정해진 임계값은 각 사용자의 잔액에 따라 각 사용자마다 다를 수 있다. 각 사용자에 대한 미리 정해진 임계값은, 사용자들의 서브세트가 사용자들의 최소수를 포함하도록 선택될 수 있다. 블록(Br)은, Br
Figure pct00015
에 관하여 유효하다고 결정한 사용자들로부터의 H의 적어도 소정의 수의 인증된 서명에 의해 인증될 수 있다.
또한, 본원에서 설명하는 시스템에 따르면, 비일시적 컴퓨터 판독가능 매체에 제공된 컴퓨터 소프트웨어는, 본원에서 설명하는 단계들 중 임의의 단게를 구현하는 실행가능 코드를 포함한다.
본 발명은, 새로운 블록을 인증하는 보안을 위한 전파 네트워크의 메시지 전달 지연에 대한 요건을 제거한다. 새로운 블록을 먼저 준비하고(예를 들어, 적어도 일부 사용자에 의해 제안, 전파, 및/또는 동의하고) 이어서 인증한다. 원하는 시간 간격 내에 새롭게 구성된 블록, 새로운 블록의 해시값, 및/또는 자격증명된 서명을 수신하는 사용자는 새로운 블록을 검증 및/또는 인증하도록 진행한다. 그러나, 네트워크에서 전파되는 메시지가 무한정 전연될 수 있는 경우에도 새로운 블록을 인증하고자 할 수 있다. 블록(B)의 인증은, 소정의 가치있는 특성이 블록에 적용되는 것을 보장한다. 전형적인 주요 특성은, 사용자, 심지어 블록(B)의 준비에 참여하지 않았거나 이러한 준비를 관찰하지 않은 사용자라도 B가 블록체인에 추가되었음 또는 심지어 B가 블록체인의 제r 블록임을 확인할 수 있게 하는 것이다. 또 다른 가치있는 특성(종종 확정성(finalization)이라고 함)은, 블록체인 프로토콜이 실행되는 통신 네트워크의 파티션이 존재하더라도 소프트 포크로 인해(soft fork) B가 블록체인으로부터 사라지지 않음을 보장한다. 네트워크의 파티션으로 인해, 사용자들이 다수의 그룹으로 분리될 수 있으며, 이때 한 그룹으로부터 전파되는 메시지가 다른 그룹의 사용자들에게 전달되지 않을 수 있다. 무한정의 시간 후에 파티션이 해결될 수 있으며, 그 후에 네트워크는 제한된 지연 후에 메시지 전달을 다시 보장한다.
블록(B)이 어떠한 방식으로든 임의의 수의 단계로 준비되었다고 가정해 본다. 블록이 적절히 준비되었음을 실현하려면, 시간과 노력, 및 다양한 증거의 검증이 필요하다. B의 인증서는 유효한 자격증명서를 가진 소정의 수의 사용자들의 디지털 서명들로 이루어진다. 이러한 B의 인증서는, 이러한 서명을 작성한 사용자들이 B의 준비에 참여했거나 이러한 준비를 관찰했음을 보증한다. 적어도, 이것은, 인증서의 디지털 서명들 중 한 디지털 서명이 정직한 사용자에 의해 생성되었다면, 해당 사용자가 B가 적절히 준비되었다고 확인했음을 보증한다.
본원에서 설명하는 시스템에서, 사용자가 이전 블록들(
Figure pct00016
)에 관하여 블록체인의 제r 블록으로서 적절히 준비된 한 블록(B)에 대한 증거를 수집하는 동안, 사용자는, 자신이 B의 인증서가 시스템에서 생성되지 않았다는 증거를 갖고 있다면, 새로운 블록(B')을
Figure pct00017
에 관하여 블록체인의 제r 블록으로서 구성 및 제안할 수 있다. 사용자는, 이전 블록들로부터 양(Q)을 결정하고, 비밀 키를 사용하여 Q에 고유하게 연관된 스트링(S)을 연산하고, S 자체, S의 함수, 및/또는 S의 해시값인 양(T)을 S로부터 연산하고, T가 소정의 특성을 보유하는지 여부를 결정하고, T가 소정의 특성을 보유하면, B'의 해시값(H')을 연산하고, H'을 디지털 서명하고, 다른 사용자들이 S, B', 및 H'의 디지털 서명된 버전을 이용할 수 있게 함으로써, B'을 제안한다. 비밀 키는 엔티티의 공개 키에 대응하는 비밀 서명 키일 수 있고, S는 엔티티에 의한 Q의 디지털 서명이다. T는, 수의 이진 확장일 수 있고, T가 소정의 수(p) 미만이면 소정의 특성을 충족한다. B'으로부터 S를 추론할 수 있게 함으로써 S를 이용할 수 있다. 각 사용자는 트랜잭션 시스템에서 잔액을 가질 수 있으며, p는 각 사용자의 잔액에 따라 각 사용자마다 다를 수 있다.
본원에서 설명하는 시스템에서, 사용자가 이전 블록들(
Figure pct00018
)에 관하여 블록체인의 제r 블록으로서 적절히 준비된 한 블록(B)에 대한 증거를 수집하는 동안, 사용자는, 자신이 B의 인증서가 시스템에서 생성되었을 수도 있지만 자신이 이용할 수는 없었다는 증거를 갖고 있다면, B를 블록체인의 제r 블록으로서 다시 제안할 수 있다. 사용자는, B 자체를 수신하지 않고 B의 해시값을 검증하는 유효한 자격증명서와 함께 소정의 수의 사용자의 디지털 서명을 수신함으로써 B를 다시 제안할 수 있다. 사용자는, 이전 블록들로부터 양(Q)을 결정하고, 비밀 키를 사용하여 Q에 고유하게 연관된 스트링(S)을 연산하고, S 자체, S의 함수, 및/또는 S의 해시값인 양(T)을 S로부터 연산하고, T가 소정의 특성을 보유하는지 여부를 결정하고, T가 소정의 특성을 보유하면, B의 해시값(H)을 디지털 서명하고, 다른 사용자들이 S 및 H의 디지털 서명된 버전을 이용할 수 있게 함으로써, B를 다시 제안할 수 있다. 비밀 키는 엔티티의 공개 키에 대응하는 비밀 서명 키일 수 있고, S는 엔티티에 의한 Q의 디지털 서명이다. T는, 수의 이진 확장일 수 있고, T가 소정의 수(p) 미만이면 소정의 특성을 충족한다. B'으로부터 S를 추론할 수 있게 함으로써 S를 이용할 수 있다. 각 사용자는 트랜잭션 시스템에서 잔액을 가질 수 있으며, p는 각 사용자의 잔액에 따라 각 사용자마다 다를 수 있다.
새로운 블록을 제안하고 기존의 블록을 다시 제안하는 구성은, 블록체인의 제r 블록을 생성하는 동안 무한정 발생할 수 있으며, 상이한 사용자들에 의해 수행될 수 있다. 블록(B)은 상이한 단계들에서 생성된 하나보다 많은 인증서를 가질 수 있다. 그러나, 블록체인의 제r 블록을 생성하는 동안, 오직 하나의 블록만이, 인증서를 가지게 되므로, 사용자들에 의해 블록체인의 제r 블록으로 간주된다.
본원에서 설명하는 시스템의 효율은 다음에 따르는 사실로부터 도출된다. 첫째, 사용자(i)는, 사용자가 B 자체를 수신하기 전에 블록(B)의 해시값을 검증 및/또는 다시 제안할 수 있다. 둘째, 새로운 블록(B')은, 제r 블록으로서 이전에 제안된 블록(B)이 시스템에서 생성된 인증서를 갖지 않는다는 증거를 수집할 수 있기 전에 제r 블록으로서 제안될 수 있다. 실제로, 한 사용자가 이러한 증거를 수집하자마자 B'이 제안될 수 있다. 셋째, 블록체인의 제r 블록으로서 이전에 제안된 블록(B)은, 모든 사용자가 시스템에서 B에 대한 인증서가 생성되었을 수도 있지만 모든 사용자에게 이용가능하지 않다는 증거를 수집하기 전에 다시 제안될 수 있다. 실제로, 한 사용자가 이러한 증거를 수집하자마자 B가 다시 제안될 수 있다.
증거는, 데이터 스트링(m)을 검증하도록 적절히 형성된 자격증명된 서명들의 세트로 이루어질 수 있다. 상이한 목적을 위한 증거는 상이한 수의 서명으로 이루어질 수 있다. 본원에서 설명하는 시스템의 보안은, 사용자가 상이한 데이터 스트링을 검증할 때 자신의 서명의 해시값과 비교하는 미리 정해진 임계값의 적절한 선택, 및 상이한 목적을 위한 증거를 형성하기에 충분한 수의 서명의 적절한 선택으로부터 도출된다. 예를 들어, p를 시스템에서 악의적 사용자들의 최대 퍼센트라고 가정한다. 전형적으로, 악의적 사용자들은 소수이며, 예를 들어, p<1/3이다. 이어서, 블록에 대한 인증서를 형성하는 충분한 수의 서명 및 미리 정해진 임계값(t)을 선택하여, 충분히 높은 확률로, (a) 가능한 모든 블록값(B)에 대해, B에 대한 인증서를 형성하도록 정직한 사용자들의 n개 이상의 자격증명된 서명이 존재하며, (b) B의 임의의 인증서에서, 자격증명된 서명들의 2/3이 넘는 수가 정직한 사용자들에 속한다.
본원에서 설명하는 시스템은, 임시 키가 블록체인에서 사용되는지 여부에 대해 불가지론적이며, 사용자가 새로운 블록을 제안하고, 기존 블록을 다시 제안하고, 또는 데이터 스트링을 검증할 때, 사용자는 장기 비밀 키를 사용하여 자격증명된 서명을 생성할 수 있으며, 여기서, 키는 시스템의 수명 동안 반복적으로 사용될 수 있고, 또는 사용자가 하나의 키가 한 번만 사용되는 임시 비밀 키를 사용할 수 있거나, 사용자가 장기 키와 임시 키의 조합을 사용할 수 있다.
본원에서 설명하는 시스템의 일부로서, 사용자(i)는, 블록의 생성에 참여하기 위한 자격증명된 서명뿐만 아니라 가중치를 갖는 자격증명된 서명(본질적으로 다수의 투표에 연관된 자격증명된 서명)도 가질 수 있다. 실제로, 블록 생성에 참여하기 위한 i의 자격증명 서명의 가중치는, i가 시스템에서 돈을 얼마만큼 갖고 있는지에 의존할 수 있다. 실제로는, 블록 생성에 참여하기 위해 모든 사용자에 대해 단일의 미리 정해진 임계값(t)을 갖기보다는, 각 사용자(i)가 i의 금액이 클수록 더욱 큰 자신의 고유한 임계값(ti)을 가질 수 있다. 그리고, 사용자(i)는, 상이한 방식으로 블록 생성에 참여하기 위한, 예를 들어, 새로운 블록을 제안하거나, 블록을 다시 제안하거나, 특정 포맷의 데이터 스트링(m)을 검증하기 위한 상이한 임계값을 가질 수 있다. 간략화를 위해, 그러나 의도된 제한 없이, 가중치-n의 자 격증명된 서명을 갖는 사용자(i)를 n명의 사용자로서 취급하는 시스템을 계속 설명하며, 이때 각 사용자는 (가중치-1)의 자격증명된 서명을 갖는다.
이하에서는, 통상적인 알고랜드 시스템을 신속하게 상기한 후, 알고랜드에 기초하여, 의도된 제한 없이 바람직한 실시예의 예를 제공한다.
본원에서 설명하는 시스템의 실시예들은, 다음과 같이 간략히 설명되는 도면의 해당 도에 따라 더욱 상세히 설명된다.
도 1은 본원에서 설명하는 시스템의 일 실시예에 따른 네트워크 및 연산 스테이션의 개략도이다.
도 2는 트랜잭션의 새로운 블록이 제안되는 알고랜드 시스템의 제1 단계의 개략적이면서 개념적인 요약도이다.
도 3은 알고랜드 시스템에서 새로운 블록의 계약 및 인증에 대한 개략적이면서 개념적인 요약도이다.
도 4는 머클(Merkle) 트리 및 그 노드들 중 하나에 포함된 값에 대한 인증 경로를 도시하는 개략도이다.
도 5는 블록트리에서 구성된 첫 8개의 블록에 대응하는 8개의 머클 트리를 도시하는 개략도이다.
도 6은 본원에서 설명하는 시스템의 일 실시예에 따른 파티션화된 네트워크 및 연산 스테이션의 개략도이다.
본원에서 설명하는 시스템은, 트랜잭션 검증 및 전파를 분산하기 위한 메커니즘을 제공하여, 어떠한 엔티티도 단독으로 트랜잭션 정보를 검증 및/또는 전파하기 위한 연산을 담당하지 않는다. 대신, 참여하는 각 엔티티는, 검증가능하고 신뢰할 수 있는 방식으로 트랜잭션을 전파하도록 수행되는 연산을 공유한다.
도 1을 참조하면, 다이어그램(20)은, 인터넷과 같은 데이터 네트워크(24)에 접속된 복수의 연산 워크스테이션(22a 내지 22c)을 도시한다. 워크스테이션(22a 내지 22c)은, 본원의 다른 곳에서 더 상세히 설명되는 바와 같이 분산된 트랜잭션 전파 및 검증을 제공하도록 네트워크(24)를 통해 서로 통신한다. 워크스테이션(22a 내지 22c)이 서로 통신할 수 있다면, 시스템은 본원에서 설명하는 기능을 제공할 수 있는 임의의 수의 워크스테이션을 수용할 수 있다. 워크스테이션(22a 내지 22c) 각각은, 본원의 다른 곳에서 더 상세히 설명되는 바와 같이 시스템의 다른 모든 워크스테이션에 트랜잭션을 전파하고 트랜잭션을 검증하기 위한 프로세스를 독립적으로 수행할 수 있다.
도 2는, 알고랜드 시스템에서 라운드(r)의 제1 단계를 도식적으로 그리고 개념적으로 요약한 것으로서, 여기서, 선택된 일부 사용자들의 각각은 제r 블록에 대하여 자신의 고유한 후보를 제안한다. 구체적으로, 단계는, 비밀 암호화 추첨 프로세스를 개별적으로 거치는 시스템의 사용자들(a,..., z)로 시작되며, 이러한 프로세스는 블록을 제안하기 위해 선택된 사용자를 결정하고, 선택된 사용자 각각은 자신이 블록을 생성할 자격이 있음을 제공하는 자격증명을 비밀스럽게 연산한다. 도 2의 예에서는, 사용자들(b, d, h)만이 블록을 제안하도록 선택되고, 이들의 연산된 자격증명은 각각
Figure pct00019
,
Figure pct00020
,
Figure pct00021
이다. 선택한 각 사용자(i)는, 자신이 제안한 고유 블록(
Figure pct00022
)을 조립하고, 블록을 임시로 서명(즉, 나중에 설명하는 것처럼 임시 키로 블록을 디지털 서명)하고, 자신의 고유한 자격증명과 함께 네트워크로 전파한다. 라운드의 리더는, 자격증명이 가장 작은 해시를 갖는 선택된 사용자이다. 이 도면은 리더가 사용자(d)임을 나타낸다. 따라서, 이 사용자가 제안한 블록(
Figure pct00023
)은, 이진 합의 프로토콜에 대한 입력으로서 제공되는 블록이다.
도 3은, 합의에 도달하고 제안된 블록을 공식 제r 블록(Br)으로서 증명하기 위한 알고랜드의 프로세스를 개략적으로 그리고 개념적으로 요약한다. 알고랜드의 제1 단계는 새로운 블록을 제안하는 것으로 이루어지므로, 이 프로세스는 제2 단계로 시작된다. 이 단계는, 실제로 알고랜드가 선호하는 비잔틴 합의 프로토콜인 BA*의 제1 단계와 일치한다. 이 프로토콜의 각 단계는, 비밀 암호화 추첨에 의해 랜덤하게 선택되는 플레이어들의 다른 "위원회"(이 도면에서는 도시되지 않음)에 의해 실행된다. 이에 따라, 각 단계를 수행하도록 선택된 사용자들은 완전히 다를 수 있다. BA*의 단계들의 수는 가변될 수 있다. 도 3은, 알고랜드의 제2 단계부터 제8 단계까지인 7개의 단계를 수반하는 BA*의 실행을 도시한다. 제2 단계를 수행하도록 선택된 사용자들은 a, e, q이다. 각 사용자(i∈{a, e, q})는 자신의 자격증명(
Figure pct00024
)을 네트워크에 전파하며, 이는, i가 실제로 알고랜드의 라운드(r)의 제2 단계에서 메시지를 보낼 자격이 있으며, 이 단계(
Figure pct00025
)의 적절한 자신의 메시지가 임시로 서명되었음을 증명한다. 제3 단계 내지 제7 단계는 도시되어 있지 않다. 마지막 제8 단계에서, 이 도면은, 라운드(r)의 공식 블록으로서 Br에 대한 합의에 도달한 대응하는 선택된 사용자들(b, f, x)이 블록(Br)의 자신의 고유한 임시 서명들(이들 서명은 Br을 함께 증명함) 및 이들의 고유한 자격증명을 전파하여, 제8 단계에서 행동할 자격이 있음을 증명함을 도시한다.
도 4는 머클 트리 및 이 트리의 인증 경로 중 하나를 개략적으로 도시한다. 구체적으로, 도 4a는 깊이 3의 전체 머클 트리를 도시한다. x가 길이≤3인 이진 스트링에 의해 표시되는 각 노드(x)는 값 vx를 저장한다. x가 길이≤2이면,
Figure pct00026
이다. 도 4a의 머클 트리의 경우, 도 4b는 값 v010의 인증 경로를 도시한다.
도 5는, 깊이 3의 완전한 이진 트리 내에 구성된, 블록트리에서 구성된 처음 8개의 블록에 대응하는 머클 트리를 개략적으로 도시한다. 도 5i에서, 정수로 표시된 노드들은 머클 트리(Ti)에 속한다. (각각 i에 의해) i로 표시된 노드들의 콘텐츠는 일시적(각각, 영구적)이다.
본원에서의 설명은, 지불인 트랜잭션 및 본원의 시스템을 머니 플랫폼으로서 설명하는 것에 중점을 둔다. 당업자는 본원에서 설명하는 시스템이 모든 종류의 트랜잭션을 또한 다룰 수 있음을 인식할 것이다.
본원에서 설명하는 시스템은, 매우 유연한 설계를 가지며, 다양하지만 관련된 방식으로 구현될 수 있다. 일반적인 설계의 두 가지 가능한 실시예를 자세히 설명함으로써 그 유연성을 예시한다. 이들로부터, 당업자는 모든 종류의 다른 구현예를 도출하는 방법을 또한 이해할 수 있다.
본 발명의 이해를 용이하게 하고, 다양한 부분의 내부 상호 참조를 허용하기 위해, 프리젠테이션을 번호 및 명칭이 있는 섹션들로 조직한다. 제1 섹션은 상세한 실시예들 모두에 공통되는 것이다.
1 도입부
돈은 점점 더 가상화되고 있다. 오늘날 미국 달러의 약 80%가 원장 엔트리로서만 존재하는 것으로 추정되었다. 다른 금융 상품들은 선례를 따른다.
가능한 모든 사이버 공격의 영향을 받지 않으며 보편적으로 신뢰할 수 있는 중앙 엔티티를 신뢰할 수 있는 이상적인 세상에서, 돈 및 기타 금융 트랜잭션은 전적으로 전자적일 수 있다. 그러나, 우리는 이러한 세상에 살고 있지 않다. 이에 따라, 비트코인과 같은 분산형 암호 화폐 및 이더리움과 같은 "스마트 계약" 시스템이 제안되었다. 이들 시스템의 핵심은, 트랜잭션들의 시퀀스가 지불 및 계약에 따라 가변될 수 있으므로 트랜잭션들의 시퀀스를 변조 방지 방식으로 신뢰성 있게 기록하는 공유형 원장이다. 이러한 변조 방지를 보장하기 위해 선택되는 기술이 블록체인이다. 블록체인은, 암호 화폐, 금융 애플리케이션, 및 사물 인터넷과 같은 애플리케이션들 뒤에 있다. 블록체인 기반 원장을 관리하는 몇 가지 기술이 제안되었는데, 작업 증명, 지분 증명, 실용적 비잔틴 결함 허용, 또는 일부 조합이 있다.
그러나, 현재의 원장들은 관리하기에 비효율적일 수 있다. 예를 들어, 비트코인의 작업 증명 방안은, 많은 양의 연산을 필요로 하며, 낭비되며, 확장성이 불량하다. 또한, 사실상 매우 적은 수의 손에 권한을 집중한다.
따라서, 현재의 분산 구현의 비효율성과 약점 없이 신뢰성 있는 불가침 기관에 의해 운영되는 중앙집중식 시스템의 편리함과 효율성을 제공하는 공개 원장을 구현하는 새로운 방법을 제시하고자 한다. 알고리즘 랜덤성을 이용하여 지금까지 구성된 원장을 기반으로 유효 트랜잭션들의 다음 블록을 구성하는 것을 담당하는 검증자들의 세트를 선택하기 때문에, 본 발명의 방안을 알고랜드라고 칭한다. 당연히, 이러한 선택은 조작으로부터 영향을 받지 않으며 마지막 순간까지 예측할 수 없지만 궁극적으로 보편적으로 명확하다는 것을 증명할 수 있게 보장한다.
알고랜드의 방안은, 원칙적으로 사실상 사용자들의 다른 클래스들(비트코인의 "광부" 및 "일반 사용자")을 생성하지 않는다는 점에서 상당히 민주적이다. 알고랜드에서, "모든 권한은 모든 사용자들의 세트에 있다".
알고랜드의 주목할만한 한 가지 특성은, 트랜잭션 이력이 매우 작은 확률(예를 들어, 1조분의 1, 또는 10- 18)로만 포크(fork)될 수 있다는 점이다. 알고랜드는, 또한, 일부 법적 문제 및 정치적 문제도 해결할 수 있다.
알고랜드 방안은, 블록체인에 적용되며, 보다 일반적으로 블록들의 변조 방지 시퀀스를 생성하는 임의의 방법에 적용된다. 실제로 독립적인 관심을 가질 수 있는 새로운 방법(블록체인의 대안이며 블록체인보다 효율적임)을 제시한다.
1.1 비트코인의 가정 및 기술적 문제점
비트코인은, 매우 독창적인 시스템이며, 대량의 양의 후속 연구에 영감을 주었다. 그러나, 문제점도 있다. 비트코인과 같이 본질적으로 작업 증명을 기반으로 하는 모든 암호 화폐에 의해 실제로 공유되는 근본적 가정과 기술적 문제점들을 요약해 보자.
이 요약을 위해, 비트코인에서, 사용자는 디지털 서명 체계의 다수의 공개 키를 소유할 수 있고, 돈은 공개 키들에 연관되어 있으며, 지불은 소정량의 돈을 하나의 공개 키로부터 다른 공개 키로 이체하는 디지털 서명임을 상기하는 것으로 충분하다. 본질적으로, 비트코인은 모든 처리된 지불을 블록들의 체인(B1, B2,...)으로 조직하며, 각 블록은 다수의 지불로 이루어지고, 이때, 임의의 순서로 취해지는 B1의 모든 지불 및 후속하는 B2의 임의의 순서의 지불 등이 유효 지불들의 시퀀스를 구성한다. 각 블록은 평균적으로 10분마다 생성된다.
이러한 블록들의 시퀀스는, 체인이며, 그 이유는 심지어 단일 블록에서의 임의의 변경이 모든 후속 블록에 침투하여 지불 이력의 임의의 변경을 더욱 쉽게 파악할 수 있음을 보장하도록 구성되어 있기 때문이다. (알 수 있는 바와 같이, 이것은 이전 블록의 암호 해시를 각 블록에 포함함으로써 달성된다). 이러한 블록 구조를 블록체인이라고 한다.
가정: 연산력의 정직한 다수. 비트코인은, 악의적 엔티티(또는 조정된 악의적 엔티티들의 연합)가 블록 생성에 전념하는 대부분의 연산력을 제어하지 않는다고 가정한다. 실제로, 이러한 엔티티는 블록체인을 수정할 수 있고, 이에 따라 지불 이력을 원하는 대로 재작성할 수 있다. 특히, 엔티티는, 지불(
Figure pct00027
)을 행할 수 있고, 지불한 혜택을 취할 수 있고, 이어서
Figure pct00028
의 임의의 흔적을 "삭제"할 수 있다.
기술적 문제점 1: 연산 낭비. 블록 생성에 대한 비트코인의 작업 증명 방안에는 엄청난 양의 연상이 필요하다. 현재, 단지 수십만 개의 공개 키가 있는 시스템에 있는 경우에, 가장 강력한 500개의 최고 슈퍼컴퓨터는 비트코인 플레이어로부터 필요로 하는 총 연산력의 12.8%만을 발휘할 수 있다. 상당히 더 많은 사용자가 시스템에 참여하면, 이러한 연산량이 크게 증가한다.
기술적 문제점 2: 권한 집중. 오늘날, 엄청난 양의 연산이 필요함으로 인해, (휴대 전화는 고사하고) 일반 데스크톱을 사용하여 새로운 블록을 생성하려는 사용자는 돈을 잃을 것으로 예상한다. 실제로, 일반 컴퓨터로 새로운 블록을 연산하는 경우, 연산에 필요한 전력의 예상 비용이 예상 보상을 초과한다. ("새로운 블록"을 채굴하는 것 외에는 어떠한 것도 하지 않는) 특수하게 구축된 컴퓨터 풀들만 사용하면, 새로운 블록들을 생성하여 이익을 내는 것을 기대할 수 있다. 이에 따라, 오늘날에는, 실제로, 사용자들의 두 개의 분리 클래스(disjoint classes), 즉 지불만 행하는 일반 사용자 및 새로운 블록을 검색만 하는 특수 채굴 풀이 있다.
따라서, 최근, 블록 생성을 위한 총 연산력이 단지 5개의 풀 내에 있다는 것은 놀라운 일이 아니다. 이러한 조건에서, 대부분의 연산력이 정직하다는 가정은 신뢰성이 떨어진다.
기술적 문제점 3: 모호성. 비트코인에서, 블록체인은 반드시 독특한 것은 아니다. 실제로, 비트코인의 최신 부분은 종종 포크되며, 블록체인은, 예를 들어, 한 사용자에 따라
Figure pct00029
일 수 있고, 다른 사용자에 따라
Figure pct00030
일 수 있다. 체인에 여러 블록을 추가한 후에만, 제1 블록(k+3)이 모든 사용자에 대해 동일하다는 것을 합리적으로 확신할 수 있다. 따라서, 체인의 최종 블록에 포함된 지불에 즉시 의존할 수 없다. 블록체인에서 블록이 충분히 깊어지고 이에 따라 충분히 안정되는지를 확인해 보는 것이 더 신중하다.
별도로, 비트코인에 대한 법 집행 및 통화 정책에 대한 우려도 제기되었다.
(주석 1: 비트코인 지불에 의해 제공되는 (의사) 익명성은 돈 세탁 및/또는 범죄자 개인 또는 테러 조직의 자금 조달로 오용될 수 있다. 원칙적으로, 완벽한 익명성을 제공하는 통상적인 지폐 또는 금괴에서 동일한 문제점이 제기되지만, 이들 통화의 물리적 특성은 자금 이체를 상당히 느리게 하여 법 집행 기관의 모니터링을 어느 정도 허용한다.
"돈을 인쇄하는" 능력은 국가의 가장 기본적인 권한들 중 하나이다. 따라서, 원칙적으로, 독립적으로 유동하는 통화를 대량으로 채택하면 이러한 권한이 줄어들 수 있다. 그러나, 현재, 비트코인은, 정부의 통화 정책에 위협이 되지 않으며, 확장성 문제로 인해, 절대로 위협이 되지 않을 수 있다).
1.2 알고랜드 개요
설정. 알고랜드는 매우 강력한 설정으로 동작한다. 간략하게,
(a) 무허가 환경 및 허가된 환경
알고랜드는, 임의로 많은 사용자가 어떠한 종류의 베팅(vetting) 또는 허가 없이도 시스템에 언제든지 참여할 수 있는 완전한 무허가 환경에서도 효율적이고 안전하게 동작한다. 물론, 알고랜드는 허가된 환경에서 더 잘 동작한다.
(b) 매우 적대적인 환경. 알고랜드는 매우 강력한 적대자를 견뎌낸다. 이러한 매우 강력한 적대자는,
(1) 무허가 환경에서, 시스템 내의 돈의 2/3가 정직한 사용자에 속하는 경우에는, 자신이 원하는 임의의 사용자를 자신이 원하는 어느 때라도 즉시 손상시킨다(허가된 환경에서는, 돈에 관계없이, 사용자의 2/3가 정직하기에 충분하다.)
(2) 모든 손상된 사용자를 완전히 제어하고 완벽하게 조정한다.
(3) 정직한 사용자에 의해 전송되는 각 메시지(m)가, m의 크기에만 의존하는 시간(
Figure pct00031
) 내에 정직한 사용자들 모두에게 도달하는 경우에는, 모든 메시지의 배달을 스케줄링한다.
강력한 적대자가 존재함에도 불구하고 알고랜드에서의 주요 특성
* 필요한 연산량이 최소이다. 본질적으로, 시스템에 얼마나 많은 사용자가 존재하더라도, 1,500명의 사용자 각각은 최대 몇 초의 연산을 수행해야 한다.
* 새로운 블록이 빠르게 생성되며 실제로 블록체인을 떠나지 않는다. 즉, 알고랜드의 블록체인은 무시할만한 확률(즉, 1조분의 1 또는 10-18 미만)로만 포크될 수 있다. 따라서, 사용자들은, 블록이 보이자마자 새로운 블록에 포함된 지불을 중계할 수 있다.
* 모든 권한은 사용자 자신에게 있다. 알고랜드는 엄밀하게 분산형 시스템이다. 특히, 어떤 트랜잭션이 인식되는지를 제어할 수 있는 외인성 엔티티(비트코인의 "광부")가 없다.
알고랜드의 기술
1. 새롭게 빠른 비잔틴 합의 프로토콜. 알고랜드는, 본 발명의 암호화, 메시지 전달, 이진 비잔틴 합의(BA) 프로토콜인 BA*를 통해 새로운 블록을 생성한다. 프로토콜(BA*)은, (곧 논의할) 일부 추가 특성뿐만 아니라 또한 매우 빠르다. 대략적으로 말하자면, 이 프로토콜의 이진 입력 버전은, 플레이어(i)가 다른 모든 플레이어에게 단일 메시지(mi)를 전송하는 3-단계 루프로 이루어진다. 완전한 동기식 네트워크에서 실행되며, 2/3를 초과하는 플레이어가 정직하고. 확률은 1/3을 초과하고, 각 루프 후에, 프로토콜이 합의로 종료하게 된다(프로토콜(BA*)이 어떠한 약화 없이 비잔틴 합의의 원래 정의를 충족한다고 강조한다).
알고랜드는, 이러한 이진 BA 프로토콜을 이용하여 본 발명의 다른 통신 모델에서 각각의 새로운 블록에 대한 합의에 도달한다. 이어서, 합의된 블록은, 적절한 검증자들의 규정된 수의 디지털 서명을 통해 증명되고, 네트워크를 통해 전파된다.
2. 비밀 암호화 추첨. 프로토콜(BA*)은, 매우 빠르지만, 수백만 명의 사용자에 의해 재생될 때 더욱 빠른 속도의 이점을 얻을 수 있다. 이에 따라, 알고랜드는, BA*의 플레이어를 모든 사용자들의 세트의 훨씬 작은 서브세트로 되도록 선택한다. 상이한 종류의 권한 집중 문제점을 피하기 위해, 각각의 새로운 블록(Br)은, 선택된 검증자들의 별도의 세트(SVr)에 의한 새로운 BA*의 실행을 통해 구성되고 합의된다. 원칙적으로, 이러한 세트를 선택하는 것은 Br을 직접 선택하는 것만 큼 어려울 수 있다. 이러한 잠재적 문제점을, 비밀 암호화 추첨이라고 칭하는 새로운 방안에 의해 해결한다. 추첨은, 자격을 갖춘 많은 개인 중에서 임의로 공인들을 선발하는 실행이다(예를 들어, 추첨은, 아테네, 플로렌스, 베니스 등의 공화국에 의해 수세기에 걸쳐 실행되었다. 현대 사법 시스템에서, 랜덤한 선택은 배심원을 선택하는 데 종종 사용된다. 랜덤한 샘플링은 선거를 위해서도 지지되었다). 물론, 분산형 시스템에서, 각 검증 세트(SVr)의 구성원을 랜덤하게 선택하는 데 필요한 임의의 코인을 선택하는 것은 문제가 있다. 따라서 자동(즉, 메시지 교환이 필요 없음)이면서 랜덤한 방식으로 보장되는 방식으로 모든 사용자의 모집단으로부터 각 검증자 세트를 선택하기 위해 암호화에 의존한다. 비슷한 방식으로, 새로운 블록(Br) 제안을 담당하는 사용자, 리더, 및 리더에 의해 제안되는 블록에 합의하는 것을 담당하는 검증 세트(SVr)를 선택한다. 본 발명의 시스템은, 이전 블록의 콘텐츠로부터 추론될 수 있고 매우 강력한 적대자가 존재하더라도 조작될 수 없는 일부 정보(Qr - 1)를 이용한다.
3. 양(시드) Qr. 새로운 블록(Br)의 구성을 담당하는 다음 검증자 세트 및 리더를 자동 결정하기 위해 블록체인의 최종 블록(Br-1)을 사용한다. 이 방안의 문제점은, 단지 이전 라운드에서 약간 다른 지불을 선택함으로써, 강력한 적대자가 다음 리더를 엄청나게 제어할 수 있다는 점이다. 시스템에서 플레이어/돈의 1/1000만을 제어하더라도, 모든 리더가 악의적임을 보장할 수 있다(직관 섹션 4.1을 참조한다). 이러한 문제점은, 모든 지분 증명의 중심이며, 우리가 아는 한, 지금까지 만족스럽게 해결되지 않았다.
이러한 문제점을 해결하기 위해, 강력한 적대자에 의해 예측가능하지 않고 영향도 받지 않는다고 증명될 수 있는 신중하게 규정된 별도의 양(Qr)을 의도적으로 구성하고 계속 업데이트한다. 제r 시드가 Qr로부터 온 것이어서, 알고랜드가 제r 블록의 생성시 특별한 역할을 하는 모든 사용자를 비밀 암호화 추첨을 통해 선택하므로, Qr을 제r 시드라고 칭할 수 있다. 시드(Qr)는 블록(Br-1)으로부터 추론될 수 있다.
4. 비밀 자격증명. 새로운 블록(Br)을 구성하는 리더 및 검증자 세트를 선택하기 위해 현재 최종 블록(Br-1)을 랜덤하게 그리고 모호하지 않게 사용하는 것으로는 충분하지 않다. Br을 생성하기 전에 Br-1을 알아야 하므로, Br-1로부터 추론할 수 있으며 영향을 받지 않는 최종 양(Qr - 1)도 알아야 한다. 이에 따라, 블록(Br) 연산을 담당하는 리더 및 검증자도 마찬가지이다. 따라서, 강력한 적대자는, Br에 관해 논의하기 전에 자신이 증명하는 블록을 완전히 제어하도록 이들 모두를 즉시 손상시킬 수 있다.
이러한 문제점을 방지하기 위해, 리더는(그리고 실제로 검증자도), 자신의 역할을 비밀리에 학습하지만, 실제로 해당 역할을 갖는 모든 사람에게 증명할 수 있는 적절한 자격증명을 연산할 수 있다. 사용자는, 자신이 다음 블록의 리더임을 개인적으로 인식하게 되면, 먼저 자신이 제안한 새로운 블록을 비밀리에 조립한 후, 자신의 고유한 자격증명과 함께 그 블록을 (증명될 수 있도록) 배포한다. 이런 식으로, 적대자는 다음 블록의 리더가 누구인지를 즉시 인식할 수 있고 그 리더를 즉시 손상시킬 수 있지만, 적대자가 새로운 블록의 선택에 영향을 미치기에는 너무 늦을 것이다. 실제로, 적대자는, 강력한 정부가 위키리크스에 의해 바이러스처럼 확산되는 메시지를 병에 다시 넣을 수 있는 것 이상으로 리더의 메시지를 "콜백"(call back)할 수 없다.
알 수 있듯이, 리더의 독창성을 보장할 수 없으며, 모든 사람이 리더 자신을 포함하여 누가 리더인지를 확신할 수 없다. 그러나, 알고랜드에서는, 모호하지 않은 진행이 보장된다.
5. 플레이어 교체. 새로운 블록을 제안한 후, 리더는, 자신의 일이 완료되었기 때문에, "죽을" 수도 있다(또는 적대자에 의해 손상될 수 있다). 그러나, SVr의 검증자의 경우에는, 상황이 덜 간단하다. 실제로, 충분한 수의 서명으로 새로운 블록(Br)을 증명하는 담당자는, 먼저 리더가 제안한 블록에 대해 비잔틴 합의를 실행해야 한다. 문제는, 그것이 아무리 효율적이라도, BA*가 다수의 단계를 필요로 하며 플레이어들의 2/3를 초과하는 플레이어가 정직해야 한다는 것이다. 이는, 효율성의 이유로, BA*의 플레이어 세트가 모든 사용자들의 세트 중에서 랜덤하게 선택된 작은 세트(SVr)로 이루어지므로 문제가 된다. 따라서, 강력한 적대자는, 모든 사용자의 1/3을 손상시킬 수는 없지만, SVr의 모든 구성원을 확실히 손상시킬 수 있다.
다행히, 피어-투-피어 방식으로 메시지를 전파함으로써 실행되는 프로토콜(BA*)이 플레이어 교체가능한 것임을 증명할 것이다. 이러한 새로운 요건은, 각 단계가 완전히 새롭고 랜덤하게 독립적으로 선택된 플레이어 세트에 의해 실행되더라도 프로토콜이 정확하고 효율적으로 합의에 도달한다는 것을 의미한다. 따라서, 수백만 명의 사용자의 경우, BA*의 단계에 연관된 플레이어들의 작은 각 세트는 다음 세트와의 빈 교차점을 가질 수 있다.
또한, BA*의 상이한 단계들의 플레이어들의 세트들은 완전히 다른 기수를 가질 수 있다. 또한, 각 세트의 구성원들은, 다음 세트의 플레이어들이 누구인지를 알지 못하며, 어떠한 내부 상태도 비밀리에 통과하지 못한다.
교체가능한-플레이어 특성은, 실제로 우리가 상상하는 역동적이고 매우 강력한 적대자를 물리치기 위해 매우 중요하다. 교체가능한-플레이어 프로토콜이 많은 상황과 애플리케이션에서 결정적이라고 증명될 것으로 판단된다. 특히, 교체가능한-플레이어 프로토콜은, 역동적 적대자가 있는 많은 플레이어들에 내장된 작은 서브 프로토콜을 안전하게 실행하는 데 중요하며, 전체 플레이어의 작은 분율도 손상시킬 수 있는 이러한 적대자는, 작은 서브 프로토콜에서 모든 플레이어를 손상시키는 데 어려움을 겪지 않는다.
추가 특성/기술: 게으른 정직. 정직한 사용자는 온라인 상태 및 프로토콜 실행을 포함하여 처방된 지침을 따른다. 알고랜드는 적당한 연산 및 통신 요건만을 가지고 있으므로, 온라인 상태에 있고 "백그라운드에서" 프로토콜을 실행하는 것은 큰 희생이 아니다. 물론, 갑작스러운 접속 끊김으로 인해 또는 리부팅 필요로 인해 정직한 사용자들 중의 일부의 "결석"은 자동 허용된다(그 이유는 이러한 일부 플레이어가 일시적으로 악의를 갖는다고 항상 고려할 수 있기 때문이다). 그러나, 알고랜드는, 정직한 사용자들이 대부분의 시간에 오프라인 상태에 있는 새로운 모델에서 동작하도록 간단하게 구성될 수 있음을 강조하고자 한다. 본 발명의 새로운 모델은 다음과 같이 약식으로 소개될 수 있다.
게으른 정직. 대략적으로 말하면, 사용자(i)는, (1) 프로토콜에 참여하라는 요청을 받았을 때 처방된 자신의 지시 사항을 모두 따르고 (2) 프로토콜에 참여하라는 요청을 거의 받지 않고 적절한 사전 통지를 받으면, 게으르지만 정직하다.
그러한 정직에 대한 이완된 개념에 의해, 정직한 사람들이 필요할 때 가까이 있을 것이라고 더욱 확신할 수 있으며, 이러한 경우, 알고랜드는, 이하의 내용을 보장한다.
시스템은, 주어진 시점에서, 참여하고 있는 플레이어들의 대다수가 악의적인 경우에도, 안전하게 동작한다.
2 예비 단계
2.1 암호화 프리미티브
이상적 해싱. 임의로 긴 스트링을 고정된 길이의 이진 스트링에 맵핑하는 효율적으로 연산가능한 암호화 해시 함수(H)에 의존한다. 오랜 전통에 따라, H를 랜덤 오라클로서 모델링하며, 이것은 본질적으로 각각의 가능한 스트링(s)을 선택된 길이의 임의로 독립적으로 선택된(그리고 고정된) 이진 스트링(H(s))에 맵핑하는 함수이다.
설명되는 실시예들에서, H는 256-비트 길이의 출력을 갖는다. 실제로, 이러한 길이는 시스템을 효율적으로 만들 수 있을 만큼 짧고 시스템을 안전하게 유지할 수 있을 정도로 길다. 예를 들어, H가 충돌 복원력을 갖기를 원한다. 즉, H(x) = H(y)이도록 두 개의 상이한 스트링(x, y)을 찾기가 어렵다. H가 256-비트 길이의 출력을 갖는 랜덤 오라클인 경우, 이러한 스트링들의 임의의 쌍을 찾는 것은 실제로 어렵다(랜덤하게 시도하고 생일 역설에 의존하려면, 2256/2 = 2128 시도가 필요하다).
디지털 서명. 디지털 서명은, 사용자들이 임의의 비밀 키를 공유하지 않고도 정보를 서로 인증하게 할 수 있다. 디지털 서명 체계는, 확률 키 생성기(G), 서명 알고리즘(S), 및 검증 알고리즘(V)인 3개의 빠른 알고리즘으로 이루어진다.
충분히 높은 정수인 보안 파라미터(k)가 주어지면, 사용자(i)는, G를 사용하여 k-비트 키들(즉, 스트링들)의 쌍, 즉, "공개" 키(pki) 및 일치하는 "비밀" 서명 키(ski)를 생성한다. 결정적으로, 공개 키는 대응하는 비밀 키를 "배신"하지 않는다. 즉, pki를 알더라도, i가 아닌 누구도 천문학적 시간보다 짧은 시간 내에 ski를 연산할 수는 없다.
사용자(i)는 ski를 사용하여 메시지를 디지털 서명한다. 가능한 각 메시지(이진 스트링)(m)에 대해, i는 먼저 m을 해시한 후 입력(H(m)) 및 ski에 대하여 알고리즘(S)을 실행하여 k-비트 스트링을 생성한다.
Figure pct00032
(주석 2: H는 충돌 복원력이 있으므로, m을 서명함으로써, 다른 메시지(m')를 "우연히 서명"하는 것은 실제로 불가능하다).
이진 스트링(
Figure pct00033
)은, (pki에 관하여) m에 대한 i의 디지털 서명이라고 하며, 공개 키(pki)가 컨텍스트에서 명확한 경우 sigi(m)에 의해 더욱 간단하게 표시될 수 있다.
pki를 아는 누구라도 그것을 사용하여 i에 의해 생성된 디지털 서명을 검증할 수 있다. 구체적으로, (a) 플레이어(i)의 공개 키(pki), (b) 메시지(m), 및 (c) 스트링(s), 즉, i가 행한 것으로 주장되는 메시지(m)의 디지털 서명의 입력에 대하여, 검증 알고리즘(V)은 예 또는 아니오를 출력한다.
디지털 서명 체계로부터 필요로 하는 특성들은 다음과 같다.
1. 정당한 서명은 항상 검증된다. s = sigi(m)이면, V(pki, m, s) = 예
2. 디지털 서명은 위조하기 어렵다. ski를 모르면, i가 서명하지 않은 메시지(m)에 대해 V(pki, m, s) = 예인 스트링을 찾는 시간이 천문학적으로 길다.
(강력한 보안 요건에 따라, 이는 다른 임의의 메시지의 서명을 취득할 수 있는 경우에도 적용된다).
이에 따라, 다른 사람이 자신을 대신하여 메시지에 서명하는 것을 방지하기 위해, 플레이어(i)는, 자신의 서명 키(ski)(따라서 "비밀 키"라는 용어로 됨)를 비밀로 유지해야 하고, 누군가가 자신이 서명하는 메시지를 검증할 수 있으려면, i는 자신의 키(pki)(따라서, "공개 키"라는 용어로 됨)를 공개하는 데 관심을 갖는다.
메시지 검색가능성이 있는 서명. 일반적으로 메시지(m)는 해당 서명(sigi(m))으로부터 검색될 수 없다. 사실상 개념적으로 편리한 "메시지 검색가능성" 특성을 충족하는 디지털 서명을 처리하기 위해(즉, 서명자와 메시지를 서명으로부터 쉽게 연산할 수 있음을 보장하기 위해), 이하의 식을 규정한다.
pki가 명백하다면,
Figure pct00034
Figure pct00035
고유한 디지털 서명. 다음에 따르는 같은 추가 특성을 충족하는 디지털 서명 체계(G, S, V)도 고려한다.
3. 고유성.
Figure pct00036
Figure pct00037
이도록 스트링(pk', m, s, 및 s')을 찾는 것은 어렵다.
(고유성 특성은 합법적으로 생성된 공개 키가 아닌 스트링(pk')에도 적용된다는 점에 주목한다. 그러나, 구체적으로, 고유성 특성은, 누군가가 일치하는 비밀 키(sk)와 함께 공개 키(pk)를 연산하도록 특정된 키 생성기(G)를 사용하였고 이에 따라 sk를 안다면, 그 사람이 pk에 관한 동일한 메시지의 두 개의 상이한 디지털 서명을 찾는 것은 본질적으로 불가능하다는 것을 의미한다).
비고
* 고유 서명으로부터 검증가능한 랜덤 기능까지. 고유성 특성을 가진 디지털 서명 체계와 관련하여, 맵핑(
Figure pct00038
)은, 고유하고 랜덤하게 선택된 256-비트 스트링을 가능한 각 스트링(m)에 연관짓고, 서명(sigi(m))이 주어지면 이러한 맵핑의 정확성을 증명할 수 있다.
즉, 고유성 특성을 충족하는 이상적인 해싱 및 디지털 서명 체계는 본질적으로 검증가능한 랜덤 함수(VRF)의 기본 구현을 제공한다.
VRF는 특별한 종류의 디지털 서명이다. 이러한 메시지(m)의 i의 특별한 서명을 나타내기 위해 VRFi(m)를 기입할 수 있다. 고유성 특성을 충족하는 것 외에도, 검증가능한 랜덤 함수는 충분히 랜덤으로 되도록 보장되는 출력을 생성한다. 즉, VRFi(m)는, 본질적으로 랜덤이며, 생성될 때까지 예측불가이다. 대조적으로, SIGi(m)는 충분히 랜덤일 필요가 없다. 예를 들어, 사용자(i)는, SIGi(m)가 (구문적으로) 작은 (즉, 처음 몇 개의 비트가 항상 0일 수 있는) k-비트 스트링으로 항상 되도록 자신의 공개 키를 선택할 수 있다. 그러나 H가 이상적인 해시 함수이므로, H(SIGi(m))는 항상 랜덤한 256-비트 스트링이라는 점에 주목한다. 본 발명의 바람직한 실시예들에서는, 고유한 난수를 각각의 메시지(m) 및 각각의 사용자(i)에 정확하게 연관지을 수 있도록 고유성 특성을 충족하는 해싱 디지털 서명을 광범위하게 사용한다. 알고랜드를 VRF로 구현하는 경우, H(SIGi(m))를 VRFi(m)로 대체할 수 있다. 특히, 사용자(i)는, (예를 들어, H(SIGi(m))를 수(p)와 비교하기 위해) SIGi(m)를 먼저 연산한 후 H(SIGi(m))를 연산할 필요가 없다. 사용자는 VRFi(m)를 직접 연산할 수 있다. 요컨대, H(SIGi(m))는, VRFi(m)로서 또는 충분히 난수로서 해석될 수 있으며, 플레이어(i)에 의해 쉽게 연산될 수 있지만, i 및 m에 모호하지 않게 연관된 다른 사람에 대해서는 예측될 수 없다는 점을 이해해야 한다.
* 디지털 서명에 대한 세 개의 상이한 요구. 알고랜드에서, 사용자(i)는 아래의 사항들에 대하여 디지털 서명에 의존한다.
(1) i의 고유한 지불을 인증. 이 응용분야에서, 키는, "장기적"(즉, 오랜 기간 동안 많은 메시지를 서명하는 데 사용)일 수 있으며, 일반적인 서명 체계로부터 비롯된 것이다.
(2) i가 라운드(r)의 일부 단계(s)에서 행동할 자격이 있음을 증명하는 자격증명을 생성. 여기서, 키는, 장기적일 수 있지만 고유성 특성을 충족하는 체계로부터 비롯되어야 한다.
(3) i가 행동하는 각 단계에서 전송하는 메시지(i)를 인증. 여기서, 키는, 임시적이어야 하지만(즉, 처음 사용 후 파괴되어야 하지만), 일반적인 서명 체계로부터 비롯된 것일 수 있다.
* 저 비용 단순화. 간략하도록, 각 사용자(i)가 하나의 장기간 키를 갖는 것을 고려해본다. 이에 따라, 이러한 키는 고유성 특성이 있는 서명 체계로부터 비롯되어야 한다. 이러한 단순성은 연산 비용이 적다. 전형적으로, 사실, 고유한 디지털 서명은 일반 서명보다 생산 및 검증하는 데 약간 더 비싸다.
2.2 이상화된 공개 원장
알고랜드는 이상화된 공개 원장에 기초하여 다음에 따르는 지불 시스템을 모방하려 한다.
1. 초기 상태. 돈은 개별 공개 키(사용자가 개인적으로 생성 및 소유함)에 연관된다.
Figure pct00039
를 초기 공개 키라고 하고
Figure pct00040
를 각각 초기 금액량 단위라고 하면, 초기 상태는 아래와 같다.
Figure pct00041
이는 시스템에 공통적으로 알려진 것으로 여겨진다.
2. 지불. pk를 현재 a ≥ 0 금액 단위를 갖는 공개 키라고 하고, pk'를 다른 공개 키라고 하고, a'를 a 이하의 음수가 아닌 수라고 하자. 이어서, (유효한) 지불(
Figure pct00042
)은, 일부 추가 정보와 함께 a' 금액 단위를 pk에서 pk'으로 이체하는 것을 특정하는, pk에 대한 디지털 서명이다. 기호에 있어서,
Figure pct00043
여기서, I는 유용하지만 민감하지 않은 것으로 여겨지는 임의의 추가 정보(예를 들어, 시간 정보 및 지불 식별자)를 나타내며,
Figure pct00044
는 민감한 것으로 여겨지는 임의의 추가 정보(예를 들어, 지불 이유, pk와 pk'의 소유자들의 아이덴티티 등일 수 있음)를 나타낸다.
pk(또는 그 소유자)는 지불자를 가리키고, 각 pk'(또는 그 소유자)는 수취인을 가리키고, a'은 지불(
Figure pct00045
) 금액을 가리킨다.
지불을 통한 무료 가입. 사용자들은 자신의 고유한 공개/비밀 키 쌍들을 생성함으로써 원할 때마다 시스템에 참여할 수 있다는 점에 주목한다. 이에 따라, 상술한 지불(
Figure pct00046
)에서 나타나는 공개 키(pk')는, 이전에 어떠한 돈도 "소유"한 적이 없는 새롭게 생성된 공개 키일 수 있다.
3. 마술 원장. 이상화된 시스템에서, 모든 지불은, 유효하며, 모든 사람이 다음과 같은 것을 볼 수 있도록 "하늘에 게시된"(posted on the sky) 지불 세트의 변조 방지 리스트에 표시된다.
Figure pct00047
각 블록(PAYr + 1)은 블록(PAYr)의 출현 이후에 이루어진 모든 지불 세트로 이루어진다. 이상적인 시스템에서는, 고정된(또는 유한한) 시간 후에 새로운 블록이 나타난다.
논의
* 더욱 일반적인 지불 및 소비되지 않은 트랜잭션 출력. 보다 일반적으로, 공개 키(pk)가 금액(a)을 소유하는 경우, pk의 유효 지불(
Figure pct00048
)은,
Figure pct00049
로 되는 한 금액(
Figure pct00050
)을 키들(
Figure pct00051
)에 각각 이체할 수 있다.
비트코인 및 유사 시스템에서, 공개 키(pk)에 의해 소유되는 돈은 별도의 금액들로 분리되며, pk에 행해진 지불(
Figure pct00052
)은 이러한 분리된 금액(a)을 전체적으로 이체해야 한다. pk가 a의 분율(a'< a)만을 다른 키에 이체하려는 경우, 소비되지 않은 트랜잭션 출력인 잔액도 다른 키, 가능한 경우엔 pk 자체에 이체해야 한다.
알고랜드는, 또한, 금액들이 분리된 키들과 함께 동작한다. 그러나, 알고랜드의 새로운 양태에 중점을 두기 위해, 단일 금액이 연관되어 있는 키 및 지불의 더욱 간단한 형태를 고수하는 것이 개념적으로 더 간단하다.
* 현재 상태. 이상화된 체계는, 시스템의 현재 상태(즉, 각 공개 키가 얼마만큼의 금액 단위를 갖는지)에 대한 정보를 직접 제공하지 않다. 이 정보는 마술 원장으로부터 추론될 수 있다.
이상적인 시스템에서, 능동적 사용자는, 최신 상태 정보를 지속적으로 저장하고 업데이트하며, 그렇지 않은 경우에는 처음부터 또는 마지막으로 연산한 시점으로부터 그 정보를 재구성해야 한다(그러나, 나중에는, 사용자들이 효율적인 방식으로 현재 상태를 재구성할 수 있도록 알고랜드를 증강하는 방법을 보여준다).
* 보안 및 "프라이버시". 디지털 서명은, 누구도 다른 사용자의 지불을 위조할 수 없음을 보장한다. 지불(
Figure pct00053
)에서, 공개 키와 금액은 숨겨져 있지 않지만, 민감 정보(
Figure pct00054
)는 숨겨져 있다. 실제로는,
Figure pct00055
만이
Figure pct00056
에서 보이고, H는 이상적인 해시 함수이고,
Figure pct00057
는 랜덤한 256-비트 값이므로,
Figure pct00058
를 단순히 추측하는 것보다 양호한
Figure pct00059
가 무엇인지를 알아낼 방법이 없다. 그러나,
Figure pct00060
가 무엇인지 증명하기 위해서는(예를 들어, 지불 이유를 증명하기 위해서는), 지불자가 단순히
Figure pct00061
를 공개할 수 있다. 공개된
Figure pct00062
의 정확성은,
Figure pct00063
를 연산하고 그 결과 값을
Figure pct00064
의 최종 항목과 비교함으로써 검증될 수 있다. 실제로, H는 충돌 복원력이 있으므로,
Figure pct00065
이도록 제2 값(
Figure pct00066
)을 찾기가 어렵다.
2.3 기본 개념 및 표기법
키, 사용자, 및 소유자. 달리 명시하지 않는 한, 각 공개 키(간략하게 "키")는, 장기적이고, 고유성 특성이 있는 디지털 서명 체계와 관련이 있다. 시스템에 미리 있는 다른 공개 키(j)가 i에게 지불을 행하는 경우에는 공개 키(i)가 시스템에 참여한다.
색상의 경우, 키들을 개인화한다. 키(i)를 "남자"라고 칭하고, i가 정직하다고 말하며, i가 메시지 등을 전송하고 수신한다. 사용자는 키와 동의어이다. 키가 속하는 사람으로부터 키를 구별하려면, 각각 "디지털 키"와 "소유자"라는 용어를 사용한다.
무허가 및 허가된 시스템. 시스템은, 디지털 키가 언제든지 자유롭게 참여할 수 있고 소유자가 다수의 디지털 키를 소유할 수 있는 경우에는 무허가이며, 그렇지 않으면 허가된다.
고유한 표현. 알고랜드의 각 오브젝트는 고유한 표현을 갖는다. 특히, 각 세트(
Figure pct00067
)는, 미리 특정된 방식으로 순서화되며, 예를 들어, 먼저 x에 있어서 사전식으로, 다음으로 y 등에 있어서 사전식으로 순서화된다.
등속 시계. 글로벌 시계는 없으며, 오히려, 각 사용자가 자신의 고유한 시계를 갖는다. 사용자 시계들은 어떤 식으로든 동기화될 필요가 없다. 그러나, 이들 모두가 등속을 갖는다고 가정한다.
예를 들어, 사용자(i)의 시계에 따라 오후 12시일 때, 다른 사용자(j)의 시계에 따라 오후 2시 30분일 수 있지만, i의 시계에 따라 12시 1분일 때에는, j의 시계에 따라 2시 31분일 것이다. 즉, "1분은 모든 사용자에 대해 동일(충분히 본질적으로 동일)하다".
라운드. 알고랜드는, 라운드라고 하는 논리 단위들(r = 0, 1, ...)로 조직된다.
라운드를 나타내기 위해 위첨자들을 지속적으로 사용한다. 숫자가 아닌 양(Q)(예를 들어, 스트링, 공개 키, 세트, 디지털 서명 등)이 라운드(r)를 가리킨다는 점을 나타내기 위해서는, 간단히 Qr을 쓴다. Q가 (숫자로서 해석될 수 있는 이진 스트링과는 대조적으로) 실제 숫자인 경우에만,
Figure pct00068
을 써서, 기호(r)가 Q의 지수로서 해석될 수 없다.
라운드(a의 시작)(r>0)에서, 모든 공개 키들의 세트는 PKr이고, 시스템 상태는
Figure pct00069
이며,
여기서,
Figure pct00070
는 공개 키(i)에 대하여 사용될 수 있는 금액이다. PKr은 Sr로부터 추론될 수 있으며, Sr은 각 공개 키(i)에 대해 다른 구성요소를 특정할 수도 있다는 점에 주목한다.
라운드(0)에 대하여, PK0은 초기 공개 키들의 세트이고, S0은 초기 상태이다. PK0과 S0 모두는 시스템에서 공통적으로 알려져 있다고 추정된다. 간략하도록, 라운드(r)의 시작시,
Figure pct00071
Figure pct00072
가 있다.
라운드(r)에서, 시스템 상태는 Sr로부터 Sr+1로 천이한다. 기호로는, 아래와 같다.
라운드(r): Sr → Sr+1
지불. 알고랜드에서, 사용자들은 계속 지불을 행한다(그리고 지불을 서브섹션 2.7에서 설명하는 방식으로 전파한다). 사용자(
Figure pct00073
)의 지불(
Figure pct00074
)은, 이상적 시스템에서와 동일한 포맷 및 의미론을 갖는다. 즉,
Figure pct00075
이다.
지불(
Figure pct00076
)은, (1) 지불액(a)이
Figure pct00077
이하이고 (2) r'<r에 대하여 어떠한 공식 페이세트(PAYr')에서도 보이지 않으면, 라운드(r)에서 개별적으로 유효하다(간략하게는, 라운드-r 지불이다)(후술하는 바와 같이, 제2 조건은,
Figure pct00078
가 아직 발휘되지 않았음을 의미한다).
i의 라운드-r 지불의 세트는, 이들의 금액 합이 최대
Figure pct00079
이면 전체적으로 유효하다.
페이세트. 라운드-r 페이세트(P)는, 각 사용자(i)마다, P에서의 i의 지불(없을 수도 있음)이 전체적으로 유효하면 라운드-r 지불의 세트이다. 모든 라운드-r 페이세트의 세트는
Figure pct00080
이다. 라운드-r 페이세트(P)는, P의 어떠한 수퍼세트도 라운드-r 페이세트가 아니면 최대이다.
사실상, 지불(
Figure pct00081
)이, 또한 라운드(
Figure pct00082
)를 특정하며(
Figure pct00083
), 음수가 아닌 일부 고정된 정수(k)에 대하여
Figure pct00084
를 벗어난 어떠한 라운드에서도 유효일 수 없음을 제안한다(주석 3: 이는,
Figure pct00085
가 "실행"되었는지 여부를 확인하는 것을 간략화한다(즉, 일부 페이세트(PAYr)가
Figure pct00086
를 포함하는지 여부를 결정하는 것을 간략화하고, k=0인 경우,
Figure pct00087
이고
Figure pct00088
이면, i는
Figure pct00089
를 다시 제출해야 한다)).
공식 페이세트. 모든 라운드(r)에 대하여, 알고랜드는, 라운드의 공식 페이세트인, (후술하는 방식으로) 단일 (비어있을 수 있는) 페이세트(PAYr)를 공개적으로 선택한다(본질적으로, PAYr은 "실제로" 발생한 라운드-r 지불을 나타낸다).
이상적 시스템(및 비트코인)에서와 같이, (1) 새로운 사용자(j)가 시스템에 진입하는 유일한 방식은, 주어진 라운드(r)의 공식 페이세트(PAYr)에 속하는 지불의 수취인이 되는 것이고, (2) PAYr은, 현재 라운드의 상태(Sr)로부터 다음 라운드의 상태(Sr+1)를 결정한다. 기호로는, 아래와 같다.
Figure pct00090
구체적으로,
1. 라운드(r+1)의 공개 키들의 세트(PKr + 1)는, PAYr의 지불에서 최초로 보이는 모든 수취인 키의 세트와 PKr의 통합으로 이루어지고,
2. 라운드(r+1)에서 사용자(i)가 소유하는 금액은
Figure pct00091
, 즉, i가 이전 라운드에서 소유한 금액(
Figure pct00092
이면 0) 및 PAYr의 지불에 따라 i에게 지불된 금액(
Figure pct00093
)의 합이다.
요약하면, 이상적인 시스템에서와 같이, 각 상태(Sr+1)는 아래와 같이 이전 지불 이력으로부터 추론될 수 있다.
Figure pct00094
2.4. 블록 및 증명된 블록
Algorand0에서, 라운드(r)에 대응하는 블록(Br)은, r 자체, 라운드(r)의 지불 세트(PAYr), 설명될 양(
Figure pct00095
), 및 이전 블록의 해시(H(Br-1))를 특정한다. 따라서, 고정된 블록(B0)서 시작하여, 아래와 같은 기존의 블록체인을 갖고 있다.
Figure pct00096
알고랜드에서, 블록의 인증성은 사실상 별도의 정보인 "블록 증명서"(
Figure pct00097
)에 의해 보증되며, 이러한 증명서는 Br을 증명된 블록(
Figure pct00098
)으로 되게 한다. 따라서, 마술 원장은 아래와 같은 증명된 블록들의 시퀀스에 의해 구현된다.
Figure pct00099
논의. 알 수 있는 바와 같이,
Figure pct00100
은,
Figure pct00101
에 대한 디지털 서명들의 세트, SVr의 대부분의 구성원들의 디지털 서명, 및 그러한 구성원들의 각각이 실제로 SVr에 속한다는 증거로 이루어진다. 물론, 증명서(
Figure pct00102
)를 블록 자체에 포함시킬 수 있지만, 이를 별도로 유지하는 것이 개념적으로 더 명확하다.
비트코인에서 각 블록은, 특별한 특성을 충족해야 하며, 즉, "크립토 퍼즐의 솔루션을 포함해야 하며", 이는 블록 생성을 연산 집약적으로 만들고 포크가 불가피하면서 드물지 않게 발생하게 한다. 대조적으로, 알고랜드의 블록체인은, 두 가지 주요 이점이 갖는데, 최소 연산으로 생성되며, 압도적으로 높은 확률로 포크되지 않는다는 점이다. 각 블록(Bi)은 블록체인에 진입하자마자 안전하게 최종적으로 된다.
2.5. 수용가능한 실패 확률
알고랜드의 보안을 분석하기 위해, 확률(F)을 특정하고, 이를 이용하여 무언가 잘못되었다는 것(예를 들어, 검증자 세트(SVr)가 정직한 다수를 갖지 않음)을 기꺼이 수용한다. 암호화 해시 함수(H)의 출력 길이의 경우와 마찬가지로, F도 파라미터이다. 그러나, 그 경우에서와 같이, F를 구체적인 값으로 설정하여, 알고랜드에서 실제로 충분한 보안과 충분한 효율성을 동시에 누릴 수 있다는 사실을 보다 직관적으로 파악할 수 있는 것이 유용하다. F는 원하는 대로 설정될 수 있는 파라미터임을 강조하기 위해, 제1 실시예 및 제2 실시예에서, 아래와 같이 각각 설정한다.
F = 10-12 및 F = 10-18.
논의. 10-12는 실제로 1조 중의 1 미만이며, 이러한 F 선택은 본 발명의 응용 분야에 적합한 것으로 고려한다는 점에 주목한다. 10-12는, 적대자가 정직한 사용자의 지불을 위조할 수 있는 확률이 아니라는 점을 강조하고자 한다. 모든 지불은 디지털 서명되므로, 적절한 디지털 서명이 사용되는 경우, 지불 위조 가능성은 10-12보다 훨씬 낮으며 실제로는 기본적으로 0이다. F 확률로 기꺼이 용납할 수 있는 좋지 않은 사건은 알고랜드의 블록체인이 포크되는 것이다. F 설정 및 1분 길이의 라운드에서는, 190만년에 (대략) 한 번처럼 드물게 알고랜드의 블록체인에서 포크가 발생할 것으로 예상된다는 점에 주목한다. 반대로, 비트코인에서는, 포크가 상당히 자주 발생한다.
요구가 많은 사람은, F를 더욱 작은 값으로 설정할 수 있다. 이를 위해, 제2 실시예에서는, F를 10-18로 설정하는 것을 고려한다. 블록이 1초마다 생성된다고 가정하면, 1018은 지금까지 즉 빅뱅부터 현재 시각까지 우주에서 소요된 예상 시간(초)이라는 점에 주목한다. 따라서, F=10-18인 경우, 블록이 1초로 생성되면, 우주의 나이에 걸쳐 한번의 포크를 볼 것으로 예상된다.
2.6. 적대적 모델
알고랜드는 매우 적대적 모델에서 안전하게 설계되었다. 이를 설명한다.
정직하고 악의적인 사용자. 사용자는, 자신의 모든 프로토콜 지침을 따르고 메시지를 완벽하게 송수신할 수 있으면 정직하다. 사용자는, 자신의 규정된 지침에서 임의로 벗어날 수 있다면 악의적이다(즉, 분산 연산의 관점에서 비잔틴이다).
대적자. 대적자는, 색상에 따라 개인화되는 효율적인 (기술적으로는 다항식-시간) 알고리즘으로서, (자신이 손상시킬 수 있는 사용자들의 수의 상한에만 영향을 받는) 자신이 원하는 어느 때라도 자신이 원하는 임의의 사용자를 악의적으로 만들 수 있다.
대적자는, 모든 악의적인 사용자를 완전히 제어하고 완벽하게 조율한다. 대적자는, 모든 메시지의 송수신을 포함하여 사용자를 대신하여 모든 행동을 취하며, 사용자를 규정된 지침에서 임의의 방식으로 벗어나게 할 수 있다. 또는 대적자는, 단순히 메시지를 송수신하는 손상된 사용자를 격리할 수 있다. 적대자가 사용자에게 취하게 하는 행동에 의해 i의 악의성이 발생할 수 있음에도 불구하고, 다른 어떠한 이도 사용자(i)가 악의적이라는 점을 자동으로 학습하지 못한다는 점을 분명히 한다.
그러나, 이러한 강력한 적대자는,
* 무한한 연산 능력이 없으며, 무시할만한 확률을 제외하고 정직한 사용자의 디지털 서명을 성공적으로 위조할 수 없고,
* 정직한 사용자들 간의 메시지 교환을 어떠한 식으로든 간섭할 수 없다.
또한, 정직한 사용자를 공격할 수 있는 적대자의 능력은 다음에 따르는 가정 중 하나에 의해 한정된다.
정직한 대다수의 돈. 정직한 대다수의 돈(HMM; Honest Majority of Money) 가정의 연속체, 즉, 각각의 음이 아닌 정수 k와 실수 h>1/2을 고려한다.
HHMk > h : 모든 라운드(r)의 정직한 사용자들은, 라운드(r-k)의 시스템에서 모든 돈의 h보다 큰 분율을 소유하였다.
논의. 모든 악의적인 사용자가 (단일 엔티티인 적대자에 의해 제어되는 것처럼) 자신의 행동을 완벽하게 조율한다고 가정하는 것은 다소 비관적인 가설이다. 너무 많은 개인들 간의 완벽한 조율은 달성하기 어렵다. 아마도, 조율은 악의적인 플레이어들의 별도의 그룹들 내에서만 발생한다. 그러나, 악의적인 사용자들이 누릴 수 있는 조율 수준에 대해 확신할 수 없으므로, 후회하는 것보다는 안전한 게 낫다.
적대자가 사용자를 비밀리에, 동적으로, 그리고 즉시 손상시킬 수 있다고 가정하는 것도 비관적이다. 결국, 현실적으로, 사용자의 작업을 완전히 제어하려면 시간이 걸린다.
예를 들어, HMMk > h 가정은, 예를 들어, (평균적으로) 라운드가 1분에 구현되면, 주어진 라운드에서의 대부분의 돈이 k=120인 경우에는 적어도 2시간 동안 k=10,000인 경우에는 적어도 1주일 동안 정직한 이들에게 남아있음을 의미한다.
HMM 가정 및 이전의 정직한 대다수의 연산력 가정은, 연산력이 돈으로 구입될 수 있으므로, 악의적인 사용자들이 대부분의 돈을 소유하면, 대부분의 연산력을 취득할 수 있다는 의미에서 관련된다는 점에 주목한다.
2.7. 통신 모델
메시지 전파, 즉, 유일한 통신 수단으로서 "피어-투-피어 가십"을 그려볼 수 있다(주석 4: 본질적으로, 비트코인에서와 같이, 사용자가 메시지(m)를 전파할 때, 처음으로 m을 수신하는 모든 능동 사용자(i)는, 자신이 m을 포워딩하는 적절하게 적은 수의 능동 사용자들인 자신의 "이웃들"로부터 확인응답을 수신할 수 있을 때까지 그 이웃들을 랜덤하게 독립적으로 선택한다. m의 전파는, 어떠한 사용자도 처음으로 m을 수신하지 않을 때 종단된다). 본질적으로, 정직한 사용자에 의해 전파되는 각 메시지(m)가 모든 정직한 사용자에게 m의 길이에 의존하는 주어진 시간량 내에 도달한다고 가정한다(m이 정직한 사용자들의 충분히 높은 퍼센트에 도달하면 충분하다).
3 전통적인 환경에서의 BA 프로토콜(BA*)
이미 강조한 것처럼, 비잔틴 합의는 알고랜드의 핵심 요소이다. 실제로, 이는 포크에 의한 영향을 받지 않는 이러한 BA 프로토콜을 사용하는 것이다. 그러나, 알고랜드는, 강력한 적대자를 막기 위해, 새로운 플레이어-교체가능성 제약을 충족하는 BA 프로토콜에 의존해야 한다. 또한, 알고랜드가 효율적으로 되도록, 이러한 BA 프로토콜은 매우 효율적이어야 한다.
BA 프로토콜은, 이상화된 통신 모델인 완전한 동기식 네트워크(SC 네트워크)를 위해 처음 규정되었다. 이러한 모델은 BA 프로토콜을 보다 간단하게 설계하고 분석할 수 있게 한다. 이에 따라, 이 섹션에서는, 플레이어 교체가능성 문제를 모두 무시하며 SC 네트워크를 위한 새로운 BA 프로토콜인 BA*를 도입한다. 프로토콜(BA*)은 별도의 가치를 제공한다. 실제로, 이것은 지금까지 알려진 SC 네트워크를 위한 가장 효율적인 암호화 BA 프로토콜이다.
이것을 알고랜드 프로토콜 내에서 사용하기 위해서는, BA*를 약간 수정하여 다른 통신 모델과 컨텍스트를 고려한다.
BA*가 동작하는 모델과 비잔틴 합의의 개념을 회상하는 것으로 시작한다.
3.1 동기 완전 네트워크 및 일치 적대자
SC 네트워크에서는, 각 적분 시각(r=1, 2,...)에 똑딱거리는 공통 클록이 있다.
각 짝수 시각 클릭(r)에서, 각 플레이어(i)는, 자신을 포함하여 각 플레이어(j)에게 단일 메시지(
Figure pct00103
)(비어 있는 메시지일 수 있음)를 즉각적으로 동시에 전송한다.
Figure pct00104
각각은, 전송자(i)의 아이덴티티와 함께 플레이어(j)에 의한 시각 클릭(r+1) 때 올바르게 수신된다.
다시 한 번, 통신 프로토콜에서, 플레이어는, 자신의 규정된 모든 지침을 따르면 정직하고, 그렇지 않은 경우에는 악의적이다. 모든 악의적인 플레이어는, 특히, 악의적인 플레이어에게 전달되는 모든 메시지를 즉시 수신하고 이러한 플레이어가 전송하는 메시지를 선택하는 적대자에 의해 완전히 제어되고 완벽하게 조율된다.
적대자는, 악의적 플레이어의 수의 상한(t)에만 적용될 수 있는, 자신이 원하는 임의의 정직한 사용자를 자신이 원하는 임의의 홀수 시각 클릭에서 즉시 악의적으로 만들 수 있다. 즉, 적대자는, 평소와 같이 전달되는, "정직한 사용자(i)에 의해 이미 전송된 메시지를 간섭할 수 없다".
또한, 적대자는, 각 짝수 라운드에서 현재 정직한 플레이어들이 전송하는 메시지를 즉시 볼 수 있고 이 정보를 즉시 사용하여 악의적인 플레이어들이 동시에 전송하는 메시지들을 선택하는 추가 기능을 갖는다.
3.2. 비잔틴 합의의 개념
비잔틴 합의의 개념은, 이진 경우에, 즉, 모든 초기값이 비트로 이루어지는 경우에 처음 도입되었을 수 있다. 그러나, 이것은 임의의 초기값들로 빠르게 확장되었다. BA 프로토콜에 의하면, 임의의 값 하나를 의미한다.
정의 3.1.
동기식 네트워크에서, P는 n-플레이어 프로토콜이라고 하고, 플레이어 세트는 플레이어들 간에 공통으로 알려져 있고, t는
Figure pct00105
인 것처럼 양수이다. P는, 플레이어들 중 최대 t가 악의적이고 모든 플레이어(i)가 초기값(
Figure pct00106
)으로 시작되는 실행에 있어서, 특별한 기호(
Figure pct00107
)(각각, V={0,1}에 대한 것임)를 포함하지 않는 값들(V)의 모든 세트에 대하여, 모든 정직한 플레이어(j)가 확률 1로 중단되면, 적어도
Figure pct00108
의 확률로 다음에 따르는 두 가지 조건을 충족하도록 값(
Figure pct00109
)을 출력하는, 건전성(
Figure pct00110
)을 갖는 임의의 값(각각 이진)(n, f)-비잔틴 합의 프로토콜이라고 한다.
1. 합의:
Figure pct00111
= 모든 정직한 플레이어(i)에 대한 out이도록
Figure pct00112
가 존재한다.
2. 일관성: 만약 모든 플레이어(i)에 대한 어떤 값(
Figure pct00113
)이 있다면, out = v이다.
out을 본 발명의 P의 출력이라고 하고, each out을 플레이어(i)의 출력이라고 한다.
3.3. BA 개념 #
본 발명의 BA 프로토콜에서, 플레이어는, 주어진 단계에서 주어진 메시지를 얼마나 많은 플레이어에게 전송하였는지를 카운트해야 한다. 이에 따라, 전송될 수 있는 가능한 각 값(v)에 대하여,
Figure pct00114
(또는, s가 명백한 경우 단순히
Figure pct00115
)는, 단계(s)에서 i가 플레이어(j)로부터 v를 수신한 그 플레이어의 수이다.
플레이어의 수가 n인 경우, 플레이어(i)는 각각의 플레이어(j)로부터 정확히 하나의 메시지를 수신한다는 점을 상기하면, 모든 i 및 s에 대해,
Figure pct00116
이다.
3.4. 새로운 이진 BA 프로토콜(BBA*)
이 섹션에서는, 새로운 이진 BA 프로토콜인 BBA*를 제시하며, 이는 플레이어들의 2/3을 초과하는 플레이어의 정직에 의존하며, 매우 빠르고, 악의적 플레이어들이 어떤 짓을 하든지, 그 메인 루프의 각 실행은 평범하게 실행될 뿐만 아니라 플레이어들이 확률(1/3)에 합의하게 한다.
BBA*에서, 각 플레이어는, 고유한 서명 특성을 충족하는 디지털 서명 체계의 자신의 고유한 공개 키를 갖고 있다. 이 프로토콜은 완전한 동기식 네트워크에서 실행되도록 되어 있으므로, 플레이어(i)가 자신의 각 메시지를 서명할 필요가 없다.
디지털 서명은, 단계(3)에서 충분히 일반적인 랜덤 비트를 생성하는 데 사용된다(알고랜드에서는, 디지털 서명이 다른 모든 메시지를 인증하는 데에도 사용된다).
이 프로토콜은, 최소한의 설정을 필요로 하는데, 즉, 플레이어의 키와는 무관한 공통 랜덤 스트링(r)을 필요로 한다(알고랜드에서는, r이 사실상 양(Qr)에 의해 대체된다).
프로토콜(BBA*)은, 플레이어들이 불린(Boolean) 값을 반복적으로 교환하는 3-단계 루프이며, 상이한 플레이어들이 상이한 시간에 이 루프를 종료할 수 있다. 플레이어(i)는, 소정의 단계에서 특수 값(0*) 또는 특수 값(1*)을 전파함으로써 이 루프를 종료하므로, 모든 플레이어가 향후 모든 단계에서 i로부터 각각 0과 1을 수신하는 "것처럼" 지시한다(대안으로, 다른 플레이어(i)로부터 플레이어(j)에 의해 수신된 최종 메시지는 비트 b라고 가정한다. 이어서, i로부터 어떠한 메시지도 수신하지 않는 임의의 단계에서, j는 i가 자신에게 비트 b를 전송한 것처럼 기능한다).
이 프로토콜은, 3-단계 루프가 몇 번 실행되었는지를 나타내는 카운터(
Figure pct00117
)를 사용한다. BBA*의 시작시,
Figure pct00118
이다(
Figure pct00119
를 글로벌 카운터라고 생각할 수 있지만, 이것은, 루프가 실행될 때마다 각각의 개별 플레이어에 의해 사실상 증가된다).
n≥3t+1이 있으며, 여기서 t는 악의적 플레이어들의 가능한 최대 수이다. 이진 스트링(x)은, (선행 0을 가질 수 있는) 이진 표현이 x인 정수로 식별되며, lsb(x)는 x의 최하위 비트를 나타낸다.
프로토콜 BBA*
(통신) 단계 1. [코인-고정-To-0 단계] 각 플레이어(i)가 bi를 전송한다.
Figure pct00120
이면, i가 bi = 0을 설정하고, 0*을 전송하고, outi = 0을 출력하고, 중단한다.
Figure pct00121
이면, i가 bi = 1을 설정한다.
그 외에는, i가 bi = 0을 설정한다.
(통신) 단계 2. [코인-고정- To-1 단계] 각 플레이어(i)가 bi를 전송한다.
Figure pct00122
이면, i가 bi = 1을 설정하고, 1*을 전송하고, outi = 1을 출력하고, 중단한다.
Figure pct00123
이면, i가 bi = 0을 설정한다.
그 외에는, i가 bi = 0을 설정한다.
(통신) 단계 3. [코인-실제로-뒤집힌 단계] 각 플레이어(i)가 bi
Figure pct00124
를 전송한다.
Figure pct00125
이면, i가 bi = 0을 설정한다.
Figure pct00126
이면, i가 bi = 1을 설정한다.
3.3. 그 외에는, Si={단계 3에서 i에게 적절한 메시지를 전송한 이
Figure pct00127
}라고 하고,
i가
Figure pct00128
를 설정하고,
Figure pct00129
를 1씩 증가시키고, 단계(1)로 복귀한다.
정리 3.1. n ≥ 3t + 1일 때마다, BBA*는 건전성(1)을 갖는 이진 (n,t)-BA 프로토콜이다.
정리 3.1의 증거는, https://people.csail.mit.edu/silvio/Selected-ScientificPapers/DistributedComputation/BYZANTINEAGREEMENTMADETRIVIAL.15 pdf에서 찾을 수 있다.
3.5 등급화된 콘센서스 및 프로토콜(GC)
임의의 값에 대하여, 비잔틴 합의보다 훨씬 약한 콘센서스의 개념을 상기하자.
정의 3.2. P를, 모든 플레이어의 세트가 공통적으로 알려져 있으며, 각 플레이어(i)가 임의의 초기값(
Figure pct00130
)을 비밀리에 알고 있는 프로토콜이라고 하자.
n 플레이어의 모든 실행에 있어서, 이들 중 최대 t가 악의적이면, 모든 정직한 플레이어(i)가 값-등급 쌍
Figure pct00131
의 출력을 중단하는 P를, (n,t)-등급화된 콘센서스 프로토콜이라고 하며, 여기서, 다음에 따르는 세 개의 조건을 충족하도록
Figure pct00132
이다.
1. 모든 정직한 플레이어(i, j)에 대하여,
Figure pct00133
2. 모든 정직한 플레이어(i, j)에 대하여,
Figure pct00134
3. 일부 값(v)에 대하여
Figure pct00135
이면, 모든 정직한 플레이어(i)에 대하여
Figure pct00136
이고
Figure pct00137
이다.
다음에 따르는 2-단계 프로토콜(GC)은 문헌에서의 등급화된 콘센서스 프로토콜이다. 섹션 4.1의 프로토콜(
Figure pct00138
)의 단계들과 일치시키기 위해, 2와 3을 GC의 단계들로 각각 명명한다(실제로,
Figure pct00139
의 제1 단계는 다른 것과 관련이 있으며, 즉, 새로운 블록을 제안하는 것이다).
프로토콜(GC)
단계 2. 각 플레이어(i)는
Figure pct00140
를 모든 플레이어에게 전송한다.
단계 3. 각 플레이어(i)는,
Figure pct00141
인 경우에만 스트링(x)을 모든 플레이어에게 전송한다.
출력 결정. 각 플레이어(i)는 다음과 같이 연산된 쌍(vi, gi)을 출력한다.
* 일부 x에 대하여,
Figure pct00142
이면, vi=x 및 gi=2이다.
* 일부 x에 대하여,
Figure pct00143
이면, vi=x 및 gi=1이다.
* 그 외에는, vi=
Figure pct00144
이고, gi=1이다.
프로토콜(GC)은, 문헌에서의 프로토콜이므로, 다음에 따르는 정리가 적용되는 것으로 알려져 있다.
정리 3.2.
Figure pct00145
이면, GC는 (n, t)-등급화된 브로드캐스트 프로토콜이다.
3.6. 프로토콜(BA*)
이제, 이진 BA 프로토콜(BBA*) 및 등급화된-콘센서스 프로토콜(GC)을 통해 임의-값 BA 프로토콜(BA*)을 설명한다. 아래에서, 각 플레이어(i)의 초기값은
Figure pct00146
이다.
프로토콜(BA*)
단계 1 및 2. 각 플레이어(i)는 쌍(vi, gi)을 연산하기 위해
Figure pct00147
입력시 GC를 실행한다.
단계 3,... 각 플레이어(i)는, 비트(outi)를 연산하기 위해 gi = 2이면 초기값 입력을 0으로 하고 그 외에는 1로 하여 BBA*를 실행한다.
출력 결정. 각 플레이어(i)는 outi = 0이면 vi를 출력하고, 그렇지 않으면
Figure pct00148
를 출력한다.
정리 3.3. n ≥ 3t + 1일 때마다, BA*는 건전성이 1인 (n, t)-BA 프로토콜이다.
증명. 먼저, 일관성을 증명한 다음 합의를 증명한다.
일관성 증거. 소정의 값(
Figure pct00149
)에 대해,
Figure pct00150
라고 가정한다. 이어서, 등급화된 콘센서스의 특성(3)에 의해, GC 실행 후에, 모든 정직한 플레이어가 (v, 2)를 출력한다. 이에 따라, 0은, BBA* 실행의 종료시 모든 정직한 플레이어의 초기 비트이다. 따라서, 이진 비잔틴 합의의 합의 특성에 의해, BA* 실행의 종료시, 모든 정직한 플레이어에 대해 outi = 0이다. 이는 BA*에서 각각의 정직한 플레이어(i)의 출력이 vi = v임을 의미한다.
Figure pct00151
합의 증거. BBA*는 이진 BA 프로토콜이므로,
(A) 모든 정직한 플레이어(i)에 대하여 outi = 1, 또는
(B) 모든 정직한 플레이어(i)에 대하여 outi = 0이다.
A의 경우, 모든 정직한 플레이어는 BA*에서
Figure pct00152
를 출력하므로, 합의가 유지된다. 이제 B의 경우를 고려한다. 이 경우에, BBA*의 실행시, 적어도 하나의 정직한 플레이어(i)의 초기 비트는 0이다(실제로, 모든 정직한 플레이어의 초기 비트가 1이면, BBA*의 일관성 특성에 의해, 모든 정직한 j에 대해 outj = 1이다). 이에 따라, GC의 실행 후, i는 소정의 값(v)에 대한 쌍(v, 2)을 출력한다. 따라서, 등급화된 콘센서스의 특성(1)에 의해, 모든 정직한 플레이어(j)에 대해 gj > 0이다. 이에 따라, 등급화된 콘센서스의 특성(2)에 의해, 모든 정직한 플레이어(j)에 대해 vj = v이다. 이것은, BA*의 종료시, 모든 정직한 플레이어(j)가 v를 출력한다는 것을 의미한다. 따라서, B의 경우에도 합의가 유지된다.
Figure pct00153
일관성과 합의가 모두 유지되므로, BA*는 임의-값 BA 프로토콜이다.
Figure pct00154
프로토콜(BA*)은, 가십 네트워크에서도 동작하며, 실제로, 알고랜드가 예상되는 매우 적대적인 모델에서 보안을 유지하는 데 중요한 플레이어 교체가능성 특성을 충족한다.
BBA*와 BA*의 플레이어 교체가능성. 이제, 피어-투-피어 가십을 통한 통신이 플레이어 교체가능성을 충족하는 네트워크에서 프로토콜들(BA* 및 BBA*)이 실행되도록 구성될 수 있는 이유에 대한 일부 직관을 제공하고자 한다. 구체적으로, 네트워크에 10M 명의 사용자가 있고, BBA*(또는 BA*)의 각 단계(x)는 비밀 암호화 추첨을 통해 랜덤하게 선택되었으며 이에 따라 단계(x)에서 메시지를 전송할 자격이 있음을 증명하는 자격증명이 있는 10,000명의 플레이어로 구성된 위원회에 의해 실행된다고 가정한다. 주어진 단계에서 전송되는 각 메시지는, 단계 번호를 특정하고, 그 전송자에 의해 디지털 서명되고, 그 전송자가 해당 단계에서 발언할 자격이 있음을 증명하는 자격증명을 포함한다고 가정한다.
우선, 정직한 플레이어들의 퍼센트(h)가 2/3보다 충분히 큰 경우(예를 들어, 75%), 압도적인 확률로, 각 단계에서 선택된 위원회는 필요로 하는 2/3의 정직한 대다수를 갖는다.
또한, 10,000개의 강력하게 랜덤으로 선택된 위원회가 각 단계에서 변경된다는 사실은, BBA* 또는 BA*의 올바른 동작을 방해하지 않는다. 실제로, 어느 프로토콜에서, 단계(s)의 플레이어(i)는 단계(s-1)에서 주어진 메시지(m)를 수신한 다수에만 반응한다. 우리는 가십 네트워크에 있으므로, 단계(s-1)에서 전송되는 모든 메시지는, 단계(s)에서 플레이하도록 선택된 사용자를 포함하는 모든 사용자에게 (이러한 직관의 목적을 위해 즉시) 도달한다. 또한 단계(s-1)에서 전송되는 모든 메시지는, 단계 번호를 특정하고, 전송자가 실제로 단계(s-1)에서 발언할 자격이 있었다는 자격증명을 포함하기 때문이다. 이에 따라, 사용자가 단계(s-1)에서도 선택되었는지 여부에 상관없이, 단계(s)에서 플레이하도록 선택된 사용자(i)는, 올바른 단계(s-1) 메시지를 수신하게 한 다수를 정확하고 완벽하게 카운트할 수 있다. 사용자가 지금까지 모든 단계를 플레이하였는지 여부는 전혀 중요하지 않다. 모든 사용자는, "같은 상황에" 있으므로, 다른 사용자에 의해 쉽게 교체될 수 있다.
4. 알고랜드의 두 개의 실시예
논의된 바와 같이, 매우 높은 수준으로, 알고랜드의 라운드가 다음과 같이 이상적으로 진행된다. 먼저, 랜덤하게 선택된 사용자인 리더가 새로운 블록을 제안하고 배포한다(이 프로세스는, 초기에 소수의 잠재적 리더를 선택한 다음 시간의 적어도 양호한 분율로, 단일 공통 리더의 출현을 보장하는 것을 포함한다). 둘째, 랜덤하게 선택된 사용자들의 위원회가 선택되고, 리더에 의해 제안된 블록에 대한 비잔틴 합의에 도달한다(이 프로세스는, BA 프로토콜의 각 단계가 별도로 선택된 위원회에 의해 실행되는 것을 포함한다). 이어서, 합의된 블록은 위원회 구성원들의 주어진 임계값(TH)에 의해 디지털 서명된다. 이들 디지털 서명은, 어떤 것이 새로운 블록인지를 모든 사람이 확신하도록 전파된다(이는, 서명자의 자격증명을 순환시키고, 새로운 블록의 해시만을 인증하고, 일단 그 해시가 명확해지면 모든 사람이 블록 학습을 보장받는 것을 포함한다).
다음 두 개의 섹션에서는, 기본 알고랜드 설계의 두 개의 실시예이면서 대다수가 정직한 사용자(
Figure pct00155
)라는 적절한 가정하에 각각 기능하는
Figure pct00156
Figure pct00157
를 제시한다. 섹션 7에서는, 대다수가 정직한 돈(
Figure pct00158
)이라는 가정하에 기능하도록 이러한 실시예들을 채택하는 방법을 보여준다.
Figure pct00159
은 단지 위원회 구성원들의 2/3가 넘는 구성원들이 정직한 것으로 고려한다. 또한
Figure pct00160
에서, 비잔틴 합의에 도달하기 위한 단계들의 수는 적절하게 높은 수로 제한되어 있으므로, 단계들의 고정된 수 내에서 압도적인 확률로 합의에 도달하는 것을 보장한다(그러나,
Figure pct00161
의 단계들보다 긴 시간을 잠재적으로 필요로 한다). 마지막 단계에 의해 아직 합의에 도달하지 않은 원격 예의 경우, 위원회는 항상 유효한 빈 블록에 합의한다.
Figure pct00162
는, 위원회의 정직한 구성원들의 수가 항상 고정된 임계값(tH) 이상인 것으로 고려한다(이는, 압도적인 확률로, 위원회 구성들의 적어도 2/3이 정직함을 보장한다). 또한,
Figure pct00163
는, 단계들의 임의의 수로 비잔틴 합의에 도달할 수 있게 한다(그러나,
Figure pct00164
보다 잠재적으로 짧은 시간이 걸린다).
당업자는 이러한 기본 실시예들의 많은 변형이 도출될 수 있음을 인식할 것이다. 특히,
Figure pct00165
가 주어진 경우, 단계들의 임의의 수로 비잔틴 합의에 도달할 수 있도록
Figure pct00166
를 쉽게 수정할 수 있다.
양측 실시예는 다음에 따르는 공통 핵심, 표기법, 개념, 및 파라미터를 공유한다.
4.1. 공통 핵심
목표. 이상적으로, 각 라운드(r)에 대해, 알고랜드는 다음에 따르는 특성들을 충족해야 한다.
1. 완벽한 정확성. 모든 정직한 사용자는 동일한 블록(Br)에 합의한다.
2. 완전성 1. 확률(1)로, 블록(Br)은 정직한 사용자에 의해 선택되었다(실제로, 악의적인 사용자는, 페이세트가 자신의 "친구들"의 지불만을 포함하는 블록을 항상 선택할 수 있다).
물론, 완벽한 정확성만 보장하는 것은 대수롭지 않은 것이며, 모든 사람은 항상 공식 페이세트(PAYr)를 비워두는 것으로 선택한다. 그러나, 이 경우, 시스템의 완전성은 0이다. 그러나, 악의적인 사용자가 존재하는 가운데 완벽한 정확성과 완전성(1)을 모두 보장하는 것은 쉽지 않다. 따라서, 알고랜드는 보다 현실적인 목표를 채택한다. 비공식적으로, h는 정직한 사용자들의 퍼센트(h > 2/3)를 나타낸다고 하면, 알고랜드의 목표는, 압도적인 확률로, h에 가까운 완벽한 정확성과 완전성을 보장하는 것이다.
완전성에 비해 정확성에 특권을 부여하는 것은 합리적인 선택으로 보이며, 한 라운드에서 처리되지 않은 지불은 다음 라운드에 처리될 수 있지만, 가능하다면 포크를 피해야 한다.
주도된 비잔틴 계약. 과도한 시간과 통신을 잠깐 무시함으로써, 완벽한 정확성을 다음과 같이 보장할 수 있다. 라운드(r)의 시작시, 각 사용자(i)는 자신의 후보 블록(
Figure pct00167
)을 제안한다. 이어서, 모든 사용자는 후보 블록들 중 하나의 후보 블록에 대해서만 비잔틴 합의에 도달한다. 이러한 도입에 따르면, 사용된 BA 프로토콜은, 2/3의 정직한 다수를 필요로 하며, 플레이어 교체가 가능하다. 각 단계는, 어떠한 내부 변수도 공유하지 않는 검증자들의 랜덤하게 선택된 작은 세트에 의해 실행될 수 있다.
그러나, 이 방안은 제대로 기능하지 못한다. 이는, 정직한 사용자들에 의해 제안되는 후보 블록들이 서로 완전히 다를 가능성이 크기 때문이다. 실제로 각각의 정직한 사용자는 다른 지불을 본다. 따라서, 서로 다른 정직한 사용자들이 보는 일련의 지불이 많이 중복될 수 있지만, 모든 정직한 사용자들이 동일한 블록을 제안할 가능성은 낮다. 이에 따라, BA 프로토콜의 일관성 합의는 결코 구속력이 없으며, 단지 합의 하나만이 존재하므로, 합의는 항상 양호한 블록이 아닌
Figure pct00168
에 도달하였을 수 있다.
Figure pct00169
는 다음과 같이 이 문제점을 피한다. 먼저, 라운드(r)의 리더인
Figure pct00170
가 선택된다. 이어서,
Figure pct00171
는 자신의 고유한 후보 블록(
Figure pct00172
)을 전파한다. 마지막으로, 사용자들은 자신들이
Figure pct00173
로부터 실제로 수신하는 블록에 대한 합의에 도달한다.
Figure pct00174
가 정직할 때마다, 완전한 정확성과 완전성(1)이 모두 유지되기 때문에,
Figure pct00175
는,
Figure pct00176
가 h에 가까운 확률로 정직함을 보장한다.
리더 선택. 알고랜드에서, 제r 블록은 아래와 같은 형태로 된다.
Figure pct00177
도입부에서 이미 언급했듯이, 양(Qr - 1)은, 강력한 적대자에 의해 본질적으로 조작될 수 없도록 신중하게 구성된다(이 섹션의 뒷부분에서는, 이것이 왜 그런지에 대한 일부 직관을 제공한다). 라운드(r)의 시작시, 모든 사용자는, 모든 이전 라운드의 사용자들의 세트, 즉,
Figure pct00178
를 추론하게 되는 지금까지의 블록체인(
Figure pct00179
)을 알고 있다. 라운드(r)의 잠재적 리더는, 아래와 같이 되도록 사용자(i)이다.
Figure pct00180
.
설명해본다. 기본 디지털 서명 체계의 메시지 검색가능성 특성 때문에 양(Qr -1)이 블록(Br-1)으로부터 추론될 수 있다는 점에 주목한다. 또한, 기본 서명 체계는 고유성 특성을 충족한다. 따라서,
Figure pct00181
는 i 및 r에 고유하게 연관된 이진 스트링이다. 이에 따라, H는 랜덤 오라클이므로,
Figure pct00182
는 i 및 r에 고유하게 연관된 랜덤 256-비트 길이의 스트링이다.
Figure pct00183
앞에 있는 "." 기호는, 소수(이 경우, 이진)점이어서,
Figure pct00184
는 i와 r에 고유하게 연관된 0 내지 1의 랜덤 256-비트 숫자의 이진 확장이다. 따라서, ri가 p 이하일 확률은 본질적으로 p이다.
확률(p)은, 압도적인(즉, 1-F) 확률로, 적어도 하나의 잠재적 검증자가 정직하도록 선택된다(사실, p는 이러한 최소 확률로 선택된다).
i는 자신의 고유한 서명을 연산할 수 있는 유일한 사람이므로, 자신이 라운드(1)의 잠재적 검증자인지 여부를 자신만이 결정할 수 있다는 점에 주목한다. 그러나, 자신의 고유한 자격증명(
Figure pct00185
)을 공개함으로써, i는, 라운드(r)의 잠재적 검증자라는 것을 모든 이에게 증명할 수 있다.
리더(
Figure pct00186
)는, 해시 자격증명이 다른 모든 잠재적 리더(j)의 해시 자격증명보다 작은, 즉,
Figure pct00187
인 잠재적 리더로 정의된다.
악의적인
Figure pct00188
가 자신의 자격증명을 공개하지 않을 수 있으므로, 라운드(r)의 올바른 리더는 알려져 있지 않을 수 있으며, 있을 수 없는 타이를 제외하고,
Figure pct00189
가 실제로 라운드(r)의 유일한 리더라는 점에 주목한다.
마지막으로, 중요한 세부 사항을 밝히자면, 사용자(i)는, 적어도 k개 라운드 동안 시스템에 속한 경우에만 라운드(r)의 잠재적 리더 (이에 따라 리더)일 수 있다. 이는, Qr 및 향후의 모든 Q 양의 조작이 불가능함을 보장한다. 실제로, 잠재적 리더들 중 하나가 사실상 Qr을 결정한다.
검증자 선택. 라운드(r)의 각 단계(s>1)는 검증자들의 작은 세트(
Figure pct00190
)에 의해 실행된다. 다시, 각각의 검증자(
Figure pct00191
)는, r 앞의 k개 라운드에서 시스템에 이미 있는 사용자들 중에서 랜덤하게 선택되고, 다시 특수한 양(Qr - 1)을 통해 선택된다. 구체적으로,
Figure pct00192
는, 아래와 같은 경우에
Figure pct00193
의 검증자이다.
Figure pct00194
다시 한 번, i는, 자신이
Figure pct00195
에 속하는지 여부만을 알지만, 이 경우에는, 자신의 자격증명(
Figure pct00196
)을 표시함으로써 이를 증명할 수 있다. 검증자(
Figure pct00197
)는 라운드(r)의 단계(s)에서 메시지(
Figure pct00198
)를 전송하고, 이 메시지는,
Figure pct00199
가 적법한 단계-s 메시지라는 것을 다음 단계의 검증자들(f)이 인식할 수 있도록 자신의 자격증명(
Figure pct00200
)을 포함한다.
확률(p')은,
Figure pct00201
에서, #good를 정직한 사용자들의 수라고 하고 #bad를 악의적인 사용자들의 수라고 하고 압도적인 확률로 다음에 따르는 두 개의 조건이 적용되는 것을 보장하도록 선택된다.
Figure pct00202
실시예에 대하여
(1)
Figure pct00203
(2)
Figure pct00204
, 여기서 n은
Figure pct00205
의 예상 기수성이다.
Figure pct00206
실시예에 대하여
(1)
Figure pct00207
(2)
Figure pct00208
, 여기서 tH는 특정 임계값이다.
이들 조건은, 충분히 높은 확률로, (a) BA 프로토콜의 최종 단계에서, 새로운 블록(Br)을 디지털 서명하는 적어도 주어진 수의 정직한 플레이어들이 있고, (b) 라운드당 한 블록만이 필요한 수의 서명을 가질 수 있고, (c) 사용된 BA 프로토콜이 (각 단계에서) 필요한 2/3의 정직한 다수를 갖는다는 것을 의미한다.
명확하게 블록 생성. 라운드-r 리더(
Figure pct00209
)가 정직하다면, 해당 블록의 형태는 다음과 같다.
Figure pct00210
여기서, 페이세트(PAYr)는 최대이다(모든 페이세트가 정의상 전체적으로 유효함을 상기한다).
그렇지 않은 경우(즉,
Figure pct00211
가 악의적인 경우), Br은 다음에 따르는 두 개의 가능한 형태 중 하나를 갖는다.
Figure pct00212
Figure pct00213
제1 형태에서, PAYr은, (반드시 최대는 아닌) 페이세트이며,
Figure pct00214
일 수 있으며, i는 라운드(r)의 잠재적 리더이다(그러나, i는 리더(
Figure pct00215
)가 아닐 수도 있다. 이는,
Figure pct00216
가 자신의 자격증명을 비밀로 유지하고 자신을 공개하지 않으면 실제로 발생할 수 있다).
제2 형태는, BA 프로토콜의 라운드-r 실행시, 모든 정직한 플레이어가 기본값을 출력할 때 발생하며, 이 값은 이 응용 분야에서 비어있는 블록(
Figure pct00217
)이다(정의에 의하면, BA 프로토콜의 가능한 출력은, 일반적으로
Figure pct00218
로 표시되는 기본값을 포함한다. 섹션 3.2를 참조한다).
페이세트는 양측 경우에서 비어있지만,
Figure pct00219
Figure pct00220
은, 구문적으로 상이한 블록들이며, 두 개의 상이한 상황, 예컨대, "BA 프로토콜의 실행시 모두 원활하게 진행되었다" 및 "BA 프로토콜에서 문제점이 발생하였으며, 기본값이 출력되었다"는 상황에서 각각 발생한다는 점에 주목한다.
이제, 블록(Br)의 생성이
Figure pct00221
의 라운드(r)에서 어떻게 진행되는지를 직관적으로 설명한다. 제1 단계에서, 각각의 적격 플레이어, 즉, 각 플레이어(
Figure pct00222
)는 자신이 잠재적 리더인지를 확인한다. 이 경우, i는, 지금까지 본 모든 지불 및 현재 블록체인(
Figure pct00223
)을 사용하여, 최대 지불 세트(
Figure pct00224
)를 비밀리에 준비하고 후보 블록(Br =
Figure pct00225
)을 비밀리에 조립하도록 요청된다. 즉, 사용자는, 방금 준비된 페이세트를 제2 구성요소로서
Figure pct00226
내에 포함할 뿐만 아니라, 최종 블록(Br-1)의 제3 구성요소인 Qr -1의 자신의 고유한 서명도 제3 구성요소로서 포함한다. 마지막으로, 사용자는, (a) 자신의 후보 블록(
Figure pct00227
), (b) 자신의 후보 블록의 자신의 적절한 서명(즉,
Figure pct00228
의 해시의 자신의 서명), 및 (c) 자신이 실제로 라운드(r)의 잠재적 검증자임을 증명하는 자신의 고유한 자격증명(
Figure pct00229
)을 포함하는 자신의 라운드-r-단계-1 메시지(
Figure pct00230
)를 전파한다.
(정직한 i가 자신의 메시지(
Figure pct00231
)를 생성할 때까지, 적대자는 i가 잠재적인 검증자라는 단서를 갖고 있지 않는다는 점에 주목한다. 적대자는, 정직한 잠재적 리더들을 손상시키고자 한다면, 랜덤한 정직한 플레이어들도 손상시킬 수 있다. 그러나, 일단 그가
Figure pct00232
를 보게 되면, 이것은 i의 자격증명을 포함하고 있으므로, 적대자는 i를 알게 되어 i를 손상시킬 수 있지만, 바이러스처럼 전파되는
Figure pct00233
가 시스템의 모든 사용자에게 도달하는 것을 막을 수는 없다).
제2 단계에서, 선택된 각 검증자(
Figure pct00234
)는 라운드의 리더를 식별하려 한다. 특히, j는, 자신이 수신한 적절한 단계-1 메시지(
Figure pct00235
)에 포함된 단계-1 자격증명(
Figure pct00236
)을 취하며, 이들을 모두 해시하고, 즉,
Figure pct00237
를 연산하고, 해시가 구문적으로 최소인 자격증명(
Figure pct00238
)을 찾고,
Figure pct00239
를 라운드(r)의 리더로 간주한다.
고려되는 각 자격증명은 Qr -1의 디지털 서명이며,
Figure pct00240
는 i 및 Qr-1에 의해 고유하게 결정되고, H는 랜덤 오라클이므로, 각
Figure pct00241
는 라운드(r)의 각각의 잠재적 리더(i)에 대하여 고유한 랜덤 256비트 길이의 스트링이라는 점을 상기해본다.
이것으로부터, 256-비트 스트링(Qr - 1)이 자체적으로 랜덤하게 독립적으로 선택된다면, 라운드(r)의 모든 잠재적 리더의 해시된 자격증명도 선택될 것이라고 결론 내릴 수 있다. 실제로, 모든 잠재적 리더는 잘 정의되어 있으며, 따라서 이들의 자격증명도 (실제로 연산되었는지 여부에 상관없이) 잘 정의되어 있다. 또한, 라운드(r)의 잠재적 리더들의 세트는 라운드(r-k)의 사용자들의 랜덤한 서브세트이며, 정직한 잠재적 리더(i)는 항상 i의 자격증명을 포함하는 메시지(
Figure pct00242
)를 올바르게 구성하고 전파한다. 따라서, 정직한 사용자들의 퍼센트가 h이므로, 악의적인 잠재적 리더들이 무엇을 하든지 간에(예를 들어, 자신의 자격증명을 공개하거나 숨기든), 최소 해시된 잠재적인-리더 자격증명은, 모든 이에 의해 라운드(r)의 리더(
Figure pct00243
)라고 반드시 식별되는 정직한 사용자에게 속한다. 이에 따라, 256-비트 스트링(Qr-1)이 자체적으로 랜덤하게 독립적으로 선택되었다면, 정확하게 h의 확률로, (a) 리더(
Figure pct00244
)는 정직하고, (b) 모든 정직한 단계-2 검증자(j)에 대해서는
Figure pct00245
이다.
실제로, 해시된 자격증명은, 물론, 랜덤하게 선택되지만, 랜덤하게 독립적으로 선택되지 않은 Qr -1에 의존한다. 그러나, 신중한 분석을 통해, 라운드의 리더가 h에 충분히 근접한 확률 h', 즉,
Figure pct00246
로 정직함을 보장하도록 Qr -1이 충분히 조작불가능함을 보장한다. 예를 들어, h = 80%이면, h' > .7424이다.
라운드의 리더를 식별하였으므로(리더(
Figure pct00247
)가 정직할 때 올바르게 수행함), 단계-2 검증자의 작업은, 리더의 블록이라고 여기는 것을 초기값으로서 사용하여 BA* 실행을 시작하는 것이다. 실제로, 요구되는 통신량을 최소화하기 위해, 검증자(
Figure pct00248
)는, 리더, 그 블록의 해시, 즉,
Figure pct00249
를 제외하고, 자신이
Figure pct00250
(j가 리더라고 여기는 사용자)로부터 실제로 수신한 블록(Bj)을, 비잔틴 프로토콜에 대한 자신의 입력값(
Figure pct00251
)으로서 사용하지 않는다. 따라서, BA 프로토콜의 종료시, 최종 단계의 검증자들은, 원하는 라운드-r 블록(Br)을 연산하지 않고, H(Br)를 연산(인증 및 전파)한다. 이에 따라, H(Br)는 BA 프로토콜의 최종 단계의 충분히 많은 검증자에 의해 디지털 서명되므로, 시스템의 사용자들은, H(Br)가 새로운 블록의 해시임을 인식할 것이다. 그러나, 사용자들은, 또한, 블록(Br) 자체를 검색(또는 실행이 비동기식이기 때문에, 대기)해야 하며, 적대자의 행동에 관계없이, 프로토콜이 실제로 이용가능함을 보장한다.
비동기성 및 타이밍.
Figure pct00252
Figure pct00253
는 상당한 정도의 비동기성을 갖는다. 이는, 적대자가 전파되는 메시지의 전달을 예약하는 데 큰 자유를 갖기 때문이다. 또한, 라운드의 총 단계 수에 제한이 있는지 여부에 상관없이, 실제로 수행된 단계의 수에 따라 변동이 존재한다.
사용자(i)는
Figure pct00254
의 자격증명을 학습하자마자, Qr -1을 연산하고, 라운드(r)에 대한 작업을 시작하여, 자신이 잠재적 리더인지 또는 라운드(r)의 일부 단계(s)에서의 검증자인지를 확인한다.
논의된 비동기성에 비추어 볼 때 i가 단계(s)에서 행동하고 있다고 가정하면, i는 자신이 행동하기 전에 충분한 정보를 가고 있음을 보장하도록 다양한 전략에 의존한다.
예를 들어, 사용자는, (
Figure pct00255
에서와 같이) 이전 단계의 검증자들로부터 최소한 주어진 수의 메시지를 수신하기를 기다릴 수 있거나, (
Figure pct00256
에서와 같이) 이전 단계의 충분히 많은 검증자의 메시지를 수신하는 것을 보장하도록 충분한 시간을 기다릴 수 있다.
시드(Qr) 및 룩-백 파라미터(k). 이상적으로, 양(Qr)은 랜덤이며 독립적이어야 하지만, 적대자에 의해 충분히 조작될 수 없는 것으로 충분하다는 점을 상기해본다.
언뜻 보면, H(PAYr - 1)와 일치시키도록 Qr -1을 선택할 수 있다. 그러나, 기본 분석에 따르면, 악의적인 사용자들이 이 선택 메커니즘을 활용할 수 있다는 점이 밝혀졌다(주석 5: 라운드(r-1)의 시작에 있다. 따라서,
Figure pct00257
는 공개적으로 알려져 있으며, 적대자는 자신이 제어할 수 있는 잠재적 리더가 누구인지를 개인적으로 알고 있다. 적대자가 사용자들의 10%를 제어하고, 매우 높은 확률로, 악의적인 사용자(w)가 라운드(r-1)의 잠재적 리더라고 가정한다. 즉,
Figure pct00258
가 너무 작아서 정직한 잠재적 리더가 실제로 라운드(r-1)의 리더일 가능성이 높다고 가정한다. (비밀 암호화 추첨 메커니즘을 통해 잠재적 리더를 선택하므로, 적대자는 정직한 잠재적 리더가 누구인지 모른다는 점을 상기해본다). 그러므로, 적대자는, 자신이 원하는 페이세트(PAY')를 선택하는 선망의 위치에 있고, 이것을 라운드(r-1)의 공식 페이세트로 되게 한다. 그러나, 사용자는 더 많은 일을 할 수 있다. 사용자는, 또한, 높은 확률로, 자신의 악의적인 사용자들 중 한 명이 또한 라운드(r)의 리더이어서, PAYr가 무엇인지를 자유롭게 선택할 수 있음을 보장할 수 있다(*). (그리고 등등. 적어도 오랫동안, 즉, 이러한 고 확률 이벤트가 실제로 발생하는 한 그러하다). (*)를 보장하기 위해, 적대자는 다음과 같이 행동한다. PAY'를 적대자가 라운드(r-1)에 대해 선호하는 페이세트라고 하자. 그런 다음, 사용자는, H(PAY')를 연산하고, 이미 일부 악의적 플레이어(z)에 대해,
Figure pct00259
가 특히 작은 지를, 즉, 매우 높은 확률로 z가 라운드(r)의 리더가 될 정도로 작은지를 확인한다. 이 경우, 사용자는 w에게 후보 블록을
Figure pct00260
이도록 선택할 것을 지시한다. 아니면, 그는, 일부 악의적인 사용자(z)에 대하여(또는 심지어 일부 고정된 사용자(z)에 대하여)
Figure pct00261
가 역시 매우 작아질 때까지, 두 명의 다른 악의적인 사용자(x와 y)가 새로운 지불(
Figure pct00262
)을 서로에 대하여 계속 생성하게 한다. 이 실험은 매우 빨리 중단될 것이다. 그리고, 그렇게 되는 경우, 적대자는 w에게 후보 블록(
Figure pct00263
)을 제안하도록 요청한다). 일부 추가적인 노력은, 전통적인 블록 양을 기반으로 한 수많은 다른 대안이, 악의적 리더들이 매우 빈번함을 확실히 하도록 적대자에 의해 쉽게 이용될 수 있음을 보여준다. 이것이 적대자에 의해 조작될 수 없음을 증명할 수 있도록 우리의 새로운 양(Qr)을 특정하게 유도적으로 정의한다. 즉,
Br이 비어있는 블록이 아니면
Figure pct00264
이고, 그 외에는
Figure pct00265
이다.
Qr의 이러한 구조가 기능하는 이유의 직관은 다음과 같다. Qr -1이 랜덤하게 독립적으로 선택되는 순간을 가정한다. 그렇다면, Qr도 마찬가지인가?
Figure pct00266
가 정직할 때, 답은 (대략적으로 말하자면) 예이다. 그 이유는,
Figure pct00267
이 랜덤 함수이기 때문이다. 그러나
Figure pct00268
가 악의적인 경우, Qr은 더 이상 Qr -1
Figure pct00269
로부터 분명하게 정의되지 않는다. Qr에 대해 적어도 두 개의 개별 값이 있다. 하나는 계속
Figure pct00270
이고, 다른 하나는
Figure pct00271
이다. 먼저, 두 번째 선택은 다소 임의적이지만, 두 번째 선택은 절대적으로 필수라고 먼저 주장해 본다. 그 이유는, 악의적
Figure pct00272
가 항상 두 번째 단계의 정직한 검증자들에 의해 완전히 상이한 후보 블록들을 수신할 수 있기 때문이다(주석 6: 예를 들어, "두 번째 단계의 시간이 만료될 때"를 간단하게(그렇지만 극단적으로) 유지하기 위해,
Figure pct00273
는 각 사용자(i)에게 다른 후보 블록(Bi)을 이메일로 직접 전송할 수 있다. 이러한 방식으로, 단계-2 검증자들이 누구이든지 간에, 검증자들은 완전히 상이한 블록들을 수신하였을 수 있다). 일단 이 경우라면, 라운드(r)의 BA 프로토콜을 통해 최종적으로 합의된 블록이 기본 블록이 되며 이에 따라 Qr -1의 디지털 서명을 포함하지 않음을 보장하는 것은 쉽다. 그러나 시스템은 계속되어야 하며, 이를 위해서는, 라운드(r)의 리더가 필요하다. 이 리더가 자동적으로 공개적으로 선택되면, 적대자는 그를 대수롭지 않게 손상시킬 것이다. 이것이 동일한 프로세스를 통해 이전 Qr -1에 의해 선택되면,
Figure pct00274
은 다시 라운드(r+1)에서의 리더로 된다. 구체적으로, 새로운 Q-양, 즉
Figure pct00275
에 적용되는 동일한 비밀 암호화 추첨 메커니즘을 사용하도록 제안한다. 이 양을 H의 출력으로 되게 함으로써, 출력이 랜덤임을 보장하고, r을 H의 제2 입력으로서 포함하면서 H의 다른 모든 사용이 단일 입력 또는 적어도 세 개의 입력을 갖게 함으로써, 이러한 Qr이 독립적으로 선택되는 것을 "보장"한다. 다시 한번, 대체 Qr의 특정한 선택은 중요하지 않으며, 중요한 것은,
Figure pct00276
가 Qr에 대한 두 개의 선택을 갖고, 이에 따라 다른 악의적인 사용자가 다음 리더로 될 가능성을 두 배로 할 수 있다는 점이다.
Qr에 대한 옵션은 악의적인 사용자(
Figure pct00277
)를 제어하는 적대자에게 더 많을 수 있다. 예를 들어, x, y 및 z가 라운드(r)의 잠재적인 3명의 악의적 리더라고 하고 이때
Figure pct00278
이면,
Figure pct00279
는 매우 작다. 즉, 너무 작아서,
Figure pct00280
가 모든 정직한 잠재적 리더의 해시 자격증명보다 작을 가능성이 높다. 이어서, x에게 자신의 자격증명을 숨기도록 요청하면, 적대자는 y를 라운드(r-1)의 리더로 되게 할 가능성이 높다. 이것은 그가 Qr에 대한 다른 옵션, 즉
Figure pct00281
을 가지고 있음을 의미한다. 마찬가지로, 적대자는, z가 라운드(r-1)의 리더가 되게 하고 Qr에 대한 또 다른 옵션, 즉,
Figure pct00282
를 얻도록 x와 y 모두에게 해당 자격증명의 보류를 요청할 수 있다.
그러나, 물론, 적대자가 정직한 잠재적 사용자들의 디지털 서명의 해시를 예측할 수 없기 때문에, 이러한 옵션 및 기타 옵션의 각각은, 0이 아닌 실패 확률을 갖는다.
신중한 마르코프-체인형 분석에 따르면, 적대자가 라운드(r-1)에서 어떤 옵션을 선택하더라도, 적대자가 시스템에서 새로운 사용자를 주입할 수 없다면, 정직한 사용자가 라운드(r+40)의 리더로 될 확률을 h보다 훨씬 낮게 감소시킬 수 없다. 이것이 라운드(r)의 잠재적 리더들이 라운드(r-k)에 이미 존재하고 있는 사용자들로 되는 것을 요구하는 이유이다. 이것은, 라운드(r-k)에서, 적대자가 정직한 사용자가 라운드(r)의 리더로 되는 확률을 크게 변경할 수 없도록 하는 방식이다. 실제로, 라운드(r-k 내지 r)에서 시스템에 어떠한 사용자들을 추가할 수 있는지에 관계없이, 이들은 라운드(r)의 잠재적 리더들(및 더욱 강한 이유로 리더)로 될 수 없다. 따라서, 룩-백 파라미터(k)는 궁극적으로 보안 파라미터이다(섹션 ??에서 살펴보겠지만, 이것은 일종의 "편의 파라미터"일 수도 있다).
임시 키. 무시할만한 확률을 제외하고는 프로토콜의 실행이 포크를 생성할 수 없지만, 적대자는, 적법한 블록(r)이 생성된 후 제r 블록에서 포크를 생성할 수 있다.
대략적으로 말하자면, 일단 Br이 생성되었다면, 적대자는 라운드(r)의 각 단계의 검증자가 누구인지를 학습하였다. 따라서, 적대자는, 이들 모두를 손상시킬 수 있고 이들에게 새로운 블록(
Figure pct00283
)을 증명하도록 강요할 수 있다. 이러한 가짜 블록은 합법적 블록 후에만 전파될 수 있으므로, 주의를 기울인 사용자들은 속지 않을 것이다(주석 7: 주요 TV 네트워크의 뉴스 앵커를 손상시키고, 오늘 클린턴 장관이 마지막 대통령 선거에서 이겼음을 보여주는 뉴스릴을 제작 및 방송하는 것을 고려해 본다. 우리 대부분은 이를 사기로 인식할 것이다. 그러나, 혼란한 상황을 벗어난 누군가는 속을 수도 있다). 그럼에도 불구하고,
Figure pct00284
는 구문상 정확하고, 그 제조를 방지하고자 한다.
우리는 새로운 규칙에 의해 그렇게 한다. 본질적으로, 라운드(r)의 단계(s)의 검증자 세트(
Figure pct00285
)의 구성원들은, 임시 공개 키(
Figure pct00286
)를 사용하여 메시지를 디지털 서명한다. 이들 키는 일회용이며, 이들의 해당 비밀 키들(
Figure pct00287
)은 일단 사용되면 폐기된다. 이러한 방식으로, 검증자가 나중에 손상되면, 적대자는 원래 서명하지 않은 어떠한 것도 서명하도록 검증자에게 강요할 수 없다.
당연히, 적대자가 새로운 키(
Figure pct00288
)를 연산하는 것이 불가능하고 이것이 단계(s)에서 사용할 검증자(
Figure pct00289
)의 올바른 임시 키라고 정직한 사용자를 확신시키는 것은 불가능하다는 점을 보장해야 한다.
4.2. 표기법, 개념, 및 파라미터의 공통 요약
표기법
* r ≥ 0: 현재 라운드 수.
* s ≥ 1: 라운드(r)의 현재 단계 번호
* Br: 라운드(r)에서 생성된 블록
* PKr: 라운드(r-1)의 종료와 라운드(r)의 시작에 의한 공개 키들의 세트.
* Sr: 라운드(r-1)의 종료 및 라운드(r)의 시작까지의 시스템 상태(주석 8: 동기식이 아닌 시스템에서, "라운드(r-1)의 종료"와 "라운드(r)의 시작"이라는 개념은 신중하게 정의되어야 한다. 수학적으로, PKr 및 Sr은 초기 상태(S0) 및 블록(
Figure pct00290
)으로부터 연산된다.
* PAYr: Br에 포함된 페이세트
*
Figure pct00291
: 라운드-r 리더.
Figure pct00292
은 라운드(r)의 페이세트(PAYr)를 선택한다(그리고 다음 Qr을 결정한다).
* Qr: 라운드(r)의 시드로서, 라운드(r)의 종료시 생성되고 라운드(r+1)에 대한 검증자를 선택하는 데 사용되는 양(즉, 이진 스트링). Qr은 블록들의 페이세트들과는 독립적이며
Figure pct00293
에 의해 조작될 수 없다.
* SVr,s: 라운드(r)의 단계(s)에 대하여 선택된 검증자들의 세트
* SVr: 라운드(r)에 대해 선택된 검증자들의 세트.
Figure pct00294
.
* MSVr,s 및 HSVr,s: 각각,
Figure pct00295
Figure pct00296
의 악의적인 검증자들의 세트 및 정직한 검증자들의 세트
*
Figure pct00297
Figure pct00298
: 각각, 각 SVr,1에 있는 잠재적 리더들의 예상 수 및 s>1에 대하여 각 SVr,s에 있는 검증자들의 예상 수
n1 << n, 이것은, SVr,1에서 적어도 하나의 정직한 구성원이 필요하지만, s>1에 대하여 각 SVr,s에 있는 적어도 정직한 구성원들의 대다수에 해당함에 주목한다.
*
Figure pct00299
: 2/3보다 큰 상수. h는 시스템의 정직 비이다. 즉, 사용된 가정에 따라 정직한 사용자 또는 정직한 돈의 분율은 각 PKr에서 적어도 h이다.
* H: 임의의 오라클로서 모델링된 암호화 해시 함수
*
Figure pct00300
: H의 출력과 길이가 같은 특수 스트링
*
Figure pct00301
: 허용 오차 확률을 특정하는 파라미터. 확률(≤F)은 "무시할 수 있는" 것으로 간주되고, 확률(≥1-F)은 "압도적인" 것으로 간주된다.
*
Figure pct00302
: 라운드(r)의 리더(
Figure pct00303
)가 정직할 확률. 이상적으로는, Ph = h이다. 적대자가 존재하는 경우, ph의 값은 분석에서 결정된다.
*
Figure pct00304
: 룩-백 파라미터. 즉, 라운드(r-k)는, 라운드(r)에 대한 검증자들이 선택되는 곳으로서, 즉,
Figure pct00305
이다(주석 9: 엄밀히 말하면, "r-k"는 "max{0, r-k}"이어야 한다).
*
Figure pct00306
: 라운드(r)의 제1 단계에 대하여, 라운드(r-k)의 사용자는
Figure pct00307
의 확률로 SVr,1에 있도록 선택된다.
*
Figure pct00308
: 라운드(r)의 각 단계(s>1)에 대하여, 라운드(r-k)의 사용자는
Figure pct00309
의 확률로 SVr,s에 있도록 선택된다.
* CERTr: Br에 대한 증명서. 이것은 라운드(r)의 적절한 검증자들로부터의 H(Br)의 tH 서명들의 세트이다.
*
Figure pct00310
는 증명된 블록이다.
사용자(i)는, 증명된 블록의 양측 부분을 보유(및 성공적으로 검증)하면 Br을 알고 있다. 상이한 사용자들이 보는 CERTr은 다를 수 있다는 점에 주목한다.
*
Figure pct00311
: 사용자(i)가 Br을 알고 있는 (현지) 시간이다. 알고랜드 프로토콜에서, 각 사용자는 자신의 고유한 시계를 갖고 있다. 다른 사용자들의 시계는 동기화될 필요가 없지만, 속도는 동일해야 한다. 분석만을 목적으로 할 때, 기준 시계를 고려하여 기준 시계에 대한 플레이어들의 관련 시간을 측정한다.
*
Figure pct00312
Figure pct00313
: 각각, 사용자(i)가 라운드(r)의 단계(s)의 실행을 시작하고 종료하는 (현지) 시간.
*
Figure pct00314
및 λ: 본질적으로, 각각, 단계(1)를 실행하는 데 필요한 시간 및 알고랜드 프로토콜의 다른 임의의 단계에 필요한 시간에 대한 상한.
파라미터(
Figure pct00315
)는 단일 1MB 블록을 전파하기 위한 시간을 상한으로 한다.
파라미터(λ)는 단계(s>1)에서 검증자당 하나의 작은 메시지를 전파하기 위한 시간을 상한으로 한다.
Λ ≤ 4λ라고 가정한다.
개념
* 검증자 선택
각 라운드(r) 및 단계(s>1)에 대하여,
Figure pct00316
이다. 각 사용자(
Figure pct00317
)는, 자신의 장기간 키를 사용하여 서명을 개인적으로 연산하고,
Figure pct00318
인지 여부를 결정한다.
Figure pct00319
이면,
Figure pct00320
은 i의 (r, s) 자격증명이며,
Figure pct00321
에 의해 간단하게 표시된다.
라운드(r)의 제1 단계에서,
Figure pct00322
Figure pct00323
도 비슷하게 정의되며, 이때, p는 p1로 교체된다.
Figure pct00324
의 검증자는 잠재적 리더이다.
* 리더 선택.
사용자(
Figure pct00325
)는, 모든 잠재적 리더(
Figure pct00326
)에 대해
Figure pct00327
인 경우
Figure pct00328
에 의해 표시되는 라운드(r)의 리더이다. 두 명의 플레이어의 자격증명의 해시들이 비교될 때마다, 가능성이 거의 없는 타이의 경우, 프로토콜은 잠재적 리더들의 (장기간 공개 키들)에 따라 구문적으로 타이들을 끊는다.
정의에 따르면, 플레이어(
Figure pct00329
)의 자격증명의 해시값도 PKr -k의 모든 사용자 중에서 가장 작다. 잠재적 리더는, 다른 잠재적 리더의 자격증명을 보지 않고는 자신이 리더인지 아닌지를 개인적으로 결정할 수 없다는 점에 주목한다.
해시값들은 랜덤하게 균일하므로, SVr,1이 비어 있지 않은 경우,
Figure pct00330
는 항상 존재하며 적어도 h의 확률로 정직하다. 파라미터(n1)는, 각각의 SVr,1이 압도적인 확률로 비어 있지 않음을 보장하도록 충분히 크다.
* 블록 구조.
비어 있지 않은 블록은
Figure pct00331
의 형태이며, 비어 있는 블록은
Figure pct00332
의 형태이다.
비어 있지 않은 블록은, 이 라운드에서 지불이 이루어지지 않거나 리더가 악의적인 경우 빈 페이세트(PAYr)를 여전히 포함할 수 있다는 점에 주목한다. 그러나, 비어 있지 않은 블록은,
Figure pct00333
의 아이덴티티,
Figure pct00334
의 자격증명(
Figure pct00335
), 및
Figure pct00336
가 모두 적시에 공개되었음을 의미한다. 이 프로토콜은, 리더가 정직하면 블록이 압도적인 확률로 비어 있지 않음을 보장한다.
* 시드(Qr).
Br이 비어 있지 않으면,
Figure pct00337
이고, 그렇지 않으면
Figure pct00338
이다.
파라미터
* 다양한 파라미터 간의 관계.
- 라운드(r)의 검증자들과 잠재적 리더들은 PKr -k의 사용자들로부터 선택되며, 여기서, k는, 적대자가 F보다 양호한 확률로 라운드(r-k-1)에서 Qr -1을 다시 예측할 수 없도록 선택되며, 그 외에는, 라운드(r-k)에 대하여 악의적인 사용자들을 도입할 수 있고, 이들 모두는 라운드(r)의 잠재적 리더들/검증자들이며, SVr,s의 악의적 리더 또는 악의적 다수가 원하는 일부 단계(s)에 대하여 이러한 리더 또는 다수를 갖는데 성공한다.
- 각 라운드(r)의 단계(1)에 대해, n1은 압도적인 확률(
Figure pct00339
)을 갖도록 선택된다.
* 중요한 파라미터의 선택 예.
- H의 출력은 256-비트 길이이다.
- h = 80%, n1 = 35.
- Λ = 1분 및 λ = 15초
* 프로토콜의 초기화.
프로토콜은 시각 0에서 r=0으로 시작한다. "B-1" 또는 "CERT-1"이 없으므로, 구문적으로, B-1은, 제3 구성요소가 Q-1을 특정하는 공개 파라미터이며, 모든 사용자는 시각 0에서 B-1을 알고 있다.
5.
Figure pct00340
이 섹션에서는, 다음에 따르는 가정 하에서 동작하는
Figure pct00341
의 버전을 구성한다.
정직한 대다수의 사용자 가정: 각 PKr의 사용자들 중 2/3가 넘는 사용자들이 정직하다.
섹션 7에서는, 위 가정을 바람직한 정직한 대다수의 돈 가정으로 대체하는 방법을 나타낸다.
5.1. 추가 표기법 및 파라미터
표기법
*
Figure pct00342
: 이진 BA 프로토콜의 단계들의 최대 수, 3의 배수임.
*
Figure pct00343
: 각 시행이
Figure pct00344
의 확률로 1이고 최대 m/3개의 시행이 있을 때 1을 보는 데 필요한 베르누이 시행 횟수를 나타내는 랜덤 변수이다. 모든 시도가 실패하면,
Figure pct00345
이다.
Figure pct00346
는 블록(Br)을 생성하는 데 필요한 시간을 상한으로 하는 데 사용된다.
*
Figure pct00347
: 프로토콜의 종료 조건에 필요한 서명의 수
* CERTr: Br에 대한 증명서. 이것은 라운드(r)의 적절한 검증자들로부터의 H(Br)의 tH 서명들의 세트이다.
파라미터
* 다양한 파라미터 간의 관계
- 라운드(r)의 각 단계(s>1)에 대하여, n은, 압도적인 확률로,
Figure pct00348
Figure pct00349
이도록 선택된다.
h 값이 1에 가까울수록, n은 작아야 한다. 특히, 원하는 조건이 압도적인 확률로 유지되는 것을 보장하도록 체르노프 바운드(의 변형)를 사용한다.
- m은, 압도적인 확률로 Lr < m/3이 되도록 선택된다.
* 중요한 파라미터들의 선택 예
- F = 10-12
-
Figure pct00350
및 m = 180
5.2.
Figure pct00351
에서의 임시 키 구현
이미 언급했듯이, 검증자(
Figure pct00352
)는, 사용 후 즉시 삭제하는 임시 비밀 키(
Figure pct00353
)를 사용하여 임시 공개 키(
Figure pct00354
)에 대해 라운드(r)에서 단계(s)의 자신의 메시지(
Figure pct00355
)를 디지털 서명하고자 한다. 따라서,
Figure pct00356
가 모든 사용자가 i의 서명(
Figure pct00357
)을 검증하는 데 실제로 사용되는 키임을 확인할 수 있는 것을 보장하는 효율적인 방법이 필요하다. 이를, (알고 있는 한) 아이덴티티 기반 서명 체계의 새로운 사용에 의해 행한다.
높은 수준으로, 이러한 체계에서, 중앙 기관(A)은 공개 마스터 키(PMK) 및 대응하는 비밀 마스터 키(SMK)를 생성한다. 플레이어(U)의 아이덴티티(U)가 주어지면, A는, 공개 키(U)에 비해 비밀 서명 키(skU)를 SMK를 통해 연산하고, skU를 U에 개인적으로 제공한다(사실, 아이덴티티 기반 디지털 서명 체계에서, 사용자(U)의 공개 키는 U 자체이다). 이러한 방식으로, A가 디지털 서명을 생성할 수 있도록 자신이 원하는 사용자의 비밀 키를 연산한 후 SMK를 파괴하고 어떠한 연산된 비밀 키도 유지하지 않으면, U는 공개 키(U)와 관련하여 메시지를 디지털 서명할 수 있는 유일한 사람이다. 따라서, "U의 이름"을 아는 누구라도, U의 공개 키를 자동으로 알고 있으므로, (공개 마스터 키(PMK)도 사용할 수 있어서) U의 서명을 검증할 수 있다.
본원에서, 기관(A)은 사용자(i)이고, 가능한 모든 사용자들(U)의 세트는, 예를 들어,
Figure pct00358
에서 라운드-단계 쌍(r, s)과 일치하고, 여기서 r'은 주어진 라운드이고, m+3은 한 라운드 내에서 발생할 수 있는 단계들의 수의 상한이다. 이러한 방식으로,
Figure pct00359
이며, 이에 따라 i의 서명(
Figure pct00360
)을 보는 모든 사람이, 압도적인 확률로, r' 다음에 오는 첫 번째 백만 개 라운드(r)에 대해 그 서명을 즉시 검증할 수 있다.
다시 말하면, i는 먼저 PMK와 SMK를 생성한다. 이어서, 사용자는, PMK가 모든 라운드(
Figure pct00361
)에 대한 i의 마스터 공개 키임을 공개하고, SMK를 사용하여 각 트리플(
Figure pct00362
)에 대해 비밀 키(
Figure pct00363
)를 개인적으로 생성하고 저장한다. 이렇게 완료된 후, 사용자는 SMK를 파괴한다. i는, 자신이
Figure pct00364
의 일부가 아니라고 결정하면, (자신이 라운드(r)의 단계(s)에서 어떠한 메시지도 인증할 것을 프로토콜이 요구하지 않으므로)
Figure pct00365
만을 남겨둘 수 있다. 그렇지 않다면, i는 먼저
Figure pct00366
를 사용하여 자신의 메시지(
Figure pct00367
) 디지털 서명한 다음
Figure pct00368
를 파괴한다.
i는 처음 시스템에 진입할 때 자신의 제1 공개 마스터 키를 공개할 수 있다는 점에 주목한다. 즉, (라운드(r')에서 또는 r'에 가까운 라운드에서) i를 시스템으로 가져오는 동일한 지불(
Figure pct00369
)은, 또한, i의 요청시, 예를 들어, 한 쌍의 형태(
Figure pct00370
)를 포함함으로써 임의의 라운드(
Figure pct00371
)에 대한 i의 공개 마스터 키가 PMK임을 특정할 수 있다.
또한, m+3이 라운드에서 단계들의 최대 수이므로, 라운드는 1분이 걸린다고 가정할 때, 이렇게 생성된 임시 키들의 스태시(stash)가 거의 2년 동안 i를 지속시킨다는 점에 주목한다. 동시에, 이들 임시 비밀 키는 생성하는 데 너무 오래 걸리지 않는다. 32B 키가 있는 타원-곡선 기반 시스템을 사용함으로써, 각 비밀 키가 몇 마이크로초로 연산된다. 따라서, m+3 = 180이면, 모든 180M 비밀 키를 1시간 이내로 연산할 수 있다.
현재 라운드가
Figure pct00372
에 가까워지면, 다음 백만 라운드를 처리하기 위해, i는, 새로운
Figure pct00373
쌍을 생성하고, 예를 들어,
Figure pct00374
이 새로운 블록에 별도의 "트랜잭션"으로서 또는 지불의 일부인 일부 추가 정보로서 진입하게 함으로써 자신의 임시 키들의 다음 스태시가 무엇인지를 통지한다. 이렇게 함으로써, i는, PMK'를 사용하여 다음 백만 라운드에서 i의 임시 서명을 검증해야 함을 모두에게 통지한다. 계속 이러한 식으로 진행된다.
(이러한 기본 방안에 따르면, 아이덴티티 기반 서명을 사용하지 않고 임시 키를 구현하는 다른 방식들이 확실히 가능한다는 점에 주목한다. 예를 들어, 머클 트리를 통해서이다(주석 10: 이 방법에서, i는,
Figure pct00375
라는 각 라운드-단계 쌍(r, s)에 대하여 공개-비밀 키 쌍
Figure pct00376
을 생성한다. 이어서, 이들 공개 키를 정준(canonical) 방식으로 주문하고, 머클 트리의 제j 리프에 제j 공개 키를 저장하고, 루트값(Ri)을 연산하여, 공개한다. i는, 키(
Figure pct00377
)에 관하여 메시지를 서명하려고 할 때, 실제 서명뿐만 아니라 Ri에 관한
Figure pct00378
에 대한 인증 경로도 제공한다. 이 인증 경로는, 또한,
Figure pct00379
가 제j 리프에 저장되어 있음을 증명한다는 점에 주목한다. 이 아이디어를 바탕으로, 나머지 세부 사항을 쉽게 채울 수 있다)).
임시 키를 구현하는 다른 방식들은 (예를 들어, 머클 트리를 통해) 확실히 가능하다.
5.3
Figure pct00380
의 단계를 BA*의 단계와 일치
전술한 바와 같이,
Figure pct00381
의 라운드는 최대 m+3개의 단계를 갖는다.
단계 1. 이 단계에서, 각각의 잠재적 리더(i)는, 자신의 후보 블록(
Figure pct00382
)을 연산하고 자신의 고유한 자격증명(
Figure pct00383
)과 함께 전파한다.
이 자격증명은 i를 명시적으로 식별한다는 점을 상기해본다. 이는,
Figure pct00384
Figure pct00385
때문이다.
잠재적 검증자(i)는, 또한, 자신의 메시지의 일부로서,
Figure pct00386
의 자신의 적절한 디지털 서명을 전파한다. 지불 또는 자격증명을 다루지 않기에, 이러한 i의 서명은 자신의 임시 공개 키(
Figure pct00387
)에 관련되며, 즉,
Figure pct00388
를 전파한다.
본 발명의 규칙을 고려할 때,
Figure pct00389
Figure pct00390
을 전파하는 것이 아니라,
Figure pct00391
를 전파할 수 있었다. 그러나, 분석에 의하면,
Figure pct00392
에 명시 적으로 액세스해야 한다.
단계 2. 이 단계에서, 각 검증자(i)는,
Figure pct00393
를 해시된 자격증명이 가장 작은 잠재적 리더로 설정하고,
Figure pct00394
Figure pct00395
에 의해 제안된 블록으로 설정한다. 효율성을 위해, 직접 Br이 아니라 H(Br)에 합의하기를 원하므로, i는 BA*의 제1 단계에서 전파했을 메시지를 초기값(
Figure pct00396
Figure pct00397
)과 함께 전파한다. 즉, 사용자는, 물론,
Figure pct00398
를 임시 서명한 후 전파한다(즉, 올바른 임시 공개 키, 이 경우,
Figure pct00399
와 관련하여 서명한 후이다). 물론, i는 또한 자신의 자격증명을 송신한다. BA*의 제1 단계는 등급별 콘센서스 프로토콜(GC)의 제1 단계로 이루어지므로,
Figure pct00400
의 단계(2)는 GC의 제1 단계에 해당한다.
단계 3. 이 단계에서, 각 검증자(
Figure pct00401
)는 BA*의 제2 단계를 실행한다. 즉, 사용자는 GC의 제2 단계에서 전송했을 동일한 메시지를 전송한다. 다시 한 번, i의 메시지는, i의 자격증명에 의해 임시 서명되고 이러한 자격증명을 동반한다(이제부터, 검증자가 자신의 메시지를 임시 서명하고 또한 자신의 자격증명을 전파한다는 말을 생략한다.)
단계 4. 이 단계에서, 모든 검증자(
Figure pct00402
)는, GC의 출력(vi, gi)을 연산하고, BA*의 제3 단계, 즉, BBA*의 제1 단계에서 전송했을 동일한 메시지를 임시 서명하고 gi=2이면 초기 비트(0)와 함께 그외에는 초기 비트(1)와 함께 전송한다.
단계
Figure pct00403
. 이러한 단계는, 도달한 경우, BA*의 단계(s-1)에 해당하고, 따라서 BBA*의 단계(s-3)에 해당한다.
본 발명의 전파 모델이 충분히 비동기식이므로, 이러한 단계(s)의 중간에, 블록(Br)이 이미 선택되었다는 것을 입증하는 정보에 의해 검증자(
Figure pct00404
)에 도달할 가능성을 고려해야 한다. 이 경우, i는,
Figure pct00405
의 라운드(r)의 자신의 고유한 실행을 중단하고, 라운드-(r+1) 명령 실행을 시작한다.
이에 따라, BBA*의 단계(s-3)에 대응하는 명령어에 추가하여 검증자(
Figure pct00406
)의 명령어는, BBA*의 실행이 이전 단계(s')에서 정지되었는지를 확인하는 것을 포함한다. BBA*는 코인-고정-to-0 단계에서 또는 코인-고정-to-1 단계에서만 중단할 수 있으므로, 명령어는, 아래의 경우를 구별한다.
A (종료 조건 0): s' - 2 ≡ 0 mod 3 또는
B (종료 조건 1): s' - 2 ≡ 1 mod 3.
실제로, A의 경우, 블록(Br)은 비어 있지 않으므로, i가 적절한 증명서(CERTr)와 함께 Br을 적절하게 재구성하는 것을 보장하도록 추가 명령어가 필요하다. B의 경우, 블록(Br)이 비어 있으므로, i는
Figure pct00407
Figure pct00408
을 설정하고 CERTr을 연산하도록 지시받는다.
i는, 단계(s)를 실행하는 동안, 블록(Br)이 이미 생성되었다는 어떠한 증거도 보지 못하면, BBA*의 단계(s-3)에서 전송했던 것과 동일한 메시지를 전송한다.
단계(m+3). 단계(m+3) 동안,
Figure pct00409
는, 블록(Br)이 이전 단계(s')에서 이미 생성된 것을 본다면, 상술한 바와 같이 진행한다.
그렇지 않으면, BBA*의 단계(m)에서 전송했던 것과 동일한 메시지를 전송하는 것이 아니라, i는, 소유하고 있는 정보에 기초하여 Br 및 해당 증명서(CERTr)를 연산하도록 지시받는다.
사실, 라운드의 단계들의 총 수를 m+3만큼 상한으로 하였다는 점을 상기해본다.
5.4. 실제 프로토콜
라운드(r)의 각 단계(s)에서, 검증자(
Figure pct00410
)는, 자신의 장기간 공개-비밀 키 쌍을 사용하여 자신의 자격증명인
Figure pct00411
및 s=1인 경우의
Figure pct00412
를 생성한다는 점을 상기해본다. 검증자(i)는 자신의 임시 비밀 키(
Figure pct00413
)를 사용하여 (r,s) 메시지(
Figure pct00414
)를 서명한다. 간략화를 위해, r과 s가 명확할 때에는,
Figure pct00415
가 아니라
Figure pct00416
를 써서 라운드(r)의 단계(s)에서 i의 값(x)의 적절한 임시 서명을 나타내고,
Figure pct00417
대신
Figure pct00418
를 써서
Figure pct00419
를 나타낸다.
단계 1: 제안 차단
모든 사용자(
Figure pct00420
)에 대한 지침: 사용자(i)는 Br-1을 알게 되자마자 자신의 라운드(r)의 단계 1을 시작한다.
* 사용자(i)는 Br-1의 제3 구성요소로부터 Qr - 1를 연산하고
Figure pct00421
여부를 확인한다.
*
Figure pct00422
이면, i는 단계(1)의 자신의 고유한 실행을 즉시 중지한다.
*
Figure pct00423
이면, 즉, i가 잠재적 리더라면, 사용자는 지금까지 자신에게 전파된 라운드-r 지불을 모으고 이로부터 최대 페이세트(
Figure pct00424
)를 연산한다. 다음으로, 사용자는 자신의 "후보 블록"인
Figure pct00425
=
Figure pct00426
를 연산한다. 마지막으로, 사용자는 메시지(
Figure pct00427
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00428
)를 파괴한 다음,
Figure pct00429
를 전파한다.
비고. 실제로 단계(1)의 전체 실행을 줄이려면, (r, 1) 메시지가 선택적으로 전파되는 것이 중요하다. 즉, 시스템의 모든 사용자(i)에 대해, 그가 수신하고 성공적으로 검증하는 제1 (r,1) 메시지에 대해(주석 11: 즉, 모든 서명이 정확하고, 블록과 해시가 모두 유효하지만, i는 포함된 페이세트가 제안자에 대해 최대인지 여부를 확인하지 않는다), 플레이어(i)는 그 메시지를 평소대로 전파한다. 플레이어(i)가 수신하고 성공적으로 검증하는 다른 모든 (r,1) 메시지에 대해, 사용자는, 해당 메시지가 포함하고 있는 자격증명의 해시값이 지금까지 수신하고 성공적으로 검증한 모든 (r,1)에 포함된 자격증명의 해시값들 중 가장 작은 경우에만 해당 메시지를 전파한다. 또한, Georgios Vlachos가 제안한 것처럼, 각 잠재적 리더(i)는 또한 자신의 자격증명(
Figure pct00430
)을 개별적으로 전파하는 것이 유용하며, 그러한 작은 메시지들은 블록들보다 빠르게 이동하고, 포함되어 있는 자격증명들이 작은 해시값들을 갖는
Figure pct00431
의 적시 전파를 보장하는 한편, 큰 해시값들을 갖는 메시지들을 빠르게 사라지게 한다.
단계 2: 등급화된 콘센서스 프로토콜(GC)의 제1 단계
모든 사용자(
Figure pct00432
)에 대한 지침: 사용자(i)는 Br-1을 알게 되자마자 자신의 라운드(r)의 단계(2)를 시작한다.
* 사용자(i)는, Br-1의 제3 구성요소로부터 Qr -1을 연산하고,
Figure pct00433
여부를 확인한다.
*
Figure pct00434
이면, i는 단계(2)의 자신의 고유한 실행을 즉시 중지한다.
*
Figure pct00435
이면, i는 시간(
Figure pct00436
)을 기다린 후 다음과 같이 행동한다.
1. 사용자는, 지금까지 수신한 성공적으로 검증된 (r,1)-메시지의 일부인 모든 자격증명(
Figure pct00437
)에 대해
Figure pct00438
이도록 사용자(
Figure pct00439
)를 찾다(주석 12: 본질적으로, 사용자(i)는 라운드(r)의 리더가 사용자(
Figure pct00440
)라고 개인적으로 결정한다).
2. 그가 유효한 메시지(
Figure pct00441
)로부터
Figure pct00442
를 수신하였다면(주석 13: 다시 한 번, 플레이어(
Figure pct00443
)의 서명 및 해시는 모두 성공적으로 검증되고,
Figure pct00444
Figure pct00445
는 라운드(r)에 대한 유효한 페이세트이지만, i는
Figure pct00446
Figure pct00447
에 대하여 최대인지 여부를 확인하지 않는다), i는
Figure pct00448
를 설정하고, 그렇지 않으면
Figure pct00449
를 설정한다.
3. i는, 메시지(
Figure pct00450
)(주석 14: 메시지(
Figure pct00451
)는, 플레이어(i)가
Figure pct00452
를 다음 블록의 해시로 간주하거나 다음 블록이 비어 있는 것으로 간주함을 시그널링한다)를 연산하고, 자신의 임시 키(
Figure pct00453
)를 파괴한 후,
Figure pct00454
를 전파한다.
단계 3: GC의 제2 단계
모든 사용자에 대한 지침(
Figure pct00455
): 사용자(i)는 Br-1을 알게 되자마자 라운드(r)의 자신의 고유한 단계(3)를 시작한다.
* 사용자(i)는 Br-1의 제3 구성요소로부터 Qr -1을 연산하고,
Figure pct00456
여부를 확인한다.
*
Figure pct00457
이면, i는 단계(3)의 자신의 고유한 실행을 즉시 중지한다.
*
Figure pct00458
이면, i는, 시간(
Figure pct00459
)을 기다린 후 다음과 같이 행동한다.
1. 자신이 수신한 모든 유효한 메시지 중에서 이들 메시지의 2/3이 넘는 메시지가
Figure pct00460
의 형태로 되도록 어떠한 모순 없이도 값(
Figure pct00461
)이 존재하면(주석 15: 즉, 플레이어(j)로부터
Figure pct00462
및 상이한
Figure pct00463
를 포함하는 두 개의 유효한 메시지를 각각 수신하지 못했다. 여기서, 이제부터, 이후에 규정되는 종료 조건을 제외하고는, 정직한 플레이어가 주어진 형태의 메시지를 원할 때마다, 서로 모순되는 메시지들은 결코 카운트되지 않거나 유효한 것으로 간주되지 않는다), 메시지(
Figure pct00464
)를 연산한다. 아니라면,
Figure pct00465
를 연산한다.
2. i는 자신의 임시 비밀 키(
Figure pct00466
)를 파괴한 다음
Figure pct00467
를 전파한다.
단계 4: GC의 출력 및 BBA*의 제1 단계
모든 사용자(
Figure pct00468
)를 위한 지침: 사용자(i)는 Br-1을 알게 되자마자 라운드(r)의 자신의 고유한 단계(4)를 시작한다.
* 사용자(i)는 Br-1의 제3 구성요소로부터 Qr -1을 연산하고
Figure pct00469
여부를 확인한다.
*
Figure pct00470
이면, i는 단계(4)의 자신의 고유한 실행을 즉시 중지한다.
*
Figure pct00471
이면, i는, 시간(
Figure pct00472
)을 대기한 후 다음과 같이 행동한다.
1. 사용자는 다음과 같이 GC의 결과인 vi와 gi를 연산한다.
(a) 자신이 수신한 모든 유효한 메시지들 중 2/3를 넘는 메시지가
Figure pct00473
형태이도록 값(
Figure pct00474
)이 존재하면,
Figure pct00475
Figure pct00476
를 설정한다.
(b) 그러나, 자신이 수신한 모든 유효한 메시지들 중에서 1/3을 넘는 메시지가
Figure pct00477
형태이도록 값(
Figure pct00478
)이 존재하면,
Figure pct00479
Figure pct00480
를 설정한다(주석 16: 이것은, (b)의 경우에 v'이, 존재하는 경우, 고유함에 틀림이 없다는 점이 증명될 수 있다).
(c) 그 외에는,
Figure pct00481
Figure pct00482
를 설정한다.
2. 사용자는, 다음과 같이 BBA*의 입력인 bi를 연산한다.
Figure pct00483
이면
Figure pct00484
이고, 그렇지 않으면
Figure pct00485
이다.
3. 사용자는, 메시지(
Figure pct00486
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00487
)를 파괴한 다음,
Figure pct00488
를 전파한다.
단계
Figure pct00489
: BBA*의 코인-고정-To-0 단계
모든 사용자(
Figure pct00490
)에 대한 지침: 사용자(i)는 Br-1을 알게 되자마자 라운드(r)의 자신의 고유한 단계(s)를 시작한다.
* 사용자(i)는 Br-1의 제3 구성요소로부터 Qr -1을 연산하고
Figure pct00491
Figure pct00492
여부를 확인한다.
*
Figure pct00493
인 경우, i는 단계(s)의 자신의 고유한 실행을 즉시 중단한다.
*
Figure pct00494
인 경우, 다음과 같이 행동한다.
- 사용자는, 시간(
Figure pct00495
)이 경과할 때까지 기다린다.
- 종료 조건 0 : 이러한 대기 중 및 임의의 시점에,
(a)
Figure pct00496
와 함께
Figure pct00497
, 즉, 단계(s')가 코인-고정-To-0 단계이고,
(b) i가, 적어도
Figure pct00498
개의 유효한 메시지(
Figure pct00499
Figure pct00500
)를 수신하였고(주석 17: 이러한 플레이어(j)로부터의 메시지는, 플레이어(i)가 1에 대하여 서명하는 j로부터 메시지를 수신하였더라도 카운트된다. 종료 조건 1에 대하여 유사하다. 분석에서 알 수 있듯이, 이는 모든 정직한 사용자가 서로 시간(λ) 내에 Br을 아는 것을 보장하도록 행해진다), 및
(c) i가 v =
Figure pct00501
와 함께 유효한 메시지(
Figure pct00502
)를 수신한 것으로 되도록 스트링(
Figure pct00503
) 및 단계(s')가 존재하면,
i는, 아무 것도 전파하지 않고 즉시 단계(s)(및 실제로 라운드(r)의 단계)의 자신의 고유한 실행을 중지하고,
Figure pct00504
로 설정하고, 자신의 고유한 CERTr을 하위 단계(b)의 메시지들(
Figure pct00505
)의 세트로 되도록 설정한다(주석 18 : 사용자(i)는, 이제 Br을 알고 자신의 고유한 라운드(r)가 완료됨을 안다. 사용자는, 또한, 일반 사용자로서 메시지 전파를 돕지만, (r,s)-검증자로서 어떠한 전파도 개시하지 않는다. 특히, 사용자는, 자신의 CERTr의 모든 메시지를 전파하는 데 일조하였으며, 이는 우리의 프로토콜에 충분하다. 또한, 이진 BA 프로토콜에 대해
Figure pct00506
도 설정해야 하지만, 어쨌든 이 경우에 bi는 필요하지 않다는 점에 주목한다. 향후 모든 지침에 대해서도 유사하다).
- 종료 조건 1: 이러한 대기 중 및 임의의 시점에,
(a')
Figure pct00507
와 함께
Figure pct00508
- 즉, 단계(s')가 코인-고정-To-1 단계이고,
(b') i가 적어도 tH개의 유효한 메시지(
Figure pct00509
Figure pct00510
)(주석 19: 이 경우, vj들이 무엇인지는 중요하지 않음)를 수신한 것으로 되도록 단계(s')가 존재한다면,
i는, 아무것도 전파하지 않고 바로 단계(s)(및 실제로 라운드(r)의 단계)의 실행을 중지하고,
Figure pct00511
로 설정하고, 자신의 고유한 CERTr을 하위 단계(b')의 메시지들(
Figure pct00512
)의 세트로 되도록 설정한다.
- 그렇지 않으면, 대기 종료시, 사용자(i)는 다음을 수행한다.
사용자는, vi를, 자신이 수신한 모든 유효한
Figure pct00513
의 제2 구성요소들의 vj의 다수표로 되도록 설정한다.
사용자는, 다음과 같이 bi를 연산한다.
사용자는, 자신이 수신한 모든 유효한
Figure pct00514
중 2/3를 넘는 메시지가
Figure pct00515
의 형태를 가지면,
Figure pct00516
로 설정한다.
그렇지 않으면, 사용자는, 자신이 수신한 모든 유효한
Figure pct00517
중 2/3를 넘는 메시지가
Figure pct00518
의 형태를 가지면,
Figure pct00519
로 설정한다.
그 외에는, 사용자는
Figure pct00520
로 설정한다.
사용자는, 메시지(
Figure pct00521
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00522
)를 파괴한 다음,
Figure pct00523
를 전파한다.
단계
Figure pct00524
: BBA*의 코인-고정-To-1 단계
모든 사용자(
Figure pct00525
)에 대한 지침: 사용자(i)는 Br-1을 알게 되자마자 라운드(r) 자신의 고유한 단계(s)를 시작한다.
* 사용자(i)는, Br-1의 제3 구성요소로부터 Qr -1을 연산하고
Figure pct00526
여부를 확인한다.
*
Figure pct00527
인 경우, i는 단계(s)의 자신의 고유한 실행을 즉시 중단한다.
*
Figure pct00528
인 경우, 사용자는 다음을 수행한다.
- 시간량
Figure pct00529
이 경과할 때까지 기다린다.
- 종료 조건 0: 코인-고정-To-0 단계와 동일한 지침.
- 종료 조건 1: 코인-고정-To-0 단계와 동일한 지침.
- 그렇지 않으면, 대기 종료시, 사용자(i)는 다음을 수행한다.
사용자는, 자신이 수신한 모든 유효한
Figure pct00530
의 제2 구성요소에서 vj의 다수표로 설정한다.
사용자는 다음과 같이 bi를 연산한다.
사용자는, 자신이 수신한 모든 유효한
Figure pct00531
중 2/3를 넘는 메시지가
Figure pct00532
의 형태를 가지면,
Figure pct00533
로 설정한다.
그렇지 않으면, 사용자는, 자신의 수신한 모든 유효한
Figure pct00534
중 2/3을 넘는 메시지가
Figure pct00535
의 형태를 가지면,
Figure pct00536
로 설정한다.
그렇지 않으면, 사용자는
Figure pct00537
로 설정한다.
사용자는, 메시지(
Figure pct00538
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00539
)를 파괴한 다음,
Figure pct00540
를 전파한다.
단계
Figure pct00541
: BBA*의 코인-실제-뒤집힘 단계
모든 사용자(
Figure pct00542
)에 대한 지침: 사용자(i)는 Br-1을 알게 되자마자 라운드(r)의 자신의 고유한 단계(s)를 시작한다.
* 사용자(i)는 Br-1의 제3 구성요소로부터 Qr -1을 연산하고,
Figure pct00543
여부를 확인한다.
*
Figure pct00544
인 경우, i는 단계(s)의 자신의 고유한 실행을 즉시 중단한다.
*
Figure pct00545
인 경우, 다음을 수행한다.
- 사용자는 시간(
Figure pct00546
)이 경과할 때까지 기다린다.
- 종료 조건 0: 코인-고정-To-0 단계와 동일한 지침.
- 종료 조건 1: 코인-고정-To-0 단계와 동일한 지침.
- 그 외에는, 사용자(i)는, 대기 종료시, 다음을 수행한다.
사용자는, vj를, 자신이 수신한 모든 유효한
Figure pct00547
의 제2 구성요소의 vj의 다수표로 설정한다.
사용자는 다음과 같이 bi를 연산한다.
사용자는, 자신이 수신한 모든 유효한
Figure pct00548
의 2/3을 넘는 메시지가
Figure pct00549
의 형태를 갖는다면,
Figure pct00550
로 설정한다.
그렇지 않으면, 사용자는, 자신이 수신한 모든 유효한
Figure pct00551
의 2/3을 넘는 메시지가
Figure pct00552
의 형태를 갖는다면,
Figure pct00553
로 설정한다.
그 외에는,
Figure pct00554
를, 사용자가 유효한 메시지(
Figure pct00555
)를 수신하게 되는 (r,s-1)-검증자들의 세트라고 한다. 사용자는
Figure pct00556
로 설정한다.
사용자는, 메시지(
Figure pct00557
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00558
)를 파괴한 다음,
Figure pct00559
를 전파한다.
단계 m+3: BBA*의 최종 단계(주석 20: 압도적인 확률로, BBA*는 이 단계 전에 종료되었으며, 완전성을 위해 이 단계를 특정한다.)
모든 사용자(
Figure pct00560
)에 대한 지침: 사용자(i)는 Br-1을 알게 되자마자 라운드(r)의 자신의 고유한 단계(m+3)를 시작한다.
* 사용자(i)는 Br-1의 제3 구성요소로부터 Qr -1을 연산하고,
Figure pct00561
Figure pct00562
여부를 확인한다.
*
Figure pct00563
인 경우, i는 단계(m+3)의 자신의 고유한 실행을 즉시 중단한다.
*
Figure pct00564
인 경우, 다음을 수행한다.
- 사용자는, 시간량(
Figure pct00565
)이 경과할 때까지 기다린다.
- 종료 조건 0: 코인-고정-To-0 단계와 동일한 지침.
- 종료 조건 1: 코인-고정-To-0 단계와 동일한 지침.
- 그렇지 않으면, 대기 종료시, 사용자(i)는 다음을 수행한다.
사용자는
Figure pct00566
Figure pct00567
를 설정한다.
사용자는, 메시지(
Figure pct00568
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00569
)를 파괴한 다음,
Figure pct00570
를 전파하여 Br을 증명한다(주석 21: 단계(m+3)로부터의 증명서는
Figure pct00571
를 포함할 필요가 없다. 이것은 균일성을 위해 포함된 것이며, 증명서는, 이제, 생성 단계에 상관없이 균일한 포맷을 갖는다).
비검증자에 의한 라운드-r 블록의 재구성
시스템의 모든 사용자(i)에 대한 지침: 사용자(i)는, Br-1을 알게 되자마자 자신의 고유한 라운드(r)를 시작하고, 다음과 같이 블록 정보를 기다린다.
- 대기 중 및 임의의 시점에,
(a)
Figure pct00572
와 함께
Figure pct00573
이고,
(b) i가 적어도 tH 개의 유효한 메시지(
Figure pct00574
)를 수신하였고,
(c) i가,
Figure pct00575
와 함께 유효한 메시지(
Figure pct00576
)를 수신한 것이도록 스트링(v) 및 단계(s')가 존재한다면,
i는, 라운드(r)의 자신의 고유한 실행을 즉시 중지하고,
Figure pct00577
로 설정하고, 자신의 고유한 CERTr을 하위 단계(b)의 메시지들(
Figure pct00578
)의 세트로 설정한다.
- 이러한 대기 중 및 특정 시점에,
(a')
Figure pct00579
와 함께
Figure pct00580
이고,
(b') i가 적어도 tH개의 유효한 메시지(
Figure pct00581
)를 수신한 것이도록 단계(s')가 존재한다면,
i는, 라운드(r)의 자신의 고유한 실행을 즉시 중지하고,
Figure pct00582
로 설정하고, 자신의 고유한 CERTr을 하위 단계(b')의 메시지들(
Figure pct00583
)의 세트로 설정한다.
- 이러한 대기 중 및 임의의 시점에서, i가 적어도 tH개의 유효한 메시지(
Figure pct00584
)를 수신하였다면, i는, 라운드(r)의 자신의 고유한 실행을 즉시 중지하고,
Figure pct00585
로 설정하고, 자신의 고유한 CERTr을 1 및
Figure pct00586
에 대한 메시지들(
Figure pct00587
)의 세트로 설정한다.
6
Figure pct00588
이 섹션에서는, 다음에 따르는 가정 하에 동작하는 알고랜드'의 버전을 구성한다.
대부분의 정직한 사용자들 가정: 각 PKr의 사용자들 중 2/3를 초과하는 사용자들이 정직하다.
섹션 7에서는, 상술한 가정을 원하는 대부분의 정직한 사용자들 가정으로 어떻게 교체하는지를 나타낸다.
6.1
Figure pct00589
에 대한 추가 표기법 및 파라미터
표기법
Figure pct00590
: 실제로 하나의 라운드에서 압도적인 확률로 취해지는 단계들의 수에 대한 실용적 상한값(알 수 있듯이, 파라미터(μ)는, 각 라운드마다 사용자가 얼마나 많은 단명 키를 미리 제시하는지를 제어한다).
● Lr: 각 시행이 확률(
Figure pct00591
)로 1일 때, 1을 보는 데 필요한 베르누이 시행 횟수를 나타내는 랜덤 변수. Lr은 블록(Br) 생성에 필요한 시간을 상한으로 제한하는 데 사용된다.
● tH: 라운드(r)의 단계(s>1)에 있어서 정직한 검증자들의 수에 대한 하한값으로서, 이때, 압도적인 확률(n과 p가 주어짐)로, SVr,s에는 tH를 초과하는 정직한 사용자들이 존재한다.
파라미터
● 다양한 파라미터 간의 관계
- 라운드(r)의 각 단계(s>1)에 대하여, n은 아래와 같이 되도록 압도적인 확률로 선택된다.
Figure pct00592
Figure pct00593
상술한 두 개의 부등식은
Figure pct00594
를 함께 의미하며, 즉, 선택된 검증자들 중 2/3의 정직한 다수가 있다는 점에 주목한다. h 값이 1에 가까울수록 n은 작아야 한다. 특히, 원하는 조건이 압도적인 확률로 유지되도록 체르노프 경계값(의 변형)을 이용한다.
● 중요 파라미터의 특정한 선택
-
Figure pct00595
-
Figure pct00596
6.2
Figure pct00597
에서의 임시 키 구현
검증자(
Figure pct00598
)는, 사용 후 즉시 파괴하는 임시 비밀 키(
Figure pct00599
)를 사용하여, 임시 공개 키(
Figure pct00600
)에 관하여 라운드(r)의 단계(s)의 자신의 메시지(
Figure pct00601
)를 디지털 서명한다는 점을 상기한다. 한 라운드가 취할 수 있는 가능한 단계들의 수가 소정의 정수(μ)에 의해 한정되는 경우, 임시 키를 실제로 어떻게 다루는지를 이미 살펴보았다. 예를 들어, (μ= m + 3인)
Figure pct00602
에서 설명한 바와 같이, 라운드(r')부터 라운드(
Figure pct00603
)까지 자신의 가능한 모든 임시 키를 다루기 위해, i는 쌍(PMK, SMK)을 생성하며, 여기서 PMK는 아이덴티티 기반 서명 기법의 공개 마스터 키이고, SMK는 이에 대응하는 비밀 마스터 키이다. 사용자(i)는, PMK를 공개하고 SMK를 사용하여 각각의 가능한 임시 공개 키의 비밀 키를 생성한다(그리고, 이렇게 행한 후 SMK를 파괴한다). 관련 라운드들에 대한 i의 임시 공개 키들의 세트는
Figure pct00604
이다(전술한 바와 같이, 라운드(
Figure pct00605
)에 접근함에 따라, i는 자신의 쌍(PMK, SMK)을 "리프레시"한다.
실제로, μ가 충분히 크면,
Figure pct00606
의 한 라운드는 μ개를 초과하는 단계를 취하지 않는다. 그러나, 실제로는, 일부 라운드(r)에 대하여, 실제로 취해진 단계들의 수가 μ개를 초과할 희박한 가능성이 있다. 이러한 일이 발생하는 경우, i는, 라운드(r)에 대하여 μ개의 비밀 키만을 미리 준비하였기 때문에, 임의의 단계(s > μ)에 대하여 자신의 메시지(
Figure pct00607
)를 서명할 수 없다. 또한, 전술한 바와 같이, 임시 키들의 새로운 스태시를 준비 및 공개할 수 없다. 사실상, 이렇게 하려면, 새로운 공개 마스터 키(PMK')를 새로운 블록에 삽입할 필요가 있다. 그러나, 라운드(r)가 더 많은 단계를 취해야 할수록, 새로운 블록은 생성되지 않는다.
그러나, 해결책이 있다. 예를 들어, i는, 다음과 같이, 라운드(r)의 최종 임시 키(
Figure pct00608
)를 사용할 수 있다. 예를 들어, (1) 다른 마스터 키 쌍(
Figure pct00609
)을 생성하고, (2) 이 쌍을 이용하여, 라운드(r)의 단계들(
Figure pct00610
)에 대응하는 다른 임시 키, 예컨대, 106개의 임시 키(
Figure pct00611
)를 생성하고, (3)
Figure pct00612
를 사용하여
Figure pct00613
(및
Figure pct00614
인 경우 임의의
Figure pct00615
-메시지)를 디지털 서명하고, (4)
Figure pct00616
Figure pct00617
를 삭제함으로써, 라운드(r)에 대한 키-쌍들의 다른 스태시를 생성한다. i가
Figure pct00618
와 함께인 단계(
Figure pct00619
)에서 검증자가 되어야 한다면, i는 자신의 새로운 키(
Figure pct00620
)에 관하여 자신의
Figure pct00621
-메시지를 디지털 서명한다. 물론, i의 이러한 서명을 검증하려면, 다른 이들도 이러한 공개 키가 i의 새로운 공개 마스터 키에 대응한다고 확신할 수 있어야 한다. 따라서, 이 서명에 더하여, i는
Figure pct00622
에 관한
Figure pct00623
의 자신의 디지털 서명을 송신한다.
물론, 라운드(r)가 더 많은 단계 동안 연속되어야 한다면, 필요한 횟수만큼 이러한 방안을 반복할 수 있다. 최종 임시 비밀 키는, 새로운 마스터 공개 키를 인증하는 데 사용되며, 이에 따라, 라운드(r)에 대한 임시 키들의 다른 스태시를 인증하는 데 사용된다. 나머지도 마찬가지이다.
6.3 실제 프로토콜
Figure pct00624
라운드(r)의 각 단계(s)에서, 검증자(
Figure pct00625
)는 자신의 장기 공개-비밀 키 쌍을 이용하여 자신의 자격증명서(
Figure pct00626
)를 생성하고 또한
Figure pct00627
를 생성하며 이 경우 s = 1이라는 점을 다시 상기한다. 검증자(i)는, 자신의 임시 키 쌍(
Figure pct00628
)을 이용하여, 요구될 수 있는 다른 임의의 메시지(m)를 서명한다. 간략하게 나타내도록,
Figure pct00629
대신
Figure pct00630
라고 써서, 이 단계에서의 m의 i의 적절한 임시 서명을 나타내며,
Figure pct00631
Figure pct00632
대신
Figure pct00633
라고 쓴다.
단계 1: 블록 제안
모든 사용자(
Figure pct00634
)에 대한 지침: 사용자(i)는
Figure pct00635
을 갖자마자 자신의 고유한 단계(1)를 시작하고, 이는 i가
Figure pct00636
Figure pct00637
을 분명하게 연산할 수 있게 한다.
● 사용자(i)는
Figure pct00638
을 이용하여
Figure pct00639
인지 여부를 확인한다.
Figure pct00640
이면, 단계(1)에 대하여 행하는 것이 없다.
Figure pct00641
이면, 즉, i가 잠재적 리더이면, 다음에 따르는 것을 행한다.
(a) i 자신이
Figure pct00642
을 보았다면(임의의
Figure pct00643
Figure pct00644
의 해당 해시값으로부터 쉽게 도출될 수 있고 이에 따라 "보이는" 것으로 간주되면), 자신에게 지금까지 전파된 라운드-r 지불을 수집하고 이들로부터 최대 페이세트를 연산한다.
(b) i가 모든
Figure pct00645
을 아직 보지 않았다면,
Figure pct00646
로 설정한다.
(c) 다음으로, i는 자신의 "후보 블록"(
Figure pct00647
)을 연산한다.
(c) 마지막으로, i는, 메시지(
Figure pct00648
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00649
)를 파괴한 후, 두 개의 메시지인
Figure pct00650
Figure pct00651
를 개별적으로 그러나 동시에 전파한다.
(주석 22: i가 리더인 경우,
Figure pct00652
는 다른 이들이
Figure pct00653
을 연산할 수 있게 한다).
선택적 전파
전체 라운드 및 단계(1)의 글로벌 실행을 짧게 하기 위해서는, (r,1)-메시지들이 선택적으로 전파되는 것이 중요하다. 즉, 시스템의 모든 사용자(j)에 대하여,
● 자신이 수신하고 수신한 메시지가 블록을 포함하거나 단순히 Qr -1의 자격증명서 및 서명인지 여부를 성공적으로 검증하는 것인 제1 (r,1)-메시지에 대해서는, 플레이어(j)가 그것을 평상시처럼 전파한다(주석 23: 즉, 모든 서명이 올바른지를 검증하고, 이 서명이 형태(
Figure pct00654
)로 되어 있으면, 블록과 블록의 해시값이 유효하지만, j는 포함된 페이세트가 i에 대하여 최대인지 여부를 확인하지 않는다).
● 플레이어(j)가 수신하고 성공적으로 검증하는 다른 모든 (r,1)-메시지에 대해서는, 메시지가 포함하고 있는 자격증명서의 해시값이 플레이어가 수신하고 지금까지 성공적으로 검증한 모든 (r-1)-메시지에 포함된 자격증명서들의 해시값들 중 최소인 경우에만, 해당 메시지를 전파한다.
● 그러나, j가 동일한 플레이어(i)로부터 형태(
Figure pct00655
)의 두 개의 상이한 메시지를 수신하면(주석 24: 이것은 i가 적대적이라는 것을 의미함), i의 자격증명서의 해시값에 관계없이 제2 메시지를 폐기한다.
선택적 전파 하에서, 각각의 잠재적 리더(i)가 자신의 자격증명서(
Figure pct00656
)를
Figure pct00657
로부터 개별적으로 전파하는 것이 유용(주석 25: 이러한 점을 제시한
Figure pct00658
에게 감사드림)하며, 그러한 작은 메시지들은 블록들보다 빠르게 이동하며,
Figure pct00659
의 적시 전파를 보장하며, 여기서 포함된 자격증명서들은 작은 해시값들을 갖는 반면, 큰 해시값들을 갖는 자격증명서들은 빠르게 사라진다는 점에 주목한다
단계 2: 등급화된 콘센서스 프로토콜 GC의 제1 단계
모든 사용자(
Figure pct00660
)에 대한 지침: 사용자(i)는
Figure pct00661
을 갖자마자 라운드(r)의 자신의 고유한 단계(2)를 시작한다.
● 사용자(i)는 최대 시간량(
Figure pct00662
) 동안 대기한다. i는, 대기 동안, 다음과 같이 행동을 취한다.
1. 시간(
Figure pct00663
) 동안 대기한 후에, 지금까지 수신한 성공적으로 검증된 (r,1)-메시지들의 일부인 모든 자격증명서(
Figure pct00664
)에 대하여
Figure pct00665
로 되는 사용자(ℓ)를 찾는다(주석 26: 본질적으로, 사용자(i)는, 라운드(r)의 리더가 사용자(ℓ)라고 개인적으로 결정한다).
2.
Figure pct00666
(주석 27: 물론,
Figure pct00667
Figure pct00668
임을 나타내면, i는
Figure pct00669
을 갖는 순간 Br-1을 미리 "수신"하였음)에 포함된 해시값(H(Br-1))과 일치하는 블록(Br-1)을 수신하였다면 그리고 ℓ로부터 유효 메시지(
Figure pct00670
=
Figure pct00671
)를 수신하였다면, i는 대기를 중단하고
Figure pct00672
를 설정한다(주석 28: 다시, 플레이어(ℓ)의 서명 및 해시가 모든 성공적으로 검증되며,
Figure pct00673
Figure pct00674
은, 라운드(r)에 대한 유효한 페이세트이지만, i는
Figure pct00675
이 ℓ에 대하여 최대인지 여부를 확인하지 않는다.
Figure pct00676
이 비어있는 페이세트를 포함하면,
Figure pct00677
이 유효한지 여부를 검증하기 전에 i가
Figure pct00678
을 실제로 볼 필요는 없다).
3. 그 외에는, 시간(t2)이 다되면, i는
Figure pct00679
를 설정한다.
4.
Figure pct00680
의 값이 설정되었을 때, i는,
Figure pct00681
로부터
Figure pct00682
을 연산하고,
Figure pct00683
인지 여부를 확인한다.
5.
Figure pct00684
이면, i는, 메시지(
Figure pct00685
)를 연산하고(주석 29: 메시지(
Figure pct00686
)는, 플레이어(i)가
Figure pct00687
의 제1 구성요소를 다음 블록의 해시로 간주하고 또는 다음 블록을 비어있다고 간주함을 시그널링한다), 자신의 임시 비밀 키(
Figure pct00688
)를 파괴한 후,
Figure pct00689
를 전파한다. 그 외에는, i는 어떠한 것도 전파하지 않고서 중단한다.
단계 3: GC의 제2 단계
모든 사용자(
Figure pct00690
)를 위한 지침: 사용자(i)는
Figure pct00691
을 갖자마자 라운드(r)의 자신의 고유한 단계(3)를 시작한다.
● 사용자(i)는 최대 시간량(
Figure pct00692
) 동안 대기한다. 대기하는 동안, i는 다음과 같이 행한다.
1. 어떠한 모순 없이도 자신이 형태(
Figure pct00693
)의 적어도 tH개의 유효 메시지(
Figure pct00694
)를 수신한 것처럼 값(v)이 존재하면(주석 30: 즉,
Figure pct00695
및 상이한
Figure pct00696
를 포함하는 두 개의 유효 메시지를 플레이어(j)로부터 각각 수신하지 못하였다. 이제부터는, 이후에서 규정하는 종료 조건을 제외하고, 정직한 플레이어가 소정의 형태의 메시지를 원할 때마다, 서로 모순되는 메시지들은 결코 카운팅되지 않으며 또는 유효한 것으로 간주되지 않는다), 대기를 중단하고
Figure pct00697
를 설정한다.
2. 그 외에는, 시간(t3)이 다되면,
Figure pct00698
를 설정한다.
3. v'의 값이 설정되었을 때, i는
Figure pct00699
로부터
Figure pct00700
을 연산하고,
Figure pct00701
인지 여부를 확인한다.
4.
Figure pct00702
이면, i는, 메시지(
Figure pct00703
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00704
)를 파괴한 후,
Figure pct00705
을 전파한다. 아닌 경우엔, i는 어떠한 것도 전파하지 않고 중단한다.
단계 4: GC의 출력 및 BBA*의 제1 단계
모든 사용자(
Figure pct00706
)를 위한 지침: i는 자신의 고유한 단계(3)를 종료하자마자 라운드(r)의 자신의 고유한 단계(4)를 시작한다.
● 사용자(i)는 최대 시간량(
Figure pct00707
)(주석 31: 즉, i가 라운드(r)의 자신의 단계(1)를 시작한 후의 최대 시간 총량이
Figure pct00708
일 수 있음) 동안 대기한다. 대기하는 동안, i는 다음과 같이 행한다.
1. 사용자는, 다음과 같이 GC의 출력인 vi 및 gi를 연산한다.
(a) 자신이 적어도 tH개의 유효 메시지(
Figure pct00709
)를 수신한 것처럼 값(
Figure pct00710
)이 존재한다면, 대기를 중단하고
Figure pct00711
Figure pct00712
를 설정한다.
(b) 적어도 tH개의 유효 메시지(
Figure pct00713
)를 수신하였다면, 대기를 중단하고
Figure pct00714
Figure pct00715
(주석 32: 단계(b)가 프로토콜에 있는지 여부는 그 정확성에 영향을 미치지 않는다. 그러나, 단계(b)가 존재함으로써, 충분히 많은 단계-3 검증자가 "서명된
Figure pct00716
"(signed
Figure pct00717
)를 갖는다면 단계(4)가 미만의
Figure pct00718
시간으로 종료될 수 있음)를 설정한다.
(c) 다른 경우엔, 시간(2λ)이 다되었을 때, 적어도
Figure pct00719
개의 유효 메시지(
Figure pct00720
)를 수신한 것처럼 값(
Figure pct00721
)이 존재하면,
Figure pct00722
Figure pct00723
(주석 33: 이 경우
Figure pct00724
는, 존재한다면, 고유함이 틀림없다고 증명될 수 있음)를 설정한다.
(d) 또는, 시간(2λ)이 다되면,
Figure pct00725
Figure pct00726
를 설정한다.
2. 값들(vi 및 gi)이 설정된 경우, i는 다음과 같이 BBA*의 입력인 bi를 연산한다.
Figure pct00727
이면
Figure pct00728
이고, 그 외에는
Figure pct00729
임.
3. i는
Figure pct00730
로부터
Figure pct00731
을 연산하고
Figure pct00732
인지 여부를 확인한다.
4.
Figure pct00733
이면, 메시지(
Figure pct00734
)를 수신하고, 자신의 임시 비밀 키(
Figure pct00735
)를 파괴하고,
Figure pct00736
를 전파한다. 그 외에는, i는 어떠한 것도 전파하지 않고 중단한다.
단계(s), 5 ≤ s ≤ m + 2, s - 2 ≡ 0 mod 3: BBA*의 코인-고정-To-0 단계
모든 사용자(
Figure pct00737
)를 위한 지침: 사용자(i)는 자신의 고유한 단계(s-1)를 종료하자마자 라운드(r)의 자신의 고유한 단계(s)를 시작한다.
● 사용자(i)는, 최대 시간량(
Figure pct00738
)(주석 34: 따라서, i가 라운드(r)의 자신의 단계(1)를 시작한 후의 최대 시간 총량은
Figure pct00739
Figure pct00740
일 수 있음) 동안 대기한다. 대기 동안, i는 다음과 같이 행한다.
- 종료 조건(0): 임의의 시점에서,
(a)
Figure pct00741
- 즉, 단계(s')가 코인-고정-To-0 단계이고,
(b) i가 적어도 tH개의 유효 메시지(
Figure pct00742
)(주석 35: 플레이어(j)로부터의 이러한 메시지는, 플레이어(i)도 j로부터 1에 대한 서명된 메시지를 수신하였더라도 카운팅된다. 종료 조건(1)에 대해서는 유사하다. 분석에서 알 수 있는 바와 같이, 이는 모든 정직한 사용자가 서로 시간(
Figure pct00743
) 내에
Figure pct00744
을 아는 것을 보장하기 위한 것임)를 수신하였고,
(c) j가 v의 제2 성분인 유효 메시지(
Figure pct00745
)를 i가 수신한 것처럼
스트링(
Figure pct00746
) 및 단계(s')가 존재하면,
i는, 대기를 중단하고, 어떠한 것도 (r,s)-검증자로서 전파하지 않고 (사실상 라운드(r)의) 단계(s)의 자신의 고유한 실행을 즉시 종료하며,
Figure pct00747
을 v의 제1 성분으로 설정하고, 자신의 고유한
Figure pct00748
Figure pct00749
과 함께 단계(b)의 메시지들(
Figure pct00750
)의 세트로 설정한다(주석 36: 사용자(i)는 이제
Figure pct00751
을 알고, 자신의 고유한 라운드(r)가 종료된다. 사용자는, 단지 실제 블록(
Figure pct00752
)이 자신에게 전파될 때까지 대기하면 되며, 이는 소정의 추가 시간이 걸릴 수 있다. 사용자는, 일반적 사용자로서 메시지를 전파하는 데 여전히 일조하지만, (r,s)-검증자로서 어떠한 전파도 개시하지 않는다. 특히, 사용자는, 자신의
Figure pct00753
내의 모든 메시지의 전파에 일조하였지만, 이는 우리의 프로토콜에 대하여 충분하다. 플레이어가 이진 BA 프로토콜을 위해
Figure pct00754
을 또한 설정해야 하지만, bi는 이 경우에 어떠한 식으로든 필요하지 않다는 점에 주목한다. 모든 향후 지침에 대해서 유사하다).
- 종료 조건(1): 임의의 시점에서,
(a')
Figure pct00755
- 즉, 단계(s')가 코인-코정-To-1 단계이고,
(b') i가 적어도 tH개의 유효 메시지(
Figure pct00756
Figure pct00757
)(주석 37: 이 경우, vj가 무엇인지는 중요하지 않음)를 수신한 것처럼
단계(s')가 존재하면,
i는, 대기를 중단하고, (r,s)-검증자로서 어떠한 것도 전파하지 않고 (사실상 라운드(r)의) 단계(s)의 자신의 고유한 실행을 즉시 종료하며,
Figure pct00758
을 설정하고, 자신의 고유한
Figure pct00759
을 부단계(b')의 메시지들(
Figure pct00760
)의 세트로 설정한다.
- 임의의 시점에서, 형태(
Figure pct00761
)의 적어도 tH개의 유효 메시지를 수신하였다면, 플레이어는 대기를 중단하고
Figure pct00762
을 설정한다.
- 임의의 시점에서, 형태(
Figure pct00763
)의 적어도 tH개의 유효 메시지를 수신하였지만 동일한 v에 합의하지 않으면, 플레이어는 대기를 중단하고
Figure pct00764
을 설정한다.
- 그 외에는, 시간(2λ)이 다된 경우, i가
Figure pct00765
을 설정한다.
- 값(bi)이 설정되었을 때, i는
Figure pct00766
로부터
Figure pct00767
을 연산하고
Figure pct00768
인지 여부를 확인한다.
-
Figure pct00769
이면, i는, vi가 자신이 단계(4)에서 연산한 값인 메시지(
Figure pct00770
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00771
)를 파괴한 후,
Figure pct00772
를 전파한다. 아닌 경우에는, i는 어떠한 것도 전파하지 않고 중단한다.
단계(s),
Figure pct00773
: BBA*의 코인-고정-To-1 단계
모든 사용자(
Figure pct00774
)를 위한 지침: 사용자(i)는 자신의 고유한 단계(s-1)를 종료하자마자 라운드(r)의 자신의 고유한 단계(s)를 시작한다.
● 사용자(i)는 최대 시간량(2λ) 동안 대기한다. 대기 동안, i는 다음과 같이 행한다.
- 종료 조건(0): 코인-고정-To-0 단계에서와 동일한 지침
- 종료 조건(1): 코인-고정-To-0 단계에서와 동일한 지침
- 임의의 시점에서, 사용자가 형태(
Figure pct00775
)의 적어도 tH개의 유효 메시지(
Figure pct00776
)를 수신하였다면, 사용자는, 대기를 중단하고
Figure pct00777
(주석 38: 1에 대하여 서명하는 tH개의 유효 (r,s-1) 메시지를 수신하는 것은 종료 조건(1)을 의미한다는 점에 주목한다)을 설정한다.
- 아닌 경우에, 시간(2λ)이 다되면, i는
Figure pct00778
을 설정한다.
- 값(bi)이 설정되었을 때, i는
Figure pct00779
로부터
Figure pct00780
을 연산하고
Figure pct00781
인지 여부를 확인한다.
Figure pct00782
이면, i는, vj가 자신이 단계(4)에서 연산한 값인 메시지(
Figure pct00783
)를 연산하고, 자신의 임시 비밀 키(
Figure pct00784
)를 파괴한 후,
Figure pct00785
를 전파한다. 아닌 경우에, i는 어떠한 것도 전파하지 않고 중단한다.
단계(s),
Figure pct00786
: BBA*의 코인-실제로-뒤집힌 단계
모든 사용자(
Figure pct00787
)를 위한 지침: 사용자(i)는 자신의 고유한 단계(s-1)를 종료하자마자 라운드(r)의 자신의 고유한 단계(s)를 시작한다.
● 사용자(i)는 최대 시간량(2λ) 동안 대기한다. 대기 동안, i는 다음과 같이 행한다.
- 종료 조건(0): 코인-고정-To-0 단계에서와 동일한 지침
- 종료 조건(1): 코인-고정-To-0 단계에서와 동일한 지침
- 임의의 시점에서, 사용자가 형태(
Figure pct00788
)의 적어도 tH개의 유효 메시지(
Figure pct00789
)를 수신하였다면, 대기를 중단하고
Figure pct00790
을 설정한다.
- 임의의 시점에서, 사용자가 형태(
Figure pct00791
)의 적어도 tH개의 유효 메시지(
Figure pct00792
)를 수신하였다면, 대기를 중단하고
Figure pct00793
을 설정한다.
- 아닌 경우에, 시간(2λ)이 다되면,
Figure pct00794
을 자신이 유효 메시지(
Figure pct00795
)를 수신한
Figure pct00796
-검증자들의 세트라고 할 때, i는
Figure pct00797
을 설정한다.
- 값(bi)이 설정되었을 때, i는
Figure pct00798
로부터
Figure pct00799
을 연산하고
Figure pct00800
인지 여부를 확인한다.
-
Figure pct00801
이면, i는, vi가 사용자가 단계(4)에서 연산한 값인 메시지(
Figure pct00802
)를 연산하고, 임시 비밀 키(
Figure pct00803
)를 파괴한 다음,
Figure pct00804
를 전파한다. 아닌 경우에, i는 어떠한 것도 전파하지 않고 중단한다.
비고. 원칙적으로, 서브섹션 6.2에서 고려한 바와 같이, 프로토콜은 일부 라운드에서 임의적으로 많은 단계를 취할 수 있다. 이러한 경우, 전술한 바와 같이, 사용자(
Figure pct00805
Figure pct00806
)는, 미리 생성된 자신의 임시 키들의 스태시를 소진하였으며, 임시 키들의 "캐스케이드"에 의해 자신의 (r,s)-메시지(
Figure pct00807
)를 인증해야 한다. 따라서, i의 메시지는 더욱 긴 비트로 되며, 이러한 긴 메시지를 전송하려면 약간 더 많은 시간이 걸린다. 이에 따라, 소정의 라운드의 이렇게 많은 단계 후에, 파라미터(λ)의 값은 자동으로 약간 증가한다(그러나, 이 값은, 일단 새로운 블록이 생성되고 새로운 라운드가 시작되면, 원래의 λ로 복귀한다).
비검증자에 의한 라운드-r 블록의 재구성
시스템의 모든 사용자(i)를 위함 지침: 사용자(i)는
Figure pct00808
을 갖자마자 자신의 고유한 라운드(r)를 시작한다.
● i는, 프로토콜의 각 단계의 지침을 따르며, 모든 메시지의 전파에 참여하지만, 자신이 단계에서의 검증자가 아니라면 해당 단계에서 어떠한 전파도 개시하지 않는다.
● i는, 일부 단계에서 종료 조건(0) 또는 종료 조건(1)을 대응
Figure pct00809
과 함께 입력함으로써 자신의 라운드(r)를 종료한다.
● 그때부터, 사용자는, (실제 블록을 미리 수신하지 않았다면) 실제 블록(Br)의 수신을 대기하면서 자신의 라운드(r+1)를 시작하며, 이러한 블록의 해시(
Figure pct00810
)는
Figure pct00811
에 의해 고정되었다. 다시,
Figure pct00812
Figure pct00813
임을 나타내면, i는 자신이
Figure pct00814
을 갖는 순간 Br을 안다.
7 정직한 대다수의 돈을 갖는 프로토콜
Figure pct00815
이제, 마지막으로, 정직한 대다수의 사용자 가정을 훨씬 더 의미 있는 정직한 대다수의 돈 가정으로 교체하는 방법을 보여주고자 한다. 기본 사상은, (지분 증명 분위기에 있어서) "i가 소유하는 금액에 비례하는 가중치(즉, 결정력)를 갖는
Figure pct00816
에 속하는 사용자(
Figure pct00817
)를 선택"하는 것이다(주석 39: 지속적 참여를 제거하기 위해
Figure pct00818
라고 할 것이다. 간략하도록, 어떠한 식으로든 지속적 참여를 필요로 할 수 있으므로, 이전처럼
Figure pct00819
를 사용하여, 파라미터를 하나 덜 반송한다).
우리의 HMM 가정에 의하면, 금액이 라운드(r-k)에서 또는 라운드(r)(의 시작)에서 소유되어야 하는지 여부를 선택할 수 있다. 지속적 참여를 신경쓰지 않는다고 가정할 때, 후자의 선택을 택한다(지속적 참여를 제거하기 위해, 이전 선택을 택했을 것이다. r-k-2,000 라운드에서 소유한 금액에 대해서는, 더 낫다고 말할 수 있다).
이러한 사상을 구현하기 위한 많은 방식이 있다. 가장 간단한 방식은, 각 키가 최대 1개의 금액 단위를 보유한 후
Figure pct00820
이도록
Figure pct00821
로부터 n명의 사용자(i)를 랜덤하게 선택하는 것이다.
그 다음으로 가장 간단한 구현예
그 다음으로 가장 간단한 구현예는, 각 공개 키가 일부 고정된 M에 대하여 최대 금액(M)을 소유함을 요구하는 것일 수 있다. 값(M)은 시스템의 총 금액에 비해 충분히 작고, 이때, 키가 예를 들어 k개의 라운드의 하나보다 많은 단계의 검증자 세트에 속할 확률은 무시할만하다. 이어서, 라운드(r)에서 금액(
Figure pct00822
)을 소유하는 키(
Figure pct00823
)는,
Figure pct00824
이라면,
Figure pct00825
에 속하도록 선택된다.
그리고, 모두 이전처럼 진행된다.
더욱 복잡한 구현예
최종 구현예는, "시스템의 부자 참여자가 많은 키를 소유하게 하는 것이었다".
후술하는 대체 구현예는, 상태 개념을 일반화하며, 각 사용자(i)가 K+1개의 카피(i,v)로 이루어지며, 각 카피는 검증자로 되도록 독립적으로 선택되며, 각 사용자는 라운드(r)의 단계(s)에서 자신의 고유한 임시 키(
Figure pct00826
)를 소유함을 고려한다. 값(K)은, 라운드(r)에서 i가 소유하는 금액(
Figure pct00827
)에 의존한다.
이제, 이러한 시스템이 어떻게 동작하는지를 더욱 상세히 나타내고자 한다.
카피의 수. n을 각 검증자 세트의 목표 예상 기수라고 하고,
Figure pct00828
을 라운드(r)에서 사용자(i)가 소유하는 금액이라고 하자. Ar을 라운드(r)에서
Figure pct00829
의 사용자들이 소유하는 총 금액이라고 하자. 즉, 아래와 같다.
Figure pct00830
i가
Figure pct00831
의 사용자이면, i의 카피는
Figure pct00832
이며, 여기서,
Figure pct00833
이다.
예. n = 1,000, Ar = 109,
Figure pct00834
= 3백 7십만이라고 하자. 그렇다면,
Figure pct00835
이다.
검증자 및 자격증명서. i를 K+1개의 카피를 갖는
Figure pct00836
의 사용자라고 하자.
Figure pct00837
에 대하여, 카피(i,v)는 자동적으로
Figure pct00838
에 속한다. 즉, i의 자격증명서는
Figure pct00839
이지만, 대응 조건은
Figure pct00840
로 되며, 이는 항상 참이다.
카피(i, K+1)에 대하여, 라운드(r)의 각 단계(s)마다, i는,
Figure pct00841
인지 여부를 확인한다.
해당된다면, 카피(i, K+1)는
Figure pct00842
에 속한다. 이를 증명하기 위해, i는 이하의 자격증명서를 전파한다.
Figure pct00843
예. 이전 예에서와 같이,
Figure pct00844
이고, i가 4개의 카피인
Figure pct00845
를 갖는다고 하자. 그렇다면, 처음 3개의 카피는 자동적으로
Figure pct00846
에 속한다. 네 번째 카피에 대해서는, 개념적으로,
Figure pct00847
는 편향된 코인을 독립적으로 굴리고, 앞면의 확률은 0.7이다. 카피(i,4)는, 코인 토스가 앞면인 경우에만 가 선택된다.
(물론, 이러한 편향된 코인 뒤집기는, i가 자신의 결과를 증명할 수 있도록 본원에서 계속 행하였듯이, 해싱, 서명, 및 비교에 의해 구현된다).
일반적인 비지니스. 검증자가 어떻게 선택되고 검증자의 자격증명서가 라운드(r)의 각 단계에서 어떻게 연산되는지를 설명하였으므로, 라운드의 실행은 전술한 바와 유사하다.
8 네트워크 파티션이 없다고 가정하는 알고랜드
본질적으로, 알고랜드에서, 블록은 라운드에서 생성된다. 라운드(r)에서,
(1) 적절히 자격증명된 리더는 새로운 블록을 제안한 후,
(2) 적절히 자격증명된 사용자들은, 여러 단계에 걸쳐, 제안된 블록에 대하여 적절한 비잔틴 합의(BA) 프로토콜을 실행한다.
바람직한 BA 프로토콜은 BA*이다. 블록 제안 단계를 단계(1)라고 간주할 수 있으므로, BA*의 단계들은 2,3,...이다.
시스템의 사용자들 중 랜덤하게 선택된 적절한 사용자(i)만이, 라운드(r)의 단계(s)에서 메시지(
Figure pct00848
)를 전송할 자격이 있다. 알고랜드는, 이러한 사용자(i)가 자신이 발언할 자격이 있는지를 확인하기 때문에 매우 빠르고 안전하다. 이 경우, 사용자(i)는 증명인 자격증명서를 실제로 취득한다. i는, 라운드(r)의 단계(s)에서 발언할 자신의 차례가 되면, 네트워크에서 자신의 자격증명서(
Figure pct00849
)와 디지털 서명된 메시지(
Figure pct00850
)를 모두 전파한다. 자격증명서는, 다른 사용자들에게 메시지(
Figure pct00851
)를 고려해야 한다는 점을 증명한다.
사용자(i)가 라운드(r)의 단계(s)에서 발언할 자격이 있는 필수 조건은, 사용자가 몇 라운드 전에 이미 시스템에 있었다는 점이다. 특히 라운드(r)보다 k개 라운드 전이며, 여기서 k는 '룩백'(look-back) 파라미터라고 한다. 즉, 라운드(r)에서 발언할 수 있으려면, i는, 라운드(r-k)에서 이미 시스템에 있는 모든 공개 키/사용자의 세트인
Figure pct00852
에 속해야 한다(사용자들은 자신들의 공개 키로 식별될 수 있다). 이 조건은, 블록체인으로부터 파생될 수 있다는 점에서 쉽게 검증될 수 있다.
다른 조건은
Figure pct00853
이며,
여기서, p는,
Figure pct00854
의 검증자들의 예상 수, 즉, 라운드(r)의 단계(s)에서 발언할 수 있는 사용자들의 세트를 제어하는 소정의 확률이다. 이 조건이 충족되면, i의 자격증명서가
Figure pct00855
라고 정의된다.
물론, i만이 자신이
Figure pct00856
에 속하는지 여부를 알아낼 수 있다. i의 비밀 서명 키를 모르는 다른 모든 사용자는 이를 전혀 알지 못한다. 그러나,
Figure pct00857
이면, i는, 지금까지 블록체인이 주어진 상태에서 자신의 자격증명서(
Figure pct00858
)를 전파함으로써 이것이 누구에게나 해당함을 입증할 수 있다. 사실, (1)
Figure pct00859
은 이전 블록(Br-1)으로부터 쉽게 연산될 수 있지만, 본질적으로 예측할 수 없을 정도로 많은 블록이 미리 있고, (2) 누구든지 (시스템에서 자신의 장기 키에 관하여) i의 디지털 서명을 검증할 수 있다는 점을 상기한다.
지금까지의 알고랜드 버전에서, 새로운 블록들은 라운드(r)에서 한 번만, 즉, 단계(1)에서 제안된다는 점을 상기한다. BA 프로토콜은, 사용자들이 블록들 중 하나(또는 빈 블록)에 대해 콘센서스에 도달하게 하며, 라운드(r)에 대해 이미 제안된 새로운 블록들을 추가로 제안하지 않거나 블록들을 다시 제안하지 않는다. 네트워크가 파티션화되지 않고 메시지를 전파할 시간의 상한이 충족되면, 사용자들은 효율적이고 안전하게 콘센서스에 도달한다.
9 네트워크 파티션에 대하여 탄성적인 알고랜드
네트워크 파티션이 없다는 가정을 없애는 알고랜드의 새로운 실시예인 알고랜드2를 설명한다. 정직한 대다수의 사용자(HMU) 가정 하에 새로운 프로토콜을 제시한다. 섹션 7에서와 동일한 접근방식을 사용하여, HMU 가정을 정직한 대다수의 돈(HMM) 가정으로 대체할 수 있다.
9.1 통신 모델
네트워크가 파티션화되지 않은 경우, 작은 메시지들은 모든 정직한 사용자에게 전파되는 데 λ 시간이 걸리고, 블록들은 이전과 같이 모든 정직한 사용자에게 전파되는 데 Λ 시간이 걸린다. 네트워크가 사용자들의 한 개보다 많은 그룹으로 파티션화되는 경우, 적대자는, 한 그룹의 사용자가 전파한 메시지(m)가 다른 그룹들의 사용자들에게 전달되는지, 다른 그룹들의 누가 m을 수신하는지, 및 사용자들이 m을 언제 수신하는지를 결정한다. 네트워크 파티션은, 향후에 무기한으로 분해될 수 있으며, 파티션 동안 전파되는 메시지는, 파티션이 분해된 후에 모든 사용자에게 전달된다. 간략화를 위해, 그러나 의도된 제한 없이, 네트워크 파티션 동안 전파되는 메시지가 파티션이 분해된 직후 모든 사용자에게 전달되는 것으로 가정하는 새로운 실시예를 설명한다. 예를 들어, 네트워크 파티션이 시각(t1)에서 시각(t2)까지 지속되고 M을 파티션 동안 전파되는 메시지들의 세트라고 하면, 모든 사용자는 시각(t2)까지 M의 메시지를 수신한다. 당업자는, 본원에서 설명하는 시스템이 M의 메시지가 모든 사용자에게 도달하는 데 어느 정도의 시간이 걸리거나 그 메시지를 수신한 사용자에 의해 다시 전파되는 다른 상황을 처리할 수 있음을 인식할 것이다.
9.2 파라미터 선택
예상되는 위원회 크기(n)와 임계값(tH)은 이하 조건에 따라 선택된다. PK를 사용자들의 세트라고 하고, HPK와 MPK를 각각 정직한 사용자들과 악의적 사용자들의 세트라고 하자. HPK1을 크기가 절반인 HPK의 임의의 서브세트라고 하자. 각 사용자(
Figure pct00860
)가 독립적으로 그리고 랜덤하게 확률(
Figure pct00861
)로 선택되는 경우, HSV1 및 MSV를 각각 HPK1 및 MPK로부터 선택된 것들의 세트라고 하자. 이에 따라, 압도적인 확률()로,
Figure pct00862
로 된다.
또한, HSV를 HPK로부터 선택된 것들의 세트라고 하자. 이에 따라, 압도적인 확률로,
Figure pct00863
로 된다.
상술한 두 개의 조건은
Figure pct00864
을 의미한다는 점에 주목한다.
예를 들어, h = 80%이고 PK가 충분히 큰 경우, n = 3,500 및 tH = 2,625를 선택할 수 있다.
9.3 일반적 구조
라운드. 프로토콜은 라운드마다 하나의 블록을 생성한다. 한 라운드는 기간들(1, 2,...)로 이루어지고, 한 기간은 단계들(l, 2, ... )로 이루어진다. 어느 시각에서도, 각 사용자(i)는, 정확하게 하나의 라운드-기간 쌍에서 기능한다. 특히, r.p는 라운드(r)의 기간(p)을 가리키는 것으로 사용한다.
라운드(1)의 단계(1)에서, 사용자들은 새로운 블록들을 제안한다. 다음에 따르는 기간들의 단계(1)에서, 사용자들은 새로운 블록들을 제안하거나 이전 기간들에 제안된 블록들을 다시 제안한다.
위원회. 기간(r.p)의 각 단계(s)는,
Figure pct00865
로 표시된, 암호화 자체 선택에 의해 선택된 위원회를 갖는다. 섹션 4.1에서와 같이 k로 표시된 동일한 룩백 파라미터를 사용한다. 예를 들어, k = 70이다. 사용자(i)는,
Figure pct00866
이면 라운드-r 위원회에 선택될 자격이 있다. 각 기간의 단계(1)에 대한 위원회는 예상 크기(n1)(예를 들어, 35)를 갖고, 다른 모든 위원회는 예상 크기(n)를 갖는다. 단계(1)에 대한 위원회 구성원은 잠재적 리더라고 칭한다.
간략하도록, 그러나 의도된 제한 없이, 여기서는 각 기간의 단계(1)와는 달리 모든 단계에 대하여 동일한 예상 위원회 크기(n)를 갖는 새로운 실시예를 설명한다는 점에 주목한다. 당업자는, 상이한 위원회가 상이한 크기를 가질 수 있다는 점을 인식할 것이며 모든 종류의 다른 구현예를 어떻게 도출하는지도 인식할 수 있다.
키. 암호화 자기 선택을 위한 모든 자격증명서는, 고유한 서명을 갖는 디지털 서명 기법에 대한 사용자의 장기 키로 서명되며, 따라서 블록에서 특정된 랜덤한 시드(Qr)도 그러하다. 다른 모든 메시지는, 대응하는 단계의 임시 키를 사용하여 서명된다. 일반적으로, 키를 특정하지 않고
Figure pct00867
을 사용하여 메시지(m)에 대한 i의 서명을 나타낸다.
간략하도록, 그러나 의도된 제한 없이, 여기서는 임시 키를 갖는 새로운 실시예를 설명한다는 점에 주목한다. 당업자는, 기존 버전의 알고랜드에 도입된 기술의 사용을 포함하여, 메시지-자격증명된 블록체인을 갖는 다른 구현예를 어떻게 도출하는지를 인식할 수 있다.
정의 9.1. 자격증명서: 라운드(r), 기간(p), 및 단계(s)에 대한 사용자(i)의 자격증명서(
Figure pct00868
)는
Figure pct00869
이다.
단계에 대한 위원회 구성원은 자신의 대응하는 자격증명서를 해당 단계에 대한 자신의 메시지와 함께 항상 전파하며, 자격증명서의 전파를 명시적으로 언급하지는 않는다.
정의 9.2. 리더: 기간(r.p)에 대한 리더(
Figure pct00870
)는 사용자(
Figure pct00871
)이다.
사용자(i)가 기간(r.p)에 대한 자신의 고유한 리더(
Figure pct00872
)를 식별하는 경우, i는
Figure pct00873
를 사용자(
Figure pct00874
)로 설정하고, 여기서, Si는, i가 유효 자격증명서들을 수신한 잠재적 리더들의 세트이다.
정의 9.3. 유효 블록: 제안된 블록의 모든 트랜잭션이 블록들(
Figure pct00875
)에 대하여 유효하고 이에 의해 특정된 시드(Qr)가 프로토콜의 규칙을 따르는 경우에만, 라운드(r) 동안 제안된 블록을 유효한 것이라고 한다.
투표 메시지. 위원회 구성원들은 3가지 유형의 투표 메시지를 생성한다.
정의 9.4. 인증-투표(Cert-vote): 기간(r.p)에 대하여 값(v)에 대한 사용자(i)의 자격 투표는 서명(
Figure pct00876
)이다.
사용자(i)는, 자신이
Figure pct00877
를 전파할 때 기간(r.p)에 대한 값(v)을 인증-투표한다고 정의한다.
정의 9.5. 소프트-투표: 기간(r.p)에 대하여 값(v)에 대한 사용자(i)의 소프트-투표는 서명(
Figure pct00878
)이다.
사용자(i)는, 자신이
Figure pct00879
를 전파할 때 기간(r.p)에 대한 값(v)을 소프트-투표한다고 정의한다.
정의 9.6. 다음-투표: 기간(r.p) 및 단계(s)에 대하여 값(v)에 대한 사용자(i)의 다음-투표는 서명(
Figure pct00880
)이다.
사용자(i)는, 자신이
Figure pct00881
를 전파할 때 값(v)을 다음-투표한다고 정의한다(주석 40: 각 기간에 있어서, 소프트_투표는, 하나의 단계에서만 생성되며, 인증-투표도 그러하다. 따라서, 소프트-투표는 대응 단계를 특정할 필요가 없다. 다음-투표는 다수의 단계에서 생성될 수 있으며 단계 수를 특정할 필요가 있다).
투표되는 값(v)은, 해시 함수(H)의 범위에 있는 값 또는 동일한 길이를 갖지만 H 범위를 벗어나는 특별한 기호(⊥)이다(주석 41: 이 매뉴스크립트의 블록 구조는, 기존 버전의 알고랜드와 동일하며, 블록(B)의 헤더(Header(B))는 실제 페이세트를 제외한 B의 모든 것을 포함한다. 초기 프로토콜에서와 같이, 잠재적 리더의 제안된 블록의 헤더를 해시와 함께 전파할 것을 잠재적 리더에게 요청하여, 사용자가 실제 블록(Br)을 보기 전에 라운드(r+1)를 시작하게 할 수 있다. 이 경우, v와 ⊥는 가능한 해시-헤더 쌍과 동일한 길이를 갖는다. 후술하는 프로토콜에서는 헤더를 무시할 것이다).
타이머, 각 사용자(i)는, 타이머(
Figure pct00882
)를 유지하며, 새로운 기간을 시작할 때마다 타이머를 0으로 리셋한다. i가 동일한 기간에 있는 동안,
Figure pct00883
는 카운팅을 계속한다. 사용자들의 개별 타이머들을 동기화될 필요가 없거나 거의 동기화될 필요가 없다. 유일한 요구 사항은 개별 타이머들이 동일한 속도를 갖는 것이다.
9.4 실제 프로토콜 알고랜드2
후술하는 프로토콜에서, 상이한 기간들로부터의 잠재적 리더의 자격증명서 및 블록은 섹션 5에서와 같이 선택적으로 전파된다.
라운드(r), 기간(1)
다음에 따르는 것은 일반 사용자(i)에 대한 기간(1) 지침이다. 사용자(i)가 특정 단계의 위원회에 있지 않으면, 사용자는 그 단계에서 자신의 투표를 여전히 연산하지만, 투표를 전파하지는 않는다.
사용자(i)가 자신의 고유한 라운드(r)를 시작하는 순간, 사용자는 기간(1)을 시작하고
Figure pct00884
를 0으로 리셋한다.
단계(1): [블록 제안] 사용자(i)는
Figure pct00885
=0일 때 다음에 따르는 것을 행한다.
● i가 잠재적 리더이면, 사용자는 자신의 제안된 블록(
Figure pct00886
)을 준비하며, 이 블록은 사용자의 제안된 시드를 정의하도록 사용자의 서명(
Figure pct00887
)을 포함한다(주석 42: 즉,
Figure pct00888
이다) . 사용자는,
Figure pct00889
를 전파하고, 그 직후에 블록 자체도 전파한다.
단계(2): [필터링 단계] 사용자(i)는,
Figure pct00890
일 때 다음에 따르는 것을 행한다.
● 사용자는, 자신의 리더(
Figure pct00891
)를 식별하고, 자신의 리더의 제안된 블록 해시를 소프트-투표한다(주석 43: i가 소프트-투표 전에 실제 블록을 본다는 점은 요건이 아니다).
단계(3): [인증 단계]
Figure pct00892
라고 하자. 사용자(i)는,
Figure pct00893
일 때 다음에 따르는 것을 행한다.
● i가 H(B)에 대한 tH개의 소프트-투표와 함께 유효 블록(B)을 보면, i는 H(B)를 인증-투표한다.
단계(4): [제1 종료 단계] 사용자(i)는,
Figure pct00894
일 때 다음에 따르는 것을 행한다.
● i가 단계(3)에서 소정의 값(v)을 인증-투표하였다면(주석 44: i는,
Figure pct00895
에 있지 않으면, 자신의 투표를 전파하지 않고 "자신을 위해" 소정의 값(v)을 여전히 인증-투표하였을 수 있음), v를 다음-투표하고,
● 아닌 경우에는,
Figure pct00896
를 다음-투표한다.
단계(5): [제2 종료 단계] 사용자(i)는,
Figure pct00897
일 때 다음에 따르는 것을 행하며, 여기서, L은 예를 들어
Figure pct00898
이다(주석 45: 적대자가 사용자를 동적으 로 손상시킬 수 없다면, 단계(5)를 시간(
Figure pct00899
)까지 지속시키는 것이 충분하며, 우리의 승인된 버전의 프로토콜에서와 같이 추가 단계가 없다. 추가 단계는, 적대자가 단계(4)와 단계(5)의 모든 메시지를 취하고 단계(4)와 단계(5)의 모든 위원회 구성원을 손상시켜 이들이 파티션 후에 자신들의 메시지를 재전송할 수 없더라도, 파티션이 분해된 후에 프로토콜이 복구되는 것을 보장하도록 사용된다. 작은 L은 최악의 경우 파티션 분해를 가속하는 데 일조하는 한편, 큰 L은 일단 파티션이 분해된 후에 재전파되어야 하는 메시지의 양을 감소시킨다).
● i는, 유효 블록(B)을 H(B)에 대한 tH개의 소프트-투표와 함께 보면, H(B)를 다음-투표한다.
단계들(
Figure pct00900
): [연속적 종료 단계들]
● s가 짝수이면, i는,
Figure pct00901
=
Figure pct00902
일 때 단계(4)에서와 같이 동일한 투표 지침을 따른다.
● 아닌 경우에는(즉, s가 홀수이면), i는,
Figure pct00903
Figure pct00904
일 때 단계(5)에서와 같이 동일한 투표 지침을 따른다.
라운드(r), 기간(p≥2)
다음에 따르는 것은 일반 사용자(i)에 대한 기간(p) 지침이다. 다시, 사용자(i)가 특정 단계의 위원회에 있지 않으면, 사용자는 해당 단계에서 자신의 투표를 여전히 연산하지만 그 투표를 전파하지는 않는다.
사용자(i)는, 기간(p'>p)을 시작하지 않은 경우에만 그리고 기간(p-1)의 동일한 단계(s)에 대하여 (⊥와 같을 수 있는) 소정의 값(v)에 대한 tH개의 다음-투표를 수신하는 순간에 기간(p)을 시작한다. 사용자(i)는 기간(p)에 대한 자신의 시작값(
Figure pct00905
)을 v로 설정한다. i는, 기간(p)을 시작하는 순간에, 모든 이전 기간을 종료하고
Figure pct00906
를 0으로 리셋한다.
단계(1): [블록 제안] 사용자(i)가 잠재적 리더이면, 사용자는
Figure pct00907
=O일 때 다음에 따르는 것을 행한다.
● i는, 기간(p-1)의 동일한 단계(s)에 대하여 ⊥에 대한 tH개의 다음-투표를 보았다면(주석 46: 극단적인 경우에, 사용자(i)는, ⊥에 대한 tH개의 다음-투표 및 소정의 기간(p-1)에 대한 tH개의 다음-투표를 동시에 불 수 있다. 사용자는 이 경우에 자신의 시작값을 ⊥ 또는 v로 자유롭게 설정할 수 있지만, 블록 제안 단계는 항상 ⊥에 우선순위를 준다), 새로운 블록(
Figure pct00908
)을 제안하며, 이 블록은 사용자의 제안된 시드(
Figure pct00909
)를
Figure pct00910
로서 정의한다(주석 47: 즉, 기간(p≥2)에 대하여 새롭게 제안된 블록은 그 기간에 대하여 리더가 없는 것과 같으며, 대응하는 시드(Qr)는, Br이 비어있는 블록일 때 초기 알고리즘 프로토콜과 동일한 방식으로 정의된다). 사용자는,
Figure pct00911
를 전파하고, 그 직후, 블록 자체도 전파한다.
● 아니라면(즉, i가
Figure pct00912
및 기간(p-1)의 동일한 기간(s)에 대하여 소정의
Figure pct00913
에 대한 tH개의 다음-투표만ㄴ을 수신하였음), i는
Figure pct00914
를 전파함으로써 이를 제안한다(주석 48: 이 경우,
Figure pct00915
인 것처럼 충분한 정직한 사용자들이 유효 블록(B)을 보았고, i 자체가 B를 볼 필요는 없다).
단계(2): [필터링 단계] 사용자(i)는,
Figure pct00916
일 때 다음에 따르는 것을 행한다.
● i는, 사용자(i)는, 기간(p-1)의 동일한 단계(s)에 대하여 ⊥에 대한 tH개의 다음-투표를 보았다면(주석 49: 이들 투표는 사용자의 시간(
Figure pct00917
) 동안 i에 도달할 수 있으므로, i의 시작값은 반드시 ⊥일 필요가 없다는 점에 주목한다), 기간(p)에 대한 자신의 리더(
Figure pct00918
)를 식별하고,
Figure pct00919
에 의해 제안되는 값(v)을 소프트-투표한다.
● 아니라면(즉, i가,
Figure pct00920
및 기간(p-1)의 동일한 기간(s)에
Figure pct00921
대한 tH개의 다음-투표만을 수신하였음), i는
Figure pct00922
를 소프트-투표한다.
단계(3): [인증 단계] 사용자(i)는,
Figure pct00923
일 때 다음에 따르는 것을 행한다.
● i는, 유효 블록(B)을 H(B)에 대한 tH개의 소프트-투표와 함께 보면, H(B)를 인증-투표한다.
단계(4): [제1 종료 단계] 사용자(i)는,
Figure pct00924
일 때 다음에 따르는 것을 행한다.
● i는, 단계(3)에서 소정의 값(v)을 인증-투표하였다면, v를 다음-투표한다.
● 아닌 경우, i가 기간(p-1)의 동일한 단계(s)에 대하여 ⊥에 대한 tH개의 다음-투표를 보았다면, ⊥를 다음-투표한다.
● 아닌 경우,
Figure pct00925
를 다음-투표한다.
단계(5.1): [제2 종료 단계] 사용자(i)는,
Figure pct00926
일 때 다음에 따르는 것을 행한다.
● i는, 유효 블록(B)을 H(B)에 대한 tH개의 소프트-투표와 함께 보면, H(B)를 다음-투표한다.
단계(5.2): [제2 종료 단계] 사용자(i)는,
Figure pct00927
일 때 다음에 따르는 것을 행한다(주석 50: 단계(5.1) 및 단계(5.2)는 상이한 위원회들을 갖도록 상이한 단계들로 되어 있다).
● i는, 단계(3)에서 인증-투표하지 않았고 기간(p-1)의 동일한 단계(s)에 대하여 ⊥에 대한 tH개의 다음-투표를 본다면, ⊥를 다음-투표한다.
단계(S≥6): [연속적 최종 단계들]
● s가 짝수이면, i는,
Figure pct00928
Figure pct00929
일 때 단계(4)에서와 같이 동일한 투표 지침을 따른다.
● 아닌 경우(즉, s가 홀수이면), i는,
Figure pct00930
일 때 단계(5.1 및 5.2)에서와 같이 동일한 투표 지침을 병행하여 따른다.
라운드 변경
모든 사용자(
Figure pct00931
)에 대한 지침:
● i가 라운드(r)에서 기능하고 있는 임의의 시점에서,
- i가 기간(
Figure pct00932
)에 대하여 v에 대한 적어도 tH개의 인증-투표를 수신하였고(주석 51: 플레이어(j)로부터의 인증-투표는, 플레이어(i)가 동일한 기간에 있어서 상이한 값에 대하여 인증-투표하는 j로부터 메시지를 또한 수신하였더라도 카운팅된다. 분석에서 알 수 있듯이, 이는 모든 정직한 사용자가 서로 시간(λ) 내에 CERT를 아는 것을 보장하기 위한 것임),
- i가 v에 대응하는 블록 헤더를 수신한 것처럼(주석 52: 헤더는 시드(
Figure pct00933
)를 정의하며, 전술한 바와 같이, 엄격하게 말하자면, 헤더는 v 자체의 일부임)
i가 스트링(
Figure pct00934
) 및 기간(
Figure pct00935
)을 보면,
i는, 기간(
Figure pct00936
)에 대하여 v를 인증-투표하고(주석 53: 이론적 분석을 위해서는, i는, 자신이 수신한 tH개의 인증-투표를 미리 전파하는 데 도움을 주었기 때문에, 자신의 투표를 전파할 필요가 없다. 그러나,
Figure pct00937
일 때 i가 자신의 투표를 전파하게 함으로써, 다른 사용자들이 인증서를 실제로 더욱 빨리 보게 하는 데 도움을 줌),자신의 고유한
Figure pct00938
에 대한 인증-투표들의 세트로 설정하고, 라운드(r+1)를 시작한다.
도 6을 참조해 보면, 다이어그램(20')은, 인터넷과 같은 데이터 네트워크의 제1 부분(24')에 접속된 제1 복수의 연산 워크스테이션(22a 내지 22c) 및 데이터 네트워크의 제2 부분(24")에 접속된 제2 복수의 연산 워크스테이션(22a' 내지 22c')을 도시한다. 워크스테이션(22a 내지 22c)은 네트워크의 제1 부분(24')을 통해 서로 통신하고, 워크스테이션(22a' 내지 22c')은 네트워크의 제2 부분(24")을 통해 서로 통신한다. 그러나, 도 1의 다이어그램(20)과는 달리, 워크스테이션(22a 내지 22c)은, 네트워크가 파티션 메커니즘(26)에 의해 제1 부분(24') 및 제2 부분(24")으로 파티션화되었기 때문에 워크스테이션(22a' 내지 22c')과 통신하지 않는다. 파티션 메커니즘(26)은 네트워크의 부분들(24', 24") 간의 통신을 억제하는 임의의 메커니즘일 수 있다. 파티션 메커니즘(26)은, 적대자에 의해 의도적으로 네트워크에 삽입될 수 있거나 정전 또는 네트워크 스위칭 에러 등의 자연적 또는 인공적 현상에 의해 야기되는 예상치 못한 네트워크 중단으로 인해 발생할 수 있음에 주목한다. 본원에서 설명하는 시스템에서, 각각의 워크스테이션(22a 내지 22c, 22a' 내지 22c')은 전술한 단계들을 수행하지만, 제1 복수의 워크스테이션(22a 내지 22c)은 제2 복수의 워크스테이션(22a' 내지 22c')과 통신하지 않는다. 즉, 각각의 엔티티(22a 내지 22c)는 부분(24') 내에서 트랜잭션 시스템을 국부적으로 관리하는 반면, 각각의 엔티티(22a' 내지 22c')는 부분(24") 내에서 트랜잭션 시스템을 국부적으로 관리한다. 부분들(24', 24") 중 최대 하나만이 인증된 블록들을 생성하기에 충분한 사용자(엔티티)를 가지고 있다. 파티션 메커니즘(26)이 제거되고 부분들(24', 24")이 (도 1과 관련하여 전술한 네트워크(24)와 같은) 단일 네트워크로 수렴한 후, 모든 워크스테이션(22a 내지 22c, 22a' 내지 22c')은, 서로 통신하며, 체인의 동일한 지점(블록)에서 동작을 재개할 수 있다. 파티션 메커니즘(26)이 제거된 후, 각각의 엔티티(22a 내지 22c, 22a' 내지 22c')는, 모든 엔티티(22a 내지 22c, 22a' 내지 22c')가 서로 통신하는 네트워크에서 단일 트랜잭션 시스템을 관리한다.
분석. 네트워크가 파티션화되더라도, 새로운 실시예는 안전한 상태를 유지하며, 즉, 최대 하나의 블록이 각 라운드(r)에 대해 인증된다. 높은 수준에서, 이것은, 정직한 사용자들이 라운드(r)의 각 기간마다 최대 한 번 인증-투표하고, 위원회 크기(n)와 임계값(tH)의 선택이 각 기간(r.p)에서 유효 블록(B)의 최대 하나의 해시값(H(B))이 인증서를 얻을 수 있음을 보장하기 때문이다. 다른 방향에서 볼 때, 기간(r.p)이
Figure pct00939
에 있어서 하나의 유효 블록(B)마다 tH개의 인증-투표를 생성하였고 다른 유효 블록(B')에 대하여 tH개의 인증-투표를 생성하였다고 가정한다면, n과 tH가 어떻게 선택되는지는 적어도 하나의 정직한 사용자가 B와 B'의 해시값들에 대해 인증-투표를 했음을 암시하며, 이는 정직한 사용자가 기간(r.p) 동안 최대 한 번 인증 투표한 사실과 상반된다.
소정의 기간(r.p)에, 유효 블록(B)이 해당 해시값(H(B))에 대해 적어도 tH개의 인증-투표인 인증서를 획득한 경우, 모든 미래 기간(p'>p)(이들에 도달한 경우), B는 기간(r.p')에 인증서를 얻을 수 있는 유일한 블록으로 된다. 실제로, 정직한 사용자는 r.p.에서 H(B)에 대하여 인증-투표를 하였다면 r.p 기간 동안 ⊥에 대하여 다음-투표하지 않는다. 따라서, n 및 tH의 동일한 선택에 의해, 기간(r.p)의 단계(s≥4)에서, ⊥ 또는 다른 임의의 값(
Figure pct00940
)에 대한 tH개의 다음-투표가 없을 것이다. 따라서, 정직한 사용자는, H(B)에 대해 적어도 tH개의 투표를 수신한 경우에만 기간(
Figure pct00941
)으로 이동한다. 이에 따라, H(B)는 기간(
Figure pct00942
)의 단계(1)에서 (다시) 제안된 유일한 값이 되고, 정직한 사용자가 기간(
Figure pct00943
)의 단계(2)에서 소프트-투표할 수 있는 유일한 값이고, 결국, 기간(
Figure pct00944
)의 단계(3)에서 인증-투표로 되고 단계(s≥4)에서 다음-투표로 된다. 귀납적 주장에 의하면, 이는 모든 연속 기간에 대해서도 마찬가지이다.
네트워크가 파티션화될 때, B가 기간(r.p) 동안 획득하였다는 것은 정직한 사용자가 인증서를 수신함을 의미하지 않는다는 점에 주목한다. 실제로, 네트워크 파티션 동안, 적대자는 시스템에서 메시지들이 전달되는 방법을 제어한다. 적대자는, 예를 들어, 사용자들의 한 그룹의 인증-투표가 다른 그룹들로 전달되는 것을 허용하지 않는 인증-투표를 제외한 모든 메시지가 적절히 전달되게 할 수 있다. 그럼에도 불구하고, B가 인증서를 획득하였다는 것은, 충분한 정직한 사용자들이 그것에 대하여 인증-투표하였으며 다른 어떠한 것도 다음-투표하지 않음을 의미하며, 이는 기간(r.p) 및 향후 임의의 기간에 다른 임의의 블록이 인증되는 것을 방지한다.
새로운 실시예의 효율은 두 가지 부분에서 비롯된다. 첫째, 네트워크가 파티션화되지 않는 경우 제r 블록에 대한 콘센서스에 빠르게 도달한다. 실제로, 기간(r.1)의 단계(1)의 리더가 정직하면, 모든 정직한 사용자는 자신의 제안된 블록(B)에 대해 즉시 인증-투표하고, B는 기간(r.p)의 단계(3) 후에 인증서를 획득하였으며, 이후에 모든 정직한 사용자는 라운드(r)를 종료한다.
마찬가지로, 라운드(r)가 기간(p≥2)에 도달하였고 기간(p)의 리더(ℓ)가 정직하면, ℓ에 의해 새로 제안되거나 다시 제안된 블록은 단계(3)에서 인증되고, 모든 정직한 사용자는 라운드(r)를 종료한다. 이는, ℓ가 기간(p-1)으로부터 ⊥에 대한 tH개의 다음-투표를 보았고 새로운 블록을 제안한 경우, 그러한 다음-투표가 시간(λ) 내에 모든 정직한 사용자에게 도달하고 ℓ의 제안을 위해 모두 소프트-투표하기 때문이다. 그렇지 않은 경우에는, ℓ는 기간(p-1)으로부터 유효 블록(B)의 해시(H(B))에 대한 tH개의 다음-투표만을 보았으며, H(B)를 다시 제안하였다. 기간(p)의 모든 정직한 사용자의 시작값은 ⊥ 또는 H(B)이며, 어떤 경우든, 정직한 사용자들은, 전자의 경우에 리더의 제안을 따르기 때문에 그리고 후자의 경우에 자신의 시작값에 대하여 투표하기 때문에, H(B)에 대해 소프트-투표한다.
또한, 소정의 유효 블록(B)에 대한 인증서가 기간(r.p)에 생성되면, 그 후 모든 정직한 사용자는 라운드(r)를 곧 종료한다. 이는, B에 대한 적어도 tH개의 인증-투표가 정직한 사용자들로부터 온 경우, 모든 정직한 사용자는 시간(λ) 이내에이러한 인증-투표를 수신하고 B를 제r 블록으로 하여 라운드(r)를 종료하기 때문이다. B에 대한 tH개의 인증-투표들의 임의의 세트가 적어도 하나의 악의적 사용자를 포함하면, 악의적 사용자는 자신의 인증-투표를 전송하지 않는 것을 선택할 수 있고, 정직한 사용자가 B에 대한 인증서를 즉시 수신하지 못한다. 그러나, n과 tH를 선택함으로써, B에 대한 인증서가 적어도 하나의 정직한 사용자(i)를 포함하고 i가 그것을 인증-투표하기 전에 B에 대한 tH개의 소프트-투표를 수신하였음을 보장한다. i는 이들 소프트-투표를 전파하였으며 네트워크가 파티션화되지 않았으므로, 모든 정직한 사용자는 시간(λ) 내에 소프트-투표를 수신하고 단계(5.1)에서 H(B)에 대해 다음-투표한다. 이에 따라, 모든 정직한 사용자는, 시작값(H(B))으로 기간(
Figure pct00945
)을 시작하고, 기간(
Figure pct00946
)의 리더가 정직한지 여부에 관계없이 기간(
Figure pct00947
)의 단계(2)에서 소프트-투표한다. 결과적으로, 정직한 사용자는 단계(3)에서 H(B)에 대하여 인증-투표하고, B는 이제 정직한 사용자로부터 인증서를 획득하였으며, 모든 정직한 사용자는 인증서를 수신하여 시간(λ) 이내에 라운드(r)를 종료한다.
새로운 실시예에서 사용되는 시드(Qr) 및 암호화 추첨을 선택함으로써, 라운드(r)의 각 기간(p)이 초기 알고랜드 프로토콜에서와 같이 높은 확률로 정직한 리더를 가지며, 거기로부터 네트워크 파티션이 후속하지 않는 경우 새로운 실시예의 효율에 대한 상세한 분석이 누락되는 것을 보장한다.
둘째, 네트워크 파티션이 분해된 후, 프로토콜은 신속하게 복구되고 콘센서스에 빠르게 도달한다. 실제로, 일부 정직한 사용자가 파티션 중에 라운드(r)에서 블록(B)에 대한 인증서를 수신하고 라운드(r+1)로 이동한 경우, 일단 파티션이 분해되면, 모든 정직한 사용자는 B에 대한 이러한 인증서를 수신하고 라운드(r+1)로 이동한다. 또한, p를, 정직한 사용자(i)가 파티션 중에 도달한 라운드(r+1)에서 가장 먼 기간이라고 하자. 이어서, i가 기간(
Figure pct00948
)으로 이동할 수 있게 한 모든 다음-투표는, 파티션이 분해된 후에 다른 정직한 사용자에게 도달하고, 또한 기간(
Figure pct00949
)으로 이동한다. 이어서, 프로토콜은 네트워크 파티션이 없을 때와 동일한 분석에 따라 평소대로 계속 진행된다. 파티션 중에 정직한 사용자가 라운드(r)에서 라운드(r+1)로 이동하지 않은 경우, 모든 정직한 사용자는 동일한 라운드에 있지만 상이한 기간들에 있을 수 있다. 이 경우, p를, 정직한 사용자(i)가 파티션 중에 도달한 라운드(r)에서 가장 먼 기간이라고 하자. 마찬가지로, 파티션이 분해된 후, i가 기간(r.p)으로 이동할 수 있게 하는 모든 다음-투표는, 다른 정직한 사용자에게 도달하고, 기간(r.p)으로 이동한다. 다시, 프로토콜은 평소와 같이 거기서부터 계속된다.
요약하면, 새로운 실시예는, 네트워크가 파티션화된 경우에도 안전하고 소프트-포크되지 않는다. 이러한 실시예는, 네트워크가 파티션화되지 않은 경우 블록을 효율적으로 생성하고, 네트워크 파티션이 분해된 후애 빠르게 복구된다.
10 범위
본원에서 설명하는 메커니즘은, 네트워크 파티션 동안 하나보다 많은 블록이 인증되는 것을 방지하고 파티션이 분해된 후에 생존성을 빠르게 복구하는 것이 바람직한 다른 블록체인 시스템에 적용가능하다는 점에 주목한다. 따라서, 본원에서 설명하는 시스템은, 다른 블록체인 체계, 심지어 통화와 직접 관련되지 않은 블록체인 체계로 구성될 수 있다.
본원에서 설명하는 시스템은, 2017년 5월 4일에 국제출원된 PCT/US2017/031037, 2017년 8월 17일에 출원된 15/551,678, 2018년 10월 24일에 출원된 16/096,107, 2018년 9월 28일에 국제출원된 PCT/US2018/053360, 2018년 10월 4일에 국제출원된 PCT/US2018/054311, 2018년 2월 20일에 출원된 62/632,944, 2018년 3월 15일에 출원된 62/643,331, 2018년 12월 10일 출원된 62/777,410, 및 2018년 12월 12일에 출원된 62/778,482 중 임의의 것 또는 전부에서 설명하는 메커니즘에 적용되고 이러한 메커니즘과 결합되도록 구성될 수 있고, 이들 모두는 본원에 참고로 원용된다.
본원에서 설명하는 시스템의 소프트웨어 구현예는, 컴퓨터 판독가능 매체에 저장되고 하나 이상의 프로세서에 의해 실행되는 실행가능 코드를 포함할 수 있다. 컴퓨터 판독가능 매체는, 비일시적일 수 있고, 컴퓨터 하드 드라이브, ROM, RAM, 플래시 메모리, CD-ROM, DVD-ROM, 플래시 드라이브, SD 카드 및 USB 인터페이스 등의 휴대용 컴퓨터 저장 매체, 및/또는 실행가능 코드가 프로세서에 의해 저장 및 실행될 수 있는 다른 임의의 적절한 유형 또는 비일시적 컴퓨터 판독가능 매체 또는 컴퓨터 메모리를 포함한다. 본원에서 설명하는 시스템은 임의의 적절한 운영 체제와 관련하여 사용될 수 있다.
본 발명의 다른 실시예들은, 본원에 개시된 본 발명의 명세서 또는 실시를 고려하여 당업자에게 명백할 것이다. 본 명세서와 예들은 단지 예시적인 것으로 간주되며, 본 발명의 진정한 범위 및 사상은 다음에 따르는 청구범위에 의해 지시되는 것을 의도한 것이다.

Claims (20)

  1. 트랜잭션들이 충분한 수의 검증자들의 디지털 서명들에 의해 인증되는 블록들의 시퀀스로 조직되는 트랜잭션 시스템을 엔티티가 관리하는 방법으로서,
    제r 블록(Br)이 인증되지 않았다면 인증된 블록들(
    Figure pct00950
    )의 시퀀스에 관한 새로운 유효 트랜잭션들을 포함하는 블록(B')의 해시를 상기 엔티티가 제안하는 단계; 및
    상기 제r 블록(Br)이 충분한 수의 다른 엔티티들에 의해 검증되었다면 상기 블록(Br)의 해시를 상기 엔티티가 제안하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 블록에 대한 트랜잭션들을 확인하고 상기 블록을 구성 및 전파할 자격이 있는 엔티티에 의해 상기 블록이 구성 및 전파되었음을 확인한 것에 응답할 때에만 상기 엔티티에 의해 블록이 인증되는, 방법.
  3. 제1항에 있어서, 상기 엔티티는, 해시값을 디지털 서명함으로써 상기 해시값을 제안하여 상기 해시값의 디지털 서명된 버전을 제공하고, 상기 엔티티는 상기 해시값의 디지털 서명된 버전을 다른 엔티티들을 포함하는 네트워크에 전파하는, 방법.
  4. 제3항에 있어서, 제r 블록(Br)이 인증되지 않았다면, 상기 엔티티는 상기 블록(B')도 디지털 설명하고 전파하는, 방법.
  5. 제1항에 있어서, 상기 엔티티는, 이전 블록들로부터 양(Q)을 결정하고, Q에 고유하게 연관된 스트링(S)을 연산하기 위해 비밀 키를 사용하고, S 자체, S의 함수, 및 S의 해시값 중 적어도 하나인 양(T)을 S로부터 연산하고, 상기 엔티티는 T가 소정의 특성을 보유하는지 여부를 결정함으로써 해시값을 제안할지 여부를 결정하는, 방법.
  6. 제5항에 있어서, S는 상기 엔티티의 비밀 키 하에 있는 Q의 서명이고, T는 S의 해시이고, T가 소정의 임계값 미만이면 T가 상기 소정의 특성을 보유하는, 방법.
  7. 제1항에 있어서, 상기 엔티티는 엔티티들의 네트워크 중 일부이고, 상기 엔티티들 중 특정한 하나의 엔티티가 상기 블록(Br)을 구성 및 전파하는, 방법.
  8. 제7항에 있어서, 상기 제r 블록(Br)은, 상기 엔티티들의 적어도 미리 정해진 수가 상기 제r 블록(Br)에 대응하는 해시값을 개별적으로 인증한다는 표시를 상기 엔티티가 수신하면 상기 엔티티에 의해 인증되는 것으로 결정되는, 방법.
  9. 제8항에 있어서, 상기 엔티티들의 미리 정해진 수가 상기 제r 블록(Br)을 개별적으로 인증하였다는 상기 표시를 상기 엔티티가 수신함에 응답하여, 상기 엔티티는 r을 증분하여 추가 블록들을 상기 블록들의 시퀀스에 추가하기 시작하는, 방법.
  10. 제7항에 있어서, 상기 엔티티들 중 상기 특정한 하나의 엔티티는 상기 엔티티들의 미리 정해진 수에 의해 리더로서 개별적으로 선택되는, 방법.
  11. 제10항에 있어서, 상기 제r 블록(Br)은, 상기 엔티티들의 적어도 미리 정해진 수가, 상기 엔티티들 중 상기 특정한 하나의 엔티티가 상기 제r 블록(Br)에 대응하는 해시값을 상기 엔티티들의 상기 미리 정해진 수의 각각에 제공하였다는 표시의 수신을 개별적으로 검증하는 표시를 상기 엔티티가 수신하면, 상기 엔티티에 의해 인증될 수 있는 것으로 결정되는, 방법.
  12. 트랜잭션들이 인증된 블록들의 시퀀스로 조직되는 트랜잭션 시스템을 엔티티가 관리하는 방법으로서,
    상기 엔티티가, 인증된 블록들(
    Figure pct00951
    )의 시퀀스에 관한 새로운 유효 트랜잭션들에 기초하여 블록을 생성한 다른 엔티티로부터 상기 블록(Br)의 해시값을 수신하는 단계;
    상기 엔티티가, 충분한 수의 다른 엔티티들이 다른 엔티티로부터의 상기 블록(Br)의 해시값의 수신을 표시하고 상기 해시값이 상기 블록(Br)에 대하여 유효함에 응답하여 상기 블록(Br)을 인증하는 단계;
    상기 엔티티가, 불충분한 수의 다른 엔티티들이 상기 다른 엔티티로부터의 상기 블록(Br)의 해시값의 수신을 표시함에 응답하여, 인증된 블록들(
    Figure pct00952
    )의 시퀀스에 관한 새로운 유효 트랜잭션들에 기초하여 새로운 블록(B')을 생성하는 단계로서, B'은 Br과 상이한, 단계; 및
    상기 엔티티가, 상기 엔티티들의 미리 정해진 수가 상기 제r 블록(Br)을 개별적으로 인증하거나 상기 엔티티들의 미리 정해진 수가 상기 새로운 블록(B')을 개별적으로 인증하였다는 표시를 상기 엔티티가 수신함에 응답하여, r을 증분하여 추가 블록들을 상기 블록들의 시퀀스에 추가하기 시작하는 단계를 포함하는, 방법.
  13. 제12항에 있어서, 상기 블록들은 디지털 서명들에 의해 인증되는, 방법.
  14. 제12항에 있어서, 새로운 블록들은, 상기 엔티티들의 미리 정해진 수가 이전에 제안된 블록을 개별적으로 인증하였다는 표시를 수신할 때까지 상기 엔티티들 중 상이한 엔티티들에 의해 제안되는, 방법.
  15. 제12항에 있어서, 상기 엔티티는, 상기 블록(Br)에 대하여 유효하지 않은 상기 해시값에 응답하여 새로운 블록이 생성되어야 한다는 표시를 제공하는, 방법.
  16. 제15항에 있어서, 상기 엔티티는, 상기 다른 엔티티들의 충분한 수가 새로운 블록이 생성되어야 한다는 표시를 제공함에 응답하여, 인증된 블록들(
    Figure pct00953
    )의 시퀀스에 관한 새로운 유효한 트랜잭션들에 기초하여 새로운 블록(B')을 생성하는, 방법.
  17. 제12항에 있어서, 상기 엔티티는, 상기 다른 엔티티들의 충분한 수가 상기 다른 엔티티로부터의 상기 블록(Br)의 해시값의 수신을 표시하였고 상기 해시값이 상기 블록(Br)에 대하여 유효함에 응답하여, 상기 블록(Br)의 해시값이 전파되어야 한다는 표시를 제공하는, 방법.
  18. 트랜잭션들이 블록들로 조직되고 블록들이 디지털 서명들의 세트에 의해 인증되는 트랜잭션 시스템에서 블록들(
    Figure pct00954
    )의 소정의 시퀀스에 관한 트랜잭션들의 새로운 블록(Br)에 대한 액세스 없이 상기 새로운 블록(Br)의 제안된 해시값을 엔티티가 검증하는 방법으로서,
    상기 엔티티가 이전 블록들로부터의 양(Q)을 결정하게 하는 단계;
    상기 엔티티가 Q의 디지털 서명(S)을 연산하게 하는 단계;
    상기 엔티티가 S 자체, S의 함수, 및 S의 해시값 중 적어도 하나인 양(T)을 S로부터 연산하게 하는 단계;
    상기 엔티티가 T가 소정의 특성을 보유하는지 여부를 결정하게 하는 단계; 및
    T가 상기 소정의 특성을 보유한다면, 상기 제안된 해시값이 상기 새로운 블록(Br)에 대응하는지 여부의 확인과 무관하게 상기 엔티티가 상기 새로운 블록(Br)의 제안된 해시값을 검증하게 하는 단계를 포함하는, 방법.
  19. 제18항에 있어서, 상기 엔티티는, 상기 새로운 블록(Br)의 수신 전에 상기 새로운 블록(Br)의 제안된 해시값을 전파하는, 방법.
  20. 비일시적 컴퓨터 판독가능 매체에 제공된 컴퓨터 소프트웨어로서,
    제1항 내지 제19항 중 어느 한 항의 방법을 구현하는 실행가능 코드를 포함하는, 컴퓨터 소프트웨어.
KR1020207020497A 2017-12-19 2018-12-19 고속 파티션 탄력적 블록체인 KR20200102460A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201762607558P 2017-12-19 2017-12-19
US62/607,558 2017-12-19
US201862632944P 2018-02-20 2018-02-20
US62/632,944 2018-02-20
US201862643331P 2018-03-15 2018-03-15
US62/643,331 2018-03-15
US201862777410P 2018-12-10 2018-12-10
US62/777,410 2018-12-10
US201862778482P 2018-12-12 2018-12-12
US62/778,482 2018-12-12
PCT/US2018/066481 WO2019126311A1 (en) 2017-12-19 2018-12-19 Fast and partition-resilient blockchains

Publications (1)

Publication Number Publication Date
KR20200102460A true KR20200102460A (ko) 2020-08-31

Family

ID=66995114

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020497A KR20200102460A (ko) 2017-12-19 2018-12-19 고속 파티션 탄력적 블록체인

Country Status (12)

Country Link
EP (1) EP3729351A4 (ko)
JP (1) JP2021507629A (ko)
KR (1) KR20200102460A (ko)
CN (1) CN111566681A (ko)
AU (1) AU2018392471A1 (ko)
BR (1) BR112020012449A2 (ko)
CA (1) CA3086361A1 (ko)
IL (1) IL275211A (ko)
MX (1) MX2020006642A (ko)
RU (1) RU2020119312A (ko)
SG (1) SG11202005400QA (ko)
WO (1) WO2019126311A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762842B2 (en) * 2019-03-18 2023-09-19 Jio Platforms Limited Systems and methods for asynchronous delayed updates in virtual distributed ledger networks
CN111292082B (zh) * 2020-01-13 2022-12-20 蚂蚁区块链科技(上海)有限公司 一种块链式账本中的公钥管理方法、装置及设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7490065B1 (en) * 1999-10-18 2009-02-10 Stamps.Com Cryptographic module for secure processing of value-bearing items
WO2002088874A2 (en) * 2001-04-27 2002-11-07 Massachusetts Institute Of Technology Method and system for micropayment transactions
US7797457B2 (en) * 2006-03-10 2010-09-14 Microsoft Corporation Leaderless byzantine consensus
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
US20160379212A1 (en) * 2015-06-26 2016-12-29 Intel Corporation System, apparatus and method for performing cryptographic operations in a trusted execution environment
US20170048209A1 (en) * 2015-07-14 2017-02-16 Fmr Llc Crypto Key Recovery and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
KR20220088507A (ko) * 2016-05-04 2022-06-27 실비오 미칼리 분산 거래 전파 및 검증 시스템
CN106548349B (zh) * 2016-11-02 2020-09-29 江苏通付盾科技有限公司 交易信息验证方法及系统
CN106971302A (zh) * 2017-04-17 2017-07-21 北京工商大学 一种基于区块链技术的三维模型确权与交易方法

Also Published As

Publication number Publication date
EP3729351A4 (en) 2021-10-20
CN111566681A (zh) 2020-08-21
RU2020119312A (ru) 2022-01-20
IL275211A (en) 2020-07-30
EP3729351A1 (en) 2020-10-28
SG11202005400QA (en) 2020-07-29
JP2021507629A (ja) 2021-02-22
AU2018392471A1 (en) 2020-06-25
MX2020006642A (es) 2020-12-07
WO2019126311A1 (en) 2019-06-27
BR112020012449A2 (pt) 2020-11-24
CA3086361A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
Chen et al. Algorand
KR102409819B1 (ko) 분산 거래 전파 및 검증 시스템
Chen et al. Algorand: A secure and efficient distributed ledger
US20200396059A1 (en) Fast and partition-resilient blockchains
KR20200101326A (ko) 메시지 자격증명된 블록체인
KR20210135495A (ko) 블록체인 스마트 컨트랙트들에서 난수들을 발생하기 위한 방법
CN111466098B (zh) 用于盲性结果选择的区块链实现的安全系统和方法
Hubert Chan et al. Consensus through herding
CN108886466B (zh) 计算机实现的方法及设备
KR20200102460A (ko) 고속 파티션 탄력적 블록체인
Berrang et al. Albatross–an optimistic consensus algorithm
Cerulli et al. vetkeys: How a blockchain can keep many secrets
Tran et al. Blockchain in a nutshell
Li et al. Cryptoeconomics: Economic Mechanisms Behind Blockchains
Cherniaeva et al. Game channels: State channels for the gambling industry with built-in PRNG
Kokoris Kogias Secure, confidential blockchains providing high throughput and low latency
Van Hijfte Underlying Concepts and Technologies
Mirzaei et al. Algorand Blockchain
Chakraborty et al. Blockchain-Based Security Solutions for Big Data and IoT Applications
Kiayias et al. State of the Art of Cryptographic Ledgers
Nguyen et al. A Survey about Consensus Algorithms

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application