KR20200032449A - 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템 - Google Patents
블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템 Download PDFInfo
- Publication number
- KR20200032449A KR20200032449A KR1020180111496A KR20180111496A KR20200032449A KR 20200032449 A KR20200032449 A KR 20200032449A KR 1020180111496 A KR1020180111496 A KR 1020180111496A KR 20180111496 A KR20180111496 A KR 20180111496A KR 20200032449 A KR20200032449 A KR 20200032449A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- nodes
- node
- candidate block
- round
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- 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
- H04L67/1044—Group management mechanisms
- H04L67/1053—Group management mechanisms with pre-configuration of logical or physical connections with a determined number of other peers
- H04L67/1057—Group management mechanisms with pre-configuration of logical or physical connections with a determined number of other peers involving pre-assessment of levels of reputation of peers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3263—Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3263—Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3268—Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3297—Cryptographic 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 involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H04L2209/38—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/121—Timestamp
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
실시예는, 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법으로써, 매 라운드 별 미리 정해진 시점에 블록 생성 지위를 가지는 프로듀서 노드로 승격될 수 있는 상기 복수의 노드들 중 어느 하나의 제1 노드 가 제N 라운드에서 후보 블록을 수신하는 단계; 수신된 후보 블록이 유효 후보 블록인지 판단 하는 단계; 상기 유효 후보 블록이 미승인 블록인지 판단 하는 단계; 및 상기 미승인 블록이 최초 수신 후보 블록 인지 판단하여 상기 미승인 블록에 대한 승인 투표 여부를 결정하는 단계;를 포함하고, 상기 최초 수신 후보 블록은 상기 제1 노드가 상기 제N 라운드 내에서 최초 수신한 후보 블록인 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수 있다.
Description
본 발명은 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 복수의 노도들간의 합의를 이루기 위한 방법 및 블록체인 시스템에 관한 것이다.
블록체인은 2008년 사토시 나카모토의 Bitcoin: A Peer-to-Peer Electronic Cash System에서 블록과 블록을 연결하는 방법에서 유래하였다. 블록체인은 피어 들에게 원장이 공유되고 블록 안의 내용이 투명하게 공개되며 임의로 변경이 불가능한 특성으로 인해 암호화 폐에서 필수불가결의 기술로 인정받았다. 그리고 이제 블록체인은 암호화폐만을 위한 기술이 아니라 여러 산업 분야에 걸쳐서 활용가능성을 보여주고 있다. 블록체인은 네트워크에 참여한 각 피어들이 분산된 원장을 공유하고, 이를 관리하기 위해 합의 알고리즘을 사용한다. 그러나 비트코인으로 대표되는 초기 블록체인 암호화폐의 경우 PoW(Proof of Work) 합의 알고리즘을 사용하는데 이는 완전히 분산된 네트 워크에 피어들이 언제든지 참여할 수 있어 확장성이 용이하다는 장점이 있지만, 합의를 위한 피어들의 작업이 경쟁적이고 대단히 에너지 소모적이며 성능이 떨어지는 단점이 있다. 또한 PoW의 특성상 피어들의 작업에 대한 보상이 필요한 네트워크 구조가 요구되어 코인이나 토큰의 개념이 필요없는 블록체인 시스템에서는 적합하지 않다. 때문에, 여러 블록체인 플랫폼에서 PoW의 단점을 극복한 PoS(Proof of Stake), DPoS(Delegated Proof of Stake), PBFT(Practical Byzantine Fault Tolerance), Casper, Tendermint 등과 같은 개선된 합의 알고리즘들을 연구, 개발 및 적용하고 있다. PoS는 PoW와 다르게, 지분이 블록 생성자를 결정하는 요인이 되는 방식으로, 에너지 소모가 요구되지 않으며 PoW에 비해 상대적으로 트랜잭션 처리에 대한 신뢰성이 높다는 장점이 있다. 그러나, PoS는 PoW와 마찬가지로 지분을 가진 유권자가 투표에 무관심하게 되면 신뢰성이 떨어진다는 문제점을 내재하고 있다. 또한, 블록체인이 둘로 나누어지는 포크 현상이 발생했을 때 지분에 따른 투표를 통해 하나의 블록체인을 선택하게 되는데, 나누어진 블록체인 모두에게 투표를 하더라도 노드에게는 손해가 발생하지 않는 nothing a stake 문제점이 있다. 즉, 공격자가 미리 다른 블록체인을 생성 해두고 자신이 블록 생성 권한을 얻었을 때, 미리 만들어둔 블록체인을 전파해 강제적으로 포크를 발생시켜도 노드들은 손해를 발생하지 않는 가장 안전한 방법인 두 모두에게 투표하여 포크 상황이 해결되지 않을 수 있다. DPoS는 PoS 를 기반의 합의 알고리즘으로, 대표자를 선출하고 대표자들에게 블록 생성에 대한 권한을 위임하는 알고리즘을 가진다. PoS에 비해 빠른 트랜잭션 처리 속도와 확장성을 가지며 블록체인의 신뢰성이 더욱 높아지는 장점이 있다. 하지만 블록체인 네트워크의 중앙집중도가 높아져, 분산 네트워크의 장점이 약화되는 단점이 있다. 또한, 투표 참여율이 낮을 경우 상태적으로 낮은 지분을 통해 대표자가 될 수 있다는 단점이 있으며 대표자들끼리의 담합의 위험성, 공개된 대표자들에 대한 DDoS 공격의 위험이 있다. PBFT는 기존의 분산 네트워크에서 사용되던 합의 알고리즘으로, 악의적인 노드가 네트워크에 참여해 있더라도, 합의 과정을 이끌어 낼 수 있으며 비동기 분산 네트워 크에도 적용할 수 있다는 장점이 있다. 다만, 노드 수가 증가하면 블록체인 시스템의 성능 저하 문제가 발생하여 수십개의 노드가 한계이다. Casper는 PoS와 PBFT기반의 합의 알고리즘이다. Ethereum이라는 블록체인 플랫폼에서 개발 및 적용중인 알고리즘으 로, 현재는 PoW와 PoS, Hybrid 구조로 되어있지만 향후 PoS로 전환 예정이다. 이 알고리즘은 Justified(인증)와 Finality(최종확정성) 두 가지 개념을 적용해, 블록체인 신뢰성을 높이고, 자체 프로토콜을 통해 상황에 대한 안정성을 보장한다. 특히 PoS의 문제점 중 하나인 nothing at stake를 해결하고 이를 이론적으로 증명한 알 고리즘이다. 하지만 구현이 복잡하고, 속도가 상대적으로 낮은 단점이 있다. Tendermint는 DPoS 와 PBFT기반의 합의 알고리즘이다. PBFT 합의 알고리즘 과정을 통해 악의적인 노드가 네트워크에 참여하더라도 합의 과정이 진행될 수 있는 구조를 가진다. 또한 블록 생성 프로토 콜에 참여한 블록 생성자들에게 예치금을 요구하여 네트워크에서 악의적인 행동에 대한 처벌을 수행함으로, nothing at stake문제를 해결했고, 네트워크에 대한 안정 성을 높인다. 가용성을 중시하는 Casper와는 다르게 더욱 높은 안정성을 제공하는데 목적을 두고 있다. 하지만, 33% 이상의 악의적 투표권에 의해 네트워크가 지연될 수 있고 66% 이상의 악의적 투표권에 의해 무너질 수 있다는 PBFT의 문제가 여전히 존재한다. 이외 에도 PoE(Proof of Existence), PoET(Proof of Elapsed Time), PoI(Proof of Importance), Stellar, Ethereum PoA(Clique) 등 많은 합의 알고리즘들이 있으며, 응용되는 분야(금융, 물류, 유통, 항 만, 자동차, 데이터 통신, 공유, 인증 등)에 따라 블록체인 시스템의 목적에 따라 파생되고 있다.
본 발명의 일 목적은 종래의 리더(Leader) 모델에서 라운드 별 유일 리더 선택 문제 및 선택된 리더가 악성 리더인 경우의 문제를 해결할 수 있는 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템을 제공하는데 있다.
또한, 본 발명은 사이드 체인(Side chain)의 발생을 막고 Finality를 보장할 수 있는 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템을 제공하는데 있다.
또한, 본 발명의 다른 목적은 네트워크 자원을 효율적으로 사용하여 빠른 트랜잭션 승인을 얻도록 한 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템을 제공하는데 있다.
또한, 본 발명의 또 다른 목적은 사이너 노드들에 대한 네트워크의 공격자의 직접적인 공격에 강건한 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템을 제공하는데 있다.
또한, 본 발명의 또 다른 목적은 프로듀서 노드(리더) 선택 규칙을 제시하지 않는 종래의 PBFT 합의 알고리즘과는 달리 시간의 흐름에 따라 라운드와 허가 기간의 개념을 통해 프로듀서 노드를 관리할 수 있도록 한 시스템을 제공하는데 있다.
실시예는, 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법으로써, 매 라운드 별 미리 정해진 시점에 블록 생성 지위를 가지는 프로듀서 노드로 승격될 수 있는 상기 복수의 노드들 중 어느 하나의 제1 노드가 제N 라운드에서 후보 블록을 수신하는 단계; 수신된 후보 블록이 유효 후보 블록인지 판단 하는 단계; 상기 유효 후보 블록이 미승인 블록인지 판단 하는 단계; 및 상기 미승인 블록이 최초 수신 후보 블록 인지 판단하여 상기 미승인 블록에 대한 승인 투표 여부를 결정하는 단계;를 포함하고, 상기 최초 수신 후보 블록은 상기 제1 노드가 상기 제N 라운드 내에서 최초 수신한 후보 블록인 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수 있다.
다른 측면에서, 상기 미승인 블록을 다른 노드로 전송 하는 단계; 및 상기 최초 수신 후보 블록을 승인하는 투표 정보를 다른 노드로 전송 하는 단계;를 더 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 제N 라운드에서 생성된 미승인 블록들 중 투표수가 기 설정치 이상인 미승인 블록을 승인 블록으로 인정하는 단계;를 더 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 제N 라운드에서 프로듀서 노드로 승격된 모든 노드는 제N+1 라운드에서 프로듀서 노드 지위가 상실되고, 상기 승인 블록으로 인정된 후보 블록을 생성한 노드의 다음 순번 노드가 제N+1 라운드에서 첫번째 프로듀서 노드로 승격하는 단계;를 더 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 제N 라운드에서 복수의 미승인 블록 중 투표수가 기 설정치 이상인 미승인 블록이 존재하지 않는 경우 재투표 라운드가 개시되는 단계; 및 상기 재투표 라운드 기간 동안 미리 설정된 우선순위에 따라 상기 복수의 미승인 블록에 대한 재투표가 진행되는 단계;를 더 포함하고 상기 재투표 라운드 동안 새로운 후보 블록의 생성을 중단하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 재투표가 진행되는 단계는, 투표 가능한 복수의 노드들이 상기 복수의 미승인 블록 중 기 설정치 이상의 투표수 를 얻은 미승인 블록에 대해 승인 재투표하는 단계;를 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 재투표가 진행되는 단계는, 상기 복수의 미승인 블록 중 기 설정치 이상의 투표수를 얻은 복수의 미승인 블록이 존재하는 경우, 상기 복수의 미승인 블록 각각을 생성한 노드들 중 최초 승격 노드가 생성한 미승인 블록에 대해 승인 재투표하는 단계;를 더 포함하고, 상기 최초 승격 노드는 상기 제N 라운드에서 프로듀서 노드로의 승격 순서가 가장 빠른 노드인 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 유효 후보 블록인지 판단하는 단계는, 상기 수신된 후보 블록을 생성한 노드의 승격 여부를 판단하는 단계; 및 상기 수신된 후보 블록이 승격된 노드가 생성한 블록인 경우 상기 수신된 후보 블록을 유효 후보 블록으로 인정하는 단계;를 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 유효 후보 블록이 미승인 블록인지 판단하는 단계는, 상기 유효 후보 블록에 대한 기 설정치 이상의 투표 결과를 포함하는 다음 블록의 존부를 판단하는 단계; 및 상기 다음 블록이 존재하는 경우 상기 유효 후보 블록을 승인 블록으로 인정하여 상기 분산 네트워크로 상기 승인 블록에 대한 동기화를 요청하는 단계;를 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법으로써, 매 라운드 별 미리 정해진 시점에 블록 생성 지위를 가지는 프로듀서 노드로 승격될 수 있는 상기 복수의 노드들 중 어느 하나의 제2 노드가 제N 라운드에서 승격되는 단계; 상기 제N 라운드 내에서 상기 제2 노드가 승격전 후보 블록의 수신 여부를 판단하는 단계; 승격전 후보 블록의 미수신시, 새로운 블록이 연결될 상기 블록체인 상의 마지막 블록 내의 투표 정보를 포함하는 후보 블록을 생성 하는 단계; 생성된 후보 블록에 투표하는 단계; 및 상기 후보 블록과 투표 정보를 다른 노드로 전송하는 단계;를 포함하고, 상기 새로운 블록은 상기 제N 라운드에서 승인되는 승인 블록인 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 상기 제N 라운드에서 승격된 상기 제2 노드는 다른 노드가 생성한 후보 블록을 수신하는 단계; 수신된 후보 블록이 유효 후보 블록인지 판단하는 단계; 상기 유효 후보 블록이 미승인 블록인지 판단하는 단계; 및 상기 미승인 블록을 다른 노드로 전송하는 단계;를 더 포함하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
또 다른 측면에서, 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들이 합의 규칙에 따라 합의 데이터의 생성 및 전파하여 합의를 이루기 위한 방법으로써, 상기 합의 데이터는 후보 블록 데이터 및 투표 데이터 중 적어도 하나를 포함하고, 상기 합의 규칙에 따라 기 설정치 이상의 투표수를 얻은 후보 블록 데이터를 포함하는 후보 블록을 승인 블록으로 합의하고, 상기 승인 블록은 상기 블록체인 상에 업데이트되는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
상기 합의 규칙은 노드는 수신된 합의 데이터를 검증하고, 투표권을 보유한 노드는 수신된 후보 블록 데이터를 승인하는 투표 데이터를 생성하고, 블록 생성권을 보유한 노드는 후보 블록 데이터를 생성하고, 노드는 자신이 생성한 후보 블록 데이터를 승인하는 투표 데이터를 생성하고, 노드는 검증된 합의 데이터 및 생성한 합의 데이터를 전파하고, 매 라운드 별 복수의 노드들이 미리 정해진 순서에 따라 미리 정해진 시점에 프로듀서 노드의 지위로 승격하고, 상기 프로듀서 노드의 지위는 승격 시점의 라운드의 종료 시점까지 유지되고, 상기 프로듀서 노드 지위의 승격 전 후보 블록 데이터를 미수신하는 규칙을 포함할 수 있다.
또 다른 측면에서, 상기 합의 데이터는 후보 블록 데이터 및 투표 데이터 중 적어도 하나를 포함하고, 상기 합의 데이터를 수신한 노드로 하여금 상기 합의 데이터를 검증하게 하고, 상기 합의 데이터를 검증한 제1 사이너 노드로 하여금 상기 검증된 합의 데이터 내의 적어도 일부 데이터를 다른 노드로 전송하게 하고, 상기 합의 데이터를 검증한 제2 사이너 노드로 하여금 검증된 후보 블록 데이터를 승인하는 투표 데이터를 생성하게 하고, 상기 제2 사이너 노드로 하여금 상기 검증된 합의 데이터 내의 적어도 일부 데이터 및 생성한 투표 데이터 중 적어도 하나를 다른 노드로 전송하게 하고, 승격 전 상기 후보 블록 데이터를 미수신한 프로듀서 노드로 하여금 후보 블록 데이터를 생성하게 하고. 상기 프로듀서 노드로 하여금 생성한 후보 블록 데이터를 승인하는 투표 데이터를 생성하게 하는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 제공할 수도 있다.
본 발명에 따른 실시예는 종래의 리더(Leader) 모델에서 라운드 별 유일 리더 선택 문제 및 선택된 리더가 악성 리더인 경우의 문제를 해결할 수 있다.
또한, 실시예는 사이드 체인(Side chain)의 발생을 막고 Finality를 보장할 수 있다.
또한, 실시예는 네트워크 자원을 효율적으로 사용하여 빠른 트랜잭션 승인을 얻을 수 있다.
또한, 실시에는 사이너 노드들에 대한 네트워크의 공격자의 직접적인 공격에 강건한 블록체인 시스템을 제공할 수 있다.
또한, 실시예는 시간의 흐름에 따라 라운드와 허가 기간의 개념을 통해 프로듀서 노드를 관리할 수 있도록 한 시스템을 제공할 수 있다.
또한, 실시예는 네트워크 딜레이(Propagation delay)에 큰 영향을 받는 타임아웃(Timeout) 방식을 가진 합의 알고리즘이 아닌 각 사이너가 상대 시간에 따라 비동기적으로 투표와 블록 생성을 진행하도록 하고, 반드시 하나의 라운드 안에서 블록이 결정되도록 함으로써 라운드에 대한 상대 시간의 제한이 없고 유일 프로듀서 노드를 선출하지 않도록 하여 빠른 합의가 가능케 한다.
또한, 실시예는 블록 생성자 경쟁 방식을 통해 악성 리더 문제를 해결할 수 있다.
또한, 실시예는 컨소시움(Consortium)이나 프라이빗(Private) 환경에 최적화된 합의 알고리즘을 제공할 수 있다.
또한, 실시예는 라운드별로 허가 기간에 프로듀서 노드가 생성되는 방식을 통해 프로듀서 노드가 블록 생성을 게을리하는 경우 블록체인 시스템이 멈추는 현상을 해결할 수 있고 다량의 블록 생성자가 존재하는 것을 방지할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 명확하게 이해될 수 있다.
도 1은 복수의 노드들의 분산 네트워크로 구성된 블록체인 시스템에 대한 개관을 나타낸다.
도 2는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 설명하기 위한 시간 흐름에 따른 노드들의 승격을 나타낸 타임테이블이고, 도 3은 블록체인에 기록된 데이터의 종류를 설명하기 위한 개념도이다.
도 4는 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써 노드가 다른 노드로부터 후보 블록을 수신했을 때의 합의를 이루기 위한 방법에 관한 것이다.
도 5는 본 발명의 실시예에 따른 합의를 이루는 방법에 대한 흐름도로써 노드가 다른 노드로부터 투표 정보를 수신했을 때 블록체인 시스템이 어떻게 구동되는지를 나타내는 것이다.
도 6은 본 발명의 실시예에 따른 합의를 이루기 위한 방법의 흐름도로써 사이너 노드가 프로듀서 노드로 승격된 상태에서 합의 데이터가 네트워크 상에서 전파될 때 합의를 이루기 위한 방법에 관한 것이다.
도 7은 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써, 후보 블록들에 대한 투표수를 확인하여 후보 블록을 승인 블록으로 인정하는 단계의 흐름도이다.
도 8은 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써, 재투표 라운드를 설명하기 위한 흐름도이다.
도 9는 비잔틴 사이너 노드의 중복 투표를 설명하기 위한 개념도이다.
도 2는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 설명하기 위한 시간 흐름에 따른 노드들의 승격을 나타낸 타임테이블이고, 도 3은 블록체인에 기록된 데이터의 종류를 설명하기 위한 개념도이다.
도 4는 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써 노드가 다른 노드로부터 후보 블록을 수신했을 때의 합의를 이루기 위한 방법에 관한 것이다.
도 5는 본 발명의 실시예에 따른 합의를 이루는 방법에 대한 흐름도로써 노드가 다른 노드로부터 투표 정보를 수신했을 때 블록체인 시스템이 어떻게 구동되는지를 나타내는 것이다.
도 6은 본 발명의 실시예에 따른 합의를 이루기 위한 방법의 흐름도로써 사이너 노드가 프로듀서 노드로 승격된 상태에서 합의 데이터가 네트워크 상에서 전파될 때 합의를 이루기 위한 방법에 관한 것이다.
도 7은 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써, 후보 블록들에 대한 투표수를 확인하여 후보 블록을 승인 블록으로 인정하는 단계의 흐름도이다.
도 8은 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써, 재투표 라운드를 설명하기 위한 흐름도이다.
도 9는 비잔틴 사이너 노드의 중복 투표를 설명하기 위한 개념도이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있다. 이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다. 또한, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다. 또한, 도면에서는 설명의 편의를 위하여 구성 요소들이 그 크기가 과장 또는 축소될 수 있다. 예컨대, 도면에서 나타난 각 구성의 크기 및 두께는 설명의 편의를 위해 임의로 나타내었으므로, 본 발명이 반드시 도시된 바에 한정되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
본 발명의 실시예를 구체적으로 설명하기에 앞서 명세서에 등장하는 용어를 정의한다.
사이너 노드(Signer Node): 블록의 유효성을 검증할 수 있는 권한을 가질 수 있다. 또한, 프로듀서 노드로 승격될 수 있다.
프로듀서 노드(Produser Node): 블록을 생성할 수 있는 권한을 가질 수 있다. 허가 기간에 사이너 노드의 지위에서 프로듀서 노드의 지위로 승격될 수 있다. 또한, 사이너 노드의 역할을 겸할 수 있다.
허가 기간(Permission periode): 라운드에서 각 사이너 노드에게 프로듀서 노드의 승격이 발생하는 시간 간격이다.
라운드(Round): 노드들 간 합의에 따라 블록이 결정되는 단위를 의미한다. 그리고 라운드는 시간 축 상의 시간 개념을 따른다.
상대 시간(Relative time): 각 사이너 노드가 인식하는 상대 시간이다.
절대 시간(Absoulte time): 모든 사이너 노드가 공유하는 현실의 시간으로써 절대 시간이다.
스탑 더 월드(Stop the world): 블록 혹은 투표 전파 과정에서 문제가 발생하여 네트워크의 동작이 멈추는 시점이다.
투표(Vote): 하나의 라운드 내에서 생성된 후보 블록들 중 유효한 하나의 블록(유일 블록)을 선택하기 위해 사이너 노드들이 주고받는 투표이다. 예시적으로 어떠한 블록에 2/3 이상의 투표가 수집되면 그 블록이 선택될 수 있다.
후보 블록(Candidate Block): 체인의 마지막 블록이 되며 최종적으로 승인 블록으로 인정될 수 있는 블록으로 정의된다. 아직 승인되지 않은 후보 블록을 의미하며 매 라운드별로 생성된 후보 블록들 중 어느 하나의 후보 블록만이 승인 블록으로 인정될 수 있다.
승인 블록: 후보 블록들 중 합의에 의해 최종 승인된 후보 블록이다.
정식 블록(Canonical Block): 이후 절대로 롤백되지 않을 것이라고 보장되는 블록을 의미한다. 승인 블록이 이후 절대로 롤백되지 않을 것으로 보장되면 정식 블록이 된다. 승인 블록과 정식 블록의 구분은 때때로 모호할 수 있다. 승인 블록의 다음으로 연결된 승인 블록이 존재하는 경우 해당 승인 블록은 정식 블록이 될 수 있다. 정식 블록의 인정에 엄격성을 더한다면 승인 블록 다음으로 연결된 2개 이상의 승인 블록이 존재할 때 비로소 해당 승인 블록은 정식 블록이 될 수 있다.
페런트 블록(Parent Block): 임의의 블록이 참조하는 자신 바로 앞의 블록이다.
리더 블록(leader Block): 하나의 라운드에서 만들어진 여러 개의 후보 블록들 중 각 노드가 판단하기에 승인 블록이 될 수 있는 가장 유력한 블록이다.
비잔틴 노드(Byzantine Node): 규칙을 따르지 않는 사이너 노드 혹은 프로듀서 노드를 의미한다. 규칙을 따르는 사이너 노드 혹은 프로듀서 노드 일지라도, 시스템 다운 등으로 할 일을 해주지 못하면 비잔틴 노드로 취급될 수 있다. 정직한 사이너 노드는 자신이 정직하다는 것을 증명하기 위해 최선을 다해야 한다. 여기서의 최선이라 함은 합의 데이터를 수신한 노드가 합의 데이터의 유효성을 검증하고 합의 데이터를 다른 노드로 전파하는 컴퓨팅 활동을 다하는 것이다. 또한, 최선이라 함은 합의 데이터를 생성한 노드가 이를 다른 노드로 전파하는 컴퓨팅 활동을 다하는 것이다. 또한, 최선의 컴퓨팅 활동량은 노드 자신의 컴퓨팅 파워에 따라서 달라질 수 있다.
2/3 투표수: 투표 가능한 노드들 중 2/3만큼의 수의 노드가 투표권을 행사 것을 의미한다.
메이저 그룹(Major group): 라운드에서 같은 블록에 투표한 사이너 노드들 중 최상위 그룹을 의미한다. 또한 승인 그룹(Canonical group)의 후보를 의미한다.
도 1은 복수의 노드들의 분산 네트워크로 구성된 블록체인 시스템에 대한 개관을 나타낸다.
이하에서 설명하는 시스템은 네트워크상에서 피어투피어(peer-to-peer) 네트워크 아키텍처 구조를 이룬다. 즉, 시스템에 참여하는 사용자들은 모두 등등한 지위를 가지고 있고 특별한 노드는 존재하지 않으며 모든 노드(노드 1 내지 노드 n)가 네트워크 서비스를 구성하는 역할을 분담한다. 네트워크상의 여러 노드(100)는 서로 등등한 토폴로지를 가지면서 그물망 네트워크에서 서로 연결된다. 네트워크 내에 있는 노드들이 서로 등등한 위치에 있다고 할지라도 지원하는 기능에 따라 각자의 역할은 상이할 수 있다.
모든 노드는 네트워크 내에 라우팅 기능을 보유하고 있으며, 다른 기능을 포함할 수도 있다. 모든 노드는 거래와 블록에 관한 데이터를 비롯하여 각종 데이터를 검증하고 전파하며, 이웃 노드들과의 연결을 유지하는 기능을 수행할 수 있다. 여기서의 거래라 함은 금전적인 거래나 가상 화폐의 거래뿐만 아니라 스마트컨트렉트에 따른 각종 거래를 모두 포함한다. 따라서, 본 명세서에서의 거래의 의미가 특정한 거래에 국한되지 않음을 주의해야 한다.
사용자는 일반 개인에서부터 조직, 커뮤니티, 대규모 집단에 이르기까지 다양할 수 있고 다른 유형의 개체를 포함할 수 있다.
네트워크에 연결된 노드들(100)은 사이너 노드(110)와 프로듀서 노드(120)가 될 수 있고, 기타 프로토콜을 가동하는 노드들을 연결시키는 포로토콜 게이트웨이가 포함될 수도 있다.
새로운 노드가 시스템에 참여하기 위해 먼저 네트워크상에 존재하는 다른 노드들을 검색할 수 있다. 이러한 프로세스를 시작하기 위해서 새로운 노드는 기존에 네트워크상에 존재하는 노드를 최소 한 개는 검색해서 연결해야 할 수 있다. 새로운 노드가 이미 알고 있는 이웃 노드에 연결되기 위해 각 노드는 특정 번호의 포트로 TCP 커넥션을 연결하거나 대안 포트로 연결할 수 있다. 새로운 노드는 연결 요청 메시지를 이웃 노드로 전송하고 이웃 노드는 연결 요청을 승인할 경우 승인 메시지를 새로운 노드에 전송함으로써 해당 요청에 응답할 수 있다. 하나 이상의 연결이 성립되고 나면, 새로운 노드는 자신의 IP 주소가 담겨 있는 어드레스 메시지를 이웃 노드들에게 전송할 수 있다. 차례로 이웃 노드들은 전송받은 어드레스 메시지를 그들의 이웃 노드들에게 전송함으로써 새롭게 연결된 노드가 더 잘 알려지고 다른 노드들과 더 잘 연결되게 할 수 있다. 또한, 새롭게 연결된 노드는 어드레스 요청 메시지를 이웃 노드들에게 보내서 다른 이웃 노드들의 IP 주소 목록을 다시 전송해줄 것을 요청할 수 있다. 이러한 방식을 통해 노드는 자신과 연결되어 있는 이웃 노드를 검색할 수 있고 다른 노드들이 자신을 검색할 수 있도록 자신의 존재를 네트워크상에 홍보할 수 있다.
복수의 노드들(100) 중 적어도 일부의 노드는 블록체인 전체의 복사본 또는 적어도 블록체인의 부분집합에 해당하는 복사본을 가질 수 있다.
블록체인은 트랜잭션(거래)으로 구성되는 변경 불가능한 블록으로 구성된 분산형 컴퓨터 시스템으로 구성된다. 블록체인을 구성하는 각 블록은 이전 블록의 해시를 포함하므로 블록이 함께 연결되어 처음부터 블록체인에 쓰여진 모든 트랜잭션의 레코드를 생성한다. 블록은 이전 블록에 종속적으로 연결되어 있으므로 해체, 수정 및 재구성이 거의 불가능하고 노드들이 각자 보유하므로 분산되고 견고하다. 일부 실시예에서, 하나의 블록에는 적어도 하나의 거래 내역이 기록된다. 거래 내역은 해쉬로 계산되어 위변조가 발생되지 않도록 구성될 수 있다. 각 블록과 거래는 해쉬 값, 데이터 발생 시점의 타임스탬프(timestamp)를 관리함으로써 위변조를 막고 거래 내역을 추적할 수 있다. 또한, 가상 화폐 등과 같인 금전적인 수단의 거래 관계에 있어서 노드들(100)은 블록체인 원장과 지갑 어플리케이션을 저장하여 사용자가 안전하고 신뢰성 있는 방식으로 네트워크를 통한 거래나 다른 관련 기능을 수행할 수 있게 한다.
각각의 노드는 모든 컴퓨팅 언어를 읽을수 있도록 서버, 인터페이스, 시스템, 데이터베이스, 에이전트, 피어, 엔진, 컨트롤러 또는 개별적으로 또는 집합적으로 작동하는 기타 유형의 컴퓨팅 장치를 포함하거나 컴퓨팅 장치들의 적절한 조합으로 구성될 수 있다. 컴퓨팅 장치는 비일시적인 컴퓨터 판독 가능 저장 매체(예를 들어, 하드 드라이브, 솔리드 스테이트 드라이브, RAM, 플래시, ROM 등)상에 저장된 소프트웨어 명령을 실행하도록 구성된 프로세서를 포함할 수 있다. 바람직하게, 컴퓨팅 장치가 후술하는 각종 기능을 제공할 수 있도록 소프트웨어 명령이 구성된다. 또한, 개시된 기술들은 프로세서로 하여금 개시된 단계들을 실행하게 하는 소프트웨어 명령들을 저장하는 비일시적 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 바람직하게는, 다양한 서버, 시스템, 데이터베이스 그리고 인터페이스는 HTTP, HTTPS, AES, 공개/개인키 교환, 웹 서비스 API, 알려진 금융 거래 프로토콜 또는 다른 전자 기반의 표준화된 프로토콜 또는 알고리즘을 사용하여 데이터를 교환할 수 있다. 바람직하게, 데이터 교환은 패킷 교환 네트워크, 인터넷, LAN, WAN, VPN 또는 다른 유형의 패킷 교환 네트워크를 통해 수행될 수 있다.
도 2는 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법을 설명하기 위한 시간 흐름에 따른 노드들의 승격을 나타낸 타임테이블이고, 도 3은 블록체인에 기록된 데이터의 종류를 설명하기 위한 개념도이다.
도 2를 참조하면, 타임테이블은 라운드별로 구분될 수 있다. 즉, 하나의 라운드가 개시되고 개시된 라운드가 종료되면 다음 라운드가 시작된다. 라운드들 각각의 시간 간격은 동일할 수 있으나 이에 제한되는 것은 아니다. 또한, N 라운드와 N+1 라운드 사이에는 재투표 라운드가 존재할 수 있다. 재투표 라운드는 N 라운드에서 미합의 상태일 때 발생한다. 재투표 라운드의 시간 간격은 미합의 상태가 합의 상태로 변경되면 종료될 수 있다. 그리고 재투표 라운드가 종료되면 다음 라운드인 n+1 라운드가 개시될 수 있다. 또한, 다음 라운드인 N+1 라운드는 재투표가 종료되기 전까지는 개시되지 않을 수 있다.
매 라운드 별로 복수의 허가 기간이 존재할 수 있다. 허가 기간의 개시 시점에 사이너 노드가 프로듀서 노드로 승격되고 프로듀서 노드의 지위는 허가 기간의 종료 시점까지 지속될 수 있다. 허가 기간의 종료 시점은 해당 라운드의 종료 시점과 일치할 수 있다. 프로듀서 노드로 승격 가능한 노드들 각각의 허가 기간의 개시 시점은 서로 상이할 수 있다. 따라서, 매 라운드 별로 프로듀서 노드의 지위의 지속 기간은 프로듀서 노드들 마다 상이할 수 있다.
네트워크에 참여한 복수의 노드들(100) 중 적어도 일부의 노드들은 사이너 노드(110)로 배정될 수 있다. 그리고, 사이너 노드(110) 중 적어도 일부의 노드들은 라운드 내에서 프로듀서 노드(120)로의 승격 지위를 가진다. 일부 실시예에서, 사이너 노드(110)들 중 적어도 일부는 순서대로 프로듀서 노드(120)로 승격될 수 있다. 예를 들어, 제1 내지 제n 사이너 노드(110)들은 순서대로 자신의 허가 기간의 개시 시점에 프로듀서 노드(120)로 승격될 수 있다. 따라서, 제1 사이너 노드가 승격된 이후 제2 사이너 노드가 승격되고 그 후 제3 사이너 노드가 승격될 수 있다. 특정 라운드에서 승격된 노드들은 해당 라운드가 종료되면 승격 지위를 일제히 상실할 수 있다. 일부 실시예에서, 동일한 시간 간격을 두고 노드들이 승격될 수 있으나 이에 제한되는 것은 아니다.
또한, 사이너 노드(110) 중 프로듀서 노드(120)로 승격할 수 있는 사이너 노드(110)를 특별히 제한할 수 있는 것은 아니다. 즉, 전 라운드에 걸쳐 모든 사이너 노드(110) 들은 프로듀서 노드(120)의 승격할 수 있다.
다음 라운드인 N+1 라운드에서는 N 라운드에서 제일 마지막에 승격된 프로듀서 노드의 다음 순번인 사이너 노드가 첫번째의 프로듀서 노드가 될 수 있다.
다른 측면에서, 도 2에 도시된 바와 같이 N 라운드에서 승인 블록으로 인정된 후보 블록을 생성했던 프로듀서 노드의 다음 순번의 사이너 노드 또는 프로듀서 노드가 N+1 라운드의 첫번째 승격 노드가 될 수 있다. 즉, 이전 라운드의 승인 블록을 생성한 프로듀서 노드의 다음 순번 노드가 다음 라운드의 첫번째 프로듀서 노드가 된다. 이는, 다음 라운드에서 승격될 노드의 사전 예측을 어렵게 만들어 시스템의 보안성을 향상시킨다.
한편, 리더 블록의 타임스탬프(timestamp)를 기준으로 허가 기간에 따라 사이너 노드들의 프로듀서 승격 시점을 결정할 수 있다. 그리고 사이너 노드들은 상대 시간을 사용하여 승격 시점을 스스로 판단할 수 있다. 그리고, 절대 시간을 기준으로 보면 사이너 노드들은 서로 다른 프로듀서 노드 목록을 가지고 있을 수 있다. 또한, 라운드에서 시간이 지날수록 더 많은 프로듀서 노드가 활동하게 된다.
도 3을 참조하면, 블록체인을 구성하는 각 블록은 공개 장부인 블록체인에 거래들을 포함시키기 위해 한데 합쳐 놓은 컨테이너 데이터 구조가 될 수 있다. 블록은 메타데이터를 담고 있는 헤더와 그 뒤에 블록 크기를 결정하는 거래 목록이 길게 나열될 수 있다. 블록 헤더의 크기는 수십바이트인 반면 거래의 평균 크기는 최소 수백바이트가 될 수 있으나 이에 제한되는 것은 아니다. 평균적으로 각 블록에는 수백개의 거래가 담길 수 있으나 이에 제한되는 것은 아니다.
블록 헤더는 블록 메타데이터들의 집합으로 구성될 수 있다. 블록 헤더에는 현재 블록이 블록체인에 있는 이전 블록과 연결되었음을 나타내는 이전 블록 해시값이 있을 수 있다. 또한, 블록 헤더에는 타임스탬프가 있을 수 있다. 또한, 블록 헤더에는 머클 트리 루트가 있을 수 있다. 머클 트리 루트는 블록 내에서 거래 전부를 효율적으로 요약하는데 사용되는 데이터 구조이다.
블록의 주요 식별자는 디지털 지문 역할을 하는 암호화 해시가 될 수 있다. 예를 들어, 암호화 해시는 SHA256 알고리즘을 통해 블록 헤더를 2회 해싱해서 얻어질 수 있다. 블록 해시는 유일하고 확실한 방법으로 해당 블록을 식별할 수 있도록 하고, 모든 노드는 블록 헤더를 간단히 해싱함으로써 독립적으로 블록 해시값을 얻을 수 있다. 블록을 식별할 수 있는 두 번째 방법은 블록체인 내에서의 위치를 파악하는 것이다. 즉, 블록 높이를 살펴보는 것이다. 생성된 첫 번째 블록은 블록 높이가 0이고 다음 블록에서 참조하는 블록 해시값은 첫 번째 블록을 가리키고 있다.
또한, 블록 헤더에는 이전 블록의 투표 정보가 포함될 수 있다. 즉, 이전 블록이 미리 설정된 투표 수 이상의 투표를 얻어 최종 승인된 블록임을 확인할 수 있는 이전 블록과 관련된 투표 정보가 현재 블록의 블록 헤더에 포함될 수 있다.
복수의 노드들(100)은 합의 데이터를 생성할 수 있고, 복수의 노드들(100) 사이에서 합의 데이터가 전파될 수 있다.
합의 데이터는 후보 블록 데이터를 포함할 수 있다. 후보 블록 데이터는 후보 블록을 구성하는 데이터이다.
합의 데이터는 투표 데이터를 포함할 수 있다. 투표 데이터는 투표 정보를 구성하는 데이터이다.
매 라운드 별로 생성된 합의 데이터는 복수의 노드들(100) 사이에서 전파되면서 합의를 이루게 된다. 상세하게는, 매 라운드 별로 생성된 복수의 후보 블록들 중에서 어느 하나의 후보 블록을 승인 블록으로 인정하는 합의가 이루어진다. 합의를 위한 의사 결정은 복수의 노드들(100) 각각의 투표에 의해 이루어진다. 즉, 복수의 후보 블록들 중에서 가장 많은 투표수를 얻은 후보 블록이 다른 측면에서. 미리 설정된 기준치 이상의 투표수를 얻은 후보 블록이 승인 블록으로 합의된다. 여기서의 미리 설정된 기준치 이상의 투표수는 투표에 참여할 수 있는 노드들의 개수에서 2/3 만큼의 투표수가 될 수 있으나 이에 제한되는 것은 아니다. 이렇게 합의된 승인 블록은 블록체인 상에 업데이트되면서 기존의 블록체인 상의 마지막 블록에 이어서 연결된다.
합의를 위한 의사 결정은 미리 설정된 합의 규칙에 따라 이루어진다. 블록체인 시스템에 참여하기를 원하는 노드가 블록체인 시스템에 접속하면 블록체인 구동을 위한 프로그램을 다운로드하여 자신의 노드에 설치하게 된다. 그리고, 블록체인 구동을 위한 프로그램은 해당 노드가 블록체인 네트워크 상에서 합의 규칙에 따라 구동할 수 있도록 한다. 따라서, 블록체인 구동을 위한 프로그램은 합의 규칙에 따라서 해당 노드가 블록체인 시스템의 일 구성 요소로써 구동하도록 프로그램될 수 있다.
도 4는 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써 노드가 다른 노드로부터 후보 블록을 수신했을 때의 합의를 이루기 위한 방법에 관한 것이다.
노드가 수신한 합의 데이터는 후보 블록 데이터가 될 수 있다.
도 4를 참조하면, 본 발명의 실시예에 따른 합의를 이루기 위한 방법(S100)에서 노드는 수신한 후보 블록 데이터(S110) 및 블록체인에 기초하여 수신한 후보 블록 데이터의 유효성을 검증할 수 있다(S120). 즉, 노드는 수신된 후보 블록이 유효 후보 블록인지 판단할 수 있다. 상세하게, 노드는 수신된 후보 블록을 생성한 노드가 승격된 프로듀서 노드의 지위 하에서 생성한 노드인지를 판단할 수 있다. 이를 만족하지 않는 경우, 노드는 수신한 후보 블록을 폐기할 수 있다(S121). 이를 만족하는 경우라면, 노드는 수신된 후보 블록을 유효 후보 블록으로 인정할 수 있다. 다른 측면에서, 노드는 수신한 후보 블록이 과거 라운드에서 생성된 후보 블록에 불과하고 과거 라운드에서 생성된 다른 후보 블록이 블록 체인 상에서 승인 블록으로 인정된 경우라면 수신한 후보 블록을 폐기할 수 있다(S121).
노드가 수신한 후보 블록이 유효 후보 블록으로 인정되면, 노드는 유효 후보 블록이 미승인 블록인지를 판단할 수 있다(S130). 예시적으로, 노드는 유효 후보 블록에 대한 기설정치 이상의 투표 결과를 포함하는 다음 블록의 존부를 판단한다. 그리고, 다음 블록이 존재하는 경우 해당 유효 후보 블록을 승인 블록으로 인정하여 분산 네트워크 상에 해당 승인 블록의 동기화를 요청할 수 있다(S131). 일부 실시예에서, 유효 후보 블록에 대한 2/3 이상의 투표가 수집되고 이를 페런트 블록으로 하여 그 투표를 포함시킨 다음 블록이 존재할 경우 유효 후보 블록은 승인 블록으로 인정될 수 있다.
다른 측면에서, 노드가 수신된 후보 블록이 현재 라운드에서 승인 블록으로 인정된 블록이라면 분산 네트워크 상에 해당 승인 블록의 동기화를 요청할 수도 있다. 즉, 노드가 수신된 후보 블록이 현재 라운드에서 기설정치의 승인 투표수를 얻은 승인 블록이라면 네트워크로 해당 승인 블록의 동기화를 요청할 수 있다. 아울러, 현재 라운드에서 투표권을 행사하지 않은 노드(그 전에 어떠한 후보 블록을 수신하지 않은 노드)라 할지라도 현재 라운드에서 승인된 승인 블록을 수신할 수 있다. 이러한 현상은 네트워크의 상태(Propagation delay 등)에 따라서 현재 라운드에서 이미 특정 후보 블록이 승인 블록으로 인정되었음에도 모든 노드들이 일시에 해당 승인 블록의 존재를 알 수 있는 것은 아니기 때문이다.
노드가 유효 후보 블록을 미승인 블록으로 판단하면, 노드는 현재 라운드에서의 최초 수신 후보 블록인지 여부를 판단할 수 있다(S140). 즉, N 라운드에서 노드가 수신한 후보 블록이 미승인 블록이면서도 N 라운드에서 최초로 수신한 미승인 블록인지 여부를 판단할 수 있다.
미승인 블록이 최초 수신 후보 블록이 아니라면 노드는 미승인 블록을 다른 노드로 전파할 수 있다(S141). 다른 측면에서, 미승인 블록이 최초 수신 후보 블록이라면 노드는 최초 수신 후보 블록을 승인하는 투표 정보를 생성할 수 있다(S150). 그리고 노드는 최초 수신 후보 블록 및 투표 정보 중 적어도 하나를 다른 노드로 전파할 수 있다(S160).
한편, 각 라운드 마다 노드들 각각은 자신의 투표권을 1회 행사할 수 있다. 그리고 노드들 각각은 각 라운드에서 최초 수신한 후보 블록에 대해서만 자동으로 투표하게 된다. 특정 라운드에서 투표권을 행사한 노드가 다음 라운드가 되기 전 다시 후보 블록을 수신하고 수신된 후보 블록이 미승인 블록이라고 하여도 해당 후보 블록에 다시 투표하지 않는다.
도 5는 본 발명의 실시예에 따른 합의를 이루는 방법에 대한 흐름도로써 노드가 다른 노드로부터 투표 정보를 수신했을 때 블록체인 시스템이 어떻게 구동되는지를 나타내는 것이다.
도 5를 참조하면, 본 발명의 실시예에 따른 합의를 이루기 위한 방법(S200)에서 노드가 수신한 합의 데이터는 투표 데이터가 될 수 있다.
노드가 다른 노드로부터 투표 데이터를 포함하는 투표 정보를 수신할 수 있다(S210).
노드는 수신한 투표 데이터의 유효성을 검증할 수 있다(S220). 즉, 노드는 다른 노드로부터 수신한 투표 정보의 유효성을 검증할 수 있다. 상세하게, 노드는 수신된 투표가 현재 라운드에서 생성된 후보 블록에 대한 투표 정보인지를 판단할 수 있다. 노드는 수신된 투표가 과거 라운드에서 생성된 후보 블록에 대한 투표 정보라면 해당 투표 정보를 폐기할 수 있다(S221).
이와 달리, 노드가 수신한 투표 정보가 현재 라운드에서 생성된 후보 블록에 대한 투표인 경우라면 노드는 수신된 투표 정보를 다른 노드로 전파할 수 있다(S230).
한편, 투표 정보는 블록넘버, 블록해시, 타임스탬프, 사이너 노드의 고유 식별정보, 노드의 서명 정보, 재투표 정보를 포함할 수 있다. 상세하게, 특정 후보 블록을 승인하는 투표 정보인 경우 블록넘버는 상기 특정 후보 블록을 지칭하는 넘버가 되고, 블록해시는 상기 특정 후보 블록의 블록해시가 된다. 그리고 노드의 고유 식별정보와 노드의 서명 정보는 상기 특정 후보 블록을 승인한 노드의 고유 식별정보 및 서명 정보가 될 수 있다. 또한, 재투표 정보는 투표 정보가 재투표 라운드에서 생성된 것인지를 구별 가능하게 하는 정보가 될 수 있다.
도 6은 본 발명의 실시예에 따른 합의를 이루기 위한 방법의 흐름도로써 사이너 노드가 프로듀서 노드로 승격된 상태에서 합의 데이터가 네트워크 상에서 전파될 때 합의를 이루기 위한 방법에 관한 것이다.
도 6을 참조하여, 본 발명의 실시예에 따른 합의를 이루기 위한 방법(S300)을 살펴본다.
허가 기간 동안 사이너 노드가 프로듀서 노드로 승격될 수 있다(S310).
N 라운드에서 프로듀서의 지위로 승격된 노드는 N 라운드 내에서 승격전 후보 블록을 수신하였는지를 판단할 수 있다(S320).
프로듀서 노드는 승격전에 이미 후보 블록을 수신하였다면, 새로운 후보 블록을 생성하지 않을 수 있다.
이와 달리, 프로듀서 노드는 승격전에 후보 블록을 수신한 바 없다면, 새로운 후보 블록을 생성할 수 있다(S330).
일부 실시예에서, 사이너 노드가 프로듀서 노드로 승격된 이후 네트워크 상태에 따라서 후보 블록을 생성하지 못할 수도 있다. 예를 들어, 컴퓨팅 파워 문제나 기타 원인으로 블록 체인 상의 이전 블록의 투표 정보를 수집할 수 없거나 거래를 수집할 수 없다면 후보 블록을 생성하지 못할 수도 있다. 따라서, 프로듀서 노드가 반드시 하나의 후보 블록을 생성하는 것으로 한정하는 것은 아니다.
프로듀서 노드는 후보 블록을 생성하면서 이전 라운드에서 승인된 승인 블록의 투표 정보를 새로 생성한 후보 블록에 포함시킬 수 있다. 또한, 프로듀서 노드는 새로운 후보 블록에 거래 내역을 포함시킬 수 있다. 이 경우, 프로듀서 노드는 네트워크 내의 거래 내역을 수집하여 수집된 거래 내역을 새로운 후보 블록에 포함시킬 수 있다.
프로듀서 노드는 새로운 후보 블록을 승인하는 투표 정보를 생성할 수 있다(S340). 즉, 프로듀서 노드는 자신이 생성한 후보 블록을 승인 블록으로 인정하는 승인 투표를 자동으로 수행하게 된다. 아울러, 프로듀서 노드가 이렇게 투표권을 행사하면 해당 라운드에서 재투표 라운드가 개시되지 않는한 더 이상의 투표를 진행하지 않게 된다.
프로듀서 노드는 새로운 후보 블록과 투표 정보 중 적어도 하나를 다른 노드로 전파할 수 있다(S350).
그 후, 프로듀서 노드가 다른 노드로부터 후보 블록을 수신(S360)하면 수신된 후보 블록의 유효성을 검증할 수 있다(S370). 프로듀서 노드는 유효성이 검증되지 않은 후보 블록을 폐기할 수 있다(S371).
프로듀서 노드는 유효성이 검증된 유효 후보 블록이 미승인 블록인지 여부를 판단할 수 있다(S380). 프로듀서 노드는 유효 후보 블록이 이미 승인된 승인 블록인 경우 다른 노드로 블록체인 동기화를 요청할 수 있다(S381).
프로듀서 노드는 미승인 블록을 다른 노드로 전파할 수 있다(S390).
도 7은 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써, 후보 블록들에 대한 투표수를 확인하여 후보 블록을 승인 블록으로 인정하는 단계의 흐름도이다.
도 7을 참조하여, 합의를 이루기 위한 방법(S400)을 설명한다.
N 라운드에서 네트워크 상에서의 투표 정보의 전파에 따라 노드들 각각은 후보 블록들에 대한 투표 정보들을 수집할 수 있다(S410). 노드들은 각각은 수집된 투표 정보에 기초하여 후보 블록들 각각에 대한 승인 투표수를 확인하고 이에 기초하여 제1 기설정치의 투표수를 획득한 후보 블록이 존재하는지를 판단할 수 있다(S420). 또한, 네트워크에 참여한 노드들의 목록은 노드들 사이에서 전파되므로 노드들 각각은 투표수의 산정이 가능하다.
네트워크에 참여한 노드들 중 일부 노드들에 대해서만 사이너 노드로 배정된 경우이고, 해당 사이너 노드만이 투표권을 가지는 경우라면 상기 노드들의 목록은 사이너 노드들에 대한 목록이 될 수 있다. 또한, 노드들의 목록은 노드들을 식별할 수 있는 정보를 포함할 수 있으나 이에 제한되는 것은 아니고 노드들의 목록은 단지 투표가 가능한 노드들의 개수 정보가 될 수도 있다. 또한, 노드들의 목록은 현재 라운드에서 프로듀서 노드로의 승격이 가능한 노드들의 목록을 포함할 수도 있다. 라운드 별로 허가 기간이 설정되므로 라운드 별로 승격 가능한 노드들에 대한 정보를 해당 라운드의 개시 시점에 파악할 수도 있다.
N 라운드에서, 노드들 각각은 N 라운드에서 생성된 후보 블록 중 제1 기설정치의 승인 투표를 얻은 후보 블록을 승인 블록으로 인정할 수 있다(S430). 그리고, 노드가 후보 블록을 승인 블록으로 인정하면 해당 후보 블록을 블록체인에 업데이트(S440)하고 승인 블록을 네트워크로 전파할 수 있다(S450).
다른 측면에서, N 라운드에서, 노드들 각각은 N 라운드에서 생성된 후보 블록 중 어느 하나의 후보 블록이 제1 기설정치의 승인 투표를 얻은것으로 확인(S420)하면 해당 후보 블록을 승인 블록으로 인정하여 자신의 블록 체인에 업데이트할 수 있다(S430). 그리고 해당 승인 블록은 네트워크로 전파할 수 있다(S440). 여기서의 제1 기설정치는 투표수를 얻은 후보 블록이란 투표 가능한 노드들 중 2/3가 승인한 후보 블록을 의미할 수 있으나 제시한 제1 기설정치에 제한되는 것은 아니다.
일부 실시예에서, S420 단계에서 노드가 제1 기설정치의 투표수를 획득한 후보 블록이 존재하지 않는 것으로 판단할 수도 있다. 이 경우, 노드는 현재 라운드인 N 라운드의 종료 여부를 판단할 수 있다(S421). N 라운드가 종료되지 않은 경우라면, 노드는 계속해서 투표 정보 및 후보 블록 중 적어도 하나를 계속 수신하는 상태이므로 추가적으로 수집(S410)되는 투표 정보를 이용하여 제1 기설정치 투표수를 획득한 후보 블록의 존부(S420)를 판단하게 된다.
도 8은 본 발명의 실시예에 따른 합의를 이루기 위한 방법에 대한 흐름도로써, 재투표 라운드를 설명하기 위한 흐름도이다.
도 8을 참조하면, N 라운드가 종료된 경우라면, 재투표 라운드가 진행될 수 있다(S500).
재투표 라운드에 의해 가장 우선 순위가 높은 후보 블록이 승인 블록의 합의될 수 있다. 우선 순위는 현재 라운드에서 가장 많은 투표수를 얻은 후보 블록 또는 복수의 재투표 과정 중 이전 재투표 과정에서 가장 많은 투표수를 얻은 후보 블록이 우선순위가 높을 수 있다. 투표수가 동일하다면, 프로듀서 노드로의 승격 순서가 빠를수록 우선순위가 높을 수 있다. 즉, 우선순위가 높은 프로듀서 노드가 생성한 후보 블록의 우선순위가 높을 수 있다.
재투표 라운드의 개시로 인하여 다음 라운드인 N+1번째 라운드는 개시되지 않는다. N+1번째 라운드는 재투표 라운드의 종료 후 개시될 수 있다.
재투표 라운드가 진행되는 동안에는 새로운 후보 블록의 생성이 중단될 수 있다.
재투표 라운드(S500) 동안, 투표 가능한 복수의 노드들 각각은 복수의 미승인 블록 중 제2 기설정치 이상의 투표수를 얻은 미승인 블록이 존재하는지를 판단할 수 있다(S510). 다만, 이러한 판단은 재투표 라운드(S500)의 개시 후 진행하는 것이 아닌 제1 기설정치 투표수를 획득한 후보 블록의 존재를 판단(S420)하는 시점에 이미 완료된 것일 수도 있다.
제2 기설정치 투표수를 획득한 후보 블록이 존재하면, 노드는 해당 후보 블록을 승인하는 1차 재투표(Revision 0)를 진행할 수 있다(S520).
다른 측면에서, 재투표 라운드(S500) 동안, 투표 가능한 복수의 노드들 각각은 복수의 미승인 블록 중 가장 많은 투표수를 얻은 미승인 블록이 존재하는지를 판단할 수 있다(S510). 그리고, 노드는 가장 많은 투표수를 얻은 후보 블록을 승인하는 1차 재투표를 진행할 수 있다(S520).
노드는 1차 재투표에 따라 1차 재투표 정보가 생성되고(S530), 생성된 1차 재투표 정보는 네트워크 상에 전파될 수 있다(S540). 아울러, 재투표를 얻은 미승인 블록 또한 네트워크 상에 전파될 수도 있다(S540).
한편, S510 단계에서의 판단 결과 제2 기설정치 투표수를 획득한 미승인 블록이 존재하지 않는 경우, 현재 라운드에서의 최초 승격 노드가 생성한 후보 블록에 재투표를 진행(S511)할 수 있다.
또한, 노드는 다른 노드로부터 1차 재투표 정보를 수신할 수 있다(S550). 노드는 수신된 1차 재투표 정보에 대한 유효성을 검증할 수 있다. 여기서의 유효성 검증이란 현재 재투표 라운드에서 생성된 1차 재투표 정보인지를 검증하는 것이다.
노드는 자신이 생성한 1차 재투표 정보 및/또는 수신한 1차 재투표 정보에 기초하여 제1 기설정치 투표수를 획득한 후보 블록의 존부를 판단할 수 있다(S560).
제1 기설정치 투표수를 획득한 후보 블록이 존재하면 해당 후보 블록을 승인 블록으로 인정(S570)하고, 승인 블록을 블록체인에 업데이트하여 승인 블록을 다른 노드로 전파할 수 있다(S580, S590).
투표 가능한 노드들 각각이 판단한 결과가 모두 일치하는 경우라면, 특정 후보 블록에 승인 투표가 집중될 수 있다. 그리고, 해당 후보 블록은 제1 기설정치 이상의 승인 투표수를 획득하게 되므로 해당 후보 블록이 승인 블록으로 합의될 수 있다.
다른 측면에서, 투표 가능한 노드들 각각의 판단이 불일치할 수 있다. 즉, 네트워크 상태에 따라서 노드들 각각이 수신한 합의 데이터들이 종류와 양이 다를 수 있기 때문이다. 따라서, 노드들 중 일부 노드들 간에는 제2 기설정치 투표수를 획득한 후보 블록(다른 측면에서, 가장 많은 투표수를 획득한 후보 블록)이 서로 다를 수 있고, 재투표하게 되는 후보 블록의 종류 또한 상이할 수 있다. 이 경우라고 하여도, 동일한 판단 결과를 내린 노드들의 수가 제1 기설정치 이상인 경우라면 특정 후보 블록(다수의 노드가 제2 기설정치 이상의 투표수를 얻은 것이라고 판단한 후보 블록, 또는 다수의 노드가 가장 많은 투표수를 얻은 것이라고 판단한 후보 블록)을 승인하는 투표수 또한 제1 기설정치 이상이 되므로 최종적으로 해당 후보 블록이 승인될 수 있다.
일부 실시예에서, S560 단계의 판단 결과 제1 기설정치 이상의 투표수를 획득한 후보 블록이 존재하지 않을 수 있다. 이 경우, 두번째 재투표인 2차 재투표가 개시될 수 있다.
노드들 각각은 복수의 후보 블록들 중 최초 승격 노드가 생성한 후보 블록을 승인하는 2차 재투표(Revision 1)를 진행할 수 있다(S561).
2차 재투표에 따라 2차 재투표 정보가 생성되고(S562), 2차 재투표 정보는 네트워크 상에 전파될 수 있다(S563).
노드들 각각은 다른 노드로부터 2차 재투표 정보를 수신할 수 있다(S564). 노드들 각각은 2차 재투표 정보의 유효성을 검증할 수 있다. 여기서의 유효성 검증이란 현재 재투표 라운드에서 생성된 2차 재투표 정보인지를 검증하는 것이다.
일부 실시예에서, 네트워크 사정에 따라 2차 재투표의 개시에도 불구하고 일부 노드는 다른 노드로부터 1차 재투표 정보를 수신할 수 있다. 이 경우, 현재 2차 재투표가 진행 중이므로 수신한 1차 재투표 정보를 폐기할 수 있다.
노드들 각각은 자신이 생성한 2차 재투표 정보 및/또는 수신한 2차 재투표 정보에 기초하여 제1 기설정치 투표수를 획득한 후보 블록의 존재를 판단(560)할 수 있다.
노드들 각각은 제1 기설정치 투표수를 획득한 후보 블록의 존재를 판단하면 해당 후보 블록을 유일 블록으로써 승인 블록으로 합의하고(S570), 이를 블록체인에 업데이트할 수 있고(S580), 승인 블록을 다른 노드로 전파할 수 있다(S590).
일부 실시예서, S560 단계에서의 판단 결과 제1 기설정치 투표수를 획득한 후보 블록이 존재하지 않을 수 있다. 이 경우, 3차 재투표(Revision 2)를 진행할 수 있다(S561 내지 S564). 재투표의 반복에도 불구하고 제1 기설정치 투표수를 획득한 후보 블록이 존재하지 않는 경우라고 하여도, 시간이 흐름에 따라 투표 가능한 모든 노드들 또는 네트워크 사정에 따라 몇몇 노드를 제외한 대부분의 노드들은 합의 데이터를 공유하게 된다. 따라서, 합의 데이터를 공유한 노드들은 복수의 후보 블록들 중 최초 승격 노드가 생성한 후보 블록의 존재를 파악하게 되고 해당 후보 블록을 승인하게 되므로 최종적으로 여러 후보 블록들 중 유일 블록인 승인 블록에 대한 합의가 이루어진다.
한편, 특정 노드가 셧다운(Shutdown)되어 블록체인 네트워크로부터 이탈될 수 있다. 그리고 특정 노드가 블록체인 네트워크에 참여하여 주변의 노드들로부터 블록을 전송받는 동기화가 시작될 수 있다. 사이너 노드는 자신이 가지고 있는 합의 데이터에 따라 투표에 참가할 수 있다. 이 과정에서 투표 정보는 중복 투표로 취급되거나 과거의 투표로써 폐기될 수 있다. 그리고 새롭게 참여한 노드는 현재 진행되고 있는 재투표라운드를 우선하고 먼저 자신에게 도착한 투표를 인정할 수 있다. 또한 새롭게 참여한 노드는 다음번 재투표의 개시 시점(재투표 라운드 내에서 복수의 재투표가 이루어지는 경우 참여한 시점에서의 재투표가 종료되고 다음 재투표가 진행되는 시점)부터 합의에 참여할 수 있다. 일부 실시예에서, 새롭게 참여한 노드가 참여 시점에 재투표가 진행되고 있는 경우이고, 해당 재투표를 통해 승인 블록이 합의된 경우라면 다른 라운드의 개시 시점에 상기 다음 라운드에서의 새로운 승인 블록의 인정을 위한 합의에 참여할 수 있다.
또한, 블록체인 시스템은, 비잔티움 노드를 판별하여 비잔티움 노드를 합의 과정에서 소정의 기간 동안 제외시킬 수 있다. 예를 들어, 프로듀서 노드가 하나의 라운드 내에서 복수개의 후보 블록을 생성한 경우라면 해당 프로듀서 노드를 합의 과정에서 제외시킬 수 있다. 일부 실시예에서, 비잔티움 노드로 판별된 노드가 생성한 후보 블록은 투표 대상에서 제외될 수 있다.
또한, 일부 실시예에서, 재투표 라운드에서는 투표에 기록된 블록해시와 맞는 블록이 수집되어 있는 경우에만 해당 블록에 대한 수집된 투표 정보가 유효 득표로 취급될 수도 있다.
또한, 같은 블록해시를 가지는 투표가 가장 많은 그룹이 메이저 그룹이 될 수 있다.
또한, 재투표 라운드에서 1차 재투표에 대해서는 Revision 0으로 배포되고, 이후 2차, 3차 등의 재투표를 시행할 때마다 Revision +1이 발생할 수 있다. 실시예에 따른 블록체인 시스템은 Revicion N의 재투표가 Revision N-1의 투표 2/3을 수집한 이후에 시작할 수 있도록 구성될 수도 있다. 그리고 시간이 지나도 Revision N-1 투표를 2/3 모을 수 없다면, 2/3 투표 수집이 N-1 이전에 종료되었음을 의미할 수 있다.
또한, Revision N의 투표를 2/3 수집한 시점에 재투표가 필요하다고 판단된 경우, 노드 자신이 선택한 메이저 그룹의 블록을 리더 블록으로 하여 Revision N+1로 투표할 수 있다.
또한, 재투표 과정이 시작되면, 투표가 종료될 때까지 블록 생성이 중단될 수 있다. 1/3+1 이상의 투표가 확인된 상태이므로 비잔틴 노드 외에도 정직한 노드가 블록을 보유하고 있는 상태라 할 수 있다. 단, 부정행위의 발각 등으로 인해 선택할 후보 블록이 없는 경우 아직 블록을 생성하지 않은 참여 노드가 추가 블록을 생성할 수도 있다.
또한, 비잔틴 노드로써의 프로듀서 노드에 의한 블록 체인의 분기 유도 현상을 살펴본다. 비잔틴 노드가 각 프로듀서 노드에게 서로 다른 정상 블록을 배포하는 상황이 발생하면, 각 참여 노드들은 서로 다른 블록을 메이저 블록으로 선택하고, 네트워크가 스탑 더 월드 상태가 되는 것을 의심할 수 있다. 각 노드는 자신이 받은 블록과 투표 정보를 주변에 다시 전파하기 때문에, 다른 노드들도 역시 분기 유도가 발생했다는 사실을 인식할 수 있다. 한 라운드 내에서 다수의 후보 블록을 생성한 것이 발각되면, 해당 블록의 프로듀서 노드는 블록이 후보에서 제외되는 처벌을 받게된다. 남은 블록에서 투표가 진행되므로 분기 유도를 시도한 프로듀서 노드는 자연스럽게 도태될 수 있도록 한다.
또한, 비잔틴 노드로써의 사이너 노드의 중복 투표 현상을 살펴본다. 비잔틴 shememf이 중복 투표를 시행하여 블록체인 네트워크의 총 투툐수가 100%가 넘은 경우이다. 이 경우 2/3 투표수를 획득한 후보 블록이 다수 생기는 현상이 발생할 수 있다. 우선, 모두 정상 블록에 대한 투표이므로 어느 쪽이 승인 블록으로 선택되어도 문제가 없다. 그리고, 프로듀서 지위를 가지지 않는 비잔틴 노드에 의해 생성된 블록의 경우 이미 블록의 유효성 검증 단계에서 버려진다.
또한, 도 9를 참조하면, 3N+1 조건(사이너 노드 7(ABCDEFG) 중 비잔틴 노드가 2)에서, AB가 블록을 만들었고, CD가 비잔틴 사이너 노드라 하면, CD는 AB 블록 모두 찬성하되, AE에게는 A블록에 대한 찬성을 BG에게는 B 블록에 대한 찬성을 보낸다. AE는 ACDE(4표)를 얻은 것으로 인식하고, BG는 BCDG(4표)를 얻은 것으로 인식되지만 F 없이는 5표의 조건을 충족할 수 없다. F가 어느 한 그룹에 속한다면 그 그룹이 승인 그룹으로 선택될 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
또한 설명한 본 발명의 상세한 설명에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자 또는 해당 기술분야에 통상의 지식을 갖는 자라면 후술할 특허청구범위에 기재된 본 발명의 사상 및 기술 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허청구범위에 의해 정하여져야만 할 것이다.
Claims (11)
- 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법으로써,
매 라운드 별 미리 정해진 시점에 블록 생성 지위를 가지는 프로듀서 노드로 승격될 수 있는 상기 복수의 노드들 중 어느 하나의 제1 노드가 제N 라운드에서 후보 블록을 수신하는 단계;
수신된 후보 블록이 유효 후보 블록인지 판단하는 단계;
상기 유효 후보 블록이 미승인 블록인지 판단하는 단계; 및
상기 미승인 블록이 최초 수신 후보 블록인지 판단하여 상기 미승인 블록에 대한 승인 투표 여부를 결정하는 단계;를 포함하고,
상기 최초 수신 후보 블록은 상기 제1 노드가 상기 제N 라운드 내에서 최초 수신한 후보 블록인
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제1 항에 있어서,
상기 미승인 블록을 다른 노드로 전송하는 단계; 및
상기 최초 수신 후보 블록을 승인하는 투표 정보를 다른 노드로 전송하는 단계;를 더 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제2 항에 있어서,
상기 제N 라운드에서 생성된 미승인 블록들 중 투표수가 기 설정치 이상인 미승인 블록을 승인 블록으로 인정하는 단계;를 더 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제3 항에 있어서,
상기 제N 라운드에서 프로듀서 노드로 승격된 모든 노드는 제N+1 라운드에서 프로듀서 노드 지위가 상실되고, 상기 승인 블록으로 인정된 후보 블록을 생성한 노드의 다음 순번 노드가 제N+1 라운드에서 첫번째 프로듀서 노드로 승격하는 단계;를 더 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제2 항에 있어서,
상기 제N 라운드에서 복수의 미승인 블록 중 투표수가 기 설정치 이상인 미승인 블록이 존재하지 않는 경우 재투표 라운드가 개시되는 단계; 및
상기 재투표 라운드 기간 동안 미리 설정된 우선순위에 따라 상기 복수의 미승인 블록에 대한 재투표가 진행되는 단계;를 더 포함하고
상기 재투표 라운드 동안 새로운 후보 블록의 생성을 중단하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제5 항에 있어서,
상기 재투표가 진행되는 단계는,
투표 가능한 복수의 노드들이 상기 복수의 미승인 블록 중 기 설정치 이상의 투표수를 얻은 미승인 블록에 대해 승인 재투표하는 단계;를 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제6 항에 있어서,
상기 재투표가 진행되는 단계는,
상기 복수의 미승인 블록 중 기 설정치 이상의 투표수를 얻은 복수의 미승인 블록이 존재하는 경우, 상기 복수의 미승인 블록 각각을 생성한 노드들 중 최초 승격 노드가 생성한 미승인 블록에 대해 승인 재투표하는 단계;를 더 포함하고,
상기 최초 승격 노드는 상기 제N 라운드에서 프로듀서 노드로의 승격 순서가 가장 빠른 노드인
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제1 항에 있어서,
상기 유효 후보 블록인지 판단하는 단계는,
상기 수신된 후보 블록을 생성한 노드의 승격 여부를 판단하는 단계; 및
상기 수신된 후보 블록이 승격된 노드가 생성한 블록인 경우 상기 수신된 후보 블록을 유효 후보 블록으로 인정하는 단계;를 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제1 항에 있어서,
상기 유효 후보 블록이 미승인 블록인지 판단하는 단계는,
상기 유효 후보 블록에 대한 기 설정치 이상의 투표 결과를 포함하는 다음 블록의 존부를 판단하는 단계; 및
상기 다음 블록이 존재하는 경우 상기 유효 후보 블록을 승인 블록으로 인정하여 상기 분산 네트워크로 상기 승인 블록에 대한 동기화를 요청하는 단계;를 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법으로써,
매 라운드 별 미리 정해진 시점에 블록 생성 지위를 가지는 프로듀서 노드로 승격될 수 있는 상기 복수의 노드들 중 어느 하나의 제2 노드가 제N 라운드에서 승격되는 단계;
상기 제N 라운드 내에서 상기 제2 노드가 승격전 후보 블록의 수신 여부를 판단하는 단계;
승격전 후보 블록의 미수신시, 새로운 블록이 연결될 상기 블록체인 상의 마지막 블록 내의 투표 정보를 포함하는 후보 블록을 생성하는 단계;
생성된 후보 블록에 투표하는 단계; 및
상기 후보 블록과 투표 정보를 다른 노드로 전송하는 단계;를 포함하고,
상기 새로운 블록은 상기 제N 라운드에서 승인되는 승인 블록인
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법. - 제10 항에 있어서,
상기 제N 라운드에서 승격된 상기 제2 노드는 다른 노드가 생성한 후보 블록을 수신하는 단계;
수신된 후보 블록이 유효 후보 블록인지 판단하는 단계;
상기 유효 후보 블록이 미승인 블록인지 판단하는 단계; 및
상기 미승인 블록을 다른 노드로 전송하는 단계;를 더 포함하는
복수의 노드들의 분산 네트워크로 구성된 블록체인 상의 상기 복수의 노드들 간의 합의를 이루기 위한 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180111496A KR102130062B1 (ko) | 2018-09-18 | 2018-09-18 | 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템 |
US16/575,309 US11177939B2 (en) | 2018-09-18 | 2019-09-18 | Blockchain system including a distributed network of a plurality of nodes and a method for achieving an agreement between the plurality of nodes executed by processors of the block chain system |
JP2019169619A JP6998348B2 (ja) | 2018-09-18 | 2019-09-18 | 複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180111496A KR102130062B1 (ko) | 2018-09-18 | 2018-09-18 | 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200032449A true KR20200032449A (ko) | 2020-03-26 |
KR102130062B1 KR102130062B1 (ko) | 2020-07-03 |
Family
ID=69773401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180111496A KR102130062B1 (ko) | 2018-09-18 | 2018-09-18 | 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11177939B2 (ko) |
JP (1) | JP6998348B2 (ko) |
KR (1) | KR102130062B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220006834A (ko) * | 2020-07-09 | 2022-01-18 | 주식회사 한빛소프트 | 게임 클라이언트의 참여 증명 기반 블록체인 시스템 및 이를 이용한 블록 보상 합의 방법 |
WO2024058489A1 (ko) * | 2022-09-13 | 2024-03-21 | 주식회사 블룸테크놀로지 | 블록체인 합의 시스템 및 방법 |
WO2024096639A1 (ko) * | 2022-11-03 | 2024-05-10 | 삼성전자 주식회사 | 전자 장치 및 전자 장치에서 데이터를 검증하는 방법 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200177373A1 (en) * | 2018-11-14 | 2020-06-04 | Royal Bank Of Canada | System and method for storing contract data structures on permissioned distributed ledgers |
US11593321B2 (en) * | 2019-03-06 | 2023-02-28 | 0Chain Corp. | Systems and methods of self-administered protocols on a blockchain platform |
KR102229923B1 (ko) * | 2019-06-18 | 2021-03-22 | 한국과학기술원 | 네트워크 상에서 합의된 데이터를 전송하는 방법 및 네트워크 상에서 합의된 데이터를 전송하기 위한 전자기기 |
CN113468608A (zh) * | 2020-03-31 | 2021-10-01 | 福建凯米网络科技有限公司 | 基于区块链的多媒体资源点播计次方法及存储介质 |
CN111490994B (zh) * | 2020-04-16 | 2022-05-27 | 杭州萌格信息科技有限公司 | 区块链节点群间dpos与节点群内pow结合的共识机制方法 |
CN115702418A (zh) * | 2020-06-16 | 2023-02-14 | 联想(北京)有限公司 | 用于区块链感知移动车辆通信的方法及设备 |
KR102396631B1 (ko) | 2020-11-12 | 2022-05-11 | 주식회사 티맥스엔터프라이즈 | 블록체인 시스템 |
CN112492016B (zh) * | 2020-11-23 | 2023-05-30 | 北京微芯区块链与边缘计算研究院 | 一种跨进程可扩展的共识方法及系统 |
CN114638452A (zh) * | 2020-12-16 | 2022-06-17 | 中兴通讯股份有限公司 | 区块组头的获取方法及装置,存储介质及电子装置 |
CN112911011B (zh) * | 2021-02-05 | 2022-05-27 | 深圳前海益链网络科技有限公司 | 一种应用于区块链的区块生成控制方法及相关装置 |
CN112765137B (zh) * | 2021-04-07 | 2021-06-22 | 暗链科技(深圳)有限公司 | 基于区块分布式区块链的区块同步方法及电子设备 |
CN113660299A (zh) * | 2021-05-07 | 2021-11-16 | 杨鉴 | 一种链式周期投票的共识方法、存储介质及电子设备 |
CN115701607A (zh) * | 2021-08-02 | 2023-02-10 | 深圳富联富桂精密工业有限公司 | 基于区块链的规则更新方法、电子设备及存储介质 |
CN113761065B (zh) * | 2021-08-27 | 2024-06-18 | 河南向量智能科技研究院有限公司 | 一种网状设计节点结构的呼应设计方法 |
CN113495927B (zh) * | 2021-09-06 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 区块管理方法及装置 |
CN113849191B (zh) * | 2021-11-30 | 2022-02-22 | 支付宝(杭州)信息技术有限公司 | 智能合约部署方法、系统、装置及存储介质 |
GB2620902A (en) * | 2022-03-23 | 2024-01-31 | The Blockhouse Tech Limited | Blockchain data processing |
WO2024190790A1 (ja) * | 2023-03-15 | 2024-09-19 | 京セラ株式会社 | 通信システム、ノード、及びプログラム |
CN116233132B (zh) * | 2023-05-08 | 2023-07-18 | 成都理工大学 | 基于改进Raft共识机制的能源区块链节点共识方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017091149A (ja) * | 2015-11-09 | 2017-05-25 | 日本電信電話株式会社 | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム |
JP2017188883A (ja) * | 2017-03-23 | 2017-10-12 | 株式会社bitFlyer | プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム |
KR20170137388A (ko) | 2016-06-03 | 2017-12-13 | (주) 블록체인오에스 | 블록체인 기술을 이용한 무결성 보장 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875510B1 (en) * | 2015-02-03 | 2018-01-23 | Lance Kasper | Consensus system for tracking peer-to-peer digital records |
JP6524347B2 (ja) * | 2016-08-30 | 2019-06-05 | ソラミツ株式会社 | 情報共有システム |
US10360191B2 (en) * | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
CN109792437B (zh) * | 2017-05-16 | 2021-01-12 | 北京大学深圳研究生院 | 一种用于去中心化域名系统的共识方法 |
US10679210B2 (en) * | 2017-06-26 | 2020-06-09 | International Business Machines Corporation | Blockchain transaction commitment ordering |
CN107590738A (zh) * | 2017-08-24 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 选择共识节点的处理方法、装置及服务器 |
US10868673B2 (en) * | 2017-09-25 | 2020-12-15 | Sap Se | Network access control based on distributed ledger |
US11165862B2 (en) * | 2017-10-24 | 2021-11-02 | 0Chain, LLC | Systems and methods of blockchain platform for distributed applications |
-
2018
- 2018-09-18 KR KR1020180111496A patent/KR102130062B1/ko active IP Right Grant
-
2019
- 2019-09-18 US US16/575,309 patent/US11177939B2/en active Active
- 2019-09-18 JP JP2019169619A patent/JP6998348B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017091149A (ja) * | 2015-11-09 | 2017-05-25 | 日本電信電話株式会社 | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム |
KR20170137388A (ko) | 2016-06-03 | 2017-12-13 | (주) 블록체인오에스 | 블록체인 기술을 이용한 무결성 보장 방법 |
JP2017188883A (ja) * | 2017-03-23 | 2017-10-12 | 株式会社bitFlyer | プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220006834A (ko) * | 2020-07-09 | 2022-01-18 | 주식회사 한빛소프트 | 게임 클라이언트의 참여 증명 기반 블록체인 시스템 및 이를 이용한 블록 보상 합의 방법 |
WO2024058489A1 (ko) * | 2022-09-13 | 2024-03-21 | 주식회사 블룸테크놀로지 | 블록체인 합의 시스템 및 방법 |
WO2024096639A1 (ko) * | 2022-11-03 | 2024-05-10 | 삼성전자 주식회사 | 전자 장치 및 전자 장치에서 데이터를 검증하는 방법 |
Also Published As
Publication number | Publication date |
---|---|
US11177939B2 (en) | 2021-11-16 |
JP2020048195A (ja) | 2020-03-26 |
KR102130062B1 (ko) | 2020-07-03 |
US20200092085A1 (en) | 2020-03-19 |
JP6998348B2 (ja) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102130062B1 (ko) | 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템 | |
Jesus et al. | A survey of how to use blockchain to secure internet of things and the stalker attack | |
JP6355168B2 (ja) | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム | |
Eyal et al. | Majority is not enough: Bitcoin mining is vulnerable | |
US20210097538A1 (en) | Systems and methods for managing data generation, storage, and verification in a distributed system having a committee of validator nodes | |
WO2017082238A1 (ja) | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム | |
Conti et al. | Blockchain trilemma solver algorand has dilemma over undecidable messages | |
EP4002181A1 (en) | A consensus method and framework for a blockchain system | |
CN112907252B (zh) | 一种基于多人链下通道的区块链交易方法及系统 | |
CN113746858B (zh) | 一种基于可验证随机函数的跨链通信方法 | |
KR20190093012A (ko) | 블록 체인 시스템에서의 블록 생성 및 검증 방법 | |
CN111371905B (zh) | 一种基于云计算的区块链分层共识证明系统与方法 | |
KR102230471B1 (ko) | 블록체인 네트워크 상에서 효율적인 트랜젝션을 수행하기 위한 그룹 증명 생성 방법 | |
KR102332226B1 (ko) | 블록체인 원장에 대한 검증 가능한 블록체인 네트워크 시스템 및 상기 블록체인 네트워크에서의 블록체인 원장 검증 방법 | |
CN109039847A (zh) | 一种利用dmt解决区块链全网消息一致性问题的方法及装置 | |
CN111080445A (zh) | 一种基于图结构的可信存证方法与系统 | |
CN110610421B (zh) | 分片框架下的保证金管理方法及装置 | |
CN115378604B (zh) | 一种基于信誉值机制的边缘计算终端设备的身份认证方法 | |
Doku et al. | LightChain: On the lightweight blockchain for the Internet-of-Things | |
KR102182142B1 (ko) | 신뢰성 향상을 위한 가중치 기반의 블록체인 네트워크 구성 방법 및 장치 | |
Le et al. | A lightweight block validation method for resource-constrained iot devices in blockchain-based applications | |
Yu et al. | Low powered blockchain consensus protocols based on consistent hash | |
Van Hijfte | Blockchain platforms: A look at the underbelly of distributed platforms | |
Zeydan et al. | Blockchain-Based Self-Sovereign Identity for Federated Learning in Vehicular Networks | |
Podolanko et al. | Countering double-spend attacks on bitcoin fast-pay transactions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |