KR20190099222A - 블록체인 기반 합의 방법 및 디바이스 - Google Patents

블록체인 기반 합의 방법 및 디바이스 Download PDF

Info

Publication number
KR20190099222A
KR20190099222A KR1020197018653A KR20197018653A KR20190099222A KR 20190099222 A KR20190099222 A KR 20190099222A KR 1020197018653 A KR1020197018653 A KR 1020197018653A KR 20197018653 A KR20197018653 A KR 20197018653A KR 20190099222 A KR20190099222 A KR 20190099222A
Authority
KR
South Korea
Prior art keywords
consensus
server
procedure
message
database
Prior art date
Application number
KR1020197018653A
Other languages
English (en)
Other versions
KR102255724B1 (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 KR20190099222A publication Critical patent/KR20190099222A/ko
Application granted granted Critical
Publication of KR102255724B1 publication Critical patent/KR102255724B1/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration 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/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/2048Error 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 where the redundant components share neither address space nor persistent storage
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/44Arrangements for executing specific programs
    • 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/465Distributed object oriented systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • 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
    • 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

Abstract

본 출원의 구현예는 블록체인 기반 합의 방법 및 디바이스를 개시한다. 하나의 블록체인 노드는, 제1 서버, 제2 서버, 및 적어도 하나의 데이터베이스를 포함한다. 상기 방법은 다음을 포함한다: 데이터베이스에 의해, 합의 프로시저를 수행하는 데 필요한 합의 데이터 - 합의 데이터는 합의 프로시저 동안 제1 서버 및 제2 서버에 의해 호출됨 - 를 저장하는 것; 합의 프로시저 이전에 또는 합의 프로시저 동안 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 제1 서버 대신 제2 서버에 의해, 데이터베이스로부터 합의 데이터를 획득하고, 합의 데이터에 기초하여 합의 프로시저를 실행하여 합의 결과를 생성하는 것; 및 제2 서버에 의해, 합의 결과를 데이터베이스에 저장하는 것. 본 출원의 구현예에 따르면, 노드 내의 정상적인 서버는, 결함이 있는 서버 대신, 데이터베이스로부터 합의 데이터를 획득하여 합의 프로시저를 실행할 수 있다. 그것은, 합의 프로시저의 정상적인 운영을 보장하고, 합의 프로시저의 성공률을 어느 정도까지 향상시킬 수 있고, 그에 의해, 블록체인의 서비스 프로세싱 효율성을 향상시킬 수 있다.

Description

블록체인 기반 합의 방법 및 디바이스
본 출원은 컴퓨터 기술 분야에 관한 것으로, 특히, 블록체인 기반 합의(blockchain-based consensus) 방법 및 디바이스에 관한 것이다.
현재, 블록체인(blockchain) 기술이 널리 적용되고 있으며, 그 탈중앙화(decentralization) 모드는 데이터가 쉽게 무단 변경되지 않는 것을 보장하고, 그에 의해, 보안성을 향상시킨다.
실제 적용 시나리오에서, 블록체인은 클라이언트에게 대응하는 서비스를 제공할 수 있고, 블록체인 노드(blockchain node)는 유저의 서비스 요청을 프로세싱하고 대응하는 프로세싱 결과를 생성할 수 있다. 그러나, 블록체인은 악성 노드 또는 결함 노드를 포함할 수도 있다. 그것은 의심할 여지없이 클라이언트에 의해 획득되는 서비스에 영향을 미친다. 따라서, 예를 들면, 블록체인 내의 노드 사이에서 프랙티컬 비잔틴 장애 허용(Practical Byzantine Fault Tolerance; PBFT) 기반 합의 프로시저(consensus procedure)가 수행될 수 있고, 그 결과, 노드는 정확한 프로세싱 결과에 동의할 수 있다.
PBFT 기반 합의 프로시저가 예로서 사용된다. 도 1에서 도시되는 바와 같이, PBFT 기반 합의 프로시저는, 사전 준비 단계(사전 준비), 준비 단계(준비), 및 커밋 단계(커밋)를 포함한다. 클라이언트(도 1에서 C에 의해 표현됨)로부터 서비스 요청을 수신하는 노드(도 1에서 0의 번호가 매겨진 노드)는, 합의 프로시저를 수행하기 위해, 서비스 요청을 다른 노드(예를 들면, 1, 2 및 3의 번호가 매겨진 노드)로 전송한다. 각각의 단계에서, 노드는 합의 메시지를 서로에게 전송하고, 그 결과, 노드는 합의 프로시저를 수행한다. 세 단계의 합의 프로시저 이후에, 합의가 도달했다는 것이 간주될 수 있다. 이 경우, 노드는 서비스 요청을 개별적으로 프로세싱하고, 각각은 프로세싱 결과를 클라이언트에게 피드백한다.
현존하는 기술의 몇몇 시나리오에서, 많은 양의 합의 프로시저를 프로세싱하기 위해, 일반적으로, 복수의 서버가 이전에 설명되는 블록체인의 각각의 노드에 배치되고, 블록체인의 프로세싱 양 및 프로세싱 효율성을 향상시키기 위해, 상이한 서버가 상이한 합의 프로시저에 개별적으로 참여할 수 있다.
그러나, 실제로, 노드 내의 서버가 결함이 있을 수도 있고, 예를 들면, 오프라인일 수도 있거나 또는 재시작될 수도 있다. 예를 들면, PBFT 기반 합의 프로시저에서, 일단 서버가 결함이 있으면, 그 서버는 합의에 계속 참여할 수 없고 합의에 도달하는 확률에 영향을 끼친다. 소정의 라운드에서 합의가 도달되지 못하는 경우, 블록체인이 현재 위치한 합의 단계에 무관하게, 합의는 사전 준비 단계에서부터 재개시될 필요가 있다. 물론, 그것은 의심할 여지없이 블록체인 합의 효율성에 영향을 끼치며, 블록체인의 서비스 프로세싱 효율성에도 또한 영향을 끼친다.
본 출원의 구현예는, 노드 내의 서버가 결함이 있을 때 합의 효율이 상대적으로 낮은 현재의 문제를 해결하기 위한, 블록체인 기반 합의 방법 및 디바이스를 제공한다.
본 출원의 구현예는 블록체인 기반 합의 방법을 제공한다. 하나의 블록체인 노드는, 제1 서버, 제2 서버, 및 적어도 하나의 데이터베이스를 포함한다. 방법은 다음을 포함한다: 데이터베이스에 의해, 합의 프로시저를 수행하는 데 필요한 합의 데이터 - 합의 데이터는 합의 프로시저 동안 제1 서버 및 제2 서버에 의해 호출됨 - 를 저장하는 것; 합의 프로시저 이전에 또는 합의 프로시저 동안 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 제1 서버 대신 제2 서버에 의해, 데이터베이스로부터 합의 데이터를 획득하고, 합의 데이터에 기초하여 합의 프로시저를 실행하여 합의 결과를 생성하는 것; 및 제2 서버에 의해, 합의 결과를 데이터베이스에 저장하는 것.
본 출원의 구현예는 블록체인 기반 합의 디바이스를 제공하는데, 여기서 하나의 블록체인 노드는 제1 서버, 제2 서버, 및 적어도 하나의 데이터베이스를 포함하고; 데이터베이스는 합의 프로시저를 수행하는 데 필요한 합의 데이터 - 합의 데이터는 합의 프로시저 동안 제1 서버 및 제2 서버에 의해 호출됨 - 를 저장하고; 제1 서버는 합의 프로시저 이전에 또는 합의 프로시저 동안에 결함이 있고; 디바이스는 다음을 포함한다: 합의 메시지에 기초하여 데이터베이스로부터 합의 메시지에 대응하는 합의 데이터를 획득하도록 구성되는 획득 모듈; 합의 데이터에 기초하여 합의 프로시저를 실행하여 합의 결과를 생성하도록 구성되는 합의 실행 모듈; 및 합의 메시지 및 합의 결과를 데이터베이스에 저장하도록 구성되는 저장 모듈.
본 출원의 구현예에서 제공되는 블록체인 기반 합의 방법 및 디바이스에 따르면, 블록체인 노드 내의 각각의 서버에 대해, 소정의 합의 프로시저에 참여 중에 있는 서버는, 상이한 합의 단계에서 합의 메시지를 또는 현재의 단계에서 서버에 의해 생성되는 합의 결과를 "공개적으로(publicly)" 저장한다. 다시 말하면, 서버는, 블록체인 노드의 데이터베이스에, 상이한 합의 단계에서 합의 메시지를 저장하거나 또는 현재의 단계에서 서버에 의해 생성되는 합의 결과를 저장하고, 데이터베이스는 블록체인 노드 내의 모든 서버에 대해 사용될 수 있다. 그러한 만큼, 소정 라운드의 합의에 참여 중에 있는 서버가 결함이 있는 경우, 예를 들면, 오프라인이거나 또는 다시 시작되는 경우, 서버의 합의 데이터는 블록체인 노드 내의 다른 서버에 의해 사용될 수 있고, 다른 서버는 결함이 있는 서버 대신 대응하는 합의 프로시저를 계속 실행할 수 있다.
명백하게, 현존하는 기술과 비교하여, 블록체인 노드 내의 각각의 서버가 블록체인 노드의 데이터베이스에 합의 데이터를 저장하는 방법에서, 소정의 서버가 결함이 있는 경우라도, 정상적으로 운영되고 있는 서버가 데이터베이스로부터 대응하는 합의 데이터를 획득하여 결함이 있는 서버 대신 합의를 완료할 수 있다. 그것은 합의 프로시저의 정상적인 운영을 보장하고, 합의 프로시저의 성공률을 소정의 정도까지 향상시킬 수 있고 동시에 합의 재개시 횟수가 감소되고, 그에 의해 블록체인의 서비스 프로세싱 효율성을 향상시킬 수 있다.
여기에서 설명되는 첨부의 도면은, 본 출원의 추가적인 이해를 제공하도록, 그리고 본 출원의 일부를 구성하도록 의도된다. 본 출원의 예시적인 구현예 및 그 설명은, 본 출원을 설명하도록 의도되며, 본 출원에 대한 부적절한 제한을 구성하지는 않는다. 첨부의 도면에서:
도 1은 현존 기술에서의 PBFT 기반 합의 프로시저를 예시한다;
도 2a는, 본 출원의 구현예에 따른, 블록체인 기반 합의 프로시저에서의 블록체인의 아키텍쳐를 예시한다;
도 2b는, 본 출원의 구현예에 따른, 블록체인 기반 합의 프로시저에서의 블록체인 노드의 아키텍쳐를 예시한다;
도 2c는, 본 출원의 구현예에 따른, 서버 측 상에서의 블록체인 기반 합의 프로시저를 예시한다;
도 2d는, 본 출원의 구현예에 따른, 다른 타입의 블록체인 노드의 아키텍쳐를 예시한다;
도 3a 및 도 3b는, 본 출원의 구현예에 따른, 동일한 합의 프로시저에서의 서버 변경 프로세스를 예시하는 개략도이다;
도 4는, 본 출원의 구현예에 따른, 서버 측 상에서의 블록체인 기반 합의 디바이스를 예시하는 개략적인 구조도이다.
본 출원의 목적, 기술적 솔루션, 및 이점을 더욱 명확하게 만들기 위해, 하기에서는, 본 출원의 특정한 구현예 및 대응하는 첨부의 도면을 참조하여 본 출원의 기술적 솔루션을 명확하고 포괄적으로 설명한다. 명백하게, 설명된 구현예는 본 출원의 구현예의 전체가 아닌 일부에 불과하다. 창의적인 노력 없이 본 출원의 구현예에 기초하여 기술 분야에서 통상의 기술을 가진 자에 의해 획득되는 다른 모든 구현예는 본 출원의 보호 범위 내에 속할 것이다.
상기에서 설명되는 바와 같이, 블록체인 내의 노드 사이에서 실행되는 합의의 임의의 시간 동안, 임의의 노드에서 합의의 현재 시간에 참여 중에 있는 서버는 결함이 있을 수도 있고, 예를 들면, 오프라인일 수도 있거나 또는 재시작될 수도 있고, 결과적으로, 서버는 합의에 계속 참여할 수 없다. 따라서, 합의 성공률이 감소될 수도 있다. 특히, PBFT 기반 합의 사례에서, 소정 수의 합의 실패는, 각각의 서버의 합의 데이터를 정리하기 위해, PBFT 하에서 가비지 수집 메커니즘(garbage collection mechanism)을 트리거할 수도 있다. 명백하게, 그것은 의심할 여지없이 블록체인의 서비스 프로세싱에 영향을 끼친다.
앞선 설명에 기초하여, 본 출원의 구현예는 블록체인 기반 합의 방법을 제공한다. 방법에서, 합의 데이터는 블록체인 노드의 데이터베이스에 저장되고, 그 결과, 서버가 결함이 있는(오프라인이거나 또는 재시작되는) 경우, 블록체인 노드에서 정상적으로 운영되고 있는 서버가, 데이터베이스에 저장되어 있는 합의 데이터를 또한 판독할 수 있고, 결함이 있는 서버 대신 합의 프로시저를 계속 실행할 수 있다. 물론, 본 출원의 구현예에서의 블록체인 기반 합의 방법은 PBFT 기반 합의 프로시저로만 제한되지 않으며, Paxos와 같은 합의 알고리즘에 기초하는 합의 프로시저에서 또한 사용될 수 있다.
본 출원의 구현예에서, 블록체인 기반 합의 방법에서 사용되는 아키텍쳐가 도 2a에 도시된다는 것을 주목할 가치가 있다 도 2a로부터, 블록체인은 복수의 블록체인 노드를 포함한다는 것을 알 수 있다. 후속하는 설명의 용이성을 위해, 블록체인 노드는 이하에서 간략히 노드로 칭해진다.
복수의 클라이언트는 블록체인과의 서비스 상호 작용을 수행할 수 있다. 블록체인은 컨소시엄 체인(consortium chain) 및/또는 개인 체인(private chain)일 수 있고, 유저에게 서비스를 제공할 수 있다. 클라이언트는, 브라우저, 애플리케이션, 등등을 포함할 수도 있다. 클라이언트는 단말, 서버, 데이터베이스, 등등에서 실행될 수 있다. 구현예는 여기에서는 구체적으로 제한되지 않는다.
도 2a에서 도시되는 아키텍쳐에 기초하여, 임의의 노드의 아키텍쳐가 도 2b에서 도시될 수 있다. 도 2b로부터, 노드는 n 개의 서버 및 서버에 의해 공유되는 하나의 데이터베이스를 포함한다는 것을 알 수 있다. 상이한 서버가 상이한 합의 프로시저에 참여할 수 있고, 서버는 서로 독립적으로 실행될 수 있다. 데이터베이스는 노드의 서버에게 데이터 저장 서비스를 제공하도록 구성된다. 다시 말하면, 각각의 서버는 합의 프로시저에서 대응하는 합의 데이터를 데이터베이스에 저장할 수 있다. 물론, 도 2b에서 도시되는 노드에서의 데이터베이스의 수는 일반적인 수에 불과하다. 실제로는, 노드에서의 데이터베이스 수는 실제 요구에 기초하여 조정될 수 있다. 또한, 몇몇 시나리오에서, 노드에서의 서버는, 컴퓨터와 같은 컴퓨팅 프로세싱 기능을 갖는 디바이스로 대체될 수 있다.
설명의 용이성을 위해, 하기에서는, 실행 동안 결함이 있을 수도 있는 서버는 제1 서버로 칭해지고, 정상적으로 운영될 수 있는 서버는 제2 서버로 칭해진다는 것을 또한 주목할 가치가 있다. 따라서, 도 2b에서 도시되는 아키텍쳐에서, 아키텍쳐는 두 가지 타입의 서버: 제1 서버와 제2 서버를 포함한다는 것이 고려될 수 있다. 앞선 내용은 본 출원에 대한 제한으로 해석되어서는 안된다.
도 2b에서 도시되는 관계 아키텍쳐(relationship architecture)에 기초하여, 본 출원의 구현예는 블록체인 기반 합의 프로시저를 제공한다. 도 2c에서 도시되는 바와 같이, 프로시저는 구체적으로 다음의 단계를 포함한다.
S201. 데이터베이스는 합의 프로시저를 수행하는 데 필요한 합의 데이터를 저장함, 합의 데이터는 합의 프로시저 동안 제1 서버 및 제2 서버에 의해 호출됨.
도 2b에서의 아키텍쳐에 기초하여, 데이터베이스는 서버가 위치되는 노드에 배치되고 노드 내의 모든 서버에 의해 공유된다. 합의 메시지를 수신한 이후 또는 합의 결과를 생성한 이후, 노드 내의 임의의 서버는 합의 메시지 또는 합의 결과를 데이터베이스에 저장한다. 그 다음, 서버는, 데이터베이스로부터, 합의 프로시저를 수행하는 데 필요한 합의 데이터를 획득할 수 있다. 합의 데이터는, 다른 노드 내의 서버로부터 서버에 의해 수신되는 합의 메시지, 서버에 의해 생성되는 합의 결과, 클라이언트에 의해 전송되며 합의 프로시저를 트리거할 수 있는 서비스 요청, 등등을 포함할 수 있다.
여기에서, 합의 데이터를 데이터베이스에 저장하는 것은, 합의 데이터가 노드 내의 모든 서버에게 이용 가능한 것을 보장한다는 것을 주목할 가치가 있다. 즉, 제1 서버가 결함이 있는 경우, 비록 제1 서버가 합의에 계속 참여할 수 없더라도, 노드 내의 제2 서버는 데이터베이스에 저장되는 합의 데이터에 기초하여 결함이 있는 서버 대신 합의를 실행할 수 있다.
S202. 합의 프로시저 이전에 또는 합의 프로시저 동안 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 제2 서버는, 제1 서버 대신, 데이터베이스로부터 합의 데이터를 획득하고, 합의 데이터에 기초하여 합의 프로시저를 실행하여 합의 결과를 생성한다.
실제 실행 동안, 합의에 참여 중에 있는 제1 서버는 결함이 있을 수 있고(예를 들면, 고장날 수도 있거나 또는 재시작될 수도 있음), 실패가 랜덤한 경우에 발생할 수도 있지만, 그러나, 합의 프로시저의 구현예는, 제1 서버가 합의 프로시저 이전에 결함이 있는지 또는 합의 프로시저 동안에 결함이 있는지의 여부와 무관하게 영향을 받는다. 이 경우, 합의 프로시저가 영향을 받지 않는 것을 보장하기 위해, 블록체인 노드에서 정상적으로 운영되고 있는 제2 서버가 결함이 있는 제1 서버 대신 합의를 실행할 수 있다.
제1 서버가 결함이 있고 합의를 계속해서 수행할 수 없기 때문에. 따라서, 제2 서버는 제1 서버 대신 합의 메시지를 수신할 수 있고, 원래는 제1 서버가 참여 중에 있는 합의 프로시저에 참여할 수 있다.
상기에서 설명되는 바와 같이, 노드 내의 임의의 서버는 데이터베이스에 합의 데이터를 저장하고, 그 결과, 제2 서버는, 결함이 있는 제1 서버 대신 합의를 실행하기 위해, 그리고 또한 대응하는 합의 결과를 생성하기 위해, 합의 프로시저에서 필요로 되는 합의 데이터를 데이터베이스에서 검색하여 합의 데이터를 획득할 수 있다.
명백하게, 정상적으로 운영되고 있는 서버는 결함이 있는 서버 대신에 합의를 실행하고, 그 결과, 합의 프로시저가 영향을 받지 않는 것이 보장된다.
S203. 제2 서버는 합의 결과를 데이터베이스에 저장한다.
본 출원의 이러한 구현예에서, 제1 서버 대신에 합의를 실행하는 제2 서버는 또한, 본 출원의 데이터 저장 메커니즘에 기초하여, 합의 결과를 합의 데이터의 타입으로서 데이터베이스에 저장한다.
앞선 단계에 따르면, 블록체인 노드 내의 각각의 서버에 대해, 소정의 합의 프로시저에 참여 중에 있는 서버는, 상이한 합의 단계에서 합의 메시지를 또는 현재의 단계에서 서버에 의해 생성되는 합의 결과를 "공개적으로" 저장한다. 다시 말하면, 서버는, 블록체인 노드의 데이터베이스에, 상이한 합의 단계에서 합의 메시지를 저장하거나 또는 현재의 단계에서 서버에 의해 생성되는 합의 결과를 저장하고, 데이터베이스는 블록체인 노드 내의 모든 서버에 대해 사용될 수 있다. 그러한 만큼, 소정 라운드의 합의에 참여 중에 있는 서버가 결함이 있는 경우, 예를 들면, 오프라인이거나 또는 다시 시작되는 경우, 서버의 합의 데이터는 블록체인 노드 내의 다른 서버에 의해 사용될 수 있고, 다른 서버는 결함이 있는 서버 대신 대응하는 합의 프로시저를 계속 실행할 수 있다.
명백하게, 현존하는 기술과 비교하여, 노드 내의 각각의 서버가 노드의 데이터베이스에 합의 데이터를 저장하는 방법에서, 소정의 서버가 결함이 있는 경우라도, 정상적으로 운영되고 있는 서버가 데이터베이스로부터 대응하는 합의 데이터를 획득하여 결함이 있는 서버 대신 합의를 완료할 수 있다. 그것은 합의 프로시저의 정상적인 운영을 보장하고, 합의 프로시저의 성공률을 소정의 정도까지 향상시킬 수 있고 동시에 합의 재개시 횟수가 감소되고, 그에 의해 블록체인의 서비스 프로세싱 효율성을 향상시킬 수 있다.
합의 프로시저 동안, 노드 내의 임의의 서버가, 동일한 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 합의 메시지를 수신한다는 것을 주목할 가치가 있다. 다른 디바이스는, 합의 프로시저에 참여 중에 있는 다른 노드 및/또는 클라이언트를 포함하지만, 그러나 이들로 제한되지는 않는다. 합의 메시지는, 클라이언트에 의해 전송되며 합의를 트리거할 수 있는 서비스 요청을 포함할 수 있거나, 또는 합의 프로시저에서 다른 노드에 의해 전송되는 합의 데이터를 포함할 수 있다.
명백하게, 소정의 합의 프로시저의 경우, 제1 서버가 결함이 있으면, 제1 서버의 합의 프로시저에 참여하기 위해, 제2 서버는 제1 서버 대신 합의 메시지를 수신한다.
따라서, 합의 프로시저 이전에 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 제2 서버가, 제1 서버 대신, 데이터베이스로부터 합의 데이터를 획득하는 것은 다음의 것을 포함할 수 있다: 합의 프로시저 이전에 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 제1 서버 대신 제2 서버에 의해, 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 합의 메시지를 수신하는 것, 및 합의 메시지에 기초하여 데이터베이스로부터 합의 메시지에 대응하는 합의 데이터를 획득하는 것.
또한, 본 출원의 구현예에서, 재시도 메커니즘이 존재한다. 구체적으로는, 합의 프로시저에 참여 중에 있는 다른 디바이스가 소정의 합의 메시지 또는 서비스 요청을 전송한 이후, 다른 디바이스가 명시된 시간 내에 피어 엔드(peer end)로부터 어떠한 응답도 수신하지 않으면, 다른 디바이스는 동일한 합의 메시지 또는 서비스 요청을 재전송한다. 합의 프로시저 동안 제1 서버가 결함이 있으면, 제1 서버가 명시된 시간에 다른 디바이스에 응답할 수 없다는 것을 알 수 있다.
따라서, 합의 프로시저 동안 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 제2 서버는, 제1 서버 대신, 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 합의 메시지를 수신하고, 합의 메시지에 기초하여 데이터베이스로부터 합의 메시지에 대응하는 합의 데이터를 획득한다.
제2 서버는 일반적으로 합의 메시지 내의 대응하는 식별자에 기초하여 데이터베이스로부터 합의 데이터를 획득한다. 하기에서는, 데이터베이스로부터 합의 데이터를 획득하는 프로세스를 설명한다.
PBFT 기반 합의 프로시저 동안, 하나의 서비스 요청이 하나의 합의 프로시저에 대응하고, 클라이언트로부터 서비스 요청을 수신하는 노드(마스터 노드로 또한 칭해짐)는 서비스 요청에 번호를 매긴다(예를 들면, 인덱싱한다). 다시 말하면, 서비스 요청과 관련되는 번호가 하나의 합의 프로시저에 고유하게 대응할 수 있다.
구체적으로, 노드 내의 임의의 서버가 참여 중에 있는 소정의 합의 프로시저에서, 합의 프로시저에서의 서비스 요청의 번호(즉, 서비스 요청 식별자)가 하나의 합의 프로시저를 고유하게 식별할 수 있다. 서비스 요청과 관련되는 번호는, 노드 내의 다른 서버가 참여 중에 있는 합의 프로시저로부터 합의 프로시저를 구별하기 위해 사용될 수 있다. 따라서, 서버가 소정의 서비스 요청과 관련되는 번호를 전달하는 합의 메시지를 수신하면, 서버는 서비스 요청 번호에 기초하여 데이터베이스로부터 동일한 서비스 요청 번호를 갖는 합의 데이터를 획득할 수 있다(획득된 합의 데이터 및 합의 메시지는 동일한 합의 프로시저에 속한다).
예를 들면, 합의 프로시저에서, 합의 메시지의 포맷은 다음과 같을 수 있다: <합의 단계 식별자, 뷰 번호, 서비스 요청 번호, 및 서비스 요청 다이제스트>. 서버가 소정의 합의 메시지 <커밋, v, n, D(m)>을 수신한다는 것이 가정되는데, 여기서, 커밋은 노드가 커밋 단계에 진입했다는 것을 나타내고, v는 뷰 번호를 나타내고, n은 서비스 요청과 관련되는 번호를 나타내고, D(m)은 서비스 요청에 대한, 통지 메시지를 전송하는 노드의 서명을 나타낸다. 이 경우, 서버는 번호 "n"에 기초하여 번호 "n"에 대응하는 모든 합의 데이터를 데이터베이스에서 검색할 수 있다.
앞선 설명에 기초하여, 데이터베이스로부터 제2 서버에 의해, 합의 메시지에 대응하는 합의 데이터를 획득하는 프로세스는 다음과 같다: 제2 서버가 합의 메시지에 포함되는 서비스 요청 식별자에 기초하여, 식별자에 대응하는 합의 데이터를 데이터베이스에서 검색하고, 그 합의 데이터를 획득한다.
앞선 내용 외에, 실제로, 합의 메시지가 결함이 있는 제1 서버로 전송되는 것을 방지하기 위해, 본 출원의 이러한 구현예에서, 합의 메시지는 노드에서 게이트웨이를 사용하는 것에 의해 스케줄링될 수 있다. 즉, 블록체인 노드는 게이트웨이를 더 포함한다. 이 경우, 노드의 아키텍쳐가 도 2d에서 도시될 수 있다. 게이트웨이는 노드 내의 서버에 대한 합의 메시지를 스케줄링하는 것을 담당한다는 것을 알 수 있다. 일단 제1 서버가 결함이 있으면, 게이트웨이는 결함이 있는 제1 서버로 합의 메시지를 전송하지 않는다; 대신, 합의 메시지를 정상적으로 운영되고 있는 제2 서버로 전송한다.
따라서, 구체적으로, 제2 서버의 경우, 합의 메시지를 수신하는 프로세스는 다음과 같을 수 있다:
게이트웨이는, 합의 프로시저 이전에 제1 서버가 결함이 있다는 것을 게이트웨이가 결정하는 경우, 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 수신된 합의 메시지를 정상적으로 운영되고 있는 제2 서버로 포워딩한다. 이 경우, 제2 서버는, 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되며 게이트웨이에 의해 포워딩되는 합의 메시지를 수신한다.
또한, 게이트웨이는, 합의 프로시저 동안 제1 서버가 결함이 있다는 것을 게이트웨이가 결정하는 경우, 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 수신된 합의 메시지를 정상적으로 운영되고 있는 제2 서버로 포워딩한다. 상응하여, 제2 서버는 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하며 게이트웨이에 의해 포워딩되는 합의 메시지를 수신한다.
본 출원의 이러한 구현예에서, 게이트웨이는 합의 메시지를 노드 내의 정상적인 제2 서버로 포워딩한다는 것이 이해될 수 있다. 다시 말하면, 게이트웨이는 결함이 있는 서버 및 노드에서 정상적으로 계속 운영되는 서버를 알 필요가 있다.
본 출원의 이러한 구현예에서, 노드 내의 각각의 서버는, 하트비트 메커니즘을 사용하는 것에 의해 게이트웨이와 통신할 수 있고, 그 결과, 게이트웨이는 각각의 서버의 동작 상태를 알 수 있다. 즉, 게이트웨이는 다음의 방법으로 제1 서버의 동작 상태 및 제2 서버의 동작 상태를 결정한다: 게이트웨이에 의해, 미리 결정된 기간에 기초하여 제1 서버 및 제2 서버에 의해 게이트웨이로 전송되는 동작 상태 메시지를 수신하는 것; 게이트웨이에 의해, 동작 상태 메시지에 기초하여 제1 서버의 동작 상태 및 제2 서버의 동작 상태를 결정하는 것.
즉, 게이트웨이가 주기적인 동작 상태 메시지를 수신할 수 있다면, 게이트웨이는 동작 상태 메시지를 전송하는 서버가 정상적으로 동작한다는 것을 결정할 수 있고; 게이트웨이가 소정의 시간 내에 소정의 서버로부터 어떠한 동작 상태 메시지도 수신하지 않으면, 게이트웨이는 서버가 결함이 있다는 것을 결정할 수 있다.
하기에서는 설명을 위해 애플리케이션 인스턴스를 사용한다.
예를 들면, 도 3a에서 도시되는 바와 같이, 노드 1의 서버(11) 및 노드 2의 서버(21) 둘 모두가 소정의 합의 프로시저에 참여한다는 것이 가정된다(도 3a는, 두 서버가 동일한 합의 프로시저에 있다는 것을 회색으로 도시한다). 서버(21)가 오프라인이다는 것이 또한 가정된다(즉, 노드 2에서 서버(21)는 제1 서버이다). 이 경우, 서버(11)는 소정의 합의 메시지를 서버(21)로 전송한다. 명백하게, 서버(21)가 오프라인이기 때문에, 서버(21)은 어떠한 피드백도 제공하지 않는다. 이 경우, 시간의 특정한 기간을 대기한 이후, 서버(11)는 재시도를 개시한다(재시도는 노드 1에 의해 개시되는 재시도로서 또한 간주될 수 있다), 다시 말하면, 합의 메시지를 재전송한다. 노드 1이 전송하려고 재시도하는 합의 메시지를 노드 2의 게이트웨이가 수신한 이후, 노드 1의 재시도를 프로세싱하기 위해, 게이트웨이는 노드 2의 내부에서 정상적으로 동작하는 소정의 서버를 선택한다. 도 3b에서 도시되는 바와 같이, 이 예에서, 노드 2의 서버(22)가 선택된다(즉, 서버(22)는 제2 서버이다). 즉, 게이트웨이는 노드 1이 전송하려고 재시도하는 합의 메시지를 서버(22)로 포워딩하고, 서버(22)는 서버(21) 대신 합의 프로시저를 실행한다.
또한, 제2 서버에 의해, 합의 데이터를 서버에 저장하는 프로세스의 경우, 본 출원의 이러한 구현예의 한 방법에서, 제2 서버는 합의 메시지를 수신한 이후 수신된 합의 메시지(합의 메시지는 합의 데이터의 한 타입으로서 간주될 수 있음)를 데이터베이스에 즉시 저장할 수 있고, 합의 프로시저를 통해 합의 결과를 생성한 이후 합의 메시지에 대응하는 합의 결과(합의 결과도 또한 합의 데이터의 한 타입으로서 간주될 수 있음)를 데이터베이스에 저장할 수 있다.
또한, 본 출원의 이러한 구현예의 다른 방법에서, 합의 메시지를 수신한 이후, 제2 서버는 전술한 프로세스를 통해 합의 결과가 생성되기를 대기하고, 그 다음, 합의 결과와 함께 합의 메시지를 데이터베이스에 저장한다.
앞선 두 가지 저장 방법은 본 출원에 대해 어떠한 제한도 구성하지 않는다.
본 출원의 구현예에서 제공되는 블록체인 기반 합의 방법이 상기에서 설명된다. 동일한 아이디어에 기초하여, 도 4에서 도시되는 바와 같이, 본 출원의 구현예는 블록체인 기반 합의 디바이스를 또한 제공한다. 하나의 블록체인 노드는 복수의 서버 및 적어도 하나의 데이터베이스를 포함한다. 데이터베이스는 합의 프로시저를 수행하는 데 필요한 합의 데이터를 저장하는데, 합의 데이터는 합의 프로시저 동안 제1 서버 및 제2 서버에 의해 호출된다.
제1 서버는, 합의 프로시저 이전에 또는 합의 프로시저 동안 결함이 있다.
블록체인 기반 합의 디바이스는 적어도 수신 모듈(401), 획득 모듈(402), 합의 실행 모듈(403), 및 저장 모듈(404)을 포함한다.
획득 모듈(402)은 데이터베이스로부터 합의 데이터를 획득하도록 구성된다.
합의 실행 모듈(403)은 합의 데이터에 기초하여 합의 프로시저를 실행하여 합의 결과를 생성하도록 구성된다.
저장 모듈(404)은 합의 결과를 데이터베이스에 저장하도록 구성된다.
합의 프로시저 이전에 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 수신 모듈(401)은, 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 합의 메시지를 수신하도록 구성되고, 획득 모듈은, 합의 메시지에 기초하여 합의 메시지에 대응하는 합의 데이터를 데이터베이스로부터 획득하도록 구성된다.
합의 프로시저 동안 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 수신 모듈(401)은, 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 합의 메시지를 수신하도록 구성되고, 획득 모듈은 합의 메시지에 기초하여 합의 메시지에 대응하는 합의 데이터를 데이터베이스로부터 획득하도록 구성된다.
다른 디바이스는, 다른 디바이스가 합의 메시지를 전송하지만 그러나 명시된 시간 이후 어떠한 응답도 수신하지 않는 경우 합의 메시지를 전송하려고 재시도한다.
합의 메시지는 서비스 요청 식별자를 포함한다. 획득 모듈(402)은, 합의 메시지에 포함되는 서비스 요청 식별자에 기초하여, 식별자에 대응하는 합의 데이터를 데이터베이스에서 검색하도록 그리고 식별자에 대응하는 합의 데이터를 획득하도록 구성된다.
또한, 블록체인 노드는 게이트웨이를 더 포함할 수 있다. 이 경우, 디바이스는 적어도 게이트웨이 수신 모듈(405), 동작 상태 결정 모듈(406), 및 포워딩 모듈(407)을 더 포함한다.
합의 프로시저 이전에 제1 서버가 결함이 있다는 것을 동작 상태 결정 모듈(406)이 결정하는 경우, 포워딩 모듈(407)은 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 수신된 합의 메시지를 정상적으로 운영되고 있는 제2 서버로 포워딩하도록 구성된다.
합의 프로시저 동안 제1 서버가 결함이 있다는 것을 동작 상태 결정 모듈(406)이 결정하는 경우, 포워딩 모듈(407)은 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 수신된 합의 메시지를 정상적으로 운영되고 있는 제2 서버로 포워딩하도록 구성된다.
게이트웨이 수신 모듈(405)은 미리 결정된 기간에 기초하여 제1 서버 및 제2 서버에 의해 게이트웨이로 전송되는 동작 상태 메시지를 수신하도록 구성된다.
동작 상태 결정 모듈(406)은, 동작 상태 메시지에 기초하여 제1 서버의 동작 상태 및 제2 서버의 동작 상태를 결정하도록 구성된다.
1990년대에는, 기술적 향상이 하드웨어 향상(예를 들면, 다이오드, 트랜지스터, 또는 스위치와 같은 회로 구조체의 향상)인지 또는 소프트웨어 향상(방법 프로시저에 대한 향상)인지의 여부가 명백히 구별될 수 있었다. 그러나, 기술이 발전함에 따라, 많은 방법 프로시저에 대한 현재의 향상은 하드웨어 회로 구조체의 직접적인 향상으로서 간주될 수 있다. 거의 모든 설계자는, 대응하는 하드웨어 회로 구조체를 획득하기 위해, 향상된 방법 프로시저를 하드웨어 회로에 프로그래밍한다. 따라서, 하드웨어 엔티티 모듈을 사용하는 것에 의해 방법 프로시저가 향상될 수 있다. 예를 들면, 프로그래머블 논리 디바이스(programmable logic device; PLD)(예를 들면, 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA))는 그러한 집적 회로이고, PLD의 논리적 기능은 디바이스 프로그래밍을 통해 유저에 의해 결정된다. 설계자는, 칩 제조자에게 주문형 집적 회로 칩을 설계 및 생산할 것을 요청하지 않고도 디지털 시스템을 PLD에 "통합"하는 프로그래밍을 수행한다. 또한, 현재, 집적 회로 칩을 수동으로 제조하는 대신, 이러한 타입의 프로그래밍은 대부분 "논리 컴파일러(logic compiler)"소프트웨어를 사용하여 구현된다. "논리 컴파일러" 소프트웨어는 프로그램을 개발하고 작성하기 위해 사용되는 소프트웨어 컴파일러와 유사하다. 원래의 코드는 컴파일되기 이전에 특정한 프로그래밍 언어로 작성될 필요가 있다. 언어는 하드웨어 기술 언어(hardware description language; HDL)로 칭해진다. 어드밴스드 불린 표현 언어(Advanced Boolean Expression Language; ABEL), 알테라 하드웨어 기술 언어(Altera Hardware Description Language; AHDL), 컨플루언스(Confluence), 코넬대 프로그래밍 언어(Cornell University Programming Language; CUPL), HDCal, 자바 하드웨어 기술 언어(Java Hardware Description Language; JHDL), Lava(라바), Lola(롤라), MyHDL, PALASM, 및 루비 하드웨어 기술 언어(Ruby Hardware Description Language; RHDL)와 같은 많은 HDL이 존재한다. 현재, 초고속 집적 회로 하드웨어 기술 언어(very-high-speed integrated circuit hardware description language; VHDL) 및 Verilog가 가장 일반적으로 사용된다. 기술 분야의 숙련된 자는 또한, 방법 프로시저가 전술한 몇몇 하드웨어 기술 언어를 사용하는 것에 의해 논리적으로 프로그래밍되고 집적 회로 안으로 프로그래밍되면, 논리적 방법 프로시저를 구현하는 하드웨어 회로가 쉽게 획득될 수 있다는 것을 이해해야 한다.
컨트롤러는 임의의 적절한 방식으로 구현될 수 있다. 예를 들면, 컨트롤러는 마이크로프로세서, 프로세서, 마이크로프로세서 또는 프로세서에 의해 실행될 수 있는 컴퓨터 판독 가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)를 저장하는 컴퓨터 판독 가능 매체, 논리 게이트, 스위치, 주문형 집적 회로(application-specific integrated circuit; ASIC), 프로그래머블 논리 컨트롤러, 또는 내장형 마이크로프로세서의 형태일 수 있다. 컨트롤러의 예는 다음의 마이크로프로세서를 포함하지만 그러나 이들로 제한되지는 않는다: ARC 625D, Atmel(아트멜) AT91SAM, Microchip(마이크로칩) PIC18F26K20, 및 Silicone Labs(실리콘 랩스) C8051F320. 메모리 컨트롤러는, 대안적으로, 메모리의 제어 논리의 일부로서 구현될 수 있다. 기술 분야의 숙련된 자는 또한, 컴퓨터 판독 가능 프로그램 코드를 사용하는 것에 의해 컨트롤러를 구현하는 것 외에, 방법 단계는, 논리 게이트, 스위치, 주문형 집적 회로, 프로그래밍 가능 논리 컨트롤러, 내장형 마이크로컨트롤러, 등등의 형태로 컨트롤러가 동일한 기능을 구현하는 것을 가능하게 하도록 논리적으로 프로그래밍될 수 있다는 것을 알고 있다. 따라서, 컨트롤러는 하드웨어 컴포넌트로서 간주될 수 있고, 컨트롤러에 포함되며 다양한 기능을 구현하도록 구성되는 디바이스도 하드웨어 컴포넌트에서 한 구조체로서 또한 간주될 수 있다. 대안적으로, 다양한 기능을 구현하도록 구성되는 디바이스는, 심지어, 방법을 구현하기 위한 소프트웨어 모듈 및 하드웨어 컴포넌트에서의 구조체 둘 모두로서 간주될 수 있다.
앞선 구현예에서 예시되는 시스템, 디바이스, 모듈, 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하는 것에 의해, 또는 소정의 기능을 갖는 제품을 사용하는 것에 의해 구체적으로 구현될 수 있다. 통상적인 구현 디바이스는 컴퓨터이다. 구체적으로, 컴퓨터는, 예를 들면, 퍼스널 컴퓨터, 랩탑 컴퓨터, 셀룰러 전화, 카메라 폰, 스마트폰, 개인 휴대형 정보 단말(personal digital assistant), 미디어 플레이어, 내비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 또는 웨어러블 디바이스, 또는 이들 디바이스 중 임의의 것의 조합일 수 있다.
설명의 용이성을 위해, 앞선 디바이스는 디바이스를 기능에 기초하여 다양한 유닛으로 분할하는 것에 의해 설명된다. 물론, 본 출원이 구현될 때, 유닛의 기능은 하나 이상의 단편의 소프트웨어 및/또는 하드웨어에서 구현될 수 있다.
기술 분야의 숙련된 자는, 본 개시의 구현예가, 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있다는 것을 이해해야 한다. 따라서, 본 개시는 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어 및 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 개시는, 컴퓨터 사용 가능 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능 저장 매체(자기 디스크 스토리지, CD-ROM, 광학 메모리, 등등을 포함하지만 그러나 이들로 제한되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 개시는, 본 개시의 구현예에 따른 방법, 디바이스(시스템), 및 컴퓨터 프로그램 제품의 플로우차트 및/또는 블록도를 참조하여 설명된다. 컴퓨터 프로그램 명령어는 플로우차트 및/또는 블록도 내의 각각의 프로세스 및/또는 각각의 블록 및 플로우차트 및/또는 블록도 내의 프로세스 및/또는 블록의 조합을 구현하기 위해 사용될 수 있다는 것을 주목할 가치가 있다. 이들 컴퓨터 프로그램 명령어는, 범용 컴퓨터, 전용 컴퓨터, 임베딩된 프로세서, 또는 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 제공되어 머신을 생성할 수 있고, 그 결과, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 의해 실행되는 명령어는, 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현하기 위한 디바이스를 생성한다.
컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스에게 특정한 방식으로 작동할 것을 지시할 수 있는 이들 컴퓨터 프로그램 명령어는, 대안적으로, 컴퓨터 판독 가능 메모리에 저장될 수 있고, 그 결과, 컴퓨터 판독 가능 메모리에 저장되는 명령어는 명령어 디바이스를 포함하는 아티팩트(artifact)를 생성한다. 명령어 디바이스는 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현한다.
이들 컴퓨터 프로그램 명령어는, 대안적으로, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스 상으로 로딩될 수 있고, 그 결과, 일련의 동작 및 단계가 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 수행되고, 그에 의해 컴퓨터 구현 프로세싱을 생성한다. 따라서, 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 실행되는 명령어는, 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현하기 위한 단계를 제공한다.
통상적인 구성에서, 컴퓨팅 디바이스는 하나 이상의 프로세서(CPU), 하나 이상의 입력/출력 인터페이스, 하나 이상의 네트워크 인터페이스, 및 하나 이상의 메모리를 포함한다.
메모리는, 컴퓨터 판독 가능 매체에서 비영구적 메모리, 랜덤 액세스 메모리(random access memory; RAM), 불휘발성 메모리, 및/또는 다른 형태의 메모리, 예를 들면, 리드 온리 메모리(read-only memory; ROM) 또는 플래시 메모리(플래시 RAM)를 포함할 수 있다. 메모리는 컴퓨터 판독 가능 매체의 한 예이다.
컴퓨터 판독 가능 매체는, 임의의 방법 또는 기술을 사용하는 것에 의해 정보를 저장할 수 있는, 영구적, 비영구적, 이동식, 및 비이동식 매체를 포함한다. 정보는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터일 수 있다. 컴퓨터 저장 매체의 예는, 파라미터 랜덤 액세스 메모리(parameter random access memory; PRAM), 정적 랜덤 액세스 메모리(static random access memory; SRAM), 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM), 다른 타입의 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 전기적으로 소거 가능한 프로그래머블 리드 온리 메모리(electrically erasable programmable read only memory; EEPROM), 플래시 메모리 또는 다른 메모리 기술, 컴팩트 디스크 리드 온리 메모리(compact disc read-only memory; CD-ROM), 디지털 다기능 디스크(digital versatile disc; DVD) 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 메모리 또는 다른 자기 스토리지 디바이스, 또는 컴퓨팅 디바이스가 액세스할 수 있는 정보를 저장하기 위해 사용될 수 있는 임의의 다른 비송신 매체를 포함하지만, 그러나 이들로 제한되는 것은 아니다. 본 명세서에서의 정의에 기초하여, 컴퓨터 판독 가능 매체는 변조된 데이터 신호 및 캐리어와 같은 일시적 컴퓨터 판독 가능 매체(임시 매체)를 포함하지 않는다.
용어 "포함한다(include)", "포함한다(include)", 또는 그의 임의의 다른 변형어는 비 배타적인 포함을 포괄하도록 의도되며, 그 결과 엘리먼트의 리스트를 포함하는 프로세스, 방법, 제품, 또는 디바이스는 그들 엘리먼트를 포함할 뿐만 아니라, 명시적으로 열거되지 않은 다른 엘리먼트도 또한 포함하거나, 또는 그러한 프로세스, 방법, 제품 또는 디바이스에 내재하는 엘리먼트를 더 포함한다는 것을 또한 주목할 가치가 있다. 더 많은 제약이 없으면, "includes a ...(...을 포함하는)" 앞에 오는 엘리먼트는 그 엘리먼트를 포함하는 프로세스, 방법, 제품 또는 디바이스에서 추가적인 동일한 엘리먼트의 존재를 배제하지는 않는다.
기술 분야의 숙련된 자는, 본 출원의 구현예가, 방법, 시스템, 또는, 컴퓨터 프로그램 제품으로서 제공될 수 있다는 것을 이해해야 한다. 따라서, 본 출원은 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어와 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 출원은, 컴퓨터 사용 가능 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능 저장 매체(자기 디스크 스토리지, CD-ROM, 광학 메모리, 등등을 포함하지만 그러나 이들로 제한되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 출원은, 컴퓨터에 의해 실행되는 컴퓨터 실행 가능 명령어, 예를 들면, 프로그램 모듈의 일반적인 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정한 작업을 실행하는 또는 특정한 추상 데이터 타입을 구현하기 위한 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조, 등등을 포함한다. 본 출원은 분산 컴퓨팅 환경에서도 대안적으로 실시될 수 있다. 이들 분산 컴퓨팅 환경에서, 작업은, 통신 네트워크를 통해 연결되는 원격 프로세싱 디바이스에 의해 수행된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은, 스토리지 디바이스를 비롯한, 로컬 및 원격 컴퓨터 저장 매체 둘 모두에 위치될 수 있다.
본 명세서에서의 구현예는 점진적인 방식으로 모두 설명된다. 구현예의 동일하거나 유사한 부분에 대해서는, 구현예에 대한 상호 참조가 이루어질 수 있다. 각각의 구현예는 다른 구현예와의 차이점에 중점을 둔다. 특히, 시스템 구현예는 기본적으로 방법 구현예와 유사하고, 따라서, 간략하게 설명된다. 관련 부분에 대해서는, 방법 구현예의 몇몇 설명에 대한 참조가 이루어질 수 있다.
앞선 설명은 본 출원의 구현예에 불과하며, 본 출원을 제한하도록 의도되는 것은 아니다. 기술 분야의 숙련된 자는 본 출원에 대해 다양한 수정 및 변경을 가할 수 있다. 본 출원의 취지 및 원리를 벗어나지 않으면서 이루어지는 임의의 수정예, 등가적 대체예, 개선예, 등등은, 본 출원의 청구범위의 범위 내에 속할 것이다.

Claims (10)

  1. 하나의 블록체인 노드가 제1 서버, 제2 서버 및 적어도 하나의 데이터베이스를 포함하는 블록체인 기반 합의 방법(blockchain-based consensus method)으로서,
    데이터베이스에 의해, 합의 프로시저(consensus procedure)를 수행하는 데 필요한 합의 데이터 - 상기 합의 데이터는 상기 합의 프로시저 동안 상기 제1 서버 및 상기 제2 서버에 의해 호출됨 - 를 저장하는 단계;
    상기 제1 서버 대신 상기 제2 서버에 의해, 상기 데이터베이스로부터 합의 데이터를 획득하는 단계;
    상기 합의 프로시저 이전에 또는 상기 합의 프로시저 동안 상기 제1 서버가 결함(fault)이 있다는 것을 결정하는 것에 응답하여, 상기 합의 데이터에 기초하여 상기 합의 프로시저를 실행하여 합의 결과를 생성하는 단계; 및
    상기 제2 서버에 의해, 상기 합의 결과를 상기 데이터베이스에 저장하는 단계를 포함하는, 블록체인 기반 합의 방법.
  2. 제1항에 있어서,
    상기 제1 서버 대신 상기 제2 서버에 의해, 상기 합의 프로시저 이전에 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여 상기 데이터베이스로부터 합의 데이터를 획득하는 단계는 구체적으로:
    상기 제1 서버 대신 상기 제2 서버에 의해, 상기 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 합의 메시지를 수신하는 단계; 및
    상기 합의 프로시저 이전에 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 메시지에 기초하여 상기 데이터베이스로부터 상기 합의 메시지에 대응하는 합의 데이터를 획득하는 단계를 포함하고,
    상기 제1 서버 대신 상기 제2 서버에 의해, 상기 합의 프로시저 동안 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여 상기 데이터베이스로부터 합의 데이터를 획득하는 단계는 구체적으로:
    상기 제1 서버 대신 상기 제2 서버에 의해, 상기 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 합의 메시지를 수신하는 단계; 및
    상기 합의 프로시저 동안 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 메시지에 기초하여 상기 데이터베이스로부터 상기 합의 메시지에 대응하는 합의 데이터를 획득하는 단계를 포함하되,
    상기 다른 디바이스는, 상기 다른 디바이스가 상기 합의 메시지를 전송하지만 그러나 명시된 시간 이후 어떠한 응답도 수신하지 않는 경우 상기 합의 메시지를 전송하려고 재시도하는, 블록체인 기반 합의 방법.
  3. 제2항에 있어서,
    상기 합의 메시지는 서비스 요청 식별자를 포함하고;
    상기 합의 메시지에 기초하여 상기 데이터베이스로부터 상기 합의 메시지에 대응하는 상기 합의 데이터를 획득하는 단계는 구체적으로:
    상기 합의 메시지에 포함되는 상기 서비스 요청 식별자에 기초하여 상기 제2 서버에 의해, 상기 식별자에 대응하는 합의 데이터를 상기 데이터베이스에서 검색하여 상기 식별자에 대응하는 상기 합의 데이터를 획득하는 단계를 포함하는, 블록체인 기반 합의 방법.
  4. 제2항에 있어서,
    상기 블록체인 노드는 게이트웨이를 더 포함하고;
    상기 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 합의 메시지를 수신하는 단계는 구체적으로:
    상기 합의 프로시저 이전에 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 프로시저에 참여 중에 있는 상기 다른 디바이스에 의해 전송되는 수신된 합의 메시지를, 게이트웨이에 의해 정상적으로 운영되고 있는 상기 제2 서버로 포워딩하는 단계; 및
    상기 제2 서버에 의해, 상기 합의 프로시저에 참여 중에 있는 상기 다른 디바이스에 의해 전송되며 상기 게이트웨이에 의해 포워딩되는 상기 합의 메시지를 수신하는 단계를 포함하고,
    상기 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 합의 메시지를 수신하는 단계는 구체적으로:
    상기 합의 프로시저 동안 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 프로시저에 참여 중에 있는 상기 다른 디바이스가 전송하려고 재시도하는 수신된 합의 메시지를, 게이트웨이에 의해 정상적으로 운영되고 있는 상기 제2 서버로 포워딩하는 단계; 및
    상기 제2 서버에 의해, 상기 합의 프로시저에 참여 중에 있는 상기 다른 디바이스가 전송하려고 재시도하며 상기 게이트웨이에 의해 포워딩되는 상기 합의 메시지를 수신하는 단계를 포함하는, 블록체인 기반 합의 방법.
  5. 제4항에 있어서,
    상기 게이트웨이는 상기 제1 서버의 동작 상태 및 상기 제2 서버의 동작 상태를:
    상기 게이트웨이에 의해, 미리 결정된 기간에 기초하여 상기 제1 서버 및 상기 제2 서버에 의해 상기 게이트웨이로 전송되는 동작 상태 메시지를 수신하는 단계; 및
    상기 게이트웨이에 의해, 상기 동작 상태 메시지에 기초하여 상기 제1 서버의 상기 동작 상태 및 상기 제2 서버의 상기 동작 상태를 결정하는 단계를 포함하는 방법으로 결정하는, 블록체인 기반 합의 방법.
  6. 하나의 블록체인 노드가 제1 서버, 제2 서버, 및 적어도 하나의 데이터베이스를 포함하는 블록체인 기반 합의 디바이스로서,
    상기 데이터베이스는 합의 프로시저를 수행하는 데 필요한 합의 데이터를 저장하고, 상기 합의 데이터는 상기 합의 프로시저 동안 상기 제1 서버 및 상기 제2 서버에 의해 호출되며;
    상기 제1 서버는 상기 합의 프로시저 이전에 또는 상기 합의 프로시저 동안 결함이 있고;
    상기 디바이스는:
    상기 데이터베이스로부터 합의 데이터를 획득하도록 구성되는 획득 모듈;
    상기 합의 데이터에 기초하여 상기 합의 프로시저를 실행하여 합의 결과를 생성하도록 구성되는 합의 실행 모듈; 및
    상기 합의 결과를 상기 데이터베이스에 저장하도록 구성되는 저장 모듈을 포함하는, 블록체인 기반 합의 디바이스.
  7. 제6항에 있어서,
    상기 디바이스는 수신 모듈을 더 포함하고;
    상기 수신 모듈은, 상기 합의 프로시저에 참여 중에 있는 다른 디바이스에 의해 전송되는 합의 메시지를 수신하도록 구성되고;
    상기 획득 모듈은, 상기 합의 프로시저 이전에 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 메시지에 기초하여 상기 데이터베이스로부터 상기 합의 메시지에 대응하는 합의 데이터를 획득하도록 구성되고;
    상기 수신 모듈은 상기 합의 프로시저에 참여 중에 있는 다른 디바이스가 전송하려고 재시도하는 합의 메시지를 수신하도록 구성되고;
    상기 획득 모듈은, 상기 합의 프로시저 동안 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 메시지에 기초하여 상기 데이터베이스로부터 상기 합의 메시지에 대응하는 합의 데이터를 획득하도록 구성되고,
    상기 다른 디바이스는, 상기 다른 디바이스가 상기 합의 메시지를 전송하지만 그러나 명시된 시간 이후 어떠한 응답도 수신하지 않는다는 것을 결정하는 것에 응답하여, 상기 합의 메시지를 전송하려고 재시도하는, 블록체인 기반 합의 디바이스.
  8. 제7항에 있어서,
    상기 합의 메시지는 서비스 요청 식별자를 포함하고;
    상기 획득 모듈은, 상기 합의 메시지에 포함되는 상기 서비스 요청 식별자에 기초하여, 상기 식별자에 대응하는 합의 데이터를 상기 데이터베이스에서 검색하여 상기 식별자에 대응하는 합의 데이터를 획득하도록 구성되는, 블록체인 기반 합의 디바이스.
  9. 제8항에 있어서,
    상기 블록체인 노드는 게이트웨이를 더 포함하고;
    상기 디바이스는 동작 상태 결정 모듈 및 포워딩 모듈을 더 포함하고;
    상기 포워딩 모듈은, 상기 합의 프로시저 이전에 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 프로시저에 참여 중에 있는 상기 다른 디바이스에 의해 전송되는 상기 수신된 합의 메시지를, 정상적으로 운영되고 있는 상기 제2 서버로 포워딩하도록 구성되고;
    상기 포워딩 모듈은, 상기 합의 프로시저 동안 상기 제1 서버가 결함이 있다는 것을 결정하는 것에 응답하여, 상기 합의 프로시저에 참여 중에 있는 상기 다른 디바이스가 전송하려고 재시도하는 상기 수신된 합의 메시지를, 정상적으로 운영되고 있는 상기 제2 서버로 포워딩하도록 구성되는, 블록체인 기반 합의 디바이스.
  10. 제9항에 있어서,
    상기 디바이스는 게이트웨이 수신 모듈을 더 포함하되, 상기 게이트웨이 수신 모듈은 미리 결정된 기간에 기초하여 상기 제1 서버 및 상기 제2 서버에 의해 상기 게이트웨이로 전송되는 동작 상태 메시지를 수신하도록 구성되고;
    상기 동작 상태 결정 모듈은 상기 동작 상태 메시지에 기초하여 상기 제1 서버의 동작 상태 및 상기 제2 서버의 동작 상태를 결정하도록 구성되는, 블록체인 기반 합의 디바이스.
KR1020197018653A 2017-03-28 2018-03-26 블록체인 기반 합의 방법 및 디바이스 KR102255724B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710190786.1A CN107368507B (zh) 2017-03-28 2017-03-28 一种基于区块链的共识方法及装置
CN201710190786.1 2017-03-28
PCT/CN2018/080513 WO2018177255A1 (zh) 2017-03-28 2018-03-26 一种基于区块链的共识方法及装置

Publications (2)

Publication Number Publication Date
KR20190099222A true KR20190099222A (ko) 2019-08-26
KR102255724B1 KR102255724B1 (ko) 2021-05-27

Family

ID=60304778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197018653A KR102255724B1 (ko) 2017-03-28 2018-03-26 블록체인 기반 합의 방법 및 디바이스

Country Status (15)

Country Link
US (2) US10642699B2 (ko)
EP (1) EP3547170B1 (ko)
JP (1) JP6756924B2 (ko)
KR (1) KR102255724B1 (ko)
CN (2) CN111327703B (ko)
AU (1) AU2018241568B2 (ko)
BR (1) BR112019013379B1 (ko)
CA (1) CA3048742C (ko)
MX (1) MX2019007808A (ko)
MY (1) MY192616A (ko)
PH (1) PH12019501519A1 (ko)
RU (1) RU2731331C1 (ko)
TW (1) TWI696083B (ko)
WO (1) WO2018177255A1 (ko)
ZA (1) ZA201904224B (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419225B2 (en) 2017-01-30 2019-09-17 Factom, Inc. Validating documents via blockchain
US10411897B2 (en) 2017-02-17 2019-09-10 Factom, Inc. Secret sharing via blockchains
US10817873B2 (en) 2017-03-22 2020-10-27 Factom, Inc. Auditing of electronic documents
CN111327703B (zh) 2017-03-28 2022-05-31 创新先进技术有限公司 一种基于区块链的共识方法及装置
CN110430064B (zh) * 2017-03-30 2020-12-04 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
US10685399B2 (en) 2017-03-31 2020-06-16 Factom, Inc. Due diligence in electronic documents
US10270599B2 (en) 2017-04-27 2019-04-23 Factom, Inc. Data reproducibility using blockchains
CN108111604B (zh) * 2017-12-21 2020-08-14 广州广电运通金融电子股份有限公司 区块链共识方法、装置和系统、标识信息处理方法和装置
CN108200208B (zh) * 2018-02-11 2021-01-05 南宁师范大学 基于云计算的物流区块链共识算法
CN108537525B (zh) 2018-03-09 2020-06-09 阿里巴巴集团控股有限公司 一种共识验证方法、装置及设备
CN108763302A (zh) * 2018-04-19 2018-11-06 深圳市网心科技有限公司 区块链共识处理方法、电子装置及计算机可读存储介质
CN108665363B (zh) * 2018-05-09 2021-08-03 合肥达朴汇联科技有限公司 一种区块链共识达成装置
US11134120B2 (en) 2018-05-18 2021-09-28 Inveniam Capital Partners, Inc. Load balancing in blockchain environments
US10783164B2 (en) * 2018-05-18 2020-09-22 Factom, Inc. Import and export in blockchain environments
US11170366B2 (en) 2018-05-18 2021-11-09 Inveniam Capital Partners, Inc. Private blockchain services
US20200042982A1 (en) 2018-08-06 2020-02-06 Factom Digital Contracts in Blockchain Environments
US11328290B2 (en) 2018-08-06 2022-05-10 Inveniam Capital Partners, Inc. Stable cryptocurrency coinage
CN109144781B (zh) * 2018-08-13 2021-06-18 浙商银行股份有限公司 一种提升基于区块链技术实现的应用系统单园区部署灾备能力的方法
CN110969527B (zh) * 2018-09-29 2023-02-24 北京天能博信息科技有限公司 一种区块链的数据处理方法及相关设备
BR112019008172B1 (pt) 2018-11-07 2022-01-25 Advanced New Technologies Co., Ltd Método implementado por computador para facilitar um processo de consenso em uma rede de protocolo de confiança baseada na tolerância a falhas bizantinas práticas, meio de armazenamento não transitório legível por computador e sistema
CN111291110A (zh) * 2018-12-06 2020-06-16 中国电信股份有限公司 基于区块链网络的共识方法和系统
CN110221938A (zh) * 2019-05-06 2019-09-10 深圳壹账通智能科技有限公司 电子装置、区块链共识的方法及存储介质
CN110266765B (zh) * 2019-05-21 2022-03-01 西安中星测控有限公司 一种基于区块链的物联网在线共识节点实时更新方法和装置
CN110492988B (zh) * 2019-07-03 2020-07-21 特斯联(北京)科技有限公司 一种多路并行复用的大数据系统及其处理方法
CN110336707A (zh) * 2019-08-07 2019-10-15 卓尔智联(武汉)研究院有限公司 区块链共识装置、方法及计算机可读存储介质
CN111104282B (zh) * 2019-11-26 2024-01-16 众安信息技术服务有限公司 一种基于区块链的节点处理方法和装置
CN111125131B (zh) * 2019-12-16 2023-06-06 武汉大学 一种具备状态缓冲能力的两级共识区块链系统及部署方法
CN111147261B (zh) * 2019-12-31 2022-07-12 南京可信区块链与算法经济研究院有限公司 在区块链中使用HotStuff共识算法的方法及系统
US11343075B2 (en) 2020-01-17 2022-05-24 Inveniam Capital Partners, Inc. RAM hashing in blockchain environments
CN115104111A (zh) * 2020-02-21 2022-09-23 松下电器(美国)知识产权公司 控制方法、控制装置及程序
CN111064813B (zh) * 2020-03-16 2020-06-30 支付宝(杭州)信息技术有限公司 在区块链共识处理时进行处理消息同步的方法及装置
CN111654415B (zh) * 2020-05-28 2021-09-10 腾讯科技(深圳)有限公司 基于区块链的信息处理方法、装置、设备及可读存储介质
CN111522822A (zh) 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种区块链共识方法、装置及电子设备
CN112286731A (zh) * 2020-07-03 2021-01-29 支付宝(杭州)信息技术有限公司 区块链共识节点的重启处理方法、共识节点及区块链系统
CN111522696B (zh) * 2020-07-03 2020-12-29 支付宝(杭州)信息技术有限公司 区块链共识节点的宕机处理方法、数据持久化方法及硬件
CN112100234B (zh) * 2020-08-12 2021-09-10 北京大学 基于随机共识的图式账本的内容寻址方法和系统
CN112564902A (zh) * 2020-12-09 2021-03-26 苏州市星际云通区块链科技有限公司 一种区块链上可验证随机函数的共识方法及其系统
CN112738178B (zh) * 2020-12-23 2023-04-07 北京米弘科技有限公司 区块链共识方法和装置
CN113254306B (zh) * 2021-05-10 2022-03-25 支付宝(杭州)信息技术有限公司 运行状态监控方法、装置、设备和存储介质
CN113067895B (zh) * 2021-06-02 2021-08-31 支付宝(杭州)信息技术有限公司 组建区块链子网的方法和区块链系统
CN113572140B (zh) * 2021-07-15 2024-04-12 国网上海市电力公司 基于可变共识机制的配网故障隔离指令传输方法和设备
CN114064343B (zh) * 2022-01-13 2022-04-08 北京溪塔科技有限公司 一种区块链的异常处置方法及装置
CN114640500B (zh) * 2022-02-14 2023-07-28 南京邮电大学 一种基于服务的联盟链高效共识方法
US11881980B2 (en) 2022-04-22 2024-01-23 Red Hat, Inc. Byzantine fault prevention in mesh networks
CN115471301B (zh) * 2022-11-11 2023-04-07 浙江云针信息科技有限公司 无人驾驶车辆去中心化派单方法及装置、存储介质和终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523355A (zh) * 2006-08-04 2009-09-02 多伦多证券交易所 故障切换系统和方法
US20160019125A1 (en) * 2014-07-17 2016-01-21 Cohesity, Inc. Dynamically changing members of a consensus group in a distributed self-healing coordination service
CN106060036A (zh) * 2016-05-26 2016-10-26 布比(北京)网络技术有限公司 去中心化共识方法及装置
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
CN106452785A (zh) * 2016-09-29 2017-02-22 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6215766B1 (en) * 1998-01-30 2001-04-10 Lucent Technologies Inc. Hierarchical rate control of receivers in a communication system transmitting layered video multicast data with retransmission (LVMR)
US9361311B2 (en) 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
TWI416901B (zh) 2005-11-30 2013-11-21 Ibm 故障容忍之異動處理系統
CN101394306B (zh) * 2008-07-08 2010-10-27 国电南瑞科技股份有限公司 一种双服务器系统的无缝切换方法
CN102724272B (zh) * 2011-12-30 2017-12-29 新奥特(北京)视频技术有限公司 一种电视台业务发布数据的备份方法
RU2510623C2 (ru) * 2012-04-19 2014-04-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ репликации информации в распределенных базах данных с конкурентным распределением потоков
US20150172412A1 (en) * 2012-07-06 2015-06-18 Cornell University Managing dependencies between operations in a distributed system
CN103220165B (zh) * 2013-03-20 2017-04-19 杭州华三通信技术有限公司 一种服务器主动宕机的处理方法和装置
US9553982B2 (en) * 2013-07-06 2017-01-24 Newvoicemedia, Ltd. System and methods for tamper proof interaction recording and timestamping
CN103744809B (zh) * 2013-12-23 2016-10-05 天泽信息产业股份有限公司 基于vrrp的车辆信息管理系统双机热备方法
US20150310476A1 (en) * 2014-04-24 2015-10-29 Elizabeth M. Gadwa System and method for attention based currency
US20160125403A1 (en) * 2014-04-28 2016-05-05 Chin-hao Hu Offline virtual currency transaction
US9436923B1 (en) * 2015-02-26 2016-09-06 Skuchain, Inc. Tracking unitization occurring in a supply chain
TWI676943B (zh) * 2015-05-06 2019-11-11 現代財富控股有限公司 加密貨幣的電子交易系統及其方法
US20170048209A1 (en) * 2015-07-14 2017-02-16 Fmr Llc Crypto Key Recovery and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US10268744B2 (en) * 2015-09-22 2019-04-23 Walmart Apollo, Llc System for maintaining consistency across a decentralized database cluster and method therefor
CN105719185B (zh) * 2016-01-22 2019-02-15 杭州复杂美科技有限公司 区块链的数据对比及共识方法
CN105912618B (zh) * 2016-04-07 2019-04-23 浙江万马新能源有限公司 基于区块链的充电桩充电交易通讯方法及装置
CN106101242B (zh) * 2016-06-24 2019-08-06 深圳前海微众银行股份有限公司 区块链云服务平台的构建方法和装置
CN106209877A (zh) * 2016-07-19 2016-12-07 井创(北京)科技有限公司 一种以区块链后台为认证核心的防伪认证系统
CN106296191A (zh) * 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种区块链功耗感知的PoW共识机制
CN106445711B (zh) * 2016-08-28 2019-04-30 杭州云象网络技术有限公司 一种应用于区块链的拜占庭容错共识方法
CN106339639A (zh) * 2016-08-30 2017-01-18 弗洛格(武汉)信息科技有限公司 基于区块链的学分成绩管理方法及系统
US20180062831A1 (en) * 2016-08-31 2018-03-01 Jiangang Zhang Massively Scalable Blockchain Ledger
US10158527B2 (en) * 2016-10-28 2018-12-18 International Business Machines Corporation Changing an existing blockchain trust configuration
CN106528775B (zh) * 2016-10-28 2020-01-03 济南大学 支持逻辑多链的私有区块链运行支撑系统及其工作方法
CN106341421B (zh) * 2016-10-31 2019-04-02 杭州云象网络技术有限公司 一种基于区块链技术的数据交换方法
CN106534273B (zh) * 2016-10-31 2022-04-15 中金云金融(北京)大数据科技股份有限公司 区块链元数据存储系统及其存储方法与检索方法
US10862959B2 (en) 2016-11-28 2020-12-08 Keir Finlow-Bates Consensus system and method for adding data to a blockchain
CN107078903B (zh) * 2016-12-23 2019-12-06 深圳前海达闼云端智能科技有限公司 区块链的挖矿方法、装置和节点设备
US10291413B2 (en) * 2017-02-17 2019-05-14 Accenture Global Solutions Limited Hardware blockchain corrective consensus operating procedure enforcement
US20180267539A1 (en) * 2017-03-17 2018-09-20 Jeanne Louise Shih Distributive networks of groups of moveable autonomous devices
CN111327703B (zh) * 2017-03-28 2022-05-31 创新先进技术有限公司 一种基于区块链的共识方法及装置
US10984134B2 (en) * 2017-07-14 2021-04-20 Microsoft Technology Licensing, Llc Blockchain system for leveraging member nodes to achieve consensus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523355A (zh) * 2006-08-04 2009-09-02 多伦多证券交易所 故障切换系统和方法
US20160019125A1 (en) * 2014-07-17 2016-01-21 Cohesity, Inc. Dynamically changing members of a consensus group in a distributed self-healing coordination service
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
CN106060036A (zh) * 2016-05-26 2016-10-26 布比(北京)网络技术有限公司 去中心化共识方法及装置
CN106452785A (zh) * 2016-09-29 2017-02-22 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法

Also Published As

Publication number Publication date
CN107368507B (zh) 2020-03-27
EP3547170B1 (en) 2021-09-01
BR112019013379B1 (pt) 2022-03-15
AU2018241568A1 (en) 2019-07-18
RU2731331C1 (ru) 2020-09-01
PH12019501519A1 (en) 2020-03-09
ZA201904224B (en) 2021-05-26
AU2018241568B2 (en) 2020-12-03
CN111327703A (zh) 2020-06-23
KR102255724B1 (ko) 2021-05-27
JP2020514865A (ja) 2020-05-21
CA3048742C (en) 2021-07-20
CN111327703B (zh) 2022-05-31
EP3547170A4 (en) 2019-11-20
US10642699B2 (en) 2020-05-05
MY192616A (en) 2022-08-29
EP3547170A1 (en) 2019-10-02
US20190324867A1 (en) 2019-10-24
US10846182B2 (en) 2020-11-24
MX2019007808A (es) 2019-09-04
TWI696083B (zh) 2020-06-11
JP6756924B2 (ja) 2020-09-16
TW201837748A (zh) 2018-10-16
BR112019013379A2 (pt) 2019-12-17
US20200201719A1 (en) 2020-06-25
CN107368507A (zh) 2017-11-21
CA3048742A1 (en) 2018-10-04
WO2018177255A1 (zh) 2018-10-04

Similar Documents

Publication Publication Date Title
KR102255724B1 (ko) 블록체인 기반 합의 방법 및 디바이스
JP6773912B2 (ja) サービス処理およびコンセンサスの方法およびデバイス
JP6794551B2 (ja) トランザクション情報を送信するためのおよびコンセンサス検証のための方法およびデバイス
EP3525102B1 (en) Consensus method and device
CN116405554B (zh) 一种网络通信的方法、装置、存储介质及电子设备
CN110673793B (zh) 存储设备节点事件管理方法、系统及电子设备和存储介质

Legal Events

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