KR20210034545A - 준안정 비잔틴 동의 - Google Patents

준안정 비잔틴 동의 Download PDF

Info

Publication number
KR20210034545A
KR20210034545A KR1020207035496A KR20207035496A KR20210034545A KR 20210034545 A KR20210034545 A KR 20210034545A KR 1020207035496 A KR1020207035496 A KR 1020207035496A KR 20207035496 A KR20207035496 A KR 20207035496A KR 20210034545 A KR20210034545 A KR 20210034545A
Authority
KR
South Korea
Prior art keywords
given transaction
transactions
state
transaction
nodes
Prior art date
Application number
KR1020207035496A
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 KR20210034545A publication Critical patent/KR20210034545A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • 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
    • G06Q2220/00Business processing using cryptography
    • 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
    • G06Q2230/00Voting or election arrangements
    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Hardware Redundancy (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

장치는 복수의 부가적인 프로세싱 노드들과 합의 프로토콜에 참여하도록 구성된 제 1 프로세싱 노드를 포함한다. 제 1 프로세싱 노드는 합의 프로토콜에 참여와 함께 부가적인 프로세싱 노드들의 각각의 선택된 서브 세트들의 반복된 폴링을 구현하고, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 주어진 트랜잭션에 대한 복수의 가능한 상태들 중 특정한 것으로 결정하며; 주어진 트랜잭션에 대한 결정된 상태에 적어도 부분적으로 기초하여 적어도 하나의 자동화 동작을 개시하도록 추가로 구성된다. 몇몇 실시예들에서, 제 1 프로세싱 노드는 주어진 트랜잭션과 복수의 다른 트랜잭션들 사이에서의 관계들을 특성화하는 지향성 비순환 그래프 또는 트랜잭션들의 다른 데이터 구조를 유지하기 위해 반복된 폴링의 결과들을 이용한다.

Description

준안정 비잔틴 동의
우선권 주장
본 출원은 2018년 5월 10일에 출원된, "Metastable Byzantine Agreement"라는 제목의, 미국 가특허 출원 일련 번호 제62/669,734호에 대한 우선권을 주장하고, 이는 그 전체가 참조로 본 출원에 통합된다.
분야
분야는 전반적으로 정보 보안에 관한 것이며, 보다 상세하게는, 암호화폐들 및 다른 애플리케이션들에서의 사용을 위한 합의 프로토콜들에 관한 것이다.
다수의 비잔틴 장애 허용(BFT) 프로토콜들이 이 기술분야에 알려져 있다. 몇몇 경우들에서 이들 프로토콜들은 "분산형 컴퓨팅"으로 불리우는 컴퓨터 과학의 서브-분야에 속하는 것으로 보여질 수 있다. 예를 들어, BFT 프로토콜들은 상호 불신하는 기계들(예컨대, 서버들)의 세트가 동의에 이르도록 허용하기 위해 사용될 수 있다. 이러한 동의는 또한 "합의(consensus)"로 불리운다. 보통, 이러한 맥락에서 BFT 프로토콜들은 단지 최대 임계 수의 서버들이 비도덕적인 한(예컨대, 임의로 거동할 수 있으며 네트워크가 합의에 이르는 것을 방지하려고 시도할 수 있다) 적절하게 동작할 수 있다. 종래의 BFT 프로토콜들은 비트코인(Bitcoin) 및 이더리움(Ethereum)과 같은 암호화폐들에서 이용된 나카모토(Nakamoto) 합의 프로토콜들을 포함한다.
예시적인 실시예들은 암호화폐들 및 다른 애플리케이션들에서의 사용을 위한 개선된 합의 프로토콜들을 제공한다. 몇몇 실시예들에서, 합의 프로토콜들은 보다 특히 준안정 네트워크 프로빙 메커니즘에 예시적으로 구축된 리더가 없는 BFT 프로토콜들을 포함한다.
예를 들어, 몇몇 실시예들은 합의를 달성하기 위해 준안정 네트워크 폴링 메커니즘을 사용한다. 상기-주지된 나카모토 합의 프로토콜들은 합의를 달성하기 위해 작업 증명을 사용하여, 그것들을 매우 비효율적이게 만든다. 반대로, 본 출원에서 설명된 예시적인 실시예들에서 준안정 합의 프로토콜들은 어떤 판단도 이루어지지 않으며 작업 증명을 요구하지 않을 때 중단될 수 있지만, 몇몇 실시예들은 작업 증명과 함께 사용될 수 있다.
작업 증명을 사용하지 않는 전통적인 합의 프로토콜들은 통상적으로, 보통 리더에 의해 가능해진, 올-투-올(all-to-all) 브로드캐스트 메커니즘에 의존한다. 이들 프로토콜들은 반드시가 아닌 통상적으로 이차 메시지 복잡도 비용을 초래한다. 또한, 리더의 존재는 통상적으로 성능 병목현상을 도입한다. 이러한 유형의 몇몇 종래의 프로토콜들은 합의에 이를 때까지 많은 라운드들의 통신을 요구하며, 올-투-올 통신이 각각의 라운드에서 요구된다. 이들 및 다른 이유들로, 종래의 접근법들은 일반적으로 다수의 서버들로 스케일링하지 않는다.
반대로, 본 출원에서 설명된 예시적인 실시예들에서 준안정 합의 프로토콜들은 네트워크를 반복적으로 샘플링하도록 구성될 수 있다.
그 결과, 이들 예시적인 실시예들에서 준안정 합의 프로토콜들은 네트워크 크기에 따라 제대로 스케일링하며 메시지 복잡도에서 매우 효율적이어서, 종래의 시스템들보다 높은 스루풋 및 낮은 지연시간을 제공한다.
더욱이, 몇몇 실시예들은 단일 네트워크 폴링이 즉시 여러 트랜잭션들을 암시적으로 찬성하도록 허용하는 지향성 비순환 그래프(DAG : directed acyclic graph) 또는 다른 데이터 구조를 구성함으로써 비용을 분할하는 기술들을 구현하지만, 비용을 분할하기 위한 DAG 또는 다른 유형의 데이터 구조의 사용이 필수는 아니라는 것이 이해될 것이다. 예시적인 실시예들에서 사용될 수 있는 다른 유형들의 데이터 구조들의 예들은 트랜잭션들의 링크된 리스트(linked list) 및 트랜잭션들의 해시 링크된(hash-linked) 체인을 포함한다. 몇몇 실시예들에서, DAG는 트랜잭션 충돌들을 풀기 위해서뿐만 아니라 또한 일관된 전체-순서화된 로그가 네트워크에 걸쳐 복제되는 플랫폼을 제공하도록 구성된 선형으로 순서화된, 체인형 데이터 구조의 형태로 구현된다.
암호화폐들을 효율적으로 및 대규모로 사용하기에 적합하지만, 개시된 기술들은 암호화폐 맥락의 밖에 있는 애플리케이션들을 포함한, 매우 다양한 다른 유형들의 애플리케이션들에서 이용될 수 있다. 예를 들어, 본 출원에 개시된 준안정 합의 프로토콜들은 특정한 설정들을 위해 컴퓨터 네트워크들에서 광역 합의를 구현하기 위해 사용될 수 있다.
일 실시예에서, 장치는 복수의 부가적인 프로세싱 노드들과 합의 프로토콜에 참여하도록 구성된 제 1 프로세싱 노드를 포함한다. 상기 제 1 프로세싱 노드는 또한 합의 프로토콜에 참여와 함께 부가적인 프로세싱 노드들의 각각의 선택된 서브 세트들의 반복된 폴링을 구현하고, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 주어진 트랜잭션에 대한 복수의 가능한 상태들 중 특정 상태로 결의하며, 주어진 트랜잭션에 대한 결의된 상태에 적어도 부분적으로 기초하여 적어도 하나의 자동화된 동작을 개시하도록 구성된다.
몇몇 실시예들에서 주어진 트랜잭션에 대한 상태를 결의하는 것은 주어진 트랜잭션이 유효한 트랜잭션으로 수용되어야 하는지에 대한 결정을 하기 위해 반복된 폴링의 결과들을 이용하는 것을 포함한다. 유효한 트랜잭션으로의 주어진 트랜잭션의 이러한 수용은 보다 일반적으로 본 출원에서 주어진 트랜잭션에 대한 "상태를 결의하는 것(resolving the state)"으로 불리우는 것의 예로 고려된다. 각각이 특정 상태로의 합의 기반 결의를 조건으로 다수의 가능한 상태들을 갖는 매우 다양한 다른 유형들의 트랜잭션은 다른 실시예들에서 프로세싱될 수 있다.
몇몇 실시예들에서, 반복된 폴링은 복수의 반복문(iteration)들에 대해 반복되며, 여기에서 반복문들 중 주어진 것은 부가적인 프로세싱 노드들의 샘플을 선택하는 것, 및 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 것을 포함한다. 몇몇 실시예들에서 샘플은 예시적으로 무작위로 선택된, 확률론적 샘플을 포함한다. 또 다른 예로서, 샘플은 결정론적으로, 가능하게는 시드를 사용하여 선택될 수 있다.
질의들에 대한 적어도 임계 수의 응답들의 수신에 응답하여, 제 1 프로세싱 노드는 수신된 응답들의 적어도 지정된 부분이 제 1 프로세싱 노드에서 주어진 트랜잭션에 대한 현재 상태와 상이한 주어진 트래잭션에 대한 특정 상태를 나타내는지를 결정한다. 대안적으로, 이러한 결정은 특정한 타임아웃에 이르기 전에 충분한 응답들이 수신되지 않았다면, 특정한 타임아웃에 이르는 것에 응답하여 이루어질 수 있다.
수신된 응답들의 지정된 부분이 제 1 프로세싱 노드에서 주어진 트랜잭션에 대한 현재 상태와 상이한 주어진 트랜잭션에 대한 특정 상태를 나타낸다는 것에 응답하여, 제 1 프로세싱 노드는 주어진 트랜잭션에 대한 현재 상태를 특정 상태로 업데이트한다.
부가적으로 또는 대안적으로, 제 1 프로세싱 노드는 몇몇 실시예들에서 주어진 트랜잭션과 복수의 다른 트랜잭션들 사이에서의 관계들을 특성화하는 트랜잭션들의 DAG를 유지하도록 구성되며, 상기 트랜잭션들은 상호 배타적 충돌 세트들로 분할된다. 주어진 이러한 실시예에서, DAG를 유지하는 것은 예시적으로 부가적인 프로세싱 노드들의 샘플을 선택하는 것, 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 것, 및 질의들에 대한 응답들에 적어도 부분적으로 기초하여 DAG를 업데이트하는 것을 포함한다. 예시적으로 이 실시예에서 DAG의 업데이트는 하나 이상의 부가적인 트랜잭션들을 DAG로 삽입하는 것, DAG의 트랜잭션들 중 각각의 트랜잭션에 대한 신뢰 값들을 업데이트하는 것, 및/또는 DAG의 트랜잭션들을 상호 배타적 충돌 세트들로 재분할하는 것을 포함한다. 다시, 링크된 리스트들 및 해시 링크된 체인들과 같은, 다른 유형들의 데이터 구조들이 다른 실시예들에서 사용될 수 있다.
본 발명의 이들 및 다른 예시적인 실시예들은 이에 제한되지 않지만, 시스템들, 방법들, 장치, 프로세싱 디바이스들, 집적 회로들, 및 소프트웨어 프로그램 코드를 구체화한 프로세서 판독 가능한 저장 매체를 포함한 컴퓨터 프로그램 제품들을 포함한다.
도 1은 예시적인 실시예들에서 준안정 비잔틴 동의를 위한 합의 프로토콜을 구현하기 위한 기능을 갖고 구성된 정보 프로세싱 시스템을 도시한다.
도 2 내지 도 7은 예시적인 실시예들에서 합의 프로토콜들의 상이한 변형들에 대한 의사코드의 예시적인 세트들을 도시한다.
도 8 및 도 9는 예시적인 실시예들에서 합의 프로토콜들에 따라 생성된 DAG들의 예들을 도시한다.
본 발명의 실시예들은, 예를 들어, 컴퓨터 네트워크들 또는 네트워크들, 클라이언트들, 서버들, 프로세싱 디바이스들 및 다른 구성요소들의 다른 배열들을 포함한 정보 프로세싱 시스템들의 형태로 구현될 수 있다. 이러한 시스템들의 예시적인 실시예들은 이하에서 상세하게 설명될 것이다. 그러나, 본 발명의 실시예들은 보다 일반적으로 매우 다양한 다른 유형들의 정보 프로세싱 시스템들 및 연관된 네트워크들, 클라이언트들, 서버들, 프로세싱 디바이스들 또는 다른 구성요소들에 적용 가능하다는 것이 이해되어야 한다. 따라서, 본 출원에서 사용되는, 용어 "정보 프로세싱 시스템"은 이들 및 다른 배열들을 포함하도록 광범위하게 해석되도록 의도된다. 본 출원에서 사용되는, 용어 "프로세싱 디바이스"는 유사하게, 예를 들어, 로봇들 및 다른 오토마타를 추가로 포함하도록, 광범위하게 해석되도록 의도된다.
도 1은 예시적인 실시예에서 준안정 비잔틴 동의를 위한 합의 프로토콜을 구현한 정보 프로세싱 시스템(100)을 도시한다. 시스템(100)은 복수의 합의 프로토콜 노드들(102-1, 102-2, 102-3,..., 102-N)을 포함한다. 합의 프로토콜 노드들(102)은 네트워크(105)를 통해 서로 통신하도록 구성된다. 시스템(100)은, 각각의 합의 프로토콜 노드들(102-1 및 102-2)을 통해 네트워크(105)에 결합되는 클라이언트 디바이스들(104-1 및 104-2), 및 네트워크(105)에 직접 결합되는 부가적인 클라이언트 디바이스들(104-m 내지 104-M)을 포함한, 복수의 클라이언트 디바이스들(104)을 추가로 포함한다. 다수의 다른 배열들이 가능하다.
예를 들어, 몇몇 실시예들에서, 클라이언트 디바이스들(104)의 각각은 합의 프로토콜 노드들(102)의 대응하는 것을 통해 네트워크(105)에 결합된다. 또 다른 예로서, 클라이언트 디바이스들(104) 중 하나 이상은 그것에 통합된 합의 프로토콜 노드들(102)의 대응하는 것을 가질 수 있다.
네트워크에 직접 결합된 클라이언트 디바이스들(104-m 내지 104-M)은 각각, 예를 들어, 다양한 다른 기능들을 수행하도록 구성된 다른 유형들의 내부 구성요소들과 조합하여, 그것의 내부 구성요소로서 합의 프로토콜 노드를 통합하도록 구성될 수 있다. 몇몇 실시예들에서, 네트워크에 직접 결합된 클라이언트 디바이스들(104-m 내지 104-M)은 함께 제거된다.
도 1의 실시예에서 노드들(102) 및 클라이언트 디바이스들(104)을 참조하여 사용된 변수들(m, M 및 N) 중 특정한 것들은 본 출원의 다른 곳에서 다른 맥락들에서 상이한 방식들로 이용된다는 것이 주의되어야 한다. 상이한 의미들은 각각의 개별적인 맥락들로부터 분명할 것이다.
합의 프로토콜 노드들(102)은 보다 일반적으로 각각이 메모리에 결합된 프로세서를 포함하는 "프로세싱 노드들"로서 불리우는 것의 예들이다. 몇몇 실시예들에서 이러한 프로세싱 노드들은 각각의 프로세싱 디바이스들로서, 또는 각각의 프로세싱 디바이스들의 부분들로서 구현된다. 상기 용어가 본 출원에서 광범위하게 사용된 프로세싱 노드들의 예들은 컴퓨터들, 서버들 및 다른 유형들의 기계들을 포함한다. 보다 특정한 예로서, 몇몇 실시예들에서, 적어도 합의 프로토콜 노드들(102)의 서브 세트는 각각의 서버들로서 구현된다.
합의 프로토콜 노드들(102)의 각각은 이하에서 보다 상세하게 설명될 바와 같이, 합의 프로토콜 노드들(102)의 다른 것들과 함께 합의 프로토콜에 참여하도록 구성된다. 주어진 프로세싱 디바이는 합의 프로토콜 노드뿐만 아니라 다른 관련된 기능을 구현할 수 있다.
클라이언트 디바이스들(104) 중 하나 이상은 각각, 예를 들어, 랩탑 컴퓨터, 태블릿 컴퓨터 또는 데스크탑 개인용 컴퓨터, 이동 전화, 또는 또 다른 유형의 컴퓨터 또는 통신 디바이스, 내장 디바이스, 또는 로봇, 뿐만 아니라 다수의 이러한 디바이스들의 조합들을 포함할 수 있다. 상기 주지된 바와 같이, 몇몇 실시예들에서, 클라이언트 디바이스들 중 적어도 하나는 합의 프로토콜 노드들(102)의 대응하는 것을 구현할 수 있다. 클라이언트 디바이스들(104)은 예시적으로 합의 프로토콜 노드들(102)에 의해 프로세싱되는 트랜잭션들을 생성한다. 클라이언트 디바이스들(104)은 보다 일반적으로 본 출원에서 각각의 "클라이언트들"로서 불리운다.
시스템(100)의 다양한 요소들 간의 통신들은 도면에서 총괄하여 네트워크(105)로 표현된 하나 이상의 네트워크들을 통해 발생하는 것으로 가정된다. 네트워크(105)는 예시적으로, 예를 들어, 인터넷, 광역 네트워크(WAN), 근거리 네트워크(LAN), 위성 네트워크, 전화기 또는 케이블 네트워크, 셀룰러 네트워크, WiFi 또는 WiMAX와 같은 무선 프로토콜을 사용하여 구현된 무선 네트워크, 또는 이들 및 다른 유형들의 통신 네트워크들의 다양한 부분들 또는 조합들과 같은, 전역적 컴퓨터 네트워크를 포함할 수 있다.
도면에서 예시된 바와 같이 합의 프로토콜 노드(102-1)는 프로세서(120), 메모리(122) 및 네트워크 인터페이스(124)를 포함한다. 프로세서(120)는 메모리(122)에 및 네트워크 인터페이스(124)에 동작 가능하게 결합된다. 프로세서(120)는 준안정 비잔틴 동의를 위한 합의 프로토콜과 연관된 기능을 구현하기 위해 소프트웨어 프로그램 코드(121)를 실행하도록 구성된다.
프로세서(120)는, 예를 들어, 마이크로프로세서, 애플리케이션-특정 집적 회로(ASIC), 필드-프로그램 가능한 게이트 어레이(FPGA), 중앙 프로세싱 유닛(CPU), 산술 논리 유닛(ALU), 그래픽 프로세싱 유닛(GPU), 디지털 신호 프로세서(DSP), 또는 다른 유사한 프로세싱 디바이스 구성요소, 뿐만 아니라 다른 유형들 및 배열들의 프로세싱 회로부를 임의로 조합하여 포함할 수 있다. 프로세서(120)에 의해 실행된 소프트웨어 프로그램 코드(121)의 적어도 부분들은 또한 메모리(122)에 저장되며 실행을 위해서 프로세서(120)에 의해 그로부터 검색된다.
대응하는 프로세서에 의한 실행을 위해 이러한 프로그램 코드를 저장하는 주어진 이러한 메모리는 보다 일반적으로 본 출원에서 프로그램 코드를 구체화한 프로세서 판독 가능한 저장 매체로서 불리우는 것의 예이며, 예를 들어, SRAM, DRAM 또는 다른 유형들의 랜덤 액세스 메모리, 판독-전용 메모리(ROM), 플래시 메모리, 자기 메모리, 광학 메모리, 또는 다른 유형들의 저장 디바이스들과 같은 전자 메모리를 임의로 조합하여 포함할 수 있다.
이러한 프로세서 판독 가능한 저장 매체를 포함한 제조 물품들은 본 발명의 실시예들로 고려된다. 본 출원에서 사용되는, 용어 "제조 물품"은 일시적인, 전파 신호들을 제외하는 것으로 이해되어야 한다.
프로세서 판독 가능한 저장 매체를 포함한 다른 유형들의 컴퓨터 프로그램 제품들이 다른 실시예들에서 구현될 수 있다.
또한, 본 발명의 실시예들은 본 출원에 개시된 준안정 비잔틴 동의를 위한 합의 프로토콜과 연관된 프로세싱 동작들을 구현하도록 구성된 프로세싱 회로부를 포함한 집적 회로들의 형태로 구현될 수 있다.
네트워크 인터페이스(124)는 합의 프로토콜 노드(102-1)가 네트워크(105)를 통해 다른 시스템 요소들과 통신하도록 허용하기 위해 구성되며, 예시적으로 하나 이상의 종래의 트랜시버들을 포함한다.
합의 프로토콜 노드(102-1)는 또한 서브 샘플링된 폴링 모듈(130), 확신 및/또는 신뢰 카운터들(132), 및 알려진 트랜잭션들의 지향성 비순환 그래프(DAG)(134)를 포함한다. 합의 프로토콜 노드(102-1)의 서브 샘플링된 폴링 모듈(130), 카운터들(132) 및 DAG(134) 중 하나 이상의 적어도 부분들은 메모리(122)에 저장되며 프로세서(120)에 의해 실행되는 소프트웨어를 적어도 부분적으로 이용하여 구현될 수 있다. 예를 들어, 본 출원에 개시된 준안정 비잔틴 동의를 위한 합의 프로토콜은 예시적으로 서브 샘플링된 폴링 모듈(130)을 사용하여 합의 프로토콜 노드들(102)의 다른 것들을 샘플링하는 것, 뿐만 아니라 카운터들(132) 및 DAG(134)를 유지하는 것을 수반한다.
이전에 표시된 바와 같이, 본 출원에서 사용되는, 용어 "지향성 비순환 그래프" 또는 DAG는 광범위하게 해석되도록 의도된다. 게다가, 다양한 비-DAG 데이터 구조들이 다른 실시예들에서 사용될 수 있거나, 또는 DAG 또는 다른 데이터 구조의 사용이, 예를 들어, 싱글톤 판단들을 수반한 실시예들에서, 함께 제거될 수 있다. 그러므로, DAG(134)는 다른 실시예들에서 다른 유형들의 데이터 구조들로 대체되거나 또는 완전히 제거될 수 있다는 것이 이해될 것이다.
시스템(100)의 다른 합의 프로토콜 노드들(102)의 각각은 합의 프로토콜 노드(102-1)에 대해 상기 설명된 것과 유사한 방식으로 구성되는 것으로 가정된다. 다른 프로세싱 노드 구성들이 다른 실시예들에서 사용될 수 있다.
동작 시, 합의 프로토콜 노드들(102)의 각각은 본 출원에 개시된 유형의 합의 프로토콜을 실행하는데 합의 프로토콜 노드들(102)의 다른 것들의 선택된 서브 세트들과 상호작용한다. 예를 들어, 합의 프로토콜 노드(102-1)는 그것의 서브 샘플링된 폴링 모듈(130)을 통해 다른 합의 프로토콜 노드들(102)의 각각의 선택된 서브 세트들의 반복된 폴링을 구현하고, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 주어진 트랜잭션에 대한 복수의 가능한 상태들 중 특정 상태로 결의하며, 주어진 트랜잭션에 대한 결의된 상태에 적어도 부분적으로 기초하여 적어도 하나의 자동화된 동작을 개시한다. 반복된 폴링은 확률론적으로(즉, 무작위로) 또는 결정론적으로 선택된 노드들의 서브 세트들에 걸친 것일 수 있다.
몇몇 실시예들에서, 주어진 트랜잭션은 암호화폐 트랜잭션을 포함하지만, 매우 다양한 다른 유형들의 트랜잭션들이 지원될 수 있다. 본 출원에서 사용되는 용어 "트랜잭션"은 그러므로 광범위하게 해석되도록 의도된다. 예를 들어, 상기 용어가 본 출원에서 광범위하게 사용되므로 주어진 트랜잭션에 대한 상태를 결의하는 것은 변수에 대한 복수의 가능한 값들 중 특정한 것을 결정하는 것, 명령 또는 스크립트가 실행되어야 하는지를 결정하는 것 등을 포함할 수 있다. 주어진 트랜잭션은 그러므로 시스템(100)의 합의 프로토콜 노드들(102)에 의해 가능한 상태들 중 특정한 것으로의 합의 기반 결의에 적합한 다수의 가능한 상태들을 가진 임의의 유형의 정보 요소를 포함할 수 있다.
도 2 내지 도 4와 함께 이하에서 설명될 예시적인 실시예들에서, 주어진 트랜잭션을 결의하는 것은, 예를 들어, 합의 프로토콜의 수행을 통해, 변수에 대한, {적색 또는 청색} 또는 {수용 또는 거절}과 같은, 특정한 값을 결정하는 것을 포함한다. 도 5 내지 도 9와 함께 이하에서 설명될 다른 실시예들은 보다 일반적으로 트랜잭션들을 나타낸다.
이것과 관련하여 몇몇 실시예들은 다중 값 합의 및/또는 다중 트랜잭션 합의, 뿐만 아니라 상이한 수의 후보들을 수반한 다른 배열들을 지원하도록 구성될 수 있다는 것이 이해될 것이다. 따라서, 예시적인 실시예들은 1, 2, 또는 2개 이상의 후보들 중에서 상태를 결의할 수 있으며, 본 출원에 개시된 임의의 특정한 이가 예들에 제한되는 것으로 보여져서는 안된다.
합의 프로토콜 노드들(102)은 예시적으로 총괄하여 다수의 방향으로 "산출하도록(yield)", 또는 다시 말해서 도 2 내지 도 4에서의 변수에 대해 적색 또는 청색 상태와 같은, 주어진 트랜잭션에 대한 특정 상태에 대해 특정한 합의로 "넘어가도록(topple over)" 구성된다. 합의 프로토콜 노드들(102)의 상호작용들은 그러므로 주어진 트랜잭션에 대한 상태가, 일단 합의에 이르면 다수의 가능한 상태들 중 특정 상태로 결의되게 한다. 그것의 결의 이전에 주어진 트랜잭션에 대한 상태는 또한 본 출원에서 "준안정" 상태로 불리운다. 이러한 유형의 실시예에서 합의 프로토콜은 본 출원에서 준안정 합의 프로토콜로 불리운다.
이러한 실시예에서 합의 프로토콜 노드들(102)의 각각은 예시적으로, 주어진 트랜잭션에 대한 초기 상태를 선택하고, 수립하거나 또는 그 외 결정하고, 노드들의 이들 샘플링된 서브 세트들에 의해 현재 선호되는 특정 상태를 결정하기 위해 다른 합의 프로토콜 노드들(102)의 상이한 서브 세트들을 반복적으로 샘플링하며, 임계치가 만족된다면 다수 상태 선호를 따른다. 이러한 반복된 샘플링은 예시적으로 합의 프로토콜 노드들(102)의 모두에 의해 대체로 동시에 수행되며, 이들 노드들의 각각은 노드들의 다른 것들에 대해 서브 샘플링된 폴링을 실행한다. 높은 가능성을 가진 합의 프로토콜 노드들(102)은 결국 주어진 트랜잭션에 대한 특정 상태에 대한 합의에 이를 것이다. 상기 주지된 바와 같이, 합의 프로토콜 노드(102)에 의해 상태에 대한 합의에 이를 때까지, 상태는 결의되지 않은 채로 있다. 그러나, 그것은 시간에 걸쳐, 예를 들어, "알려지지 않은"에서 "가능성 있는"에서 "수용됨" 또는 그 외 결의됨으로 진화할 수 있다.
예시적인 실시예들에서 준안정 합의 프로토콜들은, 본 출원의 다른 곳에서 보다 상세하게 설명될 바와 같이, 비잔틴 장애 허용을 제공하도록 구성된다.
주어진 트랜잭션에 대한 결의 상태에 적어도 부분적으로 기초하여 개시되는 자동화 동작들은 분산 원장(ledger)의 유지보수와 연관된 다양한 동작들을 포함할 수 있지만, 명령 또는 스크립트의 실행을 개시하는 것과 같은, 다수의 다른 자동화 동작들이 수행될 수 있다.
예를 들어, 몇몇 실시예들에서, 주어진 트랜잭션에 대한 결의 상태에 적어도 부분적으로 기초하여 합의 프로토콜 노드(102-1)에 의해 개시된 자동화 동작은 제 1 합의 프로토콜 노드(102-1) 및 합의 프로토콜 노드들(102) 중 다른 것들에 의해 총괄하여 유지되는 분산 원장에 주어진 트랜잭션을 특성화하는 엔트리를 부가하는 것을 포함한다.
암호화폐를 수반한 몇몇 실시예들에서, 이러한 유형의 배열에서의 엔트리는 예시적으로 블록을 포함하며 분산 원장은 블록체인을 포함한다. 주어진 이러한 블록체인은 통상적으로 다수의 선형 체인 블록들로서 모델링되지만, 본 출원에서의 예시적인 실시예들은 보다 일반적으로 트랜잭션들 및/또는 계약들을 위한 정보를 운반하는 구조화된 블록들의 임의의 배열들을 잠재적으로 포함하는 것으로서 블록체인을 나타낸다. 본 출원에서의 블록체인을 수반한 실시예들은 그러므로 선형 체인 블록들에 제한되는 것으로 보여져서는 안된다.
몇몇 실시예들에서 블록체인은 합의 프로토콜 노드들(102)에 의해 총괄하여 유지되는 암호화폐 블록체인을 포함한다. 이러한 실시예들에서, 주어진 트랜잭션은, 예를 들어, 암호화폐 어드레스와 지정된 양의 암호화폐를 연관시키기 위해 이용된 블록체인 트랜잭션을 포함할 수 있다.
상기 표시된 바와 같이, 본 출원에서 사용되는, 용어 "블록체인"은 상호 연관된 데이터 블록들을 수반한 암호 동작들을 수행하는 다수의 프로세싱 디바이스들에 의해 총괄하여 유지되는 분산 원장들 및 다른 유사한 배열들을 포함하도록, 광범위하게 해석되도록 의도된다.
본 출원에서의 실시예들에서 사용된 블록체인들은 그러므로, 예를 들어, 임의의 사용자가 블록체인 트랜잭션들의 검증을 위해 합의를 세우는데 참여할수 있는 "비허가형" 또는 공개 블록체인들, 뿐만 아니라 단지 제한된 세트들의 사용자들만이 블록체인 트랜잭션들의 검증을 위해 합의를 세우는데 참여할 수 있는 "허가형" 또는 사설 블록체인들을 포함할 수 있다. 몇몇 실시예들에서, 참가자들의 세트는 예시적으로, 작업 증명, 지분 증명, 권한 증명, 공간 증명, 시간 증명, 경과 시간 증명, 및 기타, 뿐만 아니라 그것의 조합들을 포함하여, 단일 사용자가 표현할 수 있는 아이덴티티들의 수를 제한하기 위해 리소스를 제공하도록 참가자들에게 요구하는 시빌(Sybil) 제어 메커니즘을 사용하여 제한될 수 있다.
몇몇 실시예들에서 주어진 블록체인은 하나 이상의 스마트 계약 프로그램들을 포함할 수 있다. 블록체인의 이러한 스마트 계약 프로그램은 자체가 다수의 별개의 프로그램들을 포함할 수 있다.
다른 실시예들은 블록체인을 수반하지 않는 다른 트랜잭션들 또는 지불들을 프로세싱하기 위해 본 출원에 개시된 유형의 준안정 비잔틴 동의를 위한 합의 프로토콜들을 이용하도록 구성될 수 있다.
몇몇 실시예들에서, 합의 프로토콜에서 합의 프로토콜 노드들(102) 중 특정한 것들의 참여는 합의 프로토콜 노드들(102)의 각각에 의해 하나 이상의 지정된 증명들의 제출을 요구하는 적어도 하나의 특정된 제어 메커니즘에 따라 제어된다. 몇몇 실시예들에서 지정된 증명은 예시적으로, 상기 주지된 지분 증명 또는 권한 증명과 같은, 작업 증명 이외의 증명을 포함한다. 그러나, 몇몇 실시예들은 제어 메커니즘으로서 작업 증명을 이용하도록 구성될 수 있다는 것이 이해될 것이다. 본 출원에서의 예시적인 실시예들에서 주어진 이러한 증명은 특정한 종래의 프로토콜들에서처럼 합의를 달성하기 위해 이용되기보다는 시빌 공격들의 문제를 처리하기 위해 이용된다.
서브 샘플링된 폴링 모듈(130)에 의해 수행된 반복된 폴링은 예시적으로 다수의 반복문들에 대해 반복된다. 몇몇 실시예들에서, 반복문들의 수는 합의 프로토콜 노드들(102)의 수에서 대략 대수적이지만, 이러한 배열이 필수인 것은 아니다. 다른 유형들의 반복된 폴링이 다른 실시예들에서 사용될 수 있다. 본 출원에서 사용되는 "서브 샘플링된 폴링"과 같은 용어들은 예를 들어, 합의 프로토콜 노드(102-1)가 무작위로 또는 그 외로 복수의 폴링 간격들의 각각에서 폴링할 다른 합의 프로토콜 노드들(102)의 상이한 서브 세트들을 선택하는 배열들을 포함하기 위해 광범위하게 해석되도록 의도된다.
이러한 폴링은 폴링 간격들의 각각에서 합의 프로토콜 노드(102-1)에 의해 폴링되는 다른 합의 프로토콜 노드들(102)의 수가, 시스템에서 다른 합의 프로토콜 노드들(102)의 총 수인, N-1 미만이라는 점에서 "서브 샘플링된" 것으로 고려된다. 예를 들어, 특정한 폴링 간격에서 폴링을 위해 선택된 합의 프로토콜 노드들(102)의 주어진 샘플은 예시적으로, 의사랜덤 수 발생기(PRNG) 또는 다른 유사한 배열을 사용하여 무작위로 선택된, 확률론적 샘플을 예시적으로 포함한다. 이러한 유형의 실시예들은 본 출원에서 확률론적 폴링을 수행하는 것으로 불리운다. 또 다른 예로서, 샘플은, 결정론적으로, 가능하게는 시드를 사용하여 선택될 수 있다. 임의의 결정론적 함수는 이러한 결정론적 샘플링 배열에서 사용될 수 있다. 예시적인 실시예들은 그러므로 폴링을 위한 합의 프로토콜들의 서브 세트들을 선택하기 위해 사용된 특정한 유형의 샘플링에 대하여 제한되지 않는다.
또한 이것과 관련하여 본 출원에 개시된 예시적인 실시예들에서 폴링되는 노드들의 수는 종래의 BFT 프로토콜들에서 수반된 노드들의 수보다 훨씬 작다는 것이 주의되어야 한다. 예를 들어, 종래의 BFT 프로토콜들은 보통 N 노드들의 적어도 약 2/3, 또는 가능하게는 심지어 N 노드들의 2/3 이상의 수반을 요구하는 반면, 본 출원에 개시된 예시적인 실시예들은 N 노드들의 매우 작은 단편의 서브 샘플링된 폴링을 이용하도록 구성될 수 있으며, 그에 의해 종래의 BFT 프로토콜들에 대해 상당한 이점들을 제공한다.
합의 프로토콜 노드들(102)은 또한 총괄하여 "네트워크"로 불리우며 서브 샘플링된 폴링은 "네트워크를 샘플링하는 것"으로 불리운다. 이러한 합의 프로토콜 노드들의 네트워크를 포함하는 시스템(100)과 같은 정보 프로세싱 시스템은 또한 본 출원에서 간단히 "시스템"으로 불리운다.
몇몇 실시예들에서 합의 프로토콜 노드(102-1)는 알려진 트랜잭션들의 DAG(134)를 유지하기 위해 반복된 폴링의 결과들을 이용하도록 구성된다. DAG(134)는 예시적으로 주어진 트랜잭션과 복수의 다른 트래잭션들 사이에서의 관계들을 특성화한다. DAG(134)는 보다 일반적으로 본 출원에서 알려진 트랜잭션들을 특성화하는 "데이터 구조"로서 불리우는 것의 예이다. 다른 실시예들에서 DAG(134) 대신에 사용될 수 있는 다른 유형들의 데이터 구조들은, 예를 들어, 트랜잭션들의 링크된 리스트 및 트랜잭션들의 해시 링크된 체인을 포함한다. 이러한 데이터 구조들은 트리-기반 포맷들을 포함한, 다양한 상이한 유형들의 포맷들을 띨 수 있으며, 예시적인 실시예들은 이것과 관련하여 제한되지 않는다.
몇몇 실시예들에서, DAG(134) 자체는 트랜잭션 충돌들을 해결하기 위해서뿐만 아니라 일관된 완전-순서화된 로그가 네트워크에 걸쳐 복제되는 플랫폼을 제공하도록 구성된 선형 순서화된, 체인형 데이터 구조의 형태로 구현된다. 이러한 실시예에서 로그의 각각의 엔트리는 지정된 범용 사용자 데이터를 위한 컨테이너로서 작용할 수 있다. 예를 들어, 애플리케이션의 상태 전이들은 각각의 컨테이너에서 명령들로서 인코딩될 수 있다. 따라서, 올바른 노드들은 서비스에 장애 허용을 제공하도록 지속적으로 복제된 애플리케이션 상태를 가질 것이다.
본 출원에서 사용되는 용어 "지향성 비순환 그래프"는 이러한 데이터 구조들을 포함하기 위해 광범위하게 해석되도록 의도된다. 다른 실시예들은 주어진 트랜잭션의 상태를 결의하는데 알려진 트랜잭션들의 DAG 또는 다른 데이터 구조를 유지하거나 또는 그 외 이용할 필요가 없다는 것이 또한 이해될 것이다.
몇몇 실시예들에서, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 주어진 트랜잭션이 유효한 트랜잭션으로 수용되어야 하는지에 대한 결정을 하기 위해 반복된 폴링의 결과들을 이용하는 것을 포함한다. 이것과 관련하여 유효하지 않은 트랜잭션은 결코 수용될 수 없으며, 모든 유효한 트랜잭션들이 수용되는 것은 아니라는 것이 주의되어야 한다. 유효한 트랜잭션은 그러므로 그것의 가능한 상태들로서, 예를 들어, 적어도 두 개의 상태들{수용 또는 거절}을 가질 수 있다. 보다 일반적으로, 이 예에서 3개의 가능한 상태들, 즉, 수용, 거절 및 미결정이 있으며, 본 출원에서 미결정은 첫 두 개의 상태들 중 어떤 것에도 아직 도달하지 않았음을 나타낸다.
이전에 표시된 바와 같이, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 변수에 대한 복수의 가능한 값들 중 특정한 것을 결정하는 것, 명령 또는 스크립트가 실행되어야 하는지를 결정하는 것 등을 수반할 수 있다. 합의 기반 결의를 조건으로 이들 및 매우 다양한 다른 유형들의 트랜잭션들은 다른 실시예들에서 사용될 수 있다. 따라서, 주어진 트랜잭션을 유효한 트랜잭션으로 수용하는 것은 보다 일반적으로 본 출원에서 주어진 트랜잭션에 대한 "상태를 결의하는 것"으로 불리우는 것의 예로 고려된다. 매우 다양한 다른 배열들은 상기 용어가 본 출원에서 광범위하게 사용됨에 따라 주어지 트랜잭션의 상태를 결의하는 것과 함께 사용될 수 있다. 트랜잭션들을 수용하는 것을 나타내는 예시적인 실시예들은 그러므로 트랜잭션의 상태가 결의되는 특정한 방식 중 임의의 방식으로 제한하는 것으로 보여져서는 안된다.
상기 주지된 바와 같이, 반복된 폴링은 예시적으로 복수의 반복문들에 대해 반복된다. 몇몇 실시예들에서 합의 프로토콜 노드(102-1)에 의해 수행된 반복문들 중 주어진 것은 보다 특히 다른 합의 프로토콜 노드들(102)의 샘플을 선택하는 것, 및 선택된 합의 프로토콜 노드들(102)의 각각의 것들로 질의들을 전송하는 것을 포함한다.
질의들에 대한 적어도 임계 수의 응답들의 수신에 응답하여, 합의 프로토콜 노드(102-1)는 수신된 응답들의 적어도 지정된 부분이 합의 프로토콜 노드(102-1)에서 주어진 트랜잭션에 대한 현재 상태와 상이한 주어진 트랜잭션에 대한 특정 상태를 나타내는지를 결정한다. 대안적으로, 이러한 결정은, 특정한 타임아웃에 이르기 전에 임계 수의 응답들이 수신되지 않는 경우, 특정한 타임아웃에 도달되는 것에 응답하여 이루어질 수 있다.
합의 프로토콜 노드(102-1)에서 주어진 트랜잭션에 대한 현재 상태와 상이한 주어진 트랜잭션에 대한 특정 상태를 나타내는 수신된 응답들의 지정된 부분에 응답하여, 합의 프로토콜 노드(102-1)는 제 1 프로세싱 노드에서 주어진 트랜잭션에 대한 현재 상태를 특정 상태로 업데이트한다.
이러한 실시예에서, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 예시적으로 복수의 반복문들의 완료 시 현재 상태로 주어진 트랜잭션에 대한 상태를 결의하는 것을 포함한다.
몇몇 실시예들에서 합의 프로토콜 노드(102-1)는 주어진 트랜잭션에 대한 상태를 결의하는데 카운터들(132) 중 하나 이상을 이용한다. 카운터들(132)은 예시적으로 적어도 하나의 확신 카운터 및/또는 적어도 하나의 신뢰 카운터를 포함한다.
예를 들어, 몇몇 실시예들에서, 합의 프로토콜 노드(102-1)는 수신된 응답들의 적어도 지정된 부분이 주어진 트랜잭션에 대한 특정 상태를 나타내는 반복된 폴링의 연속하는 반복문들의 수를 나타내는 확신 강도 카운터를 유지한다. 이러한 실시예에서 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 예시적으로 확신 강도 카운터가 임계치를 초과하는 것에 응답하여 주어진 트랜잭션에 대한 상태를 특정 상태로 결의하는 것을 포함한다.
부가적으로 또는 대안적으로, 합의 프로토콜 노드(102-1)는 주어진 트랜잭션에 대한 가능한 상태들 중 각각의 상태에 대한 신뢰 카운터들을 유지하며, 신뢰 카운터들의 각각은 대응하는 상태를 나타내는 응답들을 산출한 반복문들의 다수의 반복문들에 대비한(over) 질의들의 총 수를 나타낸다. 이러한 실시예에서 반복된 폴링의 결과들에 응답하는 주어진 트랜잭션에 대한 상태를 결의하는 것은 예시적으로 상기 가능한 상태에 대한 신뢰 카운터가 가능한 상태들 중 적어도 하나의 다른 상태에 대한 신뢰 카운터를 초과하는 것에 응답하여 주어진 트랜잭션에 대한 상태를 가능한 상태들 중 하나로 결의하는 것을 포함한다.
주어진 트랜잭션에 대해 두 개 이상의 가능한 상태들이 있는 이러한 유형의 몇몇 실시예들에서, 주어진 트랜잭션에 대한 상태를 결의하는 것은 예시적으로 상기 가능한 상태에 대한 신뢰 카운터가 다른 가능한 상태들 모두에 대한 신뢰 카운터를 초과하는 것에 응답하여 주어진 트랜잭션에 대한 상태를 두 개 이상의 가능한 상태들 중 하나로 결의하는 것을 포함한다. 다른 실시예들은 주어진 트랜잭션에 대한 상태를 결의하기 위한 부가적인 또는 대안적인 요건들을 특정할 수 있다.
몇몇 실시예들에서, 응답들의 지정된 부분이 트랜잭션에 대한 특정 상태를 나타내는 폴은 복수의 다른, 가능하게는 관련된, 트랜잭션들에 대한 특정 상태를 암시적으로 나타낼 수 있다. 예를 들어, 시스템이, 제 1 사용자 Alice가 제 2 사용자 Bob과 그녀의 암호화폐 코인들 모두를 썼다고 결정한다면, 그녀는 제 3 사용자 Charlie와 그것들을 쓰지 않았음을 동시에 판단할 수 있다.
상기 주지된 바와 같이, 예시적인 실시예들에서 합의 프로토콜 노드(102-1)는 알려진 트랜잭션들의 DAG(134)를 유지한다. DAG(134)는 주어진 트랜잭션과 복수의 다른 트랜잭션들 간의 관계들을 특성화한다. 이러한 유형의 몇몇 실시예들에서, 트랜잭션들은 상호 배타적 충돌 세트들로 분할되며, 본 출원에서 충돌의 개념은 애플리케이션-정의되며 그러므로 프로세싱되는 특정한 유형의 트랜잭션들과 같은 인자들에 기초하여 실시예마다 달라질 수 있다. 서로 충돌하는 트랜잭션들은 본 출원에서 충돌 세트를 형성하는 것으로 불리우며, 그 중에서 단지 단일 트랜잭션만이 수용될 수 있다. 충돌 세트의 단일 트랜잭션의 이러한 수용은 보다 일반적으로 본 출원에서 상기 트랜잭션의 "상태를 결의하는 것"으로서 불리우는 것의 예이다.
이러한 실시예에서 DAG(134)를 유지하는 것은 보다 특히 합의 프로토콜 노드들(102)의 샘플을 선택하는 것, 선택된 합의 프로토콜 노드들(102)의 각각의 것들로 질의들을 전송하는 것, 및 질의들에 대한 응답들에 적어도 부분적으로 기초하여 DAG(134)를 업데이트하는 것을 포함한다. 예를 들어, DAG(134)를 업데이트하는 것은 하나 이상의 부가적인 트랜잭션들을 DAG(134)로 삽입하는 것, DAG(134)의 트랜잭션들 중 각각의 트랜잭션에 대한 신뢰 값들을 업데이트하는 것, 및/또는 DAG(134)의 트랜잭션들을 상호 배타적 충돌 세트들로 재분할하는 것을 포함한다. 이러한 실시예에서 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 예시적으로 주어진 트랜잭션이 그 충돌 세트에서의 유일한 트랜잭션이며 주어진 트랜잭션이 임계치를 초과하는 신뢰 값을 갖는 것에 응답하여 상태를 결의하는 것을 포함한다. 또 다른 예로서, 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 가능한 상태에 대한 신뢰 카운터가 가능한 상태들 중 적어도 하나의 다른 상태에 대한 신뢰 카운터를 초과하는 것에 응답하여 다수의 가능한 상태들 중 하나로 상기 상태를 결의하는 것을 포함할 수 있다.
상기 언급된 바와 같이, 다른 합의 프로토콜 노드들(102)의 각각은 예시적으로, 합의 프로토콜 노드들(102)이 주어진 트랜잭션에 대한 다수의 가능한 상태들 중에서 주어진 트랜잭션에 대한 특정 상태에 대한 합의에 총괄하여 이르도록 허용하기 위해, 합의 프로토콜 노드(102-1)에 대해 상기 설명된 것과 유사한 방식으로 동작하도록 구성된다.
도 1에 도시된 구성요소들 및 다른 시스템 요소들의 특정한 배열은 단지 예시적인 예로서 제공되며, 다수의 대안적인 실시예들이 가능하다는 것이 이해될 것이다. 예를 들어, 합의 프로토콜 노드들(102) 및 클라이언트 디바이스들(104) 중 하나 이상은 각각 암호화폐 계좌와 연관된 암호화폐 지불들을 하거나 또는 수신하는 것과 함께 이용된 암호화폐 지갑과 같은, 부가적인 또는 대안적인 구성요소들을 포함할 수 있다. 또한, 이전에 표시된 바와 같이, 시스템(100)의 주어진 프로세싱 디바이스는 몇몇 실시예들에서 합의 프로토콜 노드 및 클라이언트 디바이스 양쪽 모두를 포함한다. 블록체인 노드들과 같은, 다른 유형들의 프로세싱 노드들이 부가적으로 또는 대안적으로 사용될 수 있다. 프로세싱 노드들 및 연관된 프로세싱 디바이스들의 다수의 대안적인 배열들이 사용될 수 있다.
예시적인 실시예들은 블록체인들 또는 암호화폐들, 또는 임의의 다른 특정한 유형들의 트랜잭션들과 함께 사용하는데 제한되지 않는다는 것이 또한 이해되어야 한다. 따라서, 본 출원에 개시된 유형의 준안정 합의 프로토콜들은 매우 다양한 다른 유형들의 트랜잭션들과 함께 사용하기에 용이한 방식으로 적응될 수 있다. 본 출원에서 사용되는 용어 "트랜잭션"은 그러므로, 예를 들어, 실행될 명령 또는 스크립트 또는 개시된 합의 프로토콜들을 사용하여 결의에 적합한 임의의 다른 유형의 정보 요소를 포함하기 위해, 광범위하게 해석되도록 의도된다.
예시적인 실시예들의 동작에 관한 부가적인 세부사항들은 이제 도 2 내지 도 9를 참조하여 설명될 것이다. 실시예들은 슬러쉬(Slush), 스노우플레이크(Snowflake), 스노우볼(Snowball) 및 애벌랜치(Avalanche)로서 불리우는 변형들을 포함한 준안정 합의 프로토콜들의 예시적인 패밀리를 포함한다. 이들 프로토콜 변형들은 각각의 예시적인 실시예들로 고려되며, 따라서 이하에서 설명되는 바와 같이 그것들의 대응하는 구현예들의 특정한 세부사항들은 임의의 방식으로 제한하는 것으로서 해석되지 않아야 한다. 이러한 프로토콜 변형들은 또한 이전에 설명된 바와 같이 시스템(100)의 준안정 합의 프로토콜 배열들의 더 상세한 구현예들로서 보여질 수 있다.
이전에 표시된 바와 같이, 종래의 BFT 프로토콜들은 비트코인 및 이더리움과 같은 암호화폐들에서 이용된 나카모토 합의 프로토콜들을 포함한다. 분산형 프로세싱 노드들의 세트 간에 합의를 달성하는 것은 보다 일반적으로 범위가 수십억의 사람들에게 제공하는 인터넷-스케일 서비스들로부터 수십억 달러의 가치가 있는 암호화폐들에 이르는, 무수한 애플리케이션들의 중심부에 있다.
지금까지, 이러한 문제에 대한 해법들의 두 개의 주요 패밀리들이 있어 왔다. 종래의 합의 프로토콜들은 모든 올바른 노드들이 절대적인 확실성을 갖고 동일한 판단들에 이르는 것을 보장하기 위해 올-투-올 통신에 의존한다. 그것들은 이차 통신 오버헤드 및 멤버쉽에 대한 정확한 지식을 요구하기 때문에, 그것들은 다수의 참여자들로 확장하기에 어려웠다.
다른 한편으로, 나카모토 합의 프로토콜들은 확률론적 안전 보증을 제공한다: 나카모노 합의 판단들은 몇몇 확률(ε)을 갖고 복귀할 수 있다. 프로토콜 파라미터는 이러한 확률이 임의로 작게 되도록 허용하여, 고-가치 금융 시스템들이 이러한 토대에 구성될 수 있게 한다. 이러한 패밀리는 임의의 노드가 언제든 시스템에 참여할 수 있는 개방된, 비허가형 설정들에 대한 자연스러운 맞춤이다. 그러나, 이들 합의 프로토콜들은 값비싸고, 낭비적이며, 성능이 제한된다. 구성에 의해, 그것들은, 그것들의 안전이, 이루어질 판단들이 없을 때에도, 광부들에 대한 일정한 참여에 의존한다는 점에서 작업을 거부할 수 없다. 비트코인과 연관된 채굴은 약 60 TWh/년의 레이트로 에너지를 소비한다. 게다가, 이들 및 다른 종래의 BFT 합의 프로토콜들은 단순한 재파라미터화를 통해 극복하기에 어려운 내재된 확장성 병목현상을 겪는다.
이하에서 도 2 내지 도 9와 함께 설명될 예시적인 실시예들은 합의 프로토콜들의 새로운 패밀리를 제공한다. 가십 알고리즘들에 의해 영감을 받아, 이러한 패밀리는 의도적 준안정 메커니즘을 통해 그것의 안전을 얻는다. 구체적으로, 시스템은 무작위로 네트워크를 반복적으로 샘플링하며, 동일한 결과를 향해 올바른 노드들을 조향시킴으로써 동작한다. 분석은 이러한 준안정 메커니즘이 강력하다는 것을 보여준다: 그것은 큰 네트워크를 실질적으로 비가역적 상태로 빠르게 이동시킬 수 있다.
나카모토 합의와 유사하게, 이들 예시적인 실시예들에서 프로토콜 패밀리는, 합의 실패의 가능성을 임의로 작게 할 수 있는 튜닝 가능한 보안 파라미터를 사용하여, 확률론적 안전 보증을 제공한다. 나카모토 합의와 달리, 프로토콜들은 녹색의, 정지성이며 효율적이고; 그것들은 작업 증명에 의존하지 않으며 이루어질 판단들이 없을 때 에너지를 소비하지 않는다. 이들 예시적인 실시예들에서 프로토콜들의 효율은 다음의 특징들에 적어도 부분적으로 기인한다: 각각의 노드는 몇몇 작은 보안 파라미터(k)에 대해 범위가 0(k log n)에서 0(k)에 이르는 통신 오버헤드들을 요구하며(반면에 리더-기반 합의 프로토콜들은 0(n) 통신을 요구하는 하나 이상의 노드들을 갖는다), 프로토콜들은 의존적 트랜잭션들 간에 부분 순서만을 수립한다.
이하에서 보다 상세하게 설명될 바와 같이, 이들 실시예들에서 합의 프로토콜들은 예시적으로 단지 "선한(virtuous)" 트랜잭션들, 즉 정확한 클라이언트들에 의해 발행되며 그에 따라 다른 트랜잭션들과 충돌하지 않도록 보장되는 것들에 대해서만 라이브니스를 보장하도록 구성된다. 암호화폐 설정에서, 암호 서명들은 단지 키 소유자만이 특정한 코인을 소비하는 트랜잭션을 생성할 수 있음을 강제한다. 정확한 클라이언트들은 규정된 바와 같이 프로토콜을 따르므로, 그들은 안전 및 라이브니스 양쪽 모두를 보장받는다. 반대로, 설명될 프로토콜들은 서로 충돌하는, 비잔틴 클라이언트들에 의해 제출된, 불량 트랜잭션들에 대한 라이브니스를 보장하지 않는다. 이러한 판단들은 네트워크에서 지연될 수 있지만, 선한 트랜잭션들에 어떤 안전 영향도 주지 않는다. 우리는 이것이 합리적인 트레이드오프이며 결과적인 시스템이 복잡한 지불 시스템들을 구축하는데 충분하다는 것을 보여준다.
따라서, 예시적인 실시예들은, 강한 확률론적 안전 보증, 및 정확한 클라이언트들에 대한 라이브니스의 보장을 갖고, 랜덤화된 샘플링 및 준안정 판단에 기초하여, 합의 프로토콜들의 새로운 패밀리를 제공한다.
이하에서의 프로토콜 패밀리의 설명은 비-비잔틴 프로토콜, 슬러쉬, 및 점진적으로 구축된 스노우플레이크, 스노우볼 및 애벌랜치로 시작하며, 모두는 동일한 공통 준안정 메커니즘에 기초한다. 슬러쉬, 스노우플레이크, 및 스노우볼은 강건성을 증가시키는 단일-법령 이진 합의 프로토콜들이며, 애벌랜치는 스노우볼을 전체 암호화폐 해법으로 확장시킨다. 다른 애플리케이션들을 위한 다른 확장들이 가능하다는 것이 이 기술분야의 숙련자들에게 명백할 것이다.
비트코인의 나카모토 합의처럼, 우리는 확률론적인 안전 보증을 채택한다. 이러한 확률론적 보증은, 대략 ε의 작은 선택들이 합의 실패를 실질적으로 실현 가능하지 않으며, CPU 오산들 또는 해시 충돌들보다 덜 빈번하게 하므로, 실제로 종래의 안전 보증들과 구별 가능하지 않다.
이러한 프로토콜 패밀리는 총괄적으로 시스템이 극적으로 더 양호한 성능 및 확장성을 갖고, 유용한 비트코인-형 암호화폐를 구현할 수 있게 한다. 다른 실시예들에서, 대규모 확률론적 합의를 수반한 다른 애플리케이션들을 구성하는 것이 가능하다. 우리는 그것이 제기한 많은 도전들 때문에 이들 예시적인 실시예들에서 암호화폐 애플리케이션에 초점을 맞춘다.
우리는 올바른 노드들(
Figure pct00001
) 및 비잔틴 노드들(
Figure pct00002
)로 구성된, 노드들(
Figure pct00003
)의 모음을 가정하며, 여기에서 n = |
Figure pct00004
|. 예시적인 목적들을 위해, 우리는 비트코인의 미사용 트랜잭션 출력(UTXO) 모델로서 일반적으로 알려진 것을 채택한다. 이러한 모델에서, 클라이언트들은 인증되며 기존의 UTXO를 완전히 소비하고 새로운 UTXO들을 발행하는 암호 서명된 트랜잭션을 발행한다. 노드들과 달리, 클라이언트들은 판단 프로세스에 참여하지 않으며, 단지 합의 프로토콜을 구동하는 노드들로 트래잭션들을 공급한다. 두 개의 트랜잭션들은 그것들이 동일한 UTXO를 소비하고 상이한 출력들을 산출하는 경우 충돌한다. 올바른 클라이언트들은 결코 충돌하는 트랜잭션들을 발행하지 않으며, 비잔틴 클라이언트들이 올바른 클라이언트들에 의해 발행된 트랜잭션들과의 충돌들을 위조하는 것은 가능하지 않다. 그러나, 비잔틴 클라이언트들은 서로 충돌하는 다수의 트랜잭션들을 발행할 수 있으며, 올바른 클라이언트들은 단지 이들 트랜잭션들 중 하나만을 소비할 수 있다. 이들 예시적인 실시예들에서 합의 프로토콜들의 패밀리의 목적은, 그 후, 비잔틴 거동의 존재 시 비-충돌 트랜잭션들의 세트를 수용하는 것이다. 각각의 클라이언트는 전이들이 수용된 트랜잭션들의 완전-순서화된 리스트에 의해 정의되는 복제된 상태 기계(RSM)로 고려될 수 있다. 다시, 주어진 트랜잭션에 대한 이러한 수용은 보다 일반적으로 주어진 트랜잭션에 대한" 상태를 결의하는 것"으로 불리우는 것의 예이다.
프로토콜들의 패밀리는 높은 확률("whp")을 갖고 다음의 보증들을 제공한다:
속성 P1: 안전. 두 개의 올바른 노드들은 충돌하는 트랜잭션들을 수용하지 않을 것이다.
속성 P2: 라이브니스. 올바른 클라이언트에 의해 발행된 임의의 트랜잭션("선한 트랜잭션(virtuous transaction)")은 결국 모든 올바른 노드에 의해 수용될 것이다.
무조건적인 합의 대신에, 하나의 접근법은 안전이 확률(1 - ε)을 갖고 유지될 것이며, 여기에서 보안 파라미터(ε)의 선택은 시스템 설계자 및 애플리케이션들의 제어하에 있다.
예시적인 실시예들을 위한 우리의 분석은 강력한 적응적 상대, 예를 들어, 네트워크에서의 모든 노드의 내부 상태 및 통신들을 관찰할 수 있지만, 올바른 노드들 사이에서의 통신을 간섭할 수 없는 상대를 가정한다. 우리는 네트워크의 모든 멤버들이 모든 참여자들에게 알려진다고 가정하지 않으며, 오히려 일시적으로 네트워크 뷰에서 약간의 불일치들을 가질 수 있다. 우리는 노드가 네트워크의 통계적으로 바이어싱되지 않은 뷰를 획득하기 위해 충분히 많은 올바른 노드들과 연결할 수 있게 하는, 비트코인의 것과 유사한, 안전한 부트스트래핑 시스템을 가정한다. 우리는 공개 키 인프라스트럭쳐(PKI : public key infrastructure)을 가정하지 않는다. 우리는 공개 키 서명들 및 해시 함수들에 관련된 표준 암호화 경도 가정들을 한다.
도 2는 예시적인 실시예에서, 여기에서 슬러쉬로서 불리우는, 단순한 준안정 프로토콜을 예시한다. 슬러쉬는 비잔틴 장애들에 관대하지 않으며, 이어지는 BFT 프로토콜들에 대한 예시로서 작용한다. 설명의 용이함을 위해, 우리는 두 개의 충돌하는 컬러들, 적색 및 청색 사이에서의 판단을 사용하여 슬러쉬의 동작을 설명할 것이다. 변수에 대한 다수의 가능한 값들에 관한 이러한 판단은 보다 일반적으로 여기에서 주어진 트랜잭션의 상태를 결의하는 것으로 불리우는 것의 예이다.
슬러쉬에서, 노드는 처음에 비착색 상태에서 시작한다. 클라이언트로부터 트랜잭션을 수신하면, 비착색 노드는 그 자신의 컬러를 트랜잭션에서 운반된 것으로 업데이트하며 질의를 개시한다. 질의를 수행하기 위해, 노드는 무작위로 균일하게 네트워크의 작은, 일정한 크기(k) 샘플을 택하며, 질의 메시지를 전송한다. 질의를 수신하면, 비착색 노드는 질의에서 컬러를 채택하고, 상기 컬러로 응답하며, 그 자신의 질의를 개시하는 반면, 착색 노드는 단순히 그것의 현재 컬러로 응답한다. 질의 노드가 k개의 응답들을 수집하면, 또는 특정한 타임아웃에 이른 후, 그것은 단편≥αk가 동일한 컬러에 대한 것인지를 검사하며, 여기에서 α > 0.5는 프로토콜 파라미터이다. αk 임계치가 충족되고 샘플링된 컬러가 노드 자신의 컬러와 상이하다면, 노드는 상기 컬러로 플리핑한다. 그 후 그것은 질의 단계로 돌아가며, 총 m 라운드들 동안, 질의의 다음 라운드를 개시한다. 최종적으로, 노드는 그것의 결국 시간(m)에 있게 되는 컬러를 판단한다. 타임아웃들은 판독성을 위해 도면으로부터 제거된다는 것이 주의되어야 한다.
이러한 단순한 프로토콜은 다수의 바람직한 속성들을 가진다. 첫 번째로, 그것은 거의 무기억성이다: 노드는 그것의 현재 컬러가 아닌 다른 라운드들 사이에서 어떤 상태도 유지하지 않으며, 특히 다른 피처들과의 상호작용들의 히스토리를 유지하지 않는다. 두 번째로, 모든 참여자에게 질의하는 종래의 합의 프로토콜들과 달리, 모든 라운드는 네트워크의 작은, 일정한 크기의 슬라이스를 무작위로 샘플링하는 것을 수반한다. 세 번째로, 네트워크가 50/50 적색-청색 분리된 준안정 상태에서 시작한다면, 샘플링에서의 무작위 섭동들은 하나의 컬러로 하여금 나중에 형성되고 상기 불균형을 증폭시킬 약간의 에지 및 반복된 샘플링들을 얻게 할 것이다. 최종적으로, m이 충분히 높게 선택되면, 슬러쉬는 모든 노드들이 동일하게 착색될 whp임을 보장한다. 각각의 노드는, 라운드마다 일정한, 예측 가능한 통신 오버헤드를 가지며, m은 n에 따라 대수적으로 성장한다.
슬러쉬 프로토콜은 비잔틴 노드들의 존재 시 강한 안전 보증을 제공하지 않는다. 특히, 올바른 노드들이 하나의 컬러에 대한 선호를 발생시키면, 비잔틴 상대는 네트워크를 균형있게 유지하기 위해 반대 컬러로 노드들을 플리핑하려고 시도하여, 판단을 방지할 수 있다. 우리는 노드들에서 더 많은 상태 저장을 도입하는 우리의 제 1 BFT 프로토콜에서 이를 처리한다.
도 3은 이전에 설명된 슬러쉬 프로토콜에 구축된, BFT를 가진 준안정 합의 프로토콜을 도시한다. 스노우플레이크는 현재 컬러에서 노드의 확신의 강도를 캡처하는 단일 카운터에 따라 슬러쉬를 증대시킨다. 이러한 카운터는 여기에서 또한 "확신 카운터"로 불리우는 것의 예이다. 이러한 노드-당 카운터는 상기 노드에 의해 네트워크의 얼마나 많은 연속 샘플들이 모두 동일한 컬러를 산출하였는지를 저장한다. 노드는 그것이 또 다른 보안 파라미터인, β를 초과할 때 현재 컬러를 수용한다. 도 3 프로토콜은 다음의 수정들을 포함한다:
1. 각각의 노드는 카운터(cnt)를 유지한다;
2. 모든 컬러가 변하면, 노드는 cnt를 0으로 리셋한다;
3. 노드와 동일한 컬러에 대해 ≥ αk 응답들을 산출하는 모든 성공적인 질의 시, 노드는 cnt를 증가시킨다.
프로토콜이 현재 비잔틴 노드들의 주어진 임계치 및 원하는 ε-보증에 대해 정확하게 파라미터화될 때, 그것은 속성 P1(안전) 및 속성 P2(라이브니스) 양쪽 모두를 보장할 수 있다. 우리가 나중에 도시하는 바와 같이, 올바른 노드들은 이가 상태보다 판단의 경향이 있을 가능성이 더 높은 위상-시프트 포인트가 존재하고 있다. 뿐만 아니라, 판단이 불가피한 복귀 불능 포인트가 존재하고 있다. 비잔틴 노드들은 위상 시프트를 지나 제어를 잃으며, 올바른 노드들은 동일한 컬러, whp를 채택하기 위해 복귀 불능 포인트를 지나 결정하기 시작한다.
도 4는 스노우플레이크에 신뢰의 표시를 부가하는, 스노우볼로서 불리우는, 다음 프로토콜을 도시한다. 상태에 대한 스노우플레이크의 개념은 수명이 짧다: 카운터는 모든 컬러 플립을 갖고 리셋하게 된다. 이론적으로, 프로토콜은 최소 상태를 갖고 강한 보증들을 할 수 있지만, 우리는 이제 확신에 대한 보다 영구적인 개념을 통합함으로써 그것을 공격하기 더 어렵게 만들도록 프로토콜을 개선할 것이다. 스노우볼은 도면에서 예시된 바와 같이, 그것들의 대응하는 컬러에 대한 임계 결과를 산출하는 질의들의 수를 캡처하는 신뢰 카운터들에 따라 스노우플레이크를 증대시킨다. 노드는 그것이 컬러에 대해 β 연속 "치트들(chits)"을 얻는지를 판단하며, 여기에서 이러한 치트들은 본 출원의 다른 곳에서 보다 상세하게 설명된다. 그러나, 노드는 단지 총 누적 신뢰에 기초하여 선호를 변경한다. 스노우플레이크와 스노우볼 간의 차이들은 다음과 같다:
1. 모든 성공적인 질의 시(즉, 적어도 αk 응답들이 노드의 컬러와 일치하는), 노드는 상기 컬러에 대한 그것의 신뢰 카운터를 증가시킨다.
2. 노드는 현재 컬러에서의 신뢰가 새로운 컬러의 신뢰 값보다 낮아질 때 컬러들을 스위칭한다.
스노우볼은 스노우플레이크보다 공격하기 어려울 뿐만 아니라, 다중-법령 프로토콜들로 더 쉽게 일반화된다.
도 5, 도 6 및 도 7은 스노우볼을 모든 알려진 트랜잭션들의 DAG를 유지하는 다중-법령 프로토콜로 확장하는, 애벌랜치로 불리우는, 추가 프로토콜의 각각의 부분들을 도시한다. DAG는 "발원 정점(genesis vertex)"으로 불리우는 단일 싱크를 갖는다. DAG들의 예들은 도 8 및 도 9에서 도시된다. DAG를 유지하는 것은 두 개의 상당한 이점들을 제공한다. 첫 번째로, DAG 정점에서의 단일 투표는 암시적으로 발원 정점으로의 경로 상에서 모든 트랜잭션들에 투표하기 때문에, 효율성을 개선한다. 두 번째로, 그것은, DAG가 비트코인 블록체인과 유사하게, 트랜잭션들의 운명을 뒤얽기 때문에, 보안을 개선한다. 이것은 올바른 노드들의 승인 없이 지난 판단들을 무효로 만드는 것을 어렵게 한다.
클라이언트가 트랜잭션을 생성할 때, 그것은 트랜잭션에서 분리할 수 없게 포함되며 DAG의 에지들을 형성하는, 하나 이상의 부모들을 명명한다. DAG에 인코딩된 부모-자식 관계들은, 반드시는 아니지만, 애플리케이션-특정 의존성들에 대응할 수 있고; 예를 들어, 자식 트랜잭션은 부모 트랜잭션에 수신된 자금들을 소비하거나 또는 그것과 임의의 관계를 가질 필요는 없다. 우리는 다시 히스토리에서 부모 에지들을 통해 도달 가능한 모든 트랜잭션들을 나타내기 위해 용어 "조상" 세트를, 및 모든 자식 트랜잭션들 및 그것들의 자식을 나타내기 위해 용어 "자손"을 사용한다.
DAG의 유지보수에서 중심 도전은 충돌하는 트랜잭션들 중에서 택하는 것이다. 이전에 언급된 바와 같이, 여기에서 충돌의 개념은 예시적으로 애플리케이션-정의되며, 그러므로 실시예마다 달라질 수 있다. 우리의 암호화폐 애플리케이션에서, 동일한 자금들을 소비하는(이중-소비하는) 트랜잭션들은 서로 충돌하고, 충돌 세트(도 8에서 음영 영역들)를 형성하며, 그 중 단지 단일의 것만이 수용될 수 있다. 선한 트랜잭션의 충돌 세트는 항상 싱글톤이라는 것을 주의하자.
애벌랜치는 각각의 충돌 세트에 대한 스노우볼 인스턴스를 구체화한다. 스노우볼이 충돌하는 트랜잭션들(컬러들)에 형성된 신뢰의 양을 캡처하기 위해 반복된 질의들 및 다수의 카운터들을 사용하는 반면에, 애벌랜치는 DAG 구조를 이용하며 트랜잭션의 자손을 사용한다. 구체적으로, 트랜잭션(T)이 질의될 때, DAG 에지들을 따름으로써 T로부터 도달 가능한 모든 트랜잭션들은 묵시적으로 질의의 부분이다. 노드는 단지 T 및 그것의 전체 가계가 현재 그것들 각각의 충돌 세트들에서 선호된 옵션이라면 질의에 긍정적으로 응답할 것이다. 임계치 이상의 응답기들이 긍정적으로 투표하면, 트랜잭션은 여기에서 "치트"로 불리우는 것을 수집한다고 말하여진다. 노드들은 그 후 상기 트랜잭션의 자손에서 치트들의 총 수로서 그것들의 신뢰를 계산한다. 그들은 단지 한 번 트랜잭션에 질의하며 그것들의 신뢰를 구축하기 위해, 자손에 부가된, 새로운 정점들 및 가능한 치트들에 의존한다. 타이들은 처음-보여진 트랜잭션들에 대한 초기 선호에 의해 깨진다. 치트들은 DAG 구조로부터 결합 해제되어, 프로토콜을 공격자가 다수의 DAG 정점들을 생성하는 공격들에 영향을 받지 않게 한다는 것을 주의하자.
애벌랜치에서, 각각의 올바른 노드(u)는 그것이 상호 배타적 충돌 세트들(PT, T ∈ Tu)로 반할된, 세트(Tu)에 대해 학습한 모든 트랜잭션들을 기억하고 있다. 충돌들은 이행적이므로, Ti 및 Tj가 충돌한다면, 그것들은 동일한 충돌 세트에 속한다, 즉
Figure pct00005
. 이러한 관계는 사운드 카운터-직관적일 수 있으며: 충돌 전이들은, 그것들이 동일한 자금들을 소비하는 모호한 말들이기 때문에, 등가를 갖는다.
T가 트랜잭션(T')에 대한 부모 에지를 갖는다면 우리는 T' ← T를 기록한다.
Figure pct00006
-관계는, T에서 T'까지의 경로를 나타내는 재귀적 이행 폐쇄이다. 상이한 노드들에 의해 형성된 DAG들은 호환 가능한 것으로 보장된다. 구체적으로, T' ← T이면, T를 가진 시스템에서의 모든 노드는 또한 T' 및 동일한 관계(T' ← T)를 가질 것이며; 반대로,
Figure pct00007
이면, 그 후 어떤 노드들도 T' ← T가 되지 않을 것이다.
각각의 노드(u)는 다음과 같이 자손으로부터, 신뢰 값, du(T)을 계산할 수 있다:
Figure pct00008
여기에서
Figure pct00009
은 노드(u)에 대한 T'의 치트 값을 나타낸다. 각각의 트랜잭션은 처음에 노드가 질의 결과들을 얻기 전에 0의 치트 값을 갖는다. 노드가 질의 후 αk 예-투표들의 임계치를 수집한다면, 값(
Figure pct00010
)은 1로 설정되며, 그렇지 않다면 계속해서 0인 채로 있다. 그러므로, 치트 값은 그것의 연관된 트랜잭션의 1-회 질의로부터의 결과를 반영하며 나중에 변경할 수 없지만, d(T)는 그것의 자손에서 더 많은 치트들을 수집함으로써 DAG가 성장함에 따라 증가할 수 있다.
Figure pct00011
이기 때문에, 신뢰 값들은 변화가 없다.
또한, 노드(u)는 시스템을 포함하는 알려진 노드들(
Figure pct00012
)의 그 자신의 국소 리스트를 유지한다. 이하에서 예시의 단순함을 위해 우리는 이제 Nu = N에 대해 가정하며, 애매성 없이 맥락들에서 스크립트(u)를 생략한다.
각각의 노드는 각각의 트랜잭션에 대한 투표들을 간청하며 새롭게 발견된 트랜잭션들의 존재를 다른 노드들에게 통지하는 것 양쪽 모두를 하도록 작용하는 질의 주위에 중심을 둔, 이벤트-구동 상태 기계를 구현한다. 특히, 노드(u)가 질의를 통해 트랜잭션(T)을 발견할 때, 그것은 T가 도 6의 절차(
Figure pct00013
)를 통해 전달된 후, k개의 랜덤 피어들을 샘플링하고 메시지를 그것들로 전송함으로써 1-회 질의 프로세스를 시작한다.
노드(u)는
Figure pct00014
이도록 하는 각각의 T'가 경쟁 트랜잭션들(
Figure pct00015
) 중에서 현재 선호되는지를 검사함으로써 질의에 대답한다. 모든 단일 조상(T')이 이러한 기준을 이행한다면, 트랜잭션은 매우 선호되는 것으로 말하여지며, 예-표(1)를 수신한다. 임의의 T'에서 이러한 기준의 실패는 아니오-표(0)를 산출한다. U가 k개 응답들을 축적할 때, 그것은 T에 대해 αk 예-표들이 있는지를 검사하며, 그렇다면 T에 대해 치트(치트 값
Figure pct00016
)를 승인한다. 상기 프로세스는 각각의 트랜잭션(T)에 대해 치트 값과 연관된 신뢰를 가진 DAG의 라벨링을 산출할 것이다.
도 8은 <치트, 신뢰> 값들의 예를 도시한, 애벌랜치에 의해 형성된 예시적인 DAG(300)를 예시한다. 보다 어두운 박스들은 더 높은 신뢰 값들을 가진 트랜잭션들을 나타낸다. 각각의 음영 영역에서 최대 하나의 트랜잭션이 수용될 것이다. 스노우볼과 유사하게, 애벌랜치에서의 샘플링은 그것의 충돌 세트에서 단일 트랜잭션의 선호에 대한 긍정 피드백을 생성할 것이다. 예를 들어, T2가 T3보다 큰 신뢰를 갖기 때문에, 그것의 후손들은 T3에 비교하여 미래에 치트들을 수집할 가능성이 더 높다.
비트코인과 유사하게, 애벌랜치는 애플리케이션으로의 트랜잭션의 수용 포인트를 결정하는 것을 떠난다. 애플리케이션은 트랜잭션에서 위험한 상태에 있는 값을 고려할 수 있는
Figure pct00017
술어 및 판단할 때를 결정하기 위해 복귀되는 판단의 기회들을 공급한다.
트랜잭션을 실행하는 것은 여기에서 "안전한 조기 약속"으로 불리우는 것을 통해 수행될 수 있다. 선한 트랜잭션들에 대해, T는 그것이 충돌 세트에 있는 유일한 트랜잭션이며 임계치(β1)보다 큰 신뢰를 가질 때 수용된다. 스노우볼에서처럼, T는 또한 임계 수(β2)의 연속하는 성공적인 질의들 후 수용될 수 있다. 선한 트랜잭션이 부모들과의 라이브니스 문제로 인해 수용되는데 실패한다면, 그것은 상이한 부모들로 재발행되는 경우 수용될 수 있다.
도 6에 도시된 의사코드는 애벌랜치가 어떻게 부모 선택을 수행하고 트랜잭션들을 얽히게 만드는지를 예시한다. 동일한 UTXO를 소비하고 생성하는 트랜잭션들은 서로 충돌하지 않기 때문에, 임의의 트랜잭션은 상이한 부모들로 재발행될 수 있다.
각각의 노드에 의해 실행된 애벌랜치 프로토콜 메인 루프는 도 5의 의사코드에 의해 예시된다. 각각의 반복문에서, 노드는 아직 질의되지 않은 트랜잭션(T)을 선택하려고 시도한다. 어떤 이러한 트랜잭션도 존재하지 않는다면, 루프는 새로운 트랜잭션이 T에 부가될 때까지 멎을 것이다. 그 후 그것은 k개 피어들을 선택하며 이들 피어들에게 질의한다. αk 이상의 이들 피어들이 긍정 응답을 반환하면, 치트 값은 1로 설정된다. 그 후, 그것은 그것의 가계에서 트랜잭션들의 각각의 충돌 세트의 선호된 트랜잭션을 업데이트한다. 다음으로, T는 세트(
Figure pct00018
)에 부가되며 따라서 그것은 결코 노드에 의해 다시 질의되지 않을 것이다. k개 피어들 중 일부가 무반응인 경우 부가적인 피어들을 선택하는 코드는 단순함을 위해 생략되지만, 이 기술분야의 숙련자들에 의해 이해될 바와 같이, 간단한 방식으로 구현될 수 있다.
도 7은 노드가 피어(j)로부터 트랜잭션(T)에 대한 질의를 수신할 때 일어나는 것을 도시한다. 첫 번째로 후자가 이미 그것을 갖지 않는다면, T를
Figure pct00019
에 부가한다. 그 후, 그것은 T가 현재 매우 선호되는지를 결정한다. 그렇다면, 노드는 피어(j)에 대한 긍정 응답을 반환한다. 그렇지 않다면, 그것은 부정 응답을 반환한다. 의사코드에서, 우리는 노드가 T를 알고 있을 때, 그것이 또한 T의 전체 가계를 재귀적으로 알고 있다고 가정한다. 이것은 그것의 전체 가계가 재귀적으로 인출될 때까지 T의 전달을 연기함으로써 달성될 수 있다. 실제로, 트랜잭션들을 전파하는 부가적인 가십 프로세스(gossip process)는 동시에 사용되지만, 단순함을 위해 의사코드에서 도시되지 않는다.
특정한 독립적이고 개별적인 가정들하에서, 상기 설명된 합의 프로토콜들의 애벌랜치 패밀리는 확률(1 - ε)을 갖고 속성 P1(안전) 및 속성 P2(라이브니스)를 제공한다는 것이 도시될 수 있으며, 여기에서 ε는 시스템 설계자의 요구들에 따라 설정될 수 있는 보안 파라미터이다.
상기 설명된 합의 프로토콜 패밀리는 이제 속성들(P1 및 P2), 뿐만 아니라 다른 특징들에 관하여 상세하게 분석될 것이다.
속성(P1)에 관하여, 우리는 또한, 시스템 스케줄러로 불리우는, 전역적 스케줄러의 뷰를 통해 프로토콜들을 분석한다. 가십 전파에 기초한 비트코인 및 다른 블록체인 프로토콜들처럼, 우리는 가십이 알려진 시간 한계 내에서의 모든 올바른 노드들로 확산된다고 가정한다. 다시 말해서, 우리는 동기식 통신 네트워크를 가정하며, 여기에서 시스템은 라운드들에서 진행하며, 각각의 라운드의 처음에, 전역적 스케줄러는 단일 올바른 노드(u)를 무작위로 균일하게 택한다. 노드(u)는 라운드의 끝에서 그것의 상태를 샘플링하고 업데이트할 것이다. 비잔틴 상대는 u의 아이덴티티를 알고 있을 것이다. 더욱이, 상대는 항상 네트워크에서의 모든 노드들의 내부 상태에 대한 전체 지식을 가지며, u가 그것의 이웃 샘플 세트를 택한 직후 그것의 제어 하에서 모든 노드들의 상태를 완전히 업데이트할 수 있다. 본질적으로, 상대는 단지 올바른 노드들의 상태를 직접 업데이트하기 위한 무능에 의해서만 제한된다.
우리는 적색 또는 청색으로 착색된 노드들의 세트로서 네트워크를 생각할 수 있다. 각각의 새로운 라운드는 노드들 중 하나의 상태를 업데이트하여, 그것의 컬러를 변경하거나, 또는 그것의 현재 컬러에서 그 신뢰를 증가시킬 것이다. 시스템의 역학들은 유행 네트워크들의 것들과 비슷하며, 여기에서 노드들은, 몇몇 확률 분포에 걸쳐 선택된 함수를 사용하여, 그것들의 이웃들의 상태에 기초하여 상태를 업데이트한다. 모든 라운드에서, 분기 실행들의 가능한 수는 가능한 올바른 노드들의 수 곱하기 노드가 샘플링할 수 있는 결과들의 모든 가능한 k-샘플 선택들과 같으므로, 모든 가능한 실행 경로들을 계속해서 아는 것은 실현 가능하지 않을 것이다. 더욱이, 이러한 태스크의 어려움은 비잔틴 상대로 인해 크게 증폭되며, 그것의 최적의 공격 전략은 가능하게는, 그 자체가 결정론적이지 않은, 알려지지 않은 함수를 통해 선택된다.
우리가 이러한 시스템을 분석하도록 허용하는 단순함은 실행 경로들 모두, 뿐만 아니라 모든 가능한 적대적 전략들을 계속해서 알기 위한 요구를 제거하며, 오히려 우리가 어떻게 이러한 상태를 달성하는지를 고려하지 않고, 단일 관심 상태에 완전히 초점을 두는 것이다. 보다 구체적으로, 우리의 분석에 대한 코어 추출 가능한 통찰력은 시스템의 비가역 상태를 식별하는데 있으며, 매우 많은 올바른 노드들이 소수 컬러로 되돌아가는 적색 또는 청색을 빼앗은 상태는 매우 가능성이 없다.
우리는 두 개의 흡수 상태들을 가진 탄생-죽음 마르코프(Markov) 프로세스를 통해 슬러쉬 프로토콜을 모델링하며, 여기에서 모든 노드들은 적색이거나 또는 모든 노드들은 청색이다. 우리의 구성에서, 모든 상태들(흡수 상태들을 제외한)은 일시적이며, 이것은 결코 상기 상태로 돌아갈 수 없는 0이 아닌 확률이 있음을 의미한다. 우리의 분석은 슬러쉬 프로토콜이, 한정된 시간에서, 0이 아닌 확률을 가진 흡수 상태에 도달한다는 것을 도시한다. 더욱이, 두 개의 컬러들 중 하나로의 수렴의 확률은 단지 국소 라운드 카운터만을 사용하여 정확하게 측정될 수 있다. 사실상, 슬러쉬는 대수 스텝들 whp에 가까운 판단으로 수렴된다.
스노우플레이크에 대해, 우리는 모든 노드들이 정확하다는 가정을 놓으며 노드들의 몇몇 부분이 적대적이라고 가정한다. 중요한 통찰력은 비가역 상태, 또는 복귀 불능 포인트가 존재하고 있다는 것이며, 그 후 시스템은 흡수 상태 whp로 수렴될 것이다. 더욱이, 올바른 노드는 단지 시스템이 복귀 불능 포인트를 지날 때를 결정한다. 이들 두 개의 담보들을 함께 구성하면, 안전 위반의 확률은 엄격하게 ε 미만이며, 이것은 원하는 대로 구성될 수 있다. 놀랍지 않게도, 안전과 라이브니스 사이에 내재된 긴장이 있지만, 실질적인 적절한 파라미터들이 발견될 수 있다. k의 더 큰 값들은 보다 느린 수렴의 비용으로, 올바른 노드들에 대한 더 높은 레벨들의 보안을 획득한다.
스노우볼은 스노우플레이크에 대한 개선이며, 여기에서 네트워크 샘플들에서 무작위 섭동들은, 우리가 신뢰로서 나타내는, 히스토리의 부분 형태를 도입함으로써 감소된다. 마르코프 체인을 갖고 스노우볼을 모델링하는 것은 상태 공간 파괴 문제 때문에 어렵다. 특히, 간단히 각각의 올바른 노드의 컬러 선호들을 계속해서 파악하는 것은 충분하지 않으며, 분석은 또한 그것들의 신뢰에 대한 정보를 유지해야 한다. 분석을 가능하게 하기 위해, 우리는 볼들 및 항아리들의 게임을 통해 수학적 토대들을 구조화하며, 여기에서 각각의 항아리는 올바른 노드들 중 하나를 나타냄, 볼 카운트는 어느 하나의 컬러에 있는 신뢰들에 대응한다. 이러한 모델을 사용하여, 분석은 스노우볼의 안전 보증들이 엄격하게 스노우플레이크의 것들보다 강하다는 것을 증명하기 위해 다양한 테일 부등식들을 이용한다. 특히, 일단 시스템이 복귀 불능 포인트에 이르면, 복귀 확률은 엄격하게 스노우플레이크에서보다 낮다.
마지막으로, 스노우볼의 안전 보증들은 비용을 분할하기 위해 DAG를 사용한 스노우볼의 구체적인 인스터스화인, 애벌랜치의 것들에 매핑될 수 있다. 우리는 애벌랜치 DAG 자체의 구조가 DAG를 사용하는 다른 합의 프로토콜들 사이에서의 미묘한 차이인, 투표들에 대응하지 않는다는 것을 주의하자. DAG는 단지 성능 최적화이며, 그 자체는 합의 프로세서에 완전히 직교한다.
속성(P2)에 관하여, 우리는 스노우플레이크 및 스노우볼 양쪽 모두가 연속하는 대다수 지원을 계속해서 알기 위해 카운터를 사용한다는 것을 주의한다. 처음에, 상대는 선한 트랜잭션에 대한 충돌을 위조할 수 없으므로, 모든 올바른 노드들은 컬러 적색 또는 ⊥를 가질 것이며, 여기에서 ⊥는 "아직 정의되지 않음"을 나타낸다. 비잔틴 노드는 그것이 충돌들을 위조할 수 없으며 ⊥는 프로토콜에 의해 허용되지 않으므로 적색이 아닌 다른 임의의 대답으로 임의의 질의에 응답할 수 없다. 그러므로, 비잔틴 노드의 유일한 부정 행위는 대답을 거절한다. 올바른 노드는 질의가 타임 아웃된다면 재-샘플링할 것이므로, 예상된 수렴에 의해, 모든 올바른 노드들은 유한한 수의 라운드들(whp) 내에서 완전한 적색 값으로 끝날 것이다.
애벌랜치는 각각이 단일-법령 인스턴스인, 관련되지 않은 충돌 세트들의 운명을 얽히게 하는 DAG 구조를 소개한다. 이러한 얽힘은 긴장을 구체화한다: 결정되지 않은 부모들에 선한 트랜잭션을 부착하는 것은 트랜잭션들을 판단을 향해 나아가도록 돕지만, 그것은 부모가 불량이 될 때 트랜잭션들을 라이브니스 실패들을 겪는 위험에 처하게 한다. 우리는 이러한 긴장을 풀고 두 개의 메커니즘들의 도움으로 라이브니스 보증을 제공할 수 있다.
첫 번째로, 우리는 적응적 부모 선택 전략을 이용하며, 여기에서 트랜잭션들은 DAG의 라이브 에지에 부착되며, 발원 정점에 더 가까운 새로운 부모들을 갖고 재시도된다. 이러한 절차는 논란이 없는, 결정된 부모들로 끝나도록 보장되어, 트랜잭션이 경쟁적, 불량 트랜잭션들로 인해 라이브니스 실패를 겪을 수 없음을 보장한다. 2차 메커니즘은 결정된 가계를 가진 선한 트랜잭션들이 충분한 치트들을 수신할 것임을 보장한다. 올바른 노드들은 충분한 자손이 없으며 그것들의 신뢰를 증가시키도록 돕기 위해 무-연산("nop") 트랜잭션들을 방출하는 선한 트랜잭션들에 대한 DAG를 검사한다. 가동 중인 이들 두 개의 메커니즘들을 갖고, 최악의 경우에, 애벌랜치는 스노우볼의 별개의 인스턴스들로 악화될 것이며, 따라서 선한 트랜잭션들에 대해 동일한 라이브니스 보증을 제공한다는 것을 이해하기에 용이하다.
상기 설명된 예시적인 실시예들에서 프로토콜들의 패밀리에 관한 부가적인 이해는 다음을 포함한다.
첫 번째로, 프로토콜들은 스텝 함수보다, 기본 함수가 평활한 안전 및 라이브니스 보증들 양쪽 모두를 야기한다. 많은 다른 합의 프로토콜들에서, 안전은 어떤 보증들도 제공되지 않는, 고정된 임계 수(예컨대, 1/3)까지의 적대적 노드들로 보증된다. 우리의 프로토콜들에서, 보증들은 사전-수립된 한계를 넘어 적대적 퍼센티지를 갖고 완만하게 저하된다. 예를 들어, 최적의 시스템 파라미터들은 실패 확률(ε)을 갖고 정확히 1/5 적대적 존재를 용인하기 위해 선택될 수 있다. 그러나, 시스템이 1/5보다 큰 적대적 존재를 마주하면, 실패의 확률은 즉시 1로보다는, ε 약간 위로 떨어진다.
두 번째로, 이들 프로토콜들은 안전 및 라이브니스 트레이드오프들을 표면화한다. 시스템 설계자는 라이브니스의 비용으로, 1/2가 넘는 적대적 존재와 같은, 재해적 이벤트들 하에서도 안전을 보증하도록 선택할 수 있다. 이것은 전통적인 또는 나카모토-기반 합의 프로토콜들에서 이용 가능하지 않은 강력한 조정을 제공한다.
합의 프로토콜들에 대한 다수의 공격 벡터들이 있다. 우리는 이제 두 개의 가장 중요한 것들, 시빌 공격들 및 플로딩 공격들을 고려한다.
시빌 공격들에 관하여, 합의 프로토콜들은 통상적으로 참여자들의 일부만이 적대적이라는 가정들에 기초하여 그것들의 보증들을 제공한다. 이들 한계들은 네트워크가 순진하게 임의의 참여자들에게 개방된 채로 있는 경우 위반될 수 있다. 특히, 다수의 아이덴티티들이 상대에 의해 생성되는, 시빌 공격은 적대적 한계를 초과하기 위해 사용될 수 있다. 시빌 문제는 통상적으로 시빌 제어 메커니즘들이 기본의, 보다 복잡한 동의 프로토콜과 완전히 다르므로, 합의로부터 별도로, 및 그러므로 합법적으로 처리되지만, 이것은 모든 합의 프로토콜이 모든 시빌 제어 메커니즘과 결합될 수 있음을 내포하지는 않는다. 나카모토 합의는, 예를 들어, 하드웨어 투자를 계속해서 걸도록 광부들에게 요구하는, 시빌들을 제한하기 위해 작업 증명을 사용한다. 다른 프로토콜들은 지분 증명 또는 권한 증명에 의존한다. 상기 예시적인 실시예들에서 설명된 합의 프로토콜들은 임의의 시빌 제어 메커니즘을 채택할 수 있지만, 지분 증명은 그것들의 정지 동작과 가장 일치한다. 지분 증명 및 권한 증명과 같은 제어 메커니즘들은 작업 증명과 연관된 에너지 비효율들을 피한다. 암호화폐들은 시빌 공격들을 처리하기 위해 이들 및 다른 제어 메커니즘들과 조합하여 본 출원에 개시된 합의 프로토콜들을 사용하여 구현될 수 있다.
플러딩 공격들과 관련하여, 이러한 공격들은 임의의 분산형 시스템에 대한 잠재적인 문제이다. 보호 메커니즘 없이, 공격자는 다수의 트랜잭션들을 생성하고 DAG를 플러딩하여, 저장 장치를 소비할 수 있다. 네트워크-층 보호들, 권한 증명, 또는 경제적 메커니즘들을 포함한, 이러한 공격들을 그만두게 하기 위한 다수의 기술들이 있다. 애벌랜치에서, 우리는 트랜잭션 요금들을 사용하여, 공격자가 그것의 제어 하에서 어드레스들로 다시 돈을 전송할지라도 이러한 공격들을 값비싸게 만든다.
통신 복잡도와 관련하여, 라이브니스가 불량 트랜잭션들에 대해 보증되지 않으므로, 우리는 선한 트랜잭션들의 경우에 대해서만 우리의 메시지 복잡도 분석에 초점을 맞춘다. 선한 트랜잭션들의 경우에 대해, 스노우플레이크 및 스노우볼은 양쪽 모두 0(kn log n) 메시지들 후 끝나도록 보장된다. 이것은 유행 알고리즘들에 관련된 잘 알려진 결과들로부터 이어진다. 애벌랜치에 대한 통신 복잡도는 보다 미묘하다. 애벌랜치에 의해 유도된 DAG를 DAG의 폭에 대응하며, 부모 선택 알고리즘에 의해 결정되는, p의 예상된 분기 인자를 갖게 한다. β 판단 임계치를 고려해볼 때, 판단 포인트에 막 이른 트랜잭션이 연관된 자손(
Figure pct00020
)을 가질 것이다. m을
Figure pct00021
의 예상된 깊이라고 하자. 애벌랜치 네트워크를 진행하게 하고 그 후 DAG를 깊이(y)에서 프리징하게 하면, 그것은 대략 py 정점들/트랜잭션들을 가질 것이며, 그것의 p(y-m)은 예상 시 판단된다. 단지 pm 최근 트랜잭션들만이 판단을 위해 요구된 자손이 부족할 것이다. 각각의 노드에 대해, 각각의 질의는 k개 샘플들을 요구하며, 그러므로 트랜잭션당 총 메시지 비용은 예상 (pky) / (p(y-m)) = ky / (y-m)에 있다. m은 시스템이 끊임없이 진행함에 따라 DAG의 결정되지 않은 영역에 의해 결정된 상수이므로, 노드 당 메시지 복잡도는 0(k)인 반면, 총 복잡도는 0(kn)이다.
예시적인 실시예들의 동작을 평가하기 위해, 우리는 애벌랜치로 비트코인 트랜잭션들을 완전히 포팅하였으며, 베어본즈(bare-bones) 지불 시스템을 구현하였다. 우리는 이러한 예시적인 구현예가 어떻게 암호화폐들의 중심에서 값 전달 프리미티브를 지원하고 그 후 Amazon AWS 상에서의 대규모 배치를 통해 스루풋, 확장성, 및 지연시간을 검사하며, 최종적으로 다른 시스템들로부터 알려진 결과들에 대한 비교를 제공할 수 있는지를 이하에서 설명할 것이다.
이러한 예시적인 시스템의 특정한 특징들, 파라미터들 및 다른 구성 세부사항들은 단지 예시의 목적들을 위해 제공되며, 요건들 또는 제한들로 고려되지 않아야 한다는 것이 이해될 것이다. 완전한 암호화폐를 배치하는 것은 일반적으로 부트스트래핑, 민팅, 스테이킹, 언스테이킹, 및 인플레이션 제어와 같은 기능을 수반한다는 것이 또한 주의되어야 한다. 알려진 기술들은 본 출원에서 명확하게 다루어지지 않은 정도까지, 이러한 이슈들을 다루기 위해 간단한 방식으로 적응될 수 있다.
트랜잭션들은 UTXO 트랜잭션들을 포함한다는 것이 예시적인 구현예의 설명을 위해 가정된다. 애벌랜치에서 DAG 구조 외에, 지출 의존성을 캡처하는 UTXO 그래프는 지불 시스템을 위한 원장을 실현하기 위해 사용된다. 애매성을 피하기 위해, 우리는 송금 트랜잭션들에 대한 데이터를 인코딩하는 트랜잭션들을 나타내지만, 우리는 애벌랜치의 DAG 정점들에서 트랜잭션들(T∈
Figure pct00022
)을 호출한다.
우리는 비트코인으로부터 트랜잭션 및 어드레스 메커니즘들을 물려받는다. 가장 간단하게는, 트랜잭션들은, 대응하는 리딤(redeem) 스크립트들을 갖고, 다수의 입력들 및 출력들로 이루어진다. 어드레스들은 그것들의 공개 키들의 해시에 의해 식별되며, 서명들은 대응하는 사설 키들에 의해 생성된다. 전체 스크립트 언어는 리딤 스크립트가 UTXO를 지출하도록 인증됨을 보장하기 위해 사용된다. UTXO들은 유효 트랜잭션에 의해 완전히 소비되며, 명명된 수신인들에 의해 지출 가능한 새로운 UTXO들을 생성할 수 있다. 다중-입력 트랜잭션들은 다수의 UTXO들을 소비하며, 애벌랜치에서, 다수의 충돌 세트들에 나타날 수 있다. 이것들을 정확하게 감안하기 위해, 우리는 애벌랜치 정점들로서 트랜잭션-입력 쌍들(예컨대, Ina1)로서 표현한다.
도 9는 본 실시예에서 애벌랜치에 의해 사용된 논리 DAG 구조에 따라 구성된 예시적인 DAG(900)를 도시한다. 음영을 가진 아주 작은 정사각형들은 명료함을 위해 DAG 토폴로지를 형성하도록 돕는 더미 정점들이며, 직접 에지들로 대체될 수 있다. 둥근 그레이 영역들은 충돌 세트들이다.
트랜잭션-입력 쌍들의 충돌 관계는 각각의 쌍이 단지 하나의 미사용 출력을 지출하기 때문에 이행적이다. 우리는, 도 9에 예시된 바와 같이, 그것의 입력들 모두가 수용되지 않는다면 어떤 트랜잭션도 수용되지 않음을 보장하기 위해 트랜잭션의 모든 입력들에 대해
Figure pct00023
의 결합을 사용한다. 이러한 아이디어에 따라, 우리는 최종적으로 다수의 트랜잭션들이 질의마다 함께 배칭될 수 있도록 트랜잭션-입력 쌍들의 DAG를 구현한다.
우리는 시스템 스케일을 돕기 위해 다수의 최적화들을 구현한다. 첫 번째로, 우리는 신뢰에 대한 재귀적 정의가 그 외 값비싼 DAG 횡단을 요구할 수 있기 때문에, DAG에 대해 게으른 업데이트들을 사용한다. 우리는 DAG에 대한 각각의 활성 정점에 대한 현재 d(T) 값을 유지하며, 단지 후손 정점이 치트를 얻을 때만 그것을 업데이트한다. 탐색 경로는 수용된 정점들에서 축소될 수 있으므로, 업데이트에 대한 비용은 거절된 정점들이 제한된 수들의 후손들을 가지며 DAG의 결정되지 않은 영역이 일정한 크기에 머무르는 경우 일정하다. 두 번째로, 충돌 세트는, 불량 클라이언트가 다량의 충돌 트랜잭션들을 생성할 수 있기 때문에, 실제로 매우 클 수 있다. 각각의 충돌 세트에 대한 컨테이너 데이터 구조를 유지하는 대신에, 우리는 각각의 UTXO로부터 전체 충돌 세트에 대한 대표로서 나타내는 선호된 트랜잭션으로의 매핑을 생성한다. 이것은 노드가 미래 충돌들, 및 질의들에 대한 적절한 응답을 빠르게 결정할 수 있게 한다. 최종적으로, 우리는 k개 응답들을 기다리지 않고, αk 임계치가 충족되지마자 조기에 종료함으로써 질의 프로세스의 속도를 높인다.
상기 설명된 예시적인 구현예는 수백(125) 내지 수천(2000) 개의 가상 기계 인스턴스들을 구동함으로써 Amazon EC2 상에서 테스트되었다. 우리는 각각이 개별 노드를 시뮬레이션하는, c5. Large 인스턴스들을 사용한다. AWS는 2Gbps까지의 대역폭을 제공하지만, 애벌랜치 프로토콜은 최대 약 100Mbps를 이용한다.
우리의 예시적인 구현예는 두 개의 버전들의 트랜잭션들을 지원한다: 하나는 맞춤화된 UTXO 포맷인 반면, 다른 것은 비트코인 0.16으로부터 직접 코드를 사용한다. 양쪽 지원된 포맷들 모두는 비트코인으로부터 secp256k1 암호 라이브러리를 사용하며 지갑들에 대해 동일한 어드레스 포맷을 제공한다. 모든 시뮬레이션들은 지오-복제를 제외한 맞춤화된 포맷을 사용하며, 여기에서 양쪽 모두에 대한 결과들이 제공된다.
우리는 그 각각이 분리된 지갑들을 유지하고, 새로운 수신인 어드레스들과의 트랜잭션들을 생성하며 요청들을 애벌랜치 노드들로 전송하는, 별개의 클라이언트 프로세스들을 생성함으로써 사용자들로부터의 새로운 트랜잭션들의 일정한 흐름을 시뮬레이션한다. 우리는 우리의 시스템의 용량을 최대로 하기 위해 여러 개의 이러한 클라이언트 프로세스들을 사용한다. 각각의 트랜잭션에 대한 수신인들의 수는 비트코인의 현재 평균 트랜잭션 크기인, 약 250바이트들의 평균 트랜잭션 크기들을 달성하기 위해 튜닝된다(평균적으로 트랜잭션당 1-2 입력들/출력들 및 안정된 UTXO 크기). 네트워크를 효율적으로 이용하기 위해, 우리는 질의 동안 40개까지의 트랜잭션들을 함께 묶지만, 개개의 트랜잭션 입도로 신뢰 값들을 유지한다.
모든 보고된 메트릭들은 모든 클라이언트들의 관점으로부터 취해진 단-대-단 측정들을 반영한다. 즉, 클라이언트들은 스루풋에 대해 초당 확인된 트랜잭션들의 총 수를 검사하며, 각각의 트랜잭션에 대해, 지연시간에 대한 확인 시간스탬프로부터 개시 시간스탬프를 차감한다. 보안 파라미터들에 대해, 우리는 k = 10, α = 0.8, β1 = 11, β2 = 150을 이용하였으며, 이것은 ~1024년들의 MTTF를 산출한다. 하나의 보안 파라미터들이 다른 실시예들에서 사용될 수 있다.
우리는 먼저 그것을 트랜잭션들로 포화시키고 트랜잭션들이 정상 상태에서 확인되는 레이트를 검사함으로써 시스템의 스루풋을 측정한다. 이러한 실험을 위해, 우리는 먼저 각각이 임의의 주어진 시간에 400개의 미해결된 트랜잭션들을 유지하는, 10개의 클라이언트 프로세스들을 가진 125 노드들 상에서 애벌랜치를 구동한다.
시스템은 20의 배치 크기에 대해 초당 6851 트랜잭션들(tps)을 및 40의 배치 크기에 대해 7002 tps를 초과하여 달성한다는 것이 발견되었다. 시스템은 알려진 성능을 가진 다른 블록체인들에 비교하여 작은 배치 크기에 의해 포화된다: 비트코인은 블록당 수천 개의 트랜잭션들을 함께 묶고, 알고랜드(Algorand)는 2 내지 10Mbyte 블록들, 즉 8.4 내지 41.9K tx/배치를 사용하며 콘플럭스(Conflux)는 4Mbyte 블록들, 즉 16.8K tx/배치를 사용한다. 이들 종래의 시스템은 단일 판단을 하는데 비교적 느리며, 따라서 더 양호한 성능을 위해 매우 큰 배치(블록) 크기를 요구한다. 작은 배치 크기를 갖고 높은 스루풋을 달성하는 것은, 이하에서 보다 상세하게 설명될 바와 같이, 낮은 지연시간을 암시한다.
시스템이 애벌랜치 합의에 참여하는 노드들의 수에 대하여 어떻게 확장하는지를 검사하기 위해, 우리는 동일한 설정들을 가진 실험들을 구동하며 노드들의 수를 125에서 2000까지 변경한다.
전체 스루풋은, 가능화된 서명 검증을 갖고, 네트워크가 n=2000으로 16의 배수만큼 성장할 때 약 1.34%를 6909 tps로 떨어진다는 것이 발견되었다. 이러한 저하는 반복된 구동들의 성능에서의 변동과 비교하여 아주 작다.
애벌랜치는 3개의 소스들로부터 확장성을 획득한다: 첫 번째로, 단지 지출 관계들을 캡처한 부분 순서는 모든 트랜잭션들을 선형화하는 전통적인 BFT 복제 로그보다 많은 동시성을 허용한다; 두 번째로, 리더의 부족은 자연스럽게 병목들을 피한다; 최종적으로, 각각의 노드가 판단 당 처리해야 하는 메시지들의 수는 0(k)이며 네트워크가 증대함에 따라 성장하지 않는다.
우리는 다음으로 병목현상들이 우리의 예시적인 구현예에 있는 곳을 검사한다. 불능화된 서명 검증을 갖고, 스루풋들은 대략 2.6배 더 높아진다. 이것은 암호화 검증 오버헤드가 우리의 예시적인 구현예에서 현재 병목현상임을 나타낸다. 이러한 병목현상은 트랜잭션 검증을 GPU로 오프로딩함으로써 처리될 수 있다. 이러한 최적화가 없을지라도, 7K tps가 현존하는 블록체인들을 훨씬 초과한다.
지연시간에 관하여, 우리는 그것의 제출 순간부터 그것이 수용된 것으로 확인될 때까지 소비된 시간으로서 트랜잭션의 지연시간을 정의한다. 예시적인 구현예 상에서의 우리의 시뮬레이션들은 2000개의 노드들을 가진 스루풋 측정들에 대해 동일한 셋업을 사용하여, 대부분의 트랜잭션들이 대략 0.3초 내에 확인된다는 것을 나타낸다. 가장 일반적인 지연시간들은 약 206ms이고 변화량은 낮으며, 이것은 노드들이 대략 동시에 그룹으로서 최종 값에 수렴된다는 것을 나타낸다. 이들 시뮬레이션들에서 우리가 관찰한 최대 지연시간은 약 0.4초이다.
우리는 또한 상이한 수들의 노드들에 대한 트랜잭션 지연시간들을 시뮬레이션하였다. 중앙치 지연시간은 네트워크 크기에 관계없이 대략적이라는 것이 발견되었다.
우리는 다음으로 미사용 출력들을 이중 소비하는 오작동 클라이언트들에 의해 발행된 불량 트랜잭션들이 어떻게 정직한 클라이언트들에 의해 생성된 선한 트랜잭션들에 대한 지연시간에 영향을 미칠 수 있는지를 조사한다. 우리는 미정인 트랜잭션들의 일 부분(0% 내지 25%)이 몇몇 기존의 것들과 충돌하는 오작동 클라이언트들을 시뮬레이션하기 위한 전략을 채택한다. 클라이언트 프로세스들은 모든 시뮬레이션된 미정인 트랜잭션들 중에서 몇몇 이중 소비 트랜잭션 흐름들을 지정하고 충돌 트랜잭션들을 상이한 노드들로 전송함으로써 이를 달성한다. 우리는 이전 실험들에서처럼 n = 1000을 가진 동일한 셋업을 사용하며, 단지 확인된 트랜잭션들의 스루풋 및 지연시간만을 측정한다.
애벌랜치의 지연시간은 단지 오작동 클라이언트들에 의해서만 약간 영향을 받는다는 것이 발견되었다. 놀랍게도, 최대 지연시간들은 불량 트랜잭션들의 퍼센티지가 증가할 때 약간 떨어진다. 이러한 거동은, 불량 트랜잭션들의 도입으로, 전체 유효 스루풋이 감소되고 그에 따라 시스템 로드를 완화하기 때문에 발생한다. 또한, 선한 트랜잭션들의 스루풋은 불량 트랜잭션들의 비율에 따라 감소한다. 뿐만 아니라, 스루풋에서의 감소는 오작동 클라이언트들의 수에 비례하여 나타나며, 즉 공격자들에 제공된 어떤 레버리지도 없다.
지오-복제(geo-replication)에 관해서, 우리는 상당한 수의 도달 가능한 비트코인 노드들에 가까운 것으로 나타나는 20개 주요 도시들을 선택하였다. 도시들은 북아메리카, 유럽, 서아시아, 동아시아, 오세아니아를 커버하며, 또한 최고 수의 도달 가능한 노드들을 가진 상위 10개 국가들을 커버한다. 우리는 원더네트워크(WonderNetwork) 노드들로부터의 전역적 핑 통계들에 기초하여 지연시간 및 지터링 매트릭스를 사용하며 tc 및 netem을 사용하여 리눅스 커널에서 네트워크 패킷 지연시간을 에뮬레이션한다. 우리는 2000개 노드들이 각각의 도시로 균일하게 분산되었다고 가정하며, 어떤 부가적인 네트워크 지연시간도 동일한 도시 내에서의 노드들 사이에서 에뮬레이팅되지 않는다. 우리는 많은 상품 네트워크 링크들이 있는 인터넷-규모 설정들을 시뮬레이션하기 위해 프로세스당 우리의 대역폭을 20Mbps로 한도를 정한다. 우리는 임의의 순간에 도시당 400개의 미해결된 트랜잭션들을 유지하고 있는, 각각의 도시로 클라이언트 프로세스를 할당한다.
이러한 시나리오에서, 애벌랜치는 39 tps의 표준 편차를 갖고, 3401 tps의 평균 스루풋을 달성한다. 중앙치 트랜잭션 지연시간은 1.35초이며, 4.25초의 최대 지연시간을 갖는다. 우리는 또한 트랜잭션들에 대한 네이티브 비트코인 코드를 지원하며; 이 경우에, 스루풋은, σ = 92 tps를 갖고, 3530 tps이다.
상기 설명된 예시적인 시스템은 종래의 알고랜드 및 콘플럭스 시스템들에 비교되었다. 알고랜드, 콘플럭스, 및 애벌랜치는 모두 그것들의 설계가 기본적으로 상이하다. 알고랜드의 위원회-규모 합의 알고리즘은 전통적인 합의 카테고리에 속하며, 콘플럭스는 더 높은 스루풋을 가능하게 하기 위해 DAG 구조에 의해 나카모토 합의를 확장하는 반면, 애벌랜치는 준안정성에 기초하여 새로운 프로토콜 패밀리에 속한다. 부가적으로, 우리는 베이스라인으로서 비트코인을 사용한다.
알고랜드 및 애벌랜치 평가들 모두는 EC2 상에서 크기 2000의 판단 네트워크를 사용한다. 우리의 평가는 공유된 c5.large 인스턴스들을 택하지만, 알고랜드는 m4.2xlarge를 사용한다. 이들 두 개의 플랫폼들은 c5.large에 대해 약간의 CPU 클록 속도 에지를 제외하고 매우 유사하며, 이것은 우리의 프로세스가 단지 이들 실험들에서 30%만을 소비하기 때문에 대체로 사용되지 않았다. 우리의 실험들에서 선택된 보안 파라미터들은 20% 비잔틴 노드들의 존재 시 10-9 미만으로 안전 위반 확률을 보장하지만, 알고랜드의 평가는 20% 비잔틴 노드들을 갖고 5×10-9 미만으로 위반 확률을 보장한다.
알고랜드 평가도 콘플렉스 평가도 암호화 검증의 오버헤드를 고려하지 않는다. 그것들의 평가들은 메가바이트들의 더미 데이터를 운반하며 MB/시 또는 GB/시 단위의 스루풋을 제공하는 블록들을 사용한다. 따라서 우리는 그것들의 스루풋들을 도출하기 위해, 250바이트들인, 비트코인 트랜잭션(및 또한 우리의 트랜잭션)의 평균 크기를 사용한다. 반대로, 우리의 실험들은 실제 트랜잭션들을 운반하며 모든 암호화 오버헤드를 완전히 고려한다.
스루풋은 비트코인에 대해 3 내지 7 tps, 알고랜드(10 Mbyte 블록들을 가진)에 대해 874 tps, 및 콘플렉스에 대해 3355 tps(즉, 동일한 설정들 하에서 알고랜드의 스루풋의 3.84배)이다.
반대로, 애벌랜치는 위원회 또는 작업 증명 없이 2000개 노드들까지 일관되게 3400 tps에 걸쳐 달성한다. 지연시간에 대하여, 트랜잭션은 비트코인에서 10 내지 60분, 알고랜드에서 대략 50초, 콘플렉스에서 7.6 내지 13.8분, 및 애벌랜치에서 1.35초 후 확인된다.
애벌랜치는 알고랜드가 위원회들을 선출하기 위해 검증 가능한 랜덤 함수를 사용하며, 애벌랜치가 단지 부분 순서만을 수립하는 동안 총-순서화된 로그를 유지하기 때문에 스루풋 및 지연시간 양쪽 모두에서 알고랜드보다 훨씬 양호하게 수행한다. 알고랜드는 리더-기반이며 위원회에 의한 합의를 수행하지만, 애벌랜치는 리더가 없다.
애벌랜치는 콘플렉스와 유사한 스루풋을 갖지만, 그것의 지연시간은 337 내지 613배 더 양호하다. 콘플렉스는 또한 합의를 위한 비용을 분할하고 스루풋을 증가시키기 위해 DAG 구조를 사용하지만, 그것은 여전히 작업 증명을 사용한 나카모토 합의에 뿌리를 두고 있으며, 그러므로 애벌랜치의 매우 짧은 확인 시간을 제공할 수 없다.
블록체인 시스템에서, 그것은 보통 배칭을 통해 지연시간의 비용으로 스루풋을 개선할 수 있다. 성능의 실제 병목현상은 시스템이 초당 이룰 수 있는 판단들의 수이며, 이것은 기본적으로 알고랜드에서 비잔틴 동의(BA*) 및 콘플렉스에서 나카모토 합의에 의해 제한된다.
상기 설명으로부터 예시적인 실시예들은 종래의 합의 프로토콜들에 대해 상당한 이점들을 제공한다는 것이 명백하다.
예를 들어, 상기 예시적인 실시예들에서 설명된 합의 프로토콜들의 새로운 패밀리는 매우 효율적이며 강력하다. 그것들은 잘 확장되고, 높은 스루풋 및 빠른 최후를 달성하고, 정확한 멤버십 지식 없이 작동하며, 재해적인 적대적 공격들 하에서 완만하게 저하된다.
이러한 실시예들은 보다 특히, 준안정 메커니즘 주위에 형성된, 리더가 없는 비잔틴 장애 허용 프로토콜들의 패밀리를 포함한다. 프로토콜들은 비잔틴 상대들의 존재 시 강한 확률적 안전 보증을 제공하지만, 그것들의 동시 발생적인 특징은 높은 스루풋 및 확장성을 달성할 수 있게 한다. 작업 증명에 의존하는 블록체인들과 달리, 그것들은 정지성이며 녹색이다. 0(n) 정보(교환된 비트들의 수에 대한)를 프로세싱하는 리더 노드들을 가진 종래의 합의 프로토콜들과 달리, 어떤 노드도 몇몇 보안 파라미터(k)에 대해 0(k) 이상 프로세싱하지 않는다.
본 출원에 개시된 합의 프로토콜들은 매우 다양한 상이한 애플리케이션들에서 사용될 수 있다. 예를 들어, 합의 프로토콜들은 암호화폐들 및 다른 블록체인 애플리케이션들에서 개선된 성능을 제공할 수 있다. 상기 설명된 실험들은 예시적인 구현예들이 높은 스루풋(3400 tps)을 달성하고, 낮은 확인 지연시간(1.35초)을 제공하며, 유사한 기능을 전달하는 기존의 시스템들에 비교하여 잘 스케일링할 수 있음을 보여준다.
도 1 내지 도 9와 함께 도시되고 설명된 특정한 배열들은 단지 예시적인 예로서 제공되며, 다수의 대안적인 실시예들이 가능하다는 것이 이해될 것이다. 본 출원에 개시된 다양한 실시예들은 그러므로 임의의 방식으로 제한적인 것으로 해석되어서는 안된다. 준안정 합의 프로토콜들을 구현하기 위한 다수의 대안적인 배열들이 다른 실시예들에서 이용될 수 있다.
예를 들어, 도 2 내지 도 7에서 예시된 바와 같이 예시적인 프로토콜들의 특정한 프로세싱 동작들은 다른 실시예들에서 변경될 수 있다.
또 다른 예로서, 상기 설명된 특정한 실시예들에서 동기성 가정은 다른 실시예들에서 완화될 수 있으며, 강한 보증들이 비동기성 하에서도 가능하다고 예상된다.
이 기술분야의 숙련자들은 또한 프로세싱 동작들 및 연관된 시스템 엔티티 구성들의 많은 다른 대안적인 배열들이 다른 실시예들에서 사용될 수 있다는 것을 또한 인식할 것이다.
그러므로 다른 실시예들은, 예시적인 실시예들의 엔티티들에 대해, 부가적인 또는 대안적인 시스템 엔티티들을 포함할 수 있다는 것이 가능하다. 또한, 특정한 시스템 및 디바이스 구성들 및 연관된 준안정 합의 프로토콜들은 다른 실시예들에서 변경될 수 있다.
또한 상기 설명된 정보 프로세싱 시스템 배열들은 단지 대표적이며, 대안적인 시스템 배열들이 다른 실시예들에서 사용될 수 있다는 것이 주의되어야 한다.
본 출원에서 설명된 바와 같이 정보 프로세싱 시스템에서 주어진 클라이언트, 서버, 프로세싱 노드 또는 다른 구성요소는 메모리에 결합된 프로세서를 포함한 대응하는 프로세싱 디바이스를 이용하여 예시적으로 구성된다. 프로세서는 프로세싱 동작들 및 다른 기능의 성능을 제어하기 위해 메모리에 저장된 소프트웨어 프로그램 코드를 실행한다. 프로세싱 디바이스는 또한 하나 이상의 네트워크들을 통한 통신을 지원하는 네트워크 인터페이스를 포함한다.
프로세서는, 예를 들어, 마이크로프로세서, ASIC, FPGA, CPU, ALU, GPU, DSP, 또는 다른 유사한 프로세싱 디바이스 구성요소, 뿐만 아니라 다른 유형들 및 배열들의 프로세싱 회로부를, 임의로 조합하여 포함할 수 있다. 예를 들어, 본 출원에 개시된 프로세싱 디바이스의 주어진 암호화 프로세싱 모듈은 이러한 회로부를 사용하여 구현될 수 있다.
메모리는 프로세싱 디바이스의 기능의 부분들을 구현하는데 프로세서에 의한 실행을 위해 소프트웨어 프로그램 코드를 저장한다. 대응하는 프로세서에 의한 실행을 위해 이러한 프로그램 코드를 저장하는 주어진 이러한 메모리는 보다 일반적으로 프로그램 코드를 구체화한 프로세서 판독 가능한 저장 매체로서 불리우는 것의 예이며, 예를 들어, SRAM DRAM, 또는 다른 유형들의 랜덤 액세스 메모리, ROM, 플래시 메모리, 자기 메모리, 광학 메모리, 또는 다른 유형들의 저장 디바이스들과 같은 전자 메모리를 임의로 조합하여 포함할 수 있다.
이러한 프로세서 판독 가능한 저장 매체를 포함한 제조 물품들은 본 발명의 실시예들로 고려된다. 본 출원에서 사용되는, 용어 "제조 물품"은 일시적인, 전파 신호들을 배제하는 것으로 이해되어야 한다.
프로세서 판독 가능한 저장 매체를 포함한 다른 유형들의 컴퓨터 프로그램 제품들이 다른 실시예들에서 구현될 수 있다.
또한, 본 발명의 실시예들은 준안정 합의 프로토콜들과 연관된 프로세싱 동작들뿐만 아니라 다른 관련된 기능을 구현하도록 구성된 프로세싱 회로부를 포함한 집적 회로들의 형태로 구현될 수 있다.
주어진 실시예에서 프로세싱 디바이스들은, 예를 들어, 랩탑, 태블릿 또는 데스크탑 개인용 컴퓨터들, 이동 전화들, 또는 다른 유형들의 컴퓨터들 또는 통신 디바이스들을, 임의의 조합하여 포함할 수 있다. 예를 들어, 컴퓨터 또는 이동 전화는 본 출원에 개시된 준안정 합의 프로토콜에 참여하기 위한 프로세싱 디바이스로서 이용될 수 있다. 각각의 시스템 엔티티들과 연관된 프로세싱 디바이스들을 포함한 정보 프로세싱 시스템의 다양한 요소들 간의 이들 및 다른 통신들은 하나 이상의 네트워크들을 통해 발생할 수 있다.
본 출원에 개시된 정보 프로세싱 시스템은 하나 이상의 프로세싱 플랫폼들, 또는 그것의 부분들을 사용하여 구현될 수 있다.
예를 들어, 정보 프로세싱 시스템의 적어도 일 부분을 구현하기 위해 사용될 수 있는 프로세싱 플랫폼의 일 예시적인 실시예는 물리적 인프라스트럭쳐상에서 구동하는 하이퍼바이저를 사용하여 구현된 가상 기계들을 포함한 클라우드 인프라스트럭쳐를 포함한다. 이러한 가상 기계들은 하나 이상의 네트워크들을 통해 서로 통신하는 각각의 프로세싱 디바이스들을 포함할 수 있다.
이러한 실시예에서 클라우드 인프라스트럭쳐는 하이퍼바이저의 제어 하에서 가상 기계들의 각각의 것들 상에서 구동하는 애플리케이션들의 하나 이상의 세트들을 추가로 포함할 수 있다. 적어도 하나의 기본 물리적 기계를 사용하여 각각이 가상 기계들의 세트를 제공하는 다수의 하이퍼바이저들을 사용하는 것이 가능하다. 하나 이상의 하이퍼바이저들에 의해 제공된 가상 기계들의 상이한 세트들은 정보 프로세싱 시스템의 다양한 구성요소들의 다수의 인스턴스들을 구성하는데 이용될 수 있다.
본 출원에 개시된 정보 프로세싱 시스템의 적어도 일 부분을 구현하기 위해 사용될 수 있는 프로세싱 플랫폼의 또 다른 예시적인 실시예는 적어도 하나의 네트워크를 통해 서로 통신하는 복수의 프로세싱 디바이스들을 포함한다. 프로세싱 플랫폼의 각각의 프로세싱 디바이스는 메모리에 결합된 프로세서를 포함하는 것으로 가정된다.
다시, 이들 특정한 프로세싱 플랫폼들은 단지 예로서 제공되며, 정보 프로세싱 시스템은 부가적인 또는 대안적인 프로세싱 플랫폼들, 뿐만 아니라 다수의 개별적인 프로세싱 플랫폼들을 임의로 조합하여 포함할 수 있으며, 각각의 이러한 플랫폼은 하나 이상의 컴퓨터들, 서버들, 저장 디바이스들 또는 다른 프로세싱 디바이스들을 포함한다.
예를 들어, 본 발명의 실시예들을 구현하기 위해 사용된 다른 프로세싱 플랫폼들은 가상 기계들을 포함한 가상화 인프라스트럭쳐 대신에 또는 그것 외에 상이한 유형들의 가상화 인프라스트럭쳐를 포함할 수 있다. 따라서, 몇몇 실시예들에서 시스템 구성요소들은 적어도 부분적으로 클라우드 인프라스트럭쳐 또는 다른 유형들의 가상화 인프라스트럭쳐에서 구동할 수 있는 것이 가능하다.
그러므로, 다른 실시예들에서 부가적인 또는 대안적인 요소들의 상이한 배열들이 사용될 수 있다는 것이 이해되어야 한다. 적어도 이들 요소들의 서브 세트는 총괄하여 공통 프로세싱 플랫폼상에서 구현될 수 있거나, 또는 각각의 이러한 요소는 별개의 프로세싱 플랫폼상에서 구현될 수 있다.
또한, 컴퓨터들, 서버들, 저장 디바이스들 또는 다른 구성요소들의 다수의 다른 배열들이 정보 프로세싱 시스템에서 가능하다. 이러한 구성요소들은 임의의 유형의 네트워크 또는 다른 통신 미디어를 통해 정보 프로세싱 시스템의 다른 요소들과 통신할 수 있다.
이전에 표시된 바와 같이, 본 출원에 개시된 시스템의 구성요소들은 적어도 부분적으로 메모리에 저장되고 프로세싱 디바이스의 프로세서에 의해 실행된 하나 이상의 소프트웨어 프로그램들의 형태로 구현될 수 있다. 예를 들어, 시스템의 준안정 프로토콜 엔티티들 또는 관련된 구성요소들과 연관된 특정한 기능은 적어도 부분적으로 소프트웨어의 형태로 구현될 수 있다.
본 출원에서 설명된 정보 프로세싱 시스템들의 특정한 구성들은 단지 대표적이며, 다른 실시예들에서 주어진 이러한 시스템은 이러한 시스템의 종래의 구현예에서 일반적으로 발견되는 유형의 하나 이상의 요소들을 포함하여, 구체적으로 도시된 것들 외에 또는 그 대신에 다른 요소들을 포함할 수 있다.
예를 들어, 몇몇 실시예들에서, 정보 프로세싱 시스템은 다른 맥락들로 부가적인 또는 대안적인 기능을 제공하기 위해 개시된 기술들을 이용하도록 구성될 수 있다.
따라서, 암호화폐들의 맥락으로 준안정 합의 프로토콜들을 제공하는 맥락에서 본 출원에서의 몇몇 실시예들에서 예시된 기술들은 다른 맥락들에서의 사용을 위해 간단한 방식으로 적응될 수 있다. 따라서, 본 발명의 예시적인 실시예들은 암호화폐들 또는 그것들의 연관된 프로세싱 맥락들에 제한되는 것으로 보여져서는 안된다.
본 출원에서 설명된 실시예들에서 사용된 특정한 프로세스 단계들은 단지 대표적이며, 다른 실시예들은 상이한 유형들 및 배열들의 프로세싱 동작들을 이용할 수 있다는 것이 또한 이해될 것이다. 예를 들어, 예시적인 실시예들에서 순차적으로 수행되는 것으로 도시된 특정한 프로세스 단계들은 다른 실시예들에서 적어도 부분적으로 서로 동시에 수행될 수 있다.
본 출원에서 설명된 바와 같이 본 발명의 실시예들은 단지 예시적이도록 의도된다는 것이 다시 강조되어야 한다. 본 발명의 다른 실시예들은 본 출원에서 설명된 특정한 예시적인 실시예들에서, 및 다수의 대안적인 프로세싱 맥락들로, 이용된 것들과는, 매우 다양한 상이한 유형들의 배열들의 정보 프로세싱 시스템들, 네트워크들 및 디바이스들을 이용하여 구현될 수 있다. 또한, 특정한 실시예들을 설명하는 맥락에서 본 출원에서 이루어진 특정한 가정들은 다른 실시예들에서 이용할 필요는 없다. 이들 및 다수의 다른 대안적인 실시예들은 이 기술분야의 숙련자들에게 쉽게 명백할 것이다.

Claims (27)

  1. 장치로서,
    메모리에 결합된 프로세서를 포함한 제 1 프로세싱 노드를 포함하고;
    상기 제 1 프로세싱 노드는 부가적인 프로세싱 노드들과 합의 프로토콜에 참여하도록 구성되고;
    상기 제 1 프로세싱 노드는 상기 합의 프로토콜에 참여와 함께:
    상기 부가적인 프로세싱 노드들의 각각의 선택된 서브 세트들의 반복된 폴링(polling)을 구현하고;
    상기 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 상기 주어진 트랜잭션에 대한 복수의 가능한 상태들 중 특정 상태로 결의(resolve)하며;
    상기 주어진 트랜잭션에 대한 결의된 상태에 적어도 부분적으로 기초하여 적어도 하나의 자동화 동작을 개시하도록 추가로 구성되는,
    장치.
  2. 제1항에 있어서,
    상기 합의 프로토콜은 비잔틴 장애 허용(Byzantine fault tolerance)을 제공하도록 구성되는,
    장치.
  3. 제1항에 있어서,
    상기 적어도 하나의 자동화 동작은 상기 제 1 및 부가적인 프로세싱 노드들에 의해 총괄하여 유지되는 분산 원장(distributed ledger)에 상기 주어진 트랜잭션을 특성화하는 엔트리를 부가하는 것을 포함하는,
    장치.
  4. 제3항에 있어서,
    상기 엔트리는 블록을 포함하고, 상기 분산 원장은 블록체인을 포함하는,
    장치.
  5. 제1항에 있어서,
    상기 합의 프로토콜에서 상기 제 1 및 부가적인 프로세싱 노드들의 참여는 상기 제 1 및 부가적인 프로세싱 노드들의 각각에 의한 하나 이상의 지정된 증명(proof)들의 제출을 요구하는 적어도 하나의 특정된 제어 메커니즘에 따라 제어되는,
    장치.
  6. 제5항에 있어서,
    상기 지정된 증명은 작업 증명(proof-of-work) 이외의 증명을 포함하는,
    장치.
  7. 제1항에 있어서,
    상기 반복된 폴링의 주어진 인스턴스(instance)는 상기 부가적인 프로세싱 노드들의 무작위 샘플을 폴링하는 것을 포함하는,
    장치.
  8. 제1항에 있어서,
    상기 반복된 폴링의 주어진 인스턴스는 상기 부가적인 프로세싱 노드들의 결정론적 샘플을 폴링하는 것을 포함하는,
    장치.
  9. 제1항에 있어서,
    상기 반복된 폴링은 복수의 반복문(iteration)들에 대해 반복되며 각각의 이러한 반복문은 상기 부가적인 프로세싱 노드들의 상이한 선택된 서브 세트를 폴링하는,
    장치.
  10. 제1항에 있어서,
    상기 제 1 프로세싱 노드는 상기 주어진 트랜잭션과 복수의 다른 트랜잭션들 간의 관계들을 특성화하는 데이터 구조를 유지하기 위해 상기 반복된 폴링의 결과들을 이용하도록 추가로 구성되며, 상기 데이터 구조는 지향성 비순환 그래프(directed acyclic graph), 링크된 리스트(linked list) 및 해시 링크된 체인(hash-linked chain) 중 적어도 하나를 포함하는,
    장치.
  11. 제1항에 있어서,
    상기 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 주어진 트랜잭션이 유효한 트랜잭션으로서 수용되어야 하는지에 대한 결정을 하기 위해 상기 반복된 폴링의 결과들을 이용하는 것을 포함하는,
    장치.
  12. 제1항에 있어서,
    상기 반복된 폴링은 복수의 반복문들에 대해 반복되며, 상기 반복문들 중 주어진 것은:
    상기 부가적인 프로세싱 노드들의 샘플을 선택하는 것;
    상기 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의(query)들을 전송하는 것;
    상기 질의들에 대한 적어도 임계 수의 응답들의 수신에 응답하여, 상기 수신된 응답들의 적어도 지정된 부분이 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태와 상이한 상기 주어진 트랜잭션에 대한 특정 상태를 나타내는지를 결정하는 것; 및
    상기 수신된 응답들의 지정된 부분이 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태와 상이한 상기 주어진 트랜잭션에 대한 특정 상태를 나타낸다는 것에 응답하여, 상기 제 1 프로세싱 노드에서의 상기 주어진 트랜잭션에 대한 현재 상태를 상기 특정 상태로 업데이트하는 것을 포함하는,
    장치.
  13. 제12항에 있어서,
    상기 반복된 폴링의 결과들에 응답하여 상기 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 복수의 반복문(iteration)들의 완료 시 상기 주어진 트랜잭션에 대한 상태를 현재 상태로 결의하는 것을 포함하는,
    장치.
  14. 제12항에 있어서,
    상기 제 1 프로세싱 노드는 상기 수신된 응답들의 적어도 지정된 부분이 상기 주어진 트랜잭션에 대한 특정 상태를 나타내는 상기 반복된 폴링의 연속 반복문들의 수를 나타내는 확신 강도 카운터(conviction strength counter)를 유지하도록 추가로 구성되는,
    장치.
  15. 제14항에 있어서,
    상기 반복된 폴링의 결과들에 응답하여 상기 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 확신 강도 카운터가 임계치를 초과하는 것에 응답하여 상기 주어진 트랜잭션에 대한 상태를 상기 특정 상태로 결의하는 것을 포함하는,
    장치.
  16. 제12항에 있어서,
    상기 제 1 프로세싱 노드는 상기 주어진 트랜잭션에 대한 가능한 상태들 중 각각의 상태에 대한 신뢰 카운터들을 유지하도록 추가로 구성되며, 상기 신뢰 카운터들의 각각은 상기 대응하는 상태를 나타내는 응답들을 산출한 반복문들 중 다수의 반복문들에 대비한(over) 질의들의 총 수를 나타내는,
    장치.
  17. 제16항에 있어서,
    상기 반복된 폴링의 결과들에 응답하여 상기 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 가능한 상태에 대한 신뢰 카운터가 상기 가능한 상태들 중 적어도 하나의 다른 상태에 대한 신뢰 카운터를 초과하는 것에 응답하여 상기 주어진 트랜잭션에 대한 상태를 상기 가능한 상태들 중 하나로 결의하는 것을 포함하는,
    장치.
  18. 제1항에 있어서,
    상기 제 1 프로세싱 노드는 상기 주어진 트랜잭션과, 트랜잭션들이 상호 배타적 충돌 세트들로 분할되는 복수의 다른 트랜잭션들 사이에서의 관계들을 특성화하는 트랜잭션들의 지향성 비순환 그래프를 유지하도록 추가로 구성되는,
    장치.
  19. 제18항에 있어서,
    상기 지향성 비순환 그래프를 유지하는 것은:
    부가적인 프로세싱 노드들의 샘플을 선택하는 것;
    상기 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 것; 및
    상기 질의들에 대한 응답들에 적어도 부분적으로 기초하여 상기 지향성 비순환 그래프를 업데이트하는 것을 포함하며;
    상기 지향성 비순환 그래프를 업데이트하는 것은:
    하나 이상의 부가적인 트랜잭션들을 상기 지향성 비순환 그래프로 삽입하는 것;
    상기 지향성 비순환 그래프의 트랜잭션들 중 각각의 트랜잭션에 대한 신뢰 값들을 업데이트하는 것; 및
    상기 지향성 비순환 그래프의 트랜잭션들을 상호 배타적 충돌 세트들로 재분할하는 것 중 하나 이상을 포함하는,
    장치.
  20. 제19항에 있어서,
    상기 반복된 폴링의 결과들에 응답하여 상기 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 주어진 트랜잭션이 그것의 충돌 세트에서의 유일한 트랜잭션이며 상기 주어진 트랜잭션이 임계치를 초과하는 신뢰 값을 갖는다는 것에 응답하여 상기 상태를 결의하는 것을 포함하는,
    장치.
  21. 제19항에 있어서,
    상기 반복된 폴링의 결과들에 응답하여 상기 주어진 트랜잭션에 대한 상태를 결의하는 것은 상기 가능한 상태에 대한 신뢰 카운터가 상기 가능한 상태들 중 적어도 하나의 다른 상태에 대한 신뢰 카운터를 초과하는 것에 응답하여 상기 상태를 상기 가능한 상태들 중 하나로 결의하는 것을 포함하는,
    장치.
  22. 부가적인 프로세싱 노드들과 분산형 합의 프로토콜에 참여하기 위해 메모리에 결합된 프로세서를 포함하는 제 1 프로세싱 노드를 구성하는 단계;
    상기 합의 프로토콜에 참여와 함께, 상기 제 1 프로세싱 노드가:
    상기 부가적인 프로세싱 노드들의 각각의 선택된 서브 세트들의 반복된 폴링을 구현하는 단계;
    상기 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 상기 주어진 트랜잭션에 대한 복수의 가능한 상태들 중 특정 상태로 결의하는 단계; 및
    상기 주어진 트랜잭션에 대한 상기 결의된 상태에 적어도 부분적으로 기초하여 적어도 하나의 자동화 동작을 개시하는 단계를 포함하는,
    방법.
  23. 제22항에 있어서,
    상기 반복된 폴링은 복수의 반복문들에 대해 반복되며, 상기 반복문들 중 주어진 것은:
    상기 부가적인 프로세싱 노드들의 샘플을 선택하는 것;
    상기 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 것;
    상기 질의들에 대한 적어도 임계 수의 응답들의 수신에 응답하여, 상기 수신된 응답들의 적어도 지정된 부분이 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태와 상이한 상기 주어진 트랜잭션에 대한 특정 상태를 나타내는지를 결정하는 것; 및
    상기 수신된 응답들의 지정된 부분이 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태와 상이한 상기 주어진 트랜잭션에 대한 특정 상태를 나타내는 것에 응답하여, 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태를 상기 특정 상태로 업데이트하는 것을 포함하는,
    방법.
  24. 제22항에 있어서,
    상기 제 1 프로세싱 노드가 상기 주어진 트랜잭션과, 트랜잭션들이 상호 배타적 충돌 세트들로 분할되는 복수의 다른 트랜잭션들 사이에서의 관계들을 특성화하는 트랜잭션들의 지향성 비순환 그래프를 유지하는 단계를 더 포함하며, 상기 지향성 비순환 그래프를 유지하는 단계는:
    상기 부가적인 프로세싱 노드들의 샘플을 선택하는 단계;
    상기 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 단계; 및
    상기 질의들에 대한 응답들에 적어도 부분적으로 기초하여 상기 지향성 비순환 그래프를 업데이트하는 단계를 포함하며,
    상기 지향성 비순환 그래프를 업데이트하는 단계는:
    하나 이상의 부가적인 트랜잭션들을 상기 지향성 비순환 그래프에 삽입하는 단계;
    상기 지향성 비순환 그래프의 트랜잭션들 중 각각의 트랜잭션에 대한 신뢰 값들을 업데이트하는 단계; 및
    상기 지향성 비순환 그래프의 트랜잭션들을 상호 배타적 충돌 세트들로 재분할하는 단계 중 하나 이상을 포함하는,
    방법.
  25. 하나 이상의 소프트웨어 프로그램들의 프로그램 코드를 저장한 비 일시적 프로세서 판독 가능한 저장 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    제 1 프로세싱 노드는 부가적인 프로세싱 노드들과 합의 프로토콜에 참여하도록 구성되며, 상기 프로그램 코드는 상기 제 1 프로세싱 노드에 의해 실행될 때, 상기 합의 프로토콜에 참여와 함께 상기 제 1 프로세싱 노드로 하여금:
    상기 부가적인 프로세싱 노드들의 각각의 선택된 서브 세트들의 반복된 폴링을 구현하게 하고;
    상기 반복된 폴링의 결과들에 응답하여 주어진 트랜잭션에 대한 상태를 상기 주어진 트랜잭션에 대한 복수의 가능한 상태들 중 특정 상태로 결의하게 하며;
    상기 주어진 트랜잭션에 대한 상기 결의된 상태에 적어도 부분적으로 기초하여 적어도 하나의 자동화 동작을 개시하게 하는,
    컴퓨터 프로그램 제품.
  26. 제25항에 있어서,
    상기 반복된 폴링은 복수의 반복문들에 대해 반복되며, 상기 반복문들 중 주어진 것은:
    상기 부가적인 프로세싱 노드들의 샘플을 선택하는 것;
    상기 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 것;
    상기 질의들에 대한 적어도 임계 수의 응답들의 수신에 응답하여, 상기 수신된 응답들의 적어도 지정된 부분이 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태와 상이한 상기 주어진 트랜잭션에 대한 특정 상태를 나타내는지를 결정하는 것; 및
    상기 수신된 응답들의 지정된 부분이 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태와 상이한 상기 주어진 트랜잭션에 대한 특정 상태를 나타내는 것에 응답하여, 상기 제 1 프로세싱 노드에서 상기 주어진 트랜잭션에 대한 현재 상태를 상기 특정 상태로 업데이트하는 것을 포함하는,
    컴퓨터 프로그램 제품.
  27. 제25항에 있어서,
    상기 제 1 프로세싱 노드가 상기 주어진 트랜잭션과, 트래잭션들이 상호 배타적 충돌 세트들로 분할되는 복수의 다른 트랜잭션들 사이에서의 관계들을 특성화하는 트랜잭션들의 지향성 비순환 그래프를 유지하는 것을 더 포함하며, 상기 지향성 비순환 그래프를 유지하는 것은:
    상기 부가적인 프로세싱 노드들의 샘플을 선택하는 것;
    상기 선택된 부가적인 프로세싱 노드들 중 각각의 노드로 질의들을 전송하는 것; 및
    상기 질의들에 대한 응답들에 적어도 부분적으로 기초하여 상기 지향성 비순환 그래프를 업데이트하는 것을 포함하며;
    상기 지향성 비순환 그래프를 업데이트하는 것은:
    하나 이상의 부가적인 트랜잭션들을 상기 지향성 비순환 그래프로 삽입하는 것;
    상기 지향성 비순환 그래프의 트랜잭션들 중 각각의 트랜잭션에 대한 신뢰 값들을 업데이트하는 것; 및
    상기 지향성 비순환 그래프의 트랜잭션들을 상호 배타적 충돌 세트들로 재분할하는 것 중 하나 이상을 포함하는,
    컴퓨터 프로그램 제품.
KR1020207035496A 2018-05-10 2019-05-09 준안정 비잔틴 동의 KR20210034545A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862669734P 2018-05-10 2018-05-10
US62/669,734 2018-05-10
PCT/US2019/031506 WO2019217669A1 (en) 2018-05-10 2019-05-09 Metastable byzantine agreement

Publications (1)

Publication Number Publication Date
KR20210034545A true KR20210034545A (ko) 2021-03-30

Family

ID=68468346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207035496A KR20210034545A (ko) 2018-05-10 2019-05-09 준안정 비잔틴 동의

Country Status (8)

Country Link
US (1) US11816094B2 (ko)
EP (1) EP3791348A4 (ko)
JP (1) JP7329540B2 (ko)
KR (1) KR20210034545A (ko)
CN (1) CN112449705A (ko)
CA (1) CA3099728A1 (ko)
SG (1) SG11202011079SA (ko)
WO (1) WO2019217669A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10600009B1 (en) * 2018-12-18 2020-03-24 Rokfin, Inc. Mint-and-burn blockchain-based feedback-communication protocol
KR102654689B1 (ko) * 2019-05-24 2024-04-03 삼성에스디에스 주식회사 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법
EP4029218A4 (en) 2019-09-11 2022-09-21 Visa International Service Association BLOCKCHAIN FRAGMENTATION WITH ADJUSTABLE QUORUMS
CN111142849B (zh) * 2019-12-10 2023-07-14 贝壳技术有限公司 流程处理方法、装置、存储介质及处理器
GB202005833D0 (en) * 2020-04-21 2020-06-03 Anderson Michael Richard On-chain distributed ledger domain and off-chain client portal and interactions
EP3933638A1 (en) * 2020-06-29 2022-01-05 Siemens Aktiengesellschaft Consensus method for a distributed database
US11914613B2 (en) 2021-03-31 2024-02-27 Microsoft Technology Licensing, Llc Data visibility for nested transactions in distributed systems
CN113411232A (zh) * 2021-06-16 2021-09-17 深圳大学 一种区块链仿真测试系统及应用服务器
CN113922965B (zh) * 2021-10-09 2024-04-16 筹远(上海)信息科技有限公司 一种拜占庭场景下的区块链数据共识方法及装置
CN114124579B (zh) * 2022-01-26 2022-04-12 北京航空航天大学 一种基于以太坊抵御工业互联网中拜占庭攻击的方法
US20230259505A1 (en) * 2022-01-26 2023-08-17 Oracle International Corporation Future transaction processing

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL148137A0 (en) * 1999-08-19 2002-09-12 Massachusetts Inst Technology Synchronous circuit synthesis using an asynchronous specification
US6957331B2 (en) 2000-01-14 2005-10-18 International Business Machines Corporation Method of achieving multiple processor agreement in asynchronous networks
US6931431B2 (en) 2001-01-13 2005-08-16 International Business Machines Corporation Agreement and atomic broadcast in asynchronous networks
US7797457B2 (en) 2006-03-10 2010-09-14 Microsoft Corporation Leaderless byzantine consensus
US9596301B2 (en) * 2006-09-18 2017-03-14 Hewlett Packard Enterprise Development Lp Distributed-leader-election service for a distributed computer system
US7756995B1 (en) 2007-03-28 2010-07-13 Amazon Technologies, Inc. Regulating transmission rates
US8230253B2 (en) 2008-07-21 2012-07-24 International Business Machines Corporation Byzantine fault tolerant dynamic quorum using a trusted platform module
US9106629B2 (en) 2009-08-18 2015-08-11 Microsoft Technology Licensing, Llc Distributed algorithm for changing a shared value
CN103262022B (zh) * 2010-08-16 2016-10-19 康奈尔大学 用于执行数据驱动的协调的计算机系统和方法
US9172670B1 (en) 2012-01-31 2015-10-27 Google Inc. Disaster-proof event data processing
US9887889B1 (en) 2013-07-15 2018-02-06 Amazon Technologies, Inc. State reconciliation using event tracking and polling
CN103792841B (zh) * 2014-01-23 2016-06-01 中国科学院长春光学精密机械与物理研究所 一种空间相机图像对时信息生成系统
WO2017013636A1 (en) 2015-07-23 2017-01-26 Telefonaktiebolaget Lm Ericsson (Publ) Leaderless consistency protocol
DK3482543T3 (da) * 2016-07-05 2022-04-11 Innogy Innovation Gmbh Observationssystem
AU2016101976A4 (en) 2016-11-11 2016-12-08 Klianev, Ivan MR Open Network of Permissioned Ledgers
CN107360206B (zh) * 2017-03-29 2020-03-27 创新先进技术有限公司 一种区块链共识方法、设备及系统
CN114710374B (zh) * 2022-03-14 2023-04-18 中国科学院软件研究所 一种数据广播与共识解耦的异步区块链共识方法和系统

Also Published As

Publication number Publication date
JP2021523476A (ja) 2021-09-02
EP3791348A4 (en) 2022-01-19
WO2019217669A1 (en) 2019-11-14
SG11202011079SA (en) 2020-12-30
US20210117410A1 (en) 2021-04-22
US11816094B2 (en) 2023-11-14
CN112449705A (zh) 2021-03-05
JP7329540B2 (ja) 2023-08-18
EP3791348A1 (en) 2021-03-17
CA3099728A1 (en) 2019-11-14

Similar Documents

Publication Publication Date Title
KR20210034545A (ko) 준안정 비잔틴 동의
Rocket Snowflake to avalanche: A novel metastable consensus protocol family for cryptocurrencies
Rocket et al. Scalable and probabilistic leaderless BFT consensus through metastability
Bano et al. Consensus in the age of blockchains
Wang et al. A survey on consensus mechanisms and mining strategy management in blockchain networks
Natoli et al. Deconstructing blockchains: A comprehensive survey on consensus, membership and structure
Nartey et al. On blockchain and IoT integration platforms: current implementation challenges and future perspectives
Neudecker et al. A simulation model for analysis of attacks on the bitcoin peer-to-peer network
JP7477576B2 (ja) ブロックチェーンネットワークにおける整合性のある分散型メモリプールのための方法及びシステム
Corso Performance analysis of proof-of-elapsed-time (poet) consensus in the sawtooth blockchain framework
Khelaifa et al. A comparative analysis of adaptive consistency approaches in cloud storage
CA3231084A1 (en) Methods and systems for fast consensus within distributed ledgers
Ma et al. Stochastic performance modeling for practical byzantine fault tolerance consensus in the blockchain
Tang et al. Hedera: a permissionless and scalable hybrid blockchain consensus algorithm in multi-access edge computing for iot
Garg et al. An environment for modeling and simulation of message‐passing parallel applications for cloud computing
Wels Guaranteed-TX: The exploration of a guaranteed cross-shard transaction execution protocol for Ethereum 2.0.
Weintraub et al. Structural attacks on local routing in payment channel networks
Bandara et al. Lightweight, geo-scalable deterministic blockchain design for 5G networks sliced applications with hierarchical CFT/BFT consensus groups, IPFS and novel hardware design
Barcellos et al. Beyond network simulators: Fostering novel distributed applications and protocols through extendible design
Davidson State machine replication and consensus with Byzantine adversaries
Wright Investigation of the potential for using the bitcoin blockchain as the world's primary infrastructure for internet commerce
Badam et al. Applicability and Performance of Cross-Blockchain Communications Protocol in Distributed Resource Marketplaces
Gai On the performance of Byzantine fault-tolerant consensus in the blockchain era
Mendes Smart-contract Blockchain with Secure Hardware
DE JESUS THE CASE FOR GENERIC EDGE BASED SERVICES