KR20200085565A - 블록체인 기반 분산 원장 관리 장치 및 방법 - Google Patents

블록체인 기반 분산 원장 관리 장치 및 방법 Download PDF

Info

Publication number
KR20200085565A
KR20200085565A KR1020190001836A KR20190001836A KR20200085565A KR 20200085565 A KR20200085565 A KR 20200085565A KR 1020190001836 A KR1020190001836 A KR 1020190001836A KR 20190001836 A KR20190001836 A KR 20190001836A KR 20200085565 A KR20200085565 A KR 20200085565A
Authority
KR
South Korea
Prior art keywords
verification
node
nodes
distributed ledger
blockchain
Prior art date
Application number
KR1020190001836A
Other languages
English (en)
Other versions
KR102253506B1 (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 KR1020190001836A priority Critical patent/KR102253506B1/ko
Publication of KR20200085565A publication Critical patent/KR20200085565A/ko
Application granted granted Critical
Publication of KR102253506B1 publication Critical patent/KR102253506B1/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/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Landscapes

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

Abstract

일 실시예에 따른 블록체인 기반 분산 원장 관리 방법은, 블록체인 시스템을 구성하는 어느 하나의 노드에 의해 수행되는 분산 원장 관리 방법에 있어서, 랜덤(Random)하게 결정되는 대기 시간이 도과하면, 상기 블록체인 시스템을 구성하는 나머지 노드로 로그 공유 요청을 전송하는 단계; 상기 나머지 노드 각각에 저장된 로그 파일을 수신하는 단계; 상기 나머지 노드 중 어느 하나의 노드를 검증 필요 노드로 결정하고, 상기 나머지 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일의 공유 요청을 전송하는 단계; 미리 저장된 로그 파일과 상기 복수의 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여 상기 검증 필요 노드를 검증하는 단계; 및 상기 검증 결과를 기초로 상기 검증 필요 노드의 이상 상태 여부를 상기 검증 수행 노드와 합의(Consensus)하는 단계를 포함한다.

Description

블록체인 기반 분산 원장 관리 장치 및 방법{APPARATUS AND METHOD FOR MANAGING DISTRIBUTED LEDGER BASED ON BLOCK CHAIN}
본 발명은 블록체인 기술에 기반하여 분산 원장에 블록을 등록하는 블록체인 기반 분산 원장 관리 장치 및 방법에 관한 것이다.
블록체인 시스템은 수많은 노드가 P2P 네트워크로 연결되어 사용자의 트랜잭션(Transaction)을 처리하는 시스템으로서, 트랜잭션에 대한 기록을 순차적으로 저장하는 일종의 분산 원장 시스템이라고 볼 수 있다. 이러한 분산 원장에 한 번 기록된 내용은 변경이 거의 불가능하다는 특징을 가진다.
블록체인 시스템에서는 모두가 동일한 트랜잭션에 대한 처리 기록을 가질 필요가 있는데, 그것을 가능하게 하는 것이 합의 알고리즘(Consensus Algorithm)이다. 블록체인의 합의 알고리즘으로는 작업 증명(Proof of Work, PoW), 지분 증명(Proof of Stake, PoS), Sieve, Paxos 등이 널리 사용되고 있다.
한편, 블록체인 시스템을 구성하는 노드 중 어느 하나가 고장에 따라 오작동하거나, 고의로 악의적인 행동을 하는 경우, 블록체인 시스템의 안정성이 심각하게 훼손될 수 있다. 따라서, 합의 알고리즘은 이와 같은 상황에 대응 가능하도록 설계될 수 있다.
또한, 블록체인 시스템은 별도의 검증 방법에 따라 블록체인 시스템을 구성하는 노드의 상태를 검증할 수도 있다.
한국등록특허공보, 제 10-1628005호 (2016.06.03. 등록)
본 발명이 해결하고자 하는 과제는, 블록체인 네트워크를 구성하는 노드에 저장된 로그 파일을 공유하여 검증 필요 노드의 이상 상태 여부를 합의하는 블록체인 기반 분산 원장 관리 장치 및 방법을 제공하는 것이다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
일 실시예에 따른 블록체인 기반 분산 원장 관리 방법은, 블록체인 네트워크를 구성하는 어느 하나의 노드에 의해 수행되는 분산 원장 관리 방법에 있어서, 랜덤(Random)하게 결정되는 대기 시간이 도과하면, 상기 블록체인 네트워크를 구성하는 나머지 노드로 로그 공유 요청을 전송하는 단계; 상기 나머지 노드 각각에 저장된 로그 파일을 수신하는 단계; 상기 나머지 노드 중 어느 하나의 노드를 검증 필요 노드로 결정하고, 상기 나머지 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일의 공유 요청을 전송하는 단계; 미리 저장된 로그 파일과 상기 복수의 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여 상기 검증 필요 노드를 검증하는 단계; 및 상기 검증 결과를 기초로 상기 검증 필요 노드의 이상 상태 여부를 상기 검증 수행 노드와 합의(Consensus)하는 단계를 포함한다.
다른 실시예에 따른 블록체인 기반 분산 원장 관리 방법은, 블록체인 네트워크를 구성하는 복수의 노드에 의해 수행되는 분산 원장 관리 방법에 있어서, 상기 복수의 노드 중 어느 하나에서 랜덤(Random)하게 결정되는 대기 시간이 도과하면, 상기 복수의 노드에서 상기 복수의 노드 각각에 저장된 로그 파일을 공유하는 단계; 상기 복수의 노드 중 검증 필요 노드를 결정하고, 상기 복수의 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에서 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일을 공유하는 단계; 상기 복수의 검증 수행 노드 각각에 미리 저장된 로그 파일 및 다른 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여, 상기 복수의 검증 수행 노드 각각에서 상기 검증 필요 노드를 검증하는 단계; 및 상기 검증 결과를 기초로 상기 복수의 검증 수행 노드에서 상기 검증 필요 노드의 이상 상태 여부를 합의(Consensus)하는 단계를 포함한다.
일 실시예에 따른 블록체인 기반 분산 원장 관리 장치는, 랜덤(Random)하게 결정되는 대기 시간이 도과하면, 블록체인 네트워크를 구성하는 나머지 노드로 로그 공유 요청을 전송하고, 상기 나머지 노드 각각에 저장된 로그 파일을 수신하는 통신부; 상기 나머지 노드 중 어느 하나의 노드를 검증 필요 노드로 결정하고, 상기 나머지 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일의 공유 요청을 전송하도록 상기 통신부를 제어하는 제어부; 및 로그 파일이 미리 저장되는 저장부를 포함하고, 상기 제어부는, 상기 저장부에 저장된 상기 로그 파일과 상기 복수의 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여 상기 검증 필요 노드를 검증하고, 상기 검증 결과를 기초로 상기 검증 필요 노드의 이상 상태 여부를 상기 검증 수행 노드와 합의(Consensus)한다.
본 발명의 일 실시예에 따르면, 블록체인 네트워크 내 존재하는 이상 상태 노드를 조기에 확인하여, 블록체인 네트워크의 안정성을 높일 수 있다. 특히, 이상 상태 노드가 확인되면, 블록체인 네트워크의 합의 알고리즘 수행에 있어 확인된 이상 상태 노드를 배제함으로써, 합의의 건전성을 확보할 수 있다.
또한, 합의 알고리즘과는 독립적으로 검증 필요 노드를 검증함으로써, 블록체인 네트워크 내 합의 알고리즘의 수행 시 별도의 부하를 발생시키지 않을 수 있다.
도 1 은 본 발명의 일 실시예에 따른 블록체인 시스템의 기능 블록도이다.
도 2는 본 발명의 일 실시예에 따른 합의 알고리즘을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 분산 원장 관리 장치의 제어 블록도이다.
도 4는 본 발명의 일 실시예에 따른 분산 원장 관리 방법의 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 분산 원장 관리 방법의 각 단계를 설명하기 위한 도면이다.
도 6은 본 발명의 다른 실시예에 따른 분산 원장 관리 방법의 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1 은 본 발명의 일 실시예에 따른 블록체인 시스템의 기능 블록도이다.
블록체인 시스템(Block Chain System)은 트랜잭션(Transaction) 정보를 기록한 일종의 분산 원장 시스템(Distributed Ledger System)으로서, 블록체인 시스템(100)을 구성하는 복수의 노드(Node) 각각이 자신의 장부를 가지고, 각각의 장부는 내용이 동일하게 유지되는 것을 의미할 수 있다. 장부에 기록되는 하나의 엔트리(Entry)는 트랜잭션으로 표현되고, 장부에 기록을 원하는 사용자가 트랜잭션을 생성하여 P2P 네트워크에 전달하면, 블록체인 시스템(100) 내 노드들이 이를 모아 블록을 생성할 수 있다. 블록이 서로 체인으로 연결되므로, 트랜잭션의 순서화된 기록이 가능할 수 있고, 이렇게 연결된 블록체인의 인스턴트(Instant)는 하나의 분산 원장을 의미할 수 있다.
이 때, 분산 원장의 동일성은 블록체인 시스템(100)의 각각의 노드가 가지는 블록체인 이미지의 동일성에서 비롯될 수 있다. 만약, 중앙의 한 노드가 블록을 전담하여 생성한다면, 블록체인 이미지의 동일성은 자연스럽게 유지될 수 있다. 그러나, 블록체인 기술의 핵심은 특정 노드를 신뢰하지 않으면서 신뢰를 제공하는 것이므로, 블록체인 시스템(100)에서는 중앙 집중적 방식이 아닌 각각의 노드들이 자율적으로 블록을 생성하되, 별도의 합의(Consensus) 과정을 거쳐 최종적으로 모든 노드가 동일한 블록체인 이미지를 가지는 방법이 이용될 수 있다.
도 1에서는 블록체인 시스템(100)을 구성하는 노드가 4개인 경우를 예시한다. 상술한 바와 같이, 제 1 노드 n1 내지 제 4 노드 n4 각각에는 분산 원장이 저장될 수 있다. 특히, 이들 노드들 n1, n2, n3, n4는 트랜잭션이 임계치 이상 누적되면 상호 합의 과정을 거쳐 누적된 트랜잭션으로 구성되는 블록을 분산 원장에 등록할 수 있다.
예를 들어, 미리 정해진 주기가 경과하면, 제 1 노드 n1이 해당 주기 동안 누적된 트랜잭션을 하나의 블록으로 생성할 수 있다. 이렇게 생성된 블록은 블록헤더(Block Header)와 실제 트랜잭션 내용을 포함하는 블록내용으로 구성될 수 있다. 블록이 생성되면, 생성된 블록 중 블록헤더를 매개변수로 하여 제 1 노드 n1 내지 제 4 노드 n4는 상호 합의 과정을 수행할 수 있다.
종래의 합의 알고리즘의 단점을 개선하기 위해, 블록체인 시스템(100)을 전통적인 상태 머신 레플리케이션 시스템(State Machine Replication System)의 관점에서 바라보는 방법이 있다. 상태 머신 레플리케이션 시스템을 구성하는 복수의 레플리카(Replica)는 각각 자신만의 상태(State)를 가지며, 클라이언트가 특정 연산을 요청하면 레플리카들이 합의 알고리즘을 이용하여 동일한 상태를 가지도록 노력할 수 있다. 블록체인 시스템(100)에서 블록이 하나 늘어나는 것을 상태 머신 레플리케이션 시스템에서의 상태 변경으로 이해할 경우, 블록체인 시스템(100)에 상태 머신 레플리케이션 시스템의 합의 알고리즘을 적용할 수 있다.
이러한 합의 알고리즘은 레플리카 간의 네트워크 오류, 레플리카 자체의 고장 등의 문제에 따라 발생할 수 있는 문제를 해결할 필요가 있다. 구체적으로, 상태 머신 레플리케이션 시스템에서의 합의 알고리즘은 단순히 레플리카의 고장에 따른 오작동인 Fail-Stop과 레플리카의 악의적인 행동을 포함하는 임의의 동작에 따른 비잔틴 폴트(Byzantine Fault)에 대응하도록 설계될 수 있다.
이 중, 비잔틴 폴트를 가정한 합의 알고리즘의 일 실시예로 PBFT(Practical Byzantine Fault Tolerance)가 있다. PBFT 알고리즘에 따르면, 복수의 노드 중 의사 결정의 리더 역할을 하는 기본 노드(Primary Node)가 존재하고, 기본 노드의 주도하에 순차적으로 명령이 수행될 수 있다. 만약, 기본 노드가 고장이 나거나 악의적인 행동을 하면, 뷰 체인지(View Change)를 통해 기본 노드를 변경할 수 있다. 이러한 PBFT 알고리즘은 N=3F+1(N은 전체 노드의 수, F는 문제가 있는 노드의 수)을 만족할 때, 즉 전체 노드의 2/3 이상이 합의할 때 정상 동작이 보장될 수 있다.
그러나, PBFT 알고리즘에서는 N개의 노드 각각이 나머지 노드들(N-1개)에 합의를 위한 메시지를 전송하는데, 이 경우 시스템 복잡도는 O(N2)가 될 수 있다. 만약, 블록체인 시스템(100)을 구성하는 전체 노드의 수 N이 상당히 크다면, 블록체인 시스템(100) 상의 네트워크 부하 역시 매우 클 수 있다.
이를 해결하기 위해, 본 발명의 일 실시예에 따른 블록체인 시스템(100)은 분산 원장 관리 방법으로서 시스템 복잡도가 낮도록 설계된 합의 알고리즘을 채택할 수 있다. 이하에서는 본 발명의 일 실시예에 따른 합의 알고리즘에 대해 설명한다.
도 2는 본 발명의 일 실시예에 따른 합의 알고리즘을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 합의 알고리즘은 시작 노드에서 생성된 제 1 해쉬(Hash) 정보를 전송 경로를 따라 복수의 노드 각각에 순차적으로 전송함으로써 클라이언트 C로부터 제안된 트랜잭션을 포함하는 블록의 등록을 합의하여 분산 원장 Lo에 블록을 등록할 수 있다.
구체적으로, 본 발명의 일 실시예에 따른 합의 알고리즘은 블록체인 시스템(100)을 구성하는 복수의 노드 각각이 클라이언트로부터 제안된 트랜잭션을 포함하는 블록을 수신하는 Propose 단계; 전송 경로 중 시작 노드에서 생성된 제 1 해쉬 정보를 전송 경로를 따라 복수의 노드 각각에 순차적으로 전송하는 Merge-Prepare 단계; 및 복수의 노드 중 제 1 해쉬 정보를 수신한 노드의 수가 임계값 이상이면, 전송 경로의 역방향으로 블록의 등록을 합의하여 분산 원장 Lo에 등록하는 Learning-Commit 단계를 포함할 수 있다.
Propose 단계 (a) 에서는 복수의 노드 각각이 클라이언트 C로부터 적어도 하나의 트랜잭션으로 구성되는 블록을 수신할 수 있다. 도 2를 참조하면, 블록체인 시스템(100)을 구성하는 제 1 노드 n1 내지 제 4 노드 n4는 클라이언트 C가 제안하는 트랜잭션을 포함하는 블록을 각각 수신할 수 있다.
즉, 클라이언트 C는 블록체인 시스템(100)을 구성하는 복수의 노드 중 기본 노드와 같은 특정 노드에 트랜잭션을 포함하는 블록을 제안하고, 기본 노드가 이를 나머지 백업 노드에 전송하지 않을 수 있다. 기본 노드에 의해 나머지 노드로 블록이 전송되는 경우, 불필요한 지연 시간이 발생하므로, 본 발명의 일 실시예에 따른 합의 알고리즘의 (a)단계에서는 모든 노드에 동일한 새로운 블록을 제공할 수 있다.
이 때, 블록을 수신한 각각의 노드 n1 내지 n4는 수신된 블록 및 블록을 구성하는 적어도 하나의 트랜잭션을 검증할 수 있다. 만약, 동일 내용이 중복되는 트랜잭션이 발견되면, 이를 검증한 노드는 해당 블록에 대한 등록의 합의를 중단할 수 있다. 이와는 달리, 블록체인 시스템(100)은 별도의 검증 노드를 마련하여, 검증 노드에 의해 클라이언트 C에서 제안한 블록을 검증한 후, 노드 n1 내지 n4에 제공할 수도 있다.
또한, 각각의 노드 n1 내지 n4는 수신된 블록을 미리 정해진 시간 동안 누적할 수 있다. 즉, 각각의 노드 n1 내지 n4는 로그(Log) 형태로 수신된 블록을 저장할 수 있다. 특히, 트랜잭션의 격리성을 담보하기 위해, 각각의 노드 n1 내지 n4는 상호 독립적인 블록에 대해 미리 정해진 시간 동안 누적할 수 있다. 이에 대해서는 후술한다.
Merge-Prepare 단계 (b)에서는 전송 경로 중 시작 노드에서 생성된 제 1 해쉬 정보를 전송 경로를 따라 복수의 노드 각각에 순차적으로 전송할 수 있다. 여기서, 전송 경로란 블록체인 시스템(100)을 구성하는 복수의 노드가 연속적으로 배열되는 최적의 해쉬 정보의 이동 경로를 의미할 수 있고, 최적의 해쉬 정보란 지연 시간(Latency)를 기준으로 결정될 수 있다. 도 2를 참조하면, 전송 경로는 시작 노드인 제 1 노드 n1으로부터 제 3 노드 n3 및 제 2 노드 n2를 순차적으로 지난 후, 마지막으로 제 4 노드 n4에 도달하는 경로가 예시된다.
전송 경로 중 시작 노드인 제 1 노드 n1은 수신된 블록에 대한 제 1 해쉬 정보 Bn1을 생성할 수 있다. 그 다음, 제 1 노드 n1은 제 1 해쉬 정보 Bn1에 제 1 노드 n1의 디지털 시그니처(Digital Signature, Sn1)를 부가할 수 있다. 여기서, 디지털 시그니처란 특정 노드가 수신된 블록에 대하여 합의의 의사를 나타내기 위한 데이터를 의미할 수 있다.
디지털 시그니처를 부가한 후, 제 1 노드 n1은 전송 경로에 따라 제 3 노드 n3로 제 1 해쉬 정보 Bn1 및 디지털 시그니처 Sn1을 포함하는 메시지를 전송할 수 있다. 이를 수신한 제 3 노드 n3는 클라이언트 C로부터 수신한 블록이 메시지 내 제 1 해쉬 정보 Bn1에 대응되는지 여부를 확인할 수 있다. 여기서, 블록이 해쉬 정보에 대응된다는 것은 해당 블록을 기초로 동일한 해쉬 정보를 생성할 수 있음을 의미할 수 있다.
만약, 제 3 노드 n3에서 클라이언트 C로부터 수신한 블록이 제 1 해쉬 정보 Bn1에 대응되지 않으면, 제 3 노드 n3는 제 1 해쉬 정보 Bn1의 전송을 중단할 수 있다. 이 경우, 전송 경로를 통한 제 1 해쉬 정보 Bn1의 전송이 불가능할 수 있다.
반면, 제 3 노드 n3에서 클라이언트 C로부터 수신한 블록이 제 1 해쉬 정보 Bn1에 대응되면, 제 3 노드 n3는 수신된 메시지 상에 제 3 노드의 디지털 시그니처 Sn3를 부가할 수 있다. 이를 통해, 제 3 노드는 수신된 블록에 대한 합의의 의사를 나타낼 수 있다.
제 3 노드 n3는 디지털 시그니처 Sn3가 부가된 메시지를 전송 경로에 따라 제 2 노드 n2로 전송할 수 있고, 제 2 노드 n2 역시 수신된 블록과 제 1 해쉬 정보 Bn1과의 대응 여부를 기초로 제 2 노드의 디지털 시그니처를 부가할 수 있다. 최종적으로 제 4 노드 n4도 수신된 블록에 대한 합의의 의사가 있는 경우, 메시지에 제 4 노드의 디지털 시그니처를 부가할 수 있다. 그 결과, 전송 경로를 따라 전송된 메시지는 시작 노드의 제 1 해쉬 정보 Bn1과 복수의 노드 각각의 디지털 시그니처를 포함할 수 있다.
Merge-Prepare 단계를 수행한 결과, 메시지에 디지털 시그니처를 부가한 노드의 수가 미리 정해진 임계값 이상이면, 다음 단계로 진행할 수 있다. 여기서, 미리 정해진 임계값이란 합의 과정을 진행하기에 충분한 합의 의사를 가진 노드의 최소 개수를 의미할 수 있다. 상술한 바와 같이 전체 노드 개수의 2/3일 때 합의 알고리즘의 정상 동작이 담보되는 바, 본 발명의 일 실시예에 따른 합의 알고리즘은 임계값을 전체 노드 개수의 2/3으로 결정할 수 있다.
도 2의 경우, 디지털 시그니처를 부가한 노드가 3개 이상이면, (c) 단계로 진행할 수 있다. 따라서, 제 2 노드 n2 가 디지털 시그니처를 부가하면 (c) 단계로 진행되며, 제 2 노드 n2 에서 제 2 노드의 디지털 시그니처 Sn2가 부가된 메시지를 블록과 함께 제 4 노드 n4 로 전송하는 과정(도 2에서 점선 화살표로 표시)은 (c) 단계와 별도로 진행될 수 있다.
Learnig-Commit 단계 (c)는 복수의 노드 중 제 1 해쉬 정보를 수신한 노드의 수가 임계값 이상이면, 전송 경로의 역방향으로 블록의 등록을 합의하여 분산 원장 Lo에 등록할 수 있다. 1회적 합의만으로는 특정 노드의 임의적 행동의 검증이 불가능하므로, Learnig-Commit 단계에서는 전송 경로의 역방향에 따라 각각의 노드에서 수신한 블록의 분산 원장 Lo 등록을 합의할 수 있다.
상술한 합의 알고리즘의 경우, 전체 노드의 2/3 이상이 합의 할 때 정상 동작이 보장될 수 있음을 전제하므로, 단순히 일부 노드의 고장에 따른 오작동이나 악의적인 행동을 포함하는 임의의 동작에 따른 비잔틴 폴트에 대응 가능할 수 있다.
그러나, 보다 안정적으로 블록체인 시스템을 운영하기 위해서, 본 발명의 일 실시예에 따른 블록체인 시스템은 합의 알고리즘과는 별개로 블록체인 시스템을 구성하는 노드의 상태를 검증할 수 있다. 이하에서는, 도 3 내지 6을 참조하여, 블록체인 시스템 내 노드의 상태 검증 알고리즘을 설명한다.
도 3은 본 발명의 일 실시예에 따른 분산 원장 관리 장치의 제어 블록도이다.
본 발명의 분산 원장 관리 장치(110)는 블록체인 시스템(100)을 구성하는 하나의 노드로서 동작하는 장치를 의미할 수 있다. 따라서, 본 발명의 일 실시에에 따른 블록체인 시스템(100)은 복수의 분산 원장 관리 장치(110) 각각이 노드가 되어, 블록체인 네트워크를 형성하는 시스템을 의미할 수 있다.
일 실시에에 따른 분산 원장 관리 장치(110)는 개인용 컴퓨터(PC: Personal Computer), 랩톱(Laptop), 태블릿 PC(Tablet PC), 스마트폰(Smart Phone) 등을 포함할 수 있고, 이와 같은 개인용 단말 이외에, 서버 또는 복수의 서버의 집합으로 구성될 수도 있다.
도 3을 참조하면, 일 실시예에 따른 분산 원장 관리 장치(110)는 통신부(111); 제어부(112); 저장부(113)를 포함할 수 있다.
통신부(111)는 블록체인 네트워크를 형성하는 다른 분산 원장 관리 장치(110)와 통신 가능할 수 있다. 예를 들어, 통신부(111)는 다른 분산 원장 관리 장치(110)와의 관계에서 트랜잭션, 트랜잭션을 포함하는 블록, 블록에 대한 해쉬 정보 등을 송수신할 수 있다. 또한, 통신부(111)는 분산 원장 관리 장치(110)의 로그 정보를 포함하는 로그 파일을 다른 분산 원장 관리 장치(110)에 전송하거나, 다른 분산 원장 관리 장치(110)로부터 수신할 수도 있다.
뿐만 아니라, 통신부(111)는 다른 분산 원장 관리 장치(110)에 특정 데이터를 제공해달라는 요청을 전송할 수도 있다. 예를 들어, 일 실시예에 따른 통신부(111)는 트랜잭션 제공 요청, 트랜잭션을 포함하는 블록 제공 요청, 블록에 대한 해쉬 정보 제공 요청 등을 전송할 수 있다. 또한, 통신부(111)는 다른 분산 원장 관리 장치(110)의 로그 파일에 대한 공유 요청 등을 전송할 수도 있다.
이를 위해, 통신부(111)는 블록체인 시스템(100)이 채택한 통신 방법에 따라 통신 가능하도록 마련될 수 있다. 일 실시예에 따른 통신부(111)는 근거리 네트워크(LAN) 및/또는 광역 네트워크(WAN)를 채택하는 블록체인 시스템(100)에 대응되는 통신 방법에 따라 통신 가능하도록 마련될 수 있다.
저장부(113)는 블록체인 시스템(100)을 구현하는 것과 관련된 각종 정보가 미리 저장될 수 있다. 예를 들어, 일 실시예에 따른 저장부(113)는 트랜잭션, 트랜잭션을 포함하는 블록, 블록이 등록되는 분산 원장, 블록체인 시스템(100) 내 복수의 분산 원장 관리 장치(110) 간 스마트 계약(Smart Contract), 스마트 계약에 따라 결정되는 정책(Policy) 등이 미리 저장될 수 있다. 또한, 저장부(113)는 분산 원장 관리 장치(110)의 로그 정보를 포함하는 로그 파일이 미리 저장될 수도 있다.
이를 위해, 일 실시예에 따른 저장부(113)는 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), PROM(Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)와 같은 저장매체로 구현될 수 있다.
제어부(112)는 블록체인 시스템(100) 내 분산 원장 관리 장치(110)의 이상 상태 여부를 검증하기 위한 동작을 수행할 수 있다. 이를 위해, 일 실시예에 따른 제어부(112)는 마이크로프로세서(Microprocessor)를 포함하는 연산 장치로 구현될 수 있고, 예를 들어 중앙 처리 장치(Central Processing Unit, CPU) 및/또는 그래픽 처리 장치(Graphic Processing Unit, GPU) 등으로 구현될 수 있다.
이하에서는, 도 4를 참조하여, 상술한 분산 원장 관리 장치(110)에 의해 수행되는 블록체인 시스템(100) 내 분산 원장 관리 장치(110)의 이상 상태 여부를 검증하는 방법을 설명한다.
도 4는 본 발명의 일 실시예에 따른 분산 원장 관리 방법의 흐름도이고, 도 5는 본 발명의 일 실시예에 따른 분산 원장 관리 방법의 각 단계를 설명하기 위한 도면이다. 구체적으로, 도 5는 제 1 노드, 제 2 노드, 제 3 노드, 및 제 4 노드로 구성되는 블록체인 시스템(100)을 예시한 도면이다. 이하에서는 분산 원장 관리 장치(110)는 블록체인 시스템(100)을 구성하는 복수의 노드 중 어느 하나임을 전제로 설명한다.
먼저, 분산 원장 관리 장치(110)는 대기 시간이 도과하면, 블록체인 시스템(100)을 구성하는 다른 노드로 로그 공유 요청을 전송할 수 있다(S100). 여기서, 대기 시간이란 노드의 상태 검증이 완료된 시점으로부터 다음 상태 검증이 수행될 때까지의 시간을 의미하고, 분산 원장 관리 장치(110) 내 난수 발생기에 의해 랜덤(Random)하게 생성될 수 있다.
분산 원장 관리 장치(110)의 제어부(112)는 대기 시간 도과 여부를 판단하기 위해, 초기화 시점으로부터 소요 시간을 확인할 수 있다. 일 실시에에 따른 제어부(112)는 미리 정해진 시간 간격마다 소요 시간을 확인함으로써, 대기 시간 도과 여부를 판단할 수 있다.
이 때, 블록체인 시스템(100)을 구성하는 복수의 노드 전체는 각각의 난수 발생기에 의해 랜덤하게 생성된 서로 다른 대기 시간을 가질 수 있다. 그 결과, 블록체인 시스템(100)을 구성하는 복수의 노드 중 대기 시간이 가장 먼저 도과하는 노드는 랜덤하게 결정될 수 있다.
대기 시간이 도과한 것으로 확인되면, 분산 원장 관리 장치(110)의 제어부(112)는 다른 노드로 로그 공유 요청을 전송하도록 통신부(111)를 제어할 수 있다. 반면, 대기 시간이 도과하기 전 다른 노드로부터 로그 공유 요청이 수신되면, 분산 원장 관리 장치(110)의 제어부(112)는 소요 시간 확인을 중단하거나 초기화하고, 수신된 요청에 따라 동작할 수 있다.
도 5의 (a)를 참조하면, 대기 시간이 도과한 제 1 노드는 나머지 노드인 제 2 노드, 제 3 노드, 및 제 4 노드로 로그 공유 요청 S를 전송할 수 있다.
로그 공유 요청을 수신한 다른 노드에서는 미리 저장된 자신의 로그 파일을 블록체인 시스템(100)을 구성하는 다른 노드로 전송할 수 있다. 이 때, 미리 저장된 로그 파일은 해당 노드의 로그 정보를 포함하며, 로그 정보는 노드의 처리 내용이나 이용 상황을 시간의 흐름에 따라 기록된 정보로서, 트랜잭션, 트랜잭션을 포함하는 블록, 블록이 등록된 분산 원장과 관련된 처리 내용이 시간 정보와 함께 기록된 정보를 포함할 수 있다.
도 5의 (b)를 참조하면, 제 1 노드는 제 2 노드에 자신의 로그 파일인 L1을 전송하고, 제 2 노드로부터 제 2 노드의 로그 파일인 L2를 수신할 수 있다. 또한, 제 1 노드는 제 3 노드에 자신의 로그 파일인 L1을 전송하고, 제 3 노드로부터 제 3 노드의 로그 파일인 L3를 수신할 수 있다. 뿐만 아니라, 제 1 노드는 제 4 노드에 자신의 로그 파일인 L4을 전송하고, 제 4 노드로부터 제 4 노드의 로그 파일인 L4를 수신할 수 있다. 이와 유사하게, 제 2 노드와 제 3 노드 사이에서는 제 2 노드의 로그 파일 L2와 제 3 노드의 로그 파일 L3가 공유되고, 제 2 노드와 제 4 노드 사이에서는 제 2 노드의 로그 파일 L2와 제 4 노드의 로그 파일 L4가 공유되고, 제 3 노드와 제 4 노드 사이에서는 제 3 노드의 로그 파일 L3와 제 4 노드의 로그 파일 L4가 공유될 수 있다.
그 결과, 분산 원장 관리 장치(110)는 다른 노드 각각에 저장된 로그 파일을 다른 노드 각각으로부터 수신할 수 있다(S110). 도 5의 (b)를 따를 때, 제 1 노드인 분산 원장 관리 장치(110)는 통신부(111)를 통해 제 2 노드의 제 2 로그 파일 L2, 제 3 노드의 제 3 로그 파일 L3, 및 제 4 노드의 제 4 로그 파일 L4를 수신할 수 있다.
그 다음, 분산 원장 관리 장치(110)는 블록체인 시스템(100)의 다른 노드 중 어느 하나를 검증 필요 노드로 결정할 수 있다(S120). 구체적으로, 분산 원장 관리 장치(110)의 제어부(112)는 블록체인 시스템(100)의 다른 노드 중 임의의 하나를 선택하여 검증 필요 노드로 결정할 수 있다. 이 때, 제어부(112)는 난수 발생기 등을 이용하여 임의의 하나의 노드를 선택할 수 있다. 이하에서는 설명의 편의 상 블록체인 시스템(100)을 구성하는 복수의 노드 중 검증 필요 노드 이외의 노드를 검증 수행 노드라 한다.
이 때, 분산 원장 관리 장치(110)는 특정 노드가 검증 필요 노드로 결정되었음을 복수의 검증 수행 노드에 알릴 수도 있다.
검증 필요 노드가 결정되면, 분산 원장 관리 장치(110)는 복수의 검증 수행 노드 각각에 검증 필요 노드로부터 수신된 검증 필요 로그 파일의 공유 요청을 전송할 수 있다(S130). 구체적으로, 분산 원장 관리 장치(110)의 제어부(112)는 복수의 검증 수행 노드 각각이 검증 필요 노드로부터 수신한 검증 필요 로그 파일에 대한 공유 요청을 통신부(111)를 통해 복수의 검증 수행 노드 각각으로 전송할 수 있다.
검증 필요 로그 파일에 대한 공유 요청을 수신한 복수의 검증 수행 노드 각각에서는 검증 필요 노드로부터 수신한 검증 필요 로그 파일을 다른 검증 수행 노드로 전송할 수 있다.
도 5의 (c)를 참조하면, 제 4 노드가 검증 필요 노드로 결정된 후, 제 1 노드, 제 2 노드, 및 제 3 노드 간에 검증 필요 로그 파일을 공유할 수 있다. 예를 들어, 제 1 노드와 제 2 노드 간에는 제 1 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 1 검증 필요 로그 파일 L41 과 제 2 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 2 검증 필요 로그 파일 L42를 공유하고, 제 1 노드와 제 3 노드 간에는 제 1 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 1 검증 필요 로그 파일 L41 과 제 3 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 3 검증 필요 로그 파일 L43를 공유하고, 제 2 노드와 제 3 노드 간에는 제 2 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 2 검증 필요 로그 파일 L42 와 제 3 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 3 검증 필요 로그 파일 L43를 공유할 수 있다.
그 결과, 분산 원장 관리 장치(110)는 복수의 검증 수행 노드 각각이 수신한 검증 필요 로그 파일을 수신할 수 있다. 도 5의 (c)를 따를 때, 제 1 노드인 분산 원장 관리 장치(110)는 통신부(111)를 통해 제 2 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 2 검증 필요 로그 파일 L42, 및 제 3 노드가 검증 필요 노드인 제 4 노드로부터 수신한 제 3 검증 필요 로그 파일 L43를 수신할 수 있다.
그 다음, 분산 원장 관리 장치(110)는 저장부(113)에 미리 저장된 로그 파일과 복수의 검증 필요 로그 파일을 비교하여 검증 필요 노드를 검증할 수 있다(S140). 직접 작성하여 저장부(113)에 미리 저장한 로그 파일은 임의로 변경되지 않았다는 전제하에, 분산 원장 관리 장치(110)는 자신의 로그 파일과 복수의 검증 수행 노드가 수신한 검증 필요 로그 파일을 비교할 수 있다.
일 실시예에 따른 분산 원장 관리 장치(110)의 제어부(112)는 서로 일치하는 복수의 검증 필요 로그 파일이 자신의 로그 파일과 상이한지 확인할 수 있다. 만약, 검증 필요 노드가 고장에 의해 오작동한 결과의 로그 파일을 검증 수행 노드와 공유한 경우라면, 복수의 검증 수행 노드 각각이 수신한 검증 필요 로그 파일은 일치할 수 있으나, 정상 동작하는 분산 원장 관리 장치(110)가 직접 생성한 로그 파일과는 상이할 수 있다. 따라서, 서로 일치하는 복수의 검증 필요 로그 파일이 자신의 로그 파일과 상이한 경우, 분산 원장 관리 장치(110)의 제어부(112)는 검증 필요 노드를 고장에 의한 이상 상태 노드로 결정할 수 있다.
도 5의 (c)에서 제 1 노드는 서로 일치하는 검증 필요 로그 파일 L41, L42, 및 L43과 자신의 로그 파일 L1을 비교할 수 있다. 만약, 서로 일치하는 검증 필요 로그 파일 L41, L42, 및 L43과 자신의 로그 파일 L1이 상이하다면, 제 1 노드는 제 4 노드를 고장에 의한 이상 상태 노드로 결정할 수 있다.
또한, 다른 실시예에 따른 분산 원장 관리 장치(110)의 제어부(112)는 복수의 검증 필요 로그 파일 중 일부가 자신의 로그 파일과 상이한지 확인할 수 있다. 만약, 검증 필요 노드가 검증 수행 노드 중 일부에는 정상적인 로그 파일을 제공하고, 검증 수행 노드 중 나머지에는 악의적으로 조작된 로그 파일을 제공한 경우라면, 복수의 검증 수행 노드 각각이 수신한 검증 필요 로그 파일 중 일부만이 분산 원장 관리 장치(110)의 저장부(113)에 미리 저장된 로그 파일과 일치할 수 있다. 따라서, 복수의 검증 필요 로그 파일 중 일부가 미리 저장된 로그 파일과 상이하면, 분산 원장 관리 장치(110)의 제어부(112)는 검증 필요 노드를 악의적인 이상 상태 노드로 결정할 수 있다.
도 5의 (c)에서 제 1 노드는 검증 필요 로그 파일 L41, L42, 및 L43과 자신의 로그 파일 L1을 비교할 수 있다. 만약, 제 4 노드가 의도적으로 제 2 노드에만 조작된 로그파일을 제공한 경우, 제 1 노드의 로그 파일 L1은 검증 필요 로그 파일 중 L41, 및 L43 과 일치할 수 있으나, L42와는 상이할 수 있다. 이 경우, 제 1 노드는 제 4 노드를 악의적인 이상 상태 노드로 결정할 수 있다.
마지막으로, 분산 원장 관리 장치(110)는 검증 결과를 기초로 검증 필요 노드의 이상 상태 여부를 합의할 수 있다(S150). 일 실시예에 따른 분산 원장 관리 장치(110)의 제어부(112)는 통신부(111)를 통해 검증 수행 노드로 검증 결과 공유 요청을 전송할 수 있다. 요청에 따라 복수의 검증 수행 노드 각각의 검증 결과가 공유되면, 분산 원장 관리 장치(110)는 동일한 검증 결과를 가지는 2/3 이상의 검증 수행 노드의 검증 결과로 검증 필요 노드의 이상 상태 여부를 합의할 수 있다.
또한, 다른 실시예에 따른 분산 원장 관리 장치(110)는 도 2에서 설명한 합의 알고리즘과 유사한 방법에 따라 검증 필요 노드의 이상 상태 여부를 합의할 수도 있다. 구체적으로, 분산 원장 관리 장치(110)의 제어부(112)는 검증 수행 노드가 연속하여 구성되는 제 1 전송 경로에 대응되는 검증 수행 노드로 검증 결과를 전송할 수 있다. 여기서, 제 1 전송 경로란 블록 체인 시스템을 구성하는 복수의 검증 수행 노드가 연속적으로 배열되는 최적의 검증 결과 이동 경로를 의미할 수 있고, 최적의 검증 결과 이동 경로란 지연 시간을 기준으로 결정될 수 있다. 이 때, 분산 원장 관리 장치(110)는 검증 결과에 합의의 의사를 나타내기 위한 자신의 디지털 시그니처를 부가하여 전송할 수 있다.
제 1 전송 경로에 대응되는 검증 수행 노드에서 검증 결과를 수신하면, 해당 검증 수행 노드는 수신된 검증 결과가 자신의 검증 결과가 일치할 때 자신의 디지털 시그니처를 부가할 수 있다. 그 다음, 검증 수행 노드는 디지털 시그니처가 부가된 검증 결과를 제 1 전송 경로에 대응되는 다음 검증 수행 노드로 전송할 수 있다. 만약, 수신된 검증 결과가 자신의 검증 결과와 상이하다면, 검증 수행 노드는 전송 경로를 통한 검증 결과 전송을 중단할 수 있다.
이와 같은 과정을 반복한 결과, 검증 결과에 디지털 시그니처를 부가한 검증 수행 노드의 수가 미리 정해진 제 1 임계값 이상이면, 다음 단계로 진행할 수 있다. 여기서, 미리 정해진 제 1 임계값이란 합의 과정을 진행하기에 충분한 합의 의사를 가진 검증 수행 노드의 최소 개수를 의미할 수 있다. 상술한 바와 같이 전체 노드 개수의 2/3일 때 합의 알고리즘의 정상 동작이 담보되는 바, 본 발명의 일 실시예에 따른 제 1 임계값은 전체 검증 수행 노드 개수의 2/3으로 결정할 수 있다.
만약, 복수의 검증 수행 노드 중 검증 결과를 수신한 검증 수행 노드의 수가 제 1 임계값 이상이면, 제 1 전송 경로의 역방향으로 검증 결과를 합의할 수 있다. 1회적 합의만으로는 특정 노드의 임의적 행동의 검증이 불가능하므로, 본 발명의 일 실시예에 따른 블록체인 시스템(100)은 전송 경로의 역방향에 따라 각각의 검증 수행 노드에서 수신한 검증 결과를 합의할 수 있다.
그 결과, 최초 검증 결과를 전송한 분산 원장 관리 장치(110)는 제 1 임계값 이상의 수의 검증 수행 노드에 의한 합의 결과를 제 1 전송 경로의 역방향에 대응되는 검증 수행 노드로부터 수신한다면, 이를 수신한 분산 원장 관리 장치(110)는 검증 결과로서 검증 필요 노드의 이상 상태 여부를 다른 검증 수행 노드와 최종 합의할 수 있다.
지금까지는 블록체인 시스템(100)을 구성하는 복수의 노드가 능동적으로 어느 하나의 노드의 상태를 검증하는 방법을 설명하였다. 이하에서는, 도 6을 참조하여, 클라이언트 C에 의해 수동적으로 노드의 상태를 검증하는 방법을 설명한다.
도 6은 본 발명의 다른 실시예에 따른 분산 원장 관리 방법의 흐름도이다.
먼저, 분산 원장 관리 장치(110)는 클라이언트 C로부터 데이터 리드(Read) 요청이 수신되었는지 확인할 수 있다(S200). 만약, 데이터 리드 요청이 수신되지 않았다면, 분산 원장 관리 장치(110)는 반복하여 이를 확인할 수 있다.
반면, 클라이언트 C로부터 데이터 리드 요청이 수신되었다면, 분산 원장 관리 장치(110)는 미리 저장된 분산 원장으로부터 수신된 요청에 대응되는 데이터를 클라이언트 C로 전송할 수 있다(S210). 이는 블록체인 시스템(100)을 구성하는 모든 노드에 동일하게 적용될 수 있다. 따라서, 클라이언트 C는 블록체인 시스템(100)을 구성하는 노드의 수만큼 요청한 데이터를 수신할 수 있다.
데이터를 수신한 클라이언트 C는 분산 원장 관리 장치(110)로 데이터 수신 응답을 전송할 수 있다. 여기서, 데이터 수신 응답이란 클라이언트 C가 요청 데이터를 수신 완료했다는 확인 정보를 포함하고, 복수의 노드 각각으로부터 수신된 데이터의 일치 여부를 더 포함할 수 있다.
이에 대응하여, 분산 원장 관리 장치(110)는 클라이언트 C로부터 전송된 데이터 수신 응답을 누적할 수 있다(S220). 만약, 복수의 클라이언트 C로부터 데이터 리드 요청이 수신된다면, 요청에 대응되는 수만큼 데이터 수신 응답이 누적될 수 있다.
그 다음, 분산 원장 관리 장치(110)는 특정 노드에 대한 이상 상태 정보를 포함하는 데이터 수신 응답의 수가 기준 응답 수 이상인지 확인할 수 있다(S230). 여기서, 특정 노드에 대한 이상 상태 정보란 요청에 따라 클라이언트 C에 데이터를 제공한 노드 중 다른 노드와 상이한 데이터를 제공한 노드에 대한 정보를 의미할 수 있다. 또한, 기준 응답 수는 특정 노드를 이상 상태 노드로 합의할 수 있는 최소 누적 응답 수를 의미할 수 있다.
만약, 특정 노드에 대한 이상 상태 정보를 포함하는 데이터 수신 응답의 수가 기준 응답수 미만이면, 분산 원장 관리 장치(110)는 이상 상태의 노드가 존재하지 않는다고 보아 절차를 종료한다.
반면, 특정 노드에 대한 이상 상태 정보를 포함하는 데이터 수신 응답의 수가 기준 응답수 이상이면, 분산 원장 관리 장치(110)는 해당 노드를 이상 상태 노드로 결정하고, 다른 노드들과 이를 합의할 수 있다(S240). 이 때, 합의의 과정은 도 4에서 설명한 방법과 동일할 수 있다.
또한, 특정 노드가 이상 상태 노드로 합의되면, 본 발명의 일 실시예에 따른 블록체인 시스템(100)은 이후의 합의 알고리즘에 따라 합의를 이룰 때, 이상 상태 노드를 배제할 수 있다. 구체적으로, 특정 노드가 이상 상태 노드로 합의되면, 일 실시예에 따른 블록체인 시스템(100)의 분산 원장 관리 장치(110)는 이상 상태 노드를 제외한 정상 상태 노드와 신규 블록의 등록 여부를 합의할 수 있다.
만약, 도 2에서 설명한 바에 따른 합의 알고리즘에 따를 때, 블록체인 시스템(100)은 합의를 위한 제 2 전송 경로를 설정 시 이상 상태 노드를 배제할 수 있다. 따라서, 제 2 전송 경로는 정상 상태 노드가 연속하여 구성되도록 설정될 수 있다.
그 결과, 일 실시예에 따른 분산 원장 관리 장치(110)는 제 2 전송 경로에 대응되는 정상 상태 노드로 신규 블록의 해쉬 정보 및 디지털 시그니처를 포함하는 메시지를 전송할 수 있다. 제 2 전송 경로 상의 정상 상태 노드들은 자신이 수신한 신규 블록 내 해쉬 정보를 이전 정상 상태 노드로부터 수신한 해쉬 정보와 비교하여, 대응되는 경우에 메시지에 디지털 시그니처를 부가하여, 다음 정상 상태 노드로 전송할 수 있다.
이를 반복한 결과, 메시지에 디지털 시그니처를 부가한 정상 상태 노드의 수가 미리 정해진 제 2 임계값 이상이면, 다음 단계로 진행할 수 있다. 여기서, 제 2 임계값이란 합의 과정을 진행하기에 충분한 합의 의사를 가진 정상 상태 노드의 최소 개수를 의미할 수 있다. 상술한 바와 같이 전체 정상 상태 노드 개수의 2/3일 때 합의 알고리즘의 정상 동작이 담보되는 바, 본 발명의 일 실시예에 따른 합의 알고리즘은 임계값을 전체 정상 상태 노드 개수의 2/3으로 결정할 수 있다.
한편, 제 2 전송 경로를 통한 메시지의 전송과는 별개로, 복수의 후보 경로의 탐색이 이루어질 수 있다. 구체적으로, 제 2 전송 경로의 시작 노드로부터 메시지의 전송이 시작된 시점으로부터 미리 정해진 시간 간격으로 서로 다른 정상 상태 노드를 시작 노드로 하는 복수의 경로를 통한 메시지 전송이 수행될 수 있다. 이 중, 전송되는 메시지 내 블록에 대하여 적어도 3개의 노드에서 디지털 시그니처를 부가한 경우, 해당 메시지가 전송되는 경로는 후보 경로가 되며, 후보 경로의 각각의 정상 상태 노드 간 지연 시간을 측정하며, 마지막 정상 상태 노드에서 이를 수집하여 후보 경로의 지연 시간을 측정할 수 있다. 이렇게 측정된 후보 경로의 지연 시간은 제 2 전송 경로를 결정하는데 이용될 수 있으며, 이에 대해서는 후술한다.
만약, 제 2 전송 경로를 따라 전송된 메시지 내 디지털 시그니처를 부가한 정상 상태 노드의 개수가 제 2 임계값 미만이면, 구체적으로 수신된 메시지 내 디지털 시그니처를 부가한 정상 상태 노드의 개수가 제 2 임계값 미만이면서, 해당 정상 상태 노드에서 수신한 블록이 메시지 내 해쉬 정보에 대응되지 않는 경우, 제 2 전송 경로를 후보 경로로 변경하여, 메시지 전송을 다시 수행할 수 있다. 미리 정해진 시간 내에 제 1 해쉬 정보가 수신되지 않는 경우에도 마찬가지로 제 2 전송 경로를 후보 경로로 변경할 수 있다.
반면, 디지털 시그니처를 부가한 정상 상태 노드가 제 2 임계값 이상이면, 제 2 전송 경로의 역방향으로 블록의 등록을 합의하여 분산 원장 Lo에 등록할 수 있다. 1회적 합의만으로는 특정 노드의 임의적 행동의 검증이 불가능하므로, 제 2 전송 경로의 역방향에 따라 각각의 정상 상태 노드에서 수신한 블록의 분산 원장 Lo 등록을 합의할 수 있다.
상술한 여러 가지 실시예에 따른 블록체인 기반 분산 원장 관리 장치 및 방법은, 블록체인 네트워크 내 존재하는 이상 상태 노드를 조기에 확인하여, 블록체인 네트워크의 안정성을 높일 수 있다. 특히, 이상 상태 노드가 확인되면, 블록체인 네트워크의 합의 알고리즘 수행에 있어 확인된 이상 상태 노드를 배제함으로써, 합의의 건전성을 확보할 수 있다. 또한, 합의 알고리즘과는 독립적으로 검증 필요 노드를 검증함으로써, 블록체인 네트워크 내 합의 알고리즘의 수행 시 별도의 부하를 발생시키지 않을 수 있다.
한편, 상술한 실시예에 따른 블록체인 기반 분산 원장 관리 방법에 포함된 각각의 단계는, 이러한 단계를 수행하도록 프로그램된 컴퓨터 프로그램 또는 컴퓨터 프로그램을 기록하는 컴퓨터 판독가능한 기록매체에서 구현될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
일 실시예에 따르면, 상술한 블록체인 기반 분산 원장 관리 장치 및 방법은 댁내 또는 산업 현장 등 다양한 분야에서 이용될 수 있으므로 산업상 이용 가능성이 있다.
100: 블록체인 시스템
110: 분산 원장 관리 장치

Claims (13)

  1. 블록체인 시스템을 구성하는 어느 하나의 노드에 의해 수행되는 분산 원장 관리 방법에 있어서,
    랜덤(Random)하게 결정되는 대기 시간이 도과하면, 상기 블록체인 시스템을 구성하는 나머지 노드로 로그 공유 요청을 전송하는 단계;
    상기 나머지 노드 각각에 저장된 로그 파일을 수신하는 단계;
    상기 나머지 노드 중 어느 하나의 노드를 검증 필요 노드로 결정하고, 상기 나머지 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일의 공유 요청을 전송하는 단계;
    미리 저장된 로그 파일과 상기 복수의 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여 상기 검증 필요 노드를 검증하는 단계; 및
    상기 검증 결과를 기초로 상기 검증 필요 노드의 이상 상태 여부를 상기 검증 수행 노드와 합의(Consensus)하는 단계를 포함하는
    블록체인 기반 분산 원장 관리 방법.
  2. 제 1 항에 있어서,
    상기 검증 필요 노드를 검증하는 단계는,
    상기 미리 저장된 로그 파일 및 상기 검증 수행 노드로부터 수신된 상기 복수의 검증 필요 로그 파일이 상이하면, 상기 검증 필요 노드를 이상 상태 노드로 결정하는
    블록체인 기반 분산 원장 관리 방법.
  3. 제 2 항에 있어서,
    상기 검증 필요 노드를 검증하는 단계는,
    상기 검증 수행 노드 각각에 의해 수신된 상기 복수의 검증 필요 로그 파일 전부가 상기 미리 저장된 로그 파일과 상이하면, 상기 검증 필요 노드를 제 1 이상 상태 노드로 결정하는
    블록 체인 기반 분산 원장 관리 방법.
  4. 제 2 항에 있어서,
    상기 검증 필요 노드를 검증하는 단계는,
    상기 검증 수행 노드 각각에 의해 수신된 상기 복수의 검증 필요 로그 파일 중 일부가 상기 미리 저장된 로그 파일과 상이하면, 상기 검증 필요 노드를 제 2 이상 상태 노드로 결정하는
    블록 체인 기반 분산 원장 관리 방법.
  5. 제 2 항에 있어서,
    상기 검증 필요 노드의 이상 상태 여부를 합의하는 단계는,
    상기 검증 필요 노드를 상기 이상 상태 노드로 결정한 상기 검증 수행 노드의 수가 제 1 임계값 이상이면, 상기 검증 필요 노드를 상기 이상 상태 노드로 합의하는
    블록체인 기반 분산 원장 관리 방법.
  6. 제 5 항에 있어서,
    상기 검증 필요 노드의 이상 상태 여부를 합의하는 단계는,
    상기 검증 수행 노드가 연속하여 구성되는 제 1 전송 경로에 대응되는 검증 수행 노드로 상기 검증 결과를 전송하는 단계; 및
    상기 제 1 임계값 이상의 수의 상기 검증 수행 노드에 의한 합의 결과가 상기 제 1 전송 경로의 역방향에 대응되는 검증 수행 노드로부터 수신되면, 상기 검증 필요 노드의 이상 상태 여부를 상기 검증 수행 노드와 최종 합의하는 단계를 포함하는
    블록체인 기반 분산 원장 관리 방법.
  7. 제 1 항에 있어서,
    상기 로그 공유 요청을 전송하는 단계는,
    초기화 시점으로부터 소요 시간을 확인하여 상기 대기 시간 도과 여부를 판단하는 단계; 및
    상기 대기 시간 도과 전, 상기 나머지 노드로부터 상기 로그 공유 요청이 수신되면, 상기 소요 시간 확인을 중단 또는 초기화하는 단계를 포함하는
    블록체인 기반 분산 원장 관리 방법.
  8. 제 1 항에 있어서,
    상기 검증 필요 노드가 이상 상태 노드로 합의되면, 상기 블록체인 시스템을 구성하는 복수의 노드 중 상기 이상 상태 노드를 제외한 정상 상태 노드와 신규 블록의 등록 여부를 합의하는 단계를 더 포함하는
    블록체인 기반 분산 원장 관리 방법.
  9. 제 8 항에 있어서,
    상기 정상 상태 노드와 신규 블록의 등록 여부를 합의하는 단계는,
    상기 정상 상태 노드가 연속하여 구성되는 제 2 전송 경로에 대응되는 정상 상태 노드로 상기 신규 블록의 해쉬(Hash) 정보를 전송하는 단계; 및
    제 2 임계값 이상의 수의 상기 정상 상태 노드에 의한 합의 결과가 상기 제 2 전송 경로의 역방향에 대응되는 정상 상태 노드로부터 수신되면, 상기 신규 블록의 등록 여부를 최종 합의하는 단계를 포함하는
    블록체인 기반 분산 원장 관리 방법.
  10. 블록체인 시스템을 구성하는 복수의 노드에 의해 수행되는 분산 원장 관리 방법에 있어서,
    상기 복수의 노드 중 어느 하나에서 랜덤(Random)하게 결정되는 대기 시간이 도과하면, 상기 복수의 노드에서 상기 복수의 노드 각각에 저장된 로그 파일을 공유하는 단계;
    상기 복수의 노드 중 검증 필요 노드를 결정하고, 상기 복수의 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에서 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일을 공유하는 단계;
    상기 복수의 검증 수행 노드 각각에 미리 저장된 로그 파일 및 다른 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여, 상기 복수의 검증 수행 노드 각각에서 상기 검증 필요 노드를 검증하는 단계; 및
    상기 검증 결과를 기초로 상기 복수의 검증 수행 노드에서 상기 검증 필요 노드의 이상 상태 여부를 합의(Consensus)하는 단계를 포함하는
    블록체인 기반 분산 원장 관리 방법.
  11. 랜덤(Random)하게 결정되는 대기 시간이 도과하면, 블록체인 시스템을 구성하는 나머지 노드로 로그 공유 요청을 전송하고, 상기 나머지 노드 각각에 저장된 로그 파일을 수신하는 통신부;
    상기 나머지 노드 중 어느 하나의 노드를 검증 필요 노드로 결정하고, 상기 나머지 노드 중 상기 검증 필요 노드를 제외한 복수의 검증 수행 노드 각각에 상기 검증 필요 노드로부터 수신된 검증 필요 로그 파일의 공유 요청을 전송하도록 상기 통신부를 제어하는 제어부; 및
    로그 파일이 미리 저장되는 저장부를 포함하고,
    상기 제어부는,
    상기 저장부에 저장된 상기 로그 파일과 상기 복수의 검증 수행 노드 각각으로부터 수신된 복수의 상기 검증 필요 로그 파일을 비교하여 상기 검증 필요 노드를 검증하고, 상기 검증 결과를 기초로 상기 검증 필요 노드의 이상 상태 여부를 상기 검증 수행 노드와 합의(Consensus)하는
    블록체인 기반 분산 원장 관리 장치.
  12. 제 1 항 내지 제 10 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는, 컴퓨터 판독 가능 기록매체에 저장된 프로그램.
  13. 제 1 항 내지 제 10 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
KR1020190001836A 2019-01-07 2019-01-07 블록체인 기반 분산 원장 관리 장치 및 방법 KR102253506B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190001836A KR102253506B1 (ko) 2019-01-07 2019-01-07 블록체인 기반 분산 원장 관리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190001836A KR102253506B1 (ko) 2019-01-07 2019-01-07 블록체인 기반 분산 원장 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200085565A true KR20200085565A (ko) 2020-07-15
KR102253506B1 KR102253506B1 (ko) 2021-05-18

Family

ID=71603757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190001836A KR102253506B1 (ko) 2019-01-07 2019-01-07 블록체인 기반 분산 원장 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102253506B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117081861A (zh) * 2023-10-16 2023-11-17 北京亚大通讯网络有限责任公司 基于区块链的智能合约数据管理系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101628005B1 (ko) 2015-02-05 2016-06-13 주식회사 코인플러그 블록체인을 기반으로 하는 디지털 콘텐츠의 저작권리 위변조 감지시스템
KR101727525B1 (ko) * 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101628005B1 (ko) 2015-02-05 2016-06-13 주식회사 코인플러그 블록체인을 기반으로 하는 디지털 콘텐츠의 저작권리 위변조 감지시스템
KR101727525B1 (ko) * 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
비잔티움 장애 허용, 위키백과(2018.10.19.) 1부.* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117081861A (zh) * 2023-10-16 2023-11-17 北京亚大通讯网络有限责任公司 基于区块链的智能合约数据管理系统
CN117081861B (zh) * 2023-10-16 2023-12-26 北京亚大通讯网络有限责任公司 基于区块链的智能合约数据管理系统

Also Published As

Publication number Publication date
KR102253506B1 (ko) 2021-05-18

Similar Documents

Publication Publication Date Title
EP3564873B1 (en) System and method of decentralized machine learning using blockchain
CN111630826B (zh) 共识系统和方法
US11693746B2 (en) Systems and methods for enabling a highly available managed failover service
US20210026745A1 (en) Methods, systems, and computer readable media for providing byzantine fault tolerance
US11442818B2 (en) Prioritized leadership for data replication groups
US11526342B2 (en) Cancel and rollback update stack requests
WO2018154713A1 (ja) 情報検証システム、情報検証装置、方法およびプログラム
US20200364212A1 (en) System and method of supporting reflection of transactions between blockchain networks
KR20200112636A (ko) 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
US11409734B2 (en) Blockchain system and operation method thereof
JP5801482B2 (ja) キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム
US10218659B1 (en) Persistent connections for email web applications
US11625385B2 (en) Method and apparatus for managing data based on blockchain
KR102204231B1 (ko) 블록체인 기반 분산 원장 관리 방법
CN109450685A (zh) 一种基于局部链节点离线的共识方法及节点
Van Hoye et al. Logging mechanism for cross-organizational collaborations using Hyperledger Fabric
KR102253506B1 (ko) 블록체인 기반 분산 원장 관리 장치 및 방법
KR20200100472A (ko) 트랜잭션 처리를 위한 블록체인 네트워크의 노드 장치 및 이의 동작방법
Diarra Choosing a consensus protocol for uses cases in distributed ledger technologies
RU2589333C2 (ru) Ограничиваемая удаленной частью модель делегирования
US11010266B1 (en) Dual isolation recovery for primary-secondary server architectures
JP5061167B2 (ja) クラウドコンピューティングシステム
KR102447063B1 (ko) 개선된 pbft 기반의 블록체인 관리 방법, 블록체인 시스템 및 노드 장치
CN113010337B (zh) 故障检测方法、总控节点、工作节点及分布式系统
KR102542063B1 (ko) 뉴럴 블록 클러스터 기반의 안전한 블록 체인을 구축하는 장치 및 그 동작 방법

Legal Events

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