KR102285882B1 - Blockchain consensus method based on variable quorum, blockcahin node device and program using the same - Google Patents
Blockchain consensus method based on variable quorum, blockcahin node device and program using the same Download PDFInfo
- Publication number
- KR102285882B1 KR102285882B1 KR1020200044613A KR20200044613A KR102285882B1 KR 102285882 B1 KR102285882 B1 KR 102285882B1 KR 1020200044613 A KR1020200044613 A KR 1020200044613A KR 20200044613 A KR20200044613 A KR 20200044613A KR 102285882 B1 KR102285882 B1 KR 102285882B1
- Authority
- KR
- South Korea
- Prior art keywords
- quorum
- blockchain
- message
- consensus
- variable
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
Abstract
본 발명의 실시 예에 따른 가변 정족수 기반의 블록체인 합의 방법은 리더 블록체인 노드로부터 전송된 신규 생성 블록과 상기 신규 생성 블록에 대한 합의 요청 메시지에 따라, 상기 리더 블록체인 노드와 참여 블록체인 노드들이 동의, 거절, 또는 무효의 투표 메시지를 브로드캐스트(broadcast)하는 단계, 상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 단계 및 상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 단계를 포함한다.In the variable quorum-based blockchain consensus method according to an embodiment of the present invention, the leader blockchain node and the participating blockchain nodes Broadcasting a vote message of consent, rejection, or invalidity, the number of blockchain nodes in which a Byzantine Fault occurred among the participating blockchain nodes, and the blockchain that broadcast the invalid vote message Based on the number of nodes, changing a preset quorum and determining whether to agree or not according to whether the number of blockchain nodes that have broadcast the voting message of consent is greater than or equal to the changed quorum.
Description
본 발명은 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램에 관한 것으로, 보다 상세하게는 비잔틴 오류가 발생한 참여 블록체인 노드의 수와 무효의 투표 메시지를 발행한 참여 블록체인 노드의 수에 기초하여 정족수를 변경하여 합의 여부를 결정할 수 있는 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램에 관한 것이다.The present invention relates to a variable quorum-based blockchain consensus method, a blockchain node and a program using the same, and more specifically, the number of participating blockchain nodes with Byzantine errors and the number of participating blockchain nodes that issued invalid voting messages It relates to a variable quorum-based blockchain consensus method that can determine whether to agree by changing the quorum based on the number, and a blockchain node and program using the same.
블록체인이란 익명성과 무결성이 보장되면서도 모든 데이터가 암호화되어 블록이라는 구조체에 기록되어 데이터의 신뢰성을 확보할 수 있는 분산 플랫폼이다.Blockchain is a distributed platform that ensures the reliability of data by encrypting all data and recording it in a block structure while ensuring anonymity and integrity.
블록체인은 거래에 참여하는 모든 사용자에게 거래 명세를 공유하며, 거래가 진행될 때마다 거래 명세를 대조하여 데이터 위조를 막을 수 있다. 블록체인 내의 사용자들은 각자 자신의 원장(ledger)을 가지며, 원장의 내용은 합의 알고리즘에 의하여 동일하게 유지될 수 있다.The blockchain shares the transaction specification with all users participating in the transaction, and it can prevent data forgery by collating the transaction specification each time a transaction is conducted. Users in the blockchain each have their own ledger, and the contents of the ledger can be kept the same by the consensus algorithm.
본 발명의 기술적 사상이 이루고자 하는 과제는 비잔틴 오류가 발생한 참여 블록체인 노드의 수와 무효의 투표 메시지를 발행한 참여 블록체인 노드의 수에 기초하여 정족수를 변경하여 합의 여부를 결정할 수 있는 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램을 제공하는 것이다.The task to be achieved by the technical idea of the present invention is a variable quorum base that can determine whether to agree or not by changing the quorum based on the number of participating blockchain nodes that have Byzantine errors and the number of participating blockchain nodes that have issued invalid voting messages of blockchain consensus method, and to provide blockchain nodes and programs that use it.
본 발명의 일 실시 예에 따른 가변 정족수 기반의 블록체인 합의 방법은 리더 블록체인 노드로부터 전송된 신규 생성 블록과 상기 신규 생성 블록에 대한 합의 요청 메시지에 따라, 상기 리더 블록체인 노드와 참여 블록체인 노드들이 동의, 거절, 또는 무효의 투표 메시지를 브로드캐스트(broadcast)하는 단계, 상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 단계 및 상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 단계를 포함할 수 있다.In the variable quorum-based blockchain consensus method according to an embodiment of the present invention, the leader blockchain node and the participating blockchain node according to the newly created block transmitted from the leader blockchain node and the consensus request message for the newly created block Broadcasting a vote message of consent, rejection, or invalidity, the number of blockchain nodes in which a Byzantine Fault occurred among the participating blockchain nodes, and the block that broadcast the invalid vote message It may include changing a preset quorum based on the number of chain nodes and determining whether to agree according to whether the number of blockchain nodes that have broadcast the voting message of consent is equal to or greater than the changed quorum.
실시 예에 따라, 상기 신규 생성 블록과 상기 합의 요청 메시지는 서로 분리되어 전송될 수 있다.According to an embodiment, the new generation block and the consensus request message may be transmitted separately from each other.
실시 예에 따라, 상기 참여 블록체인 노드들은, 정해진 시간 내에 상기 신규 생성 블록과 상기 합의 요청 메시지를 수신하지 못한 경우에 상기 무효의 투표 메시지를 브로드캐스트 할 수 있다.According to an embodiment, the participating blockchain nodes may broadcast the invalid voting message when they do not receive the newly created block and the consensus request message within a predetermined time.
실시 예에 따라, 상기 비잔틴 오류가 발생한 경우는, 비정상적인 메시지를 전송한 경우, 정해진 시간 내에 메시지를 전송하지 않은 경우, 또는 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우일 수 있다.According to an embodiment, when the Byzantine error occurs, when an abnormal message is transmitted, when a message is not transmitted within a predetermined time, or when two or more conflicting normal messages are transmitted.
실시 예에 따라, 상기 비정상적인 메시지를 전송한 경우는, 블록체인의 프로토콜(protocol)에 어긋나는 메시지를 전송한 경우일 수 있다.According to an embodiment, the case of transmitting the abnormal message may be the case of transmitting a message that violates the protocol of the block chain.
실시 예에 따라, 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우는, 상기 정상적인 메시지들 각각은 블록체인의 프로토콜에 맞게 작성되었으나, 이중으로 투표한 경우일 수 있다.According to an embodiment, when two or more conflicting normal messages are transmitted, each of the normal messages is written according to the protocol of the block chain, but may be a case of double voting.
실시 예에 따라, 상기 기설정된 정족수를 변경하는 단계는, 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수는 상기 기설정된 정족수에서 빼지 않고, 상기 비잔틴 오류가 발생한 블록체인 노드의 수만 상기 기설정된 정족수에서 뺀 값으로 상기 기설정된 정족수를 변경할 수 있다.According to an embodiment, in the step of changing the preset quorum, the number of blockchain nodes that broadcast the invalid voting message is not subtracted from the preset quorum, only the number of blockchain nodes in which the Byzantine error has occurred The preset quorum may be changed by a value subtracted from the preset quorum.
실시 예에 따라, 상기 기설정된 정족수를 변경하는 단계는, 상기 비정상적인 메시지를 전송한 경우 또는 정해진 시간 내에 메시지를 전송하지 않은 경우의 상기 비잔틴 오류를 검출하여, 상기 기 설정된 정족수를 변경할 수 있다.According to an embodiment, the changing of the preset quorum may include detecting the Byzantine error when the abnormal message is transmitted or when the message is not transmitted within a predetermined time to change the preset quorum.
실시 예에 따라, 상기 가변 정족수 기반의 블록체인 합의 방법은, 상기 리더 블록체인 노드와 상기 참여 블록체인 노드들 각각이 수신한 모든 투표 메시지와 자신이 전송한 투표 메시지를 모아서 추가적으로 브로드캐스트하는 단계를 더 포함할 수 있다.According to an embodiment, the variable quorum-based blockchain consensus method includes the steps of collecting and additionally broadcasting all voting messages received by each of the leader blockchain node and the participating blockchain nodes and voting messages transmitted by itself may include more.
실시 예에 따라, 상기 가변 정족수 기반의 블록체인 합의 방법은, 상기 추가적으로 브로드캐스트하는 단계 이후에, 상기 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우의 상기 비잔틴 오류를 검출하여, 변경된 상기 정족수를 추가적으로 변경할 수 있다.According to an embodiment, the variable quorum-based blockchain consensus method detects the Byzantine error in the case of transmitting the two or more conflicting normal messages after the step of additionally broadcasting the changed quorum. It can be further changed.
실시 예에 따라, 상기 변경된 상기 정족수를 추가적으로 변경하는 단계는, 네트워크 오류에 의하여 투표에 참여하지 못하였던 참여 블록체인 노드를 포함시켜, 상기 변경된 상기 정족수를 추가적으로 변경할 수 있다.According to an embodiment, the step of additionally changing the changed quorum may include a participating blockchain node that failed to participate in the voting due to a network error to further change the changed quorum.
실시 예에 따라, 상기 합의 여부를 결정하는 단계는, 상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 추가적으로 변경된 상기 정족수 이상인지에 따라 상기 합의 여부를 결정할 수 있다.According to an embodiment, the determining of whether to agree may determine whether to agree or not according to whether the number of blockchain nodes that have broadcast the voting message of consent is equal to or greater than the additionally changed quorum.
실시 예에 따라, 상기 가변 정족수 기반의 블록체인 합의 방법은, 상기 리더 블록체인 노드가 정해진 시간 내에 상기 신규 생성 블록과 상기 합의 요청 메시지를 전송하지 않는 경우에, 상기 리더 블록체인 노드를 변경하는 단계를 더 포함할 수 있다.According to an embodiment, in the variable quorum-based blockchain consensus method, when the leader blockchain node does not transmit the newly created block and the consensus request message within a predetermined time, changing the leader blockchain node may further include.
본 발명의 실시 예에 따른 블록체인 노드는, 신규 생성 블록에 대한 합의 요청 메시지를 생성하는 합의 요청 메시지 생성 모듈, 상기 신규 생성 블록과 상기 합의 요청 메시지를 브로드캐스트하고, 참여 블록체인 노드들이 상기 신규 생성 블록과 상기 합의 요청 메시지에 응답하여 전송한 동의, 거절, 또는 무효의 투표 메시지를 수신하는 통신 인터페이스, 상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 정족수 변경 모듈 및 상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 합의 결과 처리 모듈을 포함할 수 있다.A block chain node according to an embodiment of the present invention broadcasts a consensus request message generating module for generating a consensus request message for a newly generated block, the new generated block and the consensus request message, and participating block chain nodes A communication interface for receiving a creation block and a vote message of consent, rejection, or invalidation transmitted in response to the consensus request message, the number of blockchain nodes in which a Byzantine Fault occurred among the participating blockchain nodes, and the invalidity Based on the number of blockchain nodes that broadcast the voting message of It may include a module for processing consensus results to determine.
본 발명의 실시 예에 따른 프로세서(processor)와 결합되어 가변 정족수 기반의 블록체인 합의 방법을 수행하기 위한 매체에 저장된 프로그램은 리더 블록체인 노드로부터 전송된 신규 생성 블록과 상기 신규 생성 블록에 대한 합의 요청 메시지에 따라, 상기 리더 블록체인 노드와 참여 블록체인 노드들이 동의, 거절, 또는 무효의 투표 메시지를 브로드캐스트(broadcast)하는 단계, 상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 단계 및 상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 단계를 수행할 수 있다.A program stored in a medium for performing a variable quorum-based blockchain consensus method in combination with a processor according to an embodiment of the present invention is a newly generated block transmitted from a leader block chain node and a request for a consensus on the newly generated block According to the message, the leader block chain node and the participating block chain nodes broadcast a voting message of consent, rejection, or invalidity, the block chain in which a Byzantine Fault occurs among the participating block chain nodes Changing a preset quorum based on the number of nodes and the number of blockchain nodes that have broadcast the invalid voting message, and whether the number of blockchain nodes that broadcast the voting message of consent is greater than or equal to the changed quorum You can perform the steps to decide whether to agree or not.
본 발명의 실시 예에 따른 방법과 장치는 무효의 투표 메시지를 발행한 참여 블록체인 노드의 수를 반영하여 정족수를 변경하여 합의 여부를 결정함으로써, 비잔틴 오류가 발생한 블록체인 노드 수의 예측이 어려운 블록체인에서 효과적으로 합의과정을 수행할 수 있다.The method and apparatus according to an embodiment of the present invention determine whether to agree by changing the quorum by reflecting the number of participating blockchain nodes that have issued invalid voting messages, thereby making it difficult to predict the number of blockchain nodes with Byzantine errors. The consensus process can be effectively performed on the chain.
또한, 본 발명의 실시 예에 따른 방법과 장치는 무효의 투표 메시지를 발행한 참여 블록체인 노드의 수를 반영하여 정족수를 변경하여 합의 여부를 결정함으로써, 과반 미만의 비잔틴 오류에는 충분히 견딜 수 있는 효과가 있다.In addition, the method and apparatus according to an embodiment of the present invention determine whether to agree by changing the quorum by reflecting the number of participating blockchain nodes that have issued invalid voting messages, thereby sufficiently tolerating the Byzantine error of less than half. there is
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 네트워크의 개념도이다.
도 2는 도 1에 도시된 블록체인 네트워크에서 리더 블록체인 노드의 일 실시 예에 따른 블록도이다.
도 3은 도 1에 도시된 블록체인 네트워크에서 수행되는 합의 과정의 일 실시 예에 따른 플로우차트이다.
도 4는 도 3의 합의 과정의 구체적인 예시를 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따라 설정될 수 있는 타이머의 예시를 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 가변 정족수 기반의 블록 체인 합의 방법의 플로우차트이다.In order to more fully understand the drawings cited in the Detailed Description, a brief description of each drawing is provided.
1 is a conceptual diagram of a blockchain network according to an embodiment of the present invention.
FIG. 2 is a block diagram according to an embodiment of a leader blockchain node in the blockchain network shown in FIG. 1 .
3 is a flowchart according to an embodiment of a consensus process performed in the block chain network shown in FIG. 1 .
FIG. 4 is a view showing a specific example of the consensus process of FIG. 3 .
5 is a diagram illustrating an example of a timer that can be set according to an embodiment of the present invention.
6 is a flowchart of a block chain consensus method based on a variable quorum according to an embodiment of the present invention.
본 발명의 기술적 사상은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명의 기술적 사상을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 기술적 사상의 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Since the technical spirit of the present invention can have various changes and can have various embodiments, specific embodiments are illustrated in the drawings and will be described in detail through detailed description. However, this is not intended to limit the technical spirit of the present invention to specific embodiments, and it should be understood to include all changes, equivalents, and substitutes included in the scope of the technical spirit of the present invention.
본 발명의 기술적 사상을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.In describing the technical idea of the present invention, if it is determined that a detailed description of a related known technology may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted. In addition, numbers (eg, first, second, etc.) used in the description process of the present specification are only identification symbols for distinguishing one component from other components.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.In addition, in this specification, when a component is referred to as "connected" or "connected" with another component, the component may be directly connected or directly connected to the other component, but in particular It should be understood that, unless there is a description to the contrary, it may be connected or connected through another element in the middle.
또한, 본 명세서에 기재된 "~부", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 프로세서(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)와 결합되는 형태로 구현될 수도 있다. In addition, terms such as "~ unit", "~ group", "~ character", and "~ module" described in this specification mean a unit that processes at least one function or operation, which is a processor, a micro Processor (Micro Processor), Micro Controller (Micro Controller), CPU (Central Processing Unit), GPU (Graphics Processing Unit), APU (Accelerate Processor Unit), DSP (Drive Signal Processor), ASIC (Application Specific Integrated Circuit), FPGA It may be implemented as hardware or software such as (Field Programmable Gate Array), or a combination of hardware and software, and may be implemented in a form combined with a memory that stores data necessary for processing at least one function or operation. .
그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.In addition, it is intended to clarify that the classification of the constituent parts in the present specification is merely a classification for each main function that each constituent unit is responsible for. That is, two or more components to be described below may be combined into one component, or one component may be divided into two or more for each more subdivided function. In addition, each of the constituent units to be described below may additionally perform some or all of the functions of other constituent units in addition to the main function it is responsible for. Of course, it may be carried out by being dedicated to it.
이하, 본 발명의 기술적 사상에 따른 실시 예들을 차례로 상세히 설명한다.Hereinafter, embodiments according to the technical spirit of the present invention will be described in detail in turn.
도 1은 본 발명의 일 실시 예에 따른 블록체인 네트워크의 개념도이다.1 is a conceptual diagram of a blockchain network according to an embodiment of the present invention.
도 1을 참조하면, 블록체인 네트워크(block chain network, NET_BC)에는 복수의 블록체인 노드들(NODE1~NODE7)이 포함될 수 있다.Referring to FIG. 1 , a block chain network (NET_BC) may include a plurality of block chain nodes NODE1 to NODE7.
복수의 블록체인 노드들(NODE1~NODE7) 중에서 어느 하나의 블록체인 노드(예컨대, NODE1)는 리더 블록체인 노드로 동작할 수 있으며, 리더 블록체인 노드의 주도 하에서 신규 생성 블록에 대한 합의 과정이 수행될 수 있다.Any one blockchain node (eg, NODE1) among the plurality of blockchain nodes (NODE1 to NODE7) can operate as a leader blockchain node, and the consensus process for a newly created block is performed under the leadership of the leader blockchain node. can be
실시 예에 따라, 블록체인 네트워크(NET_BC)는 투표를 통한 합의 방식을 사용하는 블록체인일 수 있으며, 그 종류는 제한되지 않는다.According to an embodiment, the blockchain network (NET_BC) may be a blockchain using a consensus method through voting, and the type is not limited.
실시 예에 따라, 블록체인 네트워크(NET_BC)는 BFT(Byzantine Fault Tolerance) 계열의 합의 프로토콜을 사용할 수 있다.According to an embodiment, the blockchain network (NET_BC) may use a Byzantine Fault Tolerance (BFT)-based consensus protocol.
본 명세서에서 "노드(node)"는 네트워크의 적어도 일부를 구성하는 장치를 의미할 수 있으며, "노드 장치"라고 일컬어질 수도 있다.In this specification, a “node” may mean a device constituting at least a part of a network, and may also be referred to as a “node device”.
도 2는 도 1에 도시된 블록체인 네트워크에서 리더 블록체인 노드의 일 실시 예에 따른 블록도이다.FIG. 2 is a block diagram according to an embodiment of a leader block chain node in the block chain network shown in FIG. 1 .
도 1과 도 2를 참조하면, 도 2에 도시된 리더 블록체인 노드(100)는 블록체인 네트워크(NET_BC)에 포함된 블록체인 노드들(NODE1~NODE7) 중에서 리더 블록체인 노드로 동작하는 어느 하나의 블록체인 노드(예컨대, NODE1)를 의미할 수 있다.1 and 2, the leader
리더 블록체인 노드(100)는 통신 인터페이스(110), 메모리(120), 및 프로세서(130)를 포함할 수 있다.The
통신 인터페이스(110)는 리더 블록체인 노드(100)와 참여 블록체인 노드들(예컨대, NODE2~NODE7)과의 통신을 인터페이싱할 수 있으며, 인터페이싱 과정에서 송수신되는 데이터 또는 신호를 처리할 수 있다.The
실시 예에 따라, 통신 인터페이스(110)는 참여 블록체인 노드들(예컨대, NODE2~NODE7)과 송수신하는 메시지(예컨대, 합의 요청 메시지 또는 투표 메시지)를 인터페이싱할 수 있다.According to an embodiment, the
메모리(120)는 리더 블록체인 노드(100)가 가변 정족수 기반의 블록 체인 합의 방법을 수행하는 데에 필요한 데이터와 프로세서(130)의 처리 과정에서 필요한 데이터, 프로세서(130)의 처리 과정 중 또는 처리 완료 후에 생성된 데이터를 저장할 수 있다.The
실시 예에 따라, 메모리(120)는 본 발명의 실시 예에 따른 가변 정족수 기반의 블록 체인 합의 방법을 수행하기 위한 프로그램을 저장할 수 있으며, 메모리(120)는 프로세서(130)와 결합되어 상기 프로그램을 실행시킬 수 있다.According to an embodiment, the
프로세서(130)는 합의 요청 메시지 생성 모듈(132), 정족수 변경 모듈(134), 및 합의 결과 처리 모듈(136)을 포함할 수 있다.The
합의 요청 메시지 생성 모듈(132)은 신규 생성 블록에 대한 합의 과정을 시작하기 위하여 참여 블록체인 노드들(예컨대, NODE2~NODE7)에게 합의 과정의 수행을 요청하는 합의 요청 메시지를 생성할 수 있다.The consensus request
정족수 변경 모듈(134)은 참여 블록체인 노드들(예컨대, NODE2~NODE7) 중에서 비잔틴 오류(Byzantine Fault)가 발생한 참여 블록체인 노드들의 수와 무효의 투표 메시지를 브로드캐스트한 참여 블록체인 노드의 수를 이용하여, 정족수를 변경할 수 있다.The
정족수는 합의 과정 상의 투표에서 합의가 된 것으로 판단하기 위한 기준이 되는 값이며, "동의","거절", 및 "무효"의 투표 메시지 중에서 "동의"의 투표 메시지의 수가 정족수 이상인 경우에 합의된 것으로 판단할 수 있다.The quorum is a standard value for judging that a consensus has been reached in the voting process in the consensus process, and when the number of voting messages of “agree” among the voting messages of “agree”, “reject”, and “invalid” is greater than a quorum, the consensus can be judged as
합의 결과 처리 모듈(136)은 블록체인 노드들(예컨대, NODE1~NODE7) 의 투표 메시지들 중에서, "동의"의 투표 메시지의 수가 정족수 변경 모듈(134)에 의해 변경된 정족수 이상인지에 따라 합의 여부를 결정할 수 있다.The consensus
가변 정족수 기반의 블록 체인 합의 방법의 세부적인 수행 과정은 도 3 내지 도 6을 참조하여 후술한다.A detailed execution process of the variable quorum-based blockchain consensus method will be described later with reference to FIGS. 3 to 6 .
도 3은 도 1에 도시된 블록체인 네트워크에서 수행되는 합의 과정의 일 실시 예에 따른 플로우차트이다.3 is a flowchart according to an embodiment of a consensus process performed in the block chain network shown in FIG. 1 .
도 1 내지 도 3을 참조하면, 리더 블록체인 노드(예컨대, NODE1)는 최초에 제안 단계(S300)를 수행할 수 있다.1 to 3 , the leader blockchain node (eg, NODE1) may initially perform the proposal step S300.
제안 단계(S300)에서, 리더 블록체인 노드(예컨대, NODE1)는 신규 생성 블록과 신규 생성 블록에 대한 합의 요청 메시지를 참여 블록체인 노드들(예컨대, NODE2~NODE7)로 전송할 수 있다.In the proposal step (S300), the leader blockchain node (eg, NODE1) may transmit a new generated block and a consensus request message for the newly generated block to the participating blockchain nodes (eg, NODE2 to NODE7).
실시 예에 따라, 리더 블록체인 노드(예컨대, NODE1)는 신규 생성 블록의 블록 생성자와 동일할 수도 있고 다를 수도 있다.According to an embodiment, the leader block chain node (eg, NODE1) may be the same as or different from the block creator of the newly created block.
실시 예에 따라, 신규 생성 블록과 합의 요청 메시지는 서로 분리되어 전송될 수 있다.According to an embodiment, the new generation block and the consensus request message may be transmitted separately from each other.
제안 단계(S300)에서 리더 블록체인 노드(예컨대, NODE1)의 합의 요청 메시지가 정해진 시간 내에 전송되지 않는 경우(S301), 리더 블록체인 노드(예컨대, NODE1)는 참여 블록체인 노드들(예컨대, NODE2~NODE7) 중의 어느 하나로 교체될 수 있다(S340).When the consensus request message of the leader blockchain node (eg, NODE1) is not transmitted within the predetermined time in the proposal step (S300) (S301), the leader blockchain node (eg, NODE1) participates in the participating blockchain nodes (eg, NODE2) ~ NODE7) may be replaced with any one of (S340).
제안 단계(S300)에서 리더 블록체인 노드(예컨대, NODE1)의 합의 요청 메시지가 정해진 시간 내에 전송된 경우(S302), 리더 블록체인 노드(예컨대, NODE1)와 참여 블록체인 노드들(예컨대, NODE2~NODE7)은 투표 단계(S310)를 수행할 수 있다.In the proposal step (S300), when the consensus request message of the leader blockchain node (eg, NODE1) is transmitted within a predetermined time (S302), the leader blockchain node (eg, NODE1) and participating blockchain nodes (eg, NODE2~ NODE7) may perform a voting step (S310).
투표 단계(S310)에서, 리더 블록체인 노드(예컨대, NODE1)와 참여 블록체인 노드들(예컨대, NODE2~NODE7)은 동의, 거절, 또는 무효의 투표 메시지를 브로드캐스트할 수 있다.In the voting step S310, the leader blockchain node (eg, NODE1) and participating blockchain nodes (eg, NODE2 to NODE7) may broadcast a voting message of consent, rejection, or invalidation.
실시 예에 따라, 리더 블록체인 노드(예컨대, NODE1)와 참여 블록체인 노드들(예컨대, NODE2~NODE7)은 신규 생성 블록에 대한 합의에 동의하는 경우에는 동의의 투표 메시지를, 신규 생성 블록에 대한 합의에 부동의하는 경우에는 거절의 투표 메시지를, 정해진 시간 내에 신규 생성 블록과 합의 요청 메시지를 수신하지 못한 경우에는 무효의 투표 메시지를 브로드캐스트할 수 있다.According to an embodiment, when the leader blockchain node (eg, NODE1) and participating blockchain nodes (eg, NODE2 to NODE7) agree on a consensus on a newly created block, a vote message of agreement is sent to the newly created block. In case of disagreeing with the consensus, a voting message of rejection can be broadcast, and when a new block and a consensus request message are not received within a set time, an invalid voting message can be broadcast.
투표 단계(S310)에서 정해진 시간(예컨대, view change timer) 내에 투표가 이루어지지 않는 경우(S311), 리더 블록체인 노드(예컨대, NODE1)는 참여 블록체인 노드들(예컨대, NODE2~NODE7) 중의 어느 하나로 교체될 수 있다(S340).In the voting step (S310), if a vote is not made within a predetermined time (eg, view change timer) (S311), the leader blockchain node (eg, NODE1) selects any of the participating blockchain nodes (eg, NODE2 to NODE7). One may be replaced (S340).
투표 단계(S310)에서 동의의 투표 메시지 수가 정족수 이상인 것으로 판단되는 경우(S312), 합의 완료 단계(S330)로 넘어갈 수 있다.When it is determined that the number of vote messages of consent is greater than or equal to the quorum in the voting step (S310) (S312), the process may proceed to the step of completing the agreement (S330).
투표 단계(S310)에서는 참여 블록체인 노드들(예컨대, NODE2~NODE7)이 비정상적인 메시지를 전송한 경우 또는 정해진 시간 내에 메시지를 전송하지 않은 경우의 비잔틴 오류를 검출할 수 있다. 리더 블록체인 노드(예컨대, NODE1)는 검출된 비잔틴 오류에 따라, 비잔틴 오류가 발생한 참여 블록체인 노드의 수와 무효의 투표 메시지를 발행한 참여 블록체인 노드의 수에 기초하여, 정족수를 변경하고 변경된 정족수에 따라 합의 여부를 판단할 수 있다.In the voting step (S310), a Byzantine error can be detected when the participating blockchain nodes (eg, NODE2 to NODE7) transmit an abnormal message or when a message is not transmitted within a predetermined time. The leader blockchain node (e.g., NODE1) changes the quorum according to the detected Byzantine error, based on the number of participating blockchain nodes with Byzantine errors and the number of participating blockchain nodes that issued invalid voting messages. A quorum can determine whether an agreement is reached.
실시 예에 따라, 비정상적인 메시지를 전송하는 경우는 블록체인의 프로토콜(protocol)에 어긋나는 메시지를 전송한 경우일 수 있다.According to an embodiment, the case of transmitting an abnormal message may be a case of transmitting a message that violates the protocol of the block chain.
투표 단계(S310)에서 정해진 시간(예컨대, vote timer) 내에 합의가 이루어지지 않는 경우(S313), 리더 블록체인 노드(예컨대, NODE1)는 수집 단계(S320)를 수행할 수 있다.If consensus is not reached within a predetermined time (eg, vote timer) in the voting step (S310) (S313), the leader block chain node (eg, NODE1) may perform the collection step (S320).
수집 단계(S320)에서, 리더 블록체인 노드(예컨대, NODE1)와 참여 블록체인 노드들(예컨대, NODE2~NODE7) 각각은 수신한 모든 투표 메시지와 자신이 전송한 투표 메시지를 모아서 브로드캐스트할 수 있다.In the collection step (S320), each of the leader blockchain node (eg, NODE1) and participating blockchain nodes (eg, NODE2 to NODE7) collects and broadcasts all the voting messages it has received and the voting messages it has sent. .
수집 단계(S320)에서는 참여 블록체인 노드들(예컨대, NODE2~NODE7)이 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우의 비잔틴 오류를 검출할 수 있다. 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우의 비잔틴 오류는, 정상적인 메시지들 각각이 블록체인 프로토콜에 맞게 작성되었으나, 이중으로 투표한 경우에 발생하는 비잔틴 오류일 수 있다. 리더 블록체인 노드(예컨대, NODE1)는 검출된 비잔틴 오류에 따라, 정족수를 추가적으로 변경할 수 있다.In the collection step (S320), a Byzantine error when the participating blockchain nodes (eg, NODE2 to NODE7) transmit two or more conflicting normal messages can be detected. A Byzantine error when two or more conflicting normal messages are transmitted may be a Byzantine error that occurs when each of the normal messages is written according to the blockchain protocol, but has been voted twice. The leader blockchain node (eg, NODE1) may additionally change the quorum according to the detected Byzantine error.
실시 예에 따라, 수집 단계(S320)에서 리더 블록체인 노드(예컨대, NODE1)는 네트워크 오류에 의하여 투표에 참여하지 못하였던 참여 블록체인 노드를 포함시켜서 정족수를 추가적으로 변경할 수 있다.According to an embodiment, in the collection step ( S320 ), the leader blockchain node (eg, NODE1) may additionally change the quorum by including the participating blockchain node that failed to participate in the voting due to a network error.
수집 단계(S320)에서 정해진 시간(예컨대, view change timer) 내에 합의가 되지 않는 경우(S321), 리더 블록체인 노드(예컨대, NODE1)는 참여 블록체인 노드들(예컨대, NODE2~NODE7) 중의 어느 하나로 교체될 수 있다(S340).If agreement is not reached within a set time (eg, view change timer) in the collection step (S320) (S321), the leader blockchain node (eg, NODE1) is one of the participating blockchain nodes (eg, NODE2 to NODE7). may be replaced (S340).
수집 단계(S320)에서 동의의 투표 메시지의 수가 추가적으로 변경된 정족수 이상인 경우(S322), 합의 완료 단계(S330)로 넘어갈 수 있다.If the number of vote messages of consent in the collection step (S320) is equal to or greater than the additionally changed quorum (S322), the process may proceed to the step of completing the agreement (S330).
도 4는 도 3의 합의 과정의 구체적인 예시를 나타낸 도면이다.FIG. 4 is a view showing a specific example of the consensus process of FIG. 3 .
도 1 내지 도 4를 참조하면, 제1블록체인 노드(NODE1(101))가 리더 블록체인 노드로 동작하고, 나머지 블록체인 노드들(NODE2(102)~NODE7(107))이 참여 블록체인 노드로 동작할 수 있다.1 to 4, the first block chain node (NODE1 101) operates as a leader block chain node, and the remaining block chain nodes (
제안단계(Propose)에서 리더 블록체인 노드(101)는 참여 블록체인 노드들(102~107)로 신규 생성 블록과 신규 생성 블록에 대한 합의 요청 메시지를 브로드캐스트할 수 있다(S401).In the proposal step (Propose), the leader
리더 블록체인 노드(101)와 참여 블록체인 노드들(102~107)은 신규 생성 블록에 대한 투표를 진행할 수 있다.The leader
리더 블록체인 노드(101)와 일부 참여 블록체인 노드들(104, 105)은 동의의 투표 메시지를 브로드캐스트 할 수 있다(S411, S413, S414). The
일부 참여 블록체인 노드(107)는 거절의 투표를 하고자 하였으나 투표 메시지가 프로토콜에 맞지 않아서 비잔틴 오류를 가질 수 있다(S415).Some participating
일부 참여 블록체인 노드(102)는 리더 블록체인 노드(101)로부터 신규 생성 블록과 합의 요청 메시지를 수신하지 못하여, 무효의 투표 메시지를 브로드캐스트 할 수 있다(S412).Some participating
일부 참여 블록체인 노드(103, 106)는 리더 블록체인 노드(101)로부터 신규 생성 블록과 합의 요청 메시지는 수신하였으나, 네트워크 문제로 정해진 시간 내에 투표 메시지를 전송하지 못할 수 있다.Some participating
이 때, 프로토콜에 맞지 않는 투표 메시지를 전송한 참여 블록체인 노드(107) 또는 정해진 시간 내에 투표 메시지를 전송하지 못한 참여 블록체인 노드(103, 106)는 비잔틴 오류를 가지므로 이후의 투표단계(Vote)의 정족수에서 빠지며, 무효의 투표 메시지를 브로드캐스트한 참여 블록체인 노드(102)는 정족수에서 빠지지 않을 수 있다.At this time, the participating
리더 블록체인 노드(101)는 비잔틴 오류가 발생한 블록체인 노드의 수와 무효의 투표 메시지를 브로드캐스트한 블록체인의 노드 수에 기초하여 기 설정된 정족수를 변경할 수 있다(S430).The leader
실시 예에 따라, 본 발명의 실시 예에 따른 블록체인은 BTF(Byzantine Fault Tolerance) 계열의 프로토콜을 따를 수 있으며, 합의에 필요한 최소 블록체인 노드의 수를 3f+1(f는 허용 가능한 최대 비잔틴 오류를 가지는 블록체인 노드의 수)라고 할 때, 정족수는 2f+1을 기준으로 설정할 수 있다. According to an embodiment, the blockchain according to the embodiment of the present invention may follow the BTF (Byzantine Fault Tolerance) series protocol, and the minimum number of blockchain nodes required for consensus is 3f+1 (f is the maximum allowable Byzantine error) ), the quorum can be set based on
이 경우, 도 4에서는 3f+1이 7의 값을 가지므로, f는 2이고, 정족수는 5로 기설정될 수 있다. S430 단계에서는 기 설정된 정족수 5에서, 무효의 투표 메시지를 브로드캐스트한 참여 블록체인 노드(102)의 수(1개)는 빼지 않고, 비잔틴 오류가 발생한 블록체인 노드(103, 106, 107)의 수(3개)는 뺀 값인 2로 정족수를 변경할 수 있다.In this case, since 3f+1 has a value of 7 in FIG. 4 , f may be 2 and the quorum may be preset to 5. In step S430, from the
투표에 참여한 제1그룹(GR_COM1)의 참여 블록체인 노드들(101, 102, 104, 105) 중에서, 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수는 3개로써, 정족수 이상이므로, 신규 생성 블록에 대하여 합의가 완료된 것으로 판단할 수 있다.Among the participating
일부 블록체인 노드(103)는 네트워크 오류로 인하여 투표단계에서 참여하지 못하였으나 네트워크 오류가 투표단계 이후에 해소될 수 있다. 이 경우에는 수집 단계(Collate)에서 다시 한번 합의 과정에 참여할 수 있다(S441).Some
도 4의 경우에는 투표 단계에서 합의가 이루어질 수 있으나, 투표 단계에서 합의가 이루어지지 않은 경우를 가정하면, 수집 단계에서는 네트워크 오류가 해소된 일부 블록체인 노드(103)을 포함하여 리더 블록체인 노드와 참여 블록체인 노드들 각각이 수신한 모든 투표 메시지와 자신이 전송한 투표 메시지를 모아서 추가적으로 브로드캐스트할 수 있다(S451).In the case of FIG. 4, consensus can be achieved in the voting stage, but assuming that consensus is not achieved in the voting stage, in the collection stage, the leader blockchain node and the All the voting messages received by each of the participating blockchain nodes and the voting messages transmitted by themselves can be collected and additionally broadcast (S451).
이에 따라, 수집 단계에서는 두 개 이상의 서로 상충하는 정상적인 메시지를 전송한 경우의 비잔틴 오류를 추가적으로 검출할 수 있다.Accordingly, in the collection step, a Byzantine error when two or more conflicting normal messages are transmitted may be additionally detected.
또한, 수집 단계에서 리더 블록체인 노드(101)는 네트워크 오류가 해소된 일부 블록체인 노드(103)의 수(1개)를 추가하고, 두 개 이상의 서로 상충하는 정상적인 메시지를 전송한 경우의 비잔틴 오류가 발생한 블록체인 노드의 수(이 경우, 없는 것으로 가정)를 차감하여, S430 단계에서 변경되었던 정족수를 추가적으로 변경(예컨대, 3으로 변경)할 수 있다.In addition, in the collection stage, the
합의된 결과는 수집 단계가 진행될 때까지 네트워크 오류가 해결된 블록체인 노드(예컨대, 103, 106)에까지 추가적으로 브로드캐스트될 수 있다.The agreed result can be further broadcast to the blockchain nodes (eg, 103, 106) where the network error is resolved until the collection stage is progressed.
리더 블록체인 노드(101)와 합의 결과를 브로드캐스트 받은 블록체인 노드들(102~106)은 최종적으로 합의 상태로 변경되며, 비잔틴 오류가 해소되지 않은 블록체인 노드(107)는 합의 상태에서 제외될 수 있다.The
도 5는 본 발명의 실시 예에 따라 설정될 수 있는 타이머의 예시를 나타낸 도면이다.5 is a diagram illustrating an example of a timer that can be set according to an embodiment of the present invention.
도 5를 참조하면, 제안 단계(Propose), 투표 단계(Vote), 수집 단계(Collate)는 순차적으로 수행될 수 있으며, 제안 단계, 투표 단계, 및 수집 단계로 구성된 하나의 라운드(Round1)가 종료되면, 다음 라운드(Round2)의 신규 생성 블록(B2)에 대한 합의 과정이 수행될 수 있다.Referring to FIG. 5 , the proposal phase (Propose), the voting phase (Vote), and the collection phase (Collate) may be sequentially performed, and one round (Round1) consisting of the proposal phase, the voting phase, and the collection phase ends If it is, a consensus process for the new generation block B2 of the next round Round2 may be performed.
최초 라운드(Round1)의 합의 과정에서는 각 단계에서의 타이머, 예컨대 제안 타이머(propose timer, TP-11~TP-14), 투표 타이머(vote timer, TV-11~TV-14), 수집 타이머(collate timer, TC-11~TC-14)는 일괄적으로 설정될 수 있다.In the consensus process of the first round (Round1), timers at each stage, for example, a proposal timer (TP-11 to TP-14), a vote timer (TV-11 to TV-14), and a collate timer (collate). timer, TC-11 to TC-14) can be set collectively.
하지만, 각 블록체인 노드들(111~114)에서의 투표 단계와 수집 단계가 완료되는 시점이 다르기 때문에, 다음 라운드(Round2)의 합의 과정에서는 블록체인 노드들(111~114) 마다 타이머가 각자 개별적으로 설정될 수 있다.However, since the timing at which the voting stage and the collection stage are completed in each of the
도 6은 본 발명의 실시 예에 따른 가변 정족수 기반의 블록 체인 합의 방법의 플로우차트이다.6 is a flowchart of a block chain consensus method based on a variable quorum according to an embodiment of the present invention.
도 1 내지 도 6을 참조하면, 리더 블록체인 노드(예컨대, 101)는 신규 생성 블록과 신규 생성 블록에 대한 합의 요청 메시지를 다른 블록체인 노드들(예컨대, 102~107)로 전송할 수 있다(S610).1 to 6 , the leader blockchain node (eg, 101) may transmit a new generated block and a consensus request message for the newly generated block to other blockchain nodes (eg, 102 to 107) (S610). ).
참여 블록체인 노드들(예컨대, 102~107)은 신규 생성 블록의 합의 요청에 대한 투표 메시지를 브로드 캐스트할 수 있다(S620).Participating blockchain nodes (eg, 102 to 107) may broadcast a voting message for a consensus request of a newly created block (S620).
실시 예에 따라, 투표 메시지는, 동의, 거절, 또는 무효의 투표메시지일 수 있다.According to an embodiment, the voting message may be a voting message of consent, rejection, or invalidity.
리더 블록체인 노드(예컨대, 101)는 참여 블록체인 노드들 중에서 비잔틴 오류가 발생한 블록체인 노드의 수와 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경할 수 있다(S630).The leader blockchain node (e.g., 101) may change the preset quorum based on the number of blockchain nodes with Byzantine errors among participating blockchain nodes and the number of blockchain nodes that broadcast invalid voting messages. (S630).
실시 예에 따라, 비잔틴 오류가 발생한 경우는, 비정상적인 메시지를 전송한 경우, 정해진 시간 내에 메시지를 전송하지 않은 경우, 또는 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우일 수 있다.According to an embodiment, when a Byzantine error occurs, when an abnormal message is transmitted, when a message is not transmitted within a predetermined time, or when two or more conflicting normal messages are transmitted.
실시 예에 따라, 정족수를 변경하는 S630 단계는 비정상적인 메시지를 전송한 경우 또는 정해진 시간 내에 메시지를 전송하지 않은 경우의 비잔틴 오류가 발생한 블록체인 노드의 수와 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여 정족수를 변경하는 단계와, 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우의 비잔틴 오류가 발생한 블록체인 노드의 수에 기초하여 정족수를 추가적으로 변경하는 단계로 구분될 수도 있다.According to an embodiment, the step S630 of changing the quorum is the number of block chain nodes that have a Byzantine error when an abnormal message is transmitted or when a message is not transmitted within a predetermined time and the block chain node that broadcast an invalid voting message It may be divided into a step of changing the quorum based on the number of
리더 블록체인 노드(예컨대, 101)는 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 정족수 이상인지에 따라 합의 여부를 결정할 수 있다(S640).The leader block chain node (eg, 101) may determine whether to agree according to whether the number of block chain nodes that have broadcast a vote message of consent is equal to or greater than the changed quorum (S640).
실시 예에 따라, S630 단계에서 정족수가 추가적으로 변경된 경우에는, 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 추가적으로 변경된 정족수 이상인지에 따라 합의 여부를 결정할 수 있다According to an embodiment, when the quorum is additionally changed in step S630, it is possible to determine whether to agree or not according to whether the number of blockchain nodes that have broadcast a voting message of consent is equal to or greater than the additionally changed quorum.
이상, 본 발명의 기술적 사상을 다양한 실시 예들을 들어 상세하게 설명하였으나, 본 발명의 기술적 사상은 상기 실시 예들에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.As mentioned above, although the technical idea of the present invention has been described in detail with reference to various embodiments, the technical idea of the present invention is not limited to the above embodiments, and those of ordinary skill in the art within the scope of the technical spirit of the present invention Various modifications and changes are possible by
100, 101~107, 111~114 : 블록체인 노드
110 : 통신 인터페이스
120 : 메모리
130 : 프로세서100, 101~107, 111~114: Blockchain node
110: communication interface
120: memory
130: processor
Claims (15)
상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 단계; 및
상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 단계를 포함하는, 가변 정족수 기반의 블록체인 합의 방법.
According to the newly created block sent from the leader block chain node and the consensus request message for the newly created block, the leader block chain node and the participating block chain nodes broadcast a voting message of consent, rejection, or invalidity. step;
changing a preset quorum based on the number of blockchain nodes in which a Byzantine Fault occurred among the participating blockchain nodes and the number of blockchain nodes that broadcast the invalid voting message; and
A block chain consensus method based on a variable quorum, comprising the step of determining whether to agree according to whether the number of blockchain nodes that have broadcast the voting message of consent is equal to or greater than the changed quorum.
상기 신규 생성 블록과 상기 합의 요청 메시지는 서로 분리되어 전송되는, 가변 정족수 기반의 블록체인 합의 방법.
According to claim 1,
The variable quorum-based blockchain consensus method, wherein the newly generated block and the consensus request message are transmitted separately from each other.
상기 참여 블록체인 노드들은,
정해진 시간 내에 상기 신규 생성 블록과 상기 합의 요청 메시지를 수신하지 못한 경우에 상기 무효의 투표 메시지를 브로드캐스트 하는, 가변 정족수 기반의 블록체인 합의 방법.
According to claim 1,
The participating blockchain nodes are
A variable quorum-based blockchain consensus method for broadcasting the invalid vote message when the newly generated block and the consensus request message are not received within a predetermined time.
상기 비잔틴 오류가 발생한 경우는,
비정상적인 메시지를 전송한 경우, 정해진 시간 내에 메시지를 전송하지 않은 경우, 또는 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우인, 가변 정족수 기반의 블록체인 합의 방법.
According to claim 1,
If the Byzantine error occurs,
A blockchain consensus method based on variable quorum, which is when an abnormal message is sent, when a message is not sent within a set time, or when two or more conflicting normal messages are sent.
상기 비정상적인 메시지를 전송한 경우는,
블록체인의 프로토콜(protocol)에 어긋나는 메시지를 전송한 경우인, 가변 정족수 기반의 블록체인 합의 방법.
5. The method of claim 4,
If the above abnormal message is transmitted,
A blockchain consensus method based on a variable quorum, which is a case of sending a message that violates the protocol of the blockchain.
두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우는,
상기 정상적인 메시지들 각각은 블록체인의 프로토콜에 맞게 작성되었으나, 이중으로 투표한 경우인, 가변 정족수 기반의 블록체인 합의 방법.
5. The method of claim 4,
If two or more conflicting normal messages are sent,
Each of the above normal messages is written according to the protocol of the blockchain, but is a case of double voting, a variable quorum-based blockchain consensus method.
상기 기설정된 정족수를 변경하는 단계는,
상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수는 상기 기설정된 정족수에서 빼지 않고, 상기 비잔틴 오류가 발생한 블록체인 노드의 수만 상기 기설정된 정족수에서 뺀 값으로 상기 기설정된 정족수를 변경하는, 가변 정족수 기반의 블록체인 합의 방법.
According to claim 1,
Changing the preset quorum comprises:
The number of blockchain nodes that have broadcast the invalid voting message is not subtracted from the preset quorum, and only the number of blockchain nodes in which the Byzantine error has occurred is subtracted from the preset quorum to change the preset quorum A quorum-based blockchain consensus method.
상기 기설정된 정족수를 변경하는 단계는,
상기 비정상적인 메시지를 전송한 경우 또는 정해진 시간 내에 메시지를 전송하지 않은 경우의 상기 비잔틴 오류를 검출하여, 상기 기 설정된 정족수를 변경하는, 가변 정족수 기반의 블록체인 합의 방법.
5. The method of claim 4,
Changing the preset quorum comprises:
A variable quorum-based blockchain consensus method for changing the preset quorum by detecting the Byzantine error when the abnormal message is transmitted or the message is not transmitted within a predetermined time.
상기 가변 정족수 기반의 블록체인 합의 방법은,
상기 리더 블록체인 노드와 상기 참여 블록체인 노드들 각각이 수신한 모든 투표 메시지와 자신이 전송한 투표 메시지를 모아서 추가적으로 브로드캐스트하는 단계를 더 포함하는, 가변 정족수 기반의 블록체인 합의 방법.
9. The method of claim 8,
The variable quorum-based blockchain consensus method is,
Variable quorum-based blockchain consensus method, further comprising the step of collecting and additionally broadcasting all voting messages received by the leader blockchain node and each of the participating blockchain nodes and voting messages transmitted by the leader blockchain node.
상기 가변 정족수 기반의 블록체인 합의 방법은,
상기 추가적으로 브로드캐스트하는 단계 이후에,
상기 두 개 이상의 서로 상충하는 정상적인 메시지들을 전송한 경우의 상기 비잔틴 오류를 검출하여, 변경된 상기 정족수를 추가적으로 변경하는, 가변 정족수 기반의 블록체인 합의 방법.
10. The method of claim 9,
The variable quorum-based blockchain consensus method is,
After the step of further broadcasting,
A variable quorum-based blockchain consensus method for detecting the Byzantine error when transmitting the two or more conflicting normal messages, and further changing the changed quorum.
상기 변경된 상기 정족수를 추가적으로 변경하는 단계는,
네트워크 오류에 의하여 투표에 참여하지 못하였던 참여 블록체인 노드를 포함시켜, 상기 변경된 상기 정족수를 추가적으로 변경하는, 가변 정족수 기반의 블록체인 합의 방법.
11. The method of claim 10,
The step of further changing the changed quorum comprises:
A variable quorum-based blockchain consensus method for additionally changing the changed quorum by including a participating blockchain node that failed to participate in voting due to a network error.
상기 합의 여부를 결정하는 단계는,
상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 추가적으로 변경된 상기 정족수 이상인지에 따라 상기 합의 여부를 결정하는, 가변 정족수 기반의 블록체인 합의 방법.
12. The method of claim 11,
The step of deciding whether to agree
A variable quorum-based blockchain consensus method for determining whether to agree or not according to whether the number of blockchain nodes that have broadcast the vote message of consent is equal to or greater than the additionally changed quorum.
상기 가변 정족수 기반의 블록체인 합의 방법은,
상기 리더 블록체인 노드가 정해진 시간 내에 상기 신규 생성 블록과 상기 합의 요청 메시지를 전송하지 않는 경우에, 상기 리더 블록체인 노드를 변경하는 단계를 더 포함하는, 가변 정족수 기반의 블록체인 합의 방법.
According to claim 1,
The variable quorum-based blockchain consensus method is,
The variable quorum-based blockchain consensus method further comprising changing the leader blockchain node when the leader blockchain node does not transmit the newly created block and the consensus request message within a predetermined time.
상기 신규 생성 블록과 상기 합의 요청 메시지를 브로드캐스트하고, 참여 블록체인 노드들이 상기 신규 생성 블록과 상기 합의 요청 메시지에 응답하여 전송한 동의, 거절, 또는 무효의 투표 메시지를 수신하는 통신 인터페이스;
상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 정족수 변경 모듈; 및
상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 합의 결과 처리 모듈을 포함하는, 블록체인 노드.
a consensus request message generation module that generates a consensus request message for a new generation block;
a communication interface that broadcasts the newly created block and the consensus request message, and receives a vote message of consent, rejection, or invalidation transmitted by participating blockchain nodes in response to the newly created block and the consensus request message;
a quorum change module for changing a preset quorum based on the number of blockchain nodes that have a Byzantine Fault among the participating blockchain nodes and the number of blockchain nodes that have broadcast the invalid voting message; and
A blockchain node comprising a consensus result processing module that determines whether to agree or not according to whether the number of blockchain nodes that have broadcast the voting message of the agreement is equal to or greater than the changed quorum.
리더 블록체인 노드로부터 전송된 신규 생성 블록과 상기 신규 생성 블록에 대한 합의 요청 메시지에 따라, 상기 리더 블록체인 노드와 참여 블록체인 노드들이 동의, 거절, 또는 무효의 투표 메시지를 브로드캐스트(broadcast)하는 단계;
상기 참여 블록체인 노드들 중에서 비잔틴 오류(Byzantine Fault)가 발생한 블록체인 노드의 수와 상기 무효의 투표 메시지를 브로드캐스트한 블록체인 노드의 수에 기초하여, 기 설정된 정족수를 변경하는 단계; 및
상기 동의의 투표 메시지를 브로드캐스트한 블록체인 노드의 수가 변경된 상기 정족수 이상인지에 따라 합의 여부를 결정하는 단계를 수행하는, 컴퓨터 기록 매체에 저장된 프로그램.
A program stored in a computer recording medium for performing a variable quorum-based blockchain consensus method in combination with a processor,
According to the newly created block sent from the leader block chain node and the consensus request message for the newly created block, the leader block chain node and the participating block chain nodes broadcast a voting message of consent, rejection, or invalidity. step;
changing a preset quorum based on the number of blockchain nodes in which a Byzantine Fault occurred among the participating blockchain nodes and the number of blockchain nodes that broadcast the invalid voting message; and
A program stored in a computer recording medium for performing the step of determining whether to agree according to whether the number of blockchain nodes that have broadcast the voting message of consent is equal to or greater than the changed quorum.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20190149136 | 2019-11-19 | ||
KR1020190149136 | 2019-11-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210061243A KR20210061243A (en) | 2021-05-27 |
KR102285882B1 true KR102285882B1 (en) | 2021-08-05 |
Family
ID=76135770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200044613A KR102285882B1 (en) | 2019-11-19 | 2020-04-13 | Blockchain consensus method based on variable quorum, blockcahin node device and program using the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102285882B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114205092B (en) * | 2021-12-01 | 2023-11-21 | 浙江大学 | Optimistic Bayesian-preemption fault-tolerant consensus method without rollback |
CN117354318B (en) * | 2023-09-28 | 2024-04-05 | 北京航空航天大学 | Practical distributed voting consensus method, device, equipment and storage medium |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019012510A (en) | 2017-06-30 | 2019-01-24 | 株式会社bitFlyer | Method for building consensus in network and nodes constituting network |
CN110445619A (en) | 2017-03-30 | 2019-11-12 | 腾讯科技(深圳)有限公司 | Block catenary system, message treatment method and storage medium |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450981B (en) * | 2017-05-31 | 2020-04-24 | 创新先进技术有限公司 | Block chain consensus method and equipment |
KR102019211B1 (en) * | 2017-11-14 | 2019-11-04 | 주식회사 아이콘루프 | Method for generating block chain capable of overcoming byzantine fault |
-
2020
- 2020-04-13 KR KR1020200044613A patent/KR102285882B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110445619A (en) | 2017-03-30 | 2019-11-12 | 腾讯科技(深圳)有限公司 | Block catenary system, message treatment method and storage medium |
JP2019012510A (en) | 2017-06-30 | 2019-01-24 | 株式会社bitFlyer | Method for building consensus in network and nodes constituting network |
Also Published As
Publication number | Publication date |
---|---|
KR20210061243A (en) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112134762B (en) | Testing method, device, terminal and storage medium for block chain network structure | |
CN111382456B (en) | Proposal message processing method, device, equipment and storage medium | |
CN109165945B (en) | Representative node device election method and device, computer device and storage medium | |
CN111612613B (en) | Block chain network with centralized system | |
JP7398000B2 (en) | Blockchain-based data detection method and device, computer device and program | |
EP3553669B1 (en) | Failure recovery method and device, and system | |
TW486637B (en) | Method and apparatus for managing redundant computer-based systems for fault tolerant computing | |
KR102285882B1 (en) | Blockchain consensus method based on variable quorum, blockcahin node device and program using the same | |
CN110290180A (en) | Distributed task dispatching method, apparatus, computer equipment and storage medium | |
CN110336707A (en) | Block chain common recognition device, method and computer readable storage medium | |
CN109173270B (en) | Game service system and implementation method | |
CN107453929B (en) | Cluster system self-construction method and device and cluster system | |
CN114048517B (en) | Dual channel consensus system and method for blockchains, computer readable storage medium | |
CN114090693B (en) | Byzantine fault-tolerant-based block chain witness consensus method, system, equipment and storage medium | |
CN112492016B (en) | Cross-process extensible consensus method and system | |
CN112202647B (en) | Test method, device and test equipment in block chain network | |
CN105262835A (en) | Data storage method and device of multiple machine rooms | |
CN109999508A (en) | Game live game coverage method and device | |
WO2016020986A1 (en) | Alignment device, data-processing device, program, alignment method, and multiplexing system | |
CN108388108A (en) | The method and device of synchrodata in a kind of multiple redundancy control system | |
KR102367570B1 (en) | Method for parallel block processing method in blockchain, blockcahin node device and program using the same | |
CN111526045A (en) | Fault processing method and system for block chain | |
CN114760198B (en) | Consensus method, device and system based on block chain network | |
CN110851528A (en) | Database synchronization method and device, storage medium and computer equipment | |
CN113783946B (en) | Re-voted binary consensus method and device based on threshold signature |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |