KR20190054738A - 비잔틴 장애를 극복 가능한 블록체인 생성 방법 - Google Patents

비잔틴 장애를 극복 가능한 블록체인 생성 방법 Download PDF

Info

Publication number
KR20190054738A
KR20190054738A KR1020170151659A KR20170151659A KR20190054738A KR 20190054738 A KR20190054738 A KR 20190054738A KR 1020170151659 A KR1020170151659 A KR 1020170151659A KR 20170151659 A KR20170151659 A KR 20170151659A KR 20190054738 A KR20190054738 A KR 20190054738A
Authority
KR
South Korea
Prior art keywords
block
node
verification
vote
previous
Prior art date
Application number
KR1020170151659A
Other languages
English (en)
Other versions
KR102019211B1 (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 주식회사 아이콘루프
Priority to KR1020170151659A priority Critical patent/KR102019211B1/ko
Publication of KR20190054738A publication Critical patent/KR20190054738A/ko
Application granted granted Critical
Publication of KR102019211B1 publication Critical patent/KR102019211B1/ko

Links

Images

Classifications

    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 

Abstract

본 발명은 비잔틴 장애를 극복 가능한 블록체인 생성 방법에 관한 것으로, 네트워크에 포함된 노드들 중에서 리더 노드를 확인하고, 상기 네트워크에 포함된 상기 리더 노드를 제외한 나머지 노드인 검증 노드들 각각에서 블록에 추가할 트랜젝션을 상기 리더 노드로 송신하고, 상기 리더 노드에서 상기 트랜잭션을 수신하여 상기 트랜젝션과 이전 블록에 대한 투표 데이터를 포함하는 블록을 생성하고, 상기 네트워크에 포함된 상기 검증 노드들로 상기 블록을 송신하고, 상기 블록을 수신한 상기 검증 노드 각각에서 상기 블록을 검증하고, 검증 결과에 따른 투표를 상기 네트워크에 포함된 모든 노드로 송신하고, 상기 네트워크에 포함된 노드들 각각은 정족수 이상의 다른 노드로부터 검증에 성공했음을 알리는 투표를 수신하면, 상기 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인에 상기 블록을 추가한다.

Description

비잔틴 장애를 극복 가능한 블록체인 생성 방법{METHOD FOR GENERATING BLOCK CHAIN CAPABLE OF OVERCOMING BYZANTINE FAULT}
이하의 일 실시 예들은 블록체인 시스템에서 블록체인을 생성하는 방법에 관한 것으로, 비잔틴 장애를 극복 가능하면서 통신량이 적은 블록체인 생성 방법에 관한 것이다.
비트코인은 제3의 신용 보증 기관 없이 사용자 간 직접 송금이 가능한 암호화 화폐이다. 비트코인은 블록체인 데이터 구조를 이용하여 데이터 위변조 공격을 즉각 감지할 수 있으며 작업 증명(Proof-of-Work)합의 알고리즘을 이용하여 세계적인 규모의 네트워크에서 분산합의가 가능하도록 하였다. 블록체인 기술은 어떠한 데이터도 복제할 수 있고 신뢰할 수 없는 디지털 환경에서 신뢰 네트워크를 구성할 수 있게 하였고 암호화 화폐 분야뿐 아니라 은행 간 거래, 본인 인증, 보험업 등 다양한 분야에 혁신을 이뤄낼 것으로 예상한다.
그러나 비트코인 블록체인에서 사용하는 작업 증명 알고리즘은 높은 지연 시간과 낮은 처리량, 에너지 낭비, 부분적인 네트워크 분기 문제가 있어 요청의 즉각적인 완료를 요구하는 다양한 시스템에서 활용하는 데 한계가 있다. 특별히 사설 블록체인의 경우 그 특성상 사용자에게 즉각적인 서비스를 제공하는 경우가 많아 작업증명 알고리즘을 사용하는데 문제가 있다.
블록체인 분산합의 알고리즘의 한계를 극복하기 위하여 Tendermint, IBM Fabric 등의 블록체인은 전통적인 상태 기계 복제에 사용하는 합의 알고리즘인 PBFT(Practical Byzantine Fault Tolerance)를 블록체인에 맞게 개량하여 사용한다. PBFT는 3f+1개 이상의 노드에서 f개까지의 비잔틴 노드가 존재하더라도 비잔틴 장애를 극복할 수 있는 합의 알고리즘으로 비잔틴 노드에 의한 네트워크 분기 시도와, 네트워크 정지 시도를 막기 위하여 네트워크의 모든 노드들에 2번에 거쳐 합의 데이터(투표 메시지)를 전송한다.
여기서, 비잔틴 노드란 시스템의 동작을 방해하는 악의적인 노드를 의미하고, 비잔틴 장애는 악의적인 노드들의 예상치 못한 행동으로 인해 발생하는 문제들을 의미한다. 즉, 비잔틴 장애를 극복한다는 것은 악의적인 노드들의 방해에도 불구하고 정상적으로 블록체인을 생성할 수 있는 방법을 나타낸다.
Tendermint와 같은 선행 연구들은 PBFT를 이용하여 비트코인으로 대표되는 작업증명 알고리즘을 사용하는 블록체인 시스템의 문제였던 높은 지연 시간과 낮은 처리량 문제, 네트워크 부분 분기 문제를 해결하였다.
그러나 이러한 PBFT기반 합의 알고리즘은 비잔틴 장애를 극복하기 위하여 합의 데이터(투표 메시지)를 네트워크의 모든 노드에 2번에 걸쳐 전파(broadcast)하기 때문에 통신량이 지나치게 많다는 한계점이 존재한다.
따라서, 비잔틴 장애를 극복하면서도 통신량을 줄일 수 있는 방법이 요구된다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 비잔틴 장애를 극복 가능한 블록체인 생성 방법을 제공하는 것을 목적으로 한다.
구체적으로, 본 발명은 블록을 생성할 때, 이전 블록의 투표 데이터를 포함시켜 생성함으로써, 한번의 투표를 전파하는 것으로 하는 것만으로도 비잔틴 장애를 극복 가능하도록 하여 상대적으로 통신량이 적은 블록체인 생성 방법을 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록체인을 생성하는 방법은, 네트워크에 포함된 노드들 중에서 리더 노드를 확인하는 단계; 상기 네트워크에 포함된 노드들 각각에서 이전 블록에 대한 검증 결과에 대해 투표한 투표 데이터를 상기 네트워크에 포함된 다른 노드들로 송신하는 단계; 상기 네트워크에 포함된 노드들 각각은 정족수 이상의 다른 노드로부터 검증에 성공했음을 알리는 투표 데이터를 수신하면, 상기 이전 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인의 높이를 하나 증가 시키는 단계; 상기 네트워크에 포함된 상기 리더 노드를 제외한 나머지 노드인 검증 노드들 각각에서 블록에 추가할 트랜젝션을 상기 리더 노드로 송신하는 단계; 상기 리더 노드에서 상기 트랜젝션을 수신하여 상기 트랜젝션과 상기 이전 블록에 대한 투표 데이터를 포함하는 블록을 생성하고, 상기 네트워크에 포함된 상기 검증 노드들로 상기 블록을 송신하는 단계; 및 상기 블록을 수신한 상기 검증 노드 각각에서 상기 블록을 검증하는 단계를 포함한다.
이때, 상기 리더 노드는, 상기 네트워크에 포함된 노드들이 기설정된 순서에 따라서 돌아가면서 수행할 수 있다.
이때, 상기 리더 노드는, 한번에 하나의 블록만을 생성하며, 블록을 생성한 후에는 생성된 블록이 블록체인에 추가되지 않더라도 다음 리더 노드로 변경될 수 있다.
이때, 상기 블록의 검증은, 상기 리더 노드가 상기 블록을 생성했는지 확인하는 제1 검증 단계; 상기 블록의 높이와 상기 블록에 포함된 이전 블록 해시가 올바른지 확인하는 제2 검증 단계; 상기 블록에 포함된 트랜젝션의 데이터 형식과 서명이 올바른지 확인하는 제3 검증 단계; 모든 검증 단계의 검증 결과 이상이 없으면 검증에 성공했다고 판단하는 단계를 포함할 수 있다.
이때, 상기 블록의 검증은, 상기 블록의 이전 블록이 존재하면, 상기 블록에 포함된 상기 이전 블록의 투표결과를 통해서, 상기 이전 블록의 해시를 가진 투표가 정족수 이상 포함되어 있는지 확인하여 상기 이전 블록을 검증하는 제4 검증 단계를 더 포함할 수 있다.
이때, 상기 블록은 페이로드와 헤더를 포함하고, 상기 페이로드는 상기 트랜젝션과 상기 이전 블록에 대한 투표 데이터를 포함하고, 상기 헤더는 상기 블록의 해시, 상기 이전 블록의 해시, 상기 블록의 높이값, 상기 블록을 생성한 시각에 해당하는 타임스탬프, 상기 페이로드에 저장된 트랜젝션에 대한 트랜젝션 머클 트리, 상기 리더 노드의 서명, 상기 리더 노드의 공개키 및 상기 이전 블록에 대한 투표 데이터에 대응하는 대응값을 포함할 수 있다.
이때, 상기 이전 블록에 대한 투표 데이터는 검증에 성공했음을 알리는 투표인 성공 투표를 포함하고, 상기 성공 투표는 투표한 블록의 높이, 투표한 블록의 해시, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함할 수 있다.
이때, 상기 이전 블록에 대한 투표 데이터는 검증에 실패했음을 알리는 투표인 실패 투표를 더 포함하고, 상기 실패 투표는 투표한 블록의 높이, 투표한 블록의 높이에서 몇번째 블록 생성에 실패했는지 나타내는 블록 실패 횟수, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함할 수 있다.
이때, 블록체인 시스템에서 블록체인을 생성하는 방법은, 상기 검증 노드들 각각에서 기설정 기간 내에 상기 리더 노드로부터 상기 이전 블록이 수신되지 않으면, 검증에 실패했음을 알리는 투표를 네트워크에 포함된 노드들로 송신하는 단계를 더 포함할 수 있다.
이때, 블록체인 시스템에서 블록체인을 생성하는 방법은, 기설정된 순서에 따른 다음 순번의 리더 노드에서 정족수 이상의 검증에 성공했음을 알리는 투표 데이터를 수신하지 못하면, 상기 블록에 대해서 블록생성 실패로 판단하고, 실패한 블록에 대한 투표 데이터를 더 포함하는 새로운 블록을 생성하는 단계를 더 포함할 수 있다.
이때, 상기 실패한 블록에 대한 투표 데이터는 검증에 실패했음을 알리는 투표인 실패 투표를 포함하고, 상기 실패 투표는 투표한 블록의 높이, 투표한 블록의 높이에서 몇번째 블록 생성에 실패했는지 나타내는 블록 실패 횟수, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함할 수 있다.
이때, 상기 실패한 블록에 대한 투표 데이터는 검증에 성공했음을 알리는 투표인 성공 투표를 포함하고, 상기 성공 투표는 투표한 블록의 높이, 투표한 블록의 해시, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함할 수 있다.
본 발명의 일 실시 예에 따른 블록체인 시스템의 노드에서 블록체인을 생성하는 방법은, 기설정된 순서에 따라 리더 노드로 선정되었는지 확인하는 단계; 확인결과 상기 리더 노드로 선정되었으면, 네트워크에 포함된 노드들로부터 이전 블록에 대해 투표한 투표 데이터를 수신하는 단계; 상기 수신한 투표 데이터를 확인 결과 검증에 성공했음을 알리는 투표가 정족수 이상이면, 상기 이전 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인의 높이를 하나 증가 시키는 단계; 상기 네트워크에 포함된 노드들로부터 블록에 추가할 트랜젝션을 수신하는 단계; 상기 이전 블록에 대한 상기 투표 데이터와 상기 수신한 트랜젝션을 포함하는 블록을 생성하는 단계; 및 상기 네트워크에 포함된 노드들로 상기 블록을 송신하는 단계를 포함한다.
이때, 상기 블록을 생성하는 단계는, 이전 리더 노드가 블록 생성에 실패한 경우, 상기 블록에 실패한 블록에 대한 투표 데이터를 포함시켜 생성할 수 있다.
상기 블록은 페이로드와 헤더를 포함하고, 상기 페이로드는 상기 트랜젝션과 이전 블록에 대한 투표 데이터를 포함하고, 상기 헤더는 상기 블록의 해시, 상기 이전 블록의 해시, 상기 블록의 높이값, 상기 블록을 생성한 시각에 해당하는 타임스탬프, 상기 페이로드에 저장된 트랜젝션에 대한 트랜젝션 머클 트리, 상기 리더 노드의 서명, 상기 리더 노드의 공개키 및 상기 이전 블록에 대한 투표 데이터에 대응하는 대응값을 포함할 수 있다.
본 발명의 일 실시 예에 따른 블록체인 시스템의 노드에서 블록체인을 생성하는 방법은, 기설정된 순서에 따라 리더 노드로 선정되었는지 확인하는 단계; 확인결과 상기 리더 노드로 선정되지 않았고, 생성되는 블록에 포함시킬 트랜젝션이 존재하면, 상기 트랜젝션을 상기 리더 노드로 송신하는 단계; 상기 리더 노드로부터 상기 리더 노드에서 생성한 블록을 수신하는 단계; 상기 리더 노드가 상기 블록을 생성했는지 확인하는 제1 검증 단계; 상기 블록의 높이와 상기 블록에 포함된 이전 블록 해시가 올바른지 확인하는 제2 검증 단계; 상기 블록에 포함된 트랜젝션의 데이터 형식과 서명이 올바른지 확인하는 제3 검증 단계; 상기 블록의 이전 블록이 존재하면, 상기 블록에 포함된 상기 이전 블록의 투표결과를 통해서, 상기 이전 블록의 해시를 가진 투표 데이터가 정족수 이상 포함되어 있는지 확인하여 상기 이전 블록을 검증하는 제4 검증 단계; 상기 제1 검증 단계에서 상기 제4 검증 단계의 검증 결과 이상이 없으면 검증에 성공했다고 판단하는 단계; 검증 결과에 따라 검증 성공을 또는 검증 실패를 나타내는 투표 데이터를 네트워크에 포함된 노드들로 송신하는 단계; 상기 네트워크에 포함된 노드들로부터 상기 블록에 대한 투표 데이터를 수신하는 단계; 및 상기 송신한 투표 데이터와 상기 수신한 투표 데이터를 확인 결과 검증에 성공했음을 알리는 투표 데이터가 정족수 이상이면, 상기 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인에 상기 블록을 추가하는 단계를 포함한다.
이때, 블록체인 시스템의 노드에서 블록체인을 생성하는 방법은, 상기 리더 노드로부터 기설정된 기간 내에 상기 블록이 수신되지 않으면, 검증에 실패했음을 알리는 투표 데이터를 네트워크에 포함된 노드들로 송신하는 단계를 더 포함할 수 있다.
본 발명은 블록을 생성할 때, 이전 블록의 투표 데이터를 포함시켜 생성함으로써, 블록을 생성할 때 한번의 투표 만을 전파하기 때문에 상대적으로 적은 통신량을 이용하며, 이전 블록의 투표 데이터의 검증을 통해서 비잔틴 장애를 극복 가능하도록 할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 시스템의 개략적인 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록체인을 생성하는 과정을 도시한 흐름도이다.
도 3은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 생성된 블록을 검증하는 과정을 도시한 흐름도이다.
도 4는 본 발명의 일 실시 예에 따른 블록체인 시스템의 리더 노드에서 블록체인을 생성하는 과정을 도시한 흐름도이다.
도 5는 본 발명의 일 실시 예에 따른 블록체인 시스템의 검증 노드에서 블록체인을 생성하는 과정을 도시한 흐름도이다.
도 6은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록체인에 블록을 정상적으로 추가하는 성공적인 흐름을 도시한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 장애 시에 블록체인에 블록을 추가하지 못하고 실패하는 흐름을 도시한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 생성하는 블록의 구성을 도시한 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시 예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 비잔틴 장애를 극복 가능한 블록체인 생성 방법을 첨부된 도 1 내지 도 8을 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 시스템의 개략적인 구성을 도시한 도면이다.
도 1을 참조하면, 블록체인 시스템에서 블록체인을 생성하는 알고리즘은 합의 알고리즘의 일종으로 비잔틴 장애를 극복할 수 있는 알고리즘이다. 본 발명의 알고리즘은 기존 상태 기계 복제 알고리즘들처럼 노드들(110 - 180)들은 리더 노드와 검증 노드로 구성된다.
리더 노드는 새로운 블록을 생성하고 검증 노드는 리더가 생성한 블록을 검증하고 유효성을 투표하는 임무를 수행한다.
네트워크에 참여하는 각 노드들(110 - 180)은 비잔틴 노드에 의한 메시지 조작을 방지하기 위하여 공개키 기반 구조를 가진다. 모든 노드들(110 - 180)은 네트워크에 참여하는 노드의 공개키와 각 노드의 리더 순번을 안다.
네트워크의 모든 정상적인 노드는 한 리더가 차례에 블록 유효 투표와 실패 투표 단 한 번만 수행한다. 즉, 리더 노드는 한번에 하나의 블록만을 생성하며, 블록을 생성한 후에는 생성된 블록이 블록체인에 추가되지 않더라도 다시 블록을 생성하지 않고, 다음 순번의 리더 노드에서 블록을 생성한다.
이와 같이 매 블록 생성 시 마다 리더를 교체하기 때문에 비잔틴 노드가 리더 노드인 경우 블록을 생성하지 않거나 또는 블록 생성 시 특정 노드의 트랜잭션을 거부할 경우 문제로 인한 서비스 장애 요소를 줄일 수 있다.
또한, 본 발명의 경우 기설정된 순서로 리더 노드가 변경되기 때문에, 합의를 통한 리더 노드를 선정하는 과정에서 발생하는 지연 시간을 최소화 할 수 있다.
본 발명의 알고리즘은 단계 합의 알고리즘이다. 1번째 단계에서 리더가 블록을 만들어 다른 모든 노드에 전달하면 2번째 단계에서 각 검증 노드들은 블록은 전파하고 투표를 모든 노드들에 전파한다. 본 발명의 알고리즘은 f가 허용 가능한 비잔틴 노드의 수일 때, 3f+1 이상의 노드가 존재하는 상황에서 비잔틴 장애를 극복할 수 있으며, 정족수 n-f 인 합의 알고리즘이다. 또한 각 노드는 내부 타이머(Local Timer)를 가지고 있어 리더 노드의 통신 장애를 감지한다.
블록체인 시스템에서 블록체인을 생성하는 구체적인 과정은 아래에서 도 2를 통해서 후술한다.
그리고, 블록체인 시스템의 노드가 리더 노드로 동작할 때의 처리 과정을 아래에서 도 4를 통해서 보다 상세히 후술하고, 블록체인 시스템의 노드가 검증 노드로 동작할 때의 처리 과정을 아래에서 도 5를 통해서 보다 상세히 후술하고자 한다.
이하, 상기와 같이 구성된 본 발명에 따른 블록체인 시스템에서 비잔틴 장애를 극복 가능한 블록체인 생성 방법을 아래에서 도면을 참조하여 설명한다.
도 2는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록체인을 생성하는 과정을 도시한 흐름도이다.
도 2를 참조하면, 블록체인 시스템의 네트워크에 포함된 노드들은 자신이 리더 노드인지 확인한다(210). 이때, 리더 노드는 네트워크에 포함된 노드들이 기설정된 순서에 따라서 돌아가면서 수행한다. 리더 노드는 한번에 하나의 블록만을 생성하며, 블록을 생성한 후에는 생성된 블록이 블록체인에 추가되지 않더라도 다음 순번의 리더 노드로 변경된다.
그리고, 검증 노드 각각은 이전 리더 노드에서 생성한 블록인 이전 블록에 대한 검증 결과에 대해 투표한 투표 데이터를 네트워크에 포함된 모든 노드로 송신한다(212). 이때, 검증 노드들 각각은 검증 노드들 각각에서 기설정된 기간 내에 리더 노드로부터 블록이 수신되지 않으면, 검증에 실패했음을 알리는 투표 데이터를 네트워크에 포함된 노드들로 송신한다.
기설정된 기간 내에 블록이 수신되지 않는 것을 감지하기 위해서, 각 노드는 내부 타이머(Local Timer)를 포함하고, 내부 타이머는 블록 검증 투표 모든 노드에 전송 할 때 초기화하고 새로운 리더로부터 블록을 받을 때까지 타이머가 동작한다. 이러한 타이머 동작 방식은 새로운 리더의 연속적인 실패를 감지 할 수 있도록 만들어준다. 각 노드의 내부 타이머는 정상적인 투표 시와 시간 초과 시의 시간 초과 세팅을 다르게 해야 한다. 다시 말해, 각 노드의 내부 타이머의 싱크를 맞추기 위하여 이전 블록 리더 노드와 검증 노드의 내부 타이머를 다르게 세팅하여야 한다. 이전 블록 리더의 타이머는 네트워크 딜레이 및 블록 검증시간 만큼의 추가적인 시간을 타이머로 세팅한다.
투표 데이터를 네트워크에 포함된 전체 노드에 전파하는 것은 매우 중요하다. 리더 노드가 비잔틴일 경우 정족수 이상의 노드들에만 블록을 전파하여 특정 노드들을 네트워크로부터 분리하도록 시도할 수 있다. 이러한 문제를 방지하기 위해 모든 피어에 투표 데이터를 전파한다.
한편, 블록을 못 받은 노드는 수신되는 투표 데이터를 통해서 블록이 생성되었는지에 대한 정보를 알 수 있고 다른 노드에 못 받은 블록을 요청할 수 있다. 못 받은 블록이 있는 노드는 비잔틴 노드가 생성한 가짜 투표를 제외한 확실한 블록을 요청하기 위해선 f+1 개 이상의 같은 투표를 받을 때까지 기다리다가 못 받은 블록을 요청할 수 있다.
네트워크에 포함된 노드들 각각은 이전 블록의 생성이 성공했는지 여부를 확인한다(214). 이전 블록의 생성이 성공했는지 여부는 정족수 이상의 다른 노드로부터 검증에 성공했음을 알리는 투표 데이터를 수신하면 이전 블록 생성에 성공했다고 판단하고, 그렇지 않으면 이전 블록의 생성에 실패했다고 판단할 수 있다.
214단계의 확인결과, 네트워크에 포함된 노드들 각각은 이전 블록에 대해서 블록생성에 성공했다고 판단하면 블록체인의 높이를 1 증가 시킨다(216).
222단계의 확인결과, 네트워크에 포함된 노드들 각각은 이전 블록에 대해서 블록생성에 실패했다고 판단하면, 블록체인의 높이를 증가 시키지 않는다.
그리고, 네트워크에 포함된 리더 노드를 제외한 나머지 노드인 검증 노드들 각각에서 블록에 추가할 트랜젝션을 리더 노드로 송신한다(218). 이때, 블록에 추가할 데이터가 없는 노드는 트랜젝션을 송신하지 않거나 또는 노드를 식별할 수 있는 정보만을 가지고 실질적인 데이터가 포함되지 않은 기설정된 트랜젝션을 송신할 수도 있다.
리더 노드에서 트랜잭션을 수신하여 트랜젝션과 이전 블록에 대한 투표 데이터를 포함하는 블록을 생성한다(220). 이때, 블록은 아래 도 8과 같이 구성될 수 있다.
도 8은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 생성하는 블록의 구성을 도시한 도면이다.
도 8을 참조하면, 블록(800)은 페이로드(Payload)(820)와 헤더(Block_Header)(810)로 구성되고, 페이로드(820)는 트랜젝션(821), 이전 블록에 대한 투표 데이터(822) 및 기타(ETC)(823)를 포함하고, 헤더(810)는 블록의 해시(811), 이전 블록의 해시(812), 블록의 높이값(813), 블록(800)을 생성한 시각에 해당하는 타임스탬프(Timestamp)(814), 페이로드에 저장된 트랜젝션에 대한 트랜젝션 머클 트리(815), 이전 블록에 대한 투표 데이터에 대응하는 대응값(816), 생성노드의 서명(817) 및 생성노드의 공개키(818) 을 포함할 수 있다.
이때, 블록의 해시(811)는 헤더에 포함된 정보 중에서 블록의 해시(811)를 제외한 정보를 해시함수를 이용해서 해시하여 획득한 값으로 단방향 해시값이며, 해당 블록이 위변조 되었는지 감지하는데 이용된다. 또한, 블록의 해시(812)는 다음 블록이 생성될 때 이전 블록 해시로 사용되는 값일 수 있다.
이전 블록의 해시(812)는 블록체인에서 블록(800)의 이전에 위치한 블록을 해시한 값을 나타내는 정보이다. 블록의 해시(811)와 이전 블록의 해시(812)를 통해서 해시 연결성을 보장할 수 있다.
트랜젝션 머클 트리(815)는 블록(800)에 포함된 모든 트랜잭션을 머클 트리로 구성하여 획득할 수 있는 머클 트리의 루트에 대한 해시를 나타내는 정보이다.
이전 블록에 대한 투표 데이터에 대응하는 대응값(816)은 페이로드(820)에 저장된 이전 블록에 대한 투표 데이터(822)에 대응하는 값으로, 이전 블록에 대한 투표 리스트를 해시하여 생성된 값 일 수도 있고, 이전 블록에 대한 투표 데이터의 머클 트리 일 수도 있다.
생성노드의 서명(817)은 블록을 생성한 리더 노드의 부인을 방지하는 목적으로 사용될 수 있다.
생성노드의 공개키(818)는 블록을 생성한 리더 노드를 식별하는데 사용될 수 있다.
이전 블록에 대한 투표 데이터(822)는 검증에 성공했음을 알리는 투표인 성공 투표를 포함한다. 그리고, 이전 블록에 대한 투표 데이터는 검증에 실패했음을 알리는 투표인 실패 투표를 더 포함할 수도 있다.
그리고, 성공 투표는 투표한 블록의 높이, 투표한 블록의 해시, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함할 수 있다. 그리고, 실패 투표는 투표한 블록의 높이, 투표한 블록의 높이에서 몇번째(실패 횟수) 블록 생성에 실패했는지 나타내는 블록 실패 횟수, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함할 수 있다.
상술한 바와 같이 성공 투표에는 블록 해시와 블록 높이를 성공 투표에 포함하기 때문에 각 노드가 같은 블록에 대해 투표를 하였는지 검증할 수 있다. 그러나 실패 투표에는 블록 해시에 대한 정보가 포함되어 있지 않다. 이는 기설정된 시간 내에 블록을 수신하지 못하여 시간이 초과된 경우에도 실패 투표로 적용하기 위해서 설계된 것이다. 또한 실패 투표에는 블록 실패 횟수(Round)를 포함하는데 이는 같은 블록 높이에서 블록 생성을 여러번 실패할 수 있고 비잔틴 노드가 다른 노드의 실패 메시지를 반복하여 네트워크에 전파해 네트워크를 중지 시킬 수 있으므로 이러한 문제를 방지하기 위한 정보이다.
한편, 블록을 생성하는 214단계는 리더 노드는 이전 리더 노드에서 블록 생성에 실패한 경우, 실패한 블록에 대한 투표 데이터를 추가로 더 포함하는 새로운 블록을 생성한다.
이때, 실패한 블록에 대한 투표 데이터는 이전 블록에 대한 투표 데이터(822)와는 다른 데이터이고, 기타(823)에 추가로 저장될 수 있다. 실패한 블록에 대한 투표 데이터는 검증에 실패했음을 알리는 투표인 실패 투표를 포함한다. 그리고, 실패한 블록에 대한 투표 데이터는 검증에 성공했음을 알리는 투표인 성공 투표를 더 포함할 수도 있다.
본 발명의 블록(800)은 도 1의 형태로 한정되지 않으며, 여러 형태의 블록으로 구성될 수 있다. 예를 들어 블록(800)의 헤더(810)에 난스(Nounce)가 추가될 수도 있다. 이때, 난스는 블록(800)(또는 블록(800)의 헤더)을 입력값으로 했을 때 SHA-2(X)의 출력값의 상위 기설정된 비트(n비트)가 0이 되도록 하는 값을 나타낸다. 이때, SHA-2(X)은 SSL(Secure Sockets Layer) 알고리즘의 일종이다.
그리고, 리더 노드에서 네트워크에 포함된 검증 노드들로 블록을 송신한다(222).
블록을 수신한 검증 노드 각각에서 블록을 검증한다(224). 224단계의 검증은 이후 도 3을 통해서 보다 상세히 후술한다.
도 3은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 생성된 블록을 검증하는 과정을 도시한 흐름도이다.
도 3을 참조하면, 도 2의 224단계의 블록을 검증하는 방법은 다음과 같다.
검증 노드에서 리더 노드가 블록을 생성했는지 확인하는 제1 검증을 수행한다(310). 이때, 검증 노드는 기설정된 금번 순서의 정당한 리더 노드가 블록을 생성하였으면 제1 검증에 성공했다고 판단한다.
그리고, 검증 노드에서 블록의 높이와 블록에 포함된 이전 블록 해시가 올바른지 확인하는 제2 검증을 수행한다(312). 이때, 검증 노드는 블록의 높이가 정확하고 포함된 이전 블록 해시가 올바르면 제2 검증에 성공했다고 판단한다.
그리고, 검증 노드에서 블록에 포함된 트랜젝션의 데이터 형식과 서명이 올바른지 확인하는 제3 검증을 수행한다(314).
그리고, 검증 노드에서 블록의 이전 블록이 존재하면, 블록에 포함된 이전 블록의 투표결과를 통해서, 투표가 올바른지 확인하는 제4 검증을 수행 한다(316). 이때, 검증 노드는 이전 블록 해시를 가진 투표가 정족수 이상 포함되어 있거나 또는 검증하고자 하는 블록이 제니시스 블록이어서 이전 블록이 존재하지 않으면 제4 검증은 성공했다고 판단한다. 여기서, 이전 블록 해시를 가진 투표의 수를 확인하는 것은 성공 투표만 투표한 블록의 해시를 포함하기 때문이다.
이때, 위의 제1 검증에서 제4 검증은 위의 순서와 상관없이 수행될 수 있다.
그리고, 검증 노드에서 제1 검증에서 제4 검증 모두 성공 했는지 확인한다(318).
318단계의 확인결과 제1 검증에서 제4 검증 모두 성공하였으면, 블록의 검증에 성공했다고 판단한다(320).
318단계의 확인결과 제1 검증에서 제4 검증 중에서 하나라도 실패 하였으면, 블록의 검증에 실패했다고 판단한다(322).
도 4는 본 발명의 일 실시 예에 따른 블록체인 시스템의 리더 노드에서 블록체인을 생성하는 과정을 도시한 흐름도이다.
도 4를 참조하면, 블록체인 시스템의 네트워크에 포함된 노드는 기설정된 순서에 따라 리더 노드로 선정되었는지 확인한다(410).
410단계의 확인결과 리더 노드의 순번이면 리더 노드로 동작하여, 네트워크에 포함된 노드들로부터 이전 리더 노드에서 생성한 이전 블록에 대해 투표한 투표 데이터를 수신한다(412).
그리고, 리더 노드는 수신한 이전 블록에 대한 투표 데이터를 확인하여 검증에 성공했음을 알리는 투표(성공 투표)가 정족수 이상인지 확인한다(414).
414단계의 확인결과 검증에 성공했음을 알리는 투표가 정족수 이상이면, 리더 노드는 이전 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인의 높이를 1 증가 시킨다(416).
414단계의 확인결과 검증에 성공했음을 알리는 투표가 정족수 이상이 아니면, 리더 노드는 이전 블록에 대해서 블록생성에 실패했다고 판단하고 블록체인의 높이를 증가 시키지 않는다.
그리고, 리더 노드는 네트워크에 포함된 다른 노드들로부터 블록에 추가할 트랜젝션을 수신한다(418).
그리고, 리더 노드는 이전 블록에 대해서 리더 노드에서 수신한 네트워크에 포함된 노드들이 투표한 투표 데이터와 수신한 트랜젝션을 포함하는 블록을 생성한다(420). 이때, 리더 노드는 리더 노드는 이전 리더 노드에서 블록 생성에 실패한 경우, 실패한 블록에 대한 투표 데이터를 추가로 더 포함하는 새로운 블록을 생성한다. 즉, 블록은 트랜젝션, 이전 블록의 투표 데이터, 실패한 블록에 대한 투표 데이터를 모두 포함하여 생성된다.
그리고, 리더 노드는 네트워크에 포함된 노드들로 블록을 송신한다(422).
도 5는 본 발명의 일 실시 예에 따른 블록체인 시스템의 검증 노드에서 블록체인을 생성하는 과정을 도시한 흐름도이다.
도 5를 참조하면, 블록체인 시스템의 네트워크에 포함된 노드는 기설정된 순서에 따라 리더 노드로 선정되었는지 확인한다(510).
510단계의 확인결과 리더 노드의 순번이 아니면 검증 노드로 동작하여, 생성되는 블록에 포함시킬 트랜젝션이 존재하는지 확인한다(512)
512단계의 확인결과 생성되는 블록에 포함시킬 트랜젝션이 존재하면, 트랜젝션을 리더 노드로 송신한다(514).
그리고, 검증 노드는 리더 노드로부터 블록을 수신한다(516).
그리고, 검증 노드는 기설정된 금번 순서의 정당한 리더 노드가 블록을 생성하는지 확인하는 제1 검증을 수행한다(518). 이때, 검증 노드는 기설정된 금번 순서의 정당한 리더 노드가 블록을 생성하였으면 제1 검증에 성공했다고 판단한다.
그리고, 검증 노드는 블록의 높이와 블록에 포함된 이전 블록 해시가 올바른지 확인하는 제2 검증을 수행한다(520). 이때, 검증 노드는 블록의 높이가 정확하고 포함된 이전 블록 해시가 올바르면 제2 검증에 성공했다고 판단한다.
그리고, 검증 노드는 블록에 포함된 트랜젝션의 데이터 형식과 서명이 올바른지 확인하는 제3 검증을 수행한다(522).
그리고, 검증 노드는 블록의 이전 블록이 존재하면, 블록에 포함된 이전 블록의 투표결과를 통해서, 투표가 올바른지 확인하는 제4 검증을 수행 한다(524). 이때, 검증 노드는 이전 블록 해시를 가진 투표가 정족수 이상 포함되어 있거나 또는 검증하고자 하는 블록이 제니시스 블록이어서 이전 블록이 존재하지 않으면 제4 검증은 성공했다고 판단한다. 이때, 위의 518단계에서 524단계는 위의 순서와 상관없이 수행될 수 있다.
그리고, 검증 노드는 제1 검증에서 제4 검증 모두 성공하였으면 블록의 검증에 성공했다고 판단하고, 제1 검증에서 제4 검증 중에서 하나라도 실패 하였으면 블록의 검증에 실패했다고 판단한다(526).
그리고, 검증 노드는 검증 결과에 따라 검증 성공을 또는 검증 실패를 나타내는 투표를 네트워크에 포함된 노드들로 송신한다(528). 이때, 검증 노드는 리더 노드로부터 기설정된 기간 내에 블록이 수신되지 않으면, 검증에 실패했음을 알리는 투표를 네트워크에 포함된 노드들로 송신한다.
그리고, 검증 노드는 네트워크에 포함된 노드들로부터 블록에 대한 투표를 수신한다(530).
그리고, 검증 노드는 송신한 투표와 수신한 투표를 확인하여 검증에 성공했음을 알리는 투표(성공 투표)가 정족수 이상인지 확인한다(532).
532단계의 확인결과 검증에 성공했음을 알리는 투표가 정족수 이상이면, 검증 노드는 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인에 블록을 추가한다(534).
532단계의 확인결과 검증에 성공했음을 알리는 투표가 정족수 이상이 아니면, 검증 노드는 블록에 대해서 블록생성에 실패했다고 판단하고 블록체인에 블록을 추가하지 않는다.
도 6은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록체인에 블록을 정상적으로 추가하는 성공적인 흐름을 도시한 도면이다.
도 6을 참조하면, 도 6의 각 수평선은 블록체인 네트워크에 참여하는 노드를 나타내며, 화살표는 한 노드가 다른 노드에 보내는 메시지를 의미한다. 네트워크 이벤트의 순서는 왼쪽에서 오른쪽의 순서로 발생한다.
리더 노드는 기설정된 순서대로 변경되며, 610단계에서 630단계는 node 0이 리더 노드이고, 640단계에서 650단계는 node 1이 리더 노드 임을 확인할 수 있다.
610단계에서 node 0이 리더 노드일 때, 블록을 생성해서 화살표와 같이 네트워크에 포함된 다른 노드들(node 1, node 2, node 3)으로 송신한다.
620단계에서 노드들(node 1, node 2, node 3)은 수신한 블록을 검증한다.
630단계에서 노드들(node 1, node 2, node 3) 각각은 검증한 결과를 나타내는 투표를 네트워크에 포함된 다른 노드들로 전파한다.
640단계에서 새로운 리더 노드인 node 1은 모든 노드들(node 0, node 1, node 2, node 3)는 이전 리더 노드인 node 0에서 생성한 이전 블록에 대한 투표를 카운트하여 검증에 성공했음을 알리는 투표가 정족수 이상이면, 검증 노드는 이전 블록에 대해서 블록생성에 성공했다고 판단한다.
650단계에서 node 1은 새로운 블록을 생성해서 네트워크에 포함된 다른 노드들(node 0, node 2, node 3)으로 송신한다. 이때, 생성되는 새로운 블록은 이전 블록의 투표 데이터를 포함하여 생성된다.
도 7은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 장애 시에 블록체인에 블록을 추가하지 못하고 실패하는 흐름을 도시한 도면이다.
도 7을 참조하면, 리더 노드가 비잔틴 노드 일 때에도 장애를 극복하고 해당 높이의 블록을 다시 생성함을 확인할 수 있다.
도 7의 각 수평선은 블록체인 네트워크에 참여하는 노드를 나타내며, 화살표는 한 노드가 다른 노드에 보내는 메시지를 의미한다. 네트워크 이벤트의 순서는 왼쪽에서 오른쪽의 순서로 발생한다.
리더 노드는 기설정된 순서대로 변경되며, 710단계에서 730단계는 node 0이 리더 노드이고, 740단계에서 750단계는 node 1이 리더 노드 임을 확인할 수 있다.
710단계에서 리더 노드인 node 0에 장애(node 0이 비잔틴 노드인 경우)가 발생한 경우, node 0은 네트워크에 포함된 다른 노드들(node 1, node 2, node 3) 모두에게 블록을 전달하지 못하고, 일부 노드(node 1)에게만 블록을 전달할 수 있다.
720단계에서 블록을 전달받은 node 1은 블록의 검증을 수행할 수 있지만, 블록을 전달받지 못한 노드들(node 2, node 3)은 블록의 검증을 수행할 수 없어 블록을 수신하는 기설정된 기간을 초과하게 된다.
730단계에서 블록을 전달받은 node 1은 검증 결과를 포함하는 투표를 네트워크에 포함된 다른 노드들(node 0, node 2, node 3)로 송신하고, 블록을 전달받지 못한 노드들(node 2, node 3) 각각은 검증에 실패했음을 나타내는 투표(실패 투표)를 네트워크에 포함된 다른 노드들로 송신한다.
740단계에서 새로운 리더 노드인 node 1은 모든 노드들(node 0, node 1, node 2, node 3)는 투표를 카운트하여 검증에 성공했음을 알리는 투표(성공 투표)가 정족수 이상인지 확인한다. 이때, 블록을 전달받지 못한 노드들(node 2, node 3)이 송신한 검증에 실패했음을 나타내는 투표로 인해서 검증에 성공했음을 알리는 투표가 정족수 이상이 되지 못하므로, 노드들 각각은 블록생성에 실패하였다고 판단한다.
750단계에서 node 1은 블록을 새로운 생성해서 네트워크에 포함된 다른 노드들(node 0, node 2, node 3)으로 송신한다. 이때, 생성되는 새로운 블록은 블록 높이가 node 0에서 생성한 이전 블록 높이와 같으며, 정상적으로 블록체인에 추가된 이전 블록의 투표 데이터뿐만 아니라 이전 리더 노드인 node 0에서 생성에 실패한 블록에 대한 투표 데이터를 더 포함하여 생성된다.
상술한 도 1에서 도 8을 통해서 설명한 본 발명의 블록체인 생성 방법은 다음의 비잔틴 노드가 수행할 수 있는 네트워크 공격 시나리오에 대한 장애를 극복할 수 있다.
공격 시나리오 1. 비잔틴 검증 노드에 의한 정상 블록 실패 시도
공격 시나리오 2. 비잔틴 리더에 의한 블록 분기 시도
공격 시나리오 3. 비잔틴 리더에 의한 네트워크 중지 시도
공격 시나리오 4. 비잔틴 리더에 의한 서비스 속도 저하 시도
공격 시나리오 5. 비잔틴 리더에 의한 특정 노드의 트랜잭션 거부
네트워크의 포함된 전체 노드 수가 n개이고 비잔틴 노드 수가 f개라면 노드 수 n은 3f+1개 이상이어야 비잔틴 장애를 극복할 수 있다. 거꾸로 말하면 노드 수 n개의 네트워크에선 (n-1)/3 만큼의 비잔틴 노드의 공격을 방어할 수 있다. 본 발명의 알고리즘에서 허용하는 정족수는 n-f개로 3f+1 네트워크에서 2f+1개이다.
네트워크 전체 노드를 3f+1개라고 가정하자.
공격 시나리오 1번이 극복 가능한 이유) 본 발명의 알고리즘은 블록의 실패를 보장하기 위해 f+1개 이상의 실패 투표를 받아야 한다. 모든 실패 투표에는 서명이 들어가 비잔틴 노드가 임의로 만들 수 없어 f 이하의 비잔틴 노드 환경에서는 정상적인 블록을 실패 처리할 수 없다.
공격 시나리오 2번이 극복 가능한 이유) 비잔틴 리더는 네트워크를 분기 시키기 위해 같은 높이에 서로 다른 두 블록을 생성할 수 있다. 정상적인 노드는 같은 높이 같은 리더가 만든 블록을 단 한번만 서명을 한다. 비잔틴 노드가 두 가지 블록을 같은 높이에 전부 추가시키려면 네트워크에 전파되는 투표의 개수가 두 개의 블록을 모두 검증할 수 있는 개수 이상이 되어야 한다. 모든 비잔틴 노드 f가 동일 높이에서 이중 투표를 하여 두 개의 블록을 전부 합의에 성공하게 하려면 총 4f+2개의 투표가 필요하다. 그러나 f개의 비잔틴 노드가 이중 투표를 하여도 만들 수 있는 투표의 개수는 최고 4f+1개 이기 때문에 두 블록을 전부 허용하는 것이 불가능하다.
공격 시나리오 3번이 극복 가능한 이유) 본 발명의 알고리즘은 로컬 타이머를 이용한 시간 초과 트리거와 매 블록마다 리더를 교체하기 때문에 비잔틴 리더에 의한 네트워크 중지가 불가능하다. 리더 노드는 네트워크를 중지시키기 위해 블록을 여러 개 만들어 합의를 실패를 유도하던가 블록을 생성하지 않으려 할 것이다. 그러나 다음 리더는 모든 노드의 투표 메시지를 수집해 현재 높이에서 합의할 수 없다는 것을 증명하고 해당 높이의 새로운 블록을 생성할 것이다.
공격 시나리오 4번과 5번이 극복 가능한 이유) 공격 시나리오 4번과 5번은 본 발명의 알고리즘 자체로는 막을 수 없으나 매 블록 생성시 리더를 교체하기 때문에 피해를 최소화할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 실시 예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시 예들이 비록 한정된 실시 예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시 예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (18)

  1. 네트워크에 포함된 노드들 중에서 리더 노드를 확인하는 단계;
    상기 네트워크에 포함된 노드들 각각에서 이전 블록에 대한 검증 결과에 대해 투표한 투표 데이터를 상기 네트워크에 포함된 다른 노드들로 송신하는 단계;
    상기 네트워크에 포함된 노드들 각각은 정족수 이상의 다른 노드로부터 검증에 성공했음을 알리는 투표 데이터를 수신하면, 상기 이전 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인의 높이를 하나 증가 시키는 단계;
    상기 네트워크에 포함된 상기 리더 노드를 제외한 나머지 노드인 검증 노드들 각각에서 블록에 추가할 트랜젝션을 상기 리더 노드로 송신하는 단계;
    상기 리더 노드에서 상기 트랜젝션을 수신하여 상기 트랜젝션과 상기 이전 블록에 대한 투표 데이터를 포함하는 블록을 생성하고, 상기 네트워크에 포함된 상기 검증 노드들로 상기 블록을 송신하는 단계; 및
    상기 블록을 수신한 상기 검증 노드 각각에서 상기 블록을 검증하는 단계
    를 포함하는 블록체인 시스템에서 블록체인을 생성하는 방법.
  2. 제1항에 있어서,
    상기 리더 노드는,
    상기 네트워크에 포함된 노드들이 기설정된 순서에 따라서 돌아가면서 수행하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  3. 제1항에 있어서,
    상기 리더 노드는,
    한번에 하나의 블록만을 생성하며, 블록을 생성한 후에는 생성된 블록이 블록체인에 추가되지 않더라도 다음 리더 노드로 변경되는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  4. 제1항에 있어서,
    상기 블록의 검증은,
    상기 리더 노드가 상기 블록을 생성했는지 확인하는 제1 검증 단계;
    상기 블록의 높이와 상기 블록에 포함된 이전 블록 해시가 올바른지 확인하는 제2 검증 단계;
    상기 블록에 포함된 트랜잭션의 데이터 형식과 서명이 올바른지 확인하는 제3 검증 단계;
    모든 검증 단계의 검증 결과 이상이 없으면 검증에 성공했다고 판단하는 단계를 포함하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  5. 제4항에 있어서,
    상기 블록의 검증은,
    상기 블록의 이전 블록이 존재하면, 상기 블록에 포함된 상기 이전 블록의 투표결과를 통해서, 상기 이전 블록의 해시를 가진 투표가 정족수 이상 포함되어 있는지 확인하여 상기 이전 블록을 검증하는 제4 검증 단계
    를 더 포함하는 블록체인 시스템에서 블록체인을 생성하는 방법.
  6. 제1항에 있어서,
    상기 블록은,
    페이로드와 헤더를 포함하고,
    상기 페이로드는,
    상기 트랜젝션과 상기 이전 블록에 대한 투표 데이터를 포함하고,
    상기 헤더는,
    상기 블록의 해시, 상기 이전 블록의 해시, 상기 블록의 높이값, 상기 블록을 생성한 시각에 해당하는 타임스탬프, 상기 페이로드에 저장된 트랜젝션에 대한 트랜젝션 머클 트리, 상기 리더 노드의 서명, 상기 리더 노드의 공개키 및 상기 이전 블록에 대한 투표 데이터에 대응하는 대응값을 포함하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  7. 제6항에 있어서,
    상기 이전 블록에 대한 투표 데이터는,
    검증에 성공했음을 알리는 투표인 성공 투표를 포함하고,
    상기 성공 투표는,
    투표한 블록의 높이, 투표한 블록의 해시, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  8. 제7항에 있어서,
    상기 이전 블록에 대한 투표 데이터는,
    검증에 실패했음을 알리는 투표인 실패 투표를 더 포함하고,
    상기 실패 투표는,
    투표한 블록의 높이, 투표한 블록의 높이에서 몇번째 블록 생성에 실패했는지 나타내는 블록 실패 횟수, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  9. 제1항에 있어서,
    상기 검증 노드들 각각에서 기설정 기간 내에 상기 리더 노드로부터 상기 이전 블록이 수신되지 않으면, 검증에 실패했음을 알리는 투표를 네트워크에 포함된 노드들로 송신하는 단계
    를 더 포함하는 블록체인 시스템에서 블록체인을 생성하는 방법.
  10. 제1항에 있어서,
    기설정된 순서에 따른 다음 순번의 리더 노드에서 정족수 이상의 검증에 성공했음을 알리는 투표 데이터를 수신하지 못하면, 상기 블록에 대해서 블록생성 실패로 판단하고, 실패한 블록에 대한 투표 데이터를 더 포함하는 새로운 블록을 생성하는 단계
    를 더 포함하는 블록체인 시스템에서 블록체인을 생성하는 방법.
  11. 제10항에 있어서,
    상기 실패한 블록에 대한 투표 데이터는,
    검증에 실패했음을 알리는 투표인 실패 투표를 포함하고,
    상기 실패 투표는,
    투표한 블록의 높이, 투표한 블록의 높이에서 몇번째 블록 생성에 실패했는지 나타내는 블록 실패 횟수, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  12. 제11항에 있어서,
    상기 실패한 블록에 대한 투표 데이터는,
    검증에 성공했음을 알리는 투표인 성공 투표를 포함하고,
    상기 성공 투표는,
    투표한 블록의 높이, 투표한 블록의 해시, 투표한 노드의 공개키 및 투표한 노드의 서명을 포함하는
    블록체인 시스템에서 블록체인을 생성하는 방법.
  13. 기설정된 순서에 따라 리더 노드로 선정되었는지 확인하는 단계;
    확인결과 상기 리더 노드로 선정되었으면, 네트워크에 포함된 노드들로부터 이전 블록에 대해 투표한 투표 데이터를 수신하는 단계;
    상기 수신한 투표 데이터를 확인 결과 검증에 성공했음을 알리는 투표가 정족수 이상이면, 상기 이전 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인의 높이를 하나 증가 시키는 단계;
    상기 네트워크에 포함된 노드들로부터 블록에 추가할 트랜젝션을 수신하는 단계;
    상기 이전 블록에 대한 상기 투표 데이터와 상기 수신한 트랜젝션을 포함하는 블록을 생성하는 단계; 및
    상기 네트워크에 포함된 노드들로 상기 블록을 송신하는 단계
    를 포함하는 블록체인 시스템의 노드에서 블록체인을 생성하는 방법.
  14. 제12항에 있어서,
    상기 블록을 생성하는 단계는,
    이전 리더 노드가 블록 생성에 실패한 경우, 상기 블록에 실패한 블록에 대한 투표 데이터를 포함시켜 생성하는
    블록체인 시스템의 노드에서 블록체인을 생성하는 방법.
  15. 제13항에 있어서,
    상기 블록은,
    페이로드와 헤더를 포함하고,
    상기 페이로드는,
    상기 트랜젝션과 이전 블록에 대한 투표 데이터를 포함하고,
    상기 헤더는,
    상기 블록의 해시, 상기 이전 블록의 해시, 상기 블록의 높이값, 상기 블록을 생성한 시각에 해당하는 타임스탬프, 상기 페이로드에 저장된 트랜젝션에 대한 트랜젝션 머클 트리, 상기 리더 노드의 서명, 상기 리더 노드의 공개키 및 상기 이전 블록에 대한 투표 데이터에 대응하는 대응값을 포함하는
    블록체인 시스템의 노드에서 블록체인을 생성하는 방법.
  16. 기설정된 순서에 따라 리더 노드로 선정되었는지 확인하는 단계;
    확인결과 상기 리더 노드로 선정되지 않았고, 생성되는 블록에 포함시킬 트랜젝션이 존재하면, 상기 트랜젝션을 상기 리더 노드로 송신하는 단계;
    상기 리더 노드로부터 상기 리더 노드에서 생성한 블록을 수신하는 단계;
    상기 리더 노드가 상기 블록을 생성했는지 확인하는 제1 검증 단계;
    상기 블록의 높이와 상기 블록에 포함된 이전 블록 해시가 올바른지 확인하는 제2 검증 단계;
    상기 블록에 포함된 트랜젝션의 데이터 형식과 서명이 올바른지 확인하는 제3 검증 단계;
    상기 블록의 이전 블록이 존재하면, 상기 블록에 포함된 상기 이전 블록의 투표결과를 통해서, 상기 이전 블록의 해시를 가진 투표 데이터가 정족수 이상 포함되어 있는지 확인하여 상기 이전 블록을 검증하는 제4 검증 단계;
    상기 제1 검증 단계에서 상기 제4 검증 단계의 검증 결과 이상이 없으면 검증에 성공했다고 판단하는 단계;
    검증 결과에 따라 검증 성공을 또는 검증 실패를 나타내는 투표 데이터를 네트워크에 포함된 노드들로 송신하는 단계;
    상기 네트워크에 포함된 노드들로부터 상기 블록에 대한 투표 데이터를 수신하는 단계; 및
    상기 송신한 투표 데이터와 상기 수신한 투표 데이터를 확인 결과 검증에 성공했음을 알리는 투표 데이터가 정족수 이상이면, 상기 블록에 대해서 블록생성에 성공했다고 판단하고 블록체인에 상기 블록을 추가하는 단계
    를 포함하는 블록체인 시스템의 노드에서 블록체인을 생성하는 방법.
  17. 제16항에 있어서,
    상기 리더 노드로부터 기설정된 기간 내에 상기 블록이 수신되지 않으면, 검증에 실패했음을 알리는 투표 데이터를 네트워크에 포함된 노드들로 송신하는 단계
    를 더 포함하는 블록체인 시스템의 노드에서 블록체인을 생성하는 방법.
  18. 제1항 내지 제17항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020170151659A 2017-11-14 2017-11-14 비잔틴 장애를 극복 가능한 블록체인 생성 방법 KR102019211B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170151659A KR102019211B1 (ko) 2017-11-14 2017-11-14 비잔틴 장애를 극복 가능한 블록체인 생성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170151659A KR102019211B1 (ko) 2017-11-14 2017-11-14 비잔틴 장애를 극복 가능한 블록체인 생성 방법

Publications (2)

Publication Number Publication Date
KR20190054738A true KR20190054738A (ko) 2019-05-22
KR102019211B1 KR102019211B1 (ko) 2019-11-04

Family

ID=66679860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170151659A KR102019211B1 (ko) 2017-11-14 2017-11-14 비잔틴 장애를 극복 가능한 블록체인 생성 방법

Country Status (1)

Country Link
KR (1) KR102019211B1 (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110752969A (zh) * 2019-10-21 2020-02-04 腾讯科技(深圳)有限公司 一种性能检测方法、装置、设备及介质
KR102106590B1 (ko) * 2019-07-17 2020-05-04 (주)가민정보시스템 이종의 블록체인 플랫폼 간의 연동이 가능한 블록체인 네트워크 시스템 및 이에 따른 블록 체이닝 방법
KR20200136073A (ko) * 2019-05-27 2020-12-07 넷마블 주식회사 블록체인 네트워크에 기반한 게임 데이터 저장 및 활용 방법
KR20200144214A (ko) * 2019-06-18 2020-12-29 한국과학기술원 네트워크 상에서 합의된 데이터를 전송하는 방법 및 네트워크 상에서 합의된 데이터를 전송하기 위한 전자기기
KR20210020575A (ko) * 2019-08-16 2021-02-24 숭실대학교산학협력단 오픈스택 서비스 인증 방법 및 장치
KR20210061243A (ko) * 2019-11-19 2021-05-27 한양대학교 산학협력단 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램
WO2021172779A1 (ko) * 2020-02-26 2021-09-02 (주)소셜인프라테크 블록체인 기반 합의를 통한 전자문서 통합 관리 시스템
KR20220013846A (ko) * 2020-07-27 2022-02-04 한국전자통신연구원 블록체인 네트워크의 블록 합의 방법 및 장치
US11343073B2 (en) 2019-06-18 2022-05-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
WO2022211275A1 (ko) * 2021-04-02 2022-10-06 주식회사 헤세그 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법
CN115396504A (zh) * 2022-08-23 2022-11-25 浪潮工业互联网股份有限公司 一种区块链投票数据缓存方法、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
JP2017188883A (ja) * 2017-03-23 2017-10-12 株式会社bitFlyer プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
JP2017188883A (ja) * 2017-03-23 2017-10-12 株式会社bitFlyer プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
G.S.Veronese 외 3인, "Spin one’s wheels? byzantine fault tolerance with a spinning primary", 2009 28th IEEE International Symposium on Reliable Distributed Systems , September 2009.* *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200136073A (ko) * 2019-05-27 2020-12-07 넷마블 주식회사 블록체인 네트워크에 기반한 게임 데이터 저장 및 활용 방법
US11343073B2 (en) 2019-06-18 2022-05-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
US11470150B2 (en) 2019-06-18 2022-10-11 Korea Advanced Institute Of Science And Technology Agreed data transmit method and electronic apparatus for transmitting agreed data in network
KR20200144214A (ko) * 2019-06-18 2020-12-29 한국과학기술원 네트워크 상에서 합의된 데이터를 전송하는 방법 및 네트워크 상에서 합의된 데이터를 전송하기 위한 전자기기
KR102106590B1 (ko) * 2019-07-17 2020-05-04 (주)가민정보시스템 이종의 블록체인 플랫폼 간의 연동이 가능한 블록체인 네트워크 시스템 및 이에 따른 블록 체이닝 방법
KR20210020575A (ko) * 2019-08-16 2021-02-24 숭실대학교산학협력단 오픈스택 서비스 인증 방법 및 장치
CN110752969B (zh) * 2019-10-21 2021-03-16 腾讯科技(深圳)有限公司 一种性能检测方法、装置、设备及介质
CN110752969A (zh) * 2019-10-21 2020-02-04 腾讯科技(深圳)有限公司 一种性能检测方法、装置、设备及介质
KR20210061243A (ko) * 2019-11-19 2021-05-27 한양대학교 산학협력단 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램
WO2021172779A1 (ko) * 2020-02-26 2021-09-02 (주)소셜인프라테크 블록체인 기반 합의를 통한 전자문서 통합 관리 시스템
KR20220013846A (ko) * 2020-07-27 2022-02-04 한국전자통신연구원 블록체인 네트워크의 블록 합의 방법 및 장치
WO2022211275A1 (ko) * 2021-04-02 2022-10-06 주식회사 헤세그 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법
KR20220137366A (ko) * 2021-04-02 2022-10-12 주식회사 헤세그 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법
CN115396504A (zh) * 2022-08-23 2022-11-25 浪潮工业互联网股份有限公司 一种区块链投票数据缓存方法、设备及介质
CN115396504B (zh) * 2022-08-23 2024-01-16 浪潮工业互联网股份有限公司 一种区块链投票数据缓存方法、设备及介质

Also Published As

Publication number Publication date
KR102019211B1 (ko) 2019-11-04

Similar Documents

Publication Publication Date Title
KR20190054738A (ko) 비잔틴 장애를 극복 가능한 블록체인 생성 방법
US20210026745A1 (en) Methods, systems, and computer readable media for providing byzantine fault tolerance
Miller et al. The honey badger of BFT protocols
KR101930825B1 (ko) 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법
Mazieres The stellar consensus protocol: A federated model for internet-level consensus
CN109242685B (zh) 基于区块链的共识和验证方法及装置
KR101937220B1 (ko) 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법
KR101937216B1 (ko) 블록체인을 인증서 발급기관으로 이용해서 인증서를 관리하는 장치 및 방법
CN111383021B (zh) 基于区块链网络的节点管理方法、装置、设备及介质
CN109118230B (zh) 基于区块链的信息处理方法和装置
CN110546604A (zh) 基于未确定数据保护区块链交易
JP5801482B2 (ja) キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム
EP3659060B1 (en) Consensus protocol for permissioned ledgers
KR20200083145A (ko) 블록체인 네트워크의 합의 방해요인 제거를 위한 장애 허용 합의 방법
KR101890584B1 (ko) m of n 다중 서명에 의한 인증서 서비스를 제공하는 방법 및 이를 이용한 서버
Madsen et al. Transforming byzantine faults using a trusted execution environment
CN110391912B (zh) 一种基于秘密共享机制的分布式评估决策方法及系统
Kuo et al. Fair Byzantine agreements for blockchains
CN113411191A (zh) 数据审计方法及装置
Sun et al. Mosaic-a blockchain consensus algorithm based on random number generation
CN114650289A (zh) 用于区块链共识的方法及装置
Su Cross-chain interaction model in a fully verified way
Gupta Towards performance and dependability benchmarking of distributed fault tolerance protocols
CN111756738A (zh) 快速构建Web应用的系统框架、数据处理方法及系统
Madsen Securing Distributed Business Process Model Execution

Legal Events

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