(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-26
(54)【発明の名称】コンセンサスメカニズムを有する分散ネットワーク
(51)【国際特許分類】
H04L 9/32 20060101AFI20221219BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022523573
(86)(22)【出願日】2020-10-22
(85)【翻訳文提出日】2022-06-16
(86)【国際出願番号】 EP2020079824
(87)【国際公開番号】W WO2021078903
(87)【国際公開日】2021-04-29
(31)【優先権主張番号】PCT/EP2019/078767
(32)【優先日】2019-10-22
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】521435190
【氏名又は名称】デフィニティ スティフトゥング
【氏名又は名称原語表記】DFINITY STIFTUNG
【住所又は居所原語表記】Stockerstrasse 47, 8002 Zuerich Switzerland
(74)【代理人】
【識別番号】110002664
【氏名又は名称】弁理士法人相原国際知財事務所
(72)【発明者】
【氏名】カメニッシュ, ヤン
(72)【発明者】
【氏名】ドライヴェールズ, マヌ
(72)【発明者】
【氏名】ラウコ, ロベルト
(72)【発明者】
【氏名】ハンケ, ティモ
(72)【発明者】
【氏名】モヴァヘディ, マーヌシュ
(72)【発明者】
【氏名】ウィリアムズ, ドミニク
(57)【要約】
本発明の一態様は、複数のネットワークノードを含む分散ネットワークに関する。分散ネットワークは、一連の価値について有利な方法で合意を形成する方法を実行するように構成されている。この方法は、連続した公証ラウンドで行う。公証ラウンドは、シーケンスに追加される価値提案を作成し、価値提案を複数のノードの公証サブセットに通信し、受理した価値提案の妥当性検査を行うステップで構成される。公証ラウンドは、有効な価値提案のサブセットに対して個別の公証署名を実行するさらなるステップを含み得る。
公証ラウンドは、価値提案の整合性検査を行うこと、および価値提案のサブセットに対して一貫性署名を実行することをさらに含み得る。この方法は、事前に定義された一連のファイナリティ規則が満たされると価値提案をファイナライズするファイナリティ手順をさらに含み得る。
【選択図】
図17
【特許請求の範囲】
【請求項1】
複数のネットワークノードを備える分散ネットワークであって、
前記分散ネットワークは、特に非同期コンセンサスプロトコルにより、一連の価値について合意を形成する方法を実行するように構成されており、
前記方法は、連続した複数の公証ラウンドを行うステップを備え、
前記公証ラウンドは、
1つ以上のネットワークノードが、シーケンスに追加される価値提案を作成するステップであって、前記価値提案が前の公証ラウンドの親価値提案へのリンクを含むステップと、
前記複数のノードの公証サブセットに前記価値提案を通信するステップと、
前記複数のノードの前記公証サブセットが、受理した価値提案の妥当性検査を行うステップであって、前記妥当性検査が、前記受理した価値提案が事前に定義された一連の妥当性規則に準拠しているかどうかの検査を含むステップと、
前記複数のノードの前記公証サブセットが、前記妥当性検査に則って妥当である前記価値提案のサブセットにおいて、個別の公証署名を実行して通信するステップであって、それにより、個別に公証署名された価値提案を作成するステップと、
前記分散ネットワークが、事前に定義された一連の公証規則を満たすと、特に、事前に定義された数の個別の公証署名が収集されると、前記価値提案を公証するステップであって、それにより、前記それぞれの公証ラウンドについて完全に公証された価値提案を作成するステップと、
前記公証サブセットの前記ノードが、現在の公証ラウンドで実行されたそれ自身の個別の公証署名に関して、前記1つ以上の連続した公証ラウンドの価値提案の整合性検査を行うステップであって、前記整合性検査は、前記1つ以上の連続した公証ラウンドの価値提案が、事前に定義された一連の整合性規則に準拠するかどうかを検査することを含むステップと、
前記公証サブセットの前記ノードが、前記一連の整合性規則に則って整合された前記価値提案のサブセットにおける整合性署名を実行して通信し、それによって整合性署名された価値提案を作成するステップと、を含み、
前記方法は、ファイナリティ手順をさらに備え、前記ファイナリティ手順は、
前記分散ネットワークが、前記価値提案が、事前に定義された一連のファイナリティ規則を満たすと、それにより、ファイナライズされた価値を作成するステップであって、前記一連のファイナリティ規則は、事前に定義された最小数の整合性署名を含むステップと、
前記ファイナライズされた価値を、前記価値のシーケンスに追加するステップと、を含む、分散ネットワーク。
【請求項2】
前記方法は、現在の公証ラウンドにおいて完全に公証された価値提案が観察されると、前記整合性検査を実行するステップをさらに備える、請求項1に記載の分散ネットワーク。
【請求項3】
前記価値提案は、前記現在の公証ラウンドの番号を備える、請求項1または2に記載の分散ネットワーク。
【請求項4】
前記一連の妥当性規則は、対応する親の価値提案が完全に公証されている場合にのみ、価値提案が妥当であることを明示する、請求項1から3までのいずれか1項に記載の分散ネットワーク。
【請求項5】
受理した価値提案の前記妥当性検査を行うことは、前記受理した価値提案の1つ以上の特徴の検査を備える、請求項1から4までのいずれか1項に記載の分散ネットワーク。
【請求項6】
前記1つ以上の特徴は、前記受理した価値提案を作成する前記ネットワークノード、前記受理した価値提案のコンテンツ、および前記受理した価値提案とリンクされた前の価値提案のコンテンツ、からなるグループの中から選択される、請求項5に記載の分散ネットワーク。
【請求項7】
価値提案は、前記公証サブセットのそれぞれのノードが、前記現在の公証ラウンドにおいて、前記価値提案と矛盾する個別の公証署名を実行していないとき、前記一連の整合性規則に整合していると見なす、請求項1から6までのいずれか1項に記載の分散ネットワーク。
【請求項8】
現在の公証ラウンドの価値提案は、前記公証サブセットのそれぞれのノードが、前記現在の公証ラウンドにおいて前記価値提案とは異なる価値提案の個別の公証署名を実行していないとき、前記一連の整合性規則に整合していると見なす、請求項1から7までのいずれか1項に記載の分散ネットワーク。
【請求項9】
現在の公証ラウンドの価値提案は、前記現在の公証ラウンドで前記公証サブセットのそれぞれのノードが個別の公証署名を実行したすべての価値提案は、前記前の公証ラウンドの価値提案に遡って参照するとき、前記一連の整合性規則に整合していると見なされる、請求項1から8までのいずれか1項に記載の分散ネットワーク。
【請求項10】
前記一連のファイナリティ規則は、価値提案において事前に定義された数の整合性署名が観察されると、前記価値提案において満たされたとする構成である、請求項1から9までのいずれか1項に記載の分散ネットワーク。
【請求項11】
前記一連のファイナリティ規則は、価値提案においいて事前に定義された数の整合性署名がすでに観察されており、前記価値提案が完全に公証されていると、前記価値提案において満たされたとする構成である、請求項1から10までのいずれか1項に記載の分散ネットワーク。
【請求項12】
前記方法は、現在の公証ラウンドにおいて完全に公証された価値提案が観察されると、前記方法の次の公証ラウンドに移動するステップ、をさら備える、請求項1から11までのいずれか1項に記載の分散ネットワーク。
【請求項13】
前記公証ラウンドは、各々の公証ラウンドの開始時におけるタイムアウト期間を含み、前記複数のノードの前記公証サブセットは、前記タイムアウト期間が終了するまで、個別の公証署名の実行を待機するように構成される、請求項1から12までのいずれか1項に記載の分散ネットワーク。
【請求項14】
前記ネットワークはさらに、前記タイムアウト期間を動的に調整するように構成されている、請求項13に記載の分散ネットワーク。
【請求項15】
前記方法は、前記分散ネットワークが、個別の公証署名を、前記公証サブセットの前記複数のノードの不特定多数へ配信するステップ、をさらに備える、請求項1から14までのいずれか1項に記載の分散ネットワーク。
【請求項16】
前記方法は、前記分散ネットワークが、前記分散ネットワークの内部の整合性署名を、不特定多数へ配信するステップ、をさらに備える、請求項1から15までのいずれか1項に記載の分散ネットワーク。
【請求項17】
前記価値提案を前記公証サブセットに通信するステップは、前記価値提案を不特定多数へ配信するステップを備える、請求項1から16までのいずれか1項に記載の分散ネットワーク。
【請求項18】
前記不特定多数へ配信するステップは、ゴシッププロトコルにより行われる、請求項15から17までのいずれか1項に記載の分散ネットワーク。
【請求項19】
前記分散ネットワークは、それぞれのファイナライズされた価値のファイナリティ署名を、前記現在の公証ラウンドの前記価値提案に追加するように構成される、請求項1から18までのいずれか1項に記載の分散ネットワーク。
【請求項20】
前記分散ネットワークは、事前に定義された期間の間は同じ公証サブセットを使用するように構成される、請求項1から19までのいずれか1項に記載の分散ネットワーク。
【請求項21】
前記分散ネットワークは、前記複数のノードの前記ステークに応じて、前記公証サブセットの前記複数のノードを選択するように構成される、請求項20に記載の分散ネットワーク。
【請求項22】
前記分散ネットワークは、前記公証サブセットの前記複数のノードを定期的に変更するように構成される、請求項1から21までのいずれか1項に記載の分散ネットワーク。
【請求項23】
前記分散ネットワークは、ランダム性ビーコンに応じて、前記公証サブセットの前記複数のノードを選択するように構成される、請求項1から22までのいずれか1項に記載の分散ネットワーク。
【請求項24】
前記個別の公証署名および/または前記整合性署名は、しきい値署名方式、多重署名方式、および集約署名方式からなるグループから選択された署名方式に基づく、請求項1から23までのいずれか1項に記載の分散ネットワーク。
【請求項25】
前記整合性署名された価値提案は、ファイナライズされる前記公証ラウンド番号と、前記現在の公証ラウンド番号と、前記署名ノードと、を備える、請求項1から24までのいずれか1項に記載の分散ネットワーク。
【請求項26】
前記価値は、ブロックチェーンに書き込まれるブロックである、請求項1から25までのいずれか1項に記載の分散ネットワーク。
【請求項27】
受理した価値提案の前記妥当性検査を行うステップは、ブロック提案のブロックヘッダーの検証を行うステップを備える、請求項26に記載の分散ネットワーク。
【請求項28】
受理した価値提案の妥当性検査を実行するステップは、ブロック提案のペイロードの検証を行うステップを含む、請求項26または27に記載の分散ネットワーク。
【請求項29】
前記分散ネットワークは、特に、前記対応するノードのノードランクにしたがって、価値提案にランクを割り当てるように構成される、請求項1から28までのいずれか1項に記載の分散ネットワーク。
【請求項30】
前記妥当性検査を行うステップは、
無効な価値提案を無視するステップと、
妥当な価値提案のリストを編集するステップと、
前記リストの最高ランクの前記妥当な価値提案に対してのみ単一の個別の公証署名を実行するステップと、を備える、請求項29に記載の分散ネットワーク。
【請求項31】
前記整合性検査を行うステップは、ファイナライズされる単一の公証ラウンドについて行われる、請求項1から30までのいずれか1項に記載の分散ネットワーク。
【請求項32】
前記分散ネットワークは、ファイナライズされる複数の公証ラウンドについて前記整合性検査を行うように構成される、請求項1から30までのいずれか1項に記載の分散ネットワーク。
【請求項33】
前記整合性検査を行うステップは、前記現在の公証ラウンドについてのみ行われる、請求項31に記載の分散ネットワーク。
【請求項34】
前記整合性検査を行うステップは、d番目、ここでdは整数、の最後の公証ラウンドについて行われる、請求項31に記載の分散ネットワーク。
【請求項35】
前記整合性検査を行うステップは、0 mod n、ここでnは事前に定義された整数、であり、かつファイナライズされていない最も古い公証ラウンドについて行われる、請求項31に記載の分散ネットワーク。
【請求項36】
前記分散ネットワークは、前記公証サブセットの前記ノードの数n、価値提案を公証して完全に公証された価値提案を作成するために必要な個別の公証署名の事前に定義された数t1、および前記一連のファイナリティ規則を満たして、式:t1+t2>n+fにしたがって価値提案をファイナライズするために必要な整合性署名の事前に定義された数t2と、を選択するように構成され、
前記分散ネットワークは、すべての公証サブセットにおいて最大でf個のノードがビザンチンであり、残りのノードは正当である、という前記セキュリティの仮定に基づいて構成される、請求項1から35までのいずれか1項に記載の分散ネットワーク。
【請求項37】
前記価値提案を前記公証サブセットに通信するステップは、前記公証ラウンドの第1の期間の間に行われ、
前記個別の公証署名および前記整合性署名の実行、ならびに前記個別の公証署名および前記整合性署名を通信、特に、不特定多数へ配信、するステップは、前記公証ラウンドの第2の期間に間に行われる、請求項1から36までのいずれか1項に記載の分散ネットワーク。
【請求項38】
前記公証ラウンドの前記第1の期間は、前記公証ラウンドの前記第2の期間と少なくとも同じ長さであり、特に、第2の期間の少なくとも2倍の長さである。請求項37に記載の分散ネットワーク。
【請求項39】
前記価値提案の大きさは少なくとも1Mバイトであり、前記個別の公証署名と前記整合性署名の大きさは200バイト未満である、請求項37または38に記載の分散ネットワーク。
【請求項40】
前記分散ネットワークは、前記価値提案の通信に少なくとも60%の時間を使用するように構成されている、請求項1から39までのいずれか1項に記載の分散ネットワーク。
【請求項41】
分散ネットワークにおいて行われる非同期コンセンサスプロトコルにより、一連の価値について合意を形成するためにコンピュータに実装される方法であって、
前記方法は連続した複数の公証ラウンドを行い、前記公証ラウンドは、
前記分散ネットワークの1つ以上のネットワークノードが、シーケンスに追加される価値提案を作成するステップであって、前記価値提案は前の公証ラウンドの親価値提案へのリンクを含むステップと、
前記価値提案を前記複数のノードの公証サブセットに通信するステップと、
前記複数のノードの前記公証サブセットが、受理した価値提案の妥当性検査を行うステップであって、前記妥当性検査は、前記受理した価値提案が事前に定義された一連の妥当性規則に準拠しているかどうかの検査を含むステップと、
前記複数のノードの前記公証サブセットが、妥当性検査に則って妥当である前記価値提案のサブセットについて個別の公証署名を実行して通信するステップであって、それにより個別に公証された署名された価値提案を作成するステップと、
前記分散ネットワークが、事前に定義された一連の公証規則が満たされる、特に、事前に定義された数の個別の公証署名が収集されると、価値提案を公証するステップであって、それによりそれぞれの前記公証ラウンドの完全に公証された価値提案を作成するステップと、
前記現在の公証ラウンドにおいて実行されたそれ自身の個別の公証署名について、1つ以上の公証ラウンドの前記価値提案の整合性検査を行うステップであって、前記整合性検査は、前記価値提案が事前に定義された一連の整合性規則に準拠しているかどうかの検査を含むステップと、
前記公証サブセットの前記複数のノードが、前記一連の整合性規則に整合する前記価値提案のサブセットについて整合性署名を実行して通信するステップと、
ファイナリティ手順を行うステップと、を含み、
前記ファイナリティ手順を行うステップは、前記分散ネットワークが、前記価値提案が事前に定義された一連のファイナリティ規則を満たすと、前記価値提案をファイナライズし、それによりファイナライズされた値を作成するステップであって、前記一連のファイナリティ規則は、事前に定義された最小数の整合性署名を含むステップと、前記最終的な価値を前記価値のシーケンスに追加するステップと、を備える、コンピュータに実装される方法。
【請求項42】
請求項1から40までのいずれか1項に記載の分散ネットワーク用にネットワークノードであって、前記ネットワークノードは、特に、請求項41に記載の方法の1つ以上のステップを実行するように構成される、ネットワークノード。
【請求項43】
請求項1から40までのいずれか1項に記載の分散ネットワークを動作させるコンピュータプログラム製品であって、前記分散ネットワークは複数のネットワークノードを備え、前記コンピュータプログラム製品は、具体化されたプログラム命令が格納されたコンピュータ可読記憶媒体を備え、前記プログラム命令は、前記複数のノードのうちの1つ以上により実行可能であり、前記複数のノードのうちの1つ以上に、請求項41に記載のコンピュータに実装される方法のステップの1つ以上を含む方法を実施させる、コンピュータプログラム製品。
【請求項44】
請求項1から40までのいずれか1項に記載の分散ネットワークのノードを動作させる前記コンピュータプログラム製品であって、前記コンピュータプログラム製品は、具体化されたプログラム命令が格納されたコンピュータ可読記憶媒体を備え、前記プログラム命令は、前記複数のノードのうちの1つ以上により実行可能であり、前記ノードに、請求項41に記載のコンピュータに実装される方法のステップの一つ以上を実施させる、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のネットワークノードを含む分散ネットワークに関する。分散ネットワークは、一連の価値について合意を形成するように、特に、ブロックチェーンに書き込まれるブロックについて合意を形成するように構成されている。
【0002】
さらなる態様では、価値のシーケンス、特に、ブロックチェーンに書き込まれるブロック、分散ネットワークのノード、対応するコンピュータプログラム製品、および非一時的な媒体において符号化されたソフトウェアアーキテクチャについて合意を形成する、コンピュータへ実装された方法に関する。
【背景技術】
【0003】
分散ネットワークでは、複数のノードが分散して配置される。分散ネットワークの計算では、ソフトウェアとデータが複数のノードに亘って分散する。ノードは計算リソースを定めて、分散ネットワークは分散計算技術を使用し得る。
【0004】
分散ネットワークの一例は、ブロックチェーンネットワークである。ブロックチェーンネットワークは、コンセンサスベースのブロックベースの電子帳簿である。各々のブロックは、トランザクションおよびその他の情報で構成される。さらに、各々のブロックには前のブロックのハッシュが含まれており、ブロックがチェーン化されて、ブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不可能な記録が作成される。トランザクションは、スマートコントラクトとして知られる既知の小さなプログラムを呼び出すことがある。
【0005】
トランザクションをブロックチェーンに書き込むためには、トランザクションが「検証」され、ネットワークにより合意されている必要がある。言い換えると、ネットワークノードはブロックチェーンに書き込まれるブロックについての合意形成は必要がある。このような合意は、さまざまなコンセンサスプロトコルにより実現し得る。
【0006】
ブロックチェーンネットワークの1つのタイプでは、合意はプルーフオブワークアルゴリズムを使用して実現される。プルーフオブワークコンセンサスプロトコルは、コンセンサスプロトコルに参加する当事者からの作業を必要とすることが一般的であり、これは通常、コンピュータによる処理時間に相当する。ビットコインなどのプルーフオブワークベースの暗号通貨システムでは、計算量の多いパズルを解くことに関与する。
【0007】
もう1つのタイプのコンセンサスプロトコルは、プルーフオブステークアルゴリズムに基づく。このようなプルーフオブステークプロトコルには、計算に大量の時間とエネルギーを必要としないという利点がある。プルーフオブステークベースのブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダムな選択とネットワーク内のそれぞれのノードの掛け金の組み合わせにより選択される。
【0008】
暗号通貨とは別に、分散ネットワークは他のさまざまなアプリケーションに使用し得る。特に、分権型および分散型の計算機能とサービスを提供するために使用し得る。この目的のために、ノードのクラッシュや敵対的な攻撃が存在する場合であっても、アプリケーションを確実に実行して複数のノードに亘って状態を保存するように、分散ネットワークは、ステートマシンレプリケーションプロトコルを使用し得る。
【0009】
ブロックチェーンネットワークで使用されるコンセンサスプロトコルは、「ビザンチンフォールトトレラント」(BET)コンセンサスプロトコルを適用することで、ブロックに含まれるトランザクションの確実な決裁に速く到達するように設計可能である。「同期」BFTプロトコルは、安全性のためにネットワーク同期の仮定に依存する。一方、「非同期」BETプロトコルは異なっている。非同期BFTプロトコルでは、通常、1/3(3分の1)未満の参加ノードの破損は許容可能である。
【0010】
ただし、高度なコンセンサスメカニズムと機能を備えた分散ネットワークの必要性は残る。
【発明の概要】
【課題を解決するための手段】
【0011】
したがって、本発明の一態様の1つの目的は、特に、非同期コンセンサスプロトコルについて、特に、スループットの観点から、高度な方法で一連の価値について合意を形成するように構成された分散ネットワークを提供することである。
【0012】
本発明の一態様の一実施形態によれば、請求項1に記載の分散ネットワークが提供される。
【0013】
より具体的には、本発明の実施形態による分散ネットワークは、複数のネットワークノードを備え得る。分散ネットワークは、特に、非同期コンセンサスプロトコルによって、一連の価値について合意を形成するための方法を実行するように構成され得る。この方法は、連続して公証ラウンドを行うステップを備え得る。公証ラウンドには、連続した公証ラウンド番号を付加し得る。公証ラウンドは、単にラウンドとして示し得る。公証ラウンドは、以下に記載されるステップを行う間のラウンドのいくつかの実施形態を示すものとする。公証ラウンドは、1つ以上のネットワークノードが、シーケンスに追加される価値提案を作成し、それらの価値提案を複数のノードの公証サブセットに通信するステップを備え得る。一実施形態によれば、価値提案は、前の公証ラウンドの親価値提案へのリンクを備え得る。
【0014】
公証サブセットは、以下に説明するように公証ラウンドのステップを行う複数のノードのサブセットのいくつかの実施形態を示すものとする。公証サブセットは、単にサブセットまたは最初のサブセットとして示され得る。この方法は、複数のノードの公証サブセットが、受理した価値提案の妥当性検査を行うことをさらに備え得る。
【0015】
妥当性検査は、受領した価値提案が事前に定義された一連の妥当性規則に準拠しているかどうかの検査を備え得る。公証ラウンドは、複数のノードの公証サブセットが、妥当性検査に則って妥当である価値提案のサブセットにおいて、個別の公証署名を実行して通信するさらなるステップを備え得る。これにより、個別に公証署名された価値提案が作成される。
【0016】
個別の公証署名は、いくつかの実施形態によれば、公証サブセットの個別のノードによる電子署名を示すことが必須である。
【0017】
一実施形態によれば、公証ラウンドは、事前に定義された数の個別の公証署名が収集される、または観察されると、分散ネットワークが価値提案を公証する、さらなるステップを備え得る。これにより、それぞれの公証ラウンドの完全に公証された価値提案が作成される。
【0018】
公証ラウンドは、公証サブセットの複数のノードが、現在の公証ラウンドで実行されたそれ自体の個別の公証署名ついて、1つ以上の公証ラウンドの価値提案の整合性検査を行うさらなるステップを備え得る。整合性検査は、1つ以上の連続する公証ラウンドの価値提案が事前に定義された一連の整合性規則に準拠しているかどうかの検査で構成される。
【0019】
いくつかの実施形態によれば、事前に定義された一連の整合性規則は、現在の公証ラウンドで実行される各々のノードの独自の公証署名を考慮する。
【0020】
公証ラウンドは、公証サブセットのノードが、一連の整合性規則に則って整合する価値提案のサブセットにおいて、整合性署名を実行し通信するさらなるステップを備え得、それにより、整合性署名された価値提案を作成する。
【0021】
整合性署名は、いくつかの実施形態によれば、公証サブセットの個々のノードによる電子署名を示すことが必須である。
【0022】
この方法は、整合性署名に基づく。言い換えれば、整合性署名を考慮するファイナリティ手順をさらに備え得る。ファイナリティ手順は、価値提案が事前に定義された一連のファイナリティ規則を満たすと、分散ネットワークが、価値提案をファイナライズするステップを備え得る。一連のファイナリティ規則は、事前に定義された最小数の整合性署名を備え得る。事前に定義された整合性署名の最小数は、ファイナライズに十分な基準または必要な基準であり得る。
【0023】
ファイナリティ手順の結果として、ファイナライズされた価値を作成し得る。ファイナリティ手順は、ファイナライズされた価値を、価値のシーケンスに追加するさらなるステップを備え得る。
【0024】
いくつかの実施形態によれば、ファイナライズされた価値は、分散ネットワークが価値のシーケンスへの追加が必須であるという合意を形成した価値として定義され得る。
【0025】
よって、本発明のいくつかの実施形態によれば、公証ラウンドおよびファイナリティ手順は、パイプライン形式で交互に行うことが可能である。より具体的には、分散ネットワークは、公証ラウンドが終了する前に、すでに新しい公証ラウンドに進み、新しい価値提案の作成を開始し得る。言い換えれば、公証ラウンドとファイナリティ手順は非同期で機能し得る。それにより、システムのスループットが大幅に向上し得る。
【0026】
いくつかの実施形態によれば、連続する公証ラウンドは、互いに部分的に重複し得る。すなわち、前の公証ラウンドが終了していなくても、次の公証ラウンドが開始され得る。
【0027】
一連の整合性規則に則って作成された整合性署名に基づくファイナリティ手順は、非同期コンセンサスプロトコルであっても、すなわち、分散ネットワークのノード間の通信について、同期を前提とすることなしに、ビザンチンモデルの合意方法の安全性を保証し得る。
【0028】
いくつかの実施形態によれば、非同期コンセンサスプロトコルは、分散ネットワークのノードが事前に定義された時間内に各々のメッセージ、特に、各々の個別の公証署名および各々の整合性署名、を受理する保証がないにもかかわらず、合意の成功を保証するように構成されるプロトコルとして定義され得る。
【0029】
いくつかの実施形態によれば、公証サブセットへの価値提案の通信は、公証ラウンドの第1の期間、ならびに、個別の公証署名および整合性署名を実行する間に行い得る。個別の公証署名および整合性の通信は、公証ラウンドの(その後の)第2の期間に行い得る。
【0030】
これは、非同期コンセンサスプロトコル用の非常に効率のよい通信方式である。より具体的には、価値提案を通信した後、第2の期間に配置される必要な通信ラウンドは2つだけであり、1つは公証署名の通信用であり、1つは(その後の)整合性署名の通信用である。第2の期間に配置された2つの通信ラウンドのうちの第1の通信ラウンドの後、具体化された方法は次の公証ラウンド、つまり次の価値提案の通信を、ファイナリティ手順の完了を待たずに完了するために第2の期間に配置された2つの通信ラウンドのうちの第2の通信ラウンドを待たずにすでに継続し得る。そのような実施形態は、非同期コンセンサス方式の休止時間、すなわち、新しい価値提案の通信に使用できない時間を短縮または最小化し得る。
【0031】
いくつかの実施形態によれば、公証ラウンドの第1の期間は、少なくとも公証ラウンドの第2の期間と同じ長さで、選択または構成され得る。いくつかの実施形態によれば、第1の期間は、第2の期間の少なくとも2倍長く、さらに別の実施形態によれば、第2の期間より3倍長くてもよい。このことは、価値提案の通信に使用できる時間が長くすることを可能にする。いくつかの実施形態によれば、分散ネットワークは、価値提案を通信するために少なくとも60%の時間を使用するように構成され得、さらなる実施形態によれば、少なくとも75%の時間で構成され得る。
【0032】
このような通信方式は、コンセンサスメカニズムのスループットを効果的に向上させ得る。いくつかの実施形態によれば、スループットは、所与の時間単位内で合意されたすべての価値提案の合計の大きさとして定義される。高スループットを達成するために、本発明のいくつかの実施形態は、大きな(バイト数での)価値提案を使用する。大きな価値提案では、価値提案を通信するために必要な帯域幅が、公証署名および整合性署名に必要な帯域幅の中で支配的になる。このスループットの観点から、いくつかの実施形態によれば、少なくとも1Mバイトの大きさを有する価値提案が有利である。さらに、いくつかの実施形態によれば、200バイト未満の大きさの個別の公証署名および整合性署名が有利である。
【0033】
価値は通常、あらゆる種類の情報である。いくつかの実施形態によれば、価値はトランザクションであり得る。さらなる実施形態によれば、価値は、ブロックチェーンのブロックであり得る。
【0034】
いくつかの実施形態によれば、妥当性検査は、ちょうど第1の検査として、一連の妥当性規則を第1の一連の規則として、そして個別の公証署名を個別の第1の署名として示し得る。
【0035】
いくつかの実施形態によれば、整合性検査はまた、第2の検査として示され得、一連の整合性規則は第2の一連の規則として示され得、整合性署名は第2の署名として示され得る。さらに、整合性署名は、個別の整合性署名として示され得る。
【0036】
いくつかの実施形態によれば、一連のファイナリティ規則はまた、第3の一連の規則として示され得る。
【0037】
以下において、公証および十分な公証という用語と、公証されたおよび完全に公証されたという用語は、交換可能に使用され得る。
【0038】
整合性検査を行うステップは、特に、現在の公証ラウンドの完全に公証された価値の提案が観察された後に実行し得る。
【0039】
一実施形態によれば、現在の公証ラウンドのための現在の価値提案を作成するステップは、特に、現在の価値提案を前の公証ラウンドの完全に公証された価値提案にリンクすることを含み得る。
【0040】
リンクは、ハッシュダイジェストによる参照であり得る。言い換えれば、リンクは、完全に公証された価値提案のハッシュダイジェストを現在の価値提案に含めることによって確立し得る。そのような実施形態によれば、新しい価値提案を作成しようとするネットワークノードは、前の公証ラウンドから親価値提案を選択しなければならない。よって、いくつかの実施形態によれば、価値提案の有向グラフが作成される。
【0041】
そのような実施形態によれば、そのような価値は、事前に相互にリンクする必要がないことに留意されたい。よって、いくつかの実施形態によれば、価値は完全に独立した価値であり得るが、価値提案は必然的に互いにリンクされている。
【0042】
一実施形態によれば、価値提案は、現在の公証ラウンド番号を含む。これにより、ネットワークのノードによる価値提案の処理が容易になる。
【0043】
公証サブセットのノードにより行われる妥当性検査の間に、価値提案が事前に定義された一連の妥当性規則に準拠しているかどうかが検査または審査される。一連の妥当性規則は、例えば、分散ネットワークの仕様の一部として指定され得る。
【0044】
一実施形態によれば、一連の妥当性規則は、対応する親価値提案が完全に公証されている場合にのみ、価値提案が妥当であると特定し得る。
【0045】
特に、事前に定義された一連の妥当性規則は、現在の公証ラウンドの価値提案が、
現在の公証ラウンドの直前の公証ラウンドの、完全に公証された価値提案にリンクし、その一方で親価値提案にリンクする、ときにのみ妥当であると定義し得る。
【0046】
さらなる実施形態によれば、事前に定義された一連の妥当性規則は、現在の公証ラウンドの価値提案が、前の公証ラウンドの完全に公証された価値提案にリンクする場合にのみ妥当であり、前の公証ラウンドは一般に現在の公証ラウンドに先行することを定義し得る。そのような実施形態によれば、「前の公証ラウンド」という用語は、以前の公証ラウンドの中の1つを意味するものとする。これは、最後の公証ラウンド、最後から2番目の公証ラウンド、最後から3番目の公証ラウンドなどになり得る。より具体的には、そのような実施形態によれば、すべてのn番目の値の提案のみが、一連の妥当性規則に則って完全に公証されなければならない。これにより、さらに並列化し得る。
【0047】
そのような実施形態によれば、完全な公証は、将来の提案がその公証に基づいて構築することを可能にするという意味で、それぞれの価値提案を妥当なものにする、すなわち、それらの親価値提案としてその価値提案を参照する。
【0048】
そのような実施形態は、完全に公証された価値提案だけが残存可能である、すなわち、価値のシーケンスに追加される機会を有するという利点を提供する。そして、この見返りとして、コンセンサスメカニズムのセキュリティを向上させる。より具体的には、事前に定義された整合性署名の数の計数に基づく価値提案のその後のファイナライズが、セキュリティの向上とともに機能して、効率的のよい方法による分岐を回避するという技術的優位性を提供する。
【0049】
さらなるいくつかの実施形態によれば、所与の価値提案の妥当性検査は、所与の価値提案の1つ以上の特徴の検査であり得る。いくつかの実施形態によれば、1つ以上の特徴は、所与の価値提案を作成したネットワークノード、所与の価値提案自体のコンテンツ、および/または所与の価値提案にリンクされる以前の価値提案のコンテンツ、特に、以前の価値提案の内容、を備え得る。いくつかの実施形態によれば、リンクは、前の価値提案のハッシュダイジェストを所与の価値提案に含めることにより確立され得る。これは、直接リンクと称される。いくつかの実施形態によれば、リンクは、所与の価値提案に直接リンクされるまで、前の提案にうちの1つが第2の前の提案などに直接リンクされるリンクの連鎖として確立され得る。この場合、最初の前の価値提案は、所与の価値提案に間接的にリンクされていると称される。
【0050】
価値提案の特徴のそのような妥当性検査は、公証された価値提案の質を改善し得る。親価値提案が完全に公証されているかどうかの検査に加えて、価値提案の特徴の妥当性検査を行い得る。
【0051】
この点で、「品質」という用語は、特に、価値提案のセマンティクスに関する品質を指すものとする。一例として、価値提案が支払いトランザクションのブロックであると、公証サブセットによる妥当性検査を使用して、特に、いくつかの実施形態によるファイナライズの前に、そのような二重支出を早期に除外され得る。
【0052】
いくつかの実施形態によれば、妥当性検査に合格することは、例えば、価値提案が既知のノードにより行われること、価値提案が独自のプルーフオブワークパズルのソリューションを含むこと、価値提案が妥当な取引のみで構成されていること、価値提案のトランザクションが特定の価値提案が直接または間接的にリンクする以前の価値提案からのいかなるトランザクションとも競合しないこと、が必要とされる。
【0053】
いくつかの実施形態によれば、公証サブセットは公証ラウンドに依存し得る、すなわち、公証サブセットは、ある公証ラウンドから次の公証ラウンドに変化し得る。
【0054】
いくつかの実施形態によれば、一連の妥当性規則は、時間とともに変化し得る。
【0055】
これにより、例えば、 分散ネットワークを、新しいまたは変更された要件、アプリケーション、またはニーズに柔軟に適応することが可能となる。
【0056】
実施形態によれば、妥当性検査は、公証サブセットの個々のノードで行われ、これらの個々のノードは、一連の妥当性規則に則って妥当である価値提案について個別の公証署名を実行し得る。言い換えれば、価値提案が個々のノードの妥当性検査に合格した場合、このノードは価値提案について個別の公証署名を実行し得る。この点で、個別の公証署名は、価値提案が署名ノードで妥当性検査に合格したことを確認する署名を含むと見なし得る。
【0057】
いくつかの実施形態によれば、公証サブセットの個々のノードは、妥当性検査に則って妥当である価値提案のサブセットについて個別の公証署名を実行する。
【0058】
特に、個々のノードは、それらが認識されており、一連の妥当性規則に則って妥当であるすべての価値提案よりも少ないものについて、個々の公証署名を実行し得る。
【0059】
これは、ファイナリティ手順の成功確率を高め得る。したがって、合意が生じる頻度も増加する、つまり、間接的に合意の平均「速度」も増加し得る。
【0060】
一例として、個別の公証署名を取得する価値提案が少ないほど、完全に公証されることが少なくなり、存在する曖昧さが少なくなる。よって、ファイナリティ手順が成功する可能性が高くなる。
【0061】
これは、提案をブロックするためのランクの割り当てを含む、本発明の別の実施形態と組み合わせると特に有用であり得る。
【0062】
そのような実施形態によれば、分散ネットワークは、ブロック提案にランクを割り当て得る。このようなランクは、対応するノードのノードランクによる実施形態にしたがって割り当て得る。他のいくつかの実施形態によれば、ランクは、ランクが対応するノードから派生していないブロック提案自体に割り当てられ得る。一例として、ブロック提案のハッシュだけがランクを定義し得る。
【0063】
いくつかの実施形態によれば、ブロック提案のランクは、ランダム性ビーコンに依存し得る。例えば、対応するノードのノードランクは、ランダム性ビーコンに依存し得る。
【0064】
いくつかの実施形態によれば、公証サブセットの個々のノードは、公証ラウンドからの1つの価値提案に対してのみ、所与の公証ラウンドについて個別の公証署名の実行を試み得る。
【0065】
このような実施形態はまた、上記のランク付けと組み合わせ得る。より具体的には、そのような実施形態によれば、ノードは、最高ランクの価値提案についてのみ個別の公証署名を実行し得る。
【0066】
これは、ファイナリティ手順の成功確率をさらに高め得る。
【0067】
いくつかの実施形態によれば、ノードは、最初に待機期間が満了するのを待つことができ、これは、以下ではタイムアウト期間として示され得、次に、これまでに受理した価値提案のどれが最高ランクであるかを評価し、次にそのための公証署名を実行する。
【0068】
ノードは、同じ公証ラウンドですでに署名された最後の価値提案よりも高いランクの価値提案を受理した場合にのみ、第2の公証署名を実行し得る。
【0069】
価値提案を公証するために、いくつかの実施形態によれば、事前に定義された一連の公証規則を満たす必要がある。事前に定義された一連の公証規則は、特に、事前に定義された数の個別の公証署名が必要であることを指定し得る。このため、ネットワーク、特に、公証サブセットのノードは、価値提案がこの要件を満たしているかどうかを観察し得る。事前に定義された一連の公証規則は、第4の一連の規則として示され得る。
【0070】
いくつかの実施形態によれば、個別の公証署名は通信され得る。特にネットワーク内で、特に公証サブセットのノード内で、例えば、ゴシッププロトコルにより不特定多数へ配信され得る。別の実施形態によれば、個別の公証署名は、公証署名を収集し、十分な公証を実行する中央機関に通信され得る。
【0071】
個別の公証署名の事前に定義された数は、それぞれの分散ネットワークのセキュリティに必要性に依存し得る。ノードは、個別の公証署名の事前に定義された数を観察すると、対応する価値提案を公証し、完全に公証された価値提案を作成し得る。これは、対応する価値提案を内部的にマーク(フラグ付け)することで行い得る。
【0072】
いくつかの実施形態によれば、これは、個別の公証署名に対して、しきい値署名方式の回復メカニズムまたは多重署名方式の集約メカニズムを実行することを備え得る。
【0073】
価値提案を公証し、完全に公証された価値提案を作成することに対応する署名は、いくつかの実施形態によれば、完全な公証署名として示され得る。
【0074】
いくつかの実施形態によれば、価値提案の完全な公証は、価値提案が一連の妥当性規則に準拠していること、特に、対応する親価値提案が完全に公証されていることの公証サブセットの確証を表し得る。
【0075】
したがって、価値提案を公証することは、公証サブセットが、価値提案が一連の妥当性規則に準拠していることを確認することとして、いくつかの実施形態にしたがって定義し得る。
【0076】
いくつかの実施形態によれば、価値提案の十分な公証は、公証サブセットにより価値提案が好ましいものであると見なされる、との公証サブセットの確証を表し得る。
【0077】
次のステップで、公証サブセットのノードが整合性検査を行う。いくつかの実施形態によれば、整合性検査は、公証ラウンドから現在の公証ラウンドまでの価値提案に対して行われる。整合性検査は、いくつかの実施形態によれば、価値提案が事前に定義された一連の整合性規則に準拠しているかどうかの検査として定義し得る。一連の整合性規則は一連の妥当性規則とは異なり、例えば、分散ネットワークの仕様の一部として特定され得る。
一連の整合性規則は、公証サブセットのノードの特定の規則を指定し得る。これにしたがって、1つ以上の公証ラウンドの価値提案が、現在の公証ラウンドで実行したそれ自身の個別の公証署名と整合性がある、または整合性がないと見なす。この点で、所与の価値提案の整合性検査は、所与の価値提案と、現在の公証ラウンドでノードにより個別に公証人が署名した価値提案との間の関係を調べる検査として定義し得る。
【0078】
一実施形態によれば、一連の整合性規則は、完全に公証された価値提案のみが整合すると見なされ得ることを特定し得る。言い換えると、ノードは完全に公証された価値提案についてのみ整合性署名を実行し得る。
【0079】
この規則の含意により、価値提案が特定の最小数の整合性署名を受け取ると、価値提案は自動的に公証されることが保証される。この利点は、公証サブセットの外部のネットワークノードが、価値提案が公証されていることの検証を省略できるところにある。ノードは、整合証明が十分に多いことを確認するだけで十分でである。これにより、分散ネットワークにより実行される合計の検証作業が減少され得る。これにより、公証署名にアクセスできない分散ネットワークの外部のオブザーバーによる検証も可能になり得る。
【0080】
一実施形態によれば、公証サブセットのそれぞれのノードが、現在の公証ラウンドにおいて、価値提案と矛盾する個別の公証署名を実行しなかったとき、価値提案は、一連の整合性規則に則って整合していると見なされる。そのような実施形態によれば、一連の整合性規則は、整合性があると見なされない特定の筋書きを定義し得る。競合を定義するそのような筋書きは、例えば、曖昧さを備える。一例として、それぞれのノードが現在の公証ラウンドにおいて、複数の価値提案のそれぞれを個別に公証署名すると、これは曖昧さを生じさせる。
【0081】
一方、公証サブセットのそれぞれのノードが、現在の公証ラウンドにおいて、現在の公証ラウンドからの任意の価値提案について、価値提案用である最大で1つの個別の公証署名を実行すると、現在の公証ラウンドの価値提案は、一連の整合性規則に則って整合していると見なされ得る。
【0082】
言い換えれば、公証サブセットのそれぞれのノードが、現在の公証ラウンドにおいて、その価値提案とは異なる任意の価値提案について、個別の公証署名を実行していないときは、その価値提案は、一連の整合性規則に則って整合していると見なされ得る。
【0083】
別の実施形態によれば、公証サブセットのそれぞれのノードが、現在の公証ラウンドにおいて、個別の公証署名を実行したすべての価値提案が、前の公証ラウンドの価値提案に遡って参照するとき、前の公証ラウンドの価値提案は、一連の整合性規則に則って整合していると見なされ得る。
【0084】
「遡って参照する」とは、前の公証ラウンドからの価値提案のハッシュダイジェストを、後の公証ラウンドからの価値提案に含めること、で確立された直接または間接のリンクが、その意味を表し得る。
【0085】
一実施形態によれば、ノードが個別の公証署名を実行した現在の公証ラウンドのすべての価値提案が、整合性検査下での価値提案に遡ってリンクするとき、一連の整合性規則は、整合性検査下での価値提案が公証サブセットのノードの観点から整合性があると定義し得る。ここで、遡ってリンクすることは、1つのステップ(直接)または複数のステップ(間接)を経てから実施することが可能である。
【0086】
そのような実施形態によれば、「前の公証ラウンド」という用語は、前の公証ラウンドのうちの1つまたは複数を意味するものとする。これには、最後の公証ラウンド、最後から2番目の公証ラウンド、最後から3番目の公証ラウンドなどが含まれ得る。言い換えれば、そのような実施形態では、それぞれのノードが現在の公証ラウンドで個別の公証署名を実行したすべての価値提案の共通の親を示すとき、価値提案は一連の整合性規則に準拠する。
【0087】
いくつかの実施形態によれば、整合性署名された価値提案は、確定される公証ラウンド番号、現在の公証ラウンド番号、および署名ノードを備える。より具体的には、整合性検査および実行された整合性署名は、いくつかの実施形態によれば、現在の公証ラウンドおよびファイナライズされる公証ラウンドの特定の組み合わせについてのみ妥当である。
【0088】
いくつかの実施形態によれば、分散ネットワーク、特に、複数のノード、特に、次の公証ラウンドの複数のノードは、現在の公証ラウンドの完全に公証された価値提案が観察されると、その方法の次の公証ラウンドに移動し得る。上述のように、公証サブセットは、ある公証ラウンドから次の公証ラウンドに変更し得、新しい公証サブセットは、公証ラウンドを開始するために、完全に公証された価値提案を遵守することをきっかけとして使用し得る。
【0089】
いくつかの実施形態によれば、それぞれのノードがその整合性署名を送付すると、そのノードが次の公証ラウンドの公証サブセットのメンバーであるとき、次の公証ラウンドを続行し得る。
【0090】
所与の公証ラウンドのファイナリティ手順は、後続の公証ラウンドと並行して実行し得る。
【0091】
ファイナリティ手順の間に、分散ネットワーク、特に公証サブセットのノードは、価値提案が、事前に定義された一連のファイナリティ規則を満たすかどうかを観察する。
【0092】
一実施形態によれば、価値提案のために事前に定義された数の整合性署名を観察すると、一連のファイナリティ規則が満たされる。したがって、公証サブセットのノードは、未確定の公証ラウンドの価値提案で実行された整合性署名の数を観察する。価値提案をファイナライズさせるには、事前に定義された数の整合性署名が必要である。価値提案をファイナライズするとは、いくつかの実施形態によれば、分散ネットワークまたは分散ネットワークに代わって動作する公証サブセットが価値提案を最終と見なすこと、すなわち、公証サブセットが価値提案を価値のシーケンスに追加することに同意したこと、を意味するものとする。
【0093】
このため、ネットワーク、特に公証サブセットのノードは、価値提案が十分な整合性署名を受理したかどうかを観察し得る。いくつかの実施形態によれば、整合性署名を、特にネットワーク内で、特に公証サブセットのノード内で、例えば、ゴシッププロトコルにより通信し得る。
【0094】
事前に定義された整合性署名の数は、それぞれの分散ネットワークのセキュリティの必要性に依存し得る。ノードが事前に定義された数の整合性署名を観察すると、対応する価値提案をファイナライズし、ファイナライズされた価値としてフラグを立て得る。これは、いくつかの実施形態によれば、対応する価値提案について、しきい値署名方式、多重署名方式、または集約署名方式を実行することで行い得る。それに対応する署名は、ファイナリティ署名として示され得る。このようなファイナリティ署名は、価値提案が最終であると見なされて価値のシーケンスに追加され、公証サブセットの確証を示し得る。
【0095】
別の実施形態によれば、価値提案において事前に定義された数の整合性署名が観察され、価値提案が完全に公証された後にのみ、価値提案は、一連のファイナリティ規則を満たし得る。よって、そのような実施形態によれば、2つの基準を遵守しなければならない。十分な公証には、整合性署名の必要な数とは異なる数の個別の公証署名が必要である。
【0096】
いくつかの実施形態によれば、分散ネットワークは、必要な数の整合性署名を受理した価値提案を確定するだけでなく、分散ネットワークまたは公証サブセットも、その確定価値により暗示される暗黙のシーケンスをシーケンスに追加し得る。そのような暗黙のシーケンスは、最終的な価値提案が遡って参照するすべての価値提案を備え得る。「遡って参照する」とは、前の公証ラウンドからの価値提案のハッシュダイジェストを、後の公証ラウンドからの価値提案に含めること、で確立された直接または間接のリンクが、その意味を表し得る。
【0097】
いくつかの実施形態によれば、ファイナリティ手順は、所与の公証ラウンドでは成功しない可能性がある。より具体的には、必要な整合性署名の数に達していないとき、特定の公証ラウンドのすべての価値提案について、ファイナライズが失敗し得る。これは、いくつかの実施形態における設計に起因する。より具体的には、公証ラウンドの1つの価値提案は、暗黙のシーケンスの一部になることで、その後、価値のシーケンスに追加される。
【0098】
本発明のいくつかの実施形態の利点は、所与の公証ラウンドについて、価値提案がファイナライズされなくても、その後の公証ラウンドが依然として妨げられることなく進行可能なところにある。
【0099】
本発明のいくつかの実施形態の利点は、所与の公証ラウンドについて、価値提案のファイナライズが遅いかまたは遅れるとき、その後の公証ラウンドは、ファイナライズされる所与の公証ラウンドの価値提案を待たずに、非同期で続行可能なところにある。
【0100】
一実施形態によれば、ネットワークは、ネットワークのそれぞれのセキュリティの仮定またはセキュリティの必要性のために構成され得る。より具体的には、分散ネットワークは、すべての公証サブセットで最大でf個のノードがビザンチンであり、残りのノードは正当であるというセキュリティの仮定に基づいて設計され得る。
【0101】
次に、いくつかの実施形態によれば、ネットワークは、公証サブセットのノードの数n、価値提案を公証して完全に公証された価値提案を作成するために必要な個別の公証署名の事前に定義された数t1、および前記一連のファイナリティ規則を満たして、式:t1+t2>n+fにしたがって価値提案をファイナライズするために必要な整合性署名の事前に定義された数t2と、を選択するように構成され得る。
【0102】
そのような実施形態は、ネットワークのそれぞれのセキュリティの必要性または仮定を考慮して、事前に定義された数t1およびt2、ならびに公証サブセットのノードの数nを調整することを可能にする。特に、そのような実施形態は、ネットワークの異なるセキュリティの仮定の成功したファイナリティ手順を保証し得る。
【0103】
本発明の別の態様の実施形態によれば、価値のシーケンスとして、特に、ブロックチェーンに書き込まれるブロックについて、合意を形成するためのコンピュータへ実装された方法が提供される。
【0104】
本発明の別の態様の一実施形態によれば、分散ネットワークのノードが提供される。
【0105】
本発明の別の態様の実施形態によれば、分散ネットワークを操作するコンピュータプログラム製品が提供される。そのコンピュータプログラム製品は、具体化されたプログラム命令が格納されたコンピュータ可読記憶媒体を備える。分散ネットワークの複数のノードのうちの1つ以上により実行可能なプログラム命令は、複数のノードのうちの1つ以上に、本発明の方法の態様のステップを実施させる。
【0106】
本発明の別の態様の実施形態によれば、非一時的なコンピュータ可読媒体上に符号化されたソフトウェアアーキテクチャが提供される。そのソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノードを動作させるように構成されている。符号化されたソフトウェアアーキテクチャは、複数のノードのうちの1つ以上により実行可能なプログラム命令を含み、複数のノードのうちの1つ以上に、本発明の方法の各々の態様のステップを含む方法を実施させる。
【0107】
本発明の一態様の特徴および利点は、必要に応じて、本発明の他の態様に適用し得るところにある。
【0108】
他の有利な実施形態は、従属請求項ならびに以下の説明に記載されている。
【0109】
本発明は、よりよく理解され、上記以外の目的は、以下の詳細な説明から明らかになるであろう。このような説明は、添付の図面を参照してなされる。
【図面の簡単な説明】
【0110】
【
図1】
図1は、本発明の一実施形態による分散ネットワークの例示的な図式である。
【
図2】
図2は、ネットワークの典型的なノードで実行される計算ユニットを、より詳細に示す図である。
【
図3】
図3は、複数のサブネットを備える本発明の一実施形態による分散ネットワークの例示的な図式である。
【
図4】
図4は、
図3の分散ネットワークで実行される計算ユニットを、より詳細に示す図である。
【
図5】
図5は、
図3のネットワークのサブネットにおいて受信されるサブネット間メッセージの概略図である
【
図6】
図6は、サブネットプロトコルクライアントのプロトコルコンポーネントの概略ブロック図である。
【
図7】
図7は、メッセージプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフローを例示的に視覚化する図である。
【
図8】
図8は、本発明の一実施形態によるアプリケーションユニットを、より詳細に示す図である。
【
図9】
図9は、本発明の一実施形態によるネットワークの各々のノードで実行される主な処理を示す図である。
【
図10】
図10は、サブネット間およびサブネット内のメッセージの交換に関与する主要な層を示す層モデルを示す図である。
【
図11】
図11は、本発明の例示的な実施形態による、コンセンサスコンポーネントによる入力ブロックの生成を示す図である。
【
図12】
図12は、ネットワーキングコンポーネントを、より詳細に示す図である。
【
図13】
図13は、本発明のいくつかの実施形態によるコンピュータへ実装された方法のそれぞれのステップを示すフローチャートである。
【
図14】
図14は、本発明のいくつかの実施形態によるコンピュータへ実装された方法のそれぞれのステップを示すフローチャートである。
【
図15】
図15は、本発明の一実施形態による公証ラウンドおよびファイナライズラウンドのそれぞれの期間を例示的に示すタイミング図である。
【
図16】
図16は、本発明の別の実施形態による公証ラウンドおよびファイナライズラウンドのそれぞれの期間を例示的に示すタイミング図である。
【
図17】
図17は、6つの連続する公証ラウンドを例示的に示すフローチャート/タイミング図である。
【
図18】
図18は、本発明によるノードの例示的な実施形態を示す図である。
【
図19a】
図19aは、非同期通信モデルおよび対応する非同期コンセンサスメカニズムを示す図である。
【
図19b】
図19bは、非同期通信モデルおよび対応する非同期コンセンサスメカニズムを示す図である。
【
図20】
図20は、本発明のいくつかの実施形態による価値提案の通信についての通信方式を示すタイミング図である。
【
図21】
図21は、本発明の別の実施形態による公証ラウンドおよびファイナライズラウンドのそれぞれの期間を例示的に示すタイミング図である。
【発明を実施するための形態】
【0111】
<発明を実行するモード>
最初に、本発明のいくつかの一般的な態様および実施形態の用語を紹介する。
【0112】
一実施形態によれば、分散ネットワークは、分散形式で配置された複数のノードを備える。このような分散ネットワークの計算では、ソフトウェアとデータが複数のノードに分散される。ノードは計算リソースを定めて、分散ネットワークは特定の分散計算技術を使用し得る。
【0113】
一実施形態によれば、分散ネットワークは、ブロックチェーンネットワークとして具体化され得る。「ブロックチェーン」という用語には、電子台帳、コンピューターベース台帳、分散型台帳のすべての形式が含まれる。
【0114】
図1に、本発明の一実施形態による分散ネットワーク100の例示的なブロック図を示す。
【0115】
分散ネットワーク100は、複数のノード10を備え、これは、ネットワークノード10またはコンピューティングノード10としても示され得る。複数のノード10のそれぞれは、1つ以上の計算ユニットを実行するように構成される。一実施形態によれば、計算ユニットは、ソフトウェアの一部として、特に、それ自体のユニット状態を備えているか、または有している、ソフトウェアの一部として理解されるべきである。
【0116】
ネットワーク100の複数のノード10は、異なるサブセットおよび/またはサブネットに割り当てられ得る。このような割り当ては、時間の経過とともに変更される可能性がある。
【0117】
この実施形態によれば、ネットワーク100は、ノード10のコンセンサスサブセットSS1と、ノード10の実行サブセットSS2とを備える。
【0118】
複数のノード100において実行される計算ユニットは、ネットワーク100のユーザーにより、計算タスクまたはサービス、特に、アプリケーションサービスを実行または要求するために使用され得る。ネットワーク100の計算ユニットは、実行メッセージの現在のセットからの、特に、実行メッセージを実行し得る。実行メッセージは、特に、ネットワークの計算ユニット間で交換されるユニット間メッセージ、および/または入力メッセージ、すなわち、外部ソースから、特に、ネットワークのユーザーから、受信されるメッセージを備え得る。ネットワーク100は、最初にコンセンサスプロトコルが実行されて、それぞれの現在の実行メッセージのセットからの実行メッセージの選択および処理順序について合意を形成するように構成される。ネットワーク100の中のノード10の数に応じて、コンセンサスプロトコルは、有利には、ネットワークのすべてのノードにより実行されるのではなく、ネットワーク100のノード10のサブセットによってのみ実行され、これは、以下、コンセンサスサブセットSS1として示される。コンセンサスサブセットSS1は、コンセンサスサブセットとして示され得る。このように、コンセンサスサブセットSS1のノードは、コンセンサスプロトコルを実行して、現在の実行メッセージのセットからの実行メッセージの選択と処理順序について合意を形成するように構成される。
【0119】
実行メッセージの実行はまた、有利には、ネットワーク100のすべてのノードにより実行されるのではなく、ネットワーク100のノード10のサブセットによってのみ実行され得る。このサブセットは、以下では実行サブセットSS2として示され、実行サブセットSS2として示され得る。
【0120】
次に、実行サブセットSS2の計算ユニットは、前のコンセンサスステップで合意された処理順序で実行メッセージの選択を個別に実行する。実行サブセットSS2の各々の計算ユニットは、決定論的な方法で実行を実行し、それにより実行サブセットSS2の対応する計算ユニットのユニット状態を変更する。
【0121】
一実施形態によれば、ユニット状態は、計算ユニットにより使用されるすべてのデータまたは情報、特に、計算ユニットが変数に格納するデータだけでなく、計算ユニットがリモート呼び出しから取得するデータ、として理解されなければならない。ユニット状態は、特に、それぞれのノードのそれぞれの記憶場所における特定の記憶場所を表し得る。これらの記憶場所の内容は、計算ユニットの実行の任意の時点で、実施形態によればユニット状態と呼ばれる。計算ユニットは、特に、ステートフル計算ユニットとして具体化し得る。すなわち、計算ユニットは、先行する事象またはユーザーの相互作用を記憶するように実施形態にしたがって設計される。
【0122】
いくつかの実施形態によれば、ネットワークの各々のノードは、他のノードのクロックと大まかに同期されたローカルクロックに従うと想定される。
【0123】
図2に、ネットワーク100のノード10上で実行される計算ユニット15を、より詳細に示す。より具体的には、5つの計算ユニット15が実行されている
図1のサブセットSS2のノード10を示している。より具体的には、それら5つの計算ユニット15は、計算ユニットCU21、CU22、CU23、CU24およびCU25一式である。計算ユニットCU21、CU22、CU23、CU24およびCU25一式は、サブセットSS2の各々のノード10で実行される。さらに、計算ユニットCU21、CU22、CU23、CU24およびCU25一式は、サブセットSS2全体に亘って複製され、計算ユニットCU21、CU22、CU23、CU24およびCU25のそれぞれが誠実に振る舞うとき、最終的に同じユニット状態になる。これは、特に、サブセットSS2のノード10のそれぞれで、計算ユニットCU21、CU22、CU23、CU24、およびCU25のユニット状態の空間でアクティブな複製を実行することにより実装し得る。
【0124】
計算ユニットCUは、さまざまな機能を提供することがあり、さまざまなタイプのものであり得る。計算ユニットの1つのタイプは、分散ネットワークのユーザーにアプリケーションサービスを提供するように構成されたアプリケーション計算ユニットである。アプリケーション計算ユニットは、簡略化するために、以下ではアプリケーションユニットまたはAUと表記する。別のタイプの計算ユニットは、ネットワークのユーザーのユーザー通貨アカウントを管理するように構成され得るウォレット計算ユニットである。そして、さらに別のタイプの計算ユニットは、システム計算ユニットである。そのようなシステム計算ユニットは分散ネットワークに、システムまたは管理機能を提供し得る。
【0125】
図3に、本発明の一実施形態による分散ネットワーク300の例示的なブロック図を示す。
【0126】
分散ネットワーク300は、複数のノード10を備える。
【0127】
この実施形態によれば、複数のノード10は、複数のサブネット11に分散されている。
図1の例では、SNA、SNB、SNC、およびSNDで示される4つのサブネット11が提供される。ネットワーク100は、それぞれのサブネット11の内部のサブネット内通信用の通信リンク12と、サブネット11の異なるサブネット間のサブネット間通信用の通信リンク13とを備える。したがって、通信リンク12は、サブネット内またはピアツーピア(P2P)通信リンクとしても示され得、通信リンク13は、サブネット間またはサブネット対サブネット(SN2SN)通信リンクとしても示され得る。
【0128】
複数のサブネット11のそれぞれは、それぞれのサブネット11の各々のノード10において計算ユニット一式を実行するように構成される。
【0129】
本発明のいくつかの実施形態によれば、サブネット11は、それぞれのサブネット11に亘って計算ユニット一式を複製するように構成される。より具体的には、サブネット11は、それぞれのサブネット11にわたって計算ユニットのユニット状態を複製するように構成される。
【0130】
分散ネットワーク100および分散ネットワーク300は、特に、非同期BFTコンセンサスプロトコルを実行するように構成されたネットワークとして具体化され得る。このようなネットワークでは、破損しているノードは各々のサブネットの1/3(3分の1)未満と想定されるため、サブネットにより生成され署名されたアーティファクトは十分に信頼できる。
【0131】
図4に、ネットワーク300のノード10において実行される計算ユニット15をより詳細に示す。より具体的には、
図4の左側401に、5つの計算ユニット15が実行されている
図1のサブセットSNAのノード10を示す。より具体的には、5つの計算ユニット15は、1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5である。1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5は、サブネットSNAの各々のノード10で実行される。さらに、1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5は、各々の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5が同じユニット状態を持つように、サブネットSNA全体に亘って複製される。これは、特に、サブネットSNAのノード10のそれぞれで、計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5のユニット状態の空間でアクティブな複製を実行することにより実装され得る。
【0132】
さらに、
図4の右側402に、4つの計算ユニット15が実行されている
図1のサブネットSNBのノード10を示す。より具体的には、4つの計算ユニット15は、1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4である。1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4は、サブネットSNBの各々のノード10で実行される。さらに、1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4は、各々の計算ユニットCUB1、CUB2、CUB3、およびCUB4が同じユニット状態を持つように、サブネットSNB全体に亘って複製される。上記のように、ユニット状態の空間でアクティブな複製を実行する。
【0133】
図3に戻って参照すると、ネットワーク300は、メッセージングプロトコルおよびコンセンサスプロトコルを介して、サブネットSNA、SNB、SNC、およびSNDの間でサブネット間メッセージ16を交換するように構成される。コンセンサスプロトコルは、それぞれの受信サブネットでのサブネット間メッセージ16の処理順序について合意を形成するように構成される。例えば、サブネットSNBに対して、サブネットSNA、SNB、SNC、およびSNDからサブネット間メッセージ16を受信することを参照している。コンセンサスプロトコルは、これらのサブネット間メッセージ16を受信して処理し、定義済みのコンセンサスアルゴリズムまたはコンセンサスメカニズムを実行して、受信したサブネット間メッセージ16の処理順序について合意を形成する。
【0134】
いくつかの実施形態によれば、ネットワーク300は、各々のサブネットにおいて別々にコンセンサスプロトコルを実行するように構成され得る。つまり、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、他のサブネットとは別に、独立して独自のコンセンサスプロトコルを実行する。したがって、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、定義済みの範囲で、処理するメッセージを受信した他のサブネットとは独立して、その順序を決定可能である。ゆえに、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、受信したサブネット間メッセージ16の処理順序に基づいて、サブネットごとに合意を形成する。このようなコンセンサスは、ローカルコンセンサスまたはサブネットコンセンサスと見なし得る。
【0135】
この概念は、
図5を参照すると、より詳細に示されている。
【0136】
図5に、
図3のサブネット11のSNBで受信されるサブネット間メッセージ16の概略図を示す。
【0137】
サブネットSNBは、サブネットSNAからサブネット間メッセージSNA-SNB、サブネットSNCからサブネット間メッセージSNC-SNB、およびサブネットSNDからサブネット間メッセージSND-SNBを受信する。これらのサブネット間メッセージのプールは、サブネットSNBにおいてコンセンサスプロトコルをローカルで実行するコンセンサスコンポーネント30であるCSNBにより処理される。ゆえに、コンセンサスコンポーネント30は、サブネットコンセンサスコンポーネントとして示され得る。
【0138】
コンセンサスコンポーネント30は、定義済みのコンセンサスアルゴリズムまたはメカニズムに従ってサブネット間メッセージから入力ブロックIBのキューを生成し、メッセージングプロトコルを実行するように構成されたMSNBに入力ブロックIBのキューを提供し、入力ブロックIBの処理をさらに行う。
【0139】
いくつかの実施形態によれば、各々のサブネット11のノード10のそれぞれは、コンセンサスプロトコルに参加し得る。そのような実施形態によれば、サブネット11の各々は、例えば、10から100のノード、特に、20から50のノードを備える。このような数値は、セキュリティと効率の間の有利な妥協点を提供し得る。
【0140】
他のいくつかの実施形態によれば、コンセンサスプロトコルは、定義済みの選出方式に従って、それぞれのサブネット11の複数のノード10から委員会のメンバーを選出する。そして、選出された委員会のメンバーとのみコンセンサスプロトコルを実行するように構成され得る。このようなアプローチは、ノードの数が多いサブネット、例えば、1000以上のノードを有するサブネット、で特に有用である。
【0141】
図6に、例えば、
図1に示されるサブネットプロトコルクライアント42であるサブネットプロトコルクライアントのプロトコルコンポーネント600の概略ブロック図を示す。
【0142】
図6の実線の矢印は、ユニット間メッセージとイングレスメッセージで構成される実行メッセージに関連する。入力メッセージは、特にユーザーからの変更クエリであり得る。破線の矢印はシステム情報に関連する。
【0143】
プロトコルコンポーネント600は、メッセージングプロトコルを実行するように構成されたメッセージコンポーネント61と、実行メッセージを実行する、特に、ユニット間メッセージを実行するおよび/またはクエリを変更する、実行プロトコルを実行するように構成された実行コンポーネント62と、を備える。プロトコルコンポーネント600はさらに、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネント63と、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント64と、状態管理プロトコルを実行するように構成された状態管理コンポーネント65と、クロスサブネット転送プロトコルを実行するように構成されたX-Net転送コンポーネント66と、ネットワークの外部ユーザーから受信したイングレスメッセージを処理するように構成されたイングレスメッセージハンドラコンポーネント67と、を備える。プロトコルコンポーネント600は、さらに、暗号コンポーネント68を含む。暗号コンポーネント68は、例えば、
図16を参照して後で説明されるように、セキュリティアプリケーション43として具体化され得るセキュリティコンポーネント611と協調する。プロトコルコンポーネント600は、読み取りクエリ、または言い換えれば、ユーザーからの読み取り要求、を受信するように構成された状態リーダーコンポーネント69をさらに備える。
【0144】
状態リーダーコンポーネント69は、状態管理コンポーネント65と協調するように構成される。
【0145】
状態リーダーコンポーネント69により受信および処理される読み取りクエリは、特に、計算ユニットのユニット状態を永続的に変更しない非変更クエリとして具体化される。他方、イングレスメッセージハンドラコンポーネント67から受信され、コンセンサスコンポーネント63を通過するイングレスメッセージは、特に、変更クエリを実行しているそれぞれの計算ユニットのユニット状態を変更する変更クエリとして具体化され得る。読み取りクエリはコンセンサスコンポーネント63を通過する必要がないため、それぞれのサブネットの任意のノードで非同期に実行でき、それゆえ、はるかに高速である。
【0146】
さらに、サブネットプロトコルクライアント42は、
図6を参照して説明されるように、メインネットプロトコルクライアント41の一部であり得るリーダーコンポーネント610と協調し得る。メインネットリーダーコンポーネント610は、メインネットにより格納されて、それぞれのサブネットプロトコルクライアント42に配信される、情報を提供し得る。これは、サブネットへのノードの割り当て、ノードの公開鍵、サブネットへの計算ユニットの割り当てなどを含む。
【0147】
メッセージコンポーネント61および実行コンポーネント62は、これらのコンポーネント内のすべての計算、データ、および状態が、それぞれのサブネットのすべてのノード、より具体的には、それぞれのサブネットのすべての誠実なノードに亘って同一に複製されるように構成される。これは、これらのコンポーネントの波形の背景により示される。
【0148】
そのような同一の複製は、一方では、メッセージコンポーネント61への入力のストリームがそれぞれのサブネットにより合意され、したがって、すべてのノード、より具体的にはすべての誠実なノードにより同一であることが保証されるコンセンサスコンポーネント63のおかげで、いくつか実施形態に従って達成される。他方、これは、メッセージコンポーネント61および実行コンポーネント62が、決定論的で複製された計算を実行するように構成されることにより達成される。
【0149】
X-Net転送コンポーネント66は、メッセージストリームを他のサブネットに送信し、他のサブネットからメッセージストリームを受信する。
【0150】
大部分のコンポーネントは、暗号コンポーネント68にアクセスして暗号化アルゴリズムを実行し、メインネットリーダー610にアクセスして構成情報を読み取る。
【0151】
実行コンポーネント62は、メッセージコンポーネント61から、計算ユニットのユニット状態および計算ユニットの着信メッセージを受信し、計算ユニットの発信メッセージおよび更新されたユニット状態を返す。この計算を実行する間に、処理されたメッセージ(クエリ)のガスまたは燃料消費量を測定し得る。
【0152】
メッセージコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロックと同期する。すなわち、各々の入力ブロックについて、メッセージコンポーネント61は、以下のステップを実行する。それぞれの入力ブロックを解析して、その計算ユニットのメッセージを取得する。さらに、メッセージを、異なる計算ユニットのそれぞれの入力キューにルーティングし、スケジューラーにより、各々の計算ユニットに割り当てられた容量に従って実行されるメッセージを計画するステップ。次に、実行コンポーネント62を使用して、対応する計算ユニットによりメッセージを処理し、その結果、送信されるメッセージを、それぞれの計算ユニットの出力キューに追加する。ただし、メッセージが同じサブネットにおける計算ユニット宛てであると、対応する計算ユニットの入力キューに直接入れられ得る。メッセージコンポーネント61は、最終的に、計算ユニットの出力キューのメッセージを、受信計算ユニットが配置されているサブネットのメッセージストリームにルーティングし、これらのメッセージストリームを状態管理コンポーネント65に転送して認証される、すなわち、それぞれのサブネットにより署名される。
【0153】
状態管理コンポーネント65は、認証コンポーネント65aを備える。認証コンポーネント65aは、それぞれのサブネットの出力ストリームを認証するように構成される。これは、例えば、それぞれのサブネットの計算ユニットのグループ署名により実行され得る。
【0154】
認証コンポーネント65aは、ユニット状態の特定の変数、特に、以下でより詳細に説明するように、ユニット状態のスナップショットの特定の変数を認証するようにさらに構成され得る。
【0155】
図7に、メッセージプロトコルおよびコンセンサスプロトコル、ならびに関連するコンポーネント、例えば、
図6のメッセージコンポーネント61とコンセンサスコンポーネント63、のワークフロー700を例示的に視覚化して示す。より具体的には、
図7は、サブネットSNBとサブネットSNAおよびSNCの間で交換されるサブネット間メッセージのワークフローを視覚化する。さらに、サブネットSNBは、複数のユーザーUと入力メッセージを交換する。
【0156】
図7の右下から始まって、複数の入力ストリーム701、702および703は、コンセンサスコンポーネント63により受理される。コンセンサスコンポーネント63は、サブネットSNBのサブネットクライアントにより実行されるサブネットコンセンサスコンポーネントである。入力ストリーム701は、サブネットSNAからサブネットSNBへのサブネット間メッセージ711を含む。入力ストリーム702は、サブネットSNCからサブネットSNBへのサブネット間メッセージ712を含む。入力ストリーム703は、複数のユーザーUからのサブネットSNBへの入力メッセージ713を含む。
【0157】
サブネット間メッセージ711および712は、異なるサブネットの計算ユニット間で交換されるユニット間メッセージ、ならびに信号メッセージを含む。信号メッセージは、ユニット間メッセージの受信を確認するかどうかを確認するために使用される。メッセージコンポーネント61は、受信サブネットから対応する送信サブネットに、すなわち、この例ではサブネットSNBからサブネットSNAおよびSNCに信号メッセージを送信するように構成される。メッセージコンポーネント61は、この例によれば、送信されたユニット間メッセージを、それぞれのユニット間メッセージに対して確認応答メッセージが受信されるまで格納するように構成されている。これにより、通信が保証されます。
【0158】
コンセンサスコンポーネント63は、サブネットSNA、SNCのサブネット間メッセージ711、712、およびユーザーUとの入力メッセージ713を受信して処理して、対応するコンセンサスプロトコルにより実行される定義済みのコンセンサスメカニズムに従って、サブネット間メッセージ711、712および入力メッセージ713から入力ブロック720のキューを生成するように、構成される。コンセンサスにより生成された入力ブロック720の各々は、一組の入力メッセージ713、一組のサブネット間メッセージ711、712、および実行パラメータ714であるEPを含む。実行パラメータ714であるEPは、特に、ランダムシード、指定された実行時間、および/または高さ指標を含み得る。コンセンサスコンポーネント63はまた、サブネットの現在の負荷に基づいて、すべての入力ブロックの中のメッセージの数を変化させ得る。
【0159】
コンセンサスコンポーネント63は、次に、入力ブロック720のキューをメッセージコンポーネント61へ提供する。メッセージコンポーネント61は、メッセージプロトコルを実行して、入力ブロック720の処理を行うように構成されている。
【0160】
メッセージプロトコルおよびメッセージコンポーネント61は、コンセンサスコンポーネント63から受信された入力ブロック720と同期する。
【0161】
受信された入力ブロックの処理を行う前に、メッセージコンポーネント61は、1つ以上の入力チェックを含む1つ以上の前処理ステップを実行し得る。それら入力チェックは、入力チェックコンポーネント740により実行され得る。
【0162】
いくつかの実施形態によれば、入力チェックは異なる粒度で実行し得る。最初に、入力チェックは入力ブロック全体に対して実行され得る。このようなチェックは、入力ブロックチェックとして示され得る。これらは、次の入力ブロックの高さのチェックを備え得る。次の入力ブロックの高さが、次の順番で予想される高さよりも低いとき、それは破棄されます。入力ブロックが次の順番で予定されないとき、メッセージコンポーネント61はノードキャッチアッププロトコルを起動し得る。入力ブロックが次の順番に存在するとき、それはメッセージコンポーネント61によりさらに処理される。
【0163】
入力ブロック内のさまざまなタイプのメッセージ(信号メッセージ、イングレスメッセージ、ユニット間メッセージ)はグループ化され得る。
【0164】
入力チェックは、メッセージコンポーネントが現在過負荷であり、処理を実行するために十分な容量がないかどうかをチェックするための過負荷チェックをさらに含み得る。
例えば、誘導プール内の関連するキューが満量になると、対応するメッセージが拒否され得る。さらなる入力チェックは、順番通りの配送チェックを含み得る。順番どおりの配信要件を満たすために、メッセージへの注釈、例えば、シーケンス番号の付加が可能である。シーケンス番号を有するメッセージが受信された場合、メッセージコンポーネント61は、それが期待される番号を有するかどうかをチェックし得、異なるときは、それを拒否し得る。さらに、入力チェックコンポーネント740は、対象とする宛先の妥当性検査、すなわち、メッセージが、対応するサブネットにおいてアクティブである計算ユニットを対象にするかどうかの妥当性検査を実行し得る。
【0165】
入力チェックが合格のときは、それぞれの入力ブロック720のメッセージは、メッセージコンポーネント61によりさらに処理され得る。そして、対応するメッセージは、誘導プールコンポーネント731の誘導プールの中の対応するキューに追加され得る。
【0166】
一般に、メッセージコンポーネント61は、入力ブロック720を、イングレスメッセージ、信号メッセージ、およびサブネット間メッセージを誘導プールコンポーネント731に、適宜配置することであらかじめ処理する。着信サブネットストリームの中の信号メッセージは、出力キューのメッセージの受領確認として扱われ、その後排除可能である。
【0167】
この例では、誘導プールコンポーネント731は、ユニット間キューA1-B1、C1-B1、A2-B2、およびC1-B2、ならびにユーザー対ユニット間キューU-B1およびU-B2を備える。
【0168】
これらの前処理ステップに続いて、メッセージコンポーネント61は、実行コンポーネント62(
図6を参照)を呼び出して、単一の実行サイクルの間に実行可能な限り多くの誘導プールを実行し、指定された実行時間およびランダムシードを追加入力として提供する。その実行サイクルに続いて、結果として生じるメッセージの出力キューは、出力キューコンポーネント733に供給される。最初は、出力キューコンポーネント733が、ユニット間の出力キューおよびユニット対ユーザーの出力キューを備える。この例では、ユニット間出力キューとしてB1-A1、B1-C2、B2-A2、およびB2-C3、ならびにユニット対ユーザーの出力キューとしてB1-U1およびB2-U4を備える。一例として、メッセージB1-A1は、サブネットSNBの計算ユニットB1からサブネットSNAの計算ユニットA1へのメッセージを示す。別の例として、メッセージB1-U1は、サブネットSNBの計算ユニットB1からユーザーU1へのメッセージを示す。
【0169】
出力キューコンポーネント733は、例えば、
図6に示されるような認証コンポーネント65aにより認証されて、他のコンポーネントにより広められた、サブネットごとの出力ストリーム一式を形成することにより、メッセージの結果として生じる出力キューを後処理する。この例では、サブネットごとの出力ストリームSNB-SNA、SNB-SNC、およびSNB-Uが提供される。
【0170】
メッセージコンポーネント61は、それぞれのサブネットの計算ユニットの状態/ユニット状態、この例では、サブネットSNBの計算ユニットB1およびB2の状態を格納するように構成された状態記憶コンポーネント732をさらに備える。対応するユニット状態は、計算ユニットの各々のワーキングメモリである。
【0171】
メッセージコンポーネント61は、システム状態の特定の部分を決定論的に変化させることを中心に展開する。各々のラウンドにおいて、実行コンポーネント61は、それぞれの計算ユニットの状態を読み取って更新することで、誘導プールからの特定のメッセージを実行する。そして、実行される計算ユニットが送信したい発信メッセージを返す。これらのメッセージは、出力キューコンポーネント733に入り、最初は、ネットワークの計算ユニット間のユニット対ユーザーメッセージおよびユニット間メッセージを含む。同じサブネットの計算ユニット間のサブネット内メッセージは、それぞれのサブネットの内部で内部的にルーティングおよび配信され得るが、サブネット間メッセージは、サブネットの宛先でソートされた出力ストリームにルーティングされる。
【0172】
さらに、いくつかの実施形態によれば、2つの状態が維持されて、どのメッセージが処理されたかについてシステムの残りの部分に通知し得る。最初の部分はサブネット間メッセージ用に維持され、2番目の部分は入力メッセージ用に維持され得る。
【0173】
図8に、本発明の一実施形態による例示的なアプリケーション(計算)ユニット800を示す。
【0174】
アプリケーションユニット800は、入力キュー801、出力キュー802、ユーザーまたはアプリケーション状態803、およびシステム状態804を備える。
【0175】
(所与のサブネットにおいて)アプリケーションユニットのすべての入力キュー801は、集合して誘導プールを構成するが、入力キューは、アプリケーション計算ユニットの状態の一部である。出力キュー802は、おそらく他のサブネットワークにおいて、他のアプリケーション計算ユニットに配信される必要があるメッセージを含む。
【0176】
アプリケーション状態803は、モジュールの各々の実例とともに、アプリケーション計算ユニットおよびそれに付随するモジュールの機能を実装するメインウェブアセンブリ(Wasm)モジュールを備える。Wasmモジュールの実例では、メモリ、グローバル変数、およびテーブルで構成される。
【0177】
システム状態804は、アプリケーション計算ユニットのコードによる自由な変更はできない。これには、メタデータ、アプリケーション計算ユニットに代わるシステムにより維持されるその他の状態、特にコンパイルされた形式のWasmモジュール、および未処理のメッセージのコンテキストとコールバックとが含まれます。
【0178】
図9に、本発明の一実施形態による、ネットワーク100およびネットワーク300の各々のノード10において実行される主なプロセスを示す。本発明のいくつかの実施形態によるネットワークのネットワーククライアントは、ノード10がネットワークに参加するために必要なプロトコルコンポーネント一式である。いくつかの実施形態によれば、各々のノード10は、メインネットのメンバーであり、典型的には1つのサブネットであり、これは、各々のノードがメインネットのクライアント、あるいはサブネットのクライアントを実行することを意味する。
【0179】
ノードマネージャ40は、メインネットプロトコルクライアント41、サブネットプロトコルクライアント42、およびセキュリティアプリケーション43を開始、再起動、および更新するように構成される。
【0180】
いくつかの実施形態によれば、複数のサブネット11のそれぞれは、対応するノード10において別個のサブネットプロトコルクライアント42を実行するように構成される。メインネットプロトコルクライアント41は、特に、構成データを複数のサブネット11との間で分散するように構成されている。メインネットプロトコルクライアント41は、特に、システム計算ユニットのみを実行するように構成され得、ユーザー提供の計算ユニットは実行されない。メインネットプロトコルクライアント41は、メインネットのローカルクライアントであり、サブネットプロトコルクライアント42は、サブネットのローカルクライアントである。
【0181】
セキュリティアプリケーション43は、ノード10の秘密鍵を格納し、それらを用いてすべての操作を実行する。
【0182】
セキュリティアプリケーション43は、ノードにより保持される秘密鍵を保護するように構成される。より具体的には、秘密鍵は、別個の実行環境(別個のプロセスまたは別個の仮想マシン(VM)のいずれか一方)で保持および処理される。セキュリティアプリケーション43は、これらのインターフェイスを介して秘密鍵を抽出することができないように、制限され制御されたインターフェイスで動作するように構成される。いくつかの実施形態によれば、セキュリティアプリケーションは、ハードウェアセキュリティモジュール(HSM)のように、またはHSMと同様に動作するように構成される。よって、セキュリティアプリケーション43は、ソフトウェアのHSMとして示され得る。
【0183】
図10に、サブネット間メッセージおよびサブネット内メッセージの交換に関与する主要な層を示す層モデル1000を示す。層モデル1000は、サブネット間通信のための上位の層として機能するように構成されるメッセージング層51を備える。より具体的には、メッセージング層51は、異なるサブネットの計算ユニット間でサブネット間メッセージをルーティングするように構成される。さらに、メッセージング層51は、ネットワークのユーザーからのイングレスメッセージをネットワークの計算ユニットにルーティングするように構成される。
【0184】
層モデル1000は、異なるサブネットからのサブネット間メッセージならびにイングレスメッセージを受信し、特に、処理順序に同意することにより、それらを、その後それぞれのサブネットによりさらに処理される一連の入力ブロックに編成するように構成される複数のコンセンサス層52をさらに含む。
【0185】
コンセンサス層52は、特に、上述および以下に記載されるような一連の価値について合意を形成する方法を行うように構成され得る。この点で、価値のシーケンスは、上記の入力ブロックのシーケンスとして具体化し得る。
【0186】
さらに、層モデル1000は、単一のサブネットのノード間の通信を編成して駆動するように構成されたピアツーピア(P2P)層53を備える。
【0187】
いくつかの実施形態によれば、ネットワークは、複数のさらなる層、特に、ネットワークの計算ユニットにおいて実行メッセージを実行するように構成される実行層を含み得る。
【0188】
メインネットプロトコルクライアント41とサブネットプロトコルクライアント42との間の相互作用のより詳細な説明を以下に述べる(
図16を参照)。メインネットプロトコルクライアント41は、サブネットの構成情報を含むいくつかのレジストリを管理する。これらのレジストリはメインネットの計算ユニットにより実装されており、すべてのノードがメインネットに参加しているので、これらのレジストリへのアクセスは状態読み取り操作により簡単に実装できる。
【0189】
すなわち、メインネットリーダー610(
図6を参照)は、実際にメインネットプロトコルクライアント41のサブコンポーネントであり得る。したがって、このコンポーネントとの相互作用は、メインネットおよびサブネットクライアントが実行される2つの隔離された環境間の相互作用をもたらす。
【0190】
図11に、本発明のいくつかの実施形態による分散ネットワークにおけるブロックの作成を図示する。ブロックは、特に、
図7に示される入力ブロック720であり得る。これらは、コンセンサスプロトコル、特にローカルサブネットコンセンサスプロトコルを実行するコンセンサスコンポーネント63により作成される。
【0191】
この例示的な実施形態では、3つの入力ブロック1101、1102、および1103が示されている。ブロック1101は、複数のトランザクション、すなわち、トランザクションtx1.1、トランザクションtx1.2、そしておそらくドットで示されるさらなるトランザクションを含む。ブロック1102はまた、複数のトランザクション、すなわち、トランザクションtx2.1、トランザクションtx2.2、そしておそらくドットで示されるさらなるトランザクションを含む。ブロック1103はまた、複数のトランザクション、すなわち、トランザクションtx3.1、トランザクションtx3.2、そしておそらくドットで示されるさらなるトランザクションを含む。入力ブロック1801、1102および1103は連鎖されている。より具体的には、各々のブロックは、前のブロックのブロックハッシュを含む。これは、現在のブロックを前のブロックに暗号で結び付けます。
【0192】
いくつかの実施形態によれば、トランザクションは、サブネット間メッセージ、イングレスメッセージ、および信号メッセージであり得る。
【0193】
入力ブロック1101、入力ブロック1102、および入力ブロック1103は、ブロックチェーン1100を確立する。いくつかの実施形態によれば、入力ブロック1101、入力ブロック1102、および入力ブロック1103は、上述および以下に記載される価値のシーケンスについて合意を形成する方法により作成され得る。
【0194】
これにより、ブロックチェーン1100を形成する入力ブロック1101、入力ブロック1102、および入力ブロック1103は、価値のシーケンスの特定の実施形態を確立する。
【0195】
しかしながら、コンセンサス構成要素により生成された入力ブロックは、いくつかの実施形態によれば、連鎖される必要がないことに留意されたい。むしろ、受信したメッセージの処理順序でサブネットのノード間である種の合意に達する任意のコンセンサスプロトコルを、実施形態に従って使用し得る。
【0196】
図12に、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント1200をより詳細に示す。ネットワーキングコンポーネント1200は、例えば、
図6に示されるネットワーキングコンポーネント64のより詳細な実施形態であり得る。ネットワーキングコンポーネント1200は、ノード間通信を実行するように構成されたユニキャストコンポーネント1210、サブネット内通信を実行するように構成されたブロードキャストコンポーネント1220、およびサブネット間通信を実行するように構成されたクロスネットコンポーネント1230を備える。
【0197】
図13および
図14に、本発明のいくつかの実施形態によるコンピュータへ実装された方法のそれぞれのステップのフローチャートを示す。この例示的な実施形態によれば、値のシーケンスは、ブロックチェーンとして、または言い換えれば、ブロックチェーンのブロックのシーケンスとして具体化されると想定される。
【0198】
より具体的には、
図13は、この方法の公証ラウンドの方法ステップを示し、
図14は、ファイナライズラウンドを含むファイナリティ手順のステップを示す。
【0199】
コンピュータへ実施された方法は、例えば、上述のように分散ネットワーク100または分散ネットワーク300によって、行われ得る。
【0200】
公証ラウンドのステップおよびファイナリティ手順のステップは、非同期的に実行可能である。
【0201】
ここで
図3を参照すると、ステップ1310において、この方法は、例えば、公証ラウンド番号Nの第1の公証ラウンドから開始する。
【0202】
次に、ステップ1320で、ネットワークの1つ以上のネットワークノードは、ブロックチェーン、例えば、
図11を参照して説明したようなブロックチェーンに追加される、または書き込まれるブロック提案を作成する。
【0203】
次に、ブロック提案は、ネットワーク内で通信され、特に、以下では公証サブセットとして示される複数のノードのサブセットに通信される。この通信は、特に、不特定多数へ配信により、特に、ゴシッププロトコルにより実行され得る。
【0204】
ステップ1330で、公証サブセットのノードはそれぞれ、通信の結果として受理したブロック提案の妥当性検査を行う。妥当性検査は、特に、受信したブロック提案が事前に定義された一連の妥当性規則に準拠しているかどうかの検査を備える。一連の妥当性規則は、分散ネットワークの仕様の一部として指定され得る。
【0205】
いくつかの実施形態によれば、妥当性検査は、例えば、それぞれのブロック提案が既知のノードからのものであると、受信されたブロック提案のブロックヘッダーの検証を行い得る。このような検証は、浅い検証と称される。
【0206】
他の実施形態によれば、妥当性検査は、ブロック提案のペイロードの検証、すなわち、ペイロードが事前に定義された基準に準拠しているかどうかの検証を行い得る。これは、深い検証と称される。
【0207】
いくつかの実施形態によれば、所与のブロック提案の妥当性検査(浅いまたは深い)は、所与のブロック提案が遡って参照/リンクする前の公証ラウンドからのブロック提案に依存し得る。例えば、妥当性チェックでは、特定のブロック提案が参照している以前のすべてのブロック提案が公証されているかどうかを検査し得る。
【0208】
ステップ1330は、特に、タイムアウト期間の間に実行され得る。
【0209】
ステップ1330は、特に、タイムアウト期間の後にのみ実行され得る。
【0210】
次に、ステップ1340で、公証サブセットのノードは、妥当性検査に則って妥当であるブロック提案のサブセットについて個別の公証署名を実行する。このような個別の公証署名は、ブロック提案が、ノードにより実行される妥当性検査に合格したことを確認する単一ノードによる署名である。よって、個別の公証署名は、個別の妥当性署名としても示され得る。その結果、個別に公証署名したブロック提案が作成される。
【0211】
分散ネットワーク、特に公証サブセットのノードは、ブロック提案の1つについて事前に定義された数の個別の公証署名が実行されたかどうかを観察する。特に、個別の公証署名は、公証サブセットのノードに、例えば、ゴシッププロトコルにより不特定多数へ配信され得る。これは、例えば、
図10に示されるP2P層により行い得る。
【0212】
この場合、分散ネットワークは、ステップ1350で、対応するブロック提案を完全に公証する。これは、それぞれの公証ラウンドについて完全に公証されたブロック提案を作成する。事前に定義された数は、アプリケーションのセキュリティの必要性に応じて選択し得る。いくつかの実施形態によれば、その数は、公証サブセットのノードの3分の2(2/3)を超えて対応し得る。
【0213】
公証ラウンドのブロック提案の1つが公証されると、公証サブセットのノードは公証署名を行うことを停止し、ステップ1360において、1つ以上の公証ラウンドのブロック提案の整合性検査を続行する。
【0214】
整合性チェックの一部として、公証サブセットのノードは、1つ以上の公証ラウンドのブロック提案が、現在の公証ラウンドで実行したそれ自身の個別の公証署名と一致しているかどうかを検査する。整合性検査は、特に、ブロック提案が事前に定義された一連の整合性規則に準拠しているかどうかの検査を含み得る。一連の整合性規則は、整合性があると見なされない特定の筋書きを定義し得る。この点で、公証サブセットのノードが、現在の公証ラウンドでブロック提案と矛盾する整合性署名を実行していないときは、ブロック提案が一連の整合性規則に則って整合性があると見なし得る。この議論には、特段の曖昧さが含まれ得る。
【0215】
そのような曖昧さは、本発明のいくつかの実施形態によれば「主観的」であり得る。すなわち、一連の整合性規則は、このノードで実行された、およびこのノードのみで実行された個別の公証署名に基づくノードの各々によって個別に適用され得る。
【0216】
そのような曖昧さは、本発明のいくつかの実施形態によれば、ラウンドに依存し得る。すなわち、所与のノードが、1つの公証ラウンド実行された、および特定の公証ラウンドの1つだけ実行された個別の公証署名に基づいて、一連の整合性規則を適用し得る。
【0217】
一例として、それぞれのノードが、現在の公証ラウンドで複数のブロック提案について個別に公証署名をしていると、曖昧さが生じる。
【0218】
一方、公証サブセットのそれぞれのノードが、現在の公証ラウンドにおいて、いかなるブロック提案についても最大で1つの個別の公証署名で行われて、かつこの個別の公証署名がブロック提案用であるとき、現在の公証ラウンドの価値提案は、一連の整合性規則に則って整合性があると見なされ得る。
【0219】
別の実施形態によれば、公証サブセットのそれぞれのノードが、現在の公証ラウンドにおいて、個別の公証署名を行ったすべてのブロック提案が、前の公証ラウンドのブロック提案に遡って参照しているとき、前の公証ラウンドのブロック提案は、一連の整合性規則に則って整合性があると見なされ得る。
【0220】
「遡って参照する」とは、前の公証ラウンドからのブロック提案のハッシュダイジェストを、後の公証ラウンドからのブロック提案に含めること、で確立された直接または間接のリンクが、その意味を表し得る。
【0221】
一実施形態によれば、ノードが個別の公証署名を実行した現在の公証ラウンドのすべての価値提案が、整合性検査下での価値提案に遡ってリンクするとき、一連の整合性規則は、整合性検査下での価値提案が公証サブセットのノードの観点から整合性があると定義し得る。ここで、遡ってリンクすることは、1つのステップ(直接)または複数のステップ(間接)を経て実施することが可能である。
【0222】
次に、ステップ1370で、公証サブセットのノードは、一連の整合性規則に則って整合性のあるブロック提案のサブセットに対して整合性署名を行う。これにより、整合性署名されたブロック提案が作成される。整合性署名されたブロック提案は、いくつかの実施形態によれば、ファイナライズされる公証ラウンド番号、現在の公証ラウンド番号、および署名ノードを備える。したがって、整合性署名は、現在の公証ラウンドとファイナライズされる公証ラウンドとの特定の組み合わせに対してのみ有効です。
【0223】
続いて、複数のノードは、ステップ1380において、次の公証ラウンドに移動する。それから、例えば、ラウンドN+1の、上述の方法のステップ1320から1370までが繰り返される。
【0224】
いくつかの実施形態によれば、次の公証ラウンドへの移動は、現在の公証ラウンドNについて完全に公証されたブロック提案が観察されると、特に開始され得る。特に、次の公証ラウンドN+1は、現在の公証ラウンドNの現在の整合性署名の期間と並行して開始し得る。特に、現在の公証ラウンドNにおいて公証サブセットの外側にあるノードは、現在の公証ラウンドNで完全に公証されたブロック提案が観察されると、次の公証ラウンドN+1に移動し得る。
【0225】
図14に、本発明の実施形態によるファイナリティ手順のステップの各々を示す。
【0226】
ファイナリティ手順は、公証ラウンドをファイナライズすることを目的とする。したがって、公証ラウンドの各々は、対応するファイナリティ手順を含む。このために、ステップ1410において、分散ネットワーク、特に公証サブセットのノードは、一連のファイナリティ規則が満たされているかどうかを観察する。この実施形態によれば、価値提案について事前に定義された数の整合性署名が観察されると、価値提案について一連のファイナリティ規則が満たされると想定される。したがって、ステップ1410において、分散ネットワーク、特に公証サブセットのノードは、ファイナライズするべき公証ラウンドの提案をブロックする個々の整合性署名の数を観察する。特に、このステップには、個々の整合性署名を、公証サブセットのノードに、例えば、ゴシッププロトコルにより不特定多数へ配信することを含み得る。
【0227】
この場合も、必要な数はアプリケーションのセキュリティの必要性に依存し得る。いくつかの実施形態によれば、公証サブセットのノードの2/3を超える整合性署名が必要であることが指定され得る。
【0228】
その必要な数は、分散ネットワークのシステムパラメータとして事前に定義され得る。ブロック提案の1つについて、分散ネットワークにより事前に定義された数が観察されると、分散ネットワークは、ステップ1420において、そのブロック提案をファイナライズしてファイナライズされたブロック提案を作成する。
【0229】
次に、ステップ1430において、ファイナライズされたブロック提案をブロックチェーンに追加し得る。
【0230】
別の実施形態によれば、価値提案において事前に定義された数の整合性署名が観察され、価値提案が完全に公証されたときにのみ、価値提案が、一連のファイナリティ規則を満たし得る。よって、そのような実施形態によれば、ステップ1410において、両方の基準が観察される。
【0231】
いくつかの実施形態によれば、公証サブセットのネットワークまたは複数のノードは、さらに、ブロックチェーンに追加するためのファイナライズされたブロックにより暗示される、ブロックの暗示チェーンを考慮し得る。一例として、公証サブセットが最初にブロックB1のみをファイナライズしたときがある。そして、公証サブセットが別のブロック提案B3で十分に多くの整合性署名を観察して、それに応じてブロックB3をファイナライズしたとき、およびブロックB3がブロックB1←B2←B3の暗示チェーンであることを暗示するとき、公証サブセットはブロックB1←B2←B3の暗示チェーンをファイナライズされたブロックチェーンとして考慮し得、よって、ブロック提案B2もファイナライズされる。
【0232】
ステップ1340および1370においてそれぞれ実行される個別の公証署名および整合性署名は、しきい値署名方式、多重署名方式、または集約署名方式、を利用し得る。
【0233】
いくつかの実施形態によれば、ファイナライズされたブロック提案のファイナリティ署名が、現在の公証ラウンドの複数のブロック提案に追加され得る。このようなファイナリティ署名は、事前に定義された数のノードの個別の整合性署名を備える、例えば、集約署名を構成可能である。
【0234】
ファイナリティ署名は、外部のオブザーバーによりファイナライズされたブロックの再検証を簡略化し得る。例えば、集約署名は個別の署名一式よりも小さいため、外部のオブザーバーがダウンロードする必要があるデータはより少なくて済む。例えば、単一の集約された署名は、複数の個別の署名よりも検証が高速になります。例えば、しきい値署名により、外部のオブザーバーは、検証を実行可能な公開鍵の資料を少なくするように作用する。
【0235】
ファイナリティ署名は、ブロードキャストプロトコルを簡略化し得る。例えば、ブロードキャストプロトコルによれば、分散ネットワーク内のノードが、公証ラウンドrからのブロック提案をファイナライズしてファイナリティ署名を所持していると、ノードは、同じ公証ラウンドrからのいかなるブロック提案およびrより前の公証ラウンドからのいかなるブロック提案について、個別の整合性署名の中継を停止可能である。その代わりに、ノードはファイナリティ署名のみを中継可能である。そのような実施形態の利点は、ラウンドごとに中継される必要があるアーティファクトの数に上限を設けることが可能であるところにある。
【0236】
公証サブセットの大きさと選択は、それぞれのアプリケーションの必要性に依存し得る。また、公証サブセットの大きさは、一方では速度に影響を与え、他方ではコンセンサスメカニズムのセキュリティに影響を与える。
【0237】
いくつかの実施形態によれば、ネットワークは、事前に定義された期間、例えば、事前に定義された時間の数、日数、週の数、または月、についての同じ公証サブセットを使用し得る。
【0238】
いくつかの実施形態によれば、ネットワークは、事前に定義された範囲の公証ラウンドまたは事前に定義された範囲のブロック番号について同じ公証サブセットを使用し得る。
【0239】
いくつかの実施形態によれば、ネットワークは、公証サブセットのノードが、事前に定義された最小保証金の預金を行うことを要求し得る。
【0240】
いくつかの実施形態によれば、ネットワークは、ノードの保証金に応じて、例えば、保証金が高いほど、公証サブセットに選択される可能性が高くなる、公証サブセットのノードを選択し得る。
【0241】
さらなるいくつかの実施形態によれば、ネットワークは、公証サブセットのノードを定期的に、例えば、毎時または毎日変更し得る。
【0242】
さらなるいくつかの実施形態によれば、ネットワークは、公証サブセットのノードを定期的に、例えば、Nの公証ラウンド毎またはブロック毎に、変更し得る。
【0243】
さらなるいくつかの実施形態によれば、ネットワークは、ランダム性ビーコンに依存して公証サブセットのノードを選択し得る。
【0244】
図15に、本発明の一実施形態による公証ラウンドおよびファイナライズラウンドの期間の例示的なタイミング図を示す。
【0245】
この方法の基礎は、公証ラウンドNR1、公証ラウンドNR2、公証ラウンドNR3、および公証ラウンドNR4を連続して行うところにある。公証ラウンドNR1、公証ラウンドNR2、公証ラウンドNR3、および公証ラウンドNR4のそれぞれは、3つの段階を備える。最初に、タイムアウト期間TOが提供される。このタイムアウト期間TOの間に、複数のノードの公証サブセットは、それぞれの公証ラウンドのブロック提案の妥当性検査をすでに行う得る。より具体的には、無効なブロック提案を無視し、妥当なブロック提案のリストを編集し得る。ただし、複数のノードの公証サブセットは、タイムアウト期間が終了するまで公証署名の実行を待機するように構成されている。
【0246】
いくつかの実施形態によれば、タイムアウト期間TOの長さまたは持続時間は動的に調整され得る。
【0247】
タイムアウト期間TOの後には公証署名期間NSが続く。公証署名期間NSの間、複数のノードの公証サブセットは、事前に定義された一連の妥当性規則に則って妥当であるブロック提案について個別の公証署名を実行し得る。
【0248】
いくつかの実施形態によれば、公証サブセットは、それが妥当であると見なすすべてのブロック提案について公証署名を実行し得る。一方、他のいくつかの実施形態によれば、公証サブセットは、リストの最高ランクを有する妥当なブロック提案についてのみ単一の公証署名を実行し得る。
【0249】
分散ネットワーク、より具体的には公証サブセットの複数のノードは、現在の公証ラウンドのブロック提案のうちの1つが十分に多くの個別の公証署名を受理したかどうかを観察する。これに該当すると直ちに、公証サブセットの複数のノードは公証署名を行うことを停止し、整合性署名期間CSに進む。
【0250】
次の整合性署名期間CSにおいて、複数のノードの公証サブセットは、上述のように整合性検査を実行し、一連の整合性規則に則って整合性のあるブロック提案のサブセットついて整合性署名を実行する。それぞれのノードが、それらの個別の整合性署名を実行すると、次の公証ラウンドNR2に移動する。次の公証ラウンドNR2では、再びタイムアウト期間TOから開始される。整合性署名期間は、それぞれのノードが整合性署名を行うために必要な時間を要することに注意しなければならない。よって、整合性署名期間の長さはノードごとに異なり得、同じノードにおいて連続する整合性署名期間の間でも異なり得る。
【0251】
この例示的な実施形態によれば、整合性署名期間CSの開始は、対応する公証ラウンドNR1のブロック提案のためのファイナライズラウンドFR1を含むファイナリティ手順を開始する。他のいくつかの実施形態によれば、ファイナリティ手順は、整合性署名期間CSを開始した後に、事前に定義された間隔をあけて開始し得る。
【0252】
ファイナライズラウンドFR1の間、分散ネットワーク、特に公証サブセットの複数のノードは、公証ラウンドNR1のブロック提案の整合性署名の数を観察する。公証ラウンドNR1のブロック提案のうちの1つについて事前に定義された数の整合性署名が観察されると、対応するブロック提案がファイナライズされてブロックチェーンに追加され、ファイナライズラウンドFR1が終了する。
【0253】
いくつかの実施形態によれば、対応するブロック提案は、それ自身も完全に公証されている場合にのみ、ファイナライズされ、ブロックチェーンに追加される。
【0254】
同様に、ファイナライズラウンドFR2およびファイナライズラウンドFR3は、公証ラウンドNR2および公証ラウンドNR3の整合性署名期間CSを開始した後にそれぞれ開始される。
【0255】
ファイナライズラウンドFR1、ファイナライズラウンドFR2、およびファイナライズラウンドFR3のそれぞれの期間は、対応する公証ラウンドNR1、公証ラウンドNR2、および公証ラウンドNR3のブロック提案において事前に定義された数の整合性署名を収集に要する時間に依存する。よって、ファイナライズラウンドFR1、ファイナライズラウンドFR2、およびファイナライズラウンドFR3の期間は異なり得る。
【0256】
ファイナライズラウンドは、それ以降のファイナライズラウンドが終了したときに終了することもある。例えば、FR2で事前に定義された数の整合性署名が観察されると、FR2が終了され得る。これにより、FR1で事前に定義された数の整合性署名がまだ観察されていなくても、FR1が暗黙に終了され得る。
【0257】
図15の例については、公証ラウンドNRXの整合性署名期間に実行される整合性署名は、同じ公証ラウンドNRXで作成されたブロック提案について行われると想定される。
【0258】
他のいくつかの実施形態によれば、公証ラウンドNRXの整合性署名期間CSにおいて実行される整合性署名は、前の公証ラウンドNRX-dで作成されたブロック提案について行うことができ、ここで、dは整数であり、システムパラメータであり得る。値dは、いくつかの実施形態によれば可変であり得る。いくつかの実施形態によれば、dの複数の値を同時に考慮することができる。いくつかの実施形態によれば、dの値の範囲を同時に考慮することができる。
【0259】
一例が
図16に示されており、それは、本発明の別の実施形態による公証ラウンドおよびファイナライズラウンドにおける段階の例示的なタイミング図を示している。
【0260】
図15を参照すると、
図16の基礎となる方法が示されており、そこでは、公証ラウンドNR1、公証ラウンドNR2、公証ラウンドNR3、および公証ラウンドNR4を連続して行っている。公証ラウンドNR1、公証ラウンドNR2、公証ラウンドNR3、および公証ラウンドNR4のそれぞれは、
図15を参照して一般的に説明されるように、タイムアウト期間TO、公証署名期間NS、および整合性署名期間CSを備える。
【0261】
図16に示される一実施形態によれば、公証ラウンドNRXの整合性署名期間において実行される整合性署名は、直前の公証ラウンドNRX-1で作成されたブロック提案について行われると想定される。一例として、整合性署名期間NR2で実行される整合性署名は、直前の公証ラウンドNR1で作成されたブロック提案について行われている。したがって、それぞれの公証ラウンドのファイナライズラウンドも間隔をおいて開始され得る。より具体的には、
図16に示されるように、ファイナライズラウンドFR2は、公証ラウンドNR3の整合性署名期間CSを開始した後にのみ開始され得る。
【0262】
さらに他のいくつかの実施形態によれば、整合性検査は、以下でさらに示されるように、ファイナライズされる複数のラウンドに対して実行され得る。
【0263】
いくつかの実施形態によれば、公証ラウンドはまた、第1のラウンドとして示され得、そしてファイナライズラウンドは、第2のラウンドとして示され得る。
【0264】
図17は、本発明の一実施形態による6つの連続する公証ラウンドNR1、公証ラウンドNR2、公証ラウンドNR3、公証ラウンドNR4、公証ラウンドNR5、および公証ラウンドNR6の例示的なフローチャート/タイミング図を示す。より具体的には、それは、複数のノードの公証サブセットのノードであると想定されるノードN1が行う方法の各々のステップを示している。
【0265】
この例によれば、公証ラウンドNR1~NR6のそれぞれの間に、3つのブロック提案が作成されると想定される。ブロック提案には、例えば、第1の公証ラウンドNR1のR1のように、対応する公証ラウンドのそれぞれのラウンド番号が含まれる。ブロック提案はまた、ブロック番号B.X.Yを含み、ここで、Xは、公証ラウンドのブロック提案の連続番号を示し、Yは、公証ラウンドのラウンド番号を示す。
【0266】
ブロック提案は、前の公証ラウンドのそれぞれの親ブロック提案への矢印により示されるリンク1710を備える。
【0267】
ここで、第1の公証ラウンドR1を参照すると、3つのブロック提案B1.1、B2.1およびB3.1がある。第1の公証ラウンドのブロック提案のリンクは示されていない。
【0268】
ノードN1は、3つのブロック提案について妥当性検査を行う。この例では、ブロック提案B1.1だけについて妥当であると判明したので、ブロック提案B1.1について個別の公証署名NSN1を実行すると仮定する。ここで、添え字N1は署名ノードを示す。
【0269】
個別の公証署名NSN1を実行した後、ノードN1は整合性検査を行う。整合性検査には、ノードN1が現在のラウンドR1において実行したブロック提案が、一連の整合性規則に則って整合性があると見なされる個別の公証署名であるかどうかの検査が含まれる。このラウンドR1では、ノードN1はブロック提案B1.1において単一の個別の公証署名を1つだけ実行したので、ブロックB1.1は整合性があると見なされ、ノードN1はブロック提案B1.1において整合性署名CSR1R1N1を実行する。
【0270】
整合性署名は、ファイナライズされる公証ラウンド番号、現在の公証ラウンド番号、および署名者または署名ノードを備える。したがって、下付き文字「R1R1N1」は、最初の「R1」がファイナライズされる公証ラウンド番号を示し、2番目の「R1」が現在の公証ラウンド番号を示し、「N1」が署名ノードを示す。
【0271】
ここで、第2の公証ラウンドR2を参照すると、3つのブロック提案B1.2、B2.2、およびB3.2がある。
【0272】
ノードN1は、3つのノードについて妥当性検査を再度行う。この例では、ブロック提案B1.2およびB2.2について妥当であると判明したので、ブロック提案B1.2およびB2.2について個別の公証署名NSN1を実行すると想定される。
【0273】
個々の公証署名NSN1を実行した後、ノードN1は整合性検査を行う。このラウンドR2では、ノードN1は2つの異なるブロックで2つの個別の公証署名を実行したので、対応するブロック提案B1.2とB2.2とは整合性があるとは見なされないので、ノードN1は公証ラウンドR2において整合性署名を実行しない。
【0274】
ここで、第3の公証ラウンドR3を参照すると、3つのブロック提案B1.3、B2.3、およびB3.3がある。
【0275】
ノードN1は、3つのノードについて妥当性検査を再度行う。この例では、ブロック提案B1.3およびB2.3について妥当であると判明したので、ブロック提案B1.3およびB2.3について個別の公証署名NSN1を実行すると想定される。
【0276】
個別の公証署名NSN1を実行した後、ノードN1は整合性検査を行う。このラウンドR3では、ノードN1は2つの異なるブロックで2つの個別の公証署名を実行したので、対応するブロック提案B1.3とB2.3とは整合性があるとは見なされない。ただし、ブロック提案B1.3とB2.3との両方が、前の公証ラウンドR2の同じ親ブロック提案B2.2を参照またはリンクしているので、整合性検査は、前のラウンドR2のブロック提案B2.2に整合性があると見なされ、ブロック提案B2.2において整合性署名CSR2R3N1を実行する。下付き文字「R2R3N1」は、最初の「R2」でファイナライズされる公証ラウンド番号を示す。この例では、前の公証ラウンド番号がR2であり、「R3」で現在の公証ラウンド番号R32を示す。
【0277】
ここで、第4の公証ラウンドR4を参照すると、3つのブロック提案B1.4、B2.4、およびB3.4がある。
【0278】
ノードN1は、3つのノードについて妥当性検査を再度行う。この例では、ブロック提案B1.4およびB2.4について妥当であると判明したので、ブロック提案B1.4およびB2.4について個別の公証署名NSN1を実行すると想定される。
【0279】
個別の公証署名NSN1を実行した後、ノードN1は整合性検査を行う。このラウンドR4では、ノードN1は2つの異なるブロックで2つの個別の公証署名を実行したので、対応するブロック提案B1.4とB2.4とは整合性があるとは見なされない。
【0280】
ここで、第5の公証ラウンドR5を参照すると、3つのブロック提案B1.5、B2.5、およびB3.5がある。
【0281】
ノードN1は、3つのノードについて妥当性検査を再度行う。この例では、ブロック提案B3.5だけについて妥当であると判明したので、ブロック提案B3.5について個別の公証署名NSN1を実行すると想定される。
【0282】
個別の公証署名NSN1を実行した後、ノードN1は整合性検査を行う。このラウンドR5では、ノードN1はブロック提案B3.5において単一の個別の公証署名を1つだけ実行したので、ブロックB3.5は整合性があると見なされ、ノードN1はブロック提案B3.5において整合性署名CSR5R5N1を実行する。
【0283】
さらに、前のラウンドR3およびR4の整合性検査も行い、ブロックB2.4およびB2.3は、ブロックB3.5がリンクするか、またはブロックB2.4に遡って参照する、のと同様に整合性があると見なされる。したがって、ブロック提案B2.4において整合性署名CSR3R5N1を実行し、ブロック提案B2.3において整合性署名CSR3R5N1を実行する。
【0284】
ここで、第6の公証ラウンドR6を参照すると、3つのブロック提案B1.6、B2.6、およびB3.6がある。
【0285】
ノードN1は、3つのノードについて妥当性検査を再度行う。この例では、ブロック提案B3.6だけについて妥当であると判明したので、ブロック提案B3.6について個別の公証署名NSN1を実行すると想定される。
【0286】
個別の公証署名NSN1を実行した後、ノードN1は整合性検査を行う。このラウンドR6では、ノードN1はブロック提案B3.6において単一の個別の公証署名を1つだけ実行したので、ブロックB3.6は整合性があると見なされ、ノードN1はブロック提案B3.6において整合性署名CSR6R6N1を実行する。
【0287】
上述の例では、整合性検査を行うステップが、ファイナライズされる複数の公証ラウンドについて行われると想定される。一例として、公証ラウンドNR5では、ノードN1が公証ラウンドNR3、NR4、およびNR5の署名を行う。
【0288】
他のいくつかの実施形態によれば、例えば、
図15および16に示されるように、複数のノードは、ファイナライズされる単一の公証ラウンドについてのみ整合性検査を行い得る。
【0289】
いくつかの実施形態によれば、複数のノードは、単一の公証ラウンドrの整合性署名期間において、
図17に記載されるように、多数の公証ラウンドhからのブロック提案の整合性検査を行い得る。ただし、hについてのすべての可能な値ではなく、ラウンド番号hのサブセットについてのみ行い得る。
【0290】
いくつかの実施形態では、ラウンド番号hのサブセットを事前に選択し得る。例えば、ノードは、nが事前に定義された整数であるn番目のラウンド毎にのみ整合性検査を検討し得る。つまり、h=n mod nを満たすhの値のみについて検討し得る。これは、プロトコルのオーバーヘッドを減少させることで、不特定多数へ配信されるメッセージの数を減少させるために行われる。
【0291】
他のいくつかの実施形態では、ラウンド番号hのサブセットは、事前の定義されたrの関数であり得る。例えば、ラウンド番号hのサブセットは、閉区間[r-d、r]であり得る。ここで、dは事前に定義された定数である。これは、プロトコルのオーバーヘッドに上限を設定することで、不特定多数へ配信されるメッセージの数に上限を設定するために行われる。
【0292】
他のいくつかの実施形態では、ラウンド番号hのサブセットは、半開区間(s、s+d]であり得る。ここで、sは、それぞれのノードがファイナライズされたブロックを観察した最後のラウンドであり、dは、事前に定義された定数である。これは、改めてオーバーヘッドとメッセージ量の上限を作成する。
【0293】
次のセクションでは、本発明のいくつかの実施形態による、さらなる暗号の詳細を開示する。本発明のいくつかの実施形態によれば、分散ネットワークは、所望のセキュリティの仮定またはセキュリティの必要性に応じて設計され得る。
【0294】
いくつかの実施形態によれば、以下を前提とし得る。
【0295】
すべての公証サブセットの大きさはnである、ここでnは整数である。言い換えると、公証サブセットは、n個のノードを備える。
【0296】
すべての公証サブセットにおいて、最大でf個のノードは、ビザンチン(不誠実)であり、残りはプロトコル(正当)である。ここでfは整数である。
【0297】
価値提案を公証し、完全に公証された価値提案を作成するために必要な個別の公証署名の事前に定義された数はt1である。ここで、t1は整数である。
【0298】
一連のファイナリティ規則を満たし、価値提案をファイナライズするために必要とされる事前に定義された数の個々の整合性署名は、t2である。ここで、t2は整数である。
【0299】
t1、t2、n、およびfは、次式を適用して選択される。
t1+t2>n+f
【0300】
一連の整合性規則は、Aが、現在のラウンドにおいてノードが個別の公証署名を実行した、すべての現在の価値提案の共通祖先であるときにのみ、価値提案Aが(現在のラウンドのノードの観点から)整合性があると特定する。より具体的には、現在のラウンドにおいてノードが個別の公証署名を実行した、Aが、すべての現在の価値提案に直接または間接的にリンクされているとき、Aは共通祖先である。
【0301】
ノードが、現在のラウンドにおいて、いかなる個別の公証署名も実行しなかったとき、すべてのAは整合している。
【0302】
一連のファイナリティ規則は、少なくともt2の整合性署名が必要であり、それらはすべて、そのラウンドrの公証サブセットにより同一の公証ラウンドrの間に作成されることを指定する。
【0303】
上述の前提に基づいて、一実施形態によれば、以下の定理で行い得る。まず、ラウンドhからの価値提案Aがファイナライズされる。次に、十分に長い公証された価値提案のシーケンスは、Aを含む。より正確には、長さrの公証された、いかなる価値提案のシーケンスにもAを含むような数r=r(A)が存在する。
【0304】
一実施形態によれば、その定理の証明は、以下のように提供され得る。
【0305】
Aがファイナライズされているので、ラウンドrの整合性期間CPの間にすべてが作成された少なくともt2の整合性署名をAが受信するような数r≧hが存在する。
【0306】
Bをラウンドrから完全に公証された価値提案とする。AはBの祖先であると主張し、これにより、定理を証明する。
【0307】
まず、その主張が誤りである、すなわち、AがBの祖先ではないと仮定する。Sをラウンドrでアクティブであった公証サブセットとする。Sの中の少なくともt2ノードは、Aについて個別の整合性署名を実行した。それらのt2ノードのうち、少なくともt2-fは正当であった。一連の整合性規則によると、それらのt2-fノードはBにおいて個別の公証署名を実行しなかった。なぜなら、sにおけるノードが、ラウンドrのBにおいて個別の公証署名を実行したとき、AはBの祖先ではないので、Aはラウンドrのそのノードに対して整合性がない。ゆえに、sからのノードによるBにおける個別の公証署名の数は、最大でn-(t2-f)=n+f-t2<t1である。これは、Bが完全に公証されていないことを意味する。これは、矛盾しているので、上述の主張は真である。
【0308】
いくつかの例を以下に示す。f<n/3と仮定すると、分散ネットワークは、例えば、以下のいくつかの実施形態によるt1、t2およびnを選択し得る。
t1=t2=2/3*n、または、
t1=5/6*n、t2=1/2*n、または、
t1=1/2*n、t2=5/6*n。
【0309】
上述の具体化された証明では、一連のファイナリティ規則には、公証サブセットがラウンドごとに変更されない場合であっても、同じ公証ラウンドの間にすべてが作成されたt2整合性署名が必要である、ことに注意を要する。
【0310】
ここで
図18を参照すると、本発明の実施形態による、例えば、
図1のネットワーク100に示されるネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、計算機能を実行することができ、したがって一般に計算システムまたはコンピュータとして具体化され得る計算ノードを確立する。ネットワークノード10は、例えば、サーバーコンピューターであり得る。ネットワークノード10は、他の多くの汎用または特殊目的の計算システム環境または構成で動作可能であり得る。
【0311】
ネットワークノード10は、コンピュータシステムにより実行されるプログラムモジュールなどのコンピュータシステム実行可能命令の一般的なコンテキストで記述し得る。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれ得る。ネットワークノード10は、汎用計算装置の形態で示されている。ネットワークノード10の構成要素は、1つ以上のプロセッサまたは処理ユニット1815、システムメモリ1820、およびシステムメモリ1820を含む様々なシステム構成要素をプロセッサ1815に結合するバス1816を含み得る。ただし。これらに限定されるものではない。
【0312】
バス1816は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイテッドグラフィックスポート(AGP)、さまざまなバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスなど、いくつかのタイプのバス構造の1つまたは複数を表す。例えば、これらに限定されるものではないが、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスが含まれる。
【0313】
ネットワークノード10は、通常、様々なコンピュータシステム可読媒体を含む。そのようなメディアは、ネットワークノード10によりアクセス可能である任意の利用可能な媒体であり得る、そしてそれは、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可媒体の両方を含む。
【0314】
システムメモリ1820は、ランダムアクセスメモリ(RAM)1821および/またはキャッシュメモリ1822などの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。ネットワークノード1810は、他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含み得る。一例として、ストレージシステム1823は、読み取りおよび書き込み用の取り外し不可で不揮発性の磁気媒体(図示せず、通常は「ハードドライブ」と呼ばれる)を提供可能である。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)に、読み取りおよび書き込みを行う磁気ディスクドライブ、ならびにCD-ROM、DVD-ROM、およびその他の光学媒体のような取り外し可能な不揮発性光ディスクに、読み取りまたは書き込みを行う光ディスクドライブを提供し得る。このような場合、それぞれが1つ以上のデータ媒体インターフェイスによりバス1816に接続可能である。以下でさらに描写および説明されるように、メモリ1820は、本発明のいくつかの実施形態の機能を実行するように構成されたプログラムモジュール一式(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含み得る。
【0315】
プログラムモジュール1831一式(少なくとも1つ)を有するプログラム/ユーティリティ1830は、一例として、これに限定されるものではないが、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータが、メモリ1820に格納され得る。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせ、のそれぞれは、ネットワークキング環境へ実装し得る。プログラムモジュール1831は、一般に、本明細書に記載されるような本発明のいくつかの実施形態の機能および/または方法論を実施する。プログラムモジュール1831は、分散ネットワークのユーザーに分散ネットワークにより計算された計算結果へのアクセス提供する、コンピュータに実装する方法の特定の1つ以上のステップ、例えば、上述の方法の1つ以上のステップを実行し得る。
【0316】
ネットワークノード10はまた、ディスプレイ1818と同様に、キーボードまたはポインティング装置などの1つ以上の外部装置1817と通信し得る。このような通信は、入出力(I/O)インターフェイス1819を介して実施可能である。さらに、ネットワークノード10は、ネットワークアダプタ1841を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、および/またはパブリックネットワーク(例えば、インターネット)のようなネットワークのうち1つ以上のネットワーク40と通信可能である。いくつかの実施形態によれば、ネットワーク1840は、特に、複数のネットワークノード10、例えば、
図1に示されるようなネットワーク100を備える分散ネットワークであり得る。図示したように、ネットワークアダプタ1841は、バス1816を介してネットワークノード10の他のコンポーネントと通信する。示されていないが、他のハードウェアおよび/またはソフトウェアコンポーネントをネットワークノード10と組み合わせて使用できることを理解されたい。
【0317】
ネットワークノード10は、対応する分散ネットワークにネットワークリソースを提供する。ネットワークリソースには、特に、処理ユニット1815およびストレージシステム1823を含むメモリ1820が含まれる。
【0318】
図19aおよび19bは、本発明の一実施形態による分散ネットワークの非同期通信モデルおよび対応する非同期コンセンサスメカニズムを示す。
【0319】
同期コンセンサスプロトコルは、ネットワーク同期に依存して合意を観察する。言い換えると、事前に定義された時間が経過した後、すべてのメッセージが他のノード/レプリカによって受信されたと想定される。例えば、メッセージはブロックであり得、合意は最長のブロックチェーンを調べることによって決定される。このような同期コンセンサスプロトコルでは、セキュリティと少ない待ち時間とはトレードオフである。事前に定義された時間を長くすると、ノードは、関連するすべてのメッセージが受信され、何が合意されたかを知っている、と確信できるが、待ち時間は非常に長くなる。一方、事前に定義された時間をかなり短くすると、待ち時間は改善され得るが、ノードはまだすべてのブロックを受信していない可能性があり、誤った入力が合意されたとみなし得る。
【0320】
本発明のいくつかの実施形態は、公証ラウンドと並行して非同期で実行することができるファイナリティ手順を提供することで、このトレードオフに関連する技術的問題に対処する。ファイナリティ手順は、新しい価値提案について合意が形成されたときに、ノード/レプリカに具体的な確証を提供する。
【0321】
すべての高さにおいて、ノードが完全に公証されたブロック提案bを確認することで個別の公証署名の実行を停止したとき、ノードはこの高さにおいて実行した個別の公証署名の数を確認する。b以外のブロック提案に署名しなかったときは、bに整合性署名を付加し得る。このような一実施形態によれば、高さhのブロックbにおけるノードiからの整合性署名の意味は、「I、ノードiは、高さhのb以外のブロック提案についていかなる個別の公証署名も実行しなかった」と理解可能である。
【0322】
公証サブセットのノードは、それらの整合性署名(作成する場合)を不特定多数に配信し、整合性署名の十分な数(2f+1)が一連のファイナリティ規則を満たし得ることで、ブロック提案がファイナライズされ得る。ノード/レプリカは、ブロック提案bの十分なファイナライズを確認すると、bおよびbにより示されるチェーンを最終であると見なす。
【0323】
このファイナライズへのアプローチは、破損しているノード/レプリカがn個のうち最大でf個以下である限り、n=3f+1で、ネットワークを想定せずに安全性を満たす。つまり、高さhのブロックbにおけるファイナライズは、高さhにおいて公証されたブロックb´≠bが存在できないことを意味する。
【0324】
図19aを参照すると、正方形1911は、ブロック提案チェーン1910のブロック提案を表す。レ点1912は、ブロック提案1911が完全に公証されたことを示す。矢印1913は、各々のブロック提案がリンクしている前のブロック提案を指す。
【0325】
破線で示されているブロック提案1921は、ブロック提案の別の可能なチェーン1920を表す。前述のように、本発明の一実施形態は、非同期通信モデルに基づく。このような非同期通信モデルによれば、ブロック提案チェーン1910のみが存在する場合であっても、破線の代替チェーン1920が存在しないことを確信できないので、チェーン1910を見るネットワークのノードは進展することができない。よって、それらは、ブロック提案1911が実際に合意したかどうかを判断できない。
【0326】
本発明のそのような非同期コンセンサスシステム/ネットワークのいくつかの実施形態における合意の進展を容易にするために、整合性検査および整合性署名を使用する。
図19bを参照すると、正方形1931は完全に公証されたブロックであり、それらのいくつかには、星で示されている整合性署名1934が追加されている。整合性署名1934は、同じブロック高さにおけるブロック提案1940の並列チェーンの別の破線の公証されたブロック1941の存在を除外する。よって、この例では、整合性署名1934を確認するノード/レプリカは、それぞれのブロック提案を最終のものとして受け入れ可能である。これは、非同期通信の仮定においても同様である。
【0327】
図20に、本発明のいくつかの実施形態による価値提案の通信のための通信方式のタイミング図を示す。
【0328】
横軸は時間を示し、縦軸は価値提案の不特定多数への配信に利用される帯域幅を示す。
【0329】
図示の一実施形態によれば、価値提案は、公証ラウンドの第1の期間2010の間に通信、特に、不特定多数に配信される。第1の期間2010は、VBP(価値提案の配信)として示され得る。第1の期間VBP、2010は、いくつかの実施形態によれば、
図15および
図16に示されるようなタイムアウト期間TOと一致し得る。
【0330】
第1の期間2010は、VBPの間に、プロトコルの署名を実行および不特定多数に配信するために使用される第2の期間2020が配置される。第2の期間は、SB(署名の配信)として示され得、特に、個別の公証署名および整合性署名の実行および不特定多数への配信のために使用され得る。第2の期間2020、SBは、
図15および
図16に示されるように、期間NSおよび期間CSと一致し得る。
【0331】
いくつかの実施形態によれば、第2の期間SB、2020は、整合性署名の実行と、対応するノードにより実行された整合性署名の最初の通信/不特定多数への配信のみを含み得る。その一方で、他のノードによる整合性署名の転送/さらなる不特定多数への配信、および(一連のファイナリティ規則により定義された)事前に定義された最小数の整合性署名の観察は、ファイナリティ手順の一部としてバックグラウンドで実行し得る、ことに注意されたい。したがって、整合性署名期間CSは非常に短くし得、公証署名期間NSよりも短く図示されている。
【0332】
このような通信方式は、スループットの向上、特にコンセンサススループットの向上という技術的な問題に対処する。いくつかの実施形態によれば、コンセンサススループットは、所与の時間単位内にファイナライズされるすべての価値提案の合計の大きさとして定義され得る。
【0333】
いくつかの実施形態によれば、高スループットは、第1の期間VPBの間に不特定多数に配信される、特に、大きな価値提案で達成され得る。そのような実施形態によるボトルネックは、(大きな)価値提案を不特定多数に配信するために必要とされるネットワーク帯域幅である。大きな価値提案では、価値提案を不特定多数に配信するために必要な帯域幅は、主に署名だけであるコンセンサスメカニズムの他のメッセージに必要な帯域幅よりも支配的である。いくつかの実施形態によれば、そのような他のメッセージは、コンセンサスオーバーヘッドとして示され得る。
【0334】
いくつかの実施形態によれば、第1の期間の間にに不特定多数に配信される価値提案は、少なくとも1Mバイトの大きさを有し、一方、第2の期間の間に不特定多数に配信される個別の公証署名および整合性署名は、200バイト未満の大きさを有する。
【0335】
いくつかの実施形態によれば、公証ラウンドの第1の期間VPBは、公証ラウンドの第2の期間SBと少なくとも同じ長さであり、特に、第2の期間の少なくとも2倍の長さである。
【0336】
これにより、価値提案の不特定多数への配信に使用されない休止時間が短縮され、コンセンサススループットが向上する。いくつかの実施形態によれば、時間の少なくとも60%は、価値提案を通信/不特定多数に配信するために使用され得る。言い換えると、最初の期間VPBは時間の少なくとも60%を含み、第2の期間SBは40%未満を含むことになる。
【0337】
価値提案の不特定多数への配信のためのこのような高帯域幅の使用は、コンセンサスメカニズムの革新的な設計、特に、公証署名を実行して不特定多数に配信することにより、第1の期間と第1の期間との間の比較的短い第2の期間の間に整合性署名を実行して最初に通信することにより、さらに、整合性署名を転送/さらに不特定多数に配信することにより、公証ラウンドと並行してファイナリティ手順をずらして重複させて実行することにより、達成される。
【0338】
図21に、本発明の別の実施形態による公証ラウンドおよびファイナライズラウンドの期間の例示的なタイミング図を示す。
【0339】
基礎となる方法は、NR1、NR2、およびNR3の公証ラウンドを連続して行う。ここで、公証ラウンドNR1、NR2、およびNR3のそれぞれは、タイムアウト期間TO、公証署名期間NS、および整合性署名期間CSを備える。タイムアウト期間TOの間に、新しい価値提案が不特定多数に配信され得、複数のノードの公証サブセットは、価値提案の妥当性検査をすでに実行し得る。 公証署名期間NSの間、複数のノードの公証サブセットは、事前に定義された一連の妥当性規則に則って妥当であるブロック提案について個々の公証署名を実行および通信/不特定多数に配信し得る。さらに、公証署名期間NSは、公証と同様に、他のノードの個別の公証署名の受信および転送を備え得る。十分な数の個別の公証署名が観察されると直ちに、公証サブセットの複数のノードは公証署名を行うことを停止し、それぞれの公証ラウンドの整合性署名期間CSに進み得る。整合性署名期間CSは、特に、整合性検査、ならびに整合性署名を実行した複数のノードによる整合性署名の実行および初期通信を備え得る。
【0340】
この実施形態によれば、ネットワークは、公証署名期間がすでに完了した後で新しい公証ラウンドを開始するように構成される。一例として、公証ラウンドNR2は、公証ラウンドNR1の公証署名期間NS直後にすでに開始されている。同時に、ファイナリティ手順FR1も開始し得る。よって、そのような実施形態によれば、公証期間はまた、部分的に重複し得る、言い換えれば、交互に実行され得る。
【0341】
本発明の態様は、システム、特に、複数のサブネット、方法、および/またはコンピュータプログラム製品を備える分散ネットワークとして具体化され得る。コンピュータプログラム製品は、プロセッサに本発明のいくつかの態様を実行させる、コンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0342】
コンピュータ可読記憶媒体は、命令実行装置により使用される命令を保持および記憶可能な有形の装置であり得る。コンピュータ可読記憶媒体は、例えば、これらに限定させるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはそれらの任意の適切な組み合わせであり得る。本明細書で使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバーケーブルを通過する光パルス)、または配線を介して送信される電気信号のような一時的な信号そのものであると解釈されるべきではない。
【0343】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算装置/処理装置に、またはネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータまたは外部記憶装置にダウンロード可能である。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピューター、および/またはエッジサーバーで構成され得る。各々の計算装置/処理装置のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を転送して、それぞれの計算装置/処理装置のコンピュータ可読記憶媒体に格納する。
【0344】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであり得る。プログラミング言語は、スモールトーク、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語であり得る。
【0345】
本発明のいくつかの態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して本明細書に記載されている。
【0346】
本発明のいくつかの実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/行為を実施する手段を作成して、機械を製造する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、および/または他の装置に特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に記憶され得る。この命令が格納されているコンピュータ可読記憶媒体は、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/行為の態様を実施する命令を含む製造品を備える。
【0347】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他の装置にロードされて、コンピュータ、他のプログラム可能な装置または他の装置において、コンピュータ、他のプログラム可能な装置、または他の装置で実行される命令が、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/動作を実装するように、一連の操作ステップを実行させて、コンピュータ実装プロセスを生成し得る。
【0348】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるネットワーク、システム、方法、およびコンピュータプログラム製品の実装が可能なアーキテクチャ、機能、および動作を図示したものである。これに関して、フローチャートまたはブロック図の各々のブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、所定の論理機能を実装する1つ以上の実行可能命令を備える。いくつかの代替の実装では、ブロックに示されている機能は、図に示されている順序と異なってよい。例えば、連続して表示される2つのブロックは、実際には実質的に同時に実行され得る。また、関連する機能に応じて、ブロックが逆の順序で実行されてもよい。
【0349】
次のセクションでは、いくつかの追加および/または代替の実施形態、ならびにいくつかの追加および/または代替の文言および本発明の実施形態の用語の定義が提供される。
【0350】
いくつかの実施形態によれば、一連の妥当性規則は、公証サブセットのノードが価値提案を確認および/または受信したときに価値提案が妥当であることを特定し得る。そのような実施形態によれば、十分な公証は、事前に定義された数の複数のノードが価値提案を確認および/または受信したことの確認または認証または証拠と見なし得る。そのような実施形態によれば、価値提案を公証することは、公表の証拠と見なされ得る。この点において、公証サブセットの複数のノードは、いくつかの実施形態によれば、それらが対応する価値提案を受信したおよび/または確認したという証人として役立ち得る。
【0351】
さらなるいくつかの実施形態によれば、公証という用語はまた、投票を含み得る。そのような実施形態によれば、対応する分散ネットワークは、価値提案の限度を見積もることを目的とし得、ラウンドごとに1つの価値提案、特に、最も優先度の高いもの、または優先度の高い価値提案のグループのみ、を公証することを目的とし得る。
【0352】
よって、いくつかの実施形態によれば、一連の妥当性規則は、一連の優先順位付け規則として具体化され得る。そのような実施形態によれば、一連の優先順位付け規則は、妥当性規則として優先順位規則を指定し得る。このような優先順位規則は、対応するノードが、どの価値提案またはどの価値提案グループを公証署名するか、すなわち、公証署名を実行するか、を決定し得ることにしたがって、基準を指定し得る。
【0353】
いくつかの実施形態によれば、妥当性検査は、2つの異なるサブステップを包含し得る。ここで、2つの異なるサブステップは、2つの異なる一連の妥当性規則、例えば、第1の一連の妥当性規則と第2の一連の妥当性規則とで検査するように構成され得る。
【0354】
第1のサブステップは、特に、第1の一連の妥当性規則、例えば、上述の価値提案のいつ以上の特徴の妥当性検査を含み得る。第2のサブステップは、特に、第2の一連の妥当性規則、例えば、公証サブセットのノードが価値提案を確認および/または受信したときに価値提案が妥当であるとすることを指定する、妥当性検査を含み得る。
【0355】
そのような実施形態によれば、第1のサブステップおよび第2のサブステップは、異なる公証サブセット、例えば、第1の公証サブセットと第2の公証サブセットにより実施され得る。いくつかの実施形態によれば、第1の公証サブセットは、第2の公証サブセットよりも小さく選択し得る。
【0356】
いくつかの実施形態によれば、公証署名はまた、投票として示され得るか、または投票を表し得る。公証ラウンドは、事前に承認されたラウンドとして示され得、公証された価値提案は事前に承認された価値提案として示され得る。
【0357】
いくつかの実施形態によれば、公証署名はまた、妥当性署名として示され得る
【0358】
本発明の現状で好ましい実施形態が示され、説明されている。しかし、本発明はそれに限定されず、他の方法で以下の特許請求の範囲内で様々に具体化および実施され得ることが明確に理解されるべきである。
【国際調査報告】