KR20220137366A - 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법 - Google Patents

장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20220137366A
KR20220137366A KR1020210043345A KR20210043345A KR20220137366A KR 20220137366 A KR20220137366 A KR 20220137366A KR 1020210043345 A KR1020210043345 A KR 1020210043345A KR 20210043345 A KR20210043345 A KR 20210043345A KR 20220137366 A KR20220137366 A KR 20220137366A
Authority
KR
South Korea
Prior art keywords
block
nodes
core
message
attempt
Prior art date
Application number
KR1020210043345A
Other languages
English (en)
Other versions
KR102574890B1 (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 KR1020210043345A priority Critical patent/KR102574890B1/ko
Priority to PCT/KR2022/002422 priority patent/WO2022211275A1/ko
Publication of KR20220137366A publication Critical patent/KR20220137366A/ko
Application granted granted Critical
Publication of KR102574890B1 publication Critical patent/KR102574890B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법이 개시된다. 블록체인 시스템의 동작 방법은 블록체인 시스템이 클라이언트로부터 트랜잭션의 실행 요청을 제공받는 단계, 블록 빌더가 요청된 트랜잭션을 포함하는 블록을 생성하는 단계, 상기 블록 빌더가 블록의 생성을 완료하고 다른 코어 노드로 블록 메시지를 멀티캐스트하는 단계. 상기 다른 코어 노드가 생성된 블록을 검증하는 단계, 완성된 블록의 검증 결과에 따라, 다른 코어 노드들이 검증 결과 메시지를 멀티캐스트하는 단계를 포함하되,상기 검증 결과로부터 2f+1개 이상의 코어 노드에 의한 승인 메시지가 확인되는 경우 상기 코어 노드는 상기 블록을 커밋한다.

Description

장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법{BLOCKCHAIN SYSTEM RESISTANT TO FAULTY NODES AND ITS OPERATION METHOD}
본 발명은 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법에 관한 것으로, 더욱 구체적으로는 전체 코어 노드 중 1/3 이하가 장애(faulty)인 경우에 안전(safety) 및 활성(liveness) 속성을 모두 보장할 수 있는 POBFT(Practical Optimistic Byzantine Fault Tolerance) 기반 블록체인 합의 알고리즘을 구현하는 블록체인 시스템 및 그 동작 방법에 관한 것이다.
블록체인은 2008년 사토시 나카모토의 Bitcoin: A Peer-to-Peer Electronic Cash System에서 블록과 블록을 연결하는 방법에서 유래하였다. 블록체인은 다수의 네트워크 노드로 구성된 분산 네트워크 상에서 해쉬링크로 묶인 데이터를 공유하는 분산 데이터베이스를 총칭한다.
블록체인을 구성하는 블록 생성에 참여하는 네트워크 노드를 코어 노드(core nodes)라고 하며, 코어 노드는 블록체인을 구축하는 동안 블록 내용에 대한 컨센서스를 형성한다. 즉, 블록체인의 블록에 이중 지출(double spending)이나 서로 다른 로컬 상태를 갖는 코어 노드들을 초래하는 잘못된 트랜잭션이 포함되어서는 안된다.
컨센서스에 참여하는 노드의 비잔틴 동작에도 불구하고 신뢰할 수 있는 합의를 이루기 위한 합의 알고리즘으로 PBFT(Practical Byzantine Failure Tolerance)이 제안된 바 있다. 본 발명은 합의 계층과 애플리케이션 계층의 안전성을 모두 얻을 수 있는 블록체인 합의 알고리즘인 POBFT(Practical Optimistic Byzantine Failure Tolerance)를 제안하고자 한다.
본 발명이 해결하고자 하는 기술적 과제는, 전체 코어 노드 중 1/3 이하가 장애(faulty)인 경우에 안전(safety) 및 활성(liveness) 속성을 모두 보장할 수 있는 POBFT(Practical Optimistic Byzantine Fault Tolerance) 기반 블록체인 합의 알고리즘을 구현하는 블록체인 시스템 및 그 동작 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상술한 기술적 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 블록체인 시스템의 동작 방법은, 상기 블록체인 시스템이 클라이언트로부터 트랜잭션의 실행 요청을 제공받는 단계, 블록 빌더가 요청된 트랜잭션을 포함하는 블록을 생성하는 단계, 상기 블록 빌더가 블록의 생성을 완료하고 다른 코어 노드로 블록 메시지를 멀티캐스트하는 단계. 상기 다른 코어 노드가 생성된 블록을 검증하는 단계, 완성된 블록의 검증 결과에 따라, 다른 코어 노드들이 검증 결과 메시지를 멀티캐스트하는 단계를 포함하되,상기 검증 결과로부터 2f+1개 이상의 코어 노드에 의한 승인 메시지가 확인되는 경우 상기 코어 노드는 상기 블록을 커밋한다.
본 발명의 몇몇 실시예에서, 상기 블록체인 시스템이 트랜잭션 처리 결과를 상기 클라이언트에 제공하는 단계를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 높이 H인 블록을 생성하는 A번째 시도에서 코어 노드가 2f+1개 이상의 코어 노드로부터의 높이 H이고 A'번째 시도의 메시지를 수신하는 경우, 상기 A'번째 시도의 메시지를 수신한 코어 노드는 현재 상태를 취소하고 자신의 상태를 업데이트하는 단계를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 높이 H인 블록을 생성하는 A번째 시도에서 코어 노드가 2f+1개 이하의 코어 노드로부터의 높이 H이고 A'번째 시도의 메시지를 수신하는 경우, 상기 A'번째 시도의 메시지를 수신한 코어 노드는 상기 A'번째 시도의 메시지에 기초하여 비잔틴 동작의 증거를 기록할 수 있다.
본 발명의 몇몇 실시예에서, 상기 블록 빌더가 상기 A'번째 시도의 메시지를 수신한 경우, 상기 블록의 생성을 취소하고 상기 A'번째 시도의 블록을 대기할 수 있다.
본 발명의 몇몇 실시예에서, 상기 블록 빌더에 의해 생성되는 블록은, 블록의 현재 높이(height)와, 상기 현재 높이에서 폐기된 블록 제안 수인 시도(attempt)를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 블록 빌더에 의해 생성되는 블록은, 해당 블록의 타당성을 증명하는 데이터인 증명(proof)을 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 증명은, 상기 블록의 직전 높이의 블록의 생성 시 코어 노드로부터 생성된 승인 메시지의 목록을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 높이 H인 블록을 생성하는 A번째 시도에서 코어 노드가 2f+1개 이상의 코어 노드로부터의 높이 H+n이고 A번째 시도의 메시지를 수신하는 경우, 상기 A'번째 시도의 메시지를 수신한 코어 노드는 자신 이외의 코어 노드로부터 블록 데이터를 다운로드하는 단계를 더 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 블록체인 시스템은, 복수의 컴퓨팅 장치를 포함하는 노드가 상호 연결된 블록체인 네트워크, 및 상기 블록체인 네트워크에 액세스하는 클라이언트를 포함하되, 상기 블록체인 네트워크는, 상기 클라이언트로부터 트랜잭션의 요청을 제공받고, 블록 빌더가 요청된 트랜잭션을 포함하는 블록을 생성하는 단계, 상기 블록 빌더가 블록의 생성을 완료하고 다른 코어 노드로 블록 메시지를 멀티캐스트하는 단계, 상기 다른 코어 노드가 생성된 블록을 검증하는 단계, 완성된 블록의 검증 결과에 따라, 다른 코어 노드들이 검증 결과 메시지를 멀티캐스트하는 단계를 수행하되, 상기 검증 결과로부터 2f+1개 이상의 코어 노드에 의한 승인 메시지가 확인되는 경우 상기 코어 노드는 상기 블록을 커밋한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 실시예에 따른 블록체인 시스템 및 그 동작 방법에 의하면, POBFT 합의에 기초하여 장애가 있는 f개의 노드에도 불구하고 2f+1개 이상의 노드에 의한 정상 동작(승인, 빌더 교체 등)이 존재하면 정상적으로 블록의 생성이 가능함으로써 비잔틴 장군 문제를 해결할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 몇몇 실시예에 따른 블록체인 시스템의 블록도이다.
도 2는 본 발명의 몇몇 실시예에 따른 블록체인 시스템이 일반적인 상황에서 블록의 생성, 승인, 커밋 동작을 수행하는 것을 설명하기 위한 순서도이다.
도 3은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크에서 생성하는 블록을 예시적으로 설명하기 위한 도면이다.
도 4는 본 발명의 몇몇 실시예에 따른 블록체인 시스템의 동작을 나타내기 위한 흐름도이다.
도 5a 및 5b는 본 발명의 실시예에 따른 블록체인 시스템에서 적대적 노드에 의한 동작을 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 구성 요소가 다른 구성 요소와 "연결된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 구성 요소와 직접 연결 또는 커플링된 경우 또는 중간에 다른 구성 요소를 개재한 경우를 모두 포함한다. 반면, 하나의 구성 요소가 다른 구성 요소와 "직접 연결된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 구성 요소를 개재하지 않은 것을 나타낸다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 구성 요소들을 서술하기 위해서 사용되나, 이들 구성 요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성 요소를 다른 구성 요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성 요소는 본 발명의 기술적 사상 내에서 제2 구성 요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 실시예에서 사용되는 '부' 또는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부' 또는 '모듈'은 어떤 역할들을 수행한다. 그러나 '부' 또는 '모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부' 또는 '모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부' 또는 '모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소과, 함수들, 서브루틴들, 프로그램 코드의 세그먼트들, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '부' 또는 '모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는 '모듈'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '모듈'들로 더 분리될 수 있다.
도 1은 본 발명의 몇몇 실시예에 따른 블록체인 시스템의 블록도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인에 액세스하기 위한 시스템은 클라이언트(100)와 블록체인 네트워크(200)를 포함할 수 있다.
클라이언트(100)는 블록체인 네트워크(200)를 구성하는 어느 하나의 노드(201~205)와 연결됨으로써 블록체인 네트워크(200)가 제공하는 서비스를 제공받을 수 있다. 클라이언트(100)는 예를 들어, 블록체인 네트워크(200)를 이용하여 코인을 전송하거나 스마트 컨트랙트(smart contract)를 생성하는는 컴퓨팅 장치일 수 있다. 클라이언트(100)는 예를 들어 PC(Personal Computer), 이동 전화, 태블릿 컴퓨터, 스마트 폰, 퍼스널 디지털 어시스턴트(PDA), 태블릿 피시 등의 전자 장치를 포함할 수 있다.
또한, 클라이언트(100)는 블록체인 네트워크(200)에 액세스함으로써 코인의 트랜잭션하기 위한 개인키를 저장하는 하드웨어 지갑(wallet)일 수도 있다.
클라이언트(100)는 블록체인 네트워크(200)에 트랜잭션 요청을 제공할 수 있다. 블록체인 네트워크(2000는 클라이언트(100)로부터 제공된 트랜잭션 요청을 처리하고, 그 결과를 클라이언트(100)로 제공할 수 있다.
클라이언트(100) 측에서는 블록체인 네트워크(200)가 복수의 트랜잭션을 차례로 수행하는 블랙박스와 같이 보일 수 있다. 즉, 블록체인 네트워크(200)를 이루는 복수의 노드 중 장애가 없는(non-faulty) 모든 노드가 수신된 트랜잭션을 동일한 순서로 처리하고 동일한 트랜잭션 실행 결과를 클라이언트(100)로 제공할 수 있다. 특히 클라이언트(100)로부터 트랜잭션 요청을 제공받고 그 결과를 출력하는 것은 블록체인의 애플리케이션 레이어(application layer)에서 수행될 수 있다.
블록체인 네트워크(200)는 복수의 노드(201~205)의 집합으로 구성된 네트워크로 구성될 수 있다. 복수의 노드(201~205) 각각은 컴퓨팅 장치이고, 널리 알려진 네트워크 프로토콜을 통해 복수의 노드(201~205)들 사이의 연결이 구성될 수 있다. 도 1에서 예시적으로 블록체인 네트워크(200)가 5개의 노드(201~205)를 포함하는 것으로 도시되었으나 이는 예시적인 것으로, 블록체인 네트워크(200)에 포함될 수 있는 노드의 개수는 제한되지 않는다.
복수의 노드(201~205) 중에는 블록을 형성할 수 있는 코어 노드(core node)들이 포함될 수 있다. 코어 노드들은 블록 생성에 참여하는 노드를 의미한다. 본 발명의 실시예에 따른 합의 알고리즘인 POBFT가 보장하는 f개의 장애를 가진 노드에 대하여 안전(safety) 및 활성(liveness) 속성을 보장하기 위해 복수의 노드(201~205)들은 3f+1개 이상의 코어 노드들을 포함하여 리던던시(redundancy)를 확보할 수 있다. 블록들의 생성 과정에서 코어 노드 집합에 속하는 코어 노드들은 변할 수 있다. 즉, 코어 노드 집합은 블록의 높이마다 갱신될 수 있다.
블록체인 네트워크(200)는 공용 네트워크에서 실행되는 공용 블록체인(public blockchain)일 수 있다.
이하에서는, 블록체인 네트워크(200)가 POBFT 합의 알고리즘을 이용하여 f개의 장애를 가진(faulty) 노드가 있는 가운데 블록체인의 안전(safety) 및 활성(liveness)를 보장할 수 있는 동작 방법이 서술된다.
도 2는 본 발명의 몇몇 실시예에 따른 블록체인 시스템이 일반적인 상황에서 블록의 생성, 승인, 커밋 동작을 수행하는 것을 설명하기 위한 순서도이다.
도 2를 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인 시스템은 클라이언트로부터 트랜잭션의 실행 요청을 제공받는 단계(S110), 블록 빌더로 선정된 코어 노드가 요청된 트랜잭션을 포함하는 블록을 생성하는 단계(S120), 빌더 노드가 트랜잭션이 포함된 블록을 생성하여 다른 코어 노드로 블록 메시지를 멀티캐스트하는 단계(S130), 코어 노드들이 블록을 승인(acknowledge)하고 다른 코어 노드로 승인 메시지를 멀티캐스트하는 단계(S140) 및 2f+1개 이상의 코어 노드에 의한 승인 메시지가 제공된 경우 승인된 블록을 커밋(commit)하는 단계(S150), 트랜잭션 처리 결과를 클라이언트에 제공하는 단계(S160)를 포함할 수 있다.
먼저, 클라이언트로부터 트랜잭션의 실행 요청을 제공받는 단계(S110)가 진행된다. 블록체인 네트워크(200)는 클라이언트(100)로부터 복수의 트랜잭션 요청을 제공받고, 이들을 포함하는 블록을 생성할 수 있다.
이어서, 코어 노드들 중 하나의 노드가 블록 빌더로 선정되고, 요청된 트랜잭션을 포함하는 블록을 생성한다(S120). 블록 빌더는 코어 노드들 중 임의의 노드로 선정될 수 있다. 예를 들어 총 n개의 코어 노드들 중에, 블록 높이가 H이고 블록 생성을 위한 A번째 시도에서 블록 빌더는 (H + A) mod n 번째 코어 노드로 선정될 수 있으나 본 발명이 이에 제한되는 것은 아니다. 코어 노드들은 상기와 같은 블록 빌더의 선정 규칙을 숙지함으로써 자신이 블록 빌더로 선정된 것을 인식할 수 있다.
선정된 블록 빌더가 생성하는 블록의 구조와 관련하여 도 3을 이용하여 더욱 자세하게 설명한다.
도 3은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크(200)에서 생성하는 블록을 예시적으로 설명하기 위한 도면이다.
도 3을 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인 네트워크(200)는 제네시스 블록(B0)으로부터 이어지는 블록들(B1~Bi)을 생성할 수 있다. 각각의 블록들은 높이(height)와 시도(attempt)라는 두 가지 매개 변수를 포함할 수 있다. 높이는 코어 노드로부터 해당 블록 이전에 생성한 블록의 수를 의미한다. 예를 들어, 제네시스 블록(B0)은 높이가 0이고, 첫 번째 블록(B1)은 높이가 1이다. 이어서, 높이 H에서 블록으로 연결되는 블록은 높이 H+1을 갖는다.
시도(attempt)는 현재 블록 이전의 현재 높이에서 폐기된 블록 제안 수를 의미하며, 이는 이하 설명하는 과정을 통해 코어 노드들에 의하여 승인되지 못함으로써 정상적으로 커밋되지 못한 블록 제안 수를 의미한다. 현재 높이에서 블록을 생성하려는 첫 번째 시도는 0이고, 해당 시도가 실패하는 경우 현재 높이에서 다음 시도 1로 진행한다. 다음 시도에서 블록 빌더는 이전 시도에서의 블록 빌더와 다른 코어 노드 중에 선택될 수 있다. 이하에서 높이가 H이고 A번째 시도에 의해 생성된 블록을 Block(H, A)로 표기한다.
블록체인 네트워크(200)에 의해 생성된 블록은 부모 블록, 즉 높이가 1 낮은 블록을 참조함으로써 블록체인을 구성할 수 있다. 블록의 참조 정보는 블록 헤더에 포함될 수 있다.
한편, 증명(proof)은 해당 블록의 타당성을 증명하는 데이터일 수 있다. 예를 들어, 높이 n, 시도 0인 블록(Block(n, 0))에서의 증명(proof)는 이전 블록(Block(n-1, A))의 생성 시 합의에 참여하는 노드에서 생성된 승인 (acknowledge) 메시지의 목록을 포함할 수 있다. 이 목록은 이전 블록이 대부분의 노드(2f+1개의 노드보다 많은)에서 허용되었다는 것을 증명하기 위해 다른 노드에서 사용될 수 있다.
또는 높이 n, 시도 A(A>0)인 블록(Block(n, A))에서의 증명(proof)은 이전 시도(A-1)에서 블록 생성에 대한 합의에 실패하고 블록 빌더를 교체하기 위한 메시지(ChangeBuilder(n, A-1))의 목록을 포함할 수 있다.
증거(evidence)는 블록 작성자가 블록을 구성하는 시점에 수신한 비잔틴 동작(byzantine behavior)의 증거(evidence) 메시지의 목록이다. 구체적으로, 각각의 증거 메시지에는 블록체인 네트워크(200)의 특정 노드가 비잔틴 동작을 수행했다는 것을 입증하기 위한 증거가 포함될 수 있다.
비잔틴 동작은 복수의 코어 노드들 중 장애가 있는(faulty) 노드 또는 적대적(adversary) 노드에 의해 수행되는 동작을 의미한다. 비잔틴 동작은 예를 들어 i)블록 빌더가 동일한 높이와 시도에서 서로 다른 두 개의 블록(서로 다른 해쉬를 갖는)을 생성하는 경우, 또는 ii)블록 빌더가 아닌 다른 코어 노드가 생성된 블록에 대한 서로 다른 메시지를 전송하는 경우로, 구체적으로 동일한 코어 노드가 동일한 높이와 시도에 대하여 서로 다른 내용의 승인 메시지를 전송하는 경우, 승인 메시지와 빌더 교체의 메시지를 전송하는 경우, 서로 다른 내용의 빌더 교체 메시지를 전송하는 경우에 해당한다.
비잔틴 동작이 포함된 메시지를 전송받은 코어 노드는 증거(evidence) 메시지를 생성하여 다른 코어 노드들로 멀티캐스트할 수 있다. 예를 들어 블록 빌더로부터 동일한 높이와 시도에서 서로 다른 해쉬를 갖는 두 개의 블록을 제공받은 코어 노드는 Evidence(Block, Message1, Message2) 메시지를 생성하여 다른 코어 노드로 멀티캐스트할 수 있다. 또는 동일한 코어 노드로부터 서로 다른 내용의 승인 메시지나 빌더 교체의 메시지를 제공받은 경우, Evidence(Acknowledgment, Message1, Message2) 메시지를 생성하여 다른 코어 노드로 멀티캐스트할 수 있다.
위와 같이 비잔틴 동작의 증거로써 블록에 기록된 증거(evidence)는 블록의 커밋이 완료되면 애플리케이션 계층으로 전달됨으로써 해당 동작을 한 코어 노드를 처벌하는 근거로 이용될 수 있다.
위에서 설명한 것과 같이, 코어 노드들로부터 생성된 각각의 블록들(B1~Bi)은 클라이언트(100)로부터 요청된 트랜잭션들(txa ~ txz)에 관한 정보를 포함하고 있을 수 있다.
블록 빌더는 트랜잭션, 승인(acknowledgment), 증명(proof), 증거(evidence) 및 블록 헤더의 정보로부터 머클 트리를 계산하여 현재 블록의 ID를 생성함으로써 블록을 생성할 수 있다. 블록 빌더는 직전 블록에 대한 승인 메시지, 비잔틴 동작의 증거 메시지 등을 수집하고 블록 생성에 이용할 수 있다.
도 4는 본 발명의 몇몇 실시예에 따른 블록체인 시스템의 동작을 나타내기 위한 흐름도이다.
도 3과 도 4를 참조하면, 블록 빌더는 높이 H이이고 A번째 시도에서 블록을 생성(S201)하는 동안 Building(H, A)의 상태를 가질 수 있다.
한편, 블록 빌더가 블록을 생성하는 동안, 나머지 코어 노드들은 블록 생성을 대기한다. 높이 H이고 A번째 시도의 블록 생성을 대기하는 나머지 코어 노드들은 WaitForBlock(H, A)의 상태를 가질 수 있다. 또한, 나머지 코어 노드들은 블록 생성의 대기 상태를 갖는 동시에 타이머를 시작(S203)할 수 있다. 나머지 코어 노드들은 상기 타이머가 완료되었음에도 불구하고 블록 빌더로부터 블록 메시지가 전송되지 않은 경우(S206)에 오류가 발생함을 감지하고 빌더 교체의 메시지를 각 노드에 멀티캐스트할 수 있다.
이어서, 블록 빌더는 트랜잭션이 포함된 블록을 완성하여 다른 코어 노드로 블록을 멀티캐스트한다(S130).
블록 빌더는 높이가 H이고 A번째 시도의 블록 생성을 완료하면 다른 코어 노드들로 Block(H, A) 메시지를 멀티캐스트할 수 있다.
각각의 코어 노드들은 수신된 블록 메시지에 기초하여 블록을 승인하고, 승인 결과를 다른 코어 노드들로 멀티캐스트할 수 있다(S140).
블록 메시지를 제공받은 각각의 코어 노드들은 i)블록 빌더에 의한 적절한 서명이 존재하는지, ii)블록 ID의 서명은 블록 빌더의 공용 키에 해당하는지, iii)블록 메시지에 포함된 승인(acknowledgment), 즉 직전 높이의 블록들에 대한 승인이 타당한지 여부, iv)증거(evidence)가 유효한지 여부 및 v)블록 ID가 머클 트리의 적절한 루트에 해당하는지 여부 등을 확인(S202)할 수 있다.
상기 승인의 타당 여부는 구체적으로, 직전 높이의 블록의 승인이 코어 노드 집합의 2/3 이상에 의해 제공되었는지 여부를 포함할 수 있다. 또한, 증거의 유효 여부는 해당 증거와 관련된 높이의 코어 노드 집합에 의한 서명이 포함되었는지 여부와, 비잔틴 동작에 대한 유효한 증거가 포함되었는지 여부를 포함할 수 있다.
한편, 본 발명의 몇몇 실시예에 따른면, 트랜잭션이 타당한지 여부에 관하여 각각의 코어 노드들은 검증하지 않는다. 즉, 상기 승인은 합의 계층(consensus layer)에 관한 타당성(feasibility)을 검증하는 것에 목적이 있으며, 트랜잭션의 유효 여부에 관한 검증은 애플리케이션 계층에서 수행될 뿐이다. 따라서 본 발명의 블록체인 시스템은 블록과 블록 사이의 빠른 확인 시간(confirmation time)을 얻을 수 있다.
코어 노드가 전송된 블록 메시지(Block(H, A)에 대한 검증을 완료하고 승인한 경우, 승인 메시지(Acknowledgment(H, A))를 모든 코어 노드에 멀티캐스트할 수 있다(S204). 승인 메시지의 멀티캐스트를 완료한 코어 노드는 승인 대기 상태, 즉 다른 노드에 의한 승인 메시지를 수집하기 위한 상태(WairForAcknowledgments(H, A))에 진입할 수 있다.
만약 코어 노드가 타이머가 완료될 때까지 블록 메시지를 제공받지 못하거나(Timeout), 제공받은 블록 메시지의 검증에 실패한 경우(Invalidblock, S205) 오류가 발생함을 감지하고 블록 빌더 교체의 메시지(ChangingBuilder(H, A))를 각 노드에 멀티캐스트할 수 있다. 여기서 블록 빌더 교체의 메시지(ChangingBuilder(H, A))는 타임아웃 메시지(Timeout(H, A), S206) 또는 잘못된 블록 메시지(InvalidBlock(H, A))를 포함할 수 있다. 블록의 승인과 마찬가지로 코어 노드들로부터 2f+1개 이상의 블록 빌더 교체의 메시지가 수집된 경우(S209) 높이 H이고 A번째 시도는 종료되고 A+1번째 시도(S211)가 새롭게 시작될 수 있다.
결과적으로, 생성된 블록이 블록체인 네트워크(200)의 합의 레벨에서 승인되었는지(S204), 잘못된 블록(S205)에 해당하는지, 블록이 생성되지 못하고 타임아웃되었는지(S206)의 결정은 합의에 참여하는 코어 노드들로부터 2f+1개 이상의 동일한 종류의 메시지가 도착하였는지 여부(S207)의 판단에 따를 수 있다.
이어서, 다른 코어 노드들로부터 2f+1개 이상의 코어 노드에 의한 승인 메시지가 제공된 경우 해당 코어 노드는 블록을 커밋(commit)할 수 있다(S150, S208). 코어 노드는 블록을 커밋한 후 다음 높이의 블록을 생성(S210)을 대기하는 상태, 즉 WaitForBlock(H+1, 0)으로 진입할 수 있다. 코어 노드는 블록을 블록체인 스토리지에 저장하고, 블록으로부터의 트랜잭션, 증거(evidence) 및 지금까지 수신된 승인 메시지 목록을 애플리케이션 계층으로 전달할 수 있다. 애플리케이션 계층은 트랜잭션을 실행하고, 애플리케이션 상태를 업데이트하는 한편, 비잔틴 동작에 관한 증거(evidence)에 기초하여 잘못된 행동을 하는 노드를 처벌할 수 있다.
한편, 애플리케이션 계층은 승인(acknowledgment) 내용에 기초하여 모든 코어 노드가 활성 상태인지 여부를 추정하고, 트랜잭션, 증거(evidence) 및 활성 상태 추정 내용에 기초하여 합의 계층의 코어 노드의 집합을 업데이트할 수 있다.
마지막으로, 트랜잭션 처리 결과를 클라이언트에 제공하는 단계(S160)가 수행된다.
이상으로 PBOFT 합의에 기초하여 블록 빌더가 블록을 생성하여 다른 코어 노드로 블록 메시지를 멀티캐스트하고, 나머지 코어 노드들에 의해 블록이 승인되어 커밋에 이르는 일련의 과정을 설명하였다. 본 발명의 블록체인 시스템은 POBFT 합의에 기초하여 장애가 있는 f개의 노드에도 불구하고 2f+1개 이상의 노드에 의한 정상 동작(승인, 빌더 교체 등)이 존재하면 정상적으로 블록의 생성이 가능함으로써 비잔틴 장군 문제를 해결할 수 있다.
한편, 비동기 네트워크의 특성 상, 각각의 코어 노드들이 항상 동일한 블록 높이와 시도로 동기화됨을 보장할 수 없는 문제가 발생할 수 있다. 따라서 블록을 생성하는 블록 빌더 또는 다른 코어 노드들이 현재 블록의 높이 또는 시도에 대하여 지연(lagging)되는 경우에 다른 코어 노드들로부터 수신한 메시지에 기초하여 이를 따라잡는(catchup) 과정에 관하여 설명한다.
만약 높이 H이고 A번째 시도에서의 코어 노드가 높이 H' 또는 시도 A'(H' > H, A' > A)에 관한 메시지를 수신할 수 있다. 다만 해당 메시지 또한 비잔틴 동작의 결과물일 수 있기 때문에, 2f+1개 이상의 코어 노드로부터 해당 메시지를 수신하면 수신한 코어 노드는 자신이 뒤쳐져 있음을 인식하는 한편, 자신의 상태를 업데이트할 수 있다.
예를 들어, 높이 H이고 A번째 시도에서 블록을 생성하는 블록 빌더가 높이 H, A'번째(A' > A) 블록에 대한 승인(acknowledgment) 메시지(Acknowledgement(H, A'))를 제공받은 경우를 가정할 수 있다. 다른 코어 노드로부터 제공받은 메시지의 개수가 2f+1개 이상인 경우, 블록 빌더는 자신의 상태(Building(H, A))를 취소하고, 자신의 상태를 높이 H, A'번째 블록의 대기 상태(WaitForBlock(H, A'))로 업데이트할 수 있다.
또는, 높이 H이고 A번째 시도에서 블록 또는 승인을 대기하는 코어 노드가 높이 H+n, A''번째 블록의 메시지를 제공받은 경우를 가정할 수 있다. 다른 코어 노드로부터 제공받은 해당 메시지의 개수가 2f+1개 이상인 경우, 대기 중이던 코어는 자신의 상태를 취소하고 추가적으로 생성된 블록을 따라잡을 수 있다. 이후 블록을 따라잡는 것은 다른 코어 노드로부터 자신이 보유하고 있는 블록 이후의 블록 데이터를 다운로드하는 것을 포함할 수 있다.
물론, 코어 노드가 제공받은 메시지들이 2f+1개 이하의 다른 코어 노드로부터 제공될 수도 있다. 이는 적대적(adversary) 코어 노드로부터의 공격이거나 장애가 있는 노드로부터의 비정상적인 동작일 수 있다. 이 경우 메시지를 제공받은 코어 노드는 자신의 상태를 유지하며 비잔틴 동작에 대한 증거(evidence)로서 기록할 수 있다.
도 5a 및 5b는 본 발명의 실시예에 따른 블록체인 시스템에서 적대적 노드에 의한 동작을 설명하기 위한 도면이다.
도 5a를 참조하면, 3f+1개의 코어 노드들 가운데 f개의 적대적 노드에 의하여 동일한 높이와 시도(H, 0)에 대하여 서로 다른 내용의 블록 L과 M이 생성된 경우를 가정할 수 있다(S301). f개의 적대적 노드들은 블록 L과 M을 다른 코어 노드들로 멀티캐스트하면서, 블록 L과 M에 대한 f개의 승인을 각각 멀티캐스트할 수 있다. 블록 L과 M을 수신한 다른 코어 노드들 중에서, f+1개의 코어 노드들로 이루어진 집합, 예를 들어 블록 L을 수신한 f+1개의 노드들로 이루어진 집합은 이를 승인함으로써 블록 L에 대한 총 2f+1개의 승인이 얻어지고(S302), 이를 커밋함으로 인해 다음 높이(H+1)로 진행될 수 있다.
반면에 f개 이상의 코어 노드를 이루지 못하는 집합, 예를 들어 블록 M을 수신한 f개의 노드로 이루어진 집합은 이를 승인하였음에도 블록 M에 대한 총 2f개의 승인밖에 얻지 못함으로써(S303) 커밋으로 진행되지 못한다. 이를 통해 블록의 분리, 즉 포크(fork)가 발생되지 않는다. 블록 M을 제공받은 코어 노드들은 이후 높이의 블록에 대한 메시지를 제공받음에 따라 자신이 뒤쳐져있음을 인식하고 블록을 따라잡기(catchup) 시작할 수 있다.
한편, 도 5b를 참조하면, 3f+1개의 코어 노드들 가운데 f+1개의 적대적 노드에 의하여 동일한 높이와 시도(H, 0에 대하여 서로 다른 내용의 블록 L과 M이 생성된 경우를 가정한다(S401). f+1개의 적대적 노드들은 블록 L과 M을 다른 코어 노드들로 멀티캐스트하면서, 블록 L과 M에 대한 f+1개의 승인을 각각 멀티캐스트할 수 있다. 나머지 2f개의 코어 노드들 가운데 블록 L과 M을 수신한 다른 코어 노드들이 각각 f개의 코어 노드들로 이루어진 집합을 구성할 때, 포크가 발생할 가능성이 있다. 예를 들어 블록 L을 수신한 f개의 노드들로 이루어진 집합은 이를 승인함으로써 블록 L에 대한 총 2f+1개의 승인이 얻어지고(S302), 이를 커밋함으로 인해 다음 높이(H+1)로 진행될 수 있다. 또한 블록 M을 수신한 f개의 노드들로 이루어진 집합은 이를 승인함으로써 블록 M에 대한 총 2f+1개의 승인이 얻어지고(S303), 이를 커밋함으로서 다음 높이(H+1)로 진행될 수 있다. 이를 통해 블록 L과 M 각각으로 분기되어 포크가 발생할 수 있다. 이와 같은 경우는 이미 알려진 바와 같이 f개보다 많은 수의 적대적 노드에 의한 동작에 해당하므로 POBFT의 합의 레벨에도 불구하고 포크를 방지할 수 없다. 다만 H+1 이후 높이의 블록들은 비잔틴 동작의 증거(evidence)를 기록하고 있으므로, 블록체인 네트워크(200)의 운영 주체가 비잔틴 동작을 추적할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 클라이언트
200: 블록체인 네트워크

Claims (10)

  1. 3f+1개 이상의 코어 노드를 포함하는 블록체인 시스템의 동작 방법에 있어서,
    상기 블록체인 시스템이 클라이언트로부터 트랜잭션의 실행 요청을 제공받는 단계;
    블록 빌더가 요청된 트랜잭션을 포함하는 블록을 생성하는 단계;
    상기 블록 빌더가 블록의 생성을 완료하고 다른 코어 노드로 블록 메시지를 멀티캐스트하는 단계;
    상기 다른 코어 노드가 생성된 블록을 검증하는 단계;
    완성된 블록의 검증 결과에 따라, 다른 코어 노드들이 검증 결과 메시지를 멀티캐스트하는 단계를 포함하되,
    상기 검증 결과로부터 2f+1개 이상의 코어 노드에 의한 승인 메시지가 확인되는 경우 상기 코어 노드는 상기 블록을 커밋하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  2. 제 1 항에 있어서,
    상기 블록체인 시스템이 트랜잭션 처리 결과를 상기 클라이언트에 제공하는 단계를 더 포함하는
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  3. 제 1항에 있어서,
    높이 H인 블록을 생성하는 A번째 시도에서 코어 노드가 2f+1개 이상의 코어 노드로부터의 높이 H이고 A'번째 시도의 메시지를 수신하는 경우,
    상기 A'번째 시도의 메시지를 수신한 코어 노드는 현재 상태를 취소하고 자신의 상태를 업데이트하는 단계를 더 포함하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  4. 제 1 항에 있어서,
    높이 H인 블록을 생성하는 A번째 시도에서 코어 노드가 2f+1개 이하의 코어 노드로부터의 높이 H이고 A'번째 시도의 메시지를 수신하는 경우,
    상기 A'번째 시도의 메시지를 수신한 코어 노드는 상기 A'번째 시도의 메시지에 기초하여 비잔틴 동작의 증거를 기록하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  5. 제 2항에 있어서,
    상기 블록 빌더가 상기 A'번째 시도의 메시지를 수신한 경우,
    상기 블록의 생성을 취소하고 상기 A'번째 시도의 블록을 대기하는,
    장애 노드의 내성을 갖는 블록체인 시스템의 동작 방법.
  6. 제 1항에 있어서,
    상기 블록 빌더에 의해 생성되는 블록은,
    블록의 현재 높이(height)와, 상기 현재 높이에서 폐기된 블록 제안 수인 시도(attempt)를 포함하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  7. 제 6항에 있어서,
    상기 블록 빌더에 의해 생성되는 블록은,
    해당 블록의 타당성을 증명하는 데이터인 증명(proof)을 더 포함하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법..
  8. 제 7항에 있어서,
    상기 증명은,
    상기 블록의 직전 높이의 블록의 생성 시 코어 노드로부터 생성된 승인 메시지의 목록을 포함하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  9. 제 1항에 있어서,
    높이 H인 블록을 생성하는 A번째 시도에서 코어 노드가 2f+1개 이상의 코어 노드로부터의 높이 H+n이고 A번째 시도의 메시지를 수신하는 경우,
    상기 A'번째 시도의 메시지를 수신한 코어 노드는 자신 이외의 코어 노드로부터 블록 데이터를 다운로드하는 단계를 더 포함하는,
    장애 노드에 내성을 갖는 블록체인 시스템의 동작 방법.
  10. 3f+1개 이상의 코어 노드를 포함하는 블록체인 시스템의 동작 방법에 있어서,
    복수의 컴퓨팅 장치를 포함하는 노드가 상호 연결된 블록체인 네트워크; 및
    상기 블록체인 네트워크에 액세스하는 클라이언트를 포함하되,
    상기 블록체인 네트워크는,
    상기 클라이언트로부터 트랜잭션의 요청을 제공받고,
    블록 빌더가 요청된 트랜잭션을 포함하는 블록을 생성하는 단계;
    상기 블록 빌더가 블록의 생성을 완료하고 다른 코어 노드로 블록 메시지를 멀티캐스트하는 단계;
    상기 다른 코어 노드가 생성된 블록을 검증하는 단계;
    완성된 블록의 검증 결과에 따라, 다른 코어 노드들이 검증 결과 메시지를 멀티캐스트하는 단계를 수행하되,
    상기 검증 결과로부터 2f+1개 이상의 코어 노드에 의한 승인 메시지가 확인되는 경우 상기 코어 노드는 상기 블록을 커밋하는,
    장애 노드에 내성을 갖는 블록체인 시스템.
KR1020210043345A 2021-04-02 2021-04-02 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법 KR102574890B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210043345A KR102574890B1 (ko) 2021-04-02 2021-04-02 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법
PCT/KR2022/002422 WO2022211275A1 (ko) 2021-04-02 2022-02-18 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210043345A KR102574890B1 (ko) 2021-04-02 2021-04-02 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20220137366A true KR20220137366A (ko) 2022-10-12
KR102574890B1 KR102574890B1 (ko) 2023-09-06

Family

ID=83457657

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210043345A KR102574890B1 (ko) 2021-04-02 2021-04-02 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법

Country Status (2)

Country Link
KR (1) KR102574890B1 (ko)
WO (1) WO2022211275A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190018984A1 (en) * 2017-07-14 2019-01-17 Microsoft Technology Licensing, Llc Blockchain
KR20190054738A (ko) * 2017-11-14 2019-05-22 주식회사 아이콘루프 비잔틴 장애를 극복 가능한 블록체인 생성 방법
KR20200083145A (ko) * 2018-12-28 2020-07-08 연세대학교 산학협력단 블록체인 네트워크의 합의 방해요인 제거를 위한 장애 허용 합의 방법
KR20200112633A (ko) * 2019-03-18 2020-10-05 알리바바 그룹 홀딩 리미티드 합의 시스템 다운타임 복구
KR20200144466A (ko) * 2019-06-18 2020-12-29 한국전자통신연구원 탈 중앙화된 비잔틴 오류 감내 분산 합의 장치 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110730204B (zh) * 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190018984A1 (en) * 2017-07-14 2019-01-17 Microsoft Technology Licensing, Llc Blockchain
KR20190054738A (ko) * 2017-11-14 2019-05-22 주식회사 아이콘루프 비잔틴 장애를 극복 가능한 블록체인 생성 방법
KR20200083145A (ko) * 2018-12-28 2020-07-08 연세대학교 산학협력단 블록체인 네트워크의 합의 방해요인 제거를 위한 장애 허용 합의 방법
KR20200112633A (ko) * 2019-03-18 2020-10-05 알리바바 그룹 홀딩 리미티드 합의 시스템 다운타임 복구
KR20200144466A (ko) * 2019-06-18 2020-12-29 한국전자통신연구원 탈 중앙화된 비잔틴 오류 감내 분산 합의 장치 및 방법

Also Published As

Publication number Publication date
KR102574890B1 (ko) 2023-09-06
WO2022211275A1 (ko) 2022-10-06

Similar Documents

Publication Publication Date Title
Xiao et al. Distributed consensus protocols and algorithms
US11930107B2 (en) Entangled links, transactions and trees for distributed computing systems
Li et al. Beyond One-Third Faulty Replicas in Byzantine Fault Tolerant Systems.
JP7211943B2 (ja) イベントの削除を可能にする分散データベースのための方法および装置
Saito et al. What’s so different about blockchain?—blockchain is a probabilistic state machine
Thin et al. Formal analysis of a proof-of-stake blockchain
US11018980B2 (en) Data-interoperability-oriented trusted processing method and system
Muratov et al. YAC: BFT consensus algorithm for blockchain
CN112217683B (zh) 跨异构链数据可达性处理方法、系统、介质、设备、终端
CN112422341B (zh) 区块链网络的故障检测方法及相关设备
JP2022523217A (ja) 投票集計を伴うトポロジードリブンビザンチンフォールトトレラント合意プロトコル
Sohrabi et al. ZyConChain: A scalable blockchain for general applications
CN115098229A (zh) 事务处理方法、装置、节点设备及存储介质
CN115606150A (zh) 多层通信网络
Amiri et al. Saguaro: An edge computing-enabled hierarchical permissioned blockchain
Chai et al. Byzantine fault tolerant event stream processing for autonomic computing
Coelho et al. Community yellow paper: A technical specification for neo blockchain
Pang et al. AbitBridge: A cross-chain protocol based on main-sub-chain architecture
KR102574890B1 (ko) 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법
Zhao et al. Byzantine fault tolerant collaborative editing
Gramoli Blockchain scalability and its foundations in distributed systems
Sun et al. Mosaic-a blockchain consensus algorithm based on random number generation
CN113518126A (zh) 一种面向联盟链的交叉容错方法
CN115280346A (zh) 区块链事务双重花费证明
Tanwar Distributed Consensus for Permissioned Blockchain

Legal Events

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