KR102367570B1 - 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램 - Google Patents

블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램 Download PDF

Info

Publication number
KR102367570B1
KR102367570B1 KR1020200054445A KR20200054445A KR102367570B1 KR 102367570 B1 KR102367570 B1 KR 102367570B1 KR 1020200054445 A KR1020200054445 A KR 1020200054445A KR 20200054445 A KR20200054445 A KR 20200054445A KR 102367570 B1 KR102367570 B1 KR 102367570B1
Authority
KR
South Korea
Prior art keywords
block
round
block chain
parallel
blockchain
Prior art date
Application number
KR1020200054445A
Other languages
English (en)
Other versions
KR20210061245A (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 한양대학교 산학협력단
Publication of KR20210061245A publication Critical patent/KR20210061245A/ko
Application granted granted Critical
Publication of KR102367570B1 publication Critical patent/KR102367570B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

본 발명의 실시 예에 따른 블록체인에서의 병렬적 블록 처리 방법은 제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 단계, 상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 단계 및 상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 단계를 포함한다.

Description

블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램{METHOD FOR PARALLEL BLOCK PROCESSING METHOD IN BLOCKCHAIN, BLOCKCAHIN NODE DEVICE AND PROGRAM USING THE SAME}
본 발명은 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램에 관한 것으로, 보다 상세하게는 제1라운드에서 제1블록에 대한 투표를 수행하는 동안 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하되, 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부를 고려하여 상기 제2블록을 상기 블록체인에 추가할 수 있는 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램에 관한 것이다.
블록체인이란 익명성과 무결성이 보장되면서도 모든 데이터가 암호화되어 블록이라는 구조체에 기록되어 데이터의 신뢰성을 확보할 수 있는 분산 플랫폼이다.
블록체인의 기본적인 모델들에서는 블록 생산자가 블록을 신뢰하기 위해 블록 내의 트랜잭션을 실행한 결과를 다수의 블록 생산자들과 합의한 후에야 다음 블록을 생성할 수 있기 때문에, 트랜잭션의 처리량이 제한적이다.
본 발명의 기술적 사상이 이루고자 하는 과제는 제1라운드에서 제1블록에 대한 투표를 수행하는 동안 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하되, 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부를 고려하여 상기 제2블록을 상기 블록체인에 추가할 수 있는 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램을 제공하는 것이다.
본 발명의 일 실시 예에 따른 블록체인에서의 병렬적 블록 처리 방법은 제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 단계, 상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 단계 및 상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 제2블록을 상기 블록체인에 추가하는 단계는, 투표 결과에 따라 찬성 투표 메시지의 수가 정족수를 만족하고, 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가된 경우, 상기 제2블록을 상기 블록체인에 추가할 수 있다.
실시 예에 따라, 상기 제1라운드와 상기 제2라운드 각각은, 상기 제1블록과 상기 제2블록 각각에 대한 합의 과정을 포함할 수 있다.
실시 예에 따라, 상기 합의 과정은 제안 과정, 투표 과정, 및 커밋(commit) 과정을 포함할 수 있다.
실시 예에 따라, 상기 합의 과정 중의 상기 제안 과정은, 상기 블록체인에 이미 추가된 블록 및 이전 라운드까지 제안된 블록에 포함되지 않은 트랜잭션들(transactions)을 선정하여 블록을 생성하며, 생성된 블록을 타 블록체인 노드들로 전송할 수 있다.
실시 예에 따라, 상기 합의 과정 중의 상기 제안 과정은, 트랜잭션들 간의 선후 관계를 나타내는 유향 비순환 그래프(Directed Acyclic Graph(DAG))를 이용하여 상기 트랜잭션들을 선정하여 상기 블록을 생성할 수 있다.
실시 예에 따라, 상기 제1라운드와 상기 제2라운드 각각은, 서로 다른 블록체인 노드에 의해 수행될 수 있다.
실시 예에 따라, 상기 블록체인에서의 병렬적 블록 처리 방법은, 복수의 블록체인 노드들 중에서 상기 제1라운드와 상기 제2라운드 각각의 합의 과정을 수행할 리더(leader)를 선택하는 단계를 더 포함할 수 있다.
실시 예에 따라, 상기 리더를 선택하는 단계는, 다음의 수식에 따라 상기 복수의 블록체인 노드들 중에서 상기 리더를 선택하며, P(m)=m mod N, 상기 m은 생성될 블록의 블록 번호, 상기 N은 상기 블록체인 상의 블록체인 노드들의 개수, 상기 P(m)은 리더로 선택할 블록체인 노드의 번호를 나타낼 수 있다.
실시 예에 따라, 상기 블록체인에서의 병렬적 블록 처리 방법은, 찬성 투표 메시지의 수가 정족수를 만족하지 못하거나, 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되지 않은 경우에, 진행 중인 합의 과정과 상기 진행 중인 합의 과정에 의해 영향을 받는 합의 과정을 무효처리 할 수 있다.
실시 예에 따라, 상기 진행 중인 합의 과정에 의해 영향을 받는 합의 과정은, 상기 진행 중인 합의 과정과 함께 병렬적으로 수행되고 있는 합의 과정일 수 있다.
실시 예에 따라, 상기 블록체인에서의 병렬적 블록 처리 방법은, 기준시간 동안 합의가 이루어지지 않은 경우, 상기 제2라운드의 합의 과정을 무효로 처리할 수 있다.
실시 예에 따라, 상기 제1블록과 상기 제2블록 각각은, 복수의 블록들의 조합으로 구성될 수 있다.
본 발명의 실시 예에 따른 블록체인 노드는, 제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 제안 모듈, 상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 투표 모듈 및 상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 커밋 모듈을 포함할 수 있다.
본 발명의 실시 예에 따른 프로세서(processor)와 결합되어 블록체인에서의 병렬적 블록 처리 방법을 수행하기 위한 매체에 저장된 프로그램으로서, 제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 단계, 상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 단계 및 상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 단계를 수행할 수 있다.
본 발명의 실시 예에 따른 방법과 장치는 제1라운드에서 제1블록에 대한 투표를 수행하는 동안 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행함으로써 트랜잭션 처리량을 개선하면서도, 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부를 고려하여 제2블록을 블록체인에 추가함으로써 신뢰도를 유지할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 네트워크의 개념도이다.
도 2는 도 1에 도시된 블록체인 네트워크에 포함된 블록체인 노드들 중에서 어느 하나의 블록체인 노드의 일 실시 예에 따른 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 블록체인에서의 병렬적 블록 처리 방법의 플로우차트이다.
도 4는 도 3에 도시된 블록체인에서의 병렬적 블록 처리 방법이 수행되는 과정을 도시한 개념도이다.
본 발명의 기술적 사상은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명의 기술적 사상을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 기술적 사상의 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명의 기술적 사상을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에 기재된 "~부", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 프로세서(Processor), 마이크로 프로세서(Micro Processer), 마이크로 컨트롤러(Micro Controller), CPU(Central Processing Unit), GPU(Graphics Processing Unit), APU(Accelerate Processor Unit), DSP(Drive Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 등과 같은 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있으며, 적어도 하나의 기능이나 동작의 처리에 필요한 데이터를 저장하는 메모리(memory)와 결합되는 형태로 구현될 수도 있다.
그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
이하, 본 발명의 기술적 사상에 따른 실시 예들을 차례로 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 네트워크의 개념도이다.
도 1을 참조하면, 블록체인 네트워크(block chain network, NET_BC)에는 복수의 블록체인 노드들(NODE1~NODE7)이 포함될 수 있다.
복수의 블록체인 노드들(NODE1~NODE7) 각각은 블록 생성자(block producer)로 동작할 수 있다.
복수의 블록체인 노드들(NODE1~NODE7) 중에서 어느 하나의 블록체인 노드(예컨대, NODE1)는 리더 블록체인 노드로 동작할 수 있으며, 리더 블록체인 노드의 주도 하에서 신규 생성 블록에 대한 합의 과정이 수행될 수 있다.
실시 예에 따라, 복수의 블록체인 노드들(NODE1~NODE7) 각각은 특정 신규 생성 블록에 대한 리더 블록체인 노드로 동작할 수 있다.
실시 예에 따라, 블록체인 네트워크(NET_BC)는 투표를 통한 합의 방식을 사용하는 블록체인일 수 있으며, 그 종류는 제한되지 않는다.
실시 예에 따라, 블록체인 네트워크(NET_BC)는 BFT(Byzantine Fault Tolerance) 계열의 합의 프로토콜을 사용할 수 있다.
본 명세서에서 "노드(node)"는 네트워크의 적어도 일부를 구성하는 장치를 의미할 수 있으며, "노드 장치"라고 일컬어질 수도 있다.
도 1에 도시된 블록체인 네트워크(NET_BC)는 본 발명에 적용될 수 있는 블록체인 구조의 일 예시에 불과하며, 본 발명은 트리(tree) 구조 또는 그래프(graph) 구조 등의 블록체인 네트워크에도 마찬가지 방식으로 적용될 수 있다.
도 2는 도 1에 도시된 블록체인 네트워크에 포함된 블록체인 노드들 중에서 어느 하나의 블록체인 노드의 일 실시 예에 따른 블록도이다.
도 1과 도 2를 참조하면, 도 2에 도시된 블록체인 노드(100)는 블록체인 네트워크(NET_BC)에 포함된 블록체인 노드들(NODE1~NODE7) 중에서 어느 하나의 블록체인 노드(예컨대, NODE1)를 의미할 수 있다.
블록체인 노드(100)는 통신 인터페이스(110), 메모리(120), 및 프로세서(130)를 포함할 수 있다.
통신 인터페이스(110)는 블록체인 노드(100, 예컨대, NODE1)와 함께 합의 과정을 수행하는 블록체인 노드들(예컨대, NODE2~NODE7)과의 통신을 인터페이싱할 수 있으며, 인터페이싱 과정에서 송수신되는 데이터 또는 신호를 처리할 수 있다.
실시 예에 따라, 통신 인터페이스(110)는 블록체인 노드들(예컨대, NODE2~NODE7)과 송수신하는 메시지(예컨대, 합의 요청 메시지 또는 투표 메시지)를 인터페이싱할 수 있다.
메모리(120)는 블록체인 노드(100)가 신규 생성 블록에 대한 합의 과정을 수행하는 데에 필요한 데이터와 프로세서(130)의 처리 과정에서 필요한 데이터, 프로세서(130)의 처리 과정 중 또는 처리 완료 후에 생성된 데이터를 저장할 수 있다.
실시 예에 따라, 메모리(120)는 본 발명의 실시 예에 따른 블록체인에서의 병렬적 블록 처리 방법을 수행하기 위한 프로그램을 저장할 수 있으며, 메모리(120)는 프로세서(130)와 결합되어 상기 프로그램을 실행시킬 수 있다.
프로세서(130)는 제안 모듈(propose module, 132), 투표 모듈(vote module, 134), 및 커밋 모듈(commit module, 136)을 포함할 수 있다.
제안 모듈(132)은 블록체인 노드(100)가 리더(leader)로 동작하는 경우에 신규 블록을 생성하고, 생성된 신규 블록에 대한 제안 과정을 수행할 수 있다.
실시 예에 따라, 제안 모듈(132)은 이미 블록체인에 추가된 블록이나 이전에 제안된 블록에 포함되지 않은 트랜잭션들(transactions)을 선정하여 신규 블록을 생성할 수 있다.
실시 예에 따라, 제안 모듈(132)은 트랜잭션들 간의 선후 관계를 나타내는 유형 비순환 그래프(Directed Acyclic Graph(DAG))를 이용하여 트랜잭션들을 선정하고, 선정된 트랜잭션들을 신규 블록으로 생성할 수 있다.
실시 예에 따라, 제안 모듈(132)이 신규 블록을 생성하는 경우, 생성된 신규 블록에는 이전 라운드(round)에서 제안된 블록 번호의 다음 번호를 할당할 수 있다. 라운드에 대해서는 도 3과 도 4를 함께 참조하여 후술하도록 한다.
제안 모듈(132)은 생성된 신규 블록에 대한 합의 과정을 진행하기 위하여, 생성된 신규 블록을 타 블록체인 노드들로 전송할 수 있다.
제안 모듈(132)은 블록체인 노드(100)가 리더가 아닌 경우, 리더로 동작하는 블록체인 노드로부터 수신된 신규 블록이 손상되지 않았는지 여부를 판단할 수 있다. 또한, 이 경우 제안 모듈(132)은 수신된 신규 블록 내의 모든 트랜잭션들이 블록 생산자 풀에 있는지 여부를 판단할 수 있다.
투표 모듈(134)은 전송된 신규 블록의 유효성에 대한 투표 메시지를 생성하고, 생성된 투표 메시지를 타 블록체인 노드들로 전송할 수 있다.
커밋 모듈(136)은 블록체인 노드(100) 자신을 포함한 다른 블록체인 노드들의 투표 메시지에 기초하여, 찬성으로 투표된 투표 메시지의 수가 정족수(quorum)을 만족하는지 여부를 판단할 수 있다.
또한, 커밋 모듈(136)은 이전 라운드에서 전파된 블록이 블록체인 상에 정상적으로 추가되었는지 여부를 판단할 수 있다.
커밋 모듈(136)은 신규 생성된 블록에 대한 투표 결과와 이전 라운드에서 전파된 블록이 블록체인 상에 정상적으로 추가되었는지 여부에 기초하여, 신규 생성된 블록을 블록체인에 추가할 수 있다.
실시 예에 따라, 커밋 모듈(136)은 신규 생성된 블록에 대한 투표 결과에 따라 찬성 투표 메시지의 수가 정족수를 만족(정족수 이상)하고, 이전 라운드에서 제안된 블록이 블록체인 상에 정상적으로 추가된 경우에, 신규 생성된 블록을 블록체인에 추가할 수 있다.
병렬적으로 수행되는 합의 과정은 도 3과 도 4를 참조하여 후술하도록 한다.
도 3은 본 발명의 일 실시 예에 따른 블록체인에서의 병렬적 블록 처리 방법의 플로우차트이다. 도 4는 도 3에 도시된 블록체인에서의 병렬적 블록 처리 방법이 수행되는 과정을 도시한 개념도이다.
도 1 내지 도 4를 함께 참조하면, 제1라운드(Round r, S110), 제2라운드(Round r+1, S120), 및 제3라운드(Round r+2, S130) 각각의 적어도 일부 과정은 병렬적으로 수행될 수 있다.
실시 예에 따라, 각 라운드(S110, S120, S130)는 서로 다른 블록에 대한 합의 과정을 포함할 수 있으며, 각 합의 과정은 제안(Propose) 과정, 투표(Vote) 과정, 및 커밋(Commit) 과정을 포함할 수 있다.
예컨대, 제1라운드(Round r, S110)에서는 제1블록에 대한 합의 과정이 수행되며, 제2라운드(Round r+1, S120)에서는 제2블록에 대한 합의 과정이 수행되며, 제3라운드(Round r+2, S130)에서는 제3블록에 대한 합의 과정이 수행될 수 있다.
실시 예에 따라, 각 라운드(S110, S120, S130)의 합의 과정은 서로 다른 블록체인 노드에서 수행될 수 있다. 예컨대, 제1라운드(Round r, S110)는 제1블록체인 노드(NODE1)가 리더 블록체인 노드로써 수행하고, 제2라운드(Round r+1, S120)는 제2블록체인 노드(NODE2)가 리더 블록체인 노드로써 수행하고, 제3라운드(Round r+2, S130)는 제3블록체인 노드(NODE3)가 리더 블록체인 노드로써 수행할 수 있다.
실시 예에 따라, 본 발명의 실시 예에 따른 블록체인에서의 병렬적 블록 처리 방법은, 복수의 블록체인 노드들(예컨대, NODE1~NODE7) 중에서 각 라운드의 합의 과정을 수행할 리더를 선택하는 단계를 더 포함할 수 있다. 이 때, 리더를 선택하는 단계는 다음의 [수식 1]에 따라 복수의 블록체인 노드들 중에서 상기 리더를 선택할 수 있다.
[수식 1]
P(m)=m mod N,
(상기 m은 생성될 블록의 블록 번호, 상기 N은 상기 블록체인 상의 블록체인 노드들의 개수, 상기 P(m)은 리더로 선택할 블록체인 노드의 번호를 나타냄)
예컨대, 리더로 선택할 블록체인 노드의 번호는, 생성될 블록의 번호(예컨대, 9)를 블록체인 네트워크(NET_BC) 상의 블록체인 노드들의 개수(예컨대, 7)로 나눈 나머지(예컨대, 2)로 결정될 수 있다.
[수식 1]에 따라 리더로 선택할 블록체인 노드의 번호는 모든 블록체인 노드들(예컨대, NODE1~NODE7)이 다른 라운드에서의 합의 결과와 무관하게 결정적으로 알 수 있다.
블록체인 노드(예컨대, NODE1)는 제1라운드(Round r, S110)에서 제1블록의 제안 과정(S111)을 수행할 수 있다(S310).
블록체인 노드(예컨대, NODE1)는 제1라운드(Round r, S110)의 제안 과정(S111)에서, 제1블록을 생성하고 생성된 제1블록을 타 블록체인 노드들(예컨대, NODE2~7)로 전파할 수 있다.
블록체인 노드(예컨대, NODE1)는 제1라운드(Round r, S110)에서 제안된 제1블록에 대해서 투표 과정(S112)과 커밋 과정(S113)을 순차적으로 수행할 수 있다.
제1라운드(Round r, S110)를 수행하는 블록체인 노드(예컨대, NODE1)와 다른 블록체인 노드(예컨대, NODE2)는, 제1라운드(Round r, S110)에서 제1블록에 대한 투표 과정(S112)이 수행되는 동안, 제2라운드(Round r+1, S120)에서 제2블록에 대한 제안 과정(S122)을 병렬적으로 수행할 수 있다(S320).
실시 예에 따라, 제1라운드(Round r, S110)의 투표 과정(S112)과 제2라운드(Round r+1, S120)의 제안 과정(S122)의 적어도 일부는 시간적으로 중첩된 구간에서 병렬적으로 수행될 수 있다.
실시 예에 따라, 제2라운드(Round r+1, S120)의 제안 과정(S122)은, 이전에 진행되고 있던 라운드(예컨대, Round r-2, 미도시)에서의 커밋 과정(S121) 이후에 수행될 수 있다.
다른 블록체인 노드(예컨대, NODE2)는 제2라운드(Round r+1, S120)에서 제2블록에 대한 투표 과정(S123)을 수행할 수 있다(S330).
다른 블록체인 노드(예컨대, NODE2)는 제2라운드(Round r+1, S120)의 제2블록에 대한 투표 과정(S123)에서의 투표 결과와, 제1라운드(Round r, S110)에서 제1블록이 블록체인에 정상적으로 추가되었는지 여부에 따라, 커밋 과정(S215)에서 제2블록을 블록체인에 추가할 수 있다(S340).
실시 예에 따라, 제1라운드(Round r, S110)에서 제1블록이 블록체인에 정상적으로 추가되었는지 여부는 제1라운드(Round r, S110)의 커밋 과정(S113)의 종료 후에 확인할 수 있다. 이 경우, S340단계에서의 제2블록을 블록체인에 추가하는 동작은 제1라운드(Round r, S110)의 커밋 과정(S113) 이후에 수행될 수 있다.
실시 예에 따라, 다른 블록체인 노드(예컨대, NODE2)는 제2라운드(Round r+1, S120)의 제2블록에 대한 투표 과정(S123)에서의 투표 결과에 따라 찬성 투표 메시지의 수가 정족수를 만족하고, 제1블록이 블록체인에 정상적으로 추가된 경우에, 제2블록을 블록체인에 추가할 수 있다.
다른 실시 예에 따라, 다른 블록체인 노드(예컨대, NODE2)는 제2라운드(Round r+1, S120)의 제2블록에 대한 투표 과정(S123)에서의 투표 결과에 따라 찬성 투표 메시지의 수가 정족수를 만족하지 못하였거나, 제1블록이 블록체인에 정상적으로 추가되지 않은 경우에, 해당 라운드(Round r+1, S120)의 진행 중인 합의 과정과 해당 라운드(Round r+1, S120)의 합의 과정에 의해 영향을 받는 라운드(Round r+2, S130)의 합의 과정을 무효처리할 수 있다.
실시 예에 따라, 진행 중인 합의 과정에 의해 영향을 받는 합의 과정은, 진행 중인 합의 과정과 병렬적으로 수행되고 있는 합의 과정을 의미할 수 있다. 예컨대, 진행 중인 합의 과정에 의해 영향을 받는 합의 과정은, 진행 중인 합의 과정이 속한 라운드 이후의 라운드 중에서 병렬적으로 수행되고 있는 라운드에 상응하는 합의 과정을 의미할 수 있다.
실시 예에 따라, 다른 블록체인 노드(예컨대, NODE2)는 제2라운드(Round r+1, S120)에서 합의 과정이 시작된 시점부터 커밋 과정(S215)을 완료하는 시점까지의 시간이 기준시간(예컨대, Deadline) 이내인지 여부가 추가적으로 판단될 수 있다. 예컨대, 블록체인 네트워크(NET_BC)의 내적 또는 외적 문제로 인한 지연(S124)이 발생하여, 기준시간(예컨대, Deadline) 이내에 커밋 과정(S215)이 완료되지 않은 경우, 해당 라운드(Round r+1, S120)의 진행 중인 합의 과정과 해당 라운드(Round r+1, S120)의 합의 과정에 의해 영향을 받는 라운드(Round r+2, S130)의 합의 과정은 무효처리될 수 있다.
실시 예에 따라, 기준시간은 블록체인 네트워크(NET_BC)의 정상적인 네트워크의 지연에 정비례하는 값으로 설정될 수 있다. 예컨대, 정상적인 네트워크 지연은 사전 측정을 통해 획득할 수 있다.
제1라운드(Round r, S110)와 제2라운드(Round r+1, S120)의 관계와 마찬가지 형태로, 제2라운드(Round r+1, S120)과 제3라운드(Round r+2, S130)는 병렬적으로 진행될 수 있다.
제3라운드(Round r+2, S130)의 제안 과정(S133)의 적어도 일부 구간은 제2라운드(Round r+1, S120)의 투표 과정(S123)의 적어도 일부 구간과 병렬적으로 수행될 수 있다.
제3라운드(Round r+2, S130)의 이후의 투표 과정(S134)과 커밋 과정(S135)이 제안 과정(S133)에 뒤이어 수행될 수 있다.
실시 예에 따라, 제3라운드(Round r+2, S130)의 제안 과정(S133)은, 이전에 진행되고 있던 라운드(예컨대, Round r-1, 미도시)에서의 투표 과정(S131)과 커밋 과정(S132) 이후에 수행될 수 있다.
실시 예에 따라, 제3라운드(Round r+2, S130)에서도 제2라운드(Round r+1, S120)에서와 마찬가지로, 기준시간(예컨대, Deadline)이 설정될 수 있다.
실시 예에 따라, 각 라운드(Round r~ Round r+2)에서 생성되는 블록들(예컨대, 제1블록, 제2블록) 각각은 복수의 블록들의 조합으로 구성될 수 있다.
또한, 블록체인 네트워크(NET_BC)의 내적 또는 외적 문제로 인한 지연 등으로 합의에 실패한 경우에, 라운드의 정의는 생성된 블록의 블록 번호와 블록의 합의에 실패한 횟수를 더한 값, 즉 Round r=m+v가 될 수 있다.
각 라운드(Round r ~ Round r+2)에서 생성되는 블록들(예컨대, 제1블록, 제2블록) 각각은 연속된 번호의 M개의 블록들의 조합으로 구성되며, 합의에 실패한 횟수가 v인 경우, 다음의 [수식 2]에 따라 복수의 블록체인 노드들 중에서 리더가 선택할 수 있다.
[수식 2]
Figure 112020046239459-pat00001
,
(상기 m은 생성될 블록의 블록 번호, 상기 M은 하나의 리더 블록체인 노드가 연속하여 생성할 수 있는 최대의 블록 수, 상기 N은 상기 블록체인 상의 블록체인 노드들의 개수, 상기 P(m,v)은 리더로 선택할 블록체인 노드의 번호를 나타냄)
예컨대, 리더로 선택할 블록체인 노드의 번호는, 생성될 블록의 번호(예컨대, 9)를, 연속하여 생성할 수 있는 최대의 블록 수(예컨대, 2)로 나눈 값에, 바닥함수(floor function)를 적용하고, 바닥함수를 적용한 값(예컨대, 4)에 합의에 실패한 횟수(예컨대, 5)를 더하고, 이 값(예컨대, 9)을 블록체인 네트워크(NET_BC) 상의 블록체인 노드들의 개수(예컨대, 7)로 나눈 나머지(예컨대, 2)로 결정될 수 있다.
이상, 본 발명의 기술적 사상을 다양한 실시 예들을 들어 상세하게 설명하였으나, 본 발명의 기술적 사상은 상기 실시 예들에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.
100 : 블록체인 노드
110 : 통신 인터페이스
120 : 메모리
130 : 프로세서

Claims (15)

  1. 복수의 블록체인 노드들을 포함하는 블록체인 네트워크에 의해 수행되는 블록체인에서의 병렬적 블록 처리 방법에 있어서,
    상기 블록체인 네트워크가, 제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 단계;
    상기 블록체인 네트워크가, 상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 단계; 및
    상기 블록체인 네트워크가, 상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 단계를 포함하는, 블록체인에서의 병렬적 블록 처리 방법.
  2. 제1항에 있어서,
    상기 제2블록을 상기 블록체인에 추가하는 단계는,
    투표 결과에 따라 찬성 투표 메시지의 수가 정족수를 만족하고, 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가된 경우, 상기 제2블록을 상기 블록체인에 추가하는, 블록체인에서의 병렬적 블록 처리 방법.
  3. 제1항에 있어서,
    상기 제1라운드와 상기 제2라운드 각각은,
    상기 제1블록과 상기 제2블록 각각에 대한 합의 과정을 포함하는, 블록체인에서의 병렬적 블록 처리 방법.
  4. 제3항에 있어서,
    상기 합의 과정은 제안 과정, 투표 과정, 및 커밋(commit) 과정을 포함하는, 블록체인에서의 병렬적 블록 처리 방법.
  5. 제4항에 있어서,
    상기 합의 과정 중의 상기 제안 과정은,
    상기 블록체인에 이미 추가된 블록 및 이전 라운드까지 제안된 블록에 포함되지 않은 트랜잭션들(transactions)을 선정하여 블록을 생성하며, 생성된 블록을 타 블록체인 노드들로 전송하는, 블록체인에서의 병렬적 블록 처리 방법.
  6. 제5항에 있어서,
    상기 합의 과정 중의 상기 제안 과정은,
    트랜잭션들 간의 선후 관계를 나타내는 유향 비순환 그래프(Directed Acyclic Graph(DAG))를 이용하여 상기 트랜잭션들을 선정하여 상기 블록을 생성하는, 블록체인에서의 병렬적 블록 처리 방법.
  7. 제1항에 있어서,
    상기 제1라운드와 상기 제2라운드 각각은,
    상기 복수의 블록체인 노드들 중에서 서로 다른 블록체인 노드에 의해 수행되는, 블록체인에서의 병렬적 블록 처리 방법.
  8. 제7항에 있어서,
    상기 블록체인에서의 병렬적 블록 처리 방법은,
    상기 블록체인 네트워크가, 상기 복수의 블록체인 노드들 중에서 상기 제1라운드와 상기 제2라운드 각각의 합의 과정을 수행할 리더(leader)를 선택하는 단계를 더 포함하는, 블록체인에서의 병렬적 블록 처리 방법.
  9. 제8항에 있어서,
    상기 리더를 선택하는 단계는,
    다음의 수식에 따라 상기 복수의 블록체인 노드들 중에서 상기 리더를 선택하며,
    P(m)=m mod N,
    상기 m은 생성될 블록의 블록 번호, 상기 N은 상기 블록체인 상의 블록체인 노드들의 개수, 상기 P(m)은 리더로 선택할 블록체인 노드의 번호를 나타내는, 블록체인에서의 병렬적 블록 처리 방법.
  10. 제1항에 있어서,
    상기 블록체인에서의 병렬적 블록 처리 방법은,
    찬성 투표 메시지의 수가 정족수를 만족하지 못하거나, 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되지 않은 경우에, 진행 중인 합의 과정과 상기 진행 중인 합의 과정에 의해 영향을 받는 합의 과정을 무효처리 하는, 블록체인에서의 병렬적 블록 처리 방법.
  11. 제10항에 있어서,
    상기 진행 중인 합의 과정에 의해 영향을 받는 합의 과정은,
    상기 진행 중인 합의 과정과 함께 병렬적으로 수행되고 있는 합의 과정인, 블록체인에서의 병렬적 블록 처리 방법.
  12. 제1항에 있어서,
    상기 블록체인에서의 병렬적 블록 처리 방법은,
    기준시간 동안 합의가 이루어지지 않은 경우, 상기 제2라운드의 합의 과정을 무효로 처리하는, 블록체인에서의 병렬적 블록 처리 방법.
  13. 제1항에 있어서,
    상기 제1블록과 상기 제2블록 각각은,
    복수의 블록들의 조합으로 구성되는, 블록체인에서의 병렬적 블록 처리 방법.
  14. 제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 제안 모듈;
    상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 투표 모듈; 및
    상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 커밋 모듈을 포함하는, 블록체인 노드.
  15. 프로세서(processor)와 결합되어 블록체인에서의 병렬적 블록 처리 방법을 수행하기 위한 매체에 저장된 프로그램으로서,
    제1라운드에서 제안된 제1블록에 대한 투표를 수행하는 동안, 제2라운드에서 제2블록에 대한 제안을 병렬적으로 수행하는 단계;
    상기 제2라운드에서, 상기 제2블록에 대한 투표를 수행하는 단계; 및
    상기 제2블록에 대한 투표 결과 및 상기 제1라운드에서 제안된 상기 제1블록이 블록체인 상에 정상적으로 추가되었는지 여부에 따라, 상기 제2블록을 상기 블록체인에 추가하는 단계를 수행하는, 프로그램.
KR1020200054445A 2019-11-19 2020-05-07 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램 KR102367570B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190149139 2019-11-19
KR20190149139 2019-11-19

Publications (2)

Publication Number Publication Date
KR20210061245A KR20210061245A (ko) 2021-05-27
KR102367570B1 true KR102367570B1 (ko) 2022-02-28

Family

ID=76135772

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200054445A KR102367570B1 (ko) 2019-11-19 2020-05-07 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램

Country Status (1)

Country Link
KR (1) KR102367570B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114679457B (zh) * 2022-03-30 2023-11-21 蚂蚁区块链科技(上海)有限公司 一种区块链中的节点分组方法及区块链节点

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170236120A1 (en) 2016-02-11 2017-08-17 Oracle International Corporation Accountability and Trust in Distributed Ledger Systems

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170137388A (ko) * 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
CN107402824B (zh) * 2017-05-31 2020-06-02 创新先进技术有限公司 一种数据处理的方法及装置
KR102451115B1 (ko) * 2018-04-19 2022-10-06 한국전자통신연구원 난스를 이용한 합의 노드 선택 방법 및 그것을 이용한 블록체인 생성 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170236120A1 (en) 2016-02-11 2017-08-17 Oracle International Corporation Accountability and Trust in Distributed Ledger Systems

Also Published As

Publication number Publication date
KR20210061245A (ko) 2021-05-27

Similar Documents

Publication Publication Date Title
US10751623B2 (en) Incentivizing players to engage in competitive gameplay
US7877596B2 (en) Method and computer product to increase accuracy of time-based software verification for sensor networks
US8886795B2 (en) Method and system for determining response time of a server
WO2018154713A1 (ja) 情報検証システム、情報検証装置、方法およびプログラム
CN109173270B (zh) 一种游戏服务系统和实现方法
CN108259195B (zh) 异常事件的影响范围的确定方法及系统
CN114281888A (zh) 一种区块链共识方法、装置、设备及存储介质
CN113127569A (zh) 用于区块链系统的共识方法、装置、电子设备及存储介质
KR102367570B1 (ko) 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램
CN110930254A (zh) 基于区块链的数据处理方法、装置、终端及介质
CN109739527A (zh) 一种客户端灰度发布的方法、装置、服务器和存储介质
CN103236978A (zh) As拓扑顶层自治系统结点的确定方法和装置
KR102285882B1 (ko) 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램
CN107018039B (zh) 测试服务器集群性能瓶颈的方法和装置
CN111131262B (zh) 一种漏洞扫描方法及装置
CN110209588B (zh) 游戏服务端测试方法、装置、电子设备及介质
Cota et al. A framework for the design configuration of accountable selfish-resilient peer-to-peer systems
JP6203407B2 (ja) 整列装置、データ処理装置、プログラム、整列方法および多重化システム
KR20170062235A (ko) 서비스 처리 시스템 및 방법
US12002043B2 (en) Method for enabling efficient evaluation of transactions in a distributed ledger network
CN113014443A (zh) 一种cdn资源是否命中缓存的测试方法及其系统
US20210279818A1 (en) Split testing system and methods
CN110365520A (zh) 分布式系统中节点的巡检方法、装置及设备
US20220327526A1 (en) Method for enabling efficient evaluation of transactions in a distributed ledger network
Stammler et al. Context-Aware Layer Scheduling for Seamless Neural Network Inference in Cloud-Edge Systems

Legal Events

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