KR102514536B1 - 블록체인 플랫폼에서의 블록 전파 방법 및 장치 - Google Patents

블록체인 플랫폼에서의 블록 전파 방법 및 장치 Download PDF

Info

Publication number
KR102514536B1
KR102514536B1 KR1020200147882A KR20200147882A KR102514536B1 KR 102514536 B1 KR102514536 B1 KR 102514536B1 KR 1020200147882 A KR1020200147882 A KR 1020200147882A KR 20200147882 A KR20200147882 A KR 20200147882A KR 102514536 B1 KR102514536 B1 KR 102514536B1
Authority
KR
South Korea
Prior art keywords
block
peer
message
node
transaction
Prior art date
Application number
KR1020200147882A
Other languages
English (en)
Other versions
KR20220061656A (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 KR1020200147882A priority Critical patent/KR102514536B1/ko
Priority to US17/496,834 priority patent/US20220147511A1/en
Publication of KR20220061656A publication Critical patent/KR20220061656A/ko
Application granted granted Critical
Publication of KR102514536B1 publication Critical patent/KR102514536B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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
    • 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/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)

Abstract

블록체인 플랫폼에서의 블록 전파 방법 및 장치가 제공된다. 다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어를 맺고 동일한 블록체인을 유지하는 환경에서, 노드가, 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 제1 전달 메시지를 송신한 제1 피어의 정보를 제1 저장소에 저장한다. 그리고 수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달한다. 또한, 노드는, 제1 저장소에 저장된 정보를 토대로, 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 제1 피어에 전달한다. 그리고 노드는 제1 피어로부터 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신한다.

Description

블록체인 플랫폼에서의 블록 전파 방법 및 장치{Method and apparatus for block propagation in blockchain platform}
본 발명은 블록체인에 관한 것으로, 더욱 상세하게 말하자면, 블록체인 플랫폼에서의 블록 전파 방법 및 장치에 관한 것이다.
블록체인(Blockchain)은 중앙 집중화된(Centralized) 데이터 관리 방법의 단점을 보완하기 위한 기술이다. 블록체인 기술에서는 다수의 노드가 동일한 블록체인을 보유하고 데이터의 추가, 수정 등의 정보를 네트워크를 통해 전파하여 해당 내역을 블록체인에 업데이트하는 방식으로 관리한다. 블록체인으로 데이터를 관리하면 탈중앙화된(Decentralized) 방식으로 데이터를 관리할 수 있으며, 데이터의 무결성과 투명성을 제공할 수 있다.
블록체인을 사용하여 정보를 전달하고 관리하는데 있어서, 다수의 노드가 동일한 블록체인을 유지하기 위해 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고, 블록체인에 들어가는 다양한 정보(블록 및 트랜잭션)를 교환한다. P2P 네트워크를 통해 블록체인에 들어가는 정보를 전달하기 위한 방법은 크게 트랜잭션 전파와 블록 전파로 구성된다.
블록 전파의 경우에는 피어로부터 신규 블록을 수신 받아 검증하고 자신의 블록체인에 추가한 뒤에 자신과 연결된 다른 피어에게 전파한다. 이때, 신규 블록을 수신한 시점에서 검증과 저장을 끝낸 이후에 다른 피어에게 전파함으로써 신규 블록에 대한 전파 지연 문제가 발생한다. 이는 블록 생성 주기가 짧은 블록체인 플랫폼에 대해 치명적이다. 일반적으로 트랜잭션 처리량을 높이기 위해서는 빠른 블록 생성 주기를 갖기 때문에 기존의 블록 전파 방식을 보완한 새로운 방법을 필요로 한다.
본 발명이 해결하고자 하는 과제는, 블록체인 플랫폼에서 신규 블록 전파 지연 문제를 해결할 수 있는 메시지 파이프라이닝(message-pipelining) 블록 전파 방법 및 장치를 제공하는 것이다.
일 실시 예에 따르면, 다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고 동일한 블록체인을 유지하는 환경에서, 노드가 블록을 전파하는 방법이 제공된다. 상기 방법은, 상기 노드가, 상기 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 상기 제1 전달 메시지를 송신한 상기 제1 피어의 정보를 제1 저장소에 저장하는 단계; 상기 노드가, 수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 단계; 상기 노드가, 상기 제1 저장소에 저장된 정보를 토대로, 상기 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 상기 제1 피어에 전달하는 단계; 및 상기 노드가, 상기 제1 피어로부터 상기 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신하는 단계를 포함한다.
일 구현 예에서, 상기 방법은, 상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계 이후에, 상기 제1 요청 메시지를 전달한 상기 제1 피어의 정보를 제2 저장소에 저장하는 단계를 더 포함할 수 있다. 또한, 상기 방법은, 상기 제3 전달 메시지를 수신하는 단계 이후에, 상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 단계; 및 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는 경우에 상기 제3 전달 메시지에 포함된 제2 부분을 토대로 블록을 생성하고 검증하는 단계를 더 포함할 수 있다.
일 구현 예에서, 상기 방법은, 상기 노드가, 상기 제2 피어로부터, 상기 제2 전달 메시지에 포함된 제1 부분에 대응하면서 또한 상기 블록에 연관된 제2 부분을 요청하는 제2 요청 메시지를 수신하는 단계; 및 상기 노드가, 상기 제2 요청 메시지에 의해 요청된 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하는 단계를 더 포함할 수 있다.
일 구현 예에서, 상기 방법은, 상기 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 단계 이후에, 상기 제2 전달 메시지를 전달한 상기 제2 피어의 정보를 제3 저장소에 저장하는 단계를 더 포함하고, 상기 제2 요청 메시지를 수신하는 단계 이후에, 상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 단계를 더 포함할 수 있다. 이때, 상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계는 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 제2 피어에 전달할 수 있다.
일 구현 예에서, 상기 제1 피어의 정보를 제1 저장소에 저장하는 단계는 상기 수신된 제1 전달 메시지에 포함된 제1 부분을 검증하는 단계; 및 상기 검증된 제1 부분으로부터 획득되는 블록 해시를 토대로 상기 제1 피어에 대응하는 최신 블록 해시를 업데이트하는 단계를 포함할 수 있다.
일 구현 예에서, 상기 제1 부분은 상기 블록의 블록 헤더이고, 상기 제2 부분은 상기 블록의 블록 바디이며, 상기 블록 바디는 트랜잭션 리스트를 포함하고, 상기 블록 헤더는 이전 블록 해시값, 타임 스탬프 그리고 상기 트랜잭션 리스트에 의존성이 있는 값을 포함할 수 있다.
일 구현 예에서, 상기 블록을 생성하고 검증하는 단계는, 상기 제3 전달 메시지에 포함된 제2 부분인 블록 바디를 기반으로 신규 블록을 생성하고, 생성된 블록을 검증하는 단계; 및 상기 검증된 블록을 상기 노드의 블록체인에 추가하는 단계를 포함할 수 있다.
일 구현 예에서, 상기 방법은, 상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 단계 이후에, 상기 제2 요청 메시지에 의해 요청된 제2 부분인 블록 바디가 있는지를 판단하는 단계를 더 포함할 수 있다. 이때, 상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계는 상기 제2 부분인 블록 바디가 있는 경우에, 상기 블록 바디를 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하고, 상기 제2 요청 메시지는 블록 해시를 포함할 수 있다.
일 구현 예에서, 상기 제1 부분은 리딩(Leading) 블록이고, 상기 제2 부분은 상기 블록의 트랜잭션이며, 상기 리딩 블록은 상기 블록의 블록 헤더와 순차 트랜잭션 ID 리스트를 포함하며, 상기 순차 트랜잭션 ID 리스트는 상기 블록의 트랜잭션의 트랜잭션 ID를 순차적으로 나열한 리스트일 수 있다.
일 구현 예에서, 상기 방법은, 상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계 이전에, 상기 제1 전달 메시지에 포함된 제1 부분인 리딩 블록의 순차 트랜잭션 ID 리스트를 최신 블록 트랜잭션 리스트로 업데이트하는 단계; 및 상기 업데이트된 최신 블록 트랜잭션 리스트와 제1 리스트 - 상기 제1 리스트는 블록에 포함되지 않았지만 전파될 트랜잭션의 리스트임 - 를 비교하여, 보유하지 않은 트랜잭션을 도출하는 단계를 더 포함할 수 있다. 이때, 상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계는 상기 도출된 트랜잭션을 상기 제2 부분으로 사용하여, 상기 도출된 트랜잭션에 관련된 정보를 상기 제1 요청 메시지에 포함시켜 상기 제1 피어에 전달할 수 있다.
일 구현 예에서, 상기 방법은, 상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 단계 이후에, 상기 제1 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 노드가 보유하지 않은 트랜잭션들의 리스트인 제2 리스트로부터, 상기 제3 전달 메시지에 포함된 제2 부분인 트랜잭션들을 삭제하는 단계를 더 포함할 수 있다. 또한 상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계 이후에, 피어별 제3 리스트 - 상기 피어별 제3 리스트는 피어별로 해당 피어가 요청한 트랜잭션들의 리스트임 - 로부터, 상기 제4 전달 메시지에 포함된 제2 부분인 트랜잭션들을 삭제하는 단계를 더 포함할 수 있다.
일 구현 예에서, 상기 블록을 생성하고 검증하는 단계는, 상기 노드가 요청한 트랜잭션들을 모두 수신하여 상기 제2 리스트가 비어 있는 경우에, 수신된 트랜잭션들을 기반으로 블록을 생성하고, 생성된 블록을 검증하는 단계; 및 상기 검증된 블록을 상기 노드의 블록체인에 추가하는 단계를 포함할 수 있다.
일 구현 예에서, 상기 방법은, 상기 제3 저장소에 저장되어 있는 피어에 대해 요청된 제2 부분을 전달한 다음에, 해당 피어의 최신 블록 해시를 업데이트하는 단계; 및 상기 제1 저장소, 상기 제2 저장소 및 상기 제3 저장소 중 적어도 하나를 초기화하는 단계를 더 포함할 수 있다.
다른 실시 예에 따르면, 다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고 동일한 블록체인을 유지하는 환경에서, 블록을 전파하는 노드가 제공된다. 상기 노드는, 네트워크를 통해 데이터를 송수신하도록 구성된 네트워크 인터페이스 장치; 블록 전파를 위한 복수의 저장소를 저장하도록 구성된 메모리; 및 상기 네트워크 인터페이스 장치를 통해 상기 네트워크 상의 다른 노드와의 블록 전파를 수행하도록 구성된 프로세서를 포함하고, 상기 프로세서는, 상기 네트워크 인터페이스 장치를 통해, 상기 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 상기 제1 전달 메시지를 송신한 상기 제1 피어의 정보를 상기 메모리의 제1 저장소에 저장하는 동작; 수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 네트워크 상의 노드인 제2 피어에 전달하는 동작; 상기 제1 저장소에 저장된 정보를 토대로, 상기 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제1 피어에 전달하는 동작; 및 상기 네트워크 인터페이스 장치를 통해, 상기 제1 피어로부터 상기 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신하는 동작을 수행하도록 구성된다.
상기 프로세서는, 상기 제1 요청 메시지를 상기 제1 피어에 전달하는 동작 이후에, 상기 제1 요청 메시지를 전달한 상기 제1 피어의 정보를 제2 저장소에 저장하는 동작을 추가적으로 수행하고, 상기 제3 전달 메시지를 수신하는 동작 이후에, 상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 동작; 및 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는 경우에 상기 제3 전달 메시지에 포함된 제2 부분을 토대로 블록을 생성하고 검증하는 동작을 추가적으로 수행하도록 구성될 수 있다.
일 구현 예에서, 상기 프로세서는 추가적으로, 상기 네트워크 인터페이스 장치를 통해, 상기 제2 피어로부터, 상기 제2 전달 메시지에 포함된 제1 부분에 대응하면서 또한 상기 블록에 연관된 제2 부분을 요청하는 제2 요청 메시지를 수신하는 동작; 및 상기 제2 요청 메시지에 의해 요청된 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제2 피어에 전달하는 동작을 수행하도록 구성될 수 있다.
일 구현 예에서, 상기 프로세서는 상기 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 동작 이후에, 상기 제2 전달 메시지를 전달한 상기 제2 피어의 정보를 제3 저장소에 저장하는 동작을 추가적으로 수행하고, 상기 제2 요청 메시지를 수신하는 동작 이후에, 상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 동작을 추가적으로 수행할 수 있다. 이때, 상기 프로세서는 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제2 피어에 전달하도록 구성될 수 있다.
일 구현 예에서, 상기 프로세서는 상기 제1 피어의 정보를 제1 저장소에 저장하는 동작 수행시, 상기 수신된 제1 전달 메시지에 포함된 제1 부분을 검증하는 동작; 및 상기 검증된 제1 부분으로부터 획득되는 블록 해시를 토대로 상기 제1 피어에 대응하는 최신 블록 해시를 업데이트하는 동작을 추가적으로 수행하도록 구성될 수 있다.
일 구현 예에서, 상기 제1 부분은 상기 블록의 블록 헤더이고, 상기 제2 부분은 상기 블록의 블록 바디이며, 상기 블록 바디는 트랜잭션 리스트를 포함하고, 상기 블록 헤더는 이전 블록 해시값, 타임 스탬프 그리고 상기 트랜잭션 리스트에 의존성이 있는 값을 포함할 수 있다.
일 구현 예에서, 상기 제1 부분은 리딩 블록이고, 상기 제2 부분은 상기 블록의 트랜잭션이며, 상기 리딩 블록은 상기 블록의 블록 헤더와 순차 트랜잭션 ID 리스트를 포함하며, 상기 순차 트랜잭션 ID 리스트는 상기 블록의 트랜잭션의 트랜잭션 ID를 순차적으로 나열한 리스트일 수 있다.
실시 예들에 따르면, 블록체인 플랫폼에서 신규 블록 발생시, 최소한의 검증과 메시지 교환으로 블록 전파를 수행할 수 있다. 이에 따라 신규 블록의 지연 문제를 해결할 수 있으며, 또한, 다수의 노드가 빠르게 최신 블록을 동기화할 수 있다.
도 1은 블록체인 플랫폼에서의 블록을 나타낸 개념도이다.
도 2는 본 발명의 제1 실시 예에 따른 블록 전파 방법의 흐름도이다.
도 3a 내지 도 3c는 본 발명의 제1 실시 예에 따른 블록 전파 방법에서, 노드가 수행하는 동작을 나타낸 흐름도이다.
도 4는 본 발명의 제2 실시 예에 따른 블록 전파 방법의 흐름도이다.
도 5a 내지 도 5d는 본 발명의 제2 실시 예에 따른 블록 전파 방법에서, 노드가 수행하는 동작을 나타낸 흐름도이다.
도 6은 본 발명의 실시 예에 따른 블록 전파 방법을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 구조도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
또한, 본 발명의 실시 예에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 도면을 참조하여 본 발명의 실시 예에 따른 블록체인 플랫폼에서의 블록 전파 방법 및 장치에 대하여 설명한다.
도 1은 블록체인 플랫폼에서의 블록을 나타낸 개념도이다.
블록체인은 여러 블록으로 구성되며, 하나의 블록은 도 1에서와 같이, 블록 헤더(Header)와 블록 바디(Body)를 포함한다. 블록 헤더는 이전 블록의 해시값, 블록이 생성된 시간인 타임스탬프(Timestamp), 트랜잭션 리스트에 의존성(Dependency)이 있는 값(설명의 편의상, 트랜잭션 의존성 정보라고도 명명됨)을 포함한다. 블록 바디는 트랜잭션(Transaction) 리스트를 포함한다. 트랜잭션은 데이터의 추가, 수정 등의 내역을 포함하며, 트랜잭션 리스트는 여러 트랜잭션들의 리스트이다. 트랜잭션 리스트에서 트랜잭션 ID에 대응하여 트랜잭션이 매핑되어 있다. 트랜잭션 ID는 트랜잭션에 들어가는 데이터에 의존성이 있는 값일 수 있으며, 예를 들어, 트랜잭션에 들어가는 데이터의 해시값을 사용할 수 있다.
블록 헤더에 포함된 트랜잭션 리스트에 의존성(Dependency)이 있는 값은 예를 들어, 트랜잭션의 해시를 2진 트리 형태로 구성할 때, 트리 루트에 위치하는 해시값으로 트랜색션이 발생할 때마다 업데이트되는 머클 해시(merklehash), 트랜잭션 수 그리고 논스(nonce) 등을 포함할 수 있다.
블록체인은 이러한 구조로 이루어지는 블록들이 이전 블록의 해시 값을 이용하여 서로 연관되는 형태이며, 즉, 신규 블록이 이전 블록의 해시값(Previous Hash)을 포함하여 하나의 연결된 연결 리스트(Linked list) 구조로 되어 있다.
블록체인을 사용하여 정보를 전달하고 관리하는 기본적인 방법은 다음과 같다.
먼저, 다수의 노드가 동일한 블록체인을 유지하기 위해 P2P 네트워크를 통해 피어(Peer)를 맺고 블록체인에 들어가는 다양한 정보(블록 및 트랜잭션)를 교환한다. 다수의 노드는 트랜잭션을 네트워크에 전파하여 데이터의 수정 내역을 교환하며, 블록을 생성하는 마이너(Miner)는 전파된 트랜잭션을 포함하여 블록을 생성한다. 각 블록체인 플랫폼 별로 블록 생성 조건을 충족하는 블록을 생성한 마이너는 네트워크에 만든 블록을 전파하고 블록을 수신한 노드는 검증을 거치고 검증된 블록을 자신의 블록체인에 추가한다.
P2P 네트워크를 통해 블록체인에 들어가는 정보를 전달하기 위한 방법은 크게 트랜잭션 전파와 블록 전파로 구성된다. 트랜잭션 전파의 경우에는 트랜잭션 정보를 그대로 전파하는 방법과 트랜잭션 ID를 전파하는 방법으로 구분된다. 트랜잭션 정보를 그대로 전파하는 방법은, 새로운 트랜잭션을 수신하면 피어가 자신과 연결된 다른 피어에게 해당 트랜잭션 정보를 그대로 전파하는 방식이다. 트랜잭션 ID를 전파하는 방법은 새로운 트랜잭션을 수신하면 피어가 트랜잭션 정보의 해시값(트랜잭션 ID)을 자신과 연결된 다른 피어에게 해당 트랜잭션 ID를 전파하고, 이후에 전체 트랜잭션 정보가 요청되면 전체 트랜잭션 정보를 전달하는 방식이다.
블록 전파의 경우, 피어는 신규 블록을 수신하면 수신된 블록을 검증하고, 검증된 블록을 자신의 블록체인에 추가한 뒤에 자신과 연결된 다른 피어에게 전파한다. 이때 사용하는 블록 전파 방식은 블록체인 플랫폼 별로 다양한 전파 방식이 있으며, 헤더 우선 전달 방식과 헤더 및 트랜잭션 ID 리스트 우선 전달 방식 등이 있다. 헤더 우선 전달 방식은 다양한 블록체인 플랫폼에서 많이 사용되고 있으며, 헤더 및 트랜잭션 ID 리스트 전달 방식은 비트코인(Bitcoin) 플랫폼에서 트랜잭션 ID 리스트 대신 간소화한 트랜잭션 ID 리스트(Short Txids)를 사용하는 방식으로 활용되고 있다.
본 발명의 실시 예에서는 블록체인 플랫폼에서 새롭게 생성된 블록이 전체 네트워크에 빠르게 전파할 수 있도록, 블록 전파 방식을 기반으로 하는 메시지 파이프라이닝 블록 전파 프로토콜을 제공한다.
메시지 파이프라이닝 블록 전파 프로토콜은 헤더 우선 전달 방식과 헤더 및 트랜잭션 ID 리스트 우선 전달 방식을 대상으로 하며, 블록 전파시 주고 받는 메시지를 하나의 단위로 처리하면서 파이프라이닝 기법을 이용하여 병렬 처리를 수행한다. 본 발명의 실시 예에 따른 메시지 파이프라이닝 블록 전파 프로토콜을 사용하기 위해서는 다음을 만족해야 한다.
- 블록체인 플랫폼에서 사용하는 블록체인은 블록의 연결 리스트 형식으로 구성되며, 최신 블록은 이전 블록 해시값의 의존성을 가져야 한다.
- 블록은 헤더와 바디로 구분될 수 있어야 한다.
- 블록 헤더는 이전 블록 해시값, 타임스탬프, 트랜잭션 리스트에 의존성이 있는 값을 포함하며, 최신 블록임을 검증할 수 있어야 한다. (일반적으로 블록 헤더의 해시값을 현재 블록의 해시값으로 사용하므로 블록 헤더만으로 최신 블록임을 검증할 수 있다.)
- 블록 바디는 트랜잭션 리스트로 구성되며, 각 트랜잭션은 블록체인 플랫폼 별로 다르게 구성될 수 있다.
- 메시지 파이프라이닝 블록 전파 프로토콜을 사용하는 노드의 블록체인은 대다수의 노드와 동기화된 상태이어야 한다.
- 트랜잭션에 들어가는 데이터에 의존성이 있는 값을 트랜잭션 ID로 하며, 예를 들어, 트랜잭션에 들어가는 데이터의 해시값이 트랜잭션 ID로 사용될 수 있다.
- 블록에 포함되지 않았으나 전파될 트랜잭션 데이터를 특정 저장 장소(예를 들어, 멤플(Mempool)이라고 지칭됨)에 저장하여 관리해야 한다.
- 메시지 파이프라이닝 블록 전파 프로토콜을 통한 신규 블록 전파가 실패한 경우, 최신 블록까지 동기화가 가능한 블록 전파 프로토콜 사용이 가능해야 한다. (이때 이미 존재하는 블록 전파 프로토콜을 사용해도 무방하다.)
이러한 조건을 만족하는 상태에서, 본 발명의 실시 예에 따른 메시지 파이프라이닝 블록 전파 프로토콜은 크게 두 가지 방법으로 구분된다.
첫 번째 방법은 헤더 우선 전달 방법이다. 구체적으로, 헤더 우선 전달 방법은 노드가 직접 신규 블록 생성에 성공하거나, 다른 피어로부터 신규 블록 또는 신규 블록의 헤더를 포함한 데이터를 수신된 뒤에 진행된다. 헤더 우선 전달 방법에서 노드는 연결된 다른 피어에게 블록 헤더를 전파하고, 이후에 블록 바디가 요청되면 그때 블록 바디를 전달한다.
두 번째 방법은 리딩(Leading) 블록 우선 전달 방법이다. 여기서 리딩 블록은 블록 헤더와 순차(Sequential) 트랜잭션 ID 리스트를 합친 데이터를 나타낸다. 리딩 블록은 또한 블록 보상(Reward)이 담긴 코인베이스(Coinbase) 트랜잭션을 포함할 수 있다. 순차 트랜잭션 ID 리스트의 경우, 특정 트랜잭션의 포함 여부와 순번을 확인할 수 있는 자료 구조로 대체될 수 있다. 리딩 블록 우선 전달 방법은 노드가 직접 신규 블록 생성에 성공하거나, 다른 피어로부터 신규 블록 또는 신규 블록의 리딩 블록을 포함한 데이터를 수신된 뒤에 진행된다. 리딩 블록 우선 전달 방법에서, 노드는 연결된 다른 피어에게 리딩 블록을 전파하고, 이후에 트랜잭션이 요청되면 그때 트랜잭션을 전달한다.
메시지 파이프라이닝 블록 전파 프로토콜이 적용되는 블록체인 플랫폼은 위에 기술된 두 가지 방법을 일부 또는 모두 지원할 수 있어야 한다.
다음에는 본 발명의 제1 실시 예에 따른 블록 전파 방법에 대해 설명한다. 본 발명의 제1 실시 예는 메시지 파이프라이닝 블록 전파 프로토콜의 헤더 우선 전달 방법을 기반으로 블록 전파를 수행한다.
본 발명의 제1 실시 예에 따른 헤더 우선 전달 방법 기반의 블록 전파에서, 프로토콜 메시지는 다음 세 가지로 구분된다.
- HEADER: 신규 블록 헤더를 전달하는 메시지이며, 블록 헤더 전달 메시지라고도 명명된다.
- REQ_BODY: 특정 블록 바디를 요청하는 메시지이며, 블록 바디 요청 메시지라고도 명명된다.
- BODY: 요청한 블록 바디를 전달하는 메시지이며, 블록 바디 전달 메시지라고도 명명된다.
REQ_BODY 메시지의 경우, 예를 들어, 블록 해시를 전달하면서 대응하는 블록 바디를 요청할 수 있다.
도 2는 본 발명의 제1 실시 예에 따른 블록 전파 방법의 흐름도이다.
여기서는 설명의 편의를 위하여, 다수의 노드가 P2P 네트워크를 통해 피어를 맺고 동일한 블록체인을 유지하는 환경에서, 하나의 노드를 중심으로 블록 전파 방법을 설명한다.
첨부한 도 2에서와 같이, 노드(1)는 P2P 네트워크 상의 다른 노드인 제1 피어(2)로부터 신규 블록에 대한 블록 헤더를 수신한다(S100). 제1 피어(2)는 직접 신규 블록 생성에 성공하거나, 다른 피어로부터 신규 블록 또는 신규 블록의 헤더를 포함한 데이터를 수신한 후에, HEADER 메시지를 통해 신규 블록에 대한 블록 헤더를 노드(1)에 송신할 수 있다. 이때, HEADER 메시지 대신에 블록 헤더를 포함하는 다른 메시지가 사용될 수도 있다.
노드(1)는 수신 받은 블록 헤더를 연결된 다른 노드인 제2 피어(3)에 전달한다(S110). 이때, 노드(1)는 HEADER 메시지를 통해 수신된 블록 헤더를 제2 피어(3)에 전달한다.
한편, 노드(1)는 수신된 블록 헤더에 대응하는 블록 바디를 요청한다(S120). 노드(1)는 REQ_BODY 메시지를 이용하여 제1 피어(2)에게, 수신된 블록 헤더에 대응하는 블록 바디를 요청하며, 이때, 수신된 블록 헤더에 포함된 정보를 기반으로 획득되는 블록 해시를 REQ_BODY 메시지에 포함시켜 송신하면서 대응하는 블록 바디를 요청할 수 있다.
또한, 노드(1)는 수신된 블록 헤더를 전달한 제2 피어(3)로부터 전달한 블록 헤더에 대응하는 블록 바디를 요청하는 REQ_BODY 메시지를 수신할 수 있다 (S130). 이때, 제2 피어(3)는 전달받은 블록 헤더에 포함된 정보를 기반으로 획득된 블록 해시를 REQ_BODY 메시지에 포함시켜 송신하면서 대응하는 블록 바디를 요청할 수 있다.
노드(1)는 블록 바디를 요청한 후에 제1 피어(2)로부터 BODY 메시지를 통해 대응하는 블록 바디를 수신한다(S140). 이때, 제1 피어(2)로부터 전달받은 블록 헤더에 대응하는 블록 바디들을 수신할 수 있다.
또한, 노드(1)는 제2 피어(3)의 요청에 따라 대응하는 블록 바디를 BODY 메시지를 통해 제2 피어(3)에 전달한다(S150). 예를 들어, 수신된 REQ_BODY 메시지에 포함된 블록 해시에 대응하는 블록 바디를 BODY 메시지를 통해 제2 피어(3)에 전달한다
이러한 블록 전달 방법에서 수행되는 각 단계의 순서는 위에 기술된 순서에 한정되지 않으며, 다양하게 변경 가능하다. 예를 들어, 단계(S120) 이후에 단계(S140)가 수행되고, 단계(S130) 이후에 단계(S150)가 수행될 수 있다.
제1 실시 예에 따른 블록 전파 방법을 위해, 노드는 다음과 같은 자료 구조를 사용한다.
- 피어별 최신 블록 해시: 이는 최신 블록 송수신을 위한 것이며, 피어별로 최신 블록 해시가 매핑되는 자료 구조이다. 예를 들어, 피어의 식별자에 대응하여 최신 블록 해시가 매핑될 수 있으며, 최신 블록 해시는 최신 블록의 블록 헤더에 포함된 정보에 해시 함수를 적용하여 획득되는 값일 수 있다.
- RECV_HEADER Queue: 이는 블록 헤더의 수신을 위한 것이며, 수신 헤더 큐라고도 명명된다. 여기에 수신된 블록 헤더에 관련된 정보가 저장된다. 예를 들어, 해당 블록 헤더를 제공한 피어의 정보가 저장되며, 피어의 정보는 피어의 식별자일 수 있다.
- SEND_HEADER 확률적 자료 구조: 이는 블록 헤더의 전달을 위한 것으로, 전달 블록 헤더 자료 구조라고도 명명된다. 여기에 노드가 HEADER 메시지를 전달한 피어의 정보가 저장된다.
- SEND_REQ_BODY Queue: 이는 블록 바디의 수신을 위한 것으로, 블록 바디 요청 송신 큐라고도 명명된다. 여기에 노드가 블록 바디를 요청한 피어의 정보가 저장된다.
- RECV_REQ_BODY Queue: 이는 요청받은 블록 바디의 전달을 위한 것으로, 블록 바디 요청 수신 큐라고도 명명된다. RECV_REQ_BODY Queue는 피어별로 할당되며, 피어별로 할당된 RECV_REQ_BODY Queue에 요청받은 블록 바디에 해당하는 블록의 해시값이 저장된다.
이러한 자료 구조를 기반으로, 위에 기술된 본 발명의 제1 실시 예에 따른 블록 전파 방법에서, 노드가 수행하는 단계를 보다 구체적으로 설명하면 다음과 같다.
도 3a 내지 도 3c는 본 발명의 제1 실시 예에 따른 블록 전파 방법에서, 노드가 수행하는 동작을 나타낸 흐름도이다.
노드는 도 3a에서와 같이, P2P 네트워크 상의 다른 노드인 피어(예를 들어, 제1 피어)로부터 신규 블록에 대한 블록 헤더를 포함하는 HEADER 메시지를 수신하면(S300), 수신된 HEADER 메시지에 포함된 블록 헤더가 최신 블록 헤더인지를 검증한다(S310). 예를 들어, 수신된 HEADER 메시지에 포함된 블록 헤더의 정보로부터 블록 해시를 획득하고, 획득된 블록 해시를 이용하여 최신 블록 헤더인지를 검증한다.
그리고 최신 블록 헤더인 것으로 검증되면, HEADER 메시지를 송신한 피어 예를 들어, 제1 피어의 정보를 RECV_HEADER Queue에 저장한다(S320).
다음, HEADER 메시지를 전달한 피어에 대해 최신 블록 해시를 업데이트 한다(S330). 예를 들어, 노드는 검증된 블록 헤더로부터 획득된 블록 해시인 최신 블록 해시를 토대로, 자료 구조인 피어별 최신 블록 해시를 업데이트한다.
또한, 노드는 블록 헤더를 HEADER 메시지를 통해 다른 피어에게 전달한다(S340). 구체적으로, RECV_HEADER Queue에 저장되어 있는 피어를 제외한 나머지 피어에게(예를 들어, 제2 피어), 블록 헤더를 포함하는 HEADER 메시지를 전달한다. 여기서 블록 헤더는 단계(S310)에서 최신 블록 헤더로 검증된 블록 헤더일 수 있으며, 또는 노드가 신규 블록 생성에 성공한 경우에 해당 블록의 블록 헤더일 수도 있다.
이후, 노드는 HEADER 메시지를 전달한 피어의 정보를 저장한다(S350). 노드가 블록 헤더를 포함한 HEADER 메시지를 전달한 피어 예를 들어, 제2 피어의 정보(예: 피어의 식별자)를 SEND_HEADER 확률적 자료 구조에 저장한다.
한편, 노드는 수신된 블록 헤더에 대응하는 블록 바디를 피어에게 요청하거나 다른 피어로부터 전달한 블록 헤더에 대응하는 블록 바디를 요청받을 수 있다.
노드는 도 3a에 도시된 HEADER 메시지 수신 프로세스가 끝나면, 블록 바디를 요청할 수 있다.
도 3b에서와 같이, 노드는 수신된 블록 헤더에 대응하는 블록 바디를 요청할 수 있다. 노드는 RECV_HEADER Queue에 저장되어 있는 피어에게 블록 바디를 요청하기 위한 메시지를 전달한다(S500). 구체적으로, 노드는 RECV_HEADER Queue에 저장되어 있는 피어의 정보를 획득하고, 획득된 피어 정보를 기반으로 피어별 최신 블록 해시로부터 해당 피어의 블록 해시를 획득하며, 그리고 피어의 획득된 블록 해시를 REQ_BODY 메시지에 포함시켜 해당 피어(예를 들어, 제1 피어)에 전달한다.
그리고, 노드가 블록 바디를 요청한 피어의 정보를 저장한다. 구체적으로, 노드는 REQ_BODY 메시지를 전달한 피어의 정보를 SEND_REQ_BODY Queue에 저장한다(S510). 예를 들어, 제1 피어의 정보를 SEND_REQ_BODY Queue에 저장한다.
이후, 노드는 BODY 메시지를 수신하면(S520), BODY 메시지를 송신한 피어의 정보가 SEND_REQ_BODY Queue에 저장되어 있는지를 판단한다(S530).
노드가 REQ_BODY 메시지를 전달한 피어의 정보가 저장되어 있는 SEND_REQ_BODY Queue에, 단계(S520)에서 수신된 BODY 메시지를 송신한 피어의 정보가 저장되어 있으면, 수신된 BODY 메시지에 포함된 블록 바디를 검증한다(S540). 예를 들어, 수신된 BODY 메시지에 포함된 블록 바디를 기반으로 신규 블록을 생성하고, 생성된 블록을 검증한다. 여기서 블록을 검증하는 방법은 공지된 다양한 기술을 사용할 수 있다.
그리고 노드는 검증된 신규 블록을 자신의 블록체인에 추가한다(S550).
이후, 노드는 블록 바디를 요청받았으나 블록 바디를 제공하지 못한 피어들에게 블록 바디를 전달한다. 구체적으로, 노드는 피어별로 할당된 RECV_REQ_BODY Queue에 저장되어 있는 블록 해시값을 획득하고, 블록 해시값에 해당하는 블록 바디를 포함하는 BODY 메시지를 해당 피어에게 전달한다(S560). 그리고 해당 피어의 최신 블록 해시를 업데이트 한다(S570). 예를 들어, 노드는 단계(S540)에서 새로 생성되어 검증된 블록의 블록 바디를 BODY 메시지를 통하여 해당 피어에 전달하고, 상기 블록의 블록 해시를 기반으로 자료 구조인 피어별 최신 블록 해시를 업데이트한다.
노드는 신규 블록을 자신의 블록체인에 추가한 경우, 필요에 따라 SEND_REQ_BODY Queue에 저장되어 있는 다른 피어들에게 요청했던 REQ_BODY에 대한 요청 중지 메시지를 송신한다.
이후, 노드는 블록 전파에 사용된 자료 구조인 RECV_HEADER Queue와 SEND_REQ_BODY Queue를 초기화한다(S580).
한편, 단계(S530)에서, BODY 메시지를 송신한 피어의 정보가 SEND_REQ_BODY Queue에 저장되어 있지 않으면, 해당 BODY 메시지를 폐기한다(S590).
한편, 노드는 다른 피어로부터 전달한 블록 헤더에 대응하는 블록 바디를 요청받을 수 있다.
노드는 도 3c에서와 같이, 다른 피어로부터 블록 바디를 포함하는 REQ_BODY 메시지를 수신할 수 있다.
REQ_BODY 메시지를 수신하면(S700), REQ_BODY 메시지를 송신한 피어(예를 들어, 제2 피어)의 정보가 SEND_HEADER 확률적 자료구조에 있는지를 판단한다(S710). 수신된 REQ_BODY 메시지는 블록 해시를 포함할 수 있다.
노드가 블록 헤더를 포함하는 HEADER 메시지를 전달한 피어의 정보가 저장되어 있는 SEND_HEADER 확률적 자료구조에, 단계(S700)에서 수신된 REQ_BODY 메시지를 송신한 피어인 제2 피어의 정보가 저장되어 있으면, 노드는 요청된 블록 바디가 있는지를 판단한다(S720). 요청된 블록 바디가 있는 경우, 노드는 해당 블록 바디를 포함하는 BODY 메시지를 전달한다(S730). 예를 들어, 노드는 수신된 REQ_BODY 메시지에 포함된 블록 해시에 대응하는 블록이 자신의 블록체인에 있으면, 해당 블록의 블록 바디를 포함하는 BODY 메시지를 블록 바디를 요청한 피어인 제2 피어에게 전달한다.
한편, 요청된 블록 바디가 없으면 REQ_BODY 메시지를 송신한 피어의 정보를 RECV_REQ_BODY Queue에 저장한다(S740). 예를 들어, 노드는 수신된 REQ_BODY 메시지에 포함된 블록 해시에 대응하는 블록이 자신의 블록체인에 없으면, REQ_BODY 메시지를 송신한 피어에 할당된 RECV_REQ_BODY Queue에 요청받은 블록 바디에 해당하는 블록의 해시값을 저장한다. 이에 따라, 추후에 노드가 다른 피어로부터 블록 바디를 수신하거나 또는 신규 블록을 생성한 경우, 피어별 RECV_REQ_BODY Queue에 저장된 블록 해시값을 기반으로, 블록 바디를 요청받았으나 아직 전달하지 못한 피어를 확인하고, 확인된 피어에게 요청된 블록 바디를 전달할 수 있다.
한편, 단계(S710)에서, REQ_BODY 메시지를 송신한 피어의 정보가 SEND_HEADER 확률적 자료구조에 저장되어 있지 않으면, 해당 BODY 메시지를 폐기한다(S750).
다음에는 본 발명의 제2 실시 예에 따른 블록 전파 방법에 대해 설명한다. 본 발명의 제2 실시 예는 메시지 파이프라이닝 블록 전파 프로토콜의 리딩 블록 우선 전달 방법을 기반으로 블록 전파를 수행한다.
본 발명의 제2 실시 예에 따른 리딩 블록 우선 전달 방법 기반의 블록 전파에서, 프로토콜 메시지는 다음 세 가지로 구분된다.
- LEADING_BLOCK: 블록 헤더와 순차 트랜잭션 ID 리스트를 전달하는 메시지이며, 리딩 블록 전달 메시지라고도 명명된다.
- REQ_TX: 특정 트랜잭션들을 요청하는 메시지이며, 트랜잭션 요청 메시지라고도 명명된다.
- TX: 요청한 트랜잭션들을 전달하는 메시지이며, 트랜잭션 전달 메시지라고도 명명된다.
REQ_TX 메시지의 경우, 예를 들어, 트랜잭션 해시(트랜잭션 ID) 또는 트랜잭션 순번을 전달하면서 대응하는 트랜잭션을 요청할 수 있다.
도 4는 본 발명의 제2 실시 예에 따른 블록 전파 방법의 흐름도이다.
여기서는 설명의 편의를 위하여, 다수의 노드가 P2P 네트워크를 통해 피어를 맺고 동일한 블록체인을 유지하는 환경에서, 하나의 노드를 중심으로 블록 전파 방법을 설명한다.
첨부한 도 4에서와 같이, 노드(1)는 P2P 네트워크 상의 다른 노드인 제1 피어(2)로부터 신규 블록에 대한 리딩 블록을 수신한다(S1000). 제1 피어(2)는 직접 신규 블록 생성에 성공하거나, 다른 피어로부터 신규 블록 또는 신규 블록의 리딩 블록을 포함한 데이터를 수신한 후에, LEADING_BLOCK 메시지를 통해 신규 블록에 대한 리딩 블록을 노드(1)에 송신할 수 있다. 이때, LEADING_BLOCK 메시지 대신에 리딩 블록을 포함하는 다른 메시지가 사용될 수도 있다. 리딩 블록은 블록 헤더와 순차 트랜잭션 ID 리스트를 합친 데이터를 나타낸다. 순차 트랜잭션 ID 리스트는 트랜잭션 ID들을 순번에 대응하여 순차적으로 나열한 리스트이다.
노드(1)은 수신된 리딩 블록을 연결된 다른 노드인 제2 피어(3)에 전달한다(S1100). 이때, 노드(1)은 LEADING_BLOCK 메시지를 통해 수신된 리딩 블록을 제2 피어(3)에 전달한다.
한편, 노드(1)은 수신된 리딩 블록을 기반으로 필요한 트랜잭션들을 요청한다(S1200). 노드(1)은 REQ_TX 메시지를 이용하여 제1 피어(2)에게, 수신된 리딩 블록에 대응하는 트랜잭션들을 요청한다. 이때, 수신된 리딩 블록에 포함된 순차 트랜잭션 ID 리스트로부터 획득되는 트랜잭션 해시(트랜잭션 ID)나 트랜잭션 순번을 REQ_TX 메시지에 포함시켜 송신하면서 대응하는 트랜잭션들을 요청할 수 있다.
또한, 노드(1)는 수신된 리딩 블록을 전달한 제2 피어(3)로부터 전달한 리딩 블록에 대응하는 트랜잭션들을 요청하는 REQ_TX 메시지를 수신할 수 있다 (S1300). 이때, 제2 피어(3)는 전달받은 리딩 블록에 포함된 순차 트랜잭션 ID 리스트로부터 획득되는 트랜잭션 해시(트랜잭션 ID)나 트랜잭션 순번을 REQ_TX 메시지에 포함시켜 송신하면서 대응하는 트랜잭션들을 요청할 수 있다.
노드(1)는 제2 피어(3)의 요청에 따라, REQ_TX 메시지에 포함된 트랜잭션 해시(트랜잭션 ID)나 트랜잭션 순번에 대응하는 트랜잭션들을 TX 메시지를 통해 제2 피어(3)에 전달한다(S1400). 이때, 요청받은 트랜잭션들 중 노드가 보유한 트랜잭션들을 TX 메시지를 통해 제2 피어(3)에 전달한다.
또한, 노드(1)는 트랜잭션들을 요청한 후에 제1 피어(2)로부터 TX 메시지를 통해 대응하는 트랜잭션들을 수신한다(S1500). 이때, 제1 피어(2)로부터 전달받은 리딩 블록에 대응하는 트랜잭션들을 수신할 수 있다.
이후, 노드(1)는 단계(S1400)에서 요청받았으나 전달하지 못한 트랜잭션들을 TX 메시지를 통해 제2 피어(3)에 전달한다(S1600).
이러한 블록 전달 방법에서 수행되는 각 단계의 순서는 위에 기술된 순서에 한정되지 않으며, 다양하게 변경 가능하다. 예를 들어, 단계(S1200) 이후에 단계(S1500)이 수행되고, 이후에 단계(S1300)와 단계(S1400)가 수행될 수 있다.
제2 실시 예에 따른 블록 전파 방법을 위해, 노드는 다음과 같은 자료 구조를 포함한다.
- 피어별 최신 블록 해시: 이는 최신 블록 송수신을 위한 것이며, 피어별로 최신 블록 해시가 매핑되는 자료 구조이다. 예를 들어, 피어의 식별자에 대응하여 최신 블록 해시가 매핑될 수 있으며, 최신 블록 해시는 최신 블록의 블록 헤더에 포함된 정보에 해시 함수를 적용하여 획득되는 값일 수 있다.
- 최신 블록 트랜잭션 리스트: 이는 최신 블록 송수신을 위한 것이며, 최신 블록에 포함되는 트랜잭션 리스트를 나타낸다.
- KEEPING_TX 확률적 자료구조: 피어의 멤플(Mempool) 추정을 위한 것이며, 피어별로 구성될 수 있다. 예를 들어, 블록에 포함되지 않았으나 전파될 트랜잭션 데이터가 저장된다.
- RECV_LEADING_BLOCK Queue: 이는 리딩 블록의 수신을 위한 것이며, 수신 리딩 블록 큐라고도 명명된다. 여기에 수신된 리딩 블록에 관련된 정보가 저장된다. 예를 들어, 해당 리딩 블록을 제공한 피어의 정보가 저장되며, 피어의 정보는 피어의 식별자일 수 있다.
- SEND_LEADING_BLOCK 확률적 자료구조: 이는 리딩 블록의 전달을 위한 것으로, 전달 리딩 블록 자료 구조라고도 명명된다. 여기에 노드가 LEADING_BLOCK 메시지를 전달한 피어의 정보가 저장된다.
- SEND_REQ_TX Queue: 이는 보유하지 않은 트랜잭션의 수신을 위한 것으로, 트랜잭션 요청 송신 큐라고도 명명된다. 여기에 노드가 트랜잭션을 요청한 피어의 정보가 저장된다.
- RECV_REQ_TX Queue: 이는 보유하지 않은 트랜잭션의 전달을 위한 것으로, 트랜잭션 요청 수신 큐라고도 명명된다. 여기에 피어별로 RECV_REQ_TX Queue가 할당되며, 피어별로 할당된 RECV_REQ_TX Queue에 요청받은 트랜잭션 ID 정보가 저장된다.
- REQ_TX_LIST: 이는 보유하지 않은 트랜잭션의 수신을 위한 것으로, 보유하지 않은 트랜잭션들의 리스트 또는 노드가 요청한 트랜잭션들의 리스트를 나타낸다.
- PEER_REQ_TX_LIST: 이는 보유하지 않은 트랜잭션의 송신을 위한 것으로, 노드가 피어로부터 전달을 요청받은 트랜잭션들의 리스트를 나타낸다. PEER_REQ_TX_LIST는 피어별로 구성될 수 있다.
이러한 자료 구조를 기반으로, 위에 기술된 본 발명의 제2 실시 예에 따른 블록 전파 방법에서, 노드가 수행하는 단계를 보다 구체적으로 설명하면 다음과 같다.
도 5a 내지 도 5d는 본 발명의 제2 실시 예에 따른 블록 전파 방법에서, 노드가 수행하는 동작을 나타낸 흐름도이다.
노드는 도 5a에서와 같이, P2P 네트워크 상의 다른 노드인 피어(예를 들어, 제1 피어)로부터 신규 블록에 대한 리딩 블록을 포함하는 LEADING_BLOCK 메시지를 수신하면(S3000), 수신된 LEADING_BLOCK 메시지에 포함된 블록 헤더가 최신 블록 헤더인지를 검증한다(S3100). 예를 들어, 수신된 LEADING_BLOCK 메시지에 포함된 블록 헤더의 정보로부터 블록 해시를 획득하고, 획득된 블록 해시를 이용하여 최신 블록 헤더인지를 검증한다.
그리고 최신 블록 헤더인 것으로 검증되면, LEADING_BLOCK 메시지를 송신한 피어 예를 들어, 제1 피어의 정보를 RECV_LEADING_BLOCK Queue에 저장한다(S3200).
다음, LEADING_BLOCK 메시지를 전달한 피어에 대해 최신 블록 해시를 업데이트 한다(S3300). 노드는 검증된 블록 헤더로부터 획득된 블록 해시인 최신 블록 해시를 토대로 자료 구조인 피어별 최신 블록 해시를 업데이트한다.
노드는 리딩 블록을 LEADING_BLOCK 메시지를 통해 다른 피어에 전달한다(S3400). 구체적으로, RECV_LEADING_BLOCK Queue에 저장되어 있는 피어를 제외한 나머지 피어에게(예를 들어, 제2 피어), 리딩 블록을 포함하는 LEADING_BLOCK 메시지를 전달한다. 여기서 리딩 블록은 단계(S3100)에서 최신 블록 헤더로 검증된 블록 헤더와 순차 트랜잭션 ID 리스트를 포함할 수 있으며, 또는 노드가 신규 블록 생성에 성공한 경우에 해당 블록의 블록 헤더와, 해당 블록의 트랜잭션을 기반으로 한 순차 트랜잭션 ID 리스트를 포함할 수도 있다.
이후, 노드는 LEADING_BLOCK 메시지를 전달한 피어의 정보를 저장한다(S3500). 노드가 리딩 블록을 포함한 LEADING_BLOCK 메시지를 전달한 피어 예를 들어, 제2 피어의 정보를 SEND_LEADING_BLOCK 확률적 자료 구조에 저장한다.
한편, 노드는 수신된 리딩 블록에 대응하는 트랜잭션들을 피어에게 요청하거나 다른 피어로부터 전달한 리딩 블록에 대응하는 트랜잭션들을 요청받을 수 있다.
노드는 도 5a에 도시된 LEADING_BLOCK 메시지 수신 프로세스가 끝나면, 트래잭션을 요청할 수 있다.
도 5b에서와 같이, 노드는 수신된 리딩 블록에 대응하는 트랜잭션을 요청할 수 있다. 이를 위해, 노드는 리딩 블록에 포함된 순차 트랜잭션 ID 리스트를 최신 블록 트랜잭션 리스트로 업데이트한다(S5000). 즉, 자료 구조인 최신 블록 트랜잭션 리스트를 기반으로 리딩 블록에 포함된 순차 트랜잭션 ID 리스트를 업데이트한다. 노드 자신이 생성하거나 다른 피어로부터 받은 블록/블록헤더/리딩 블록 등이 최신 블록인 것으로 검증되면, 해당 최신 블록의 트랜잭션 리스트가 그대로 최신 블록 트랜잭션 리스트에 저장될 수 있다.
그리고, 최신 블록 트랜잭션 리스트와 멤풀의 트랜잭션 리스트를 비교하여, 보유하지 않은 트랜잭션들을 도출한다(S5100). 멤풀은 블록에 포함되지 않았지만 유효하여 전파될 트랜잭션들이 대기하는 저장소이며, 이러한 트랜잭션들의 리스트가 저장되어 있다. 노드는 멤풀에 저장된 트랜잭션 리스트 중에서 최신 블록 트랜잭션 리스트에 포함되지 않은 트랜잭션들 즉, 보유하지 않은 트랜잭션들을 찾아낸다.
이후, 노드는 RECV_LEADING_BLOCK Queue에 저장되어 있는 피어에게 보유하지 않은 트랜잭션들을 요청하기 위한 메시지를 전달한다(S5200). 구체적으로, 노드는 RECV_LEADING_BLOCK Queue에 저장되어 있는 피어의 정보를 획득하고, 위의 단계(S5100)에서 도출된 보유하지 않은 트랜잭션들의 해시나 순번을 REQ_TX 메시지에 포함시켜 해당 피어(예를 들어, 제1 피어)에 전달한다. 전달한 보유하지 않은 트랜잭션들의 해시나 순번은 그대로 REQ_TX_LIST에 저장한다.
그리고, 노드가 트랜잭션을 요청한 피어의 정보를 저장한다. 구체적으로, 노드는 REQ_TX 메시지를 전달한 피어의 정보를 SEND_REQ_TX Queue에 저장한다(S5300). 예를 들어, 제1 피어의 정보를 SEND_REQ_TX Queue에 저장한다.
한편, 노드는 다른 피어로부터 트랜잭션들을 수신할 수 있다.
도 5c에서와 같이, 노드는 TX 메시지를 수신하면(S7000), TX 메시지를 송신한 피어의 정보가 SEND_REQ_TX Queue에 저장되어 있는지를 판단한다(S7100).
노드가 REQ_TX 메시지를 전달한 피어의 정보가 저장되어 있는 SEND_REQ_TX Queue에, 수신된 TX 메시지를 송신한 피어의 정보가 저장되어 있으면, REQ_TX_LIST에서 해당 트랜잭션을 제거한다(S7200). 즉, 노드가 요청한 트랜잭션들의 리스트인 REQ_TX_LIST로부터 수신된 TX 메시지에 포함된 트랜잭션들을 제거한다.
또한, 노드는 트랜잭션의 전달을 요청받은 피어에게 대응하는 트랜잭션들을 전달한다(S7300). 노드는 트랜잭션의 전달을 요청받은 피어의 정보가 저장되어 있는 RECV_REQ_TX Queue와 피어별 전달을 요청받은 트랜잭션들의 리스트인 PEER_REQ_TX_LIST를 이용하여 트랜잭션을 전달한다. 구체적으로, 피어별 RECV_REQ_TX Queue에 포함된 트랜잭션 ID 정보를 획득하고, 해당 피어의 PEER_REQ_TX_LIST에 있는 트랜잭션들을 확인하고, 획득된 트랜잭션 ID에 대응하는 트랜잭션을 포함하는 TX 메시지를 해당 피어에게 전달한다.
그 다음에 전달한 트랜잭션들을 해당 피어의 PEER_REQ_TX_LIST에서 삭제한다(S7400).
노드는 필요에 따라, 노드가 트랜잭션을 요청한 피어의 정보가 저장되어 있는 SEND_REQ_TX Queue에 있는 다른 피어들에게 해당 트랜잭션 요청 중지 메시지를 송신한다. 노드는 신규 블록을 자신의 블록체인에 추가한 경우, 필요에 따라 SEND_REQ_TX Queue에 저장되어 있는 다른 피어들에게 요청했던 REQ_TX에 대한 요청 중지 메시지를 송신한다.
한편, 노드는 수신 받은 트랜잭션을 가지고 신규 블록을 만들 수 있는지 확인하기 위해, 노드가 요청한 트랜잭션들의 리스트인 REQ_TX_LIST가 비어 있는지를 확인한다(S7500).
노드가 요청한 트랜잭션들을 모두 수신하여 REQ_TX_LIST가 비어 있는 경우, 수신 받은 트랜잭션을 기반으로 신규 블록을 생성하고, 신규 블록을 블록체인에 추가한다(S7600). 이때, 생성된 블록을 검증하고, 검증된 블록을 블록체인에 추가할 수 있다.
그리고, 노드는 RECV_REQ_TX Queue로부터 트랜잭션의 전달을 요청받은 피어의 정보를 획득하고, 해당 피어의 PEER_REQ_TX_LIST가 비어 있는지를 확인한다(S7700).
PEER_REQ_TX_LIST가 비어 있으면, 해당 피어의 최신 블록 해시를 업데이트 한다(S7800). 예를 들어, 단계(S7600)에서 생성되어 블록 체인에 추가된 블록의 블록 해시를 기반으로 피어의 최신 블록 해시를 업데이트할 수 있다.
이후, 노드는 블록 전파에 사용된 자료 구조인 RECV_LEADING_BLOCK Queue와 SEND_REQ_TX Queue를 초기화한다(S7900).
한편, 단계(S7100)에서, TX 메시지를 송신한 피어의 정보가 SEND_REQ_TX Queue에 저장되어 있지 않으면, 해당 TX 메시지를 폐기한다(S8000).
한편, 노드는 다른 피어로부터 전달한 리딩 블록에 대응하는 트랜잭션을 요청받을 수 있다.
노드는 도 5d에서와 같이, 다른 피어로부터 트랜잭션들의 해시나 순번을 포함하는 REQ_TX 메시지를 수신할 수 있다.
REQ_TX 메시지를 수신하면(S9000), REQ_TX 메시지를 송신한 피어(예를 들어, 제 2 피어)의 정보가 SEND_LEADING_BLOCK 확률적 자료구조에 있는지를 판단한다(S9100). 수신된 REQ_TX 메시지는 트랜잭션의 해시나 트랜잭션 순번을 포함한다.
노드가 리딩 블록을 포함하는 LEADING_BLOCK 메시지를 전달한 피어의 정보가 저장되어 있는 SEND_LEADING_BLOCK 확률적 자료구조에, 단계(S9000)에서 수신된 REQ_TX 메시지를 송신한 피어인 제2 피어의 정보가 저장되어 있으면, 노드는 요청된 트랜잭션들을 PEER_REQ_TX_LIST에 추가한다(S9200). 구체적으로, 노드는 수신된 REQ_TX 메시지에 포함된 트랜잭션들의 해시나 순번을 해당 피어의 PEER_REQ_TX_LIST에 추가한다.
그리고, PEER_REQ_TX_LIST에 포함된 해시나 순번에 대응하는 트랜잭션들을 포함하는 TX 메시지를 해당 피어에게 전달한다(S9300). 그 다음에 TX 메시지를 통해 전달한 트랜잭션들을 PEER_REQ_TX_LIST에서 삭제한다. 즉, PEER_REQ_TX_LIST에서 전달한 트랜잭션들에 대응하는 해시나 순번을 삭제한다(S9400).
한편, PEER_REQ_TX_LIST에 보유하지 않은 트랜잭션이 남아 있으면, 노드는 REQ_TX 메시지를 송신한 피어 정보를 RECV_REQ_TX Queue에 저장한다(S9500). 구체적으로, 노드가 PEER_REQ_TX_LIST에 포함된 해시나 순번에 대응하는 트랜잭션을 보유하지 못해서 PEER_REQ_TX_LIST에 전달하지 못한 트랜잭션의 해시나 순번이 남아 있으면, 노드는 해당 피어로부터 요청받은 트랜잭션 ID 정보를 해당 피어에 할당된 RECV_REQ_TX Queue에 저장한다. 이에 따라 이후에 전달하지 못했던 트랜잭션이 보유될 때 RECV_REQ_TX Queue와 PEER_REQ_TX_LIST를 토대로 해당 피어에게 전달하지 못했던 트랜잭션을 TX 메시지를 통해 전달할 수 있다.
한편, 단계(S9100)에서, REQ_TX 메시지를 송신한 피어의 정보가 SEND_LEADING_BLOCK 확률적 자료구조에 저장되어 있지 않으면, 해당 메시지를 폐기한다(S9600).
이러한 본 발명의 실시 예에 따르면, 블록체인 플랫폼에서 블록 헤더 우선 전달 방법과 리딩 블록 우선 전달 방법으로 구분될 수 있는 메시지 파이프라이닝 기반으로 블록 전파를 수행할 수 있다. 특히, 블록 헤더나 리딩 블록이 우선 전달되고 이후에 블록 바디나 트랜잭션이 전달되면서 신규 블록의 생성이나 검증이 수행되므로, 신규 블록에 대한 전파 지연을 감소시킬 수 있다. 이에 따라 신규 블록 전파에 있어서, 다수의 노드가 최소한의 검증과 메시지 교환으로 신규 블록을 동기화할 수 있으며, 이를 통해 전파 지연 문제를 해결할 수 있다.
도 6은 본 발명의 실시 예에 따른 블록 전파 방법을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 구조도이다.
첨부한 도 6에 도시되어 있듯이, 본 발명의 일 실시 예에 따른 블록 전파 방법은 컴퓨팅 장치(100)를 이용하여 구현될 수 있다.
컴퓨팅 장치(100)는 프로세서(110), 메모리(120), 입력 인터페이스 장치(130), 출력 인터페이스 장치(140), 저장 장치(160) 및 네트워크 인터페이스 장치(150) 중 적어도 하나를 포함할 수 있다. 각각의 구성 요소들은 버스(bus)(170)에 의해 연결되어 서로 통신을 수행할 수 있다. 또한, 각각의 구성 요소들은 공통 버스(170)가 아니라, 프로세서(110)를 중심으로 개별 인터페이스 또는 개별 버스를 통하여 연결될 수도 있다.
프로세서(110)는 AP(Application Processor), CPU(Central Processing Unit), GPU(Graphic Processing Unit) 등과 같은 다양한 종류들로 구현될 수 있으며, 메모리(120) 또는 저장 장치(160)에 저장된 명령을 실행하는 임의의 반도체 장치일 수 있다. 프로세서(110)는 메모리(120) 및 저장 장치(160) 중에서 적어도 하나에 저장된 프로그램 명령(program command)을 실행할 수 있다. 이러한 프로세서(110)는 위의 도 1, 도 2, 도 3a 내지 도 3c, 도 4 그리고 도 5a 내지 도 5d를 토대로 설명한 기능 및 방법들을 구현하도록 구성될 수 있다.
메모리(120) 및 저장 장치(160)는 다양한 형태의 휘발성 또는 비 휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(read-only memory)(121) 및 RAM(random access memory)(122)를 포함할 수 있다. 본 발명의 실시 예에서 메모리(120)는 프로세서(110)의 내부 또는 외부에 위치할 수 있고, 메모리(120)는 이미 알려진 다양한 수단을 통해 프로세서(110)와 연결될 수 있다. 그리고 메모리(120)에 큐를 포함하는 다양한 자료를 저장하도록 구성되는 자료 구조들(저장소라고도 명명됨)이 저장되도록 구현될 수 있다.
입력 인터페이스 장치(130)는 데이터를 프로세서(110)로 제공하도록 구성되며, 출력 인터페이스 장치(140)는 프로세서(110)로부터의 데이터를 출력하도록 구성된다.
네트워크 인터페이스 장치(150)는 유선 네트워크 또는 무선 네트워크를 통해 다른 개체(P2P 네트워크 상의 피어들)와 신호를 송신 또는 수신할 수 있다.
이러한 구조로 이루어지는 컴퓨팅 장치(100)는 노드로 명명되어, 본 발명의 일 실시 예에 따른 블록 전파 방법을 구현할 수 있다.
또한, 본 발명의 일 실시 예에 따른 블록 전파 방법 중 적어도 일부는 컴퓨팅 장치(100)에서 실행되는 프로그램 또는 소프트웨어로 구현될 수 있고, 프로그램 또는 소프트웨어는 컴퓨터로 판독 가능한 매체에 저장될 수 있다.
또한, 본 발명의 일 실시 예에 따른 블록 전파 방법 중 적어도 일부는 컴퓨팅 장치(100)와 전기적으로 접속될 수 있는 하드웨어로 구현될 수도 있다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고 동일한 블록체인을 유지하는 환경에서, 노드가 블록을 전파하는 방법으로서,
    상기 노드가, 상기 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 상기 제1 전달 메시지를 송신한 상기 제1 피어의 정보를 제1 저장소에 저장하는 단계;
    상기 노드가, 수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 단계;
    상기 노드가, 상기 제1 저장소에 저장된 정보를 토대로, 상기 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 상기 제1 피어에 전달하는 단계; 및
    상기 노드가, 상기 제1 피어로부터 상기 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신하는 단계
    를 포함하며,
    상기 제1 부분은 상기 블록의 블록 헤더 또는 리딩 블록이고,
    상기 제1 부분이 상기 블록의 블록 헤더인 경우, 상기 제2 부분은 상기 블록의 블록 바디이고,
    상기 제1 부분이 상기 리딩 블록인 경우, 상기 제2 부분은 상기 블록의 트랜잭션인, 방법.
  2. 제1항에 있어서,
    상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계 이후에,
    상기 제1 요청 메시지를 전달한 상기 제1 피어의 정보를 제2 저장소에 저장하는 단계
    를 더 포함하고,
    상기 제3 전달 메시지를 수신하는 단계 이후에,
    상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 단계; 및
    상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는 경우에 상기 제3 전달 메시지에 포함된 제2 부분을 토대로 블록을 생성하고 검증하는 단계
    를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 노드가, 상기 제2 피어로부터, 상기 제2 전달 메시지에 포함된 제1 부분에 대응하면서 또한 상기 블록에 연관된 제2 부분을 요청하는 제2 요청 메시지를 수신하는 단계; 및
    상기 노드가, 상기 제2 요청 메시지에 의해 요청된 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 단계 이후에,
    상기 제2 전달 메시지를 전달한 상기 제2 피어의 정보를 제3 저장소에 저장하는 단계
    를 더 포함하고,
    상기 제2 요청 메시지를 수신하는 단계 이후에,
    상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 단계
    를 더 포함하며,
    상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계는 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하는, 방법.
  5. 제1항에 있어서,
    상기 제1 피어의 정보를 제1 저장소에 저장하는 단계는
    상기 수신된 제1 전달 메시지에 포함된 제1 부분을 검증하는 단계; 및
    상기 검증된 제1 부분으로부터 획득되는 블록 해시를 토대로 상기 제1 피어에 대응하는 최신 블록 해시를 업데이트하는 단계
    를 포함하는, 방법.
  6. 제4항에 있어서,
    상기 제1 부분은 상기 블록의 블록 헤더이고, 상기 제2 부분은 상기 블록의 블록 바디이며,
    상기 블록 바디는 트랜잭션 리스트를 포함하고,
    상기 블록 헤더는 이전 블록 해시값, 타임 스탬프 그리고 상기 트랜잭션 리스트에 의존성이 있는 값을 포함하는, 방법.
  7. 제6항에 있어서,
    상기 블록을 생성하고 검증하는 단계는,
    상기 제3 전달 메시지에 포함된 제2 부분인 블록 바디를 기반으로 신규 블록을 생성하고, 생성된 블록을 검증하는 단계; 및
    상기 검증된 블록을 상기 노드의 블록체인에 추가하는 단계
    를 포함하는, 방법.
  8. 제6항에 있어서,
    상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 단계 이후에,
    상기 제2 요청 메시지에 의해 요청된 제2 부분인 블록 바디가 있는지를 판단하는 단계
    를 더 포함하며,
    상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계는 상기 제2 부분인 블록 바디가 있는 경우에, 상기 블록 바디를 포함하는 제4 전달 메시지를 상기 제2 피어에 전달하고,
    상기 제2 요청 메시지는 블록 해시를 포함하는, 방법.
  9. 제4항에 있어서,
    상기 제1 부분은 리딩 블록이고, 상기 제2 부분은 상기 블록의 트랜잭션이며,
    상기 리딩 블록은 상기 블록의 블록 헤더와 순차 트랜잭션 ID 리스트를 포함하며, 상기 순차 트랜잭션 ID 리스트는 상기 블록의 트랜잭션의 트랜잭션 ID를 순차적으로 나열한 리스트인, 방법.
  10. 제9항에 있어서,
    상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계 이전에,
    상기 제1 전달 메시지에 포함된 제1 부분인 리딩 블록의 순차 트랜잭션 ID 리스트를 최신 블록 트랜잭션 리스트로 업데이트하는 단계; 및
    상기 업데이트된 최신 블록 트랜잭션 리스트와 제1 리스트 - 상기 제1 리스트는 블록에 포함되지 않았지만 전파될 트랜잭션의 리스트임 - 를 비교하여, 보유하지 않은 트랜잭션을 도출하는 단계
    를 더 포함하고,
    상기 제1 요청 메시지를 상기 제1 피어에 전달하는 단계는 상기 도출된 트랜잭션을 상기 제2 부분으로 사용하여, 상기 도출된 트랜잭션에 관련된 정보를 상기 제1 요청 메시지에 포함시켜 상기 제1 피어에 전달하는, 방법.
  11. 제9항에 있어서,
    상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 단계 이후에,
    상기 제1 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 노드가 보유하지 않은 트랜잭션들의 리스트인 제2 리스트로부터, 상기 제3 전달 메시지에 포함된 제2 부분인 트랜잭션들을 삭제하는 단계
    를 더 포함하고,
    상기 제4 전달 메시지를 상기 제2 피어에 전달하는 단계 이후에, 피어별 제3 리스트 - 상기 피어별 제3 리스트는 피어별로 해당 피어가 요청한 트랜잭션들의 리스트임 - 로부터, 상기 제4 전달 메시지에 포함된 제2 부분인 트랜잭션들을 삭제하는 단계
    를 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 블록을 생성하고 검증하는 단계는,
    상기 노드가 요청한 트랜잭션들을 모두 수신하여 상기 제2 리스트가 비어 있는 경우에, 수신된 트랜잭션들을 기반으로 블록을 생성하고, 생성된 블록을 검증하는 단계; 및
    상기 검증된 블록을 상기 노드의 블록체인에 추가하는 단계
    를 포함하는, 방법.
  13. 제4항에 있어서,
    상기 제3 저장소에 저장되어 있는 피어에 대해 요청된 제2 부분을 전달한 다음에, 해당 피어의 최신 블록 해시를 업데이트하는 단계; 및
    상기 제1 저장소, 상기 제2 저장소 및 상기 제3 저장소 중 적어도 하나를 초기화하는 단계
    를 더 포함하는 방법.
  14. 다수의 노드가 P2P(Peer-to-Peer) 네트워크를 통해 피어(Peer)를 맺고 동일한 블록체인을 유지하는 환경에서, 블록을 전파하는 노드로서,
    네트워크를 통해 데이터를 송수신하도록 구성된 네트워크 인터페이스 장치;
    블록 전파를 위한 복수의 저장소를 저장하도록 구성된 메모리; 및
    상기 네트워크 인터페이스 장치를 통해 상기 네트워크 상의 다른 노드와의 블록 전파를 수행하도록 구성된 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 네트워크 인터페이스 장치를 통해, 상기 네트워크 상의 노드인 제1 피어로부터, 블록에 연관된 제1 부분을 포함하는 제1 전달 메시지를 수신하면, 상기 제1 전달 메시지를 송신한 상기 제1 피어의 정보를 상기 메모리의 제1 저장소에 저장하는 동작;
    수신된 제1 부분을 포함하는 제2 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 네트워크 상의 노드인 제2 피어에 전달하는 동작;
    상기 제1 저장소에 저장된 정보를 토대로, 상기 블록에 연관된 것이면서 또한 상기 수신된 제1 부분에 대응하는 제2 부분을 요청하는 제1 요청 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제1 피어에 전달하는 동작; 및
    상기 네트워크 인터페이스 장치를 통해, 상기 제1 피어로부터 상기 제1 요청 메시지에 대응하는 제2 부분을 포함하는 제3 전달 메시지를 수신하는 동작
    을 수행하도록 구성되며,
    상기 제1 부분은 상기 블록의 블록 헤더 또는 리딩 블록이고,
    상기 제1 부분이 상기 블록의 블록 헤더인 경우, 상기 제2 부분은 상기 블록의 블록 바디이고,
    상기 제1 부분이 상기 리딩 블록인 경우, 상기 제2 부분은 상기 블록의 트랜잭션인, 노드.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 제1 요청 메시지를 상기 제1 피어에 전달하는 동작 이후에,
    상기 제1 요청 메시지를 전달한 상기 제1 피어의 정보를 제2 저장소에 저장하는 동작을 추가적으로 수행하고,
    상기 제3 전달 메시지를 수신하는 동작 이후에,
    상기 제3 전달 메시지를 송신한 상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는지를 판단하는 동작; 및
    상기 제1 피어의 정보가 상기 제2 저장소에 저장되어 있는 경우에 상기 제3 전달 메시지에 포함된 제2 부분을 토대로 블록을 생성하고 검증하는 동작
    을 추가적으로 수행하도록 구성되는, 노드.
  16. 제15항에 있어서,
    상기 프로세서는 추가적으로,
    상기 네트워크 인터페이스 장치를 통해, 상기 제2 피어로부터, 상기 제2 전달 메시지에 포함된 제1 부분에 대응하면서 또한 상기 블록에 연관된 제2 부분을 요청하는 제2 요청 메시지를 수신하는 동작; 및
    상기 제2 요청 메시지에 의해 요청된 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제2 피어에 전달하는 동작
    을 수행하도록 구성되는, 노드.
  17. 제16항에 있어서,
    상기 프로세서는
    상기 제2 전달 메시지를 상기 네트워크 상의 노드인 제2 피어에 전달하는 동작 이후에,
    상기 제2 전달 메시지를 전달한 상기 제2 피어의 정보를 제3 저장소에 저장하는 동작
    을 추가적으로 수행하고,
    상기 제2 요청 메시지를 수신하는 동작 이후에,
    상기 제2 요청 메시지를 송신한 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는지를 판단하는 동작
    을 추가적으로 수행하며,
    상기 프로세서는 상기 제2 피어의 정보가 상기 제3 저장소에 저장되어 있는 경우에 상기 제2 부분을 포함하는 제4 전달 메시지를 상기 네트워크 인터페이스 장치를 통해 상기 제2 피어에 전달하도록 구성되는, 노드.
  18. 제14항에 있어서,
    상기 프로세서는
    상기 제1 피어의 정보를 제1 저장소에 저장하는 동작 수행시,
    상기 수신된 제1 전달 메시지에 포함된 제1 부분을 검증하는 동작; 및
    상기 검증된 제1 부분으로부터 획득되는 블록 해시를 토대로 상기 제1 피어에 대응하는 최신 블록 해시를 업데이트하는 동작
    을 추가적으로 수행하도록 구성되는, 노드.
  19. 제14항에 있어서,
    상기 제1 부분은 상기 블록의 블록 헤더이고, 상기 제2 부분은 상기 블록의 블록 바디이며,
    상기 블록 바디는 트랜잭션 리스트를 포함하고,
    상기 블록 헤더는 이전 블록 해시값, 타임 스탬프 그리고 상기 트랜잭션 리스트에 의존성이 있는 값을 포함하는, 노드.
  20. 제14항에 있어서,
    상기 제1 부분은 리딩 블록이고, 상기 제2 부분은 상기 블록의 트랜잭션이며,
    상기 리딩 블록은 상기 블록의 블록 헤더와 순차 트랜잭션 ID 리스트를 포함하며, 상기 순차 트랜잭션 ID 리스트는 상기 블록의 트랜잭션의 트랜잭션 ID를 순차적으로 나열한 리스트인, 노드.












KR1020200147882A 2020-11-06 2020-11-06 블록체인 플랫폼에서의 블록 전파 방법 및 장치 KR102514536B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200147882A KR102514536B1 (ko) 2020-11-06 2020-11-06 블록체인 플랫폼에서의 블록 전파 방법 및 장치
US17/496,834 US20220147511A1 (en) 2020-11-06 2021-10-08 Method and apparatus for block propagation in blockchain platform

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200147882A KR102514536B1 (ko) 2020-11-06 2020-11-06 블록체인 플랫폼에서의 블록 전파 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220061656A KR20220061656A (ko) 2022-05-13
KR102514536B1 true KR102514536B1 (ko) 2023-03-27

Family

ID=81453450

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200147882A KR102514536B1 (ko) 2020-11-06 2020-11-06 블록체인 플랫폼에서의 블록 전파 방법 및 장치

Country Status (2)

Country Link
US (1) US20220147511A1 (ko)
KR (1) KR102514536B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005277453A (ja) * 2004-03-22 2005-10-06 Sony Corp 信号中継装置
KR101763827B1 (ko) * 2016-04-07 2017-08-02 주식회사 라이프시맨틱스 블록체인 기반 의료데이터전송시스템, 방법 및 프로그램

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102331947B1 (ko) * 2017-09-28 2021-11-25 주식회사 케이티 블록체인에서 데이터 관리 시스템 및 방법
EP3698518B1 (en) * 2017-10-20 2024-02-14 Koninklijke KPN N.V. Primary and secondary blockchain device
WO2020033216A2 (en) * 2018-07-31 2020-02-13 Oded Wertheim Scaling and accelerating decentralized execution of transactions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005277453A (ja) * 2004-03-22 2005-10-06 Sony Corp 信号中継装置
KR101763827B1 (ko) * 2016-04-07 2017-08-02 주식회사 라이프시맨틱스 블록체인 기반 의료데이터전송시스템, 방법 및 프로그램

Also Published As

Publication number Publication date
KR20220061656A (ko) 2022-05-13
US20220147511A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
US11316921B2 (en) Block synchronization methods and apparatuses
US10397139B2 (en) Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method
JP7362654B2 (ja) 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理
EP3937051B1 (en) Methods and apparatuses for processing transactions based on blockchain integrated station
CN103297529B (zh) 基于时间戳的树型结构数据同步方法
EP2506165A2 (en) Distributed file system
US11665234B2 (en) Methods and apparatuses for synchronizing data based on blockchain integrated station
US20210326863A1 (en) Methods and apparatuses for identifying replay transaction based on blockchain integrated station
US11783339B2 (en) Methods and apparatuses for transferring transaction based on blockchain integrated station
US9401957B2 (en) System and method for synchronization between servers
CN113094430B (zh) 一种数据处理方法、装置、设备以及存储介质
US20230102617A1 (en) Repeat transaction verification method, apparatus, and device, and medium
CN107181774B (zh) 分布式数据中心之间的数据移动
JP2020013347A (ja) 履歴管理方法、及び履歴管理装置
KR102514536B1 (ko) 블록체인 플랫폼에서의 블록 전파 방법 및 장치
CN109691065B (zh) 分布式存储系统及其数据读写方法、存储终端及存储介质
KR102316763B1 (ko) 블록체인을 기반으로 응용 애플리케이션에 대한 업데이트 처리 및 응용 애플리케이션의 위변조 탐지를 가능하게 하는 전자 단말 장치 및 그 동작 방법
CN111917859A (zh) 数据传输方法、装置、计算机设备以及存储介质
WO2023207529A1 (zh) 数据处理方法、装置及设备、介质、产品
KR102564488B1 (ko) 블록체인 기반 IoT 기기 펌웨어 공급 시스템 및 이를 이용하는 펌웨어 업데이트 방법
US7756995B1 (en) Regulating transmission rates
CN113347221A (zh) 一种数据同步方法、通讯站、集群系统和存储装置
CN106254440A (zh) 一种ap的升级方法和装置
CN111813795A (zh) 在区块链网络中确认交易的方法及装置
JP6088452B2 (ja) データベースシステムおよびデータ更新方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant