KR20200112635A - 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법 - Google Patents

뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200112635A
KR20200112635A KR1020197031739A KR20197031739A KR20200112635A KR 20200112635 A KR20200112635 A KR 20200112635A KR 1020197031739 A KR1020197031739 A KR 1020197031739A KR 20197031739 A KR20197031739 A KR 20197031739A KR 20200112635 A KR20200112635 A KR 20200112635A
Authority
KR
South Korea
Prior art keywords
node
nodes
view
sequence number
view change
Prior art date
Application number
KR1020197031739A
Other languages
English (en)
Other versions
KR102170345B1 (ko
Inventor
다이 양
Original Assignee
알리바바 그룹 홀딩 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알리바바 그룹 홀딩 리미티드 filed Critical 알리바바 그룹 홀딩 리미티드
Publication of KR20200112635A publication Critical patent/KR20200112635A/ko
Application granted granted Critical
Publication of KR102170345B1 publication Critical patent/KR102170345B1/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/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • 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
    • 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
    • G06Q30/00Commerce
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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/202Error 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 where processing functionality is redundant
    • G06F11/2041Error 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 where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • H04L2209/38

Abstract

뷰 변경을 수행하기 위해, 컴퓨터 저장 매체에 인코딩되는 컴퓨터 프로그램을 포함하는, 방법, 시스템 및 장치가 개시된다. 방법 중 하나의 방법은 복수(N개)의 노드에 의해 유지되는 블록체인에서 구현되고 그리고 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드에 의해 수행된다. 방법은 N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하는 단계(현재의 시퀀스 번호는 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 큼); 및 적어도 Q개의 제1 메시지의 취득에 응답하여, 뷰 변경 프로토콜을 종료하는 단계를 포함한다.

Description

뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
본 출원은 일반적으로 뷰 변경을 수행하기 위한 방법 및 디바이스, 구체적으로, 실용적 비잔틴 장애 허용(Practical Byzantine Fault Tolerance: PBFT) 시스템에서 뷰 변경을 종료하기 위한 방법 및 디바이스에 관한 것이다.
실용적 비잔틴 장애 허용(PBFT)은 블록체인 시스템과 같은 분산형 시스템에서 구현될 수 있는 일종의 합의 메커니즘이다. PBFT 합의 메커니즘은 분산형 시스템이 시스템의 특정한 노드가 (예를 들어, 불량 네트워크 접속 또는 그 외에는 장애로 인해) 장애가 있을 수도 있거나 또는 부정확한 정보를 다른 피어(peer)에 전파(예를 들어, 악의적으로 작용)할 수도 있음에도 불구하고, 안전성 및 활성도(liveness)에 대한 충분한 합의에 도달하게 한다. 이러한 메커니즘의 목적은, 시스템의 올바른 기능 및 시스템에서의 기능 노드(예를 들어, 장애가 없고 정당한 노드)에 의해 도달된 합의에 대한 비-기능 노드의 영향을 완화함으로써, 치명적인 시스템 장애에 대하여 방어하는 것이다.
PBFT 합의 메커니즘은, 독립적 노드 장애 및 특정적이면서 독립적인 노드에 의해 전파되는 조작된 메시지가 있다는 가정하에 비잔틴 장애(예를 들어, 비-기능 노드)를 허용하는 실용적 비잔틴 상태 기계 복제를 제공하는 데 중점을 둔다. 이러한 PBFT 합의 메커니즘에서, 예를 들어, 블록체인 시스템의 모든 노드는, 하나의 노드가 기본 노드(리더(leader) 또는 마스터 노드라고도 함)이고 나머지 노드를 백업 노드(팔로워 노드라고도 함)로 하는 시퀀스로 정렬된다. 시스템 내의 모든 노드는 서로 통신하며, 그 목표는 모든 정당한 노드가 시스템의 상태에 대한 동의/합의에 도달하는 것이다.
예를 들어, PBFT 합의 메커니즘이 기능하기 위해서, 블록체인 시스템에서의 비-기능 노드의 양이 주어진 취약성 윈도우에서 시스템의 전체 노드의 1/3과 동시에 같을 수 없거나 또는 초과할 수 없다고 가정한다. 이 방법은, 최대 F개의 노드가 동시에 비-기능 노드인 한 활성도와 안전성 둘 다를 효과적으로 제공한다. 즉, 일부 구현예에서, PBFT 합의 메커니즘에 의해 허용될 수 있는 비-기능 노드의 수 F는 가장 가까운 정수로 내림된 (N-1)/3과 같고, 여기서, N은 시스템의 노드의 총수를 나타낸다. 일부 구현예에서, PBFT 합의 메커니즘을 구현하는 블록체인 시스템은 전체로서 적어도 3F+1개의 노드가 있는 경우 최대 F개의 비잔틴 장애를 다룰 수 있다. 합의 검증을 수행하기 위해서, 각각의 노드는 기본 노드의 리더십하에서 정상 동작 프로토콜을 실행한다. 노드가 기본 노드가 비-기능이라고 생각할 때, 노드가 뷰 변경 프로토콜에 진입하여 기본 노드의 변경을 개시시킬 수도 있다. 새로운 기본 노드가 다수의 노드에 의한 동의하에서 비-기능 기본 노드를 대체한 후, 노드는 정상 동작 프로토콜로 다시 전환된다.
현재의 기술에서, 노드가 종래의 절차에 따라 뷰 변경 프로토콜을 퇴장한다: 또한 뷰 변경 프로토콜에 진입하고 그리고 기본 노드가 비-기능인 것에 동의하는 다수의 노드를 기다린다. 종래의 뷰 변경 프로토콜에서, 이 조건은 적어도 2F+1개의 노드가 뷰 변경 프로토콜에 진입하고 그리고 뷰 변경 메시지를 각각 멀티캐스팅할 때, 적어도 2F+1개의 뷰 변경 메시지를 취득하는 새로운 기본 노드가 새로운 뷰 메시지를 멀티캐스팅하여 노드가 정상 동작으로 돌아오게 돕는 것이다. 그러나, 일부 경우에서, 네트워크 통신 두절은 노드가 기본 노드가 비-기능이라고 실수로 결정하게 하고 그리고 다른 노드가 여전히 정상 동작 중인 동안 뷰 변경 프로토콜에 진입하게 할 수도 있다. 그 결과, 노드는 뷰 변경 프로토콜에 고착되고(stuck) 그리고 합의 과정에서 실질적으로 차단된다. 고착된 노드를 정상 동작으로 다시 되돌리기 전의 지연은 예측 블가능한데, 이것이 실제의 기본 노드 고장 또는 오작동이 발생할 때에 의존적일 수도 있기 때문이다. 따라서, 고착된 노드의 연산력은 뷰 변경에 합류할 다른 노드를 기다리는 동안 낭비된다. 따라서, 노드가 뷰 변경 프로토콜을 퇴장하게 도울 수 있는 대안적인 메커니즘을 제공하는 것이 바람직하다.
본 명세서의 다양한 실시형태는 뷰 변경을 수행하기 위한 시스템, 방법, 및 비일시적인 컴퓨터 판독 가능한 매체를 포함하지만 이들로 제한되지 않는다.
하나의 실시형태에 따르면, 복수(N개)의 노드에 의해 유지되는 블록체인에서 구현될 컴퓨터-구현 뷰 변경 방법은 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드에 의해 수행된다. 방법은, N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하는 단계(현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고, Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3임); 및 적어도 Q개의 제1 메시지의 취득에 응답하여, 뷰 변경 프로토콜을 종료하는 단계를 포함한다.
일부 실시형태에서, 적어도 Q개의 제1 메시지를 취득하는 단계는, 적어도 Q개의 제2 노드로부터 각각, 적어도 Q개의 제2 노드가 다음의 블록이 블록체인에 추가되는 것에 동의함을 나타내는 적어도 Q개의 확정 메시지를 취득하는 것을 포함하고, Q개의 확정 메시지는 Q개의 제1 메시지를 각각 포함한다.
다른 실시형태에서, 적어도 Q개의 제1 메시지를 취득하는 단계는, 적어도 Q개의 제2 노드로부터 각각, 적어도 Q개의 제2 노드가 다음의 블록이 블록체인에 추가되는 것에 동의함을 나타내는 적어도 Q개의 확정 메시지를 취득하는 것을 포함하고, Q개의 제1 메시지는 Q개의 확정 메시지에 각각 추가된다.
또 다른 실시형태에서, 현재의 시퀀스 번호는 제2 노드에 의해 유지된 블록체인의 제2 복사본의 높이를 포함하고; 그리고 제1 시퀀스 번호는 제1 노드에 의해 유지된 블록체인의 제1 복사본의 높이를 포함한다.
또 다른 실시형태에서, 현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 트랜잭션의 시퀀스 번호를 포함하고; 그리고 제1 시퀀스 번호는 제1 노드에 의해 확정된 최신의 트랜잭션의 시퀀스 번호를 포함한다.
일부 실시형태에서, 제1 메시지는 제2 노드에게 알려진 현재 뷰와 현재의 시퀀스 번호 둘 다를 인증하는 디지털 서명을 포함한다.
다른 실시형태에서, 제1 메시지는 최신의 블록 또는 최신의 트랜잭션의 다이제스트(digest)를 더 포함한다.
또 다른 실시형태에서, 다이제스트는 최신의 블록 또는 최신의 트랜잭션의 해시 값을 포함한다.
또 다른 실시형태에서, 다이제스트는 제2 노드에게 알려져 있지만 제1 노드에게 알려져 있지 않은 최신의 블록의 머클 루트(Merkle root)를 포함한다.
일부 실시형태에서, 뷰 변경 프로토콜을 종료하는 단계는, 제1 노드에 의해 유지된 블록체인의 제1 복사본과 제2 노드에 의해 유지된 블록체인의 제2 복사본을 동기화하는 것; 및 뷰 변경 프로토콜을 퇴장하여, 제1 노드에 대한 일관된 현재 뷰를 사용해서 정상 동작 프로토콜에 진입하는 것을 포함한다.
다른 실시형태에서, 적어도 Q개의 제2 노드에게 알려진 현재의 시퀀스 번호는 (n+1)이고; 그리고 제1 노드에게 알려진 제1 시퀀스 번호는 n이다.
또 다른 실시형태에서, 적어도 Q개의 제2 노드에 대한 현재 뷰는 v이고; 그리고 뷰 변경 프로토콜에 있을 때, 제1 노드는 v보다 더 큰 제1 뷰를 갖는다.
또 다른 실시형태에서, N개의 노드는 실용적 비잔틴 장애 허용(Practical Byzantine Fault Tolerance: PBFT) 네트워크를 형성하고, 네트워크에서 N개의 노드 중 하나의 노드는 기본 노드로서 기능하고 그리고 다른 (N-1)개의 노드는 백업 노드로서 기능한다.
일부 실시형태에서, 뷰 변경 시스템은, 하나 이상의 프로세서; 및 하나 이상의 프로세서에 결합되고 그리고 이전의 실시형태 중 임의의 실시형태의 방법을 수행하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어가 저장되는 하나 이상의 컴퓨터 판독 가능한 메모리를 포함한다.
다른 실시형태에서, 뷰 변경 장치는 이전의 실시형태 중 임의의 실시형태의 방법을 수행하기 위한 복수의 모듈을 포함한다.
또 다른 실시형태에 따르면, 뷰 변경 시스템은 블록체인을 유지하기 위한 것이고, 복수(N개)의 노드가 블록체인을 유지하고, 시스템은 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드로서 기능한다. 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템이 동작을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적인 컴퓨터 판독 가능한 메모리를 포함하고, 동작은, N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하기 위한 동작(현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고, Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3임); 및 적어도 Q개의 제1 메시지를 취득하는 동작에 응답하여, 뷰 변경 프로토콜을 종료하는 동작을 포함한다.
또 다른 실시형태에 따르면, 비일시적인 컴퓨터 판독 가능한 저장 매체는 블록체인을 유지하기 위한 것이고, 복수(N개)의 노드는 블록체인을 유지하고, 저장 매체는 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드와 연관된다. 저장 매체는 하나 이상의 프로세서가 동작을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되고, 동작은, N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하기 위한 동작(현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고, Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3임); 및 적어도 Q개의 제1 메시지를 취득하는 동작에 응답하여, 뷰 변경 프로토콜을 종료하는 동작을 포함한다.
또 다른 실시형태에 따르면, 뷰 변경 장치는 블록체인을 유지하기 위한 것이고, 복수(N개)의 노드는 블록체인을 유지하고, 장치는 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드로서 기능한다. 장치는 N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하기 위한 취득 모듈(현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고, Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3임); 및 적어도 Q개의 제1 메시지의 취득에 응답하여, 뷰 변경 프로토콜을 종료하기 위한 종료 모듈을 포함한다.
본 명세서에 개시된 실시형태는 하나 이상의 기술적 효과를 갖는다. 일부 실시형태에서, 방법 및 시스템은 뷰 변경 프로토콜에 진입하는 PBFT 합의 시스템의 노드(예를 들어, 제1 노드)가 뷰 변경 프로토콜을 효율적으로 퇴장할 수 있고 그리고 정상 동작 프로토콜을 재개할 수 있는 것을 보장할 수 있다. 다른 실시형태에서, 정상 동작 프로토콜에서 제2 노드가 확정 메시지를 멀티캐스팅할 때, 노드는 제1 메시지를 확정 메시지에 추가 또는 첨부할 수도 있고, 제1 메시지는 제2 노드에게 알려진 현재 뷰 및 현재의 시퀀스 번호를 포함한다. 현재 뷰는 기본 노드의 제2 노드의 뷰를 나타내고, 그리고 현재의 시퀀스 번호는 제2 노드의 최신의 확정된 트랜잭션(들) 또는 제2 노드에 의해 유지된 블록체인의 최신의 블록(들)과 연관된 블록체인의 높이(또한, 블록 높이로서 알려짐)를 나타낸다. 또 다른 실시형태에서, 뷰 변경 프로토콜에 고착된 제1 노드는 제1 메시지로부터 현재 뷰 및 현재의 시퀀스 번호를 취득할 수 있다. 일관된 제1 메시지의 정족수(Q)를 수신할 때, 제1 노드는 자체 뷰와 시퀀스 번호를 이들과 비교하여 다수의 노드가 여전히 정상 동작 중인지를 결정할 수도 있다. 다수의 다른 노드가 여전히 정상 동작 중이라면, 제2 노드는 뷰 변경 프로토콜을 종료할 수도 있고 그리고 정상 동작 프로토콜을 재개할 수도 있다. 또 다른 실시형태에서, 제1 메시지에서 시퀀스 번호로 나타낸 바와 같이, 다수의 노드는 합의 검증 시퀀스에서 다음의 트랜잭션 또는 다음의 블록에 대해, 다음의 트랜잭션 또는 다음의 블록이 제1 노드에 의해 아직 승인되지 않았음에 동의할 수도 있다. 다수의 노드가 뷰 변경에 진입하지 않았음을 인지함으로써, 제1 노드는 뷰 변경 프로토콜을 순조롭게 종료할 수 있다. 일부 실시형태에서, 제1 노드는 다수의 노드가 또한 뷰 변경에 진입하지 않았을지라도 뷰 변경을 종료할 수 있고 그리고 새로운 뷰에 동의하여 뷰 변경 프로토콜을 종료할 수 있다. 따라서, 정상 동작 중이고 그리고 노드의 연산력에 기여하는 노드의 수가 최적화될 수 있다.
본 명세서에 개시된 시스템, 방법, 및 비일시적 컴퓨터 판독 가능한 매체의 이러한 특징부 및 다른 특징부, 및 부품들과 제조 경제의 조합 및 구조의 관련 요소의 동작과 기능의 방법은, 본 명세서의 일부를 형성하는 첨부 도면을 참조하여 다음의 설명과 첨부된 청구범위를 고려할 때 더욱 명백해질 것이며, 유사한 참조 번호는 다양한 도면에서의 대응 부분을 나타낸다. 그러나, 도면은 단지 예시 및 설명을 위한 것이며 한정적인 것을 의도한 것이 아님을 명백히 이해해야 한다.
도 1은 다양한 실시형태에 따른, 네트워크를 예시하는 도면.
도 2a는 PBFT의 정상 동작 프로토콜을 예시하는 도면.
도 2b는 하나의 비-기능 레플리카(non-functioning replica)를 갖는 PBFT의 정상 동작 프로토콜을 예시하는 도면.
도 2c는 PBFT의 정상 동작 프로토콜 및 뷰 변경 프로토콜을 예시하는 도면.
도 3a는 정상 동작 프로토콜과 뷰 변경 프로토콜 간의 전환 경로의 흐름도.
도 3b는 다양한 실시형태에 따른, 정상 동작 프로토콜과 뷰 변경 프로토콜 간의 전환 경로의 흐름도.
도 4는 다양한 실시형태에 따른, 뷰 변경 퇴장 단계의 흐름도.
도 5a는 다양한 실시형태에 따른, 뷰 변경 방법의 흐름도.
도 5b는 다양한 실시형태에 따른, 뷰 변경 방법의 흐름도.
도 6은 다양한 실시형태에 따른, 뷰 변경 시스템의 블록도.
도 7은 본 명세서에 설명된 실시형태 중 임의의 실시형태가 구현될 수도 있는 컴퓨터 시스템의 블록도.
본 명세서에 개시된 실시형태는 PBFT 시스템에서 구현될 수 있는 뷰 변경 시스템, 방법, 및 비일시적인 컴퓨터 판독 가능한 매체를 포함하지만 이들로 제한되지 않는다. 다양한 실시형태에서, 뷰 변경 프로토콜을 퇴장하고 그리고 정상 동작 프로토콜을 재개하는 경로가 제공된다. 뷰 변경에 진입하는 노드는 적어도 Q개의 노드가 뷰 변경에 진입하게 요구하는, 종래의 뷰 변경 프로토콜을 겪는 일없이 정상 동작으로 되돌아가게 할 수 있다. Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, N은 노드의 총수를 나타내고 그리고 4보다 작지 않은 정수이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3이다. PBFT와 유사하게, 개시된 시스템, 방법, 및 비일시적 컴퓨터 판독 가능한 매체는, SecureRing, Byzantine Paxos, Q/U, HQ, Zyzzvyva, ABsTRACTs, RBFT, Adapt, Tangaroa, CheapBFT, MinBFT, FastBFT 등과 같은 다른 합의 프로토콜에 적용될 수 있다. PBFT의 다양한 양상에 대해서는, 문헌[M. Castro, B. Liskov, "Practical Byzantine Fault Tolerance", Proceedings of the Third Symposium on Operating Systems Design and Implementation, (Feb 1999)]을 참조할 수 있으며, 이 문헌의 전문은 본 명세서에 참고로 원용된다.
도 1은 다양한 실시형태에 따른, 네트워크(120)를 도시한다. 아래에 제시된 컴포넌트는 설명을 위한 것이다. 도시된 바와 같이, 네트워크(120)는 네트워크 시스템(112)을 포함할 수도 있다. 네트워크 시스템(112)은 서버, 컴퓨터, 휴대폰 등과 같은 하나 이상의 연산 디바이스에 구현된 하나 이상의 노드(예를 들어, 노드 0, 노드 1, 노드 2, 노드 3, 노드 4, 노드 i 등)를 포함할 수도 있다. 네트워크 시스템(112)은, 네트워크(120)의 다른 디바이스 또는 부가적인 시스템에 액세스하도록 적절한 소프트웨어(예를 들어, 합의 프로그램) 및/또는 하드웨어(예를 들어, 유선 접속부, 무선 접속부)와 함께 설치될 수도 있다. 노드는 하나 이상의 프로세서 및 하나 이상의 프로세서에 결합된 하나 이상의 메모리를 포함할 수도 있다. 메모리는 비일시적이며 컴퓨터 판독 가능할 수도 있고 그리고 하나 이상의 프로세서가 본 명세서에 설명된 동작을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성될 수도 있다. 이 도면에서는 노드가 단일의 컴포넌트로서 도시되지만, 이러한 노드는 단일의 디바이스 또는 함께 결합된 다수의 디바이스로서 구현될 수 있음을 이해할 것이다. 일반적으로, 노드는 서로 통신할 수도 있고 그리고 네트워크 시스템(112)의 외부의 다른 디바이스와 통신할 수도 있다. 예를 들어, 하나 이상의 유선 또는 무선 네트워크(예를 들어, 인터넷)를 통해 데이터가 전달될 수 있다.
다양한 실시형태에서, 네트워크 시스템(112)은 다양한 블록체인 노드를 포함하는 블록체인 네트워크 시스템으로서 구현될 수도 있다. 도시된 바와 같이, 블록체인 네트워크 시스템은 복수의 블록체인 노드(예를 들어, 노드 0, 노드 1, 노드 2, 노드 3, 노드 4, 노드 i 등)를 포함할 수도 있다. 블록체인 노드는 하나의 블록체인 노드가 또 다른 블록체인 노드와 통신하는 네트워크(예를 들어, 피어-투-피어 네트워크)를 형성할 수도 있다. 도시된 바와 같은 블록체인 노드의 순서와 수는 단지 예시일 뿐이고 간략화하기 위한 것이다. 블록체인 노드는 서버, 컴퓨터 등에서 구현될 수도 있다. 각각의 블록체인 노드는 TCP/IP와 같은 다양한 유형의 통신 방법을 통해 함께 결합된 하나 이상의 물리적 하드웨어 디바이스 또는 가상 디바이스에 대응할 수도 있다. 분류에 따라, 블록체인 노드는 전체 노드, 고이더리움(Geth) 노드, 합의 노드 등을 포함할 수도 있다.
다양한 실시형태에서, 블록체인 네트워크 시스템은 노드 A 및 노드 B(예를 들어, 경량 노드)와 같은 다른 시스템 및 디바이스와 상호작용할 수도 있다. 상호작용은 예를 들어, 요청을 수신하고 그리고 요청의 실행 결과를 복귀시키도록 데이터의 전송과 수신을 수반할 수도 있다. 하나의 실시예에서, 사용자 A는 블록체인 네트워크를 통해 사용자 B와 거래하길 원할 수도 있다. 트랜잭션은 사용자 A의 계정에 있는 일부 자산을 사용자 B의 계정으로 이체하는 것을 수반할 수도 있다. 사용자 A 및 사용자 B는 트랜잭션을 위한 적절한 블록체인 소프트웨어(예를 들어, 암호화폐 지갑)가 설치된 각각의 디바이스 노드 A 및 디바이스 노드 B를 사용할 수도 있다. 노드 A는 노드 0과의 통신을 통해 블록체인에 액세스할 수도 있고, 그리고 노드 B는 노드 1과의 통신을 통해 블록체인에 액세스할 수도 있다. 예를 들어, 노드 A는 노드 0을 통해 블록체인에 트랜잭션 요청을 제출할 수도 있고, 그리고 노드 B는 노드 1을 통해 스마트 계약 실행 요청을 블록체인에 제출할 수도 있다. 블록체인 외부에서, 노드 A 노드 B는 다른 통신 채널(예를 들어, 노드 0 및 노드 1을 거치지 않는 정기적 인터넷 통신)을 가질 수도 있다.
블록체인 노드는 각각 메모리를 포함할 수도 있거나 또는 메모리에 결합될 수도 있다. 일부 실시형태에서, 메모리는 풀 데이터베이스를 저장할 수도 있다. 풀 데이터베이스는 분산 방식으로 복수의 블록체인 노드에 액세스 가능할 수도 있다. 예를 들어, 풀 데이터베이스는 블록체인 노드의 메모리에 각각 저장될 수도 있다. 풀 데이터베이스는 사용자에 의해 작동되는 노드 A 및 노드 B와 같은 하나 이상의 사용자 디바이스에 의해 제출된 복수의 트랜잭션을 저장할 수도 있다.
블록체인 노드는 합의를 통해 블록체인으로서 알려진 분산 원장에 트랜잭션을 기록하는 네트워크(예를 들어, P2P 네트워크)를 형성한다. P2P 네트워크의 참가자는 블록체인을 유지하는 노드로서 지칭될 수도 있다. 블록체인 P2P 네트워크에서, 각각의 노드는 합의 검증에 참여하고 그리고 블록체인의 전체 원장 복사본을 저장한다. 모든 노드는 모든 노드가 일관된 확인 결과를 갖고 이에 따라 블록체인의 일관된 복사본을 갖는 것을 보장하도록 블록체인 합의 방법에 의해 일괄 트랜잭션을 확인한다.
블록체인 합의 방법 중 하나는 실용적 비잔틴 장애 허용(PBFT)이다. 비잔틴 장애 허용은 비잔틴 일반 문제에서 비롯된 것이다. P2P 네트워크 시스템의 경우, 비-기능 노드의 수가 소정의 한계값 내에 있는 한, 시스템이 계속 올바르게 작동할 수 있다. 이러한 시스템을 비잔틴 장애 허용 시스템이라고 한다. PBFT는 비잔틴 장애 허용 네트워크 능력을 최적화하는 일례이다. PBFT는 서버를 복사하고 그리고 서버 복사본과의 클라이언트 상호작용을 동기화함으로써, 네트워크에 비잔틴 상태 기계를 제공한다.
PBF 동작의 중심에는 블록체인에 기록된 정보의 일관된 글로벌 뷰의 유지관리가 있으며, 이는 사용자가 분산 방식으로 서로 상호작용하게 하는 백본을 형성한다. PBFT 합의 모델의 보안은 블록체인 플랫폼에 있어서 중요하다. 합의 모델의 두 가지 주요 특성은 다음과 같은데, 즉, 1) 안전성 또는 일관성으로서, 모든 정당한 노드가 동일한 유효 출력을 생성하고, 그리고 2) 활성도로서, 합의된 모든 정당한 노드가 결국 중간 단계에서 멈추지 않고 가치를 생성하는 것이다. 안전하고 강력한 PBFT 합의 프로토콜은 네트워크 노드의 장애, 네트워크의 분할, 메시지 지연, 장애 있는 메시지 전달, 메시지 손상 등을 포함하는 매우 다양한 비잔틴 거동을 허용해야 하고 그리고 시스템 내의 비-기능 노드의 수가 한정되어 있는 한 노드의 합의에 도달해야 한다. 이를 위해서, PBFT 모델은 상호 배타적인 두 개의 프로토콜인 정상 동작/일관성 프로토콜과 아래에서 더 설명되는 뷰 변경 프로토콜 중 하나에서 작동한다. 본 명세서에서, 비-기능은 장애 및/또는 악의를 의미하고, 그리고 기능은 장애가 없고 정당함을 의미한다. 가능한 장애 또는 악의적 행위는 메시지 전달의 장애, 메시지 전달 지연, 장애 있는 메시지 전달, 비잔틴 장애(임의의 메시지를 상이한 노드로 전달, 프로토콜 위반) 등을 포함할 수도 있다.
일부 실시형태에서, 실용적 비잔틴 장애 허용(PBFT) 시스템은 N개의 노드를 포함할 수도 있고, N개의 노드 중 하나는 기본 노드로서 기능하고 그리고 N개의 노드 중 나머지 노드는 백업 노드로서 기능한다. 또 다른 노드가 뷰 변경 프로토콜을 통해 새로운 기본 노드로 되도록 선택될 수도 있으므로, 기본 노드 지정은 특정한 노드로 고정되지 않을 수도 있다. 예를 들어, 기본 노드는 최저 일련번호(모듈로 뷰 번호)를 갖는 기능 노드가 새로운 기본 노드로 되는 모듈로 연산을 통해 선택될 수도 있다. 현재 뷰 및 노드의 총수 N은 기본 노드 id = (view + 1) mod N을 결정할 수도 있다. PBFT에서, 새로운 기본 노드가 선택될 때마다 뷰가 변경된다. 예를 들어, 각 뷰가 변경될 때마다, 뷰가 0에서 단조 증가한다. 즉, 기본 노드의 변경에 따라 뷰가 변경될 수도 있다.
일부 실시형태에서, 기본 노드는 뷰 v에서 기능하고, 그리고 정상 동작 프로토콜이 실행된다. 정상 동작을 위해, 기본 노드 및/또는 백업 노드는 하나 이상의 클라이언트로부터 미검증된 트랜잭션과 연관된 요청을 수신할 수도 있다. 예를 들어, 클라이언트인 노드 A는 기본 노드 및/또는 백업 노드에 요청을 제출할 수도 있다. 요청은 미검증된 트랜잭션(예를 들어, 블록체인의 새로운 블록에 추가될 트랜잭션)을 포함할 수도 있다. 미검증된 트랜잭션은 예를 들어, 블록체인 기반 금융 트랜잭션, 스마트 계약 배치 또는 실행 트랜잭션 등을 포함할 수도 있다. 기본 노드와 백업 노드는 트랜잭션의 일부 예비 검증을 수행하거나 수행하지 않을 수도 있다. 요청을 수신한 백업 노드는 수신된 요청을 기본 노드로 전달할 수도 있다. 일단 기본 노드에서 트랜잭션이 특정한 수준에 도달하거나 또는 그렇지 않으면 트리거링 조건을 충족한다면, 기본 노드는 합의 검증 라운드를 개시시킬 수도 있고 그리고 미검증된 트랜잭션에 대한 검증 결과를 제안할 수도 있다. 백업 노드는 합의에 응답할 수도 있고 그리고 합의에 도달하기 위한 제안을 확인할 수도 있다. 노드에 대한 필요조건은 노드가 결정적이며 동일한 상태에서 시작해야 한다는 것이다. 최종 결과는 모든 정당한 노드가 기록 순서에 따라 합의에 도달하고 그리고 합의를 수락하거나 또는 거부하는 것이다. 일단 합의가 검증되면, 트랜잭션은 블록체인의 새로운 블록에 패킹될 수도 있고 그리고 노드에 의해 유지되는 로컬 블록체인 복사본에 추가될 수도 있다. 또한, 원래 요청을 전송한 클라이언트(예를 들어, 노드 A)는 통지받는다.
안전성을 유지하기 위해서, 주요한 PBFT 방법은 정상 동작 프로토콜에 대한 세 가지 단계, 즉, 사전-준비 단계, 준비 단계, 및 확정 단계를 포함한다. 도 2a 내지 도 2c를 참조하면, PBFT 시스템의 일례는 레플리카 0, 레플리카 1, 레플리카 2, 및 레플리카 3인 네 개의 레플리카(레플리카는 노드의 다른 용어임)를 포함한다. 숫자 0 내지 3은 새로운 기본 노드를 결정하는 데 사용될 수도 있는 레플리카 일련번호이다. 레플리카 0은 기본 노드 0에 대응할 수도 있고, 그리고 레플리카 1, 2, 및 3은 백업 노드 1, 2, 및 3에 대응할 수도 있다. 레플리카는 예를 들어, 위에서 설명된 네트워크 시스템(112)의 다양한 블록체인 노드에서 구현될 수도 있다. 비-기능 노드가 없는 정상 동작 프로토콜은 도 2a에 도시되고, 그리고 레플리카 3이 비-기능 노드인 또 다른 정상 동작 프로토콜은 도 2b에 도시된다. 상황 둘 다에서, 정상 동작 프로토콜은 요청 단계, 사전-준비 단계, 준비 단계, 확정 단계, 및 응답 단계로 분할될 수도 있다.
도 2a 및 도 2b를 참조하면, 정상 동작은 클라이언트가 요청(메시지)을 기본 노드(레플리카 0)에 제출할 때 요청 단계에서 시작하는데, 이러한 기본 노드는 요청을 지지하는 역할을 한다. 요청은 클라이언트의 정보, 요청 동작(예를 들어, 합의 검증을 위한 트랜잭션), 및 요청 타임스탬프를 포함할 수도 있다. 클라이언트(또한, 클라이언트 노드로서 지칭됨)는 예를 들어, 위에서 설명된 노드 A에서 구현될 수도 있다. 노드 A는 (예를 들어, 휴대폰에서 구현된) 경량 노드일 수도 있다. 부가적으로 또는 대안적으로, 클라이언트는 요청을 백업 노드에 제출할 수도 있고, 백업 노드는 요청을 사전-준비 단계 전에 기본 노드로 전달한다. 기본 노드 또는 백업 노드가 요청을 수신하는지의 여부에 관계없이, 대응하는 노드는 수신된 요청을 네트워크의 다른 노드로 멀티캐스팅할 수도 있다. 따라서, 기본 노드는 클라이언트에 의해 합의 네트워크에 제출된 계류 요청을 어떤 방식으로든 결국 취득할 수도 있다.
이에 따라, 기본 노드는 리더와 같은 역할을 하고 그리고 백업 노드가 요청과 연관된 트랜잭션을 검증하도록 한다. 기본 노드는 자신이 뷰 내의 요청의 실행 순서화를 담당한다. 사전-준비 단계에서, 기본 노드는 취득된 요청을 유효성-확인할 수도 있고 그리고 각각의 요청에 대한 시퀀스 번호를 제안할 수도 있다. 따라서, 요청은 각각 증가하는 시퀀스 번호를 할당받을 수도 있으며 순서대로 배치될 수도 있다. 또한, 사전-준비 메시지는 블록 높이를 포함할 수도 있다. 블록 높이는 블록체인의 현재 높이에 기초할 수도 있다. 예를 들어, 블록체인에 현재 1000개의 블록이 있다면, 블록 높이는 1000개의 블록이 블록체인에 이미 존재하고 있음을 나타내는 1000일 수도 있거나, 또는 요청과 연관된 트랜잭션이 다른 노드에 의해 이후 검증될 블록체인의 1001번째 블록에 패킹되도록 제안됨을 나타내는 1001일 수도 있다. 기본 노드는 시퀀스 번호 및/또는 블록 높이와 함께 요청을 전달할 수도 있다. 예를 들어, 요청을 취득한 후, 기본 노드는 시퀀스 번호를 할당함으로써 요청을 대응하는 트랜잭션을 실행하기 위한 순서로 배열할 수도 있고 그리고 리스트에 저장할 수도 있다. 기본 노드는 PBFT 네트워크 시스템 내 모든 백업 노드(레플리카 1 내지 레플리카 3)에 사전-준비 메시지를 전송할 수도 있다. 도 2a에 도시된 바와 같이, 기본 노드는 사전-준비 메시지 내의 리스트를 또는 사전-준비 메시지와 리스트를 함께 백업 노드로 멀티캐스팅할 수도 있다. 도 2b에 도시된 바와 같이, 백업 노드(레플리카 3)가 기능하지 않고 그리고 기본 노드가 이를 모르더라도, 기본 노드는 여전히 사전-준비 메시지를 전송할 수도 있다. 각각의 백업 노드는 사전-준비 메시지가 유효한 한 사전-준비 메시지를 수락한다. 사전-준비 메시지는 뷰 번호, 시퀀스 번호, 서명, 다이제스트 (d), 다른 메타 데이터 등을 포함할 수도 있고, 이는 메시지의 유효성을 결정한다.
준비 단계에서, 백업 노드가 사전-준비 메시지를 수락한다면, 백업 노드는 준비 메시지를 기본 노드를 포함하는 PBFT 네트워크 시스템의 다른 노드로 멀티캐스팅함으로써 후속할 수도 있다. 준비 메시지를 멀티캐스팅한다는 것은, 전송자 노드가 순서에 동의함을 나타낸다. 각각의 준비 메시지는, 유효하다면 수신 노드에 의해 수락된다. 준비 메시지의 유효성은 유사하게 뷰 번호, 시퀀스 번호, 서명, 다이제스트 (d), 다른 메타 데이터 등에 기초하여 결정될 수 있다. 노드는, 노드가 기본 노드로부터 원래의 요청을 수신하고, (예를 들어, 사전-준비 메시지를 멀티캐스팅함으로써) 사전-준비하고, 그리고 사전-준비 메시지와 매칭되는 적어도 (Q-1)개의 별개의, 유효한, 그리고 일관된 준비 메시지를 취득한다면 준비된다. (Q-1)개의 준비 메시지는 멀티캐스팅된 준비 메시지를 포함할 수도 있다. Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, N은 노드의 총수이고 그리고 4보다 작지 않은 정수이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3이다. Q개의 노드의 PBFT 네트워크 시스템은 최대 F개의 비잔틴 장애를 허용할 수 있다. 일부 실시형태에서, N이 적어도 (3F+1)이라면, Q는 (2F+1)이다. 여기서, 사전-준비 메시지가 (기본 노드가 준비 메시지 자체를 전송하지 않을 수도 있지만) 기본 노드의 준비 메시지와 동등한 것으로서 취급될 수 있기 때문에, Q개의 준비 메시지 대신 Q-1개의 준비 메시지가 필요하다. 사전-준비 메시지를 하나 이상의 준비 메시지로서 계수한다면, 최대 F개의 비-기능 노드가 허용될 수 있는, 사전-준비 메시지를 수락한 모든 노드 중 적어도 Q개의 노드를 나타내는 적어도 Q개의 별개의 그리고 유효한 준비 메시지가 존재할 것이다. 따라서, 사전-준비 내지 준비 단계는, 적어도 (Q-F)개의 기능 노드(Q개의 준비된 노드이지만 최대 F개의 비-기능 노드를 고려함)가 요청이 뷰 v에서 실행된다면, 요청이 시퀀스 번호로 실행되는 것에 동의함을 보장한다. 준비 단계는 뷰 내에서 각각의 요청의 장애가 허용되는 일관된 순서화를 보장한다.
일부 실시형태에서, 사전-준비 메시지와 (Q-1)개의 준비 메시지를 수신한 후, 백업 노드는 순서를 검증할 수도 있고 그리고 검증 결과를 사전-준비 메시지에서 기본 노드에 의해 기입된 제안된 검증 결과와 비교할 수도 있다. 순서를 검증하는 방법에는 여러 가지가 있을 수도 있다. 예를 들어, 제안된 검증 결과는 다이제스트 (d)에 기입되는 제안된 머클 패트리샤 트리(Merkle Patricia Trie) 루트를 포함할 수도 있다. 백업 노드는 순서에 따라 요청과 연관된 트랜잭션들을 배열할 수도 있고 그리고 머클 패트리샤 트리 루트를 연산하여 제안된 머클 패트리샤 트리 루트와 비교할 수도 있다. 연산은 블록체인 내 기존 블록의 노드 해시와 같은 특정한 기존 정보를 요구할 수도 있다. 비교는 백업 노드에 의해 계산된 다이제스트 D(m)을 생성한다. 다이제스트 D(m)이 다이제스트 (d)와 일관성 있으면, 검증이 성공한 것이다. 일단 검증된다면, 백업 노드는 요청의 순서화(예를 들어, 요청과 연관된 트랜잭션들을 블록체인의 새로운 블록에 패킹하기 위한 순서)에 동의할 수도 있다. 유사하게, 백업 노드는, 자신이 수신하는 (확정 단계에 대하여 아래에 설명되는) 확정 메시지가 동일한 다이제스트 D(m)을 포함하는지를 검증하여, 다른 노드도 또한 요청의 순서화에 동의하는지를 결정할 수도 있다. 준비된 노드가 Q개의 확정 메시지를 취득하고 그리고 더 낮은 시퀀스 번호를 가진 모든 요청이 실행되었다면, 그 노드는 요청을 실행할 수도 있다.
일부 실시형태에서, 사전-준비 메시지는 새로운 블록의 다이제스트 (d) 또는 그 외에 요청 실행과 관련된 정보(예를 들어, 요청과 연관된 트랜잭션)를 포함할 수도 있다. 다이제스트 (d)(예를 들어, 해시 값)는 트랜잭션과 같은 데이터에 해시 알고리즘을 적용한 수치 결과일 수도 있다. 백업 노드는 다이제스트 (d)를 확인하기 위해 트랜잭션을 실행할 수도 있다. 복수의 요청에 대해, 백업 노드는 다이제스트 D(m)을 취득하도록 순서(즉, 요청의 시퀀스 번호)에 따라 요청을 실행할 수도 있다. D(m)과 d가 일관성 있으면, 백업 노드는, 백업 노드가 기본 노드의 유효성-확인 결과에 동의함을 나타내는 (확정 단계에 대하여 아래에 설명되는) 확정 메시지를 멀티캐스팅한다. 일부 실시형태에서, 확정 메시지는 확정 메시지를 멀티캐스팅하는 백업 노드가 사전-준비 메시지에 동의하고 그리고 별개의 노드로부터 (Q-1)개 이상의 유효한 그리고 일관된 준비 메시지를 취득한다는 것을 나타낸다. 특정한 시퀀스 번호의 계류 요청에 대해, 준비된 노드가 Q개의 확정 메시지를 취득하고 그리고 더 낮은 시퀀스 번호를 가진 모든 요청이 실행되었다면, 그 노드는 요청을 실행할 수도 있다.
확정 단계에서, 노드가 준비되면, 노드는 확정 메시지를 다른 노드로 멀티캐스팅할 수도 있다. 노드는 다른 노드로부터 확정 메시지를 수신할 수도 있다. 각각의 노드는 확정 메시지가 유효한 한 확정 메시지를 수락한다. 확정 메시지는 메시지의 유효성을 결정하게 하는, 뷰 번호, 시퀀스 번호, 서명, 다이제스트, 다른 메타 데이터 등을 포함할 수도 있다. 노드가 적어도 Q개의 별개의, 유효한, 그리고 일관된 확정 메시지를 취득하였다면, 이는 정족수의 노드가 확정하였으며(즉, 적어도 (Q-F)개의 정당한 노드가 준비되고) 그리고 합의에 도달했음을 나타낸다. 적어도 Q개의 유효한 확정 메시지는 멀티캐스팅된 확정 메시지를 포함할 수도 있다. 따라서, 준비 내지 확정 단계는, 적어도 (Q-F)개의 기능 노드(Q개의 확정 메시지지만 최대 F개의 비-기능 노드를 고려함)가 요청이 해당 시퀀스 번호를 갖는 뷰 v에서 최종적으로 실행됨에 동의하는 것을 보장한다. 노드가 (예를 들어, 일부 노드가 이미 새로운 뷰에 진입하였고 그리고 일부 다른 노드가 이전 뷰에 남아 있는 경우) 상이한 뷰에서 확정할 수도 있으므로, 수신된 확정 메시지는 상이한 뷰에서 수행된 확정에 대응할 수도 있다. 확정 단계는, 기능 노드가 각각의 요청의 시퀀스 번호에 동의할 때 뷰마다 각각의 요청의 장애가 허용되는 일관된 순서화를 보장한다.
일부 실시형태에서, 노드가 적어도 Q개의 별개의, 유효한, 그리고 일관된 확정 메시지를 취득하였다면, 노드는 대응하는 요청(들)을 실행할 수도 있다. 예를 들어, 일단 Q개의 확정 메시지가 취득되었다면, 이는 새로운 블록이 합의 검증되었음을 의미한다. 따라서, 노드는 새로운 블록을 국부적으로 유지되는 블록체인의 복사본에 패킹할 수도 있다. 그렇지 않으면, 백업 노드가 뷰 변경 프로토콜을 직접적으로 트리거링(trigger)할 수도 있다.
응답 단계에서, 요청(들)의 실행 후, 노드는 클라이언트에게 직접적으로 응답을 전송한다. 블록체인에 패킹된 트랜잭션에 대해, 응답은 블록체인 내 트랜잭션의 어드레스를 포함할 수도 있다. 최대 F개의 장애가 허용되기 때문에, 클라이언트는 결과를 수락하기 전에 상이한 노드로부터의 유효한 서명 및 동일한 요청 타임스탬프 및 동일한 실행 결과를 갖는 (Q-F)개의 응답을 기다린다. 도 2a 및 도 2b에 도시된 PBFT 네트워크 시스템의 경우, 총 4개의 노드가 존재하므로, 최대 하나(N=4, Q=3, 및 F=1)의 비-기능 노드가 허용될 수 있다. 따라서, 레플리카 3이 기능하지 않더라도, 도 2b에서 여전히 합의에 도달할 수 있다.
활성도를 유지하기 위해, 기본 노드가 요청을 멀티캐스팅하지 않고 특정량의 시간이 경과하였다면 기본 노드를 뷰 변경 프로토콜에서 교체할 수 있다. 예를 들어, 백업 노드는 타이머를 유지할 수도 있다. 백업 노드는 요청을 수신하고 그리고 타이머가 아직 실행 중이 아닐 때 타이머를 시작한다. 백업 노드는 더 이상 요청을 실행하기 위해 대기하지 않을 때(즉, 요청이 실행될 때) 타이머를 중단하지만, 그 시점에서 하나 이상의 다른 요청을 실행하기 위해 대기하는 경우 타이머를 재시작한다. 타이머가 만료되면, 백업 노드는 기본 노드가 기능하지 않는다고 결정할 수도 있다. 따라서, 백업 노드는 뷰 변경 메시지를 다른 노드로 멀티캐스팅할 수도 있다. 또 다른 예를 들면, 백업 노드는 기본 노드가 기능하지 않는다고 결정할 수도 있다. 따라서, 백업 노드는 뷰 변경 메시지를 멀티캐스팅할 수도 있다. 또 다른 예를 들면, 클라이언트는 타이머를 사용하여, 클라이언트가 응답을 수신하는 일없이 기본 노드에 요청을 전송한 후 많은 시간이 경과했는지를 결정할 수도 있다. 이 타이머가 만료될 때, 클라이언트는 모든 노드에 요청을 전송한다. 노드가 요청에 대해 이미 알고 있는 경우, 리브로드캐스팅은 무시된다. 노드가 요청에 대해 모르는 경우, 노드는 타이머를 시작할 것이다. 노드의 타이머의 타임아웃 시, 노드는 기본 노드에 기능하지 않는다는 의심에 기초하여 뷰 변경 메시지를 다른 백업 노드로 멀티캐스팅함으로써 뷰 변경 과정을 시작한다. 뷰 변경 메시지는 (이전의 정상 동작 동안 자신의 고유한 준비 메시지를 포함하는 아카이브된 메시지의 형태로 된) 시스템 상태를 포함하므로, 다른 노드는 전송자 노드에 장애가 발생하지 않았음을 알 것이다.
대부분의 정당한 노드는 기본 노드가 기능하고 있지 않은지를 결정할 수 있고 그리고 인라인의 다음 기본 노드를 대체물로서 이용하여 그 기본 노드를 제거할 수 있다. 기본 노드에 장애가 발생했다고 여기는 노드가 충분할 때 뷰 변경이 발생한다. 도 2c의 일부는 뷰 변경 프로토콜을 도시한다. 도 2c를 참조하면, 뷰 변경 단계에서, 현재 뷰가 v이면, 노드 p=(v+1) mod N은 새로운 기본 노드로 되도록 Q개의 유효한 뷰 변경 메시지를 취득하길 기다리며, 여기서, p는 레플리카/노드 일련번호이고, v는 뷰 번호이고, N은 레플리카/노드의 총수이다. Q개의 뷰 변경 메시지는 멀티캐스팅된 뷰 변경 메시지를 포함할 수도 있다. 이전의 뷰가 v이므로, 뷰 변경 메시지 각각은 새로운 뷰 v+1을 포함할 수도 있다. 일단 새로운 기본 노드 p가 Q개의 뷰 변경 메시지를 취득하였다면, 새로운 기본 노드는 새로운 뷰 메시지를 멀티캐스팅한다. 이 메시지는 수신된 모든 유효한 뷰 변경 메시지 및 기본 노드 장애로 인해 아직 완료되지 않았을 수도 있는 모든 요청의 세트를 포함한다. 새로운 기본 노드는 최신 체크포인트를 결정할 수도 있고 그리고 다른 것 중에서, 기능 노드가 최신 상태를 따라잡는 것 등을 보장할 수도 있으며, 이는 새로운 뷰에서 이전의 요청(예를 들어, 준비된, 확정된, 그러나 실행되지 않은 요청)을 재확정하는 것을 수반할 수도 있다. 뷰 변경이 발생하고 있는 동안, 새로운 요청은 수락되지 않는다. 노드가 Q개의 뷰 변경 메시지를 포함하는 유효한 새로운 뷰 메시지를 수신한 후, 노드는 뷰 v+1에 진입하고 그리고 완료되지 않은 요청의 세트를 처리한다. 그 후, 정상 동작 프로토콜이 진행되고, 그리고 노드는 최신 안정 체크포인트의 시퀀스 번호와 준비 메시지에서의 최고 번호 간의 요청을 다시 실행하지만, 재실행 요청은 피한다. 정상 동작 프로토콜과 뷰 변경 프로토콜 간의 노드에 대한 상태의 대응하는 전환이 도 3a에 예시된다. 도 3a에 도시된 바와 같이, 예를 들어, 백업 노드에 대한 타임아웃은 정상 동작 프로토콜(예를 들어, 정상 동작 프로토콜의 임의의 단계 동안)로부터 뷰 변경 프로토콜(예를 들어, 뷰 변경 단계를 시작)로의 전환을 트리거링할 수도 있다. 뷰 변경 프로토콜을 실행한 후, 일단 유효한 새로운 뷰 메시지를 취득한다면, 백업 노드가 뷰 변경 프로토콜을 퇴장하고 그리고 정상 동작 프로토콜을 재개하여 계류 요청을 실행할 수도 있다. 유효한 새로운 메시지는 상이한 노드로부터 Q개의 뷰 변경 메시지를 포함할 수도 있다.
도 3b에 도시된 바와 같이, 대안적인 경로가 다양한 실시형태에 따라, 뷰 변경 프로토콜로부터 정상 동작 프로토콜로 전환하도록 노드에 제공될 수도 있다. 일부 실시형태에서, 뷰 변경 프로토콜에서 노드가 Q개의 제1 메시지를 취득하여 뷰 변경 프로토콜을 종료할 수도 있다. 제1 메시지는 현재 뷰, 현재의 시퀀스 번호 및/또는 다이제스트를 포함할 수도 있다. 제1 메시지에 기초하여, 뷰 변경 프로토콜에서 노드는 다른 노드 중 다수가 정상 동작 중이고 따라서 뷰 변경을 퇴장한다고 결정할 수도 있다. 더 많은 상세사항은 도 4 내지 도 6을 참조하여 아래에 설명된다.
도 4는 본 명세서의 다양한 실시형태에 따른, 뷰 변경 퇴장 단계(410)의 흐름도를 예시한다. 단계(410)는 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 위에서 설명된 노드 0, 노드 1, 노드 2, ..., 또는 노드 i 또는 유사한 디바이스, 또는 임의의 노드와 하나 이상의 부가적인 디바이스, 예컨대, 노드 A의 조합)에 의해 구현될 수도 있다. 단계(410)는 하나 이상의 블록체인 노드(예를 들어, 기본 노드, 백업 노드)에 의해 구현될 수도 있다. 기본 노드와 백업 노드는 PBFT 모델에서 규정되는 노드일 수도 있다. 단계(410)는 다양한 하드웨어 기계 및/또는 소프트웨어를 포함하는 뷰 변경 시스템 또는 디바이스(예를 들어, 컴퓨터, 서버)에 의해 구현될 수도 있다. 예를 들어, 뷰 변경 퇴장 시스템 또는 디바이스는, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템 또는 디바이스(예를 들어, 프로세서)가 단계(410)를 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적인 컴퓨터 판독 가능한 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 아래에 제시되는 동작은 예시를 위한 것이다. 구현예에 따라, 동작은 다양한 순서로 또는 동시에 수행되는 추가의 단계, 더 적은 단계, 또는 대안적인 단계를 포함할 수도 있다.
단계(411)에서, 제1 노드(예를 들어, 백업 노드)는 뷰 변경 프로토콜에 진입할 수도 있다. 단계(412)에서, 제1 노드는 뷰 변경 메시지를 멀티캐스팅할 수도 있다. 뷰 변경에 진입하기 위해서, 제1 노드는 정상 동작 프로토콜을 종료하고 그리고 위에서 설명된 뷰 변경 프로토콜의 뷰 변경 단계에 진입한다. 하나의 실시형태에서, 제1 노드는 뷰 변경 메시지를 멀티캐스팅함으로써 뷰 변경 프로토콜에 진입할 수도 있다. 예를 들어, 제1 노드는 뷰 변경 메시지를 기본 노드 및 다른 백업 노드로 멀티캐스팅할 수도 있다. 제1 노드는 기본 노드가 장애가 있거나 또는 그렇지 않으면 기능하지 않는다고 결정할 수도 있고 그리고 뷰 변경 프로토콜에 따라 뷰 변경 메시지의 멀티캐스팅을 시작할 수도 있다.
기본 노드 및 (N-1)개의 백업 노드는 PBFT 합의 시스템을 형성할 수도 있다. 여기서, 기본 노드는 정말로 기능하지 않을 수도 있거나 또는 기능할 수도 있다. 기본 노드가 정말로 기능하지 않는다면, 다수의 백업 노드(예를 들어, Q개의 백업 노드)는 각각 뷰 변경 프로토콜에 진입할 수도 있고 그리고 각각 뷰 변경 메시지를 멀티캐스팅할 수도 있다. 제1 노드가 Q개의 뷰 변경 메시지를 취득할 때, 노드는 다수의 노드가 기본 노드가 기능하지 않고 그리고 새로운 기본 노드가 선택되어야 한다는 합의에 도달한다고 결정할 수 있다. 뷰 변경 프로토콜의 나머지가 후속될 수도 있다. 그러나, 기본 노드가 여전히 기능한다면, 제1 노드는 다음의 단계에 따라 뷰 변경 프로토콜을 종료할 수도 있다. 이러한 경우에 대해, 제1 노드는 앞서 설명된 사전-준비 메시지, 준비 메시지(들), 또는 확정 메시지(들)를 전송 및/또는 수신할 때 지연을 유발하는, 실수, 불안정한 접속 및/또는 다른 이유에 기인하여 뷰 변경에 진입할 수도 있다.
단계(413)에서, 제2 노드(들)는 각각 제1 메시지를 멀티캐스팅할 수도 있다. 일부 실시형태에서, 제2 노드(들)는 여전히 정상 동작 프로토콜에 있을 수도 있고 그리고 위에서 설명된 절차(예를 들어, 사전-준비 메시지를 수신, 준비 메시지를 멀티캐스팅, 준비 메시지를 수신, 확정 메시지를 멀티캐스팅, 확정 메시지를 수신 등)를 실행할 수도 있다. 정상 동작 프로토콜에서, 제2 노드(들)가 각각 제1 메시지를 제1 노드로 전송할 수도 있거나 또는 제1 메시지를 멀티캐스팅할 수도 있어서 제1 노드는 제1 메시지를 취득할 수 있다. 일부 실시형태에서, 제1 메시지는 확정 단계에서 멀티캐스팅된 확정 메시지에 포함될 수도 있다. 다른 실시형태에서, 제1 메시지는 확정 단계에서 멀티캐스팅된 확정 메시지에 추가될 수도 있다. 또 다른 실시형태에서, 제1 메시지는 예를 들어, 확정 메시지가 멀티캐스팅된 후 독립적으로 전송 또는 멀티캐스팅될 수도 있다.
하나의 실시형태에서, 제1 메시지는 현재 뷰 및 현재의 시퀀스 번호를 포함할 수도 있고, 둘 다는 제2 노드에게 알려져 있다. 현재 뷰는 어떤 노드가 기본 노드로서 제2 노드에게 알려져 있는지를 나타낼 수도 있다. 현재의 시퀀스 번호는 (1) 확정 단계에서 제2 노드에 의해 확정된 최신의 요청(예를 들어, 트랜잭션 요청)의 시퀀스 번호, 또는 (2) 확정 단계에서 제2 노드에 의해 확정된 최신의 블록을 나타내는 블록 높이를 나타낼 수도 있다. 블록 높이는 블록체인의 블록의 수에 기초할 수도 있다. 예를 들어, 블록의 높이는 블록과 원시 블록 간의 체인의 블록의 수일 수도 있다. 블록체인 내 제1 블록은 0의 블록 높이를 가질 수도 있고, 다음의 블록은 1의 블록 높이를 가질 수도 있고, 등이다. 이 예는 블록체인 내 블록의 일련번호를 나타내는 한 다른 유형의 표현을 가질 수 있는, 블록 높이를 나타내는 방식을 제한하고자 의도되지 않는다. 임의로, 제1 메시지는 또한 최신의 요청 또는 최신의 블록의 다이제스트를 포함할 수도 있다.
단계(414)에서, 제1 노드는 제2 노드로부터 제1 메시지를 각각 취득할 수도 있다. Q개 이상의 일관된 제1 메시지를 취득하는 것에 응답하여, 제1 노드가 뷰 변경 프로토콜을 종료하여 정상 동작 프로토콜에 진입할 수도 있다. Q개 이상의 제1 메시지는 적어도 Q개의 노드가 일관된 "뷰" 및 "시퀀스 번호"에 동의한다는 것을 의미한다. 일관된 "뷰" 및 "시퀀스 번호"는 다수의 노드가 요청 또는 블록에 대한 하나 이상의 트랜잭션을 성공적으로 합의-검증할 때 다수의 노드가 이들의 정상 동작 프로토콜에서 정상적으로 기능한다는 것을 나타낸다. 제1 노드가 일관된 뷰 및 시퀀스 번호를 가진 Q개의 제1 메시지를 취득하지 못한다면, 제1 노드는 뷰 변경 프로토콜에 남아있을 수도 있다.
일부 실시형태에서, Q개 이상의 제2 노드에게 알려진 현재의 시퀀스 번호는 제1 노드에 의해 알려진 제1 시퀀스 번호보다 더 크다(예를 들어, 1만큼 더 크다). 이것은 다수의 노드가 제1 노드가 놓쳤던, 요청 또는 블록의 합의 검증의 1라운드를 완료했다는 것을 나타낸다. 따라서, 제1 노드가 적어도 Q개의 제1 메시지를 수신한 것은 다수의 노드가 여전히 정상 동작 중인 일관된 제1 메시지를 통해 알 수도 있다.
일부 실시형태에서, 제1 노드는 적어도 현재 뷰에 기초하여 정상 동작에 진입할 수도 있다. 예를 들어, 뷰 변경을 퇴장할 때, 제1 노드는 자체 뷰로서 현재 뷰를 사용하여 정상 동작 프로토콜에 진입할 수도 있다. 제1 노드는 또한 최신의 블록의 정보(예를 들어, 다이제스트)를 포함함으로써 블록체인의 복사본과 블록체인의 최신의 복사본을 동기화할 수도 있다. 따라서, 제1 노드는 블록체인의 업데이트된 복사본 및 올바른 뷰를 사용하여 정상 동작 프로토콜을 재개할 수도 있다. 게다가, 제1 노드가 뷰 변경에 진입하는 것으로부터 정상 동작을 재개하는데 걸리는 시간이 예측될 수도 있다. 블록체인의 높이가 새로운 블록이 추가됨에 따라 증가되기 때문에, 제1 노드는 제1 노드가 뷰 변경에 진입하고 그리고 새로운 블록의 합의 검증을 놓치므로, 하나의 새로운 블록이 블록체인에 추가될 때 실수를 발견할 수 있다. 따라서, 정상 동작을 재개하는데 걸리는 시간은 합의 검증의 1라운드를 완료하기 위한 시간 미만일 수도 있다.
이와 같이, 뷰 변경에 진입하는 노드는 대안적인 경로를 통해 뷰 변경 프로토콜을 효율적으로 종료할 수 있고 그리고 다른 정상적으로 작동하는 노드를 재합류시킬 수 있다. 이 경로는 예를 들어, 실수, 불안정한 접속, 및/또는 다른 이유에 기인하여, 뷰 변경에 진입한 노드에게 유용할 수 있다. 이 경로는 종래의 뷰 변경 프로토콜을 피하고, 이는 Q개의 노드가 뷰 변경에 동의하게 요구하여 기본 노드를 변경하고 그리고 정상 동작을 재개한다. 따라서, 전체 네트워크 자원은 정상 동작에서 노드의 최대수를 보장함으로써 더 효율적으로 활용될 수 있다.
도 5a는 본 명세서의 다양한 실시형태에 따른, 뷰 변경 방법(510)의 흐름도를 예시한다. 방법(510)은 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 위에서 설명된 노드 0, 노드 1, 노드 2, ..., 또는 노드 i 또는 유사한 디바이스, 또는 임의의 노드와 하나 이상의 부가적인 디바이스, 예컨대, 노드 A의 조합)에 의해 구현될 수도 있다. 방법(510)은 하나 이상의 블록체인 노드(예를 들어, PBFT 시스템 내 백업 노드)에 의해 구현될 수도 있다. 기본 노드와 백업 노드는 PBFT 모델에서 규정되는 노드일 수도 있다. 방법(510)은 다양한 하드웨어 기계 및/또는 소프트웨어를 포함하는 뷰 변경 시스템 또는 디바이스(예를 들어, 컴퓨터, 서버)에 의해 구현될 수도 있다. 예를 들어, 뷰 변경 시스템 또는 디바이스는, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템 또는 디바이스(예를 들어, 프로세서)가 방법(510)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적인 컴퓨터 판독 가능한 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 아래에 제시되는 방법(510)의 동작은 예시를 위한 것이다. 구현예에 따라, 방법(510)은 다양한 순서로 또는 동시에 수행되는 추가의 단계, 더 적은 단계, 또는 대안적인 단계를 포함할 수도 있다. 방법(510)의 추가의 상세사항은 도 1 내지 도 4 그리고 관련된 위의 설명을 참조할 수 있다. 방법(510)은 제1 노드에 의해 수행될 수도 있다.
다양한 실시형태에서, 방법(510)은 복수(N개)의 노드(예를 들어, PBFT 합의 시스템의 노드)에 의해 유지되는 블록체인에서 구현될 컴퓨터-구현 뷰 변경 방법일 수도 있다. 하나의 실시형태에서, N개의 노드는 실용적 비잔틴 장애 허용(PBFT) 네트워크를 형성하고, N개의 노드 중 하나는 기본 노드로서 기능하고 그리고 다른 (N-1)개의 노드는 백업 노드로서 기능한다. 방법(510)은 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드(예를 들어, 백업 노드)에 의해 수행될 수도 있다.
일부 실시형태에서, 블록(511) 전에, 제1 노드는 뷰 변경에 진입할 수도 있다. 뷰 변경에 진입할 때, 제1 노드는 뷰 변경 메시지를 다른 노드로 멀티캐스팅할 수도 있다. 예를 들어, 제1 노드는 백업 노드일 수도 있고 그리고 뷰 변경 메시지를 기본 노드 및 다른 백업 노드로 멀티캐스팅할 수도 있다. 기본 노드와 백업 노드는 PBFT 합의 시스템을 형성할 수도 있다. 뷰 변경 메시지는 제1 노드가 정상 동작 프로토콜을 퇴장하고 그리고 뷰 변경 프로토콜에 진입하는 것을 나타낸다. 제1 노드가 다른 노드로부터 (Q-1)개의 유사한 뷰 변경 메시지를 수신하지 못한다면(그래서 자체 뷰 변경 메시지를 포함하는 총 Q개의 일관된 뷰 변경 메시지를 취득), 종래의 뷰 변경 프로토콜을 위한 문턱값이 충족되지 않을 것이다. 그럼에도 불구하고, 다음의 단계는 제1 노드가 뷰 변경 프로토콜을 종료하고 그리고 정상 동작 프로토콜에 진입하게 할 수도 있다.
블록(511)은 N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하는 것을 포함한다(현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고(예를 들어, 1만큼 더 크고), Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3임). N은 4보다 작지 않은 임의의 정수일 수 있다. 일부 실시형태에서, N이 적어도 (3F+1)일 때, Q는 (2F+1)이다. 최신의 트랜잭션과 연관된 현재의 시퀀스 번호는 예를 들어, 대응하는 제2 노드에 의해 확정된 하나 이상의 최신의 트랜잭션의 시퀀스 번호를 포함할 수도 있다. 최신의 블록과 연관된 현재의 시퀀스 번호는 예를 들어, 대응하는 제2 노드에 의해 유지되는 블록체인의 복사본의 높이를 포함할 수도 있다. 앞서 설명된 바와 같이, 블록체인의 높이는 블록체인 내 블록의 수에 의존할 수도 있고 그리고 최신의 블록의 추가로 증가될 수도 있다. 하나의 실시형태에서, 제1 노드가 뷰 변경을 종료하기 위해서, 적어도 Q개의 제1 메시지는 일관된 현재 뷰 및 일관된 현재의 시퀀스 번호를 포함할 수도 있다. 블록(512)은 적어도 Q개의 제1 메시지를 취득하는 것에 응답하여, 뷰 변경 프로토콜을 종료하는 것을 포함한다.
일부 실시형태에서, 용어 "트랜잭션"은 블록체인 시스템을 통해 구현될 수도 있고 그리고 블록체인에 기록될 수도 있다. 트랜잭션은 예를 들어, 금융 트랜잭션, 블록체인 계약을 전개 또는 호출하기 위한 블록체인 계약 트랜잭션, 블록체인의 상태(예를 들어, 세계 상태)를 업데이트하는 트랜잭션 등을 포함할 수도 있다. 트랜잭션은 금융 거래를 수반할 필요가 없다.
일부 실시형태에서, 적어도 Q개의 제1 메시지를 취득하는 것은, 적어도 Q개의 제2 노드로부터 각각, 적어도 Q개의 제2 노드가 다음의 블록이 블록체인에 추가되는 것에 동의함을 나타내는 적어도 Q개의 확정 메시지를 취득하는 것을 포함하고, Q개의 확정 메시지는 Q개의 제1 메시지를 각각 포함한다. 예를 들어, 확정 메시지는 현재 뷰 및 현재의 시퀀스 번호를 포함할 수도 있다.
다른 실시형태에서, 적어도 Q개의 제1 메시지를 취득하는 것은, 적어도 Q개의 제2 노드로부터 각각, 적어도 Q개의 제2 노드가 다음의 블록이 블록체인에 추가되는 것에 동의함을 나타내는 적어도 Q개의 확정 메시지를 취득하는 것을 포함하고, Q개의 제1 메시지는 Q개의 확정 메시지에 각각 추가된다. 예를 들어, 제1 메시지는 제2 노드에 의해 확정 메시지와 함께 전송될 수도 있거나 또는 멀티캐스팅될 수도 있다.
다양한 실시형태에서, 적어도 Q개의 제2 노드에 대한 현재 뷰는 v이고; 그리고 뷰 변경 프로토콜에 있을 때, 제1 노드는 v보다 더 큰 제1 뷰를 갖는다. 예를 들어, 제1 노드와 제2 노드 전부는, 제2 노드가 여전히 뷰 v에 있는 동안, 제1 노드가 뷰 변경에 진입하지만, 제1 노드가 기능하지 않고 그리고 뷰 v+1로 뷰 변경에 진입하는 것을 제1 노드가 의심하기 전에 뷰 v를 가질 수도 있다.
일부 실시형태에서, 현재의 시퀀스 번호는 제2 노드에 의해 유지되는 블록체인의 제2 복사본의 높이(또한, 블록 높이로서 알려짐)를 포함하고; 그리고 제1 시퀀스 번호는 제1 노드에 의해 유지되는 블록체인의 제1 복사본의 높이를 포함한다. 하나의 실시형태에서, 적어도 Q개의 제2 노드에게 알려진 현재의 시퀀스 번호는 (n+1)이고; 그리고 제1 노드에게 알려진 제1 시퀀스 번호는 n이다. 예를 들어, 제1 노드가 뷰 변경에 진입하기 전에, 제1 노드와 제2 노드는 뷰 v에서 99(즉, 블록체인 내 100개의 블록)의 블록 높이의 블록체인으로 시작할 수도 있다. 확정 단계(예를 들어, 확정 메시지를 멀티캐스팅)에 진입하기 전에 제1 노드가 뷰 변경 프로토콜에 진입하고 따라서 합의 검증에 실패한 후, 제2 노드는 101번째 블록에 관한 합의에 도달하고 이에 의해 블록 높이를 100까지 증가시킨다. 뷰 변경 프로토콜에서 고착된 제1 노드에게 알려진 101번째 블록은 현재의 시퀀스 번호(100)와 제1 시퀀스 번호(99) 간의 차를 유발할 수도 있다.
다른 실시형태에서, 현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 트랜잭션의 시퀀스 번호를 포함하고; 그리고 제1 시퀀스 번호는 제1 노드에 의해 확정된 최신의 트랜잭션의 시퀀스 번호를 포함한다. 하나의 실시형태에서, 적어도 Q개의 제2 노드에게 알려진 현재의 시퀀스 번호는 (n+1)이고; 그리고 제1 노드에게 알려진 제1 시퀀스 번호는 n이다. 예를 들어, 제1 노드가 뷰 변경에 진입하기 전에, 제1 노드와 제2 노드 전부는 합의 검증을 위해 80개의 요청(예를 들어, 트랜잭션 요청)으로 시작할 수도 있다. 요청이 할당되어 시퀀스 번호를 증가시킬 수도 있다. 뷰 v에서, 제1 노드와 제2 노드는 합의-검증된 50개의 요청을 가질 수도 있다. 확정 단계(예를 들어, 확정 메시지를 멀티캐스팅)에 진입하기 전에 제1 노드가 뷰 변경 프로토콜에 진입하고 따라서 합의 검증에 실패한 후, 제2 노드는 51번째 요청에 관한 합의에 도달하고 이에 의해 다음의 계류 요청의 시퀀스 번호를 52까지 증가시킨다. 합의 검증될 때 51번째 요청은 뷰 변경 프로토콜에 고착된 제1 노드에게 알려져 있지 않고 그리고 현재의 시퀀스 번호(51)와 제1 시퀀스 번호(50) 간의 차를 유발할 수도 있다.
일부 실시형태에서, 제1 메시지는 최신의 블록 또는 최신의 트랜잭션의 다이제스트를 더 포함한다. 다이제스트(예를 들어, 해시 값)는 트랜잭션과 같은 데이터에 해시 알고리즘을 적용한 수치 결과일 수도 있다. 하나의 실시형태에서, 다이제스트는 최신의 블록 또는 최신의 트랜잭션의 해시 값을 포함한다. 하나의 실시예에서, 다이제스트는 제2 노드에 의해 확정되지만 제1 노드에 의해 확정되지 않은 최신의 트랜잭션의 트랜잭션 해시를 포함한다. 또 다른 실시예에서, 다이제스트는 제2 노드에 의해 확정되지만 제1 노드에 의해 확정되지 않은 최신의 트랜잭션의 트랜잭션 해시를 포함한다. 또 다른 실시예에서, 다이제스트는 제2 노드에게 알려져 있지만 제1 노드에게 알려져 있지 않은 최신의 블록의 머클 루트를 포함한다. 또 다른 실시예에서, 다이제스트는 제2 노드에게 알려져 있지만 제1 노드에게 알려져 있지 않은 최신의 블록의 머클 루트를 포함한다.
일부 실시형태에서, "뷰", "시퀀스 번호" 및/또는 "다이제스트"는 하나 이상의 디지털 서명(또는 요약해서, 서명)으로서 제1 메시지에 포함될 수도 있다. 제1 메시지는 제2 노드에게 알려진 현재 뷰와 현재의 시퀀스 번호 둘 다를 인증하는 디지털 서명을 포함한다. "서명"은 대응하는 메시지를 전송하는 엔티티로부터의 보증을 나타낸다. 용어 "서명"은 임의의 형태의 승인의 표시일 수 있다. 하나의 실시형태에서, "뷰" "시퀀스 번호" 및/또는 "다이제스트"는 일방 해시 함수에 먼저 입력될 수도 있고, 이 중 출력된 해시 값이 대응하는 노드의 개인 키로 암호화되어 디지털 서명을 취득한다. 암호화는 다양한 방식, 예컨대, 공개-개인 키 암호화(또한, 비대칭 암호법으로서 알려짐), 디지털 서명 알고리즘(Digital Signature Algorithm: DSA), 예컨대, 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm: ECDSA) 등을 통해 달성될 수도 있다. 예를 들어, 공개 키 알고리즘, 예컨대, RSA를 사용하여, 수학적으로 관련되는 2개의 키, 즉, 하나의 공개 키와 하나의 개인 키를 생성할 수 있다. 디지털 서명은 공개 키 암호법이 2개의 서로 인증하는 암호 키에 의존하므로 작용한다. 디지털 서명을 생성하는 노드는 자체 개인 키를 사용하여 "뷰", "시퀀스 번호" 및/또는 "다이제스트"를 암호화할 수도 있고; 이 데이터를 해독하는 유일한 방식은 서명자 노드의 공개 키를 사용하는 것이다. 따라서, 디지털 서명은 대응하는 노드에게 알려진 "뷰", "시퀀스 번호" 및/또는 "다이제스트"를 나타낼 수 있다.
일부 실시형태에서, 뷰 변경 프로토콜을 종료하는 것은, 제1 노드에 의해 유지된 블록체인의 제1 복사본과 제2 노드에 의해 유지된 블록체인의 제2 복사본을 동기화하는 것; 및 뷰 변경 프로토콜을 퇴장하여, 제1 노드에 대한 일관된 현재 뷰를 사용해서 정상 동작 프로토콜에 진입하는 것을 포함한다. 따라서, 제2 노드가 뷰 v에 있고 그리고 제1 노드가 뷰 (v+1)에 고착되었다면, 제1 노드는 뷰 변경 프로토콜을 종료할 수 있고 그리고 뷰 v에서 정상 동작 프로토콜에 진입할 수 있다.
도 5b는 본 명세서의 다양한 실시형태에 따른, 뷰 변경 방법(520)의 흐름도를 예시한다. 방법(520)은 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 위에서 설명된 노드 0, 노드 1, 노드 2, ..., 또는 노드 i 또는 유사한 디바이스, 또는 임의의 노드와 하나 이상의 부가적인 디바이스, 예컨대, 노드 A의 조합)에 의해 구현될 수도 있다. 방법(520)은 하나 이상의 블록체인 노드(예를 들어, PBFT 시스템 내 기본 노드 또는 백업 노드)에 의해 구현될 수도 있다. 기본 노드와 백업 노드는 PBFT 모델에서 규정되는 노드일 수도 있다. 방법(520)은 다양한 하드웨어 기계 및/또는 소프트웨어를 포함하는 뷰 변경 시스템 또는 디바이스(예를 들어, 컴퓨터, 서버)에 의해 구현될 수도 있다. 예를 들어, 뷰 변경 시스템 또는 디바이스는, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템 또는 디바이스(예를 들어, 프로세서)가 방법(520)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적인 컴퓨터 판독 가능한 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 아래에 제시되는 방법(520)의 동작은 예시를 위한 것이다. 구현예에 따라, 방법(520)은 다양한 순서로 또는 동시에 수행되는 추가의 단계, 더 적은 단계, 또는 대안적인 단계를 포함할 수도 있다. 방법(520)의 추가의 상세사항은 도 1 내지 도 4 그리고 관련된 위의 설명을 참조할 수 있다. 방법(520)은 제2 노드에 의해 수행될 수도 있다. 제2 노드가 기본 노드라면, 제2 노드는 단계(521a, 522a, 523, 524, 525 및 526)를 수행할 수도 있다. 제2 노드가 백업 노드라면, 제2 노드는 단계(521b, 522b, 523, 524, 525 및 526)를 수행할 수도 있다.
블록(521a)은 제2 노드(예를 들어, 기본 노드)에 의해, 하나 이상의 요청(예를 들어, 트랜잭션 요청)을 취득하는 것을 포함한다. 요청은 합의 검증을 위한 블록체인 트랜잭션(스마트 계약이 있거나 없음)을 수반할 수도 있다. 하나의 실시예에서, 요청은 합의-검증되고 그리고 블록체인에 추가될 트랜잭션에 대응할 수도 있다. 합의 검증은 정상 동작 프로토콜의 1라운드의 실행 동안 수행될 수도 있다. 대안적으로, 요청은 다른 동작에 대응할 수도 있다. 일부 실시형태에서, 기본 노드는 클라이언트(예를 들어, 경량 노드)로부터, 또는 클라이언트로부터 요청을 취득하고 그리고 요청을 기본 노드로 전달하는 백업 노드로부터 요청을 취득할 수도 있다.
블록(522a)은 사전-준비 메시지 및 요청을 백업 노드로 멀티캐스팅하는 것을 포함한다. 일부 실시형태에서, 다수의 요청을 취득한 후, 제2 노드는 사전-준비 메시지 및 요청을 백업 노드의 각각으로 멀티캐스팅할 수도 있다. 사전-준비 메시지는 요청에 대한 순서(예를 들어, 요청과 연관된 트랜잭션에 대한 순서)를 포함할 수도 있다. 순서가 각각의 요청에 대한 시퀀스 번호 및/또는 다음의 블록에 대한 시퀀스 번호를 포함하여 블록체인에 추가될 수도 있다.
블록(521b)은 제2 노드(예를 들어, 백업 노드)에 의해, 사전-준비 메시지 및 하나 이상의 요청을 취득하는 것을 포함한다. 예를 들어, 사전-준비 메시지 및 요청은 기본 노드로부터 백업 노드에 의해 취득될 수도 있다. 유사하게, 백업 노드는 요청을 실행시키는 순서로 사전-준비 메시지 및 요청을 취득할 수도 있다.
블록(522b)은 제2 노드가 사전-준비 메시지를 수락한다면 준비 메시지를 멀티캐스팅하는 것을 포함한다. 멀티캐스팅은 브로드캐스팅을 의미할 수도 있다. 예를 들어, 준비 메시지는 백업 노드에 의해 기본 노드 및 다른 백업 노드로 멀티캐스팅될 수도 있다.
블록(523)은 (Q-1)개 이상의 준비 메시지를 취득하는 것을 포함한다. 일부 실시형태에서, Q(정족수)가 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F가 가장 가까운 정수로 내림된 (N-1)/3이고, N개의 노드의 합의 시스템이 기능하는 것을 유지하도록 N개의 노드 간에 허용되는 비-기능 노드의 최대 수를 나타낸다. (Q-1)개 이상의 준비 메시지를 취득하는 것은 확정 단계에 진입하기 전에 충족될 조건일 수도 있다. (Q-1)개 이상의 준비 메시지는 대응하는 노드의 자체의 멀티캐스팅 준비 메시지를 포함할 수도 있다.
블록(524)은 (1) 제2 노드에게 알려진 기본 노드를 나타내는 현재 뷰 및 (2) 제2 노드에게 알려진 현재의 시퀀스 번호를 포함하는 확정 메시지를 다른 노드로 멀티캐스팅하는 것을 포함한다. 일부 실시형태에서, 멀티캐스팅된 확정 메시지는 현재 뷰 및 현재의 시퀀스 번호를 암호화하는 하나 이상의 디지털 서명을 포함한다.
일부 실시형태에서, 확정 메시지는 요청과 연관된 하나 이상의 트랜잭션의 다이제스트를 더 포함한다. 예를 들어, 다이제스트는 최신의 확정된 트랜잭션의 트랜잭션 해시 또는 블록체인의 최신의 블록의 머클 트리 루트를 포함할 수도 있다.
일부 실시형태에서, 제2 노드는 뷰 변경에 진입하지 않고; 그리고 제2 노드에게 알려진 현재의 시퀀스 번호는 뷰 변경에 진입하는 제1 노드에게 알려진 제1 시퀀스 번호보다 (예를 들어, 1만큼) 더 크다.
일부 실시형태에서, 최대 F개의 노드가 기능하지 않을 수도 있다. 설명된 방법 및 합의 검증이 적절하게 수행될 수 있음에도 불구하고, PBFT 시스템은 최대 F개의 비-기능 노드를 허용한다.
블록(525)은 적어도 Q개의 확정 메시지를 취득하는 것을 포함한다. Q개의 확정 메시지는 대응하는 노드의 자체의 멀티캐스팅 확정 메시지를 포함할 수도 있다.
블록(526)은 하나 이상의 요청을 실행하는 것을 포함한다. 예를 들어, 하나 이상의 요청은 합의-검증될 수도 있고 그리고 이에 대응하여 블록체인의 로컬 복사본에 추가될 수도 있다. 그 결과, 충분한 노드(예를 들어, Q개의 노드)가 대응하는 트랜잭션을 검증했다면, 트랜잭션은 블록체인에 패킹된다.
도 6은 다양한 실시형태에 따른, 뷰 변경 시스템(610)의 블록도를 예시한다. 뷰 변경 시스템(610)(예를 들어, 컴퓨터 시스템)은 위에서 설명된 노드 0, 노드 1, 노드 2, ..., 또는 노드 i 또는 유사한 디바이스, 또는 임의의 노드와 부가적인 디바이스(예를 들어, 노드 A)의 조합의 구현예일 수도 있다. 방법(510)은 뷰 변경 시스템(610)에 의해 구현될 수도 있다. 뷰 변경 시스템(610)은, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템 또는 디바이스(예를 들어, 프로세서)가 방법(510)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적인 컴퓨터 판독 가능한 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 뷰 변경 시스템(610)은 명령어(예를 들어, 소프트웨어 명령어)에 대응하는 다양한 기구/모듈을 포함할 수도 있다.
일부 실시형태에서, 뷰 변경 시스템(610)은 뷰 변경 장치로서 지칭될 수도 있다. 뷰 변경 장치는 블록체인을 유지하기 위한 것일 수도 있고, 여기서, 복수(N개)의 노드는 블록체인을 유지하고, N개의 노드 중 하나는 기본 노드로서 기능하고 그리고 다른 (N-1) 노드는 백업 노드로서 기능하고, 합의 장치는 뷰 변경 프로토콜에 있는 N개의 노드 중 제1 노드로서 기능한다. 합의 장치는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 장치가 동작을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적인 컴퓨터 판독 가능한 메모리를 포함할 수도 있다. 합의 장치는 명령어(예를 들어, 소프트웨어 명령어)에 대응하는 다양한 기구/모듈을 포함할 수도 있다. 합의 장치는, N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 제2 노드에게 알려진, N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하기 위한 취득 모듈(611)(현재의 시퀀스 번호는 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 현재의 시퀀스 번호는 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고, Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3임); 및 적어도 Q개의 제1 메시지의 취득에 응답하여, 뷰 변경 프로토콜을 종료하기 위한 종료 모듈(612)을 포함할 수도 있다.
본 명세서에 설명된 기법은 하나 이상의 전용 연산 디바이스에 의해 구현된다. 전용 연산 디바이스는 데스크톱 컴퓨터 시스템, 서버 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 핸드헬드 디바이스, 네트워킹 디바이스, 또는 기법을 구현하도록 하드와이어형 및/또는 프로그램 로직을 통합하는 임의의 다른 디바이스 또는 이러한 디바이스의 조합일 수도 있다. 전용 연산 디바이스는 개인용 컴퓨터, 랩톱, 휴대폰, 카메라 폰, 스마트폰, 개인 휴대 정보 단말, 미디어 플레이어, 내비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 착용형 디바이스 또는 이들의 조합으로서 구현될 수도 있다. 연산 디바이스(들)는 일반적으로 운영 시스템 소프트웨어에 의해 제어 및 조정된다. 종래의 운영 시스템은 실행을 위한 컴퓨터 과정을 제어 및 스케줄링하고, 메모리 관리를 수행하고, 파일 시스템, 네트워킹, I/O 서비스를 제공하고, 그리고 다른 것 중에서, 그래픽 사용자 인터페이스(graphical user interface: "GUI")와 같은 사용자 인터페이스 기능을 제공한다. 본 명세서에 설명된 다양한 시스템, 장치, 저장 매체, 모듈 및 기구는 전용 연산 디바이스, 또는 하나 이상의 전용 연산 디바이스의 하나 이상의 연산 칩에서 구현될 수도 있다. 일부 실시형태에서, 본 명세서에 설명된 명령어는 전용 연산 디바이스 상의 가상 기계에서 구현될 수도 있다. 명령어는, 실행될 때, 전용 연산 디바이스가 본 명세서에 설명된 다양한 방법을 수행하게 할 수도 있다. 가상 기계는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함할 수도 있다. 예를 들어, 가상 기계는 이더리움의 스마트 계약에 대한 런타임 환경을 제공하는 이더리움 가상 머신(Ethereum Virtual Machine: EVM) 소프트웨어를 포함할 수도 있다.
도 7은 본 명세서에 설명된 실시형태 중 임의의 실시형태가 구현될 수도 있는 컴퓨터 시스템(700)을 예시하는 블록도이다. 시스템(700)은 본 명세서에 설명된 방법 중 임의의 방법(예를 들어, 뷰 변경 방법(510), 뷰 변경 방법(520))을 수행할 수도 있다. 시스템(700)은 본 명세서에 설명된 시스템 중 임의의 시스템(예를 들어, 뷰 변경 시스템(610))에서 구현될 수도 있다. 시스템(700)은 본 명세서에 설명된 노드 중 임의의 노드에서 구현될 수도 있고 그리고 블록체인 계약을 구현하기 위한 대응 단계를 수행하도록 구성될 수도 있다. 컴퓨터 시스템(700)은 정보를 전달하기 위한 버스(702) 또는 다른 통신 메커니즘, 및 정보를 처리하도록 버스(702)와 연결된 하나 이상의 하드웨어 프로세서(들)(704)를 포함한다. 하드웨어 프로세서(들)(704)는 예를 들어, 하나 이상의 범용 마이크로프로세서일 수도 있다.
컴퓨터 시스템(700)은 또한 프로세서(들)(704)에 의해 실행 가능한 명령어와 정보를 저장하기 위해 버스(702)에 연결된, 메인 메모리(706), 예컨대, 랜덤 액세스 메모리(random access memory: RAM), 캐시 및/또는 다른 동적 저장 디바이스를 포함한다. 메인 메모리(706)는 또한 프로세서(들)(704)에 의해 실행 가능한 명령어의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하기 위해 사용될 수도 있다. 이러한 명령어는, 프로세서(들)(704)가 액세스할 수 있는 저장 매체에 저장되는 경우, 컴퓨터 시스템(700)을 명령어에 특정된 동작을 수행하도록 맞춤화된 전용 기계로 되게 한다. 컴퓨터 시스템(700)은 프로세서(들)(704)를 위한 정적 정보 및 명령어를 저장하도록 버스(702)에 연결된 판독 전용 메모리(read only memory: ROM)(708) 또는 다른 정적 저장 디바이스를 더 포함한다. 저장 디바이스(710), 예컨대, 자기 디스크, 광디스크, 또는 USB 썸 드라이브(플래시 드라이브) 등은 정보 및 명령어를 저장하도록 제공되고 그리고 버스(702)에 연결된다.
컴퓨터 시스템(700)은 컴퓨터 시스템과 조합하여 컴퓨터 시스템(700)을 전용 기계로 되게 하거나 프로그래밍하는 맞춤형 하드와이어 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어 및/또는 프로그램 로직을 사용하여 본 명세서에 설명된 기법을 구현할 수도 있다. 하나의 실시형태에 따르면, 본 명세서에 설명된 동작, 방법 및 과정은 메인 메모리(706)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 프로세서(들)(704)에 응답하여 컴퓨터 시스템(700)에 의해 수행된다. 이러한 명령어는 또 다른 저장 매체, 예컨대, 저장 디바이스(710)로부터 메인 메모리(706)로 판독될 수도 있다. 메인 메모리(706)에 포함된 명령어의 시퀀스의 실행은 프로세서(들)(704)가 본 명세서에 설명된 과정 단계를 수행하게 한다. 대안적인 실시형태에서, 하드와이어형 회로는 소프트웨어 명령어 대신 또는 소프트웨어 명령어와 함께 사용될 수도 있다.
메인 메모리(706), ROM(708), 및/또는 저장 장치(710)는 비일시적인 저장 매체를 포함할 수도 있다. 용어 "비일시적인 매체" 및 유사 용어는 본 명세서에서 사용될 때, 기계가 특정 방식으로 작동하게 하는 데이터 및/또는 명령어를 저장하는 매체를 가리키며, 매체는 일시적 신호를 배제한다. 이러한 비일시적인 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수도 있다. 비휘발성 매체는 예를 들어, 저장 디바이스(710)와 같은 광학 디스크 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(706)와 같은 동적 메모리를 포함한다. 비일시적인 매체의 일반적인 형태는 예를 들어, 플로피 디스크, 가요성 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프, 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광학 데이터 저장 매체, 홀 패턴이 있는 임의의 물리적 매체, RAM, PROM, 및 EPROM, FLASH-EPROM, NVRAM, 임의의 다른 메모리 칩 또는 카트리지, 및 이들의 네트워크화 버전을 포함한다.
컴퓨터 시스템(700)은 버스(702)에 연결된 네트워크 인터페이스(718)를 또한 포함한다. 네트워크 인터페이스(718)는 하나 이상의 로컬 네트워크에 접속되는 하나 이상의 네트워크 링크에 결합하는 양방향 데이터 통신을 제공한다. 예를 들어, 네트워크 인터페이스(718)는 종합 정보 통신망(integrated services digital network: ISDN) 카드, 케이블 모뎀, 위성 모뎀, 또는 대응하는 유형의 전화선에 데이터 통신 접속을 제공하는 모뎀일 수도 있다. 또 다른 예를 들면, 네트워크 인터페이스(718)는 호환가능한 LAN(또는 WAN과 통신하기 위한 WAN 컴포넌트)에 데이터 통신 접속을 제공하기 위한 근거리 통신망(local area network: LAN) 카드일 수도 있다. 무선 링크도 구현될 수도 있다. 이러한 임의의 구현예에서, 네트워크 인터페이스(718)는 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 반송하는 전기 신호, 전자기 신호, 또는 광학 신호를 전송 및 수신한다.
컴퓨터 시스템(700)은 네트워크(들), 네트워크 링크 및 네트워크 인터페이스(718)를 통해 프로그램 코드를 포함하는 데이터를 수신할 수 있고 그리고 메시지를 전송할 수 있다. 인터넷을 예로 들면, 서버는 인터넷, ISP, 로컬 네트워크 및 네트워크 인터페이스(718)를 통해 애플리케이션 프로그램에 대한 요청된 코드를 전송할 수도 있다.
수신된 코드는 수신될 때 프로세서(들)(704)에 의해 실행될 수도 있고, 그리고/또는 추후 실행을 위해 저장 디바이스(710) 또는 다른 비휘발성 저장 장치에 저장될 수도 있다.
이전 섹션에서 설명한 과정, 방법, 및 알고리즘 각각은, 하나 이상의 컴퓨터 시스템 또는 컴퓨터 하드웨어를 포함하는 컴퓨터 프로세서에 의해 실행되는 코드 모듈에 의해 구체화될 수도 있고 그리고 완전히 또는 부분적으로 자동화될 수도 있다. 과정 및 알고리즘은 특정 애플리케이션 회로에서 부분적으로 또는 전체적으로 구현될 수도 있다.
위에서 설명된 다양한 특징과 과정은 서로 독립적으로 사용될 수도 있거나 또는 다양한 방식으로 조합될 수도 있다. 모든 가능한 조합 및 하위 조합은 본 명세서의 범위에 포함되도록 의도된다. 또한, 특정한 방법 또는 과정 블록은 일부 구현예에서 생략될 수도 있다. 본 명세서에 설명된 방법 및 과정은 또한 임의의 특정한 시퀀스로 한정되지 않고, 그리고 이와 관련된 블록 또는 상태는 적절한 다른 시퀀스로 수행될 수 있다. 예를 들어, 설명된 블록 또는 상태는 특정하게 개시된 순서와는 다른 순서로 수행될 수도 있거나, 또는 다수의 블록 또는 상태가 단일 블록 또는 상태로 결합될 수도 있다. 블록 또는 상태의 예는 직렬, 병렬 또는 일부 다른 방식으로 수행될 수도 있다. 블록 또는 상태는 개시된 실시형태에 추가될 수 있거나 또는 개시된 실시형태로부터 제거될 수도 있다. 본 명세서에 설명된 시스템과 컴포넌트의 예는 설명한 것과는 상이하게 구성될 수도 있다. 예를 들어, 개시된 실시형태와 비교해 볼 때, 구성요소는 추가될 수도 있고, 제거될 수도 있거나, 또는 재배열될 수도 있다.
본 명세서에 설명된 방법의 다양한 동작은 관련 동작을 수행하도록 일시적으로(예를 들어, 소프트웨어에 의해) 구성되거나 또는 영구적으로 구성되는 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수도 있다. 일시적으로 구성되거나 또는 영구적으로 구성되는 것에 상관없이, 이러한 프로세서는 본 명세서에 설명된 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서-구현 엔진을 구성할 수도 있다.
유사하게, 본 명세서에 설명된 방법은 적어도 부분적으로 프로세서로 구현될 수도 있으며, 이때, 특정한 프로세서 또는 프로세서들은 하드웨어의 예이다. 예를 들어, 방법의 동작 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서-구현 엔진에 의해 수행될 수도 있다. 게다가, 하나 이상의 프로세서는 또한 "클라우드 연산" 환경에서 또는 "서비스형 소프트웨어"(software as a service: SaaS)로서 관련 동작의 성능을 지원하도록 작동할 수도 있다. 예를 들어, 동작 중 적어도 일부는 (프로세서를 포함하는 기계의 예인) 컴퓨터의 군에 의해 수행될 수도 있고, 이 동작은 네트워크(예를 들어, 인터넷)를 통해 그리고 하나 이상의 적절한 인터페이스(예를 들어, 응용 프로그램 인터페이스(Application Program Interface: API))를 통해 액세스 가능하다.
특정한 동작의 수행은 단일 기계 내에 상주하는 프로세서뿐만 아니라 복수의 기계에 걸쳐 배치된 프로세서 간에도 분산될 수도 있다. 일부 실시형태에서, 프로세서 또는 프로세서-구현 엔진은 단일 지리적 위치에(예를 들어, 가정 환경, 사무실 환경, 또는 서버 팜 내에) 위치될 수도 있다. 다른 실시형태에서, 프로세서 또는 프로세서-구현 엔진은 복수의 지리적 위치에 걸쳐 분산될 수도 있다.
본 명세서 전반에 걸쳐, 복수의 사례는 단일 사례로서 설명된 컴포넌트, 동작, 또는 구조를 구현할 수도 있다. 하나 이상의 방법의 개별 동작이 별도의 동작으로 예시되고 설명되었지만, 하나 이상의 개별 동작은 동시에 수행될 수도 있으며, 동작이 예시된 순서대로 수행될 필요는 없다. 구성에 있어서 개별 컴포넌트로서 제시된 구조 및 기능은 결합된 구조 또는 컴포넌트로서 구현될 수도 있다. 유사하게, 단일 컴포넌트로서 제시된 구조 및 기능은 별도의 컴포넌트로서 구현될 수도 있다. 이들 변형, 수정, 추가, 개선, 및 다른 변형, 수정, 추가, 개선은 본 명세서의 주제의 범위 내에 속한다. 게다가, 본 명세서에서 사용되는 관련 용어(예컨대, "제1", "제2", "제3" 등)는 임의의 순서, 높이, 또는 중요도를 나타내지 않으며, 오히려 하나의 구성요소를 또 다른 구성요소와 구별하도록 사용된다. 게다가, "단수" 용어 및 "복수" 용어는 본 명세서에서의 수량을 한정하는 것이 아니라 오히려 언급된 물품 중 적어도 하나의 물품의 존재를 나타낸다.
주제의 개요를 특정한 실시형태를 참조하여 설명하였지만, 본 명세서의 실시형태의 넓은 범위를 벗어나는 일없이 이들 실시형태에 대해 다양한 수정 및 변경이 이루어질 수도 있다. 상세한 설명은 한정적인 의미로 해석되어서는 안 되며, 다양한 실시형태의 범위는 첨부된 청구범위 및 이러한 청구범위의 자격이 있는 등가물의 전체 범위에 의해서만 규정된다.

Claims (15)

  1. 복수(N개)의 노드에 의해 유지되는 블록체인에서 구현될 컴퓨터-구현 뷰 변경 방법으로서, 상기 방법은 뷰 변경 프로토콜에 있는 상기 N개의 노드 중 제1 노드에 의해 수행되고,
    상기 N개의 노드 중 적어도 Q개의 제2 노드로부터 각각, (1) 상기 제2 노드에게 알려진, 상기 N개의 노드 중 지정된 기본 노드를 나타내는 일관된 현재 뷰 및 (2) 상기 제2 노드에게 알려진 일관된 현재의 시퀀스 번호를 각각 포함하는 적어도 Q개의 제1 메시지를 취득하는 단계로서, 상기 현재의 시퀀스 번호는 상기 제2 노드에 의해 확정된 최신의 블록 또는 최신의 트랜잭션과 연관되고, 상기 현재의 시퀀스 번호는 상기 제1 노드에게 알려진 제1 시퀀스 번호보다 더 크고, Q(정족수)는 가장 가까운 정수로 반올림된 (N+F+1)/2이고, 그리고 F는 가장 가까운 정수로 내림된 (N-1)/3인, 상기 적어도 Q개의 제1 메시지를 취득하는 단계; 및
    상기 적어도 Q개의 제1 메시지의 취득에 응답하여, 상기 뷰 변경 프로토콜을 종료하는 단계를 포함하는, 컴퓨터-구현 뷰 변경 방법.
  2. 제1항에 있어서, 상기 적어도 Q개의 제1 메시지를 취득하는 단계는,
    상기 적어도 Q개의 제2 노드로부터 각각, 상기 적어도 Q개의 제2 노드가 다음의 블록이 상기 블록체인에 추가되는 것에 동의함을 나타내는 적어도 Q개의 확정 메시지를 취득하는 것을 포함하되, 상기 Q개의 확정 메시지는 상기 Q개의 제1 메시지를 각각 포함하는, 컴퓨터-구현 뷰 변경 방법.
  3. 제1항에 있어서, 상기 적어도 Q개의 제1 메시지를 취득하는 단계는,
    상기 적어도 Q개의 제2 노드로부터 각각, 상기 적어도 Q개의 제2 노드가 다음의 블록이 상기 블록체인에 추가되는 것에 동의함을 나타내는 적어도 Q개의 확정 메시지를 취득하는 것을 포함하되, 상기 Q개의 제1 메시지는 상기 Q개의 확정 메시지에 각각 추가되는, 컴퓨터-구현 뷰 변경 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 현재의 시퀀스 번호는 상기 제2 노드에 의해 유지된 상기 블록체인의 제2 복사본의 높이를 포함하고; 그리고
    상기 제1 시퀀스 번호는 상기 제1 노드에 의해 유지된 상기 블록체인의 제1 복사본의 높이를 포함하는, 컴퓨터-구현 뷰 변경 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 현재의 시퀀스 번호는 상기 제2 노드에 의해 확정된 상기 최신의 트랜잭션의 시퀀스 번호를 포함하고; 그리고
    상기 제1 시퀀스 번호는 상기 제1 노드에 의해 확정된 최신의 트랜잭션의 시퀀스 번호를 포함하는, 컴퓨터-구현 뷰 변경 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 메시지는 상기 제2 노드에게 알려진 상기 현재 뷰와 상기 현재의 시퀀스 번호 둘 다를 인증하는 디지털 서명을 포함하는, 컴퓨터-구현 뷰 변경 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제1 메시지는 상기 최신의 블록 또는 상기 최신의 트랜잭션의 다이제스트(digest)를 더 포함하는, 컴퓨터-구현 뷰 변경 방법.
  8. 제7항에 있어서,
    상기 다이제스트는 상기 최신의 블록 또는 상기 최신의 트랜잭션의 해시 값을 포함하는, 컴퓨터-구현 뷰 변경 방법.
  9. 제7항 또는 제8항에 있어서,
    상기 다이제스트는 상기 제2 노드에게 알려져 있지만 상기 제1 노드에게 알려져 있지 않은 상기 최신의 블록의 머클 루트(Merkle root)를 포함하는, 컴퓨터-구현 뷰 변경 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 뷰 변경 프로토콜을 종료하는 단계는,
    상기 제1 노드에 의해 유지된 상기 블록체인의 제1 복사본과 상기 제2 노드에 의해 유지된 상기 블록체인의 제2 복사본을 동기화하는 것; 및
    상기 뷰 변경 프로토콜을 퇴장하여, 상기 제1 노드에 대한 상기 일관된 현재 뷰를 사용해서 정상 동작 프로토콜에 진입하는 것을 포함하는, 컴퓨터-구현 뷰 변경 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 적어도 Q개의 제2 노드에게 알려진 상기 현재의 시퀀스 번호는 (n+1)이고; 그리고
    상기 제1 노드에게 알려진 상기 제1 시퀀스 번호는 n인, 컴퓨터-구현 뷰 변경 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 적어도 Q개의 제2 노드에 대한 상기 현재 뷰는 v이고; 그리고
    상기 뷰 변경 프로토콜에 있을 때, 상기 제1 노드는 v보다 더 큰 제1 뷰를 갖는, 컴퓨터-구현 뷰 변경 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 N개의 노드는 실용적 비잔틴 장애 허용(Practical Byzantine Fault Tolerance: PBFT) 네트워크를 형성하고, 상기 네트워크에서 상기 N개의 노드 중 하나의 노드는 상기 기본 노드로서 기능하고 그리고 다른 (N-1)개의 노드는 백업 노드로서 기능하는, 컴퓨터-구현 뷰 변경 방법.
  14. 뷰 변경 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고 그리고 제1항 내지 제13항 중 어느 한 항에 따른 방법을 수행하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어가 저장되는 하나 이상의 컴퓨터 판독 가능한 메모리를 포함하는, 뷰 변경 시스템
  15. 제1항 내지 제13항 중 어느 한 항에 따른 방법을 수행하기 위한 복수의 모듈을 포함하는, 뷰 변경 장치.
KR1020197031739A 2019-03-18 2019-03-18 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법 KR102170345B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/078487 WO2019101241A2 (en) 2019-03-18 2019-03-18 System and method for ending view change protocol

Publications (2)

Publication Number Publication Date
KR20200112635A true KR20200112635A (ko) 2020-10-05
KR102170345B1 KR102170345B1 (ko) 2020-10-28

Family

ID=66631234

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031739A KR102170345B1 (ko) 2019-03-18 2019-03-18 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법

Country Status (12)

Country Link
US (3) US11057504B2 (ko)
EP (2) EP3889780A1 (ko)
JP (1) JP6882527B2 (ko)
KR (1) KR102170345B1 (ko)
CN (1) CN110800258B (ko)
AU (1) AU2019203861B2 (ko)
CA (1) CA3057212A1 (ko)
ES (1) ES2880108T3 (ko)
PL (1) PL3593249T3 (ko)
SG (1) SG11201908853YA (ko)
TW (1) TWI709063B (ko)
WO (1) WO2019101241A2 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109327459B (zh) * 2018-11-12 2020-12-01 崔晓晖 一种联盟区块链网络的共识方法
EP3889780A1 (en) * 2019-03-18 2021-10-06 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
KR102170347B1 (ko) 2019-03-18 2020-10-28 알리바바 그룹 홀딩 리미티드 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
KR20200139034A (ko) * 2019-06-03 2020-12-11 삼성에스디에스 주식회사 블록체인 기반 컴퓨팅 시스템 및 그 시스템의 트랜잭션 관리 방법
EP3701701A4 (en) * 2019-06-05 2020-12-30 Alibaba Group Holding Limited CONSENSUS SYSTEM AND PROCESS
US20210099312A1 (en) * 2019-09-27 2021-04-01 Cypherium Blockchain Inc. Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
CN110460484B (zh) * 2019-10-10 2020-02-18 杭州趣链科技有限公司 一种基于pbft算法改进的单节点异常主动恢复方法
US11720526B2 (en) 2019-11-12 2023-08-08 ClearTrace Technologies, Inc. Sustainable energy tracking system utilizing blockchain technology and Merkle tree hashing structure
CN111031076B (zh) * 2020-03-06 2020-07-10 南京畅洋科技有限公司 一种基于定时机制的物联网区块链共识方法
CN111510317B (zh) * 2020-03-06 2022-08-26 杜晓楠 弱化dbft中连续多个节点故障导致的延迟的方法、计算机可读存储介质和dbft网络
KR20210140851A (ko) * 2020-05-14 2021-11-23 삼성에스디에스 주식회사 복수의 블록체인 네트워크 간 데이터를 연동하는 방법 및 그 장치
CN111526216B (zh) * 2020-07-03 2020-09-22 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN111526219B (zh) * 2020-07-03 2021-02-09 支付宝(杭州)信息技术有限公司 一种联盟链的共识方法及联盟链系统
US11343313B1 (en) * 2021-01-28 2022-05-24 International Business Machines Corporation Fault tolerant periodic leader rotation for blockchain
CA3206764C (en) 2021-01-29 2024-02-27 Troy Martin Sustainable energy physical delivery tracking and verification of actual environmental impact
WO2022250047A1 (ja) * 2021-05-24 2022-12-01 株式会社Scalar ビザンチン故障を検知するデータ管理システム及び方法
EP4350518A1 (en) * 2021-05-24 2024-04-10 Scalar, Inc Data management system and method for detecting byzantine fault
US11609824B2 (en) * 2021-07-22 2023-03-21 Vmware, Inc. Byzantine fault tolerant view change processing
CN113541968B (zh) * 2021-09-16 2021-11-26 中国信息通信研究院 共识方法、装置及区块链系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254412A1 (en) * 2011-03-28 2012-10-04 Siemens Corporation Replicated state machine utilizing view change protocol resilient to performance attacks
CN107040594A (zh) * 2017-04-12 2017-08-11 山大地纬软件股份有限公司 基于pbft的许可区块链节点准入的方法及装置
CN107579848A (zh) * 2017-08-30 2018-01-12 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
CN109039748A (zh) * 2018-08-10 2018-12-18 上交所技术有限责任公司 一种pbft协议动态增删节点的方法

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671821B1 (en) 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
WO2017036546A1 (en) 2015-09-04 2017-03-09 Nec Europe Ltd. Method for storing an object on a plurality of storage nodes
US10529042B2 (en) 2016-04-18 2020-01-07 Rs Ltd. System and method for managing transactions in dynamic digital documents
US10204341B2 (en) 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US10713731B2 (en) 2016-07-22 2020-07-14 Nec Corporation Method for secure ledger distribution and computer system using secure distributed ledger technology
US10049017B2 (en) 2016-10-04 2018-08-14 Nec Corporation Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
JP6825296B2 (ja) 2016-10-11 2021-02-03 富士通株式会社 エッジサーバ,及びその暗号化通信制御方法
US10540652B2 (en) 2016-11-18 2020-01-21 Intel Corporation Technology for secure partitioning and updating of a distributed digital ledger
EP3394756B1 (en) * 2016-11-25 2024-01-03 NEC Corporation Method and system for byzantine fault - tolerance replicating of data
US10586210B2 (en) 2016-11-30 2020-03-10 International Business Machines Corporation Blockchain checkpoints and certified checkpoints
US10523421B2 (en) 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
US11954697B2 (en) 2017-02-27 2024-04-09 Ncr Corporation Blockchain consumer ledger
US20180267539A1 (en) 2017-03-17 2018-09-20 Jeanne Louise Shih Distributive networks of groups of moveable autonomous devices
CN107391320B (zh) 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
WO2018170504A1 (en) 2017-03-17 2018-09-20 Labyrinth Research Llc Unified control of privacy-impacting devices
CN107360206B (zh) 2017-03-29 2020-03-27 创新先进技术有限公司 一种区块链共识方法、设备及系统
CN110445619B (zh) 2017-03-30 2020-10-16 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
US20180308091A1 (en) 2017-04-21 2018-10-25 Vmware, Inc. Fairness preserving byzantine agreements
US10896169B2 (en) 2017-05-12 2021-01-19 International Business Machines Corporation Distributed system, computer program product and method
CN107402824B (zh) * 2017-05-31 2020-06-02 创新先进技术有限公司 一种数据处理的方法及装置
JP2019012415A (ja) 2017-06-30 2019-01-24 株式会社bitFlyer ネットワークにおける合意形成方法及び当該ネットワークを構成するノード
US20190012662A1 (en) 2017-07-07 2019-01-10 Symbiont.Io, Inc. Systems, methods, and devices for reducing and/or eliminating data leakage in electronic ledger technologies for trustless order matching
CN112804349B (zh) * 2017-07-14 2023-07-04 创新先进技术有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
US10984134B2 (en) * 2017-07-14 2021-04-20 Microsoft Technology Licensing, Llc Blockchain system for leveraging member nodes to achieve consensus
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
EP3439264B1 (en) 2017-08-01 2021-06-02 Panasonic Intellectual Property Corporation of America Management system, vehicle, and information processing method
US20190058709A1 (en) 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
CN107819749A (zh) 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
CN108108967B (zh) * 2017-12-29 2020-10-16 山大地纬软件股份有限公司 面向复杂数字资产的多阶段pbft共识系统及方法
US20190251199A1 (en) 2018-02-14 2019-08-15 Ivan Klianev Transactions Across Blockchain Networks
RU2724181C1 (ru) * 2018-11-07 2020-06-22 Алибаба Груп Холдинг Лимитед Упрощение консенсуса в цепочках блоков по принципу практичной отказоустойчивости на основе византийского соглашения и синхронизации узлов
US20200162266A1 (en) 2018-11-16 2020-05-21 Adobe Inc. Facilitating analytic services for provenance of digital documents
CN109327548A (zh) * 2018-11-27 2019-02-12 北京瑞卓喜投科技发展有限公司 一种区块链更新方法及区块链更新系统
CN110870288B (zh) * 2019-03-18 2022-05-27 创新先进技术有限公司 共识系统停机时间恢复
EP3889780A1 (en) * 2019-03-18 2021-10-06 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
US10938750B2 (en) * 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
KR102170347B1 (ko) * 2019-03-18 2020-10-28 알리바바 그룹 홀딩 리미티드 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
EP3701701A4 (en) * 2019-06-05 2020-12-30 Alibaba Group Holding Limited CONSENSUS SYSTEM AND PROCESS
US10944624B2 (en) * 2019-06-28 2021-03-09 Advanced New Technologies Co., Ltd. Changing a master node in a blockchain system
CN110730204B (zh) * 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统
CN110727731B (zh) * 2019-09-05 2021-12-21 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254412A1 (en) * 2011-03-28 2012-10-04 Siemens Corporation Replicated state machine utilizing view change protocol resilient to performance attacks
CN107040594A (zh) * 2017-04-12 2017-08-11 山大地纬软件股份有限公司 基于pbft的许可区块链节点准入的方法及装置
CN107579848A (zh) * 2017-08-30 2018-01-12 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
CN109039748A (zh) * 2018-08-10 2018-12-18 上交所技术有限责任公司 一种pbft协议动态增删节点的方法

Also Published As

Publication number Publication date
EP3593249A2 (en) 2020-01-15
EP3593249A4 (en) 2020-10-14
US10666778B1 (en) 2020-05-26
KR102170345B1 (ko) 2020-10-28
US20200213427A1 (en) 2020-07-02
US10701192B1 (en) 2020-06-30
WO2019101241A3 (en) 2020-01-16
EP3593249B1 (en) 2021-06-23
US11057504B2 (en) 2021-07-06
TW202036229A (zh) 2020-10-01
US20200145520A1 (en) 2020-05-07
CN110800258A (zh) 2020-02-14
EP3889780A1 (en) 2021-10-06
PL3593249T3 (pl) 2021-12-13
JP6882527B2 (ja) 2021-06-02
CA3057212A1 (en) 2019-05-31
ES2880108T3 (es) 2021-11-23
AU2019203861B2 (en) 2020-07-02
CN110800258B (zh) 2022-04-22
US20200028947A1 (en) 2020-01-23
TWI709063B (zh) 2020-11-01
SG11201908853YA (en) 2019-10-30
JP2020522778A (ja) 2020-07-30
WO2019101241A2 (en) 2019-05-31

Similar Documents

Publication Publication Date Title
KR102170345B1 (ko) 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
KR102170347B1 (ko) 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
US10671599B2 (en) Consensus system and method
US11347598B2 (en) Consensus system downtime recovery
KR102230829B1 (ko) 합의 시스템 다운타임 복구
US20200127945A1 (en) Consensus system downtime recovery
AU2019101575A4 (en) System and method for ending view change protocol

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant