KR20200062889A - 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치 - Google Patents

블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20200062889A
KR20200062889A KR1020180148825A KR20180148825A KR20200062889A KR 20200062889 A KR20200062889 A KR 20200062889A KR 1020180148825 A KR1020180148825 A KR 1020180148825A KR 20180148825 A KR20180148825 A KR 20180148825A KR 20200062889 A KR20200062889 A KR 20200062889A
Authority
KR
South Korea
Prior art keywords
leader
nodes
node
block
group
Prior art date
Application number
KR1020180148825A
Other languages
English (en)
Inventor
유현경
타이광퉁
곽지영
김선미
임종철
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020180148825A priority Critical patent/KR20200062889A/ko
Publication of KR20200062889A publication Critical patent/KR20200062889A/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/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1089Hierarchical topologies
    • 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/1044Group management mechanisms 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 블록체인 시스템에서 계층 구조에 기초하여 블록 합의를 수행하는 방법을 제공할 수 있다. 이때, 블록 합의를 수행하는 방법은 글로벌 리더 노드가 클라이언트로부터 트랜잭션 요청을 수신하는 단계, 글로벌 리더 노드가 블록을 생성하는 단계, 글로벌 리더 노드가 생성된 블록에 대한 블록 합의를 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는 단계를 포함할 수 있다.

Description

블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치{Method and Apparatus for performing block agreement in block chain system}
본 발명은 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법을 제공할 수 있다.
보다 상세하게는, WAN(Wide-Area network) 환경에서 각각의 노드들이 계층 구조에 기초하여 그룹을 형성하고, 그룹 간 계층적으로 블록에 대한 합의를 수행하는 방법에 대한 것이다.
블록체인은 네트워크 상의 수많은 노드들이 P2P(Peer-to-Peer)로 연결되어 트랜잭션을 처리하여 저장하는 분산 시스템으로, 분산되어 있는 노드들은 합의를 통해 블록을 생성하고 동일한 블록체인을 유지할 수 있다.
이때, 분산된 다수의 노드들 간에 동일한 블록체인을 유지하기 위해서는, 특정 노드에 고장이 발생한 경우뿐만 아니라, 악의적인 행동을 하는 비잔틴 노드가 있는 경우에도 전체 시스템이 안정적으로 동작하여 합의를 이룰 수 있어야 한다.
이렇게 비잔틴 노드가 있는 경우에도 합의를 이루기 위해 제안된 알고리즘으로 PBFT [L Castro, Miguel, and Barbara Liskov. "Practical Byzantine fault tolerance." OSDI. Vol. 99. 1999]가 있다.
이때, PBFT(Practical Byzantine Fault Tolerance) 알고리즘은 의사 결정을 주도하는 리더 노드가 있으며, 리더 노드가 고장이 나거나 악의적인 행동을 하는 경우에는 view change 절차를 통해 리더 노드를 변경하게 된다. 리더 노드는 클라이언트로부터 수신한 트랜잭션의 순서를 정렬하고, 합의를 위한 메시지(Pre-prepare)를 전체 노드들에게 전파할 수 있다. 리더 노드로부터 메시지를 수신한 노드들은 트랜잭션을 검증하고 이에 대한 메시지(prepare와 commit)를 전체 노드 간에 주고 받음으로써 합의를 이루게 되는 방식이다.
PBFT는 리더 노드가 전체 노드로 메시지를 브로드캐스팅하고, 전체 노드가 참여하여 메시지를 주고 받으면서 합의를 진행하기 때문에 비교적 적은 수의 노드가 LAN(Local-Area network)으로 연결된 환경에는 효율적일 수 있다.
그러나, WAN 환경에서 많은 수의 노드가 참여하여 전체 노드간에 메시지를 주고 받으면서 합의를 진행하는 경우에는 성능에 한계가 있다.
본 발명은 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법을 제공하는데 목적이 있다.
본 발명은 WAN 환경에서 노드들이 원격으로 그룹을 형성하여 로컬 그룹과 리더 그룹 간에 메시지를 계층적으로 주고 받으면서 블록에 대한 합의를 수행하는 방법을 제공하는데 목적이 있다.
본 발명은 WAN 환경에서 노드 수가 증가하더라도 블록 합의 시간을 단축하는 방법을 제공하는데 목적이 있다.
본 발명의 일 실시예에 따르면, 블록체인 시스템에서 계층 구조에 기초하여 블록 합의를 수행하는 방법을 제공할 수 있다. 이때, 계층 구조에 기초하여 블록 합의를 수행하는 방법은 글로벌 리더 노드가 클라이언트로부터 트랜잭션 요청을 수신하는 단계, 글로벌 리더 노드가 트랜잭션 요청에 기초하여 블록을 생성하는 단계, 글로벌 리더 노드가 생성된 블록에 대한 블록 합의를 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 계층 구조에 기초하여 블록 합의를 수행하는 블록체인 시스템을 제공할 수 있다. 이때, 블록체인 시스템은 로컬 그룹 내에 포함되는 로컬 노드, 로컬 그룹 내의 로컬 노드들 중 리더 역할을 수행하는 리더 노드, 복수 개의 로컬 그룹의 리더 노드들로 구성된 리더 그룹에서 리더 역할을 수행하는 글로벌 리더 노드를 포함할 수 있다. 이때, 글로벌 리더 노드는 클라이언트로부터 트랜잭션 요청을 수신하고, 트랜잭션 요청에 기초하여 블록을 생성하고, 생성된 블록에 대한 블록 합의를 계층 구조에 기초하여 분산된 각각의 노드들과 수행할 수 있다.
본 발명의 일 실시예에 따르면, 블록체인 시스템에서 계층 구조에 기초하여 블록 합의를 수행하는 글로벌 리더 노드를 제공할 수 있다. 이때, 글로벌 리더 노드는 메시지를 송수신하는 송수신부, 정보를 저장하는 메모리 및 송수신부와 메모리를 제어하는 프로세서를 포함할 수 있다. 이때, 프로세서는 송수신부를 통해 클라이언트로부터 트랜잭션 요청을 수신하고, 트랜잭션에 기초하여 블록을 생성하고, 생성된 블록에 대한 블록 합의를 계층 구조에 기초하여 분산된 각각의 노드들과 수행할 수 있다.
또한, 다음의 사항들은 공통으로 적용될 수 있다.
본 발명의 일 실시예에 따르면, 글로벌 리더 노드가 생성된 블록에 대한 블록 합의를 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는 단계는 글로벌 리더 노드가 생성된 블록에 대한 제 1 메시지를 리더 그룹 내의 각각의 리더 노드들에게 전송하는 단계, 각각의 리더 노드들이 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 상기 제 1 메시지를 전송하는 단계 및 리더 노드들 및 로컬 노드들이 블록에 대한 검증을 수행하는 단계를 포함할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 로컬 노드들 각각은 블록에 대한 검증을 수행한 후 로컬 노드들 각각이 포함된 그룹의 리더 노드에게 제 1 메시지에 대한 응답으로 제 2 메시지를 전송할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 로컬 노드들 각각으로부터 제 2 메시지를 수신한 각각의 리더 노드들은 제 2 메시지에 기초하여 제 3 메시지를 리더 그룹에 포함된 다른 리더 노드들에게 각각 전송하면 블록 합의에 대한 준비가 완료될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 블록 합의에 대한 준비가 완료되면 각각의 리더 노드들은 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 제 4 메시지를 전송하고, 로컬 노드들 각각은 로컬 노드들 각각이 포함된 그룹의 리더 노드에게 제 4 메시지에 대한 응답으로 제 5 메시지를 전송할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 각각의 리더 노드들은 리더 그룹에 포함된 다른 리더 노드들에게 제 6 메시지를 전송하고, 각각의 리더 노드들이 제 6 메시지에 기초하여 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 제 7 메시지를 전송하면 각각의 리더 노드들 및 로컬 노드들 각각은 원장을 업데이트할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 글로벌 리더 노드는 원장이 업데이트되고, 블록 합의가 수행되면 클라이언트로 블록을 전송할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 계층 구조에 기초하여 분산된 각각의 노드들에 대한 정보 및 그룹 정보는 매니저 컨트랙트에 의해 동적으로 관리될 수 있다.
이때, 본 발명의 일 실시예에 따르면, 분산된 각각의 노드들 각각은 매니저 컨트랙트를 호출하여 맴버쉽 등록을 요청할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 맴버쉽 등록은 분산된 각각의 노드들에 대한 각각의 아이디 정보에 기초하여 수행될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 매니저 컨트랙트는 등록된 맴버쉽 정보를 저장하고, 저장된 맴버쉽 정보에 기초하여 분산된 각각의 노드들 및 그룹 정보를 동적으로 관리할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 분산된 각각의 노드들은 매니저 컨트랙트에 쿼리하여 노드 각각이 포함된 그룹 내의 노드 정보들을 획득하고, 획득한 노드 정보에 기초하여 블록 합의가 수행될 수 있다.
본 발명에 따르면, 본 발명은 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법을 제공할 수 있다.
본 발명에 따르면, WAN 환경에서 노드들이 원격으로 그룹을 형성하여 로컬 그룹과 리더 그룹 간에 메시지를 계층적으로 주고 받으면서 블록에 대한 합의를 수행하는 방법을 제공할 수 있다.
본 발명에 따르면, WAN 환경에서 노드 수가 증가하더라도 블록 합의 시간을 단축하는 방법을 제공할 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 중앙 집중형 방식에 기초하여 동작하는 방법을 나타낸 도면이다.
도 2는 본 발명에 따른 계층적 합의 알고리즘 기반 블록체인 장치를 나타낸 도면이다.
도 3은 본 발명에 따른 계층적 합의 알고리즘에 따른 블록체인 장치의 노드 그룹을 나타낸 도면이다.
도 4는 본 발명에 따른 블록 합의를 위해 노드 간 메시지를 교환하는 방법을 나타낸 도면이다.
도 5는 본 발명에 따른 블록 합의를 위해 노드 간 메시지를 교환하는 방법을 나타낸 도면이다.
도 6은 본 발명에 따른 블록 합의를 위해 노드 간 메시지를 교환하는 방법을 나타낸 도면이다.
도 7은 본 발명에 따른 계층적 합의 알고리즘에 기초하여 스마트 컨트랙트를 이용한 노드 정보 저장 및 획득 방법을 나타낸 도면이다.
도 8은 본 발명에 따른 매니저 컨트랙트에 기초하여 그룹 정보를 동적으로 업데이트하는 방법을 나타낸 도면이다.
도 9는 본 발명에 따른 페트리샤 트리 기반 노드 정보 관리 방법을 나타낸 도면이다.
도 10은 본 발명에 따른 블록 합의를 수행하는 방법을 나타낸 도면이다.
도 11은 본 발명에 따른 장치 구성을 나타낸 도면이다.
이하에서 는 첨부한 도면을 참고로 하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 개시의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 개시에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 개시에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 개시에 있어서, 제1, 제2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 특별히 언급되지 않는 한 구성요소들간의 순서 또는 중요도 등을 한정하지 않는다. 따라서, 본 개시의 범위 내에서 일 실시 예에서의 제1 구성요소는 다른 실시 예에서 제2 구성요소라고 칭할 수도 있고, 마찬가지로 일 실시 예에서의 제2 구성요소를 다른 실시 예에서 제1 구성요소라고 칭할 수도 있다.
본 개시에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위함이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 개시의 범위에 포함된다.
본 개시에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들을 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시 예도 본 개시의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 개시의 범위에 포함된다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 제시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 중앙 집중형 방식에 기초하여 동작하는 방법을 나타낸 도면이다. 이때, 도 1을 참조하면, 기존에는 중앙 집중형 방식으로 서버가 다수의 단말에 데이터를 전달하는 방식을 통해 서비스 또는 컨텐츠가 제공될 수 있었다. 즉, 데이터 전송에 대한 책임은 중앙집중 서버가 가지고 있으며, 서버는 각각의 단말에 대한 요구를 반영하여 단말에 개별적으로 데이터를 제공할 수 있다. 다만, 상술한 방식은 서버의 부담이 커질 수 있으며, 트래픽 발생도 많을 수 있다. 또한, 서버에 집중되어 데이터가 제공되기 때문에 서버의 보안이 보장되지 않으면 문제가 발생할 수 있다. 따라서, 상술한 방식에 문제점을 해결하기 위해 블록체인에 기초하여 각각의 노드들이 분산 시스템으로 동작할 수 있다. 일 예로, 블록 체인은 블록으로 이루어진 원장(또는 장부)에 기초하여 동작하는 시스템일 수 있다. 블록체인은 중개인 없이 신뢰를 담보할 수 있는 기술을 제공할 수 있다. 이때, 각각의 블록은 서로 다른 사용자들에게 분산될 수 있고, 이러한 블록들이 체인 구조를 이루면서 신뢰를 담보하도록 할 수 있다. 이러한 블록체인 기술의 등장 전까지 상술한 바와 같이, 서버에 기초하여 데이터를 주고받거나 어떤 거래를 수행될 수 있었으며, 신뢰성 확보가 문제될 수 있었다. 블록체인은 개인간 공유 플랫폼으로 정의할 수 있으며, 참여자인 노드가 정보를 공유하는 형태일 수 있다. 따라서 블록체인은 신뢰성을 제공하면서 시스템이 중앙화되어 발생하는 문제를 방지할 수 있다. 일 예로, 블록체인에 기초하는 경우, 정보를 모든 노드들과 공유될 수 있다. 이때, 블록체인 내의 노드가 서로 믿을 수 있게 하여 신뢰가 형성될 수 있으며, 이러한 신뢰 특성에 기초하여 다양한 서비스 분야에서 블록체인의 보안기술이 이용될 수 있다.
도 2는 본 발명에 따른 계층적 합의 알고리즘 기반 블록체인 시스템을 나타낸 도면이다. 도 2를 참조하면, 서비스 이용자인 클라이언트가 트랜잭션을 요청할 수 있다. 이때, 해당 트랜잭션 정보는 네트워크를 통해서 분산되어 있는 노드들로 전송될 수 있다. 일 예로, 트랜잭션은 하나의 작업을 수행하기 위해 필요한 데이터베이스의 연산들을 모아 놓은 것일 수 있다. 즉, 트랜잭션은 일정한 작업을 위한 정보 및 연산들로 정의될 수 있다. 이때, 클라이언트가 새로운 트랜잭션을 발생시키는 경우, 블록체인 참여 노드들은 트랜잭션을 분산합의 과정을 통해 공유하여 트랜잭션 데이터베이스에 저장시킬 수 있다. 보다 상세하게는, 트랜잭션을 전송 받은 노드들은 트랜잭션을 검증하고, 트랜잭션들을 순서화하여 노드들간에 합의를 통해 블록을 생성할 수 있다. 이때, 새로 생성된 블록은 이전 블록에 연결되어 블록체인을 구성하고, 클라이언트는 트랜잭션 처리 결과를 전달받을 수 있다. 여기서 개별 노드는 트랜잭션을 검증하고, 분산되어 있는 노드들간 합의를 통해 블록을 생성하며 분산 원장을 업데이트하는 블록체인 시스템의 기능을 수행할 수 있다.
이때, 일 예로, 블록체인 시스템(200)은 트랜잭션 및 블록 검증 서브시스템(210), 블록 합의 서브시스템(220), 전송 프로토콜 서브시스템(230), 스마트 컨트랙트 서브시스템(240) 및 멤버십 매니저 서브시스템(250) 중 적어도 어느 하나 이상을 포함할 수 있다.
트랜잭션 및 블록 검증 서브시스템(210)은 트랜잭션과 블록 검증 기능을 제공하는데, 트랜잭션 검증 기능은 클라이언트로부터 수신한 트랜잭션에 대해서 문법에 맞게 구성되어 있는지 검증하고, 송신자의 서명에 대한 유효성을 확인할 수 있다. 또한, 블록 검증 기능은 해당 블록이 참조하고 있는 이전 블록의 유효성 및 블록의 헤더를 포함한 각 필드의 유효성을 검증할 수 있다.
또한, 블록 합의 서브시스템(220)은 트랜잭션을 순서화하여 블록을 생성하고, 노드 간의 합의를 통해 블록을 검증하여 블록체인에 저장하는 기능을 제공할 수 있다. 이때, 블록 합의 과정에서는 계층적 합의 알고리즘을 사용할 수 있으며, 이에 대해서는 후술한다.
전송 프로토콜 서브시스템(230)은 네트워크를 통해 트랜잭션과 블록을 다른 노드로 송수신하는 기능을 제공할 수 있다. 이때, 클라이언트로부터 수신한 트랜잭션을 글로벌 리더 노드로 전송하고, 블록 합의를 위해 복수 개의 메시지를 리더 그룹 및 로컬 그룹간으로 전송할 수 있다. 일 예로, 복수 개의 메시지는 8개일 수 있으나, 이에 한정되지 않는다.
스마트 컨트랙트 서브시스템(240)은 스마트 컨트랙트(smart contract)를 생성, 검증 및 조회하는 기능을 제공할 수 있다. 일 예로, 스마트 컨트랙트(Smart Contract)는 계약 조건을 실행하는 트랜잭션 프로토콜을 의미할 수 있다. 즉, 블록체인 기술을 기반으로 계약 조건이 설정되고, 계약 조간이 만족하면 계약 내용이 자동으로 이행되도록 하는 시스템이 스마트 컨트랙트일 수 있다.
또한, 멤버십 매니저 서브시스템(250)은 노드에 ID를 부여하여 멤버십 서비스에 등록하고, 노드의 권한을 인증하는 기능을 수행할 수 있다. 이때, 일 예로, 클라이언트는 REST(Representational State Transfer) 형태의 open API를 통해 트랜잭션을 요청하고, 요청한 트랜잭션에 대한 처리 결과를 응답 메시지를 통해 수신할 수 있다.
도 3은 본 발명의 일 실시예에 따라 계층적 합의 알고리즘에 따른 블록체인 시스템을 나타낸 도면이다.
도 3을 참조하면, 로컬 지역 별로 로컬 그룹이 구성되고, 로컬 그룹 내에 다수의 노드들이 존재할 수 있다. 이때, 로컬 그룹에 있는 노드들 중에서 노드 ID를 기반으로 리더 노드(310-1, 310-2, 310-3, 310-4)가 선정될 수 있다. 이때, 선정된 리더 노드들(310-1, 310-2, 310-3, 310-4)로 리더 그룹이 형성될 수 있다. 즉, 각각의 로컬 그룹이 존재하고, 로컬 그룹의 리더 노드를 기준으로 리더 그룹이 형성될 수 있다. 이때, 구성된 리더 그룹에 뷰 넘버(view number)가 부여될 수 있다. 뷰 넘버는 리더 그룹이 변경되면 순차적으로 증가할 수 있다. 즉, 리더 그룹의 변경 여부를 확인하기 위한 넘버일 수 있다. 이때, 리더 그룹 내에서도 노드 ID 및 뷰 넘버에 기초하여 글로벌 리더 노드가 선정될 수 있다. 즉, 각각의 리더들(310-1, 310-2, 310-3, 310-4)로 구성된 리더 그룹에서 글로벌 리더 노드가 선정될 수 있다. 한편, 일 예로, 뷰 변경(view change)이 수행되면 상술한 리더 그룹 및 글로벌 리더 노드가 변경될 수 있다. 즉, 일정한 조건에 기초하여 리더 그룹 및 글로벌 리더 노드가 변경될 수 있으며, 상술한 실시예로 한정되지 않는다.
한편, 글로벌 리더 노드는 클라이언트로부터 수신한 트랜잭션을 검증하여 블록을 생성할 수 있다. 이때, 글로벌 리더 노드는 블록이 포함된 Pre-prepare 메시지를 리더 그룹에 전송할 수 있으며, 이를 통해 블록 합의가 시작될 수 있다. 그 후, 리더 그룹(또는 로컬 그룹) 간에 특정 메시지에 대해 일정 수 이상의 과반수 합의가 이루어지면 추가 단계가 진행될 수 있다. 일 예로, 일정 수 이상의 과반수 합의는 2/3 이상 과반수 합의일 수 있으나, 이에 한정되지 않고 변경될 수 있다.
일 예로, 리더 그룹(또는 로컬 그룹)에 n개 노드들이 있을 때, n개 노드 중에서 k개의 과반수 서명을 스레스홀드 시그니쳐(Threshold signature)라 정의할 수 있다. 이때, 스레스홀드 시그니쳐로 해당 메시지의 과반수 합의를 판단할 수 있다.
이때, 상술한 뷰 변경(view change)는 글로벌 리더 노드가 정해진 시간 내에 Pre-prepare 메시지를 보내지 않는 경우에 이루어질 수 있다. 또한, 일 예로, 뷰 변경은 리더 그룹에서 특정 블록에 대해 2/3 이상 합의되지 않는 경우에 이루어질 수 있다.
이때, 일 예로, 하기에서는 블록체인 시스템 내의 블록 합의 서브시스템에서 확장성을 고려하여 계층적 합의 알고리즘(HiBFT: Hierarchical Byzantine Fault Tolerance)에 기초하여 합의를 수행하는 방법에 대해 서술한다.
보다 상세하게는, 의사 결정을 주도하는 글로벌 리더 노드가 블록을 포함한 메시지를 리더 그룹으로 전달할 수 있다. 이때, 각 그룹의 리더는 그룹 내에 로컬 노드들에게 메시지를 계층적으로 전달할 수 있다. 그 후, 로컬 그룹 내에서 불록에 합의를 이루는 경우, 로컬 리더는 합의 메시지를 리더 그룹으로 전달하여 리더 그룹에서 최종 합의를 수행할 수 있다. 즉, 글로벌 리더 노드, 리더 그룹 내의 노드 및 로컬 그룹 내의 노드들의 계층 구조를 형성하고, 이에 기초하여 블록 합의를 수행할 수 있다.
상술한 바와 같이, 계층적 구조에 기초하여 블록 합의를 수행하는 경우, 각각의 노드 간 교환되는 블록 합의 메시지는 3단계로서 “Pre-prepare” , “Prepare” 및 “Commit” 단계가 수행될 수 있다. 이때, 상술한 단계에서 사용되는 블록 합의를 위한 메시지는”Pre-prepare”, “Local-prepare”, “prepare”, “Prepare-Notify”, “Prepare-Ack”, “Commit” 및 “Commit-Notify” 메시지가 순차적으로 전송될 수 있다. 다만, 상술한 메시지는 하나의 일 예일 뿐, 상술한 명칭으로 한정되지 않는다. 즉, 동일한 기능 및 역할을 위해 전송되는 메시지는 동일한 메시지일 수 있으며, 상술한 실시예로 한정되지 않는다.
보다 상세하게는, 글로벌 리더 노드는 Pre-prepare 메시지를 리더 그룹에게 전송할 수 있다. 이때, 각 그룹의 리더는 Pre-prepare 메시지를 그룹 내의 로컬 노드들에게 전송할 수 있다. 각각의 로컬 노드들은 이에 대한 응답으로 Local-prepare 메시지를 그룹의 리더에게 전송할 수 있다. 그룹의 리더는 상술한 메시지에 기초하여 리더 그룹으로 prepare 메시지를 전송할 수 있다. 그 후, 각 그룹의 리더는 로컬 노드들에게 Prepare-Notify 메시지를 전송할 수 있다. 이때, 로컬 노드들은 상술한 메시지에 대한 응답으로 Prepare-Ack 메시지를 그룹의 리더에게 전송할 수 있다. 그 후, 그룹의 리더는 리더 그룹으로 Commit 메시지를 전송할 수 있다. 이때, 그룹의 리더는 Commit-Notify 메시지를 로컬 노드들에게 전송할 수 있다.
일 예로, 도 4 및 도 5는 상술한 바에 기초하여 메시지가 교환되는 방법을 나?낸 도면이다.
도 4는 노드간 Pre-prepare 메시지, Local-prepare 메시지 및 prepare 메시지가 교환되는 방법을 나타낸다.
일 에로, 리더 그룹과 로컬 그룹은 상술한 도 3과 같을 수 있다. 이때, 일 예로, 리더 그룹 중 글로벌 리더 노드는 가 노드(410-1)일 수 있다. 일 예로, 글로벌 리더 노드는 리더 그룹에 포함된 노드들의 투표에 의해 선정될 수 있다, 또한, 상술한 바와 같이 뷰 변경에 기초하여 글로벌 리더 노드는 변경될 수 있으며, 상술한 실시예로 한정되지 않는다.
이때, 글로벌 리더 노드(410-1)는 클라이언트로부터 수신한 트랜잭션을 검증하여 블록을 생성할 수 있다. 이때, 글로벌 리더 노드(410-1)는 글로벌 리더 노드를 포함한 리더 그룹으로 Pre-prepare 메시지를 전송할 수 있다. 즉, 글로벌 리더 노드(410-1)는 리더 그룹 내의 다른 노드들(410-2, 410-3, 410-4)로 Pre-prepare 메시지를 전송할 수 있다. 이때, 각각의 그룹의 리더 노드들(410-2, 410-3, 410-4)은 로컬 그룹 내의 각각의 로컬 노드들에게 Pre-prepare 메시지를 전송할 수 있다.
이때, 각 그룹 내의 로컬 노드들은 블록을 검증하고 자신이 속한 로컬 그룹의 리더에게 Local-prepare 메시지를 전달할 수 있다.
일 예로, 그룹의 리더는 Local-prepare 메시지에 기초하여 블록 합의 여부를 확인할 수 있다. 그룹의 리더가 그룹의 로컬 노드들로부터 과반수 이상의 Local-prepare 메시지를 수신하지 못하는 경우, 그룹의 리더는 리더 그룹으로 메시지를 전송하지 않을 수 있다. 반면, 그룹의 리더가 그룹의 로컬 노드들로부터 과반수 이상의 Local-prepare 메시지를 수신하는 경우, 그룹의 리더는 리더 그룹으로 prepare 메시지를 전송할 수 있다. 이를 통해, 글로벌 리더 노드는 각각의 그룹 중 블록 합의가 수행된 그룹을 확인할 수 있으며, 상술한 바에 기초하여 Prepare가 이루어질 수 있다.
다음으로, 도 5는 각각의 노드 사이에서 Prepare-Notify 메시지, Prepare-Ack 메시지, Commit 메시지 및 Commit-Notify 메시지가 교환되는 방법을 나타낸다. 이때, 도 5를 참조하면, 리더 노드들(510-1, 510-2, 510-3, 510-4)간에 Prepare가 이루어지면, 각 그룹의 리더는 로컬 그룹내의 로컬 노드들에게 Prepare-Notify 메시지를 전달할 수 있다. 이때, 로컬 그룹 내 로컬 노드들은 Prepare-Ack 메시지를 그룹의 리더에게 전송할 수 있다. 이때, 그룹의 리더가 로컬 노드들로부터 과반수 이상의 Prepare-Ack 메시지를 수신한 경우, 그룹의 리더는 리더 그룹에 Commit 메시지를 전송할 수 있다. 반면, 그룹의 리더가 로컬 노드들로부터 과반수 이상의 Prepare-Ack 메시지를 수신하지 못하는 경우, 그룹의 리더는 메시지를 전송하지 않을 수 있다. 이때, 각 그룹의 리더들(510-1, 510-2, 510-3, 510-4)은 각각의 그룹의 로컬 노드들에게 Commit-Notify 메시지를 전송할 수 있다.
상술한 바에 기초하여 해당 블록 처리에 합의가 이루어질 수 있다. 이때, 상술한 바에 기초하여 블록 처리에 대한 합의가 이루어진 경우, 각각의 노드들은 원장을 업데이트할 수 있다. 그 후, 글로벌 리더 노드(510-1)는 트랜잭션 처리 결과를 클라이언트에 전달할 수 있다.
도 6은 분산되어 있는 노드들간에 계층적 합의 알고리즘 기반으로 블록에 합의하는 과정을 나타낸 도면이다. 도 6에서 도면의 식별을 위해 도 6A 및 도 6B로 기재하였으나, 도 6A 및 도 6B는 서로 연결된 도면이며, 도 6A로부터 도 6B의 순서로 진행되는 플로우일 수 있다. 도 6에서 가 노드 내지 타 노드(620-1, 620-2, 620-3, 620-4, 630-1, 630-2, 630-3, 630-4, 640-1, 640-2, 640-3, 640-4)는 각각의 노드일 수 있다. 이때, 일 예로, 가 노드(620-1)는 글로벌 리더 노드일 수 있다. 또한, 가 노드(620-1), 마 노드(630-1) 및 자 노드(640-1)는 각 그룹의 리더 노드일 수 있다.
도 6을 참조하면, 가 노드(620-1)는 클라이언트(610)로부터 트랜잭션 처리 요청을 수신할 수 있다. 이때, 가 노드(620-1)는 트랜잭션을 수신하고 검증하여 블록을 생성할 수 있다. 그 후, 가 노드(620-1)는 다른 그룹의 리더 노드인 마 노드(630-1) 및 자 노드(640-1)에 블록이 포함된 블록이 포함된 Pre-prepare 메시지를 전송할 수 있다. 또한, 가 노드(620-1) 역시 그룹의 리더 단말인바, 가 노드(620-1)는 로컬 그룹 내의 로컬 노드인 나 노드(620-2), 다 노드(620-3) 및 라 노드(620-4)에 블록이 포함된 Pre-prepare 메시지를 전송할 수 있다. 또한, 마 노드(630-1)는 로컬 그룹 내의 로컬 노드인 바 노드(630-2), 사 노드(630-3) 및 아 노드(630-4)에 블록이 포함된 Pre-prepare 메시지를 전송할 수 있다. 또한, 자 노드(640-1)는 로컬 그룹 내의 로컬 노드인 차 노드(640-2), 카 노드(640-3) 및 타 노드(640-4)에 블록이 포함된 Pre-prepare 메시지를 전송할 수 있다. 이때, Pre-prepare 메시지를 수신한 각 노드들은 해당 블록에 대한 검증을 수행할 수 있다.
그 후, A 그룹의 나 노드(620-2), 다 노드(620-3) 및 라 노드(620-4)는 해당 블록에 대한 Local-prepare 메시지를 그룹의 리더인 가 노드(620-1)에게 전송할 수 있다. 또한, B 그룹의 바 노드(630-2), 사 노드(630-3) 및 아 노드(630-4)는 해당 블록에 대한 Local-prepare 메시지를 그룹의 리더인 마 노드(630-1)에게 전송할 수 있다. 또한, C 그룹의 차 노드(640-2), 카 노드(640-3) 및 타 노드(640-4)는 해당 블록에 대한 Local-prepare 메시지를 그룹의 리더인 자 노드(640-1)에게 전송할 수 있다. 이때, 일 예로, Local-prepare 메시지에는 블록 검증에 대한 정보가 포함될 수 있다.
또한, 가 노드(620-1)는 해당 블록에 대한 prepare 메시지를 다른 그룹의 리더인 마 노드(630-1) 및 자 노드(640-1)에게 전송할 수 있다. 또한, 마 노드(630-1) 역시 해당 블록에 대한 prepare 메시지를 다른 그룹의 리더인 가 노드(620-1) 및 자 노드(640-1)에게 전송할 수 있다. 또한, 자 노드(640-1) 역시 해당 블록에 대한 prepare 메시지를 다른 그룹의 리더인 가 노드(620-1) 및 마 노드(630-1)에게 전송할 수 있다.
그 후, 가 노드(620-1)는 로컬 그룹 내의 로컬 노드인 나 노드(620-2), 다 노드(620-3) 및 라 노드(620-4)에 Prepare-Notify 메시지를 전송할 수 있다. 또한, 마 노드(630-1)는 로컬 그룹 내의 로컬 노드인 바 노드(630-2), 사 노드(630-3) 및 아 노드(630-4)에 Prepare-Notify 메시지를 전송할 수 있다. 또한, 자 노드(640-1)는 로컬 그룹 내의 로컬 노드인 차 노드(640-2), 카 노드(640-3) 및 타 노드(640-4)에 Prepare-Notify 메시지를 전송할 수 있다.
그 후, A 그룹의 나 노드(620-2), 다 노드(620-3) 및 라 노드(620-4)는 해당 블록에 대한 합의인 Prepare-Ack 메시지를 그룹의 리더인 가 노드(620-1)에게 전송할 수 있다. 또한, B 그룹의 바 노드(630-2), 사 노드(630-3) 및 아 노드(630-4)는 해당 블록에 대한 합의인 Prepare-Ack 메시지를 그룹의 리더인 마 노드(630-1)에게 전송할 수 있다. 또한, C 그룹의 차 노드(640-2), 카 노드(640-3) 및 타 노드(640-4)는 해당 블록에 대한 합의인 Prepare-Ack 메시지를 그룹의 리더인 자 노드(640-1)에게 전송할 수 있다.
또한, 가 노드(620-1)는 해당 블록에 대해 합의되었음을 나타내는 Commit 메시지를 다른 그룹의 리더인 마 노드(630-1) 및 자 노드(640-1)에게 전송할 수 있다. 또한, 마 노드(630-1) 역시 해당 블록에 대해 합의되었음을 나타내는 Commit 메시지를 다른 그룹의 리더인 가 노드(620-1) 및 자 노드(640-1)에게 전송할 수 있다. 또한, 자 노드(640-1) 역시 해당 블록에 대해 합의되었음을 나타내는 Commit 메시지를 다른 그룹의 리더인 가 노드(620-1) 및 마 노드(630-1)에게 전송할 수 있다.
그 후, 가 노드(620-1)는 로컬 그룹 내의 로컬 노드인 나 노드(620-2), 다 노드(620-3) 및 라 노드(620-4)에 Commit-Notify 메시지를 전송할 수 있다. 또한, 마 노드(630-1)는 로컬 그룹 내의 로컬 노드인 바 노드(630-2), 사 노드(630-3) 및 아 노드(630-4)에 Commit-Notify 메시지를 전송할 수 있다. 또한, 자 노드(640-1)는 로컬 그룹 내의 로컬 노드인 차 노드(640-2), 카 노드(640-3) 및 타 노드(640-4)에 Commit-Notify 메시지를 전송할 수 있다.
상술한 바를 통해 블록에 대한 합의를 수행할 수 있으며, 블록 합의에 참여한 노드들은 원장을 업데이트할 수 있다. 그 후, 가 노드(620-1)는 합의된 블록을 클라이언트(610)에게 전송하고 클라이언트는 해당 블록에 요청한 트랜잭션이 포함되었는지 확인할 수 있다.
즉, 계층적 구조에 기초하여 각각의 노드들은 pre-prepare 메시지를 수신할 수 있고, 이에 기초하여 블록에 대한 검증을 수행할 수 있다. 그 후, 각각의 노드는 검증에 대한 정보를 계층 구조를 통해 전달하여 prepare로 블록에 대한 검증을 완료할 수 있다. 그 후, 각각의 노드들은 계층 구조에 기초하여 commit를 전송하고, 이에 기초하여 각각의 노드에서 원장을 업데이트한 후 블록 합의가 완료될 수 있다.
즉, 블록 체인 시스템에서 블록을 생성하는 리더 노드가 정해져 있고, 블록에 대한 합의 과정이 그룹별로 계층적으로 이루어질 수 있다. 이때, 메시지 리더 그룹에서는 PBFT 방식으로 메시지를 교환하고, 로컬 그룹에서는 메시지 복잡도를 줄이기 위해서 로컬 리더를 중심으로 로컬 노드들과 1:N으로 직접 메시지를 송수신할 수 있으며, 이는 상술한 바와 같다.
또 다른 일 예로, 상술한 바와 같이, 뷰 변경(view change)에 따라 리더 그룹이 변경될 수 있다. 이때, 뷰 변경에 따라 그룹의 노드가 추가 또는 삭제되는 경우에도 변경된 노드 그룹 정보를 반영하여 리더 그룹을 선정하여 다수의 노드들이 합의에 참여할 수 있어야 한다. 따라서 하기에서는 스마트 컨트랙트(또는, 매니저 컨트랙트)를 이용하여 노드 그룹에 대한 동작 관리를 수행하는 방법을 나타낼 수 있다.
이때, 일 예로, 스마트 컨트랙트는 조건에 따라 실행할 수 있는 프로그래밍 코드로서, 트랜잭션에 포함되어 블록체인을 통해 동기화되기 때문에 무결성을 보장할 수 있는 특징이 있다. 보다 상세하게는, 스마트 컨트랙트를 프로그래밍하여 컴파일하면 바이트 코드가 생성되고, 생성된 스마트 컨트랙트를 배포하면 트랜잭션 형태로 블록에 삽입되어 개별 노드의 블록체인에 저장될 수 있다. 이때, 스마트 컨트랙트가 블록체인에 저장되면 개별 노드는 해당 컨트랙트의 바이트 코드를 가지게 될 수 있다. 이때, 생성된 스마트 컨트랙트 주소를 호출하여 데이터를 업데이트할 수 있고, 특정 조건이 만족되면 정해진 절차를 수행할 수 있다.
이때, 도 7은 본 발명에 따른 계층적 합의 알고리즘 기반 블록체인 시스템에서 스마트 컨트랙트를 이용한 노드 정보 저장 및 획득 방법을 나타낸 도면이다.
이때, 도 7을 참조하면, 스마트 컨트랙트에 기초하여 노드 정보 관리가 수행될 수 있다. 일 예로, 노드의 정보는 스마트 컨트랙트에 저장될 수 있으며, 저장된 정보를 쿼리하여 결과값을 읽을 수 있다.
보다 상세하게는, 노드 정보는 스마트 컨트랙트에 저장하여 관리될 수 있다. 여기서, 블록체인을 시작하기 전에 시스템 관리자는 매니저 컨트랙트(또는 스마트 컨트랙트)를 작성하고, 컴파일하여 생성된 컨트랙트 주소를 제네시스 블록에 등록할 수 있다. 이때, 초기 등록 후에는 관리자의 역할없이 자동으로 노드 그룹 정보를 업데이트할 수 있다.
블록체인이 시작되면 각 노드는 초기에 등록된 그룹 구성 정보로 리더 그룹을 선정하여 블록 합의를 수행할 수 있다. 이때, 블록체인에 참여하는 노드들이 매니저 컨트랙트를 호출하여 노드 정보 등록을 요청할 수 있다. 일 예로, 도 7을 참조하면, RequestRegister()가 매니저 컨트랙트를 호출하여 요청될 수 있다. 이때, 매니저 컨트랙트는 해당 노드의 멤버십 정보를 저장할 수 있다. 일 예로, 맴버쉽 정보는 그룹 목록, 그룹별 노드 ID 및 노드의 연결 주소에 대한 정보 중 적어도 어느 하나 이상을 포함할 수 있다.
또한, 맴버쉽 정보는 노드와 관련된 다른 정보로서 특정 컨텐츠와 관련된 정보도 저장할 수 있으며, 상술한 실시예로 한정되지 않는다. 즉, 맴버쉽 정보는 블록체인이 활용되는 서비스 또는 기술에 기초하여 필요한 정보로서 노드들에 대한 정보를 포함할 수 있으며, 이에 대한 정보가 매니저 컨트랙트에 포함될 수 있다.
이때, 매니저 컨트랙트는 맴버쉽 정보를 저장할 수 있으며, 도 7에서 RegisterNode()에 기초하여 저장을 수행할 수 있다. 이때, 맴버쉽 정보는 노드 ID에 기초하여 저장될 수 있다. 또한, 매니저 컨트랙트는 요청한 노드에게 등록 결과를 알려줄 수 있다. 이때, 도 7에서 Response()에 기초하여 등록 결과에 대한 응답이 제공될 수 있다. 또한, 블록 합의 과정에서 로컬 그룹간 또는 리더 그룹간 메시지 전송을 위해 각 노드는 해당 그룹을 구성하는 노드들의 정보를 확인할 필요성이 있다.
일 예로, 각각의 노드는 자신의 노드 ID로 매니저 컨트랙트에 쿼리할 수 있다. 일 예로, 도 7에서 로컬 그룹 정보는 로컬 노드가 자신의 로컬 그룹 ID와 노드 ID로 매니저 스마트 컨트랙트에 쿼리하여(도7의 (4)QueryLocalGroup()) 로컬 그룹 노드들의 정보를 얻을 수 있다. 이를 통해, 로컬 그룹 내에 노드 정보를 사전 공유할 필요없이 노드들의 최신 목록 및 연결 주소를 획득하여 이용할 수 있다.
또한, 각각의 노드들은 뷰 넘버(view number)에 따른 리더 그룹 노드의 ID를 알 수 있으며, 이는 상술한 바와 같다. 따라서, 리더 그룹 정보는 리더 노드가 노드 ID로 매니저 스마트 컨트랙트에 쿼리하여 리더 그룹 노드들의 연결 주소를 획득할 수 있다.(도7의 (4)QueryLeaderGroup()) 이때, 리더 그룹은 상술한 정보를 그룹 간 합의 메시지 전송에 이용할 수 있다.
도 8은 매니저 컨트랙트 기반 그룹 정보를 동적으로 업데이트 하는 방법을 나타낸 도면이다.
상술한 바와 같이, 매니저 컨트랙트에는 각각의 노드들과 관련된 정보들이 저장될 수 있다. 이때, 매니저 컨트랙트는 그룹 목록(groupList), 그룹별 노드 목록(node_id) 및 IP 주소와 포트 형태의 노드 연결 주소(connection address) 및 뷰 넘버에 따른 리더 그룹 정보(Leader Group of view No.)로 구성될 수 있다. 이때, 각각의 노드들은 관리자가 설정한 초기 그룹 정보로 블록 합의를 수행할 수 있다. 다만, 그룹의 노드 구성 및 리더 그룹이 변경되는 경우, 매니저 컨트랙트는 업데이트될 수 있다. 또한, 업데이트된 매니저 컨트랙트는 모든 노드들에 배포되어 적용될 수 있다.
보다 상세하게는, 일 예로, 도 8을 참조하면, 초기 매니저 컨트랙트에 A, B, C 및 D 그룹이 설정될 수 있다. 다만, 이는 하나의 일 예일 뿐, 상술한 실시예로 한정되지 않는다. 이때, 상술한 노드 구성에 따라 리더 그룹이 선정되어(“LG of viewNo001”: A1, B1, C1, D1) 운영될 수 있다. 이때, 그룹 E의 노드들이 추가되는 경우를 고려할 수 있다. 추가된 그룹을 고려하여 리더 그룹이 재선정될 수 있으며(“LG of viewNo021”: A9, B1, C2, D4, E1), 이에 기초하여 운용될 수 있다. 이때, 재선정된 리더 그룹에 기초하여 블록 합의가 수행될 수 있다. 즉, 그룹의 노드 구성이나 리더 그룹의 변경이 발생하면 매니저 컨트랙트는 업데이트될 수 있으며, 이에 기초하여 블록 합의가 수행될 수 있다.
또한, 일 예로, 매니저 컨트랙트는 데이터 컨트랙트와 로직 컨트랙트를 분리하여 생성할 수 있다. 이때, 매니저 컨트랙트는 데이터 컨트랙트 부분만 업데이트되도록 하고, 로직 컨트랙트는 업데이트가 되지 않도록 할 수 있다. 일 예로, 데이터 컨트랙트는 노드의 멤버십 등록 및 삭제에 따라 업데이트될 수 있다. 또한, 상술한 바에 기초하여 리더 그룹 구성도 업데이트될 수 있다. 또한, 일 예로, 데이터 컨트랙트의 그룹 목록, 그룹별 노드 정보 및 리더 그룹 정보 별로 각각 다른 읽기 권한을 부여하여 사용할 수 있다. 일 예로, 로컬 노드는 본인이 속한 그룹의 노드 정보에 대한 접근 권한을 갖도록 할 수 있다. 반면, 리더 노드는 본인이 속하지 않은 다른 그룹들의 리더 노드 정보에 대해서도 접근하여 정보를 획득하도록 할 수 있다. 즉, 매니저 컨트랙트에서 구체적인 컨트랙트는 분리될 수 있으며, 각각의 컨트랙트에 대한 업데이트가 별도로 수행될 수 있다. 또한, 매니저 컨트랙트에 기초하여 노드별로 다른 권한이 부여될 수 있으며, 상술한 실시예로 한정되지 않는다.
즉, 상술한 바와 같이, 계층적 구조를 고려하여 생성되는 노드 및 그룹 정보는 매니저 컨트랙트를 통해 관리 및 업데이트될 수 있으며, 이에 기초하여 상술한 바와 같은 블록 합의를 수행할 수 있다.
도 9는 페트리샤 트리 기반 노드 정보 관리 방법을 나타낸 도면이다.
도 9를 참조하면, 페트리샤 트리(patricia tree)를 기반으로 노드의 ID를 키 값에 따라 트리 형태로 저장하여 관리할 수 있다. 이때, 페트리샤 트리에 기초하면 노드가 등록 또는 삭제되는 경우에 키 값에 따라 쉽게 추가 또는 삭제할 수 있다. 일 예로, 도 9를 참조하면, a7b0 노드가 기등록되어 있으면 a-7-b-0 트리가 존재한다. 이때, 새로운 노드가 추가되어 ID가 a7b1이 할당되면, 기존 a-7-b 트리에 브랜치 1을 추가하여 a-7-b-1을 생성하여 노드 정보를 관리할 수 있다. 즉, 상술한 바와 같이 기존 트리에서 브랜치를 만드는 방법을 통해 저장 공간을 절약할 수 있다. 또한 노드 정보를 쿼리할 때, 연결된 키 값의 패스(path)를 따라 검색할 수 있기 때문에 처리 속도가 빠른 장점이 있다. 즉, 상술한 바와 같이, 매니저 컨트랙트가 그룹 및 그룹 각각에 대한 노드들을 계층 구조에 기초하여 관리하는 경우에 있어서 페트리샤 트리가 적용될 수 있으며, 이를 통해 관리의 효율성을 높일 수 있다. 상술한 바를 통해 계층적 합의 알고리즘 기반 블록체인 시스템에서 노드 그룹 관리에 매니저 컨트랙트를 이용함으로써 노드 정보를 동적으로 관리할 수 있고, 최신 노드 정보로 그룹을 구성하여 합의 과정에 이용할 수 있다.
도 10은 본 발명에 따라 블록 합의를 수행하는 방법을 나타낸 순서도이다.
도 10을 참조하면, 글로벌 리더 노드는 클라이언트로부터 트랜잭션 요청을 수신할 수 있다. (S1010) 이때, 도 1 내지 도 9에서 상술한 바와 같이, 글로벌 리더 노드는 리더 그룹 내의 리더 노드들 중에서 선택될 수 있다. 또한, 리더 노드들은 각각의 그룹에 대한 로컬 노드들 중에서 리더 노드로 선택될 수 있다. 즉, 로컬 노드, 리더 노드 및 글로벌 리더 노드는 계층 구조를 형성할 수 있으며, 이에 기초하여 효율적으로 블록 합의를 수행할 수 있으며, 이는 상술한 바와 같다.
다음으로, 글로벌 리더 노드는 트랜잭션 요청에 기초하여 블록을 생성할 수 있다. (S1020) 이때, 도 1 내지 도 9에서 상술한 바와 같이, 생성된 블록은 분산된 복수 개의 노드들에서 검증이 수행될 수 있다. 이때, 상술한 바와 같이, 글로벌 리더 노드는 생성된 블록에 대한 메시지를 리더 그룹 내의 각각의 리더 노드들에게 전송할 수 있다. 또한, 리더 노드들은 각각의 그룹 내의 로컬 노드들에게 블록에 대한 메시지를 전송할 수 있으며, 이를 통해 블록에 대한 검증을 수행할 수 있다.
이때, 상술한 바와 같이, 블록에 대한 검증 후 계층 구조에 기초하여 메시지가 교환될 수 있으며, 이에 기초하여 블록에 대한 합의가 수행될 수 있다. 즉, 생성된 블록에 대한 블록 합의는 계층 구조에 기초하여 분산된 각각의 노드에서 수행될 수 있다.(S1030) 이때, 글로벌 리더 노드는 합의된 블록 정보에 기초하여 트랜잭션 응답을 클라이언트에게 전송할 수 있으며, 이는 상술한 바와 같다.
도 11은 본 발명에 따라 각 노드의 구성을 나타낸 도면이다.
상술한 바와 같이, 블록체인 시스템에는 복수 개의 노드가 존재할 수 있다. 또한, 일 예로, 블록체인 시스템은 블록체인 장치일 수 있다. 즉, 블록체인 장치 내에서 복수 개의 노드들이 존재하는 것도 가능할 수 있으며, 상술한 바와 동일하게 적용될 수 있다.
또한, 일 예로, 블록체인 시스템(1100) 내의 각각의 노드들은 도 11과 같이, 메모리(1110), 프로세서(1120) 및 송수신부(1130) 중 적어도 어느 하나를 더 포함할 수 있다. 이때, 일 예로, 메모리(1110)는 블록에 대한 정보, 스마트 컨트랙트에 대한 정보 및 그 밖에 블록체인과 관련된 정보들을 저장할 수 있다. 이때, 프로세서(1120)는 상술한 바에 기초하여 메모리(1110)에 포함된 정보들을 제어할 수 있다. 또한, 프로세서(1120)는 송수신부(1130)를 통해 블록에 대한 합의 정보나 그 밖에 블록체인과 관련된 정보를 다른 노드나 클라이언트로 전송할 수 있으며, 상술한 실시예로 한정되지 않는다.
즉, 각각의 노드들은 블록체인 시스템을 지원할 수 있도록 하는 구성들을 포함할 수 있으며, 이에 기초하여 상술한 바와 같은 블록 합의를 수행할 수 있다.
본 개시에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.
1110 : 메모리
1120 : 프로세서
1130 : 송수신부

Claims (20)

  1. 블록체인 시스템에서 계층 구조에 기초하여 블록 합의를 수행하는 방법에 있어서,
    글로벌 리더 노드가 클라이언트로부터 트랜잭션 요청을 수신하는 단계;
    상기 글로벌 리더 노드가 상기 트랜잭션 요청에 기초하여 블록을 생성하는 단계;
    상기 글로벌 리더 노드가 생성된 블록에 대한 블록 합의를 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는 단계;를 포함하는, 블록 합의 수행 방법.
  2. 제 1 항에 있어서,
    상기 글로벌 리더 노드가 상기 생성된 블록에 대한 상기 블록 합의를 상기 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는 단계;는
    상기 글로벌 리더 노드가 상기 생성된 블록에 대한 제 1 메시지를 리더 그룹 내의 각각의 리더 노드들에게 전송하는 단계;
    상기 각각의 리더 노드들이 상기 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 상기 제 1 메시지를 전송하는 단계; 및
    상기 리더 노드들 및 상기 로컬 노드들이 블록에 대한 검증을 수행하는 단계;를 포함하는, 블록 합의 방법.
  3. 제 2 항에 있어서,
    상기 로컬 노드들 각각은 블록에 대한 검증을 수행한 후 로컬 노드들 각각이 포함된 그룹의 리더 노드에게 상기 제 1 메시지에 대한 응답으로 제 2 메시지를 전송하는, 블록 합의 방법.
  4. 제 3 항에 있어서,
    상기 로컬 노드들 각각으로부터 상기 제 2 메시지를 수신한 각각의 리더 노드들은 상기 제 2 메시지에 기초하여 제 3 메시지를 상기 리더 그룹에 포함된 다른 리더 노드들에게 각각 전송하면 상기 블록 합의에 대한 준비가 완료되는, 블록 합의 방법.
  5. 제 4 항에 있어서,
    상기 블록 합의에 대한 준비가 완료되면 상기 각각의 리더 노드들은 상기 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 제 4 메시지를 전송하고,
    상기 로컬 노드들 각각은 로컬 노드들 각각이 포함된 그룹의 리더 노드에게 상기 제 4 메시지에 대한 응답으로 제 5 메시지를 전송하는, 블록 합의 방법.
  6. 제 5 항에 있어서,
    상기 각각의 리더 노드들은 상기 리더 그룹에 포함된 다른 리더 노드들에게 제 6 메시지를 전송하고,
    상기 각각의 리더 노드들이 상기 제 6 메시지에 기초하여 상기 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 제 7 메시지를 전송하면 상기 각각의 리더 노드들 및 상기 로컬 노드들 각각은 원장을 업데이트하는, 블록 합의 방법.
  7. 제 6 항에 있어서,
    상기 글로벌 리더 노드는 상기 원장이 업데이트되고, 상기 블록 합의가 수행되면 상기 클라이언트로 상기 블록을 전송하는, 블록 합의 방법.
  8. 제 1 항에 있어서,
    상기 계층 구조에 기초하여 분산된 각각의 노드들에 대한 정보 및 그룹 정보는 매니저 컨트랙트에 의해 동적으로 관리되는, 블록 합의 방법.
  9. 제 8 항에 있어서,
    상기 분산된 각각의 노드들 각각은 상기 매니저 컨트랙트를 호출하여 맴버쉽 등록을 요청하는, 블록 합의 방법.
  10. 제 9 항에 있어서,
    상기 맴버쉽 등록은 상기 분산된 각각의 노드들에 대한 각각의 아이디 정보에 기초하여 수행되는, 블록 합의 방법.
  11. 제 9 항에 있어서,
    상기 매니저 컨트랙트는 상기 등록된 맴버쉽 정보를 저장하고, 저장된 맴버쉽 정보에 기초하여 상기 분산된 각각의 노드들 및 상기 그룹 정보를 동적으로 관리하는, 블록 합의 방법.
  12. 제 9 항에 있어서,
    상기 분산된 각각의 노드들은 상기 매니저 컨트랙트에 쿼리하여 노드 각각이 포함된 그룹 내의 노드 정보들을 획득하고,
    상기 획득한 노드 정보에 기초하여 상기 블록 합의가 수행되는, 블록 합의 방법.
  13. 계층 구조에 기초하여 블록 합의를 수행하는 블록체인 시스템에 있어서,
    로컬 그룹 내에 포함되는 로컬 노드;
    상기 로컬 그룹 내의 로컬 노드들 중 리더 역할을 수행하는 리더 노드;
    복수 개의 상기 로컬 그룹의 리더 노드들로 구성된 리더 그룹에서 리더 역할을 수행하는 글로벌 리더 노드;를 포함하되,
    상기 글로벌 리더 노드는 클라이언트로부터 트랜잭션 요청을 수신하고,
    상기 글로벌 리더 노드는 상기 트랜잭션 요청에 기초하여 블록을 생성하고,
    상기 글로벌 리더 노드가 생성된 블록에 대한 블록 합의를 상기 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는, 블록 합의를 수행하는 블록체인 시스템.
  14. 제 13 항에 있어서,
    상기 글로벌 리더 노드가 상기 생성된 블록에 대한 상기 블록 합의를 상기 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는 경우, 상기 글로벌 리더 노드가 상기 생성된 블록에 대한 제 1 메시지를 리더 그룹 내의 각각의 리더 노드들에게 전송하고, 상기 각각의 리더 노드들이 상기 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 상기 제 1 메시지를 전송하고, 상기 리더 노드들 및 상기 로컬 노드들이 블록에 대한 검증을 수행하는, 블록 합의를 수행하는 블록체인 시스템.
  15. 제 14 항에 있어서,
    상기 로컬 노드들 각각은 블록에 대한 검증을 수행한 후 로컬 노드들 각각이 포함된 그룹의 리더 노드에게 상기 제 1 메시지에 대한 응답으로 제 2 메시지를 전송하는, 블록 합의를 수행하는 블록체인 시스템.
  16. 제 15 항에 있어서,
    상기 로컬 노드들 각각으로부터 상기 제 2 메시지를 수신한 각각의 리더 노드들은 상기 제 2 메시지에 기초하여 제 3 메시지를 상기 리더 그룹에 포함된 다른 리더 노드들에게 각각 전송하면 상기 블록 합의에 대한 준비가 완료되는, 블록 합의를 수행하는 블록체인 시스템.
  17. 제 16 항에 있어서,
    상기 블록 합의에 대한 준비가 완료되면 상기 각각의 리더 노드들은 상기 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 제 4 메시지를 전송하고,
    상기 로컬 노드들 각각은 로컬 노드들 각각이 포함된 그룹의 리더 노드에게 상기 제 4 메시지에 대한 응답으로 제 5 메시지를 전송하는, 블록 합의를 수행하는 블록체인 시스템.
  18. 제 7 항에 있어서,
    상기 각각의 리더 노드들은 상기 리더 그룹에 포함된 다른 리더 노드들에게 제 6 메시지를 전송하고,
    상기 각각의 리더 노드들이 상기 제 6 메시지에 기초하여 상기 각각의 리더 노드들이 포함된 그룹 내의 로컬 노드들에게 제 7 메시지를 전송하면 상기 각각의 리더 노드들 및 상기 로컬 노드들 각각은 원장을 업데이트하는, 블록 합의를 수행하는 블록체인 시스템.
  19. 제 18 항에 있어서,
    상기 글로벌 리더 노드는 상기 원장이 업데이트되고, 상기 블록 합의가 수행되면 상기 클라이언트로 상기 블록을 전송하는, 블록 합의를 수행하는 블록체인 시스템.
  20. 블록체인 시스템에서 계층 구조에 기초하여 블록 합의를 수행하는 글로벌 리더 노드에 있어서,
    메시지를 송수신하는 송수신부;
    정보를 저장하는 메모리; 및
    상기 송수신부와 상기 메모리를 제어하는 프로세서;를 포함하되,
    상기 프로세서는,
    상기 송수신부를 통해 클라이언트로부터 트랜잭션 요청을 수신하고,
    상기 트랜잭션 요청에 기초하여 블록을 생성하고,
    상기 생성된 블록에 대한 블록 합의를 상기 계층 구조에 기초하여 분산된 각각의 노드들과 수행하는, 글로벌 리더 노드.
KR1020180148825A 2018-11-27 2018-11-27 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치 KR20200062889A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180148825A KR20200062889A (ko) 2018-11-27 2018-11-27 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180148825A KR20200062889A (ko) 2018-11-27 2018-11-27 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20200062889A true KR20200062889A (ko) 2020-06-04

Family

ID=71080679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180148825A KR20200062889A (ko) 2018-11-27 2018-11-27 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20200062889A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220021576A (ko) * 2020-08-14 2022-02-22 서강대학교산학협력단 신뢰 실행 환경을 기반으로 한 탈중앙형 오라클 시스템 및 상기 시스템에서의 외부 데이터 전달 방법
KR102441378B1 (ko) * 2021-11-18 2022-09-07 주식회사 스마트엠투엠 프라이빗 블록체인 기반의 분산 애플리케이션 접근 제어 관리 방법 및 시스템
KR20230007151A (ko) * 2021-07-05 2023-01-12 계명대학교 산학협력단 네트워크 확장성을 고려한 블록체인 합의 시스템 및 방법
CN117221332A (zh) * 2023-06-08 2023-12-12 天津大学 基于多领导者拜占庭容错共识的高鲁棒性交易打包方法
WO2023249166A1 (ko) * 2022-06-21 2023-12-28 포항공과대학교 산학협력단 멀티 클라우드의 블록 데이터 전송을 위한 유효 대역폭 추정 방법과 제어 메시지 생성 방법 및 트리 정보 전달 방법과 이를 위한 블록 전송 시스템

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220021576A (ko) * 2020-08-14 2022-02-22 서강대학교산학협력단 신뢰 실행 환경을 기반으로 한 탈중앙형 오라클 시스템 및 상기 시스템에서의 외부 데이터 전달 방법
KR20230007151A (ko) * 2021-07-05 2023-01-12 계명대학교 산학협력단 네트워크 확장성을 고려한 블록체인 합의 시스템 및 방법
KR102441378B1 (ko) * 2021-11-18 2022-09-07 주식회사 스마트엠투엠 프라이빗 블록체인 기반의 분산 애플리케이션 접근 제어 관리 방법 및 시스템
WO2023249166A1 (ko) * 2022-06-21 2023-12-28 포항공과대학교 산학협력단 멀티 클라우드의 블록 데이터 전송을 위한 유효 대역폭 추정 방법과 제어 메시지 생성 방법 및 트리 정보 전달 방법과 이를 위한 블록 전송 시스템
CN117221332A (zh) * 2023-06-08 2023-12-12 天津大学 基于多领导者拜占庭容错共识的高鲁棒性交易打包方法
CN117221332B (zh) * 2023-06-08 2024-04-12 天津大学 基于多领导者拜占庭容错共识的高鲁棒性交易打包方法

Similar Documents

Publication Publication Date Title
KR20200062889A (ko) 블록체인 시스템에서 계층적 합의 알고리즘에 기초하여 블록 합의를 수행하는 방법 및 장치
CN108650262B (zh) 一种基于微服务架构的云平台扩展方法及系统
ES2774691T3 (es) Unión de afiliaciones en sistemas informáticos distribuidos
Pfaff et al. The open vswitch database management protocol
CN110912707B (zh) 基于区块链的数字证书处理方法、装置、设备及存储介质
CN112511611B (zh) 节点集群的通信方法、装置、系统及电子设备
US20200344189A1 (en) Communication method and communication apparatus
ES2881606T3 (es) Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada
JP5798644B2 (ja) フェデレーションインフラストラクチャ内の一貫性
JP2021508876A (ja) 高性能分散型記録システムにおける同時トランザクション処理
US11954095B2 (en) High performance distributed system of record with extended transaction processing capability
CN110955725B (zh) 一种工业互联网标识解析根节点数据同步方法
ES2768325T3 (es) Inducción de un nodo en un grupo
US8478803B2 (en) Management of logical statements in a distributed database environment
CN104011701A (zh) 内容传送网络
US10866965B2 (en) Data replicating systems and data replicating methods
KR20070110367A (ko) 데이터 관리 방법 및 장치
US20190372825A1 (en) Communication apparatus, communication method, and recording medium
CN102316154B (zh) 优化对基于联盟基础结构的资源的访问
CN114363162A (zh) 区块链日志的生成方法及装置、电子设备、存储介质
CN113157450A (zh) 在区块链系统中执行区块的方法及装置
KR101342258B1 (ko) 분산 데이터 관리 시스템 및 그 방법
US20230016241A1 (en) Highly flexible, scalable multi blockchain, hierarchical data sharing and data storing system and method thereof
Pfaff Rfc 7047: The open vswitch database management protocol
CN113259459B (zh) 区块链子网运行状态的控制方法和区块链系统