JP2020048195A - ブロックチェーンネットワークのノード間の合意をなす方法及び複数のノードの分散ネットワークで構成されたブロックチェーンシステム及びブロックチェーンシステムのプロセッサにより実行される複数のノード間の合意をなすための方法 - Google Patents

ブロックチェーンネットワークのノード間の合意をなす方法及び複数のノードの分散ネットワークで構成されたブロックチェーンシステム及びブロックチェーンシステムのプロセッサにより実行される複数のノード間の合意をなすための方法 Download PDF

Info

Publication number
JP2020048195A
JP2020048195A JP2019169619A JP2019169619A JP2020048195A JP 2020048195 A JP2020048195 A JP 2020048195A JP 2019169619 A JP2019169619 A JP 2019169619A JP 2019169619 A JP2019169619 A JP 2019169619A JP 2020048195 A JP2020048195 A JP 2020048195A
Authority
JP
Japan
Prior art keywords
block
nodes
node
round
candidate block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019169619A
Other languages
English (en)
Other versions
JP6998348B2 (ja
Inventor
ジョンファ ペク
Junghwa Baek
ジョンファ ペク
スンジェ イ
Seung-Jae Lee
スンジェ イ
スギョン ソル
Soo Kyoung Seol
スギョン ソル
ユンソン キ
Yoonsun Kye
ユンソン キ
ミンテ キム
Mintae Kim
ミンテ キム
シンソク キム
Sin Seok Kim
シンソク キム
キホ ナ
Kiho Na
キホ ナ
ウォングン イ
Wongun Lee
ウォングン イ
スヒョン ジョン
Suhyeon Jeong
スヒョン ジョン
ヒテ リュ
Heetae Lyu
ヒテ リュ
ヒジェ ミョン
Heejae Myeong
ヒジェ ミョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NHN Japan Corp
Original Assignee
NHN Japan Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NHN Japan Corp filed Critical NHN Japan Corp
Publication of JP2020048195A publication Critical patent/JP2020048195A/ja
Application granted granted Critical
Publication of JP6998348B2 publication Critical patent/JP6998348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1053Group management mechanisms  with pre-configuration of logical or physical connections with a determined number of other peers
    • H04L67/1057Group 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic 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/3265Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic 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/3268Cryptographic 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp

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つの第1のノードが第Nのラウンドで候補ブロックを受信すること、受信された候補ブロックが有効候補ブロックであるか判断すること、有効候補ブロックが未承認ブロックであるか判断すること、未承認ブロックが最初の受信候補ブロックであるか判断し、未承認ブロックに対する承認投票可否を決定することを含み、最初の受信候補ブロックは、第1のノードが第Nのラウンド内で最初に受信した候補ブロックである。【選択図】図2

Description

本発明は、複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法及びブロックチェーンシステムに関する。
ブロックチェーンは、2008年ナカモト・サトシのBitcoin:A Peer−to−Peer Electronic Cash Systemにおいて、ブロックとブロックとを連結する方法に由来する。ブロックチェーンは、ピア(peer)に元帳が共有され、ブロック内の内容が透明に公開され、任意に変更が不可能な特性から、暗号貨幣において必須不可欠の技術と認められた。そして、ブロックチェーンは、暗号貨幣のみのための技術でなく、種々の産業分野にわたって活用可能性を見せている。
ブロックチェーンは、ネットワークに参加した各ピアが分散された元帳を共有し、これを管理するために合意アルゴリズムを使用する。ビットコインに代表される初期ブロックチェーン暗号貨幣の場合、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と同様に、持分を有した有権者が投票に無関心になれば信頼性が落ちるという問題点を内在している。また、ブロックチェーンが2つに分けられるフォーク現象が発生したとき、持分による投票を介して1つのブロックチェーンを選択するようになる。このとき、分けられたブロックチェーンの全てに投票をしてもノードには損害が発生しないnothing at stakeの問題点がある。すなわち、攻撃者が予め他のブロックチェーンを生成しておき、自分がブロック生成権限を得たとき、予め作っておいたブロックチェーンを伝播して強制的にフォークを発生させる。しかし、この場合にも、ノードは、損害を発生しない最も安全な方法である両方に投票するようになるので、結果的にフォーク状況が解決されないことがある。
DPoSは、PoSに基づいた合意アルゴリズムであって、代表者を選出し、代表者達にブロック生成に対する権限を委任するアルゴリズムである。PoSに比べて速いトランザクション処理速度と拡張性を有し、ブロックチェーンの信頼性がさらに高くなるという長所がある。しかし、ブロックチェーンネットワークの中央集中度が高まり、分散ネットワークの長所が弱まるという短所がある。また、投票参加率が低い場合、相対的に低い持分を介して代表者になり得るという短所があり、代表者達間での談合の危険性、公開された代表者達に対するDDoS攻撃の危険がある。
PBFTは、既存の分散ネットワークで使用されていた合意アルゴリズムであって、悪意のあるノードがネットワークに参加していても、合意過程を導き出すことができ、非同期分散ネットワークにも適用できるという長所がある。ただし、ノード数が増加すれば、ブロックチェーンシステムの性能低下の問題が発生するので、ブロックチェーンが有するノードの数は、数十個が限界である。
Casperは、PoSとPBFT基盤の合意アルゴリズムである。イーサリアム(Ethereum)は、ブロックチェーンプラットフォームで開発及び適用中のアルゴリズムであって、現在は、PoWとPoSのハイブリッド(Hybrid)構造からなっているが、今後、PoSに切り換えられる予定である。このアルゴリズムは、Justified(認証)とFinality(最終確定性)の2つの概念を適用してブロックチェーンの信頼性を高め、プロトコルを介して状況に対する安定性を保障する。特に、PoSの問題点のうちの1つである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)など、多くの合意アルゴリズムがあり、応用される分野(金融、物流、流通、港湾、自動車、データ通信、共有、認証等)、ブロックチェーンシステムの目的によって派生している。
特許文献1:韓国公開特許第10−2017−0137388号
本発明の目的の1つは、従来のリーダー(Leader)モデルでラウンド別の唯一リーダー選択問題及び選択されたリーダーが悪性リーダーである場合の問題を解決できるブロックチェーンネットワークのノード間の合意をなす方法及びブロックチェーンシステムを提供することにある。
また、本発明は、サイドチェーン(Side chain)の発生を防ぎ、Finality(最終確定性)を保障できるブロックチェーンネットワークのノード間の合意をなす方法及びブロックチェーンシステムを提供することを目的とする。
また、本発明の他の目的は、ネットワーク資源を効率的に使用して、早いトランザクション承認を得るようにしたブロックチェーンネットワークのノード間の合意をなす方法及びブロックチェーンシステムを提供することにある。
また、本発明のさらに他の目的は、サイナーノードに対するネットワークの攻撃者の直接的な攻撃に剛健なブロックチェーンネットワークのノード間の合意をなす方法及びブロックチェーンシステムを提供することにある。
また、本発明のさらに他の目的は、プロデューサーノード(リーダー)選択規則を提示しない従来のPBFT合意アルゴリズムとは異なり、時間が流れるにしたがってラウンドと許可期間の概念を介してプロデューサーノードを管理できるようにしたシステムを提供することにある。
本発明の一実施形態によると、複数のノードの分散ネットワークで構成されたブロックチェーンシステムのプロセッサにより実行される複数のノード間の合意をなすための方法は、ラウンド別毎に予め決められた時点にブロック生成地位を有するプロデューサーノードに昇格され得る前記複数のノードのうち、いずれか1つの第1のノードが第Nのラウンドで候補ブロックを受信すること、受信された候補ブロックが有効候補ブロックであるか判断すること、前記有効候補ブロックが未承認ブロックであるか判断すること、及び前記未承認ブロックが最初の受信候補ブロックであるか判断し、前記未承認ブロックに対する承認投票可否を決定することを含み、前記最初の受信候補ブロックは、前記第1のノードが前記第Nのラウンド内で最初に受信した候補ブロックである。
前記未承認ブロックを他のノードに送信すること、及び前記最初の受信候補ブロックを承認する投票情報を他のノードに送信することをさらに含んでもよい。
前記第Nのラウンドで生成された未承認ブロックのうち、投票数が既設定値以上である未承認ブロックを承認ブロックと認めることをさらに含んでもよい。
前記第Nのラウンドでプロデューサーノードに昇格された全てのノードは、第N+1のラウンドでプロデューサーノードの地位が喪失され、前記承認ブロックと認められた候補ブロックを生成したノードの次の順番ノードが第N+1のラウンドで1番目のプロデューサーノードに昇格することをさらに含んでもよい。
前記第Nのラウンドで複数の未承認ブロックのうち、投票数が既設定値以上である未承認ブロックが存在しない場合、再投票ラウンドを開始すること、及び前記再投票ラウンド期間の間、予め設定された優先順位によって前記複数の未承認ブロックに対する再投票を進行させることをさらに含み、前記再投票ラウンドの間、新しい候補ブロックの生成を中断してもよい。
前記再投票を進行させることは、投票可能な複数のノードが、前記複数の未承認ブロックのうち、既設定値以上の投票数を得た未承認ブロックに対して承認再投票することを含んでもよい。
前記再投票を進行させることは、前記複数の未承認ブロックのうち、既設定値以上の投票数を得た複数の未承認ブロックが存在する場合、前記複数の未承認ブロックの各々を生成したノードのうち、最初の昇格ノードが生成した未承認ブロックに対して承認再投票することをさらに含んでもよく、前記最初の昇格ノードは、前記第Nのラウンドでプロデューサーノードへの昇格順序が最も早いノードである。
前記有効候補ブロックであるか判断することは、前記受信された候補ブロックを生成したノードの昇格可否を判断すること、及び前記受信された候補ブロックが昇格されたノードが生成したブロックである場合、前記受信された候補ブロックを有効候補ブロックと認めることを含んでもよい。
前記有効候補ブロックが未承認ブロックであるか判断することは、前記有効候補ブロックに対する既設定値以上の投票結果を含む次のブロックの存否を判断すること、及び前記次のブロックが存在する場合、前記有効候補ブロックを承認ブロックと認めて、前記分散ネットワークに前記承認ブロックに対する同期化を要請することを含んでもよい。
任意のラウンドが進行する間、プロデューサーノードへの昇格の地位を有する複数のノードは、順序どおりに昇格されてもよい。
前記既設定値は、前記複数のノードの個数の2/3に該当してもよい。
前記ラウンド別毎に前記複数のノードの各々は、1回の投票権を有してもよい。
前記複数のノードのうち、いずれか1つのノードが投票情報を受信すること、受信された投票情報の有効性を検証すること、及び有効性が検証された投票情報を他のノードに伝播することをさらに含んでもよい。
特定ラウンドが進行する間、前記複数のノードのうち、いずれか1つのノードは、投票情報を受信すれば、既設定値以上の投票数を取得した候補ブロックの存在可否を判断し、既設定値以上の投票数を取得した候補ブロックが存在すれば、既設定値以上の投票数を得た未承認ブロックを承認ブロックと合意してもよい。
本発明の一実施形態によると、複数のノードの分散ネットワークで構成されたブロックチェーンのプロセッサにより実行される前記複数のノード間の合意をなすための方法は、ラウンド別毎に予め決められた時点にブロック生成地位を有するプロデューサーノードに昇格され得る前記複数のノードのうち、いずれか1つの第2のノードが第Nのラウンドで昇格すること、前記第Nのラウンド内で前記第2のノードが昇格前候補ブロックの受信可否を判断すること、昇格前候補ブロックの未受信時、新しいブロックが連結される前記ブロックチェーン上の最後のブロック内の投票情報を含む候補ブロックを生成すること、生成された候補ブロックを承認ブロックと認める投票をすること、及び前記候補ブロックと投票情報を他のノードに送信することを含む。
前記第Nのラウンドで昇格された前記第2のノードは、他のノードが生成した候補ブロックを受信すること、受信された候補ブロックが有効候補ブロックであるか判断すること、前記有効候補ブロックが未承認ブロックであるか判断すること、及び前記未承認ブロックを他のノードに送信することをさらに含んでもよい。
前記第2のノードが昇格前候補ブロックを受信した場合、前記第2のノードは、前記新しいブロックを生成しなくてもよい。
前記新しいブロックは、前記第Nのラウンドで前記新しいブロックを承認ブロックと承認する投票に対する投票数に基づいた、承認ブロックと合意可能なブロックであってもよい。
任意のラウンドが進行する間、プロデューサーノードへの昇格の地位を有する複数のノードは順序どおりに昇格されてもよい。
本発明の一実施形態によると、複数のノードの分散ネットワークで構成されたブロックチェーン上の前記複数のノードが合意規則にしたがって合意データを生成及び伝播して合意をなすための方法は、前記合意データは、候補ブロックデータ及び投票データのうち、少なくとも1つを含み、前記合意規則にしたがって既設定値以上の投票数を得た候補ブロックデータを含む候補ブロックを承認ブロックと合意し、前記承認ブロックは、前記ブロックチェーン上にアップデートされる。
前記合意規則ノードは、受信された合意データを検証すること、投票権を保有したノードは、受信された候補ブロックデータを承認する投票データを生成すること、ブロック生成権を保有したノードは、候補ブロックデータを生成し、ノードは、自分が生成した候補ブロックデータを承認する投票データを生成すること、ノードは、検証された合意データ及び生成した合意データを伝播し、ラウンド別毎に複数のノードが予め決められた順序によって予め決められた時点にプロデューサーノードの地位に昇格すること、前記プロデューサーノードの地位は、昇格時点のラウンドの終了時点まで維持され、前記プロデューサーノード地位の昇格前候補ブロックデータを未受信する規則を含んでもよい。
さらに他の側面において、前記合意データは、候補ブロックデータ及び投票データのうち、少なくとも1つを含み、前記合意データを受信したノードをして前記合意データを検証させ、前記合意データを検証した第1のサイナーノードをして前記検証された合意データ内の少なくとも一部データを他のノードに送信させ、前記合意データを検証した第2のサイナーノードをして検証された候補ブロックデータを承認する投票データを生成させ、前記第2のサイナーノードをして前記検証された合意データ内の少なくとも一部データ及び生成した投票データのうち、少なくとも1つを他のノードに送信させ、昇格前、前記候補ブロックデータを未受信したプロデューサーノードをして候補ブロックデータを生成させてもよく、前記プロデューサーノードをして生成した候補ブロックデータを承認する投票データを生成させてもよい。
本発明に係る実施形態は、従来のリーダー(Leader)モデルでラウンド別の唯一リーダー選択問題及び選択されたリーダが悪性リーダーである場合の問題を解決することができる。
また、サイドチェーン(Side chain)の発生を防ぎ、Finality(最終確定性)を保障することができる。
また、ネットワーク資源を効率的に使用して、早いトランザクション承認を得ることができる。
また、サイナーノードに対するネットワークの攻撃者の直接的な攻撃に剛健なブロックチェーンシステムを提供することができる。
また、時間の流れにしたがってラウンドと許可期間の概念を介してプロデューサーノードを管理できるようにしたシステムを提供することができる。
また、ネットワークディレイ(Propagation delay)に大きい影響を受けるタイムアウト(Timeout)方式を有した合意アルゴリズムではない、各サイナーが相手時間によって非同期的に投票とブロック生成とを進行するようにし、必ず1つのラウンド内でブロックが決定されるようにすることで、ラウンドに対する相手時間の制限がなく、唯一プロデューサーノードを選出しないようにして早い合意が可能なようにする。
また、ブロック生成者競争方式を介して悪性リーダー問題を解決することができる。
また、コンソーシアム(Consortium)やプライベート(Private)環境に最適化された合意アルゴリズムを提供することができる。
また、ラウンド別に許可期間にプロデューサーノードが生成される方式を介してプロデューサーノードがブロック生成を怠る場合、ブロックチェーンシステムが止まる現象を解決することができ、多量のブロック生成者が存在することを防止することができる。
本発明において得ることができる効果は、以上で言及した効果に限定されず、言及していないさらに他の効果は、下記の記載から明確に理解されることができる。
複数のノードの分散ネットワークで構成されたブロックチェーンシステムに対する概観を示す。 複数のノードの分散ネットワークで構成されたブロックチェーンのプロセッサにより実行される前記複数のノード間の合意をなすための方法を説明するための時間の流れにしたがうノードの昇格を示したタイムテーブルを示す概念図である。 ブロックチェーンに記録されたデータの種類を説明するための概念図である。 ノードが他のノードから候補ブロックを受信したときの合意をなすための方法に関すフローチャートである。 ノードが他のノードから投票情報を受信したとき、ブロックチェーンシステムがどのように駆動されるかを示すフローチャートものである。 サイナーノードがプロデューサーノードに昇格された状態で合意データがネットワーク上で伝播されるとき、合意をなすための方法に関するフローチャートである。 候補ブロックに対する投票数を確認して、候補ブロックを承認ブロックと認めるステップのフローチャートである。 再投票ラウンドを説明するためのフローチャートである。 ビザンチンサイナーノードの重複投票を説明するための概念図である。
本発明は、様々な変換を加えることができ、種々の実施形態を有することができるが、以下では特定の実施形態を図面に例示し、詳細な説明に詳しく説明する。本発明の効果及び特徴、そして、それらを達成する方法は、図面とともに詳しく後述されている実施形態を参照すれば明確になるであろう。しかし、本発明は、以下において開示される実施形態等に限定されるものではなく、様々な形態で実現されることができる。以下の実施形態において、第1、第2などの用語は、限定的な意味ではなく、1つの構成要素を他の構成要素と区別する目的として使用されている。また、単数の表現は、文脈上、明白に異なる意味にならない限り、複数の表現を含む。また、「含む」または「有する」などの用語は、明細書上に記載された特徴または構成要素が存在することを意味するものであり、1つ以上の他の特徴または構成要素が付加される可能性を予め排除するものではない。また、図面では、説明の都合上、構成要素等が、そのサイズが誇張または縮小され得る。
以下、添付された図面を参照して本発明の実施形態を具体的に説明する。図面を参照して説明するとき、同一、又は対応する類似の構成要素は、同じ図面符号を付与し、これについての重複する説明は省略する。
本発明の実施形態を具体的に説明するに先立ち、明細書に登場する用語を定義する。
サイナーノード(Signer Node):ブロックの有効性を検証できる権限を有することができる。また、プロデューサーノードに昇格されることができる。
プロデューサーノード(Produser Node):ブロックを生成できる権限を有することができる。許可期間にサイナーノードの地位からプロデューサーノードの地位に昇格されることができる。また、サイナーノードの役割を兼ねることができる。
許可期間(Permission periode):ラウンドで各サイナーノードのプロデューサーノードへの昇格が発生する時間間隔である。
ラウンド(Round):ノード間の合意によってブロックが決定される単位を意味する。そして、ラウンドは、時間軸上の時間概念にしたがう。
相対時間(Relative time):各サイナーノードが認識する相対時間である。
絶対時間(Absoulte time):全てのサイナーノードが共有する現実の時間であって、絶対時間である。
ストップザワールド(Stop the world):ブロックあるいは投票伝播過程で問題が生じてネットワークの動作が止まる時点である。
投票(Vote):1つのラウンド内で生成された候補ブロックのうち、有効な1つのブロック(唯一ブロック)を選択するために、サイナーノードがやり取りする投票である。例えば、あるブロックに2/3以上の投票が収集されれば、そのブロックが選択され得る。
候補ブロック(Candidate Block):チェーンの最後のブロックになり、最終的に承認ブロックと認められることができるブロックと定義される。まだ承認されていない候補ブロックを意味し、ラウンド別毎に生成された候補ブロックのうち、いずれか1つの候補ブロックのみが承認ブロックと認められることができる。
承認ブロック:候補ブロックのうち、合意により最終承認された候補ブロックである。
正式ブロック(Canonical Block):以後、絶対にロールバックされないことと保障されるブロックを意味する。承認ブロックが、以後、絶対にロールバックされないことが保障されれば、正式ブロックになる。承認ブロックと正式ブロックとの区分は時々曖昧でありうる。第1の承認ブロックの次に連結された第2の承認ブロックが存在する場合、第1の承認ブロックは、正式ブロックになることができる。正式ブロックの認定に厳格性を加えるならば、第1の承認ブロックの次に連結された2個以上の承認ブロックが存在するとき、初めて第1の承認ブロックは、正式ブロックになることができる。
ペアレントブロック(Parent Block):任意のブロックが参照する自分のすぐ前のブロックである。
リーダーブロック(leader Block):1つのラウンドで作られた複数個の候補ブロックのうち、各ノードの判断において承認ブロックになることができる最も有力なブロックである。
ビザンチンノード(Byzantine Node):規則にしたがわないサイナーノードあるいはプロデューサーノードを意味する。規則にしたがうサイナーノードあるいはプロデューサーノードであっても、システムダウンなどで、すべきことをすることができなければ、ビザンチンノードと取り扱われることがある。正直なサイナーノードは、自分が正直であるということを証明するために最善を尽くさなければならない。ここでの最善とは、合意データを受信したノードが合意データの有効性を検証し、合意データを他のノードに伝播するコンピューティング活動を尽くすことである。また、最善とは、合意データを生成したノードがこれを他のノードに伝播するコンピューティング活動を尽くすことである。また、最善のコンピューティング活動量は、ノード自体のコンピューティングパワーによって変わることができる。
2/3投票数:投票可能なノードのうち、2/3だけの数のノードが投票権を行使ことを意味する。
メジャーグループ(Major group):ラウンドで同じブロックに投票したサイナーノードのうち、最上位グループを意味する。また、承認グループ(Canonical group)の候補を意味する。
図1は、複数のノードの分散ネットワークで構成されたブロックチェーンシステムに対する概観を示す。
以下において説明するシステムは、ネットワーク上でピアツーピア(peer−to−peer;P2P)ネットワークアーキテクチャ構造をなす。すなわち、システムに参加するユーザらは、みんな同等な地位を有しており、特別なノードは存在せず、全てのノード(ノード1〜ノードn)がネットワークサービスを構成する役割を分担する。ネットワーク上の種々のノード100は、互いに同等なトポロジーを有しながら、網ネットワークで互いに接続される。ネットワーク内にあるノードが互いに同等な位置にあるとしても、支援する機能によって各自の役割は相違してもよい。
全てのノードは、ネットワーク内にルーティング機能を保有しており、他の機能を含むこともできる。全てのノードは、取引やブロックに関するデータをはじめとして、各種データを検証し、伝播し、隣接ノードとの接続を維持する機能を果たすことができる。ここでの取引とは、金銭的な取引や仮想貨幣の取引だけでなく、スマートコントラクトによる各種取引を全て含む。したがって、本明細書における取引の意味が特定の取引に限定されないことに注意しなければならない。
ユーザは、一般の個人から組織、コミュニティ、大規模集団に達するまで多様であり、他の類型の個体を含むことができる。
ネットワークに接続されたノード100は、サイナーノード110とプロデューサーノード120とになることができ、その他、プロトコルを稼動するノードを接続させるプロトコルゲートウェイが含まれてもよい。
新しいノードがシステムに参加するために、まず、ネットワーク上に存在する他のノードを検索することができる。このようなプロセスを始めるために、新しいノードは、既存にネットワーク上に存在するノードを少なくとも1個は検索して、自分と検索されたノードとを接続することができる。新しいノードが既知の隣接ノードに接続されるために、各ノードは、特定番号のポートでTCPコネクションを接続したり、代案ポートで接続することができる。新しいノードは、接続要請メッセージを隣接ノードに送信し、隣接ノードは、接続要請を承認する場合、承認メッセージを新しいノードに送信することにより、隣接ノードからの接続要請に応答することができる。1つ以上の接続が成立したら、新しいノードは、自分のIP住所が入っているアドレスメッセージを隣接ノードに送信することができる。隣接ノードは、送信されたアドレスメッセージをそれらの隣接ノードに順に送信することにより、新しく接続されたノードがよりよく知られ、他のノードとよりよく接続させることができる。また、新しく接続されたノードは、アドレス要請メッセージを隣接ノードに送り、他の隣接ノードのIP住所目録を再度送信することを要請することができる。このような方式を介してノードは、自分と接続されている隣接ノードを検索することができ、他のノードが自分を検索できるように自分の存在をネットワーク上に広報することができる。
複数のノード100のうち、少なくとも一部のノードは、ブロックチェーン全体の複写本または少なくともブロックチェーンの部分集合に該当する複写本を有することができる。
ブロックチェーンは、トランザクション(取引)で構成される変更不可能なブロックで構成された分散型コンピュータシステムで構成される。ブロックチェーンを構成する各ブロックは、以前のブロックのハッシュを含むので、ブロックが共に連結されて、始めからブロックチェーンに書かれた全てのトランザクションのレコードを生成する。ブロックは、以前のブロックに従属的に連結されているので、解体、修正、及び再構成がほとんど不可能であり、ノードが各自保有するので、分散され、堅固である。一部の実施形態において、1つのブロックには、少なくとも1つの取引内訳が記録される。取引内訳は、ハッシュで計算されて、偽変造が発生しないように構成されることができる。各ブロックと取引は、ハッシュ値、データ発生時点のタイムスタンプ(timestamp)を管理することにより、偽変造を防ぎ、取引内訳を追跡することができる。また、仮想貨幣などのような金銭的な手段の取引関係において、ノード100は、ブロックチェーン元帳と財布アプリケーションとを格納し、ユーザが安全かつ信頼性のある方式でネットワークを介しての取引や他の関連機能を果たすことができるようにする。
それぞれのノードは、全てのプログラミング言語を読み込むことができるようにサーバ、インターフェース、システム、データベース、エージェント、ピア、エンジン、コントローラ、または個別的に或は集合的に作動するその他の類型のコンピュータ装置を含むか、コンピュータ装置等の適切な組み合わせで構成されることができる。コンピュータ装置は、非一過性のコンピュータ読み取り可能記録媒体(例えば、ハードドライブ、ソリッドステートドライブ、RAM、フラッシュ、ROM等)上に格納されたソフトウェア命令を実行するように構成されたプロセッサを備えることができる。望ましくは、コンピュータ装置が後述する各種機能を提供できるようにソフトウェア命令が構成される。また、開示された技術は、開示されたステップをプロセッサに実行させるソフトウェア命令を格納する非一過性のコンピュータ読み取り可能媒体を含むコンピュータプログラム製品として実現されることができる。望ましくは、様々なサーバ、システム、データベース、及びインターフェースは、HTTP、HTTPS、AES、公開/個人キー交換、ウェブサービスAPI、知られた金融取引プロトコル、または他の電子基盤の標準化されたプロトコル、若しくはアルゴリズムを使用してデータを交換することができる。望ましくは、データ交換は、パケット交換ネットワーク、インターネット、LAN、WAN、VPN、または他の類型のパケット交換ネットワークを介して行われることができる。
図2は、複数のノードの分散ネットワークで構成されたブロックチェーンシステムのプロセッサにより実行される複数のノード間の合意をなすための方法を説明するための時間の流れにしたがうノードの昇格を示したタイムテーブルであり、図3は、ブロックチェーンに記録されたデータの種類を説明するための概念図である。
図2に示すように、タイムテーブルは、ラウンド別に区分されることができる。すなわち、1つのラウンドが開始され、開始されたラウンドが終了されると、次のラウンドが始まる。ラウンドのそれぞれの時間間隔は同一であってもよいが、これに限定されるものではない。また、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ラウンドで一番最後に昇格されたプロデューサーノードの次の順番であるサイナーノードが1番目のプロデューサーノードになってもよい。
他の側面において、図2に示されたように、Nラウンドで承認ブロックと認められた候補ブロックを生成したプロデューサーノードの次の順番のサイナーノードまたはプロデューサーノードがN+1ラウンドの最初の昇格ノードになってもよい。すなわち、以前のラウンドの承認ブロックを生成したプロデューサーノードの次の順番のノードが次のラウンドの1番目のプロデューサーノードとなる。これは、次のラウンドで昇格されるノードの事前予測を困難にし、システムの保安性を向上させる。
一方、リーダーブロックのタイムスタンプ(timestamp)を基準に、許可期間によってサイナーノードのプロデューサー昇格時点を決定してもよい。そして、サイナーノードは、相対時間を使用して昇格時点を自ら判断してもよい。そして、絶対時間を基準とみれば、サイナーノードは、互いに異なるプロデューサーノード目録を有していてもよい。また、ラウンドにおいて時間が経過するほど、より多くのプロデューサーノードが活動するようになる。
図3に示すように、ブロックチェーンを構成する各ブロックは、公開帳簿であるブロックチェーンに取引を含めるために、引きまとめたコンテナデータ構造になってもよい。ブロックは、メタデータを入れているヘッダと、その後にブロックサイズを決定する取引目録が長く並べられることができる。ブロックヘッダのサイズは、数十バイトであるのに対し、取引目録の平均サイズは、少なくとも数百バイトになってもよいが、これに限定されるものではない。平均的に各ブロックには、数百個の取引が入ることができるが、これに限定されるものではない。
ブロックヘッダは、ブロックメタデータ等の集合で構成されてもよい。ブロックヘッダには、現在ブロックがブロックチェーンにある以前のブロックと連結されたことを表す以前ブロックハッシュ値があってもよい。また、ブロックヘッダにはタイムスタンプがあってもよい。また、ブロックヘッダにはマックルツリールートがあってもよい。マックルツリールートは、ブロック内で取引全部を効率的に要約するために使用されるデータ構造である。
ブロックの主要識別子は、デジタル指紋の役割をする暗号化ハッシュになってもよい。例えば、暗号化ハッシュは、SHA256アルゴリズムを介してブロックヘッダを2回ハッシングして得られる。ブロックハッシュは、唯一かつ確実な方法で当該ブロックを識別できるようにし、全てのノードは、ブロックヘッダを簡単にハッシングすることにより、独立的にブロックハッシュ値を得ることができる。ブロックを識別できる2番目の方法は、ブロックチェーン内での位置を把握することである。すなわち、ブロック高さを把握することである。生成された1番目のブロックは、ブロック高さが0であり、次のブロックで参照するブロックハッシュ値は、1番目のブロックを指している。
また、ブロックヘッダには、以前のブロックの投票情報が含まれてもよい。すなわち、以前のブロックが予め設定された投票数以上の投票を得て、最終承認されたブロックであることを確認できる以前のブロックと関連した投票情報が現在ブロックのブロックヘッダに含まれてもよい。
複数のノード100は、合意データを生成でき、複数のノード100間で合意データが伝播される。
合意データは、候補ブロックデータを含んでもよい。候補ブロックデータは、候補ブロックを構成するデータである。
合意データは、投票データを含んでもよい。投票データは、投票情報を構成するデータである。
ラウンド毎に生成された合意データは、複数のノード100間で伝播されながら合意をなすようになる。具体的には、ラウンド毎に生成された複数の候補ブロックのうち、いずれか1つの候補ブロックを承認ブロックと認める合意がなされる。合意のための意思決定は、複数のノード100のそれぞれの投票によりなされる。すなわち、複数の候補ブロックのうち、最も多い投票数を得た候補ブロックが承認ブロックとして合意される。他の側面において、予め設定された基準値以上の投票数を得た候補ブロックが承認ブロックとして合意される。ここでの予め設定された基準値以上の投票数は、投票に参加できるノードの個数から2/3ノード個数だけの投票数であってもよいが、これに限定されるものではない。このように合意された承認ブロックは、ブロックチェーン上にアップデートされながら既存のブロックチェーン上の最後のブロックに続いて連結される。
合意のための意思決定は、予め設定された合意規則にしたがってなされる。ブロックチェーンシステムに参加することを望むノードがブロックチェーンシステムに接続すると、ブロックチェーン駆動のためのプログラムをダウンロードして自分のノードに設置するようになる。そして、ブロックチェーン駆動のためのプログラムは、当該ノードがブロックチェーンネットワーク上で合意規則にしたがって駆動できるようにする。したがって、ブロックチェーン駆動のためのプログラムは、合意規則にしたがって当該ノードがブロックチェーンシステムの一構成要素として駆動するようにプログラムされる。
図4は、本発明の実施形態に係る合意をなすための方法に対するフローチャートであって、ノードが他のノードから候補ブロックを受信したときの合意をなすための方法に関するものである。
ノードが受信した合意データは、候補ブロックデータになってもよい。
図4に示すように、本発明の実施形態に係る合意をなすための方法(S100)においてノードは、受信した候補ブロックデータ(S110)及びブロックチェーンに基づいて、受信した候補ブロックデータの有効性を検証する(S120)。すなわち、ノードは、受信した候補ブロックが有効候補ブロックであるか判断することができる。具体的に、ノードは、受信した候補ブロックを生成したノードが昇格されたプロデューサーノードの地位下で生成したノードであるかを判断することができる。これを満たさない場合、ノードは、受信した候補ブロックを廃棄することができる(S121)。これを満たす場合であれば、ノードは、受信した候補ブロックを有効候補ブロックと認める。他の側面において、ノードは、受信した候補ブロックが過去ラウンドで生成された候補ブロックに過ぎず、過去ラウンドで生成された他の候補ブロックが(受信した候補ブロックでない他の候補ブロック)ブロックチェーン上で承認ブロックと認められた場合であれば、受信した候補ブロックを廃棄することができる(S121)。
ノードが受信した候補ブロックが有効候補ブロックと認められると、ノードは、有効候補ブロックが未承認ブロックであるかを判断する(S130)。例示的に、ノードは、有効候補ブロックに対する既設定値以上の投票結果を含む次のブロックの存否を判断する。そして、このような次のブロックが存在する場合、当該有効候補ブロックを承認ブロックと認めて、分散ネットワーク上に当該承認ブロックの同期化を要請する(S131)。一部の実施形態において、有効候補ブロックに対する2/3以上の投票が収集され、これをペアレントブロック(父母ブロック)として、その投票を含めた次のブロックが存在する場合、有効候補ブロックは、承認ブロックと認められることができる。
他の側面において、受信した候補ブロックが現在ラウンドで承認ブロックと認められたブロックであれば、ノードは分散ネットワーク上に当該承認ブロックの同期化を要請することもできる。すなわち、受信した候補ブロックが現在ラウンドで既設定値の承認投票数を得た承認ブロックであれば、ノードはネットワークに当該承認ブロックの同期化を要請することができる。合わせて、現在ラウンドで投票権を行使しなかったノード(それ以前に候補ブロックを受信しなかったノード)であるとしても、現在ラウンドで承認された承認ブロックを受信することができる。このような現象は、ネットワークの状態(Propagation delay等)によって現在ラウンドで既に特定候補ブロックが承認ブロックと認められたにもかかわらず、全てのノードが一時に当該承認ブロックの存在を把握することができない場合があるためである。
ノードが有効候補ブロックを未承認ブロックと判断すると、ノードは、現在ラウンドにおける最初の受信候補ブロックであるか否かを判断する(S140)。すなわち、Nラウンドでノードが受信した候補ブロックが未承認ブロックでありながらも、Nラウンドで最初に受信した未承認ブロックであるか否かを判断する。
未承認ブロックが最初の受信候補ブロックでなければ、ノードは、未承認ブロックを他のノードに伝播する(S141)。一方、未承認ブロックが最初の受信候補ブロックであれば、ノードは、最初の受信候補ブロックを承認する投票情報を生成することができる(S150)。そして、ノードは、最初の受信候補ブロック及び投票情報のうち、少なくとも1つを他のノードに伝播する(S160)。
一方、各ラウンド毎にノードの各々は、自分の投票権を1回行使することができる。そして、ノードの各々は、各ラウンドで最初に受信した候補ブロックに対してのみ自動で投票する。特定ラウンドで投票権を行使したノードが次のラウンドになる前に再度候補ブロックを受信し、受信した候補ブロックが未承認ブロックであるとしても、当該候補ブロックにはさらに投票しない。
図5は、本発明の実施形態に係る合意をなす方法に対するフローチャートであって、ノードが他のノードから投票情報を受信したとき、ブロックチェーンシステムがどのように駆動されるかを示すものである。
図5に示すように、本発明の実施形態に係る合意をなすための方法(S200)において、ノードが受信した合意データは、投票データになることができる。
ノードは、他のノードから投票データを含む投票情報を受信する(S210)。
ノードは、受信した投票データの有効性を検証する(S220)。すなわち、ノードは、他のノードから受信した投票情報の有効性を検証する。具体的には、ノードは、受信した投票が現在ラウンドで生成された候補ブロックに対する投票情報であるか否かを判断することができる。ノードは、受信した投票が過去ラウンドで生成された候補ブロックに対する投票情報であれば、当該投票情報を廃棄する(S221)。
一方、ノードが受信した投票情報が現在ラウンドで生成された候補ブロックに対する投票の場合であれば、ノードは、受信した投票情報を他のノードに伝播する(S230)。
一方、投票情報は、ブロックナンバー、ブロックハッシュ、タイムスタンプ、サイナーノードの固有識別情報、ノードの署名情報、再投票情報を含むことができる。具体的に、特定候補ブロックを承認する投票情報である場合、ブロックナンバーは、前記特定候補ブロックを称するナンバーであり、ブロックハッシュは、前記特定候補ブロックのブロックハッシュである。そして、ノードの固有識別情報とノードの署名情報とは、前記特定候補ブロックを承認したノードの固有識別情報及び署名情報であってもよい。また、再投票情報は、投票情報が再投票ラウンドで生成されたことであるかを区別可能にする情報であってもよい。
図6は、本発明の実施形態に係る合意をなすための方法のフローチャートであって、サイナーノードがプロデューサーノードに昇格された状態で合意データがネットワーク上で伝播されるとき、合意をなすための方法に関するものである。
図6を参照して、本発明の実施形態に係る合意をなすための方法(S300)を説明する。
許可期間の間、サイナーノードがプロデューサーノードに昇格される(S310)。
Nラウンドでプロデューサーの地位に昇格されたノードは、Nラウンド内で昇格前候補ブロックを受信したかを判断する(S320)。
プロデューサーノードは、昇格前に既に候補ブロックを受信していれば、新しい候補ブロックを生成しない。
これとは異なり、プロデューサーノードは、昇格前に候補ブロックを受信していなければ、新しい候補ブロックを生成する(S330)。
一部の実施形態において、サイナーノードがプロデューサーノードに昇格された後、ネットワーク状態によって候補ブロックを生成できないことがある。例えば、コンピューティングパワー問題やその他の原因でブロックチェーン上の以前のブロックの投票情報を収集できないか、取引を収集できなければ、候補ブロックを生成できない。したがって、プロデューサーノードが必ず1つの候補ブロックを生成することと限定されるわけではない。
プロデューサーノードは、候補ブロックを生成しながら、以前のラウンドで承認された承認ブロックの投票情報を新しく生成した候補ブロックに含めることができる。また、プロデューサーノードは、新しい候補ブロックに取引内訳を含めることができる。この場合、プロデューサーノードは、ネットワーク内の取引内訳を収集し、収集した取引内訳を新しい候補ブロックに含めることができる。
プロデューサーノードは、新しい候補ブロックを承認する投票情報を生成する(S340)。すなわち、プロデューサーノードは、自分が生成した候補ブロックを承認ブロックと認める承認投票を自動で行う。合わせて、プロデューサーノードがこのように投票権を行使すれば、当該ラウンドで再投票ラウンドが開始されない限り、それ以上の投票が進行しない。
プロデューサーノードは、新しい候補ブロックと投票情報のうち、少なくとも1つを他のノードに伝播する(S350)。
その後、プロデューサーノードが他のノードから候補ブロックを受信(S360)すると、受信した候補ブロックの有効性を検証する(S370)。プロデューサーノードは、有効性が検証されなかった候補ブロックを廃棄する(S371)。
プロデューサーノードは、有効性が検証された有効候補ブロックが未承認ブロックであるか否かを判断する(S380)。プロデューサーノードは、有効候補ブロックが既に承認された承認ブロックである場合、他のノードにブロックチェーン同期化を要請する(S381)。
プロデューサーノードは、未承認ブロックを他のノードに伝播する(S390)。
図7は、本発明の実施形態に係る合意をなすための方法に対するフローチャートであって、候補ブロックに対する投票数を確認して、候補ブロックを承認ブロックと認めるステップのフローチャートである。
図7を参照して、合意をなすための方法(S400)を説明する。
Nラウンドでネットワーク上における投票情報の伝播によってノードの各々は、候補ブロックに対する投票情報を収集する(S410)。ノードの各々は、収集された投票情報に基づいて候補ブロックの各々に対する承認投票数を確認し、これに基づいて第1の既設定値の投票数を取得した候補ブロックが存在するか否かを判断する(S420)。また、ネットワークに参加したノードの目録は、ノード間で伝播されるので、ノードの各々は投票数の算定が可能である。
ネットワークに参加したノードのうち一部ノードに対してのみサイナーノードに割り当てられた場合、当該サイナーノードのみが投票権を有する場合であれば、前記ノードの目録は、サイナーノードに対する目録になってもよい。また、ノードの目録は、ノードを識別できる情報を含んでもよいが、これに限定されるものではなく、ノードの目録は、単に投票が可能なノードの個数情報であってもよい。また、ノードの目録は、現在ラウンドでプロデューサーノードへの昇格が可能なノードの目録を含んでもよい。ラウンド別に許可期間が設定されるので、ラウンド別に昇格可能なノードに関する情報を当該ラウンドの開始時点に把握することもできる。
Nラウンドで、ノードの各々は、Nラウンドで生成された候補ブロックのうち、第1の既設定値の承認投票を得た候補ブロックを承認ブロックと認める(S430)。そして、ノードが候補ブロックを承認ブロックと認めると、当該候補ブロックをブロックチェーンにアップデート(S440)し、承認ブロックをネットワークに伝播する(S450)。
他の側面において、Nラウンドで、ノードの各々は、Nラウンドで生成された候補ブロックのうち、いずれか1つの候補ブロックが第1の既設定値の承認投票を得たことと確認(S420)すると、当該候補ブロックを承認ブロックと認めて、自分のブロックチェーンにアップデートしてもよい(S430)。そして、当該承認ブロックは、ネットワークに伝播してもよい(S440)。ここでの第1の既設定値の投票数を得た候補ブロックとは、投票可能なノードのうち、2/3が承認した候補ブロックを意味するが、提示した第1の既設定値に制限されるものではない。
一部の実施形態において、S420ステップでノードが第1の既設定値の投票数を取得した候補ブロックが存在しないと判断した場合、ノードは、現在ラウンドであるNラウンドの終了可否を判断する(S421)。Nラウンドが終了されない場合であれば、ノードは、引続き投票情報及び候補ブロックのうち、少なくとも1つを受信し続ける状態であるから、追加的に収集(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次再投票が開始されてもよい。
ノードの各々は、複数の候補ブロックのうち、最初の昇格ノードが生成した候補ブロックを承認する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つのラウンド内で複数個の候補ブロックを生成した場合であれば、当該プロデューサーノードを合意過程から除外させることができる。一部の実施形態において、ビザンチウムノードと判別されたノードが生成した候補ブロックは、投票対象から除外されることができる。
また、一部の実施形態において、再投票ラウンドでは、投票に記録されたブロックハッシュと合うブロックが収集されている場合にのみ、当該ブロックに対する収集された投票情報が有効得票として取り扱われることもできる。
また、同じブロックハッシュを有する投票が最も多いグループがメジャーグループになり得る。
また、再投票ラウンドで1次再投票に対してはRevision 0に配布され、その後、2次、3次などの再投票を施行する度にRevision +1が発生し得る。実施形態に係るブロックチェーンシステムは、Revision 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以上の投票が確認された状態であるから、ビザンチンノードの他にも、正直なノードがブロックを保有している状態であるといえる。ただし、不正行為の発覚などのため、選択する候補ブロックがない場合、まだブロックを生成していない参加ノードが追加ブロックを生成してもよい。
また、ビザンチンノードとしてのプロデューサーノードによるブロックチェーンの分岐誘導現象を説明する。ビザンチンノードが各プロデューサーノードに互いに異なる正常ブロックを配布する状況が発生すれば、各参加ノードは、互いに異なるブロックをメジャーブロックとして選択し、ネットワークがストップザワールド状態になる虞がある。各ノードは、自分が受けたブロックと投票情報を周辺に再度伝播するので、他のノードも分岐誘導が発生したという事実を認識できる。1つのラウンド内で複数の候補ブロックを生成したことが発覚されれば、当該ブロックのプロデューサーノードは、ブロックが候補から除外される処罰を受けることになる。残ったブロックで投票が進行されるので、分岐誘導を試みたプロデューサーノードは、自然に淘汰され得る。
また、ビザンチンノードとしてのサイナーノードの重複投票現象を説明する。ビザンチンノードが重複投票を施行して、ブロックチェーンネットワークの総投票数が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がどれか1つのグループに属するとすれば、そのグループが承認グループとして選択されることができる。
以上で説明された本発明に係る実施形態は、様々なコンピュータ構成要素を介して実行され得るプログラム命令語の形態で実現されて、コンピュータ読み取り可能な記録媒体に記録されることができる。すなわち、複数のノードの分散ネットワークで構成されたブロックチェーンシステムの少なくとも1つのプロセッサにより実行される該複数のノード間の合意をなすための方法は、プログラム命令語の形態で実現されて、コンピュータ読み取り可能な記録媒体に記録されることができる。また、複数のノードの分散ネットワークで構成されたブロックチェーンシステムの少なくとも1つのノードの少なくとも1つのプロセッサにより実行されるが複数のノード間の合意をなすための方法は、プログラム命令語の形態で実現されて、コンピュータ読み取り可能な記録媒体に記録されることができる。該コンピュータ読み取り可能な記録媒体は、プログラム命令語、データファイル、データ構造などを単独でまたは組み合わせて含むことができる。該コンピュータ読み取り可能な記録媒体に記録されるプログラム命令語は、本発明のために特別に設計され、構成されたものであるか、コンピュータソフトウェア分野の当業者に公知されて使用可能なものである。コンピュータ読み取り可能な記録媒体の例には、ハードディスク、フロッピー(登録商標)ディスク、及び磁気テープのような磁気媒体、CD−ROM及びDVDのような光気録媒体、フロプティカルディスク(floptical disk)のような磁気−光媒体(magneto−optical medium)、及びROM、RAM、フラッシュメモリ140などのような、プログラム命令語を格納し、実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令語の例には、コンパイラによって作られるような機械語コードだけでなく、インタプリタなどを使用してコンピュータにより実行され得る高級言語コードも含まれる。ハードウェア装置は、本発明に係る処理を行うために、1つ以上のソフトウェアモジュールに変更されることができ、その反対も同様である。
本発明において説明する特定実行等は、一実施形態であって、いかなる方法でも本発明の範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、該システムの他の機能的な側面等の記載は省略されることができる。また、図面に図示された構成要素間の線等の接続または接続部材などは、機能的な接続及び/又は物理的または回路的接続を例示的に示したものであって、実際装置では、代替可能であるか、追加の様々な機能的な接続、物理的な接続、または回路接続として表されることができる。また、「必須な」、「重要に」などのように、具体的な言及がなければ、本発明の適用のために必要な構成要素でない場合がある。
また、説明した本発明の詳細な説明では、本発明の好ましい実施形態を参照して説明したが、当該技術分野の熟練された当業者または当該技術分野における通常の知識を有する者であれば、後述する特許請求の範囲に記載された本発明の思想及び技術領域から逸脱しない範囲内で本発明を様々に修正及び変更させ得ることが理解できるであろう。したがって、本発明の技術的範囲は、明細書の詳細な説明に記載された内容に限定されるものではなく、特許請求の範囲により決められなければならない。

Claims (19)

  1. ラウンド毎に予め決められた時点にブロック生成地位を有するプロデューサーノードに昇格され得る複数のノードのうち、いずれか1つの第1のノードが第Nのラウンドで候補ブロックを受信すること、
    受信された候補ブロックが有効候補ブロックであるか判断すること、
    前記有効候補ブロックが未承認ブロックであるか判断すること、及び
    前記未承認ブロックが最初の受信候補ブロックであるか判断し、前記未承認ブロックに対する承認投票可否を決定すること、
    を含み、
    前記最初の受信候補ブロックは、前記第1のノードが前記第Nのラウンド内で最初に受信した候補ブロックである、複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  2. 前記未承認ブロックを他のノードに送信すること、及び
    前記最初の受信候補ブロックを承認する投票情報を他のノードに送信すること、
    をさらに含む、請求項1に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  3. 前記第Nのラウンドで生成された未承認ブロックのうち、投票数が既設定値以上である未承認ブロックを承認ブロックと認めることをさらに含む、請求項2に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  4. 前記第Nのラウンドでプロデューサーノードに昇格された全てのノードは、第N+1のラウンドでプロデューサーノード地位が喪失され、前記承認ブロックと認められた候補ブロックを生成したノードの次の順番ノードが第N+1のラウンドで1番目のプロデューサーノードに昇格することをさらに含む、請求項3に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  5. 前記第Nのラウンドで複数の未承認ブロックのうち、投票数が既設定値以上である未承認ブロックが存在しない場合、再投票ラウンドが開始されること、及び
    前記再投票ラウンド期間の間、予め設定された優先順位によって前記複数の未承認ブロックに対する再投票を進行させること、
    をさらに含み、
    前記再投票ラウンドの間、新しい候補ブロックの生成を中断する、請求項2に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  6. 前記再投票を進行させることは、
    投票可能な複数のノードが前記複数の未承認ブロックのうち、既設定値以上の投票数を得た未承認ブロックに対して承認再投票することを含む、請求項5に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  7. 前記再投票を進行させるステップは、
    前記複数の未承認ブロックのうち、既設定値以上の投票数を得た複数の未承認ブロックが存在する場合、前記複数の未承認ブロックの各々を生成したノードのうち、最初の昇格ノードが生成した未承認ブロックに対して承認再投票することをさらに含み、
    前記最初の昇格ノードは、前記第Nのラウンドでプロデューサーノードへの昇格順序が最も早いノードである、請求項6に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  8. 前記有効候補ブロックであるか判断することは、
    前記受信された候補ブロックを生成したノードの昇格可否を判断することと、及び
    前記受信された候補ブロックが昇格されたノードが生成したブロックである場合、前記受信された候補ブロックを有効候補ブロックと認めること、
    を含む、請求項1に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  9. 前記有効候補ブロックが未承認ブロックであるか判断することは、
    前記有効候補ブロックに対する既設定値以上の投票結果を含む次のブロックの存否を判断すること、及び
    前記次のブロックが存在する場合、前記有効候補ブロックを承認ブロックと認めて、前記分散ネットワークに前記承認ブロックに対する同期化を要請すること、
    を含む、請求項1に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  10. 任意のラウンドが進行される間、プロデューサーノードへの昇格の地位を有する複数のノードは、順序どおりに昇格される、請求項1に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  11. 前記既設定値は、前記複数のノードの個数の2/3に該当する、請求項3または4に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  12. 前記ラウンド毎に前記複数のノードの各々は、1回の投票権を有する、請求項2に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  13. 前記複数のノードのうち、いずれか1つのノードが投票情報を受信すること、
    受信された投票情報の有効性を検証すること、及び
    有効性が検証された投票情報を他のノードに伝播すること、
    をさらに含む、請求項2に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  14. 特定ラウンドが進行される間、前記複数のノードのうち、いずれか1つのノードは、投票情報を受信すれば、既設定値以上の投票数を取得した候補ブロックの存在可否を判断し、既設定値以上の投票数を取得した候補ブロックが存在すれば、既設定値以上の投票数を得た未承認ブロックを承認ブロックと合意する、請求項2に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  15. ラウンド毎に予め決められた時点にブロック生成地位を有するプロデューサーノードに昇格され得る複数のノードのうち、いずれか1つの第2のノードが第Nのラウンドで昇格されること、
    前記第Nのラウンド内で前記第2のノードが昇格前の候補ブロックを受信したかを判断すること、
    前記昇格前の候補ブロックの未受信時、新しいブロックが連結される前記ブロックチェーン上の最後のブロック内の投票情報を含む候補ブロックを生成すること、
    生成された候補ブロックを承認ブロックと認める投票をすること、及び
    前記候補ブロックと投票情報を他のノードに送信すること、
    を含む、複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  16. 前記第2のノードが前記昇格前の候補ブロックを受信した場合、前記第2のノードは、前記新しいブロックを生成しない、請求項15に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  17. 前記新しいブロックは、前記第Nのラウンドで前記新しいブロックを承認ブロックと承認する投票に対する投票数に基づいた、承認ブロックと合意可能なブロックである、請求項15に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  18. 前記第Nのラウンドで昇格された前記第2のノードは、他のノードが生成した候補ブロックを受信すること、
    受信された前記候補ブロックが有効候補ブロックであるか判断すること、
    前記有効候補ブロックが未承認ブロックであるか判断すること、及び
    前記未承認ブロックを他のノードに送信すること、
    をさらに含む、請求項15に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
  19. 任意のラウンドが進行される間、プロデューサーノードへの昇格の地位を有する複数のノードは順序どおりに昇格される、請求項15に記載の複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法。
JP2019169619A 2018-09-18 2019-09-18 複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法 Active JP6998348B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180111496A KR102130062B1 (ko) 2018-09-18 2018-09-18 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템
KR10-2018-0111496 2018-09-18

Publications (2)

Publication Number Publication Date
JP2020048195A true JP2020048195A (ja) 2020-03-26
JP6998348B2 JP6998348B2 (ja) 2022-01-18

Family

ID=69773401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019169619A Active JP6998348B2 (ja) 2018-09-18 2019-09-18 複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法

Country Status (3)

Country Link
US (1) US11177939B2 (ja)
JP (1) JP6998348B2 (ja)
KR (1) KR102130062B1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3061603A1 (en) * 2018-11-14 2020-05-14 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结合的共识机制方法
EP4165516A4 (en) * 2020-06-16 2024-01-24 Lenovo Beijing Ltd METHOD AND APPARATUS FOR BLOCKCHAIN AWARENESS MOBILE VEHICLE COMMUNICATION
KR102366638B1 (ko) * 2020-07-09 2022-02-25 주식회사 한빛소프트 게임 클라이언트의 참여 증명 기반 블록체인 시스템 및 이를 이용한 블록 보상 합의 방법
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 深圳富联富桂精密工业有限公司 基于区块链的规则更新方法、电子设备及存储介质
CN114817399A (zh) * 2021-09-06 2022-07-29 支付宝(杭州)信息技术有限公司 区块管理方法及装置
CN113849191B (zh) * 2021-11-30 2022-02-22 支付宝(杭州)信息技术有限公司 智能合约部署方法、系统、装置及存储介质
GB2620902A (en) * 2022-03-23 2024-01-31 The Blockhouse Tech Limited Blockchain data processing
KR20240036260A (ko) * 2022-09-13 2024-03-20 주식회사 블룸테크놀로지 블록체인 합의 시스템 및 방법
KR20240063659A (ko) * 2022-11-03 2024-05-10 삼성전자주식회사 전자 장치 및 전자 장치에서 데이터를 검증하는 방법
CN116233132B (zh) * 2023-05-08 2023-07-18 成都理工大学 基于改进Raft共识机制的能源区块链节点共识方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017188883A (ja) * 2017-03-23 2017-10-12 株式会社bitFlyer プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム
KR20170137388A (ko) * 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
WO2018043599A1 (ja) * 2016-08-30 2018-03-08 ソラミツ株式会社 情報共有システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
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
JP6358658B2 (ja) 2015-11-09 2018-07-18 日本電信電話株式会社 ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム
US10360191B2 (en) * 2016-10-07 2019-07-23 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
WO2018209542A1 (zh) * 2017-05-16 2018-11-22 北京大学深圳研究生院 一种用于去中心化域名系统的共识方法
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170137388A (ko) * 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
WO2018043599A1 (ja) * 2016-08-30 2018-03-08 ソラミツ株式会社 情報共有システム
JP2017188883A (ja) * 2017-03-23 2017-10-12 株式会社bitFlyer プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム

Also Published As

Publication number Publication date
JP6998348B2 (ja) 2022-01-18
KR102130062B1 (ko) 2020-07-03
US11177939B2 (en) 2021-11-16
KR20200032449A (ko) 2020-03-26
US20200092085A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
JP6998348B2 (ja) 複数のノードの分散ネットワークで構成されたブロックチェーン上の複数のノード間の合意をなすための方法
JP7408619B2 (ja) ブロックチェーンネットワークにおいて大規模分散メモリプールを管理するためのコンピュータ実装されたシステム及び方法
Jesus et al. A survey of how to use blockchain to secure internet of things and the stalker attack
JP7208164B2 (ja) ブロックチェーン・ネットワークにおいてラージ・ブロックを管理するためのコンピュータ実装システム及び方法
US11411721B2 (en) Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
JP6355168B2 (ja) ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム
EP3545665B1 (en) System and method for detecting replay attack
Tran et al. Optimal sybil-resilient node admission control
WO2017082238A1 (ja) ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム
EP3586493A1 (en) Method for mining a block in a decentralized blockchain consensus network
JP2024038152A (ja) ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード
JP7319961B2 (ja) 一対の結合ブロックチェーンを構成するバイナリブロックチェーンに関連するコンピュータ実装システム及び方法
CN113746858B (zh) 一种基于可验证随机函数的跨链通信方法
Wang et al. DAG blockchain-based lightweight authentication and authorization scheme for IoT devices
CN110610421B (zh) 分片框架下的保证金管理方法及装置
Sohrabi et al. On the scalability of blockchain systems
KR102081159B1 (ko) 블록체인 시스템 및 블록체인 시스템에서 복수의 노드들이 메시지를 검증 및 전파하는 방법
Guo et al. A double auction for charging scheduling among vehicles using dag-blockchains
Gojka et al. Security in distributed ledger technology: An analysis of vulnerabilities and attack vectors
CN109120437B (zh) 基于dabft共识机制的人工智能区块云生态系统
Bai et al. Blockchain-based Authentication and Proof-of-Reputation Mechanism for Trust Data Sharing in Internet of Vehicles.
Tang et al. PSSBP: A privacy-preserving scope-query searchable encryption scheme based on blockchain for parking lots sharing in vehicular networks
Sgier Bazo–A Cryptocurrency from Scratch
KR102130900B1 (ko) 블록체인 시스템에서의 고속 합의 방법
Li et al. A blockchain-based communication non-repudiation system for conversational service

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190918

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210622

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211220

R150 Certificate of patent or registration of utility model

Ref document number: 6998348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150