(57)【特許請求の範囲】
【請求項１】
実用的ビザンチンフォールトトレランス(PBFT)に基づいてブロックチェーンネットワークにおけるコンセンサスプロセスを促進するためのコンピュータで実施される方法であって、
第1のコンセンサスノードによって、ビュー変更のタイムアウトの前に切れるタイマーを設定するステップと、
第2のコンセンサスノードへ、前記タイマーが切れたことに応答して前記第1のコンセンサスノードによって欠けている1つまたは複数のコンセンサスメッセージに対する要求を送信するステップと、
前記第2のコンセンサスノードから、それぞれの前記1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される前記1つまたは複数のコンセンサスメッセージを受信するステップと、
前記受信された1つまたは複数のコンセンサスメッセージに含まれるコミットメッセージの量が2f+1個以上である場合、トランザクションのブロックが有効であると決定するステップと
を備え、fがPBFTに基づいてブロックチェーンによって許容可能な欠陥ノードの最大の数である、コンピュータで実施される方法。
【請求項２】
前記要求が、コンセンサスラウンドの番号を示す連続番号を含む、請求項1に記載のコンピュータで実施される方法。
【請求項３】
前記1つまたは複数のコンセンサスメッセージが、前記第1のコンセンサスノードによる、前準備メッセージ、準備メッセージ、および欠けているコミットメッセージのうちの1つまたは複数を含む、請求項1に記載のコンピュータで実施される方法。
【請求項４】
前記1つまたは複数のコンセンサスメッセージが、安定したチェックポイントに達するまで、それらが生成または記憶される1つまたは複数のコンセンサスノードに記憶される、請求項1に記載のコンピュータで実施される方法。
【請求項５】
前記1つまたは複数のコンセンサスメッセージに対応する1つまたは複数の連続番号を受信するステップをさらに備え、各連続番号が、対応するコンセンサスメッセージと関連付けられるコンセンサスラウンドの番号を示す、請求項1に記載のコンピュータで実施される方法。
【請求項６】
トランザクションの前記ブロックが有効であると決定される場合、トランザクションの前記ブロックをブロックチェーンおよびステータスデータベースに提出するステップをさらに備える、請求項1に記載のコンピュータで実施される方法。
【請求項７】
第3のコンセンサスノードへ、前記タイマーが切れたことに応答して、かつトランザクションの前記ブロックが無効であると決定される場合、前記第2のコンセンサスノードによって欠けている第2の1つまたは複数のコンセンサスメッセージに対する要求を送信するステップと、
前記第3のコンセンサスノードから、それぞれの前記第2の1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される前記第2の1つまたは複数のコンセンサスメッセージを受信するステップと、
前記1つまたは複数のコンセンサスメッセージおよび前記第2の1つまたは複数のコンセンサスメッセージに含まれる前記コミットメッセージの量が2f+1個以上である場合、トランザクションの前記ブロックが有効であると決定するステップと
をさらに備える、請求項1に記載のコンピュータで実施される方法。
【請求項８】
1つまたは複数のプロセッサに結合され、かつ、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から7のいずれか1項に記載の方法による動作を実行させる命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項９】
コンピューティングデバイスと、
前記コンピューティングデバイスに結合され、かつ、前記コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、請求項1から7のいずれか1項に記載の方法による動作を実行させる命令を記憶したコンピュータ可読記憶デバイスと
を備える、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
ブロックチェーンシステム、コンセンサスネットワーク、分散型台帳システム(DLS)ネットワーク、またはブロックチェーンとも呼ばれ得るブロックチェーンネットワークは、参加するエンティティが安全にかつ変更不可能にデータを記憶することを可能にする。ブロックチェーンはトランザクションの台帳として記述されることが可能であり、ブロックチェーンの複数のコピーがブロックチェーンネットワークにわたって記憶される。例示的なタイプのブロックチェーンには、パブリックブロックチェーン、コンソーシアムブロックチェーン、およびプライベートブロックチェーンがあり得る。パブリックブロックチェーンは、そのブロックチェーンを使用してコンセンサスプロセスに参加することがすべてのエンティティに開かれている。プライベートDLSは、読取りパーミッションおよび書込みパーミッションを集中的に制御する特定のエンティティだけに提供される。
【０００２】
別のタイプのブロックチェーンシステムにはコンソーシアムブロックチェーンシステムがある。コンソーシアムブロックチェーンシステムは、コンセンサスプロセスを制御するエンティティの選択グループのために提供され、アクセス制御レイヤを含む。その結果、コンソーシアムブロックチェーンシステムに参加する1つまたは複数のエンティティは、誰がコンソーシアムブロックチェーンシステムにアクセスできるか、および誰がコンソーシアムブロックチェーンシステムのコンセンサスプロセスに参加できるかについての制御権を有する。たとえば、データ(たとえば、トランザクション)を変更不可能に記録するために、事業体(たとえば、会社、学術機関)のグループがコンソーシアムブロックチェーンシステムに参加することができる。いくつかの例では、あるエンティティは、コンソーシアムブロックチェーンシステム内でデータにアクセスする/データを見ることが可能であるが、コンソーシアムブロックチェーンシステムにデータを与えることが可能ではないことがある。
【０００３】
ブロックチェーンは一連のブロックを含み、その各々がネットワークにおいて実行される1つまたは複数のトランザクションを含む。各ブロックは台帳のページに類似していることがあるが、ブロックチェーン自体が台帳の完全なコピーである。個々のトランザクションが確認されてブロックに追加され、ブロックはブロックチェーンに追加される。ブロックチェーンのコピーは、ネットワークの複数のノードにわたって複製される。このようにして、ブロックチェーンの状態についてネットワーク全体で合意ができる。
【０００４】
フォールトトレランスは、ブロックチェーンシステムにおいて重要である。フォールトトレランスは一般に、故障した、または悪意を持って活動するノードに対する、ネットワークの耐性として表現され得る。フォールトトレランスは特に、コンソーシアムブロックチェーンシステムなどの、参加ノードがより少ないブロックチェーンシステムにおいて重要である。ビザンチンフォールトトレランス(BFT: byzantine fault tolerance)は、ブロックチェーンシステムなどの、フォールトトレラントな分散型コンピューティングシステムの信頼性として表現され得る。BFTは、構成要素が故障する可能性があり、かつ/または構成要素に悪意があり、ある構成要素が故障したかどうか、もしくはその構成要素に悪意があるかどうかについての情報が不完全である場合における、信頼性を表現する。BFTは、システムの悪意のあるノードが他のピアに不正確な情報を伝播するにもかかわらずシステムが合意に達することを可能にするために、コンセンサスプロトコルにおいて利用される。BFTの目的は、コンセンサスプロトコルの正しい機能に対する悪意のあるノードの影響を軽減することによって、システム障害から守ることである。実用的BFT(PBFT)はBFTの最適化である。PBFTは、コンソーシアムブロックチェーンシステムなどの非同期システムにおいて機能し、独立したノード故障と、特定の独立したノードによって伝播される操作されたメッセージとがあると仮定する。PBFTでは、コンセンサスシステムの中のノードのすべてが順番に並べられ、あるノードがプライマリノードであり(時間とともに異なるノードがプライマリノードとして指定される)、その他のノードがバックアップノードである。ノードのすべてがブロードキャストメッセージを通じて互いに通信し、いわゆる正直ノード(honest node)が多数派を通じてコンセンサスに達する。
【０００５】
PBFTでは、コンセンサス安全性(consensus safety)は、自身に関連する問題のない2つのノードが異なる値とのコンセンサスに達しないことを確実にすることができる。コンセンサス生存性(consensus liveness)は、ノードがメッセージを交換する間に無限ループに入らないことと、ノードが最終状態に達することができることとを、確実にすることができる。
【０００６】
いくつかの場合、コンソーシアムブロックチェーンの中のコンセンサスノードは地理的に遠く離れていることがあり、ネットワーク品質および接続を保証することができない。そのような場合、ブロードキャストメッセージがコンセンサスノードのすべてには達しないことがあり、これはコンセンサスノードがPBFTコンセンサスに達する能力に影響を及ぼす。結果として、コンセンサスに達するのに十分な返答を収集することは、時間がかかり計算的に負荷が大きいことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本開示の実装形態は、実用的ビザンチンフォールトトレランス(PBFT)に基づいて、ブロックチェーンネットワークの同期およびコンセンサスプロセスを促進することを対象とする。より具体的には、本開示の実装形態は、ゴシップベースの通信方法を使用し、デジタル署名をコンセンサスメッセージに追加することによって、PBFTに基づいてブロックチェーンネットワークにおけるコンセンサスメッセージ送信およびノード同期を促進することを対象とする。
【課題を解決するための手段】
【０００８】
いくつかの実装形態では、活動は、第1のコンセンサスノードによって、ビュー変更のタイムアウトの前に切れるタイマーを設定することと、第2のコンセンサスノードへ、タイマーが切れたことに応答して第1のコンセンサスノードによって欠けている1つまたは複数のコンセンサスメッセージに対する要求を送信することと、第2のコンセンサスノードから、それぞれの1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される1つまたは複数のコンセンサスメッセージを受信することと、受信された1つまたは複数のコンセンサスメッセージに含まれるコミットメッセージの量が2f+1以上である場合、トランザクションのブロックが有効であると決定することとを含み、fは実用的ビザンチンフォールトトレランスに基づいてブロックチェーンによって許容可能な欠陥ノードの最大の数である。他の実装形態は、対応するシステムと、装置と、コンピュータ記憶デバイスに符号化される、方法の活動を実行するように構成されるコンピュータプログラムとを含む。
【０００９】
これらおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。要求が、コンセンサスラウンド(consensus round)の番号を示す連続番号を含む。1つまたは複数のコンセンサスメッセージが、第1のコンセンサスノードによる、前準備メッセージ、準備メッセージ、および欠けているコミットメッセージのうちの1つまたは複数を含む。1つまたは複数のコンセンサスメッセージが、安定したチェックポイントに達するまで、それらが生成または記憶される1つまたは複数のコンセンサスノードに記憶される。1つまたは複数のコンセンサスメッセージに対応する1つまたは複数の連続番号を受信し、各連続番号が対応するコンセンサスメッセージと関連付けられるコンセンサスラウンドの番号を示す。トランザクションのブロックが有効であると決定される場合、トランザクションのブロックをブロックチェーンおよびステータスデータベースに提出する。タイマーが切れたことに応答して、かつトランザクションのブロックが無効であると決定される場合、第3のコンセンサスノードへ、第2のコンセンサスノードによって欠けている第2の1つまたは複数のコンセンサスメッセージに対する要求を送信する。第3のコンセンサスノードから、それぞれの第2の1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される第2の1つまたは複数のコンセンサスメッセージを受信する。1つまたは複数のコンセンサスメッセージおよび第2の1つまたは複数のコンセンサスメッセージに含まれるコミットメッセージの量が2f+1以上である場合、トランザクションのブロックが有効であると決定する。
【００１０】
本開示はまた、1つまたは複数のプロセッサによって実行されると、本明細書で提供される方法の実装形態に従って1つまたは複数のプロセッサに動作を実行させる命令が記憶された、1つまたは複数のプロセッサに結合される1つまたは複数の非一時的コンピュータ可読記憶媒体を提供する。
【００１１】
本開示はさらに、本明細書で提供される方法を実施するためのシステムを提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供される方法の実装形態に従って動作を実行させる命令が記憶された、1つまたは複数のプロセッサに結合されるコンピュータ可読記憶媒体とを含む。
【００１２】
本開示による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることを理解されたい。すなわち、本開示による方法は、本明細書で特に説明される態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【００１３】
本開示の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載される。本開示の他の特徴および利点が、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】本開示の実装形態を実行するために使用され得る例示的な環境の図である。
【図２】本開示の実装形態による例示的な概念のアーキテクチャの図である。
【図３】本開示の実装形態による、PBFTに基づく例示的なコンセンサスプロセスを図示する。
【図４】本開示の実装形態による、PBFTに基づくコンセンサスメッセージの例示的な構造を図示する。
【図５】本開示の実装形態に従って実行され得る例示的なプロセスの図である。
【発明を実施するための形態】
【００１５】
様々な図における同様の参照記号は同様の要素を示す。
【００１６】
本開示の実装形態は、実用的ビザンチンフォールトトレランス(PBFT)に基づいて、ブロックチェーンネットワークの同期およびコンセンサスプロセスを促進することを対象とする。より具体的には、本開示の実装形態は、ゴシップベースの通信方法を使用し、デジタル署名をコンセンサスメッセージに追加することによって、PBFTに基づいてブロックチェーンネットワークにおけるコンセンサスメッセージ送信およびノード同期を促進することを対象とする。このようにして、かつ本明細書でさらに説明されるように、通信帯域幅の消費を減らすことができ、システムの信頼性を向上することができる。いくつかの実装形態では、活動は、第1のコンセンサスノードによって、ビュー変更のタイムアウトの前に切れるタイマーを設定することと、第2のコンセンサスノードへ、タイマーが切れたことに応答して第1のコンセンサスノードによって欠けている1つまたは複数のコンセンサスメッセージに対する要求を送信することと、第2のコンセンサスノードから、それぞれの1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される1つまたは複数のコンセンサスメッセージを受信することと、受信された1つまたは複数のコンセンサスメッセージに含まれるコミットメッセージの量が2f+1以上である場合、トランザクションのブロックが有効であると決定することとを含み、fは実用的ビザンチンフォールトトレランスに基づいてブロックチェーンによって許容可能な欠陥ノードの最大の数である。
【００１７】
本開示の、および上で紹介された実装形態のさらなる背景を提供すると、コンセンサスネットワーク(たとえば、ピアツーピアノードからなる)、分散型台帳システム、または単にブロックチェーンとも呼ばれ得る、ブロックチェーンネットワークは、参加するエンティティが安全かつ変更不可能にトランザクションを行いデータを記憶することを可能にする。ブロックチェーンは、パブリックブロックチェーン、プライベートブロックチェーン、またはコンソーシアムブロックチェーンとして提供され得る。本開示の実装形態は、コンセンサスプロセスがノードの事前選択されたセットによって制御されるような、コンソーシアムブロックチェーンを参照して本明細書でさらに詳細に説明される。しかしながら、本開示の実装形態はあらゆる適切なタイプのブロックチェーンにおいて実現され得ることが企図される。
【００１８】
コンソーシアムブロックチェーンでは、コンセンサスプロセスはノードの認可されたセットによって制御され、1つまたは複数のノードはそれぞれのエンティティ(たとえば、事業体)によって運営される。たとえば、10個のエンティティ(たとえば、会社)のコンソーシアムがコンソーシアムブロックチェーンシステムを運営することができ、それらのエンティティの各々がコンソーシアムDLSの中の少なくとも1つのノードを運営する。したがって、コンソーシアムブロックチェーンシステムは、参加するエンティティに関して非公開のネットワークであると見なされ得る。いくつかの例では、ブロックが有効となりブロックチェーンに追加されるには、各エンティティ(ノード)がそれぞれのブロックに署名しなければならない。いくつかの例では、ブロックが有効となりブロックチェーンに追加されるには、エンティティ(ノード)の少なくとも部分集合(たとえば、少なくとも7つのエンティティ)がそれぞれのブロックに署名しなければならない。例示的なコンソーシアムブロックチェーンシステムには、ニューヨーク州ニューヨークのJ.P. Morgan Chase & Co.によって開発されたQuorumがある。Quorumは、金融の使用事例のために特別に設計された、事業体向けのパーミッションドブロックチェーンインフラストラクチャとして表現され得る。Quorumは、スイス、ツークのEthereum Foundationによって提供される、Ethereumブロックチェーンのためのベースコードである、Go Ethereumから構築される。
【００１９】
一般に、コンソーシアムブロックチェーンシステムは、許可をもってコンソーシアムブロックチェーンシステムに参加するエンティティ間のトランザクションをサポートする。ブロックチェーンはすべてのノードにわたって複製されるので、トランザクションはコンソーシアムブロックチェーンシステム内のノードのすべてと共有される。すなわち、すべてのノードがブロックチェーンに関して完全にコンセンサスのとれた状態にある。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に対する合意)を達成するために、コンソーシアムブロックチェーンネットワーク内でコンセンサスプロトコルが実装される。例示的なコンセンサスプロトコルには、限定はされないが、ビットコインネットワークにおいて実装されるプルーフオブワーク(POW)がある。
【００２０】
本開示の実装形態は、PBFTに基づいてブロックチェーンネットワークのコンセンサスプロセスを促進するための、コンピュータで実施される方法を含む。より具体的には、本開示の実装形態は、ゴシップベースの通信方法を使用し、デジタル署名をコンセンサスメッセージに追加することによって、PBFTに基づいてブロックチェーンネットワークにおけるコンセンサスメッセージ送信およびノード同期を促進することを対象とする。このようにして、かつ本明細書でさらに説明されるように、通信帯域幅の消費を減らすことができ、システムの信頼性を向上することができる。
【００２１】
本開示の実装形態によれば、コンソーシアムブロックチェーンシステムのコンセンサスノードは、PBFTコンセンサスプロトコルを実行する。いくつかの例では、ノードはコンセンサスメッセージを送信することができる。本開示の実装形態によれば、例示的なコンセンサスメッセージは、限定はされないが、前準備、準備、およびコミットを含み得る。いくつかの実装形態では、デジタル署名および連続番号が、各コンセンサスメッセージとともに含まれる。デジタル署名は、それぞれのコンセンサスメッセージを送信したノードを特定するために使用することができ、連続番号は、コンセンサスメッセージがその中で送信されたコンセンサスラウンドを示す。
【００２２】
各コンセンサスノードは、受信されたコンセンサスメッセージのすべてを記憶し、またはそのログをとることができる。ブロックチェーンネットワークのコンセンサスノード(たとえば、バックアップノード)が切断から回復し、1つまたは複数のコンセンサスメッセージを逃した場合、コンセンサスノードは、欠けているメッセージを1つまたは複数の他のコンセンサスノードからフェッチすることによって、他のノードと同期することができる。本開示の実装形態によれば、コンセンサスメッセージは、たとえば、ブロックチェーンネットワーク全体にフェッチ要求をブロードキャストすることとは対照的に、ゴシップアルゴリズムを使用してフェッチされ得る。別のコンセンサスノードからフェッチされたコンセンサスメッセージは、それぞれのコンセンサスノードのデジタル署名を持っているので、フェッチされたコンセンサスメッセージのソースを確認する(および信用する)ことができる。いくつかの例では、バックアップノードは、単一の同期においてすべての欠けているメッセージをフェッチすることが可能であり得る。したがって、同期または合意の複雑さは、従来のPBFTの標準的なマルチキャスティングに基づくO(n)と比較して、理想的な条件ではO(1)まで低減され得る。
【００２３】
図1は、本開示の実装形態を実行するために使用され得る例示的な環境100を図示する。いくつかの例では、例示的な環境100は、エンティティがコンソーシアムブロックチェーンシステム102に参加することを可能にする。例示的な環境100は、コンピューティングシステム106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は有線および/またはワイヤレス通信リンクを通じてアクセスされ得る。
【００２４】
図示される例では、コンピューティングシステム106、108は各々、ブロックチェーン104にトランザクションを記憶するための、コンソーシアムブロックチェーンシステム102の中のノードとしての参加を可能にする、任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスには、限定はされないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンがある。いくつかの例では、コンピューティングシステム106、108は、コンソーシアムブロックチェーンシステム102と対話するための、1つまたは複数のコンピュータで実施されるサービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティ(たとえば、ユーザA)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第1のエンティティのコンピュータで実施されるサービスをホストすることができる。コンピューティングシステム108は、第2のエンティティ(たとえば、ユーザB)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第2のエンティティのコンピュータで実施されるサービスをホストすることができる。図1の例では、コンソーシアムブロックチェーンシステム102はノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108はそれぞれ、コンソーシアムブロックチェーンシステム102に参加する第1のエンティティおよび第2のエンティティのノードを提供する。
【００２５】
図2は、本開示の実装形態による例示的な概念のアーキテクチャ200を図示する。例示的な概念のアーキテクチャ200は、エンティティレイヤ202、ホストされたサービスレイヤ204、およびブロックチェーンレイヤ206を含む。図示される例では、エンティティレイヤ202は、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)という3つのエンティティを含み、各エンティティがそれぞれのトランザクション管理システム208をもつ。
【００２６】
図示される例では、ホストされるサービスレイヤ204は、各トランザクション管理システム208のためのブロックチェーンインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、通信プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用してネットワーク(たとえば、図1のネットワーク110)を通じてそれぞれのブロックチェーンインターフェース210と通信する。いくつかの例では、各ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンレイヤ206との間の通信接続を提供する。より具体的には、各ブロックチェーンインターフェース210は、それぞれのエンティティがブロックチェーンレイヤ206のコンソーシアムブロックチェーンシステム212に記録されるトランザクションを行うことを可能にする。いくつかの例では、ブロックチェーンインターフェース210とブロックチェーンレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して行われる。いくつかの例では、ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンノードを「ホスト」する。たとえば、ブロックチェーンインターフェース210は、コンソーシアムブロックチェーンシステム212へのアクセスのためにアプリケーションプログラミングインターフェース(API)を提供する。
【００２７】
本明細書で説明されるように、コンソーシアムブロックチェーンシステム212は、ブロックチェーン216に情報を変更不可能に記録する複数のノード214を含む、ピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に図示されるが、ブロックチェーン216の複数のコピーが提供され、コンソーシアムブロックチェーンシステム212にわたって維持される。たとえば、各ノード214はブロックチェーン216のコピーを記憶する。いくつかの実装形態では、ブロックチェーン216は、コンソーシアムブロックチェーンシステム212に参加する2つ以上のエンティティの間で実行されるトランザクションと関連付けられる情報を記憶する。
【００２８】
図3は、本開示の実装形態による、PBFTに基づく例示的なコンセンサスプロセス300を図示する。高水準において、例示的なコンセンサスプロセス300は、クライアントノード(ノードc302)、リーダーノード(ノード1 304)、およびブロックチェーンネットワークの複数のバックアップノード(ノード2 306、ノード3 308、およびノード4 310)によって実行される。ブロックチェーンネットワークによって使用されるコンセンサスアルゴリズムは、PBFTであると仮定される。PBFTシステムは3つの段階を含み得る。例示的な段階には、限定はされないが、前準備312、準備314、およびコミット316があり得る。図示される例では、変数seqにより表される連続番号により特定されるコンセンサスラウンドの3つの段階の間に、ノード4 310が切断されるか、または別法で利用不可能になる。ノード4 310が回復した後で、ノード4 310は、PBFTコンセンサスの安全性および生存性を確実にするために、他のノードと同期(318)して欠けているコンセンサスメッセージをフェッチすることを要求することができる。より高速な同期を達成するために、各コンセンサスノードは、送信するコンセンサスメッセージをデジタル署名するために、自身の秘密鍵を使用することができる。したがって、各コンセンサスメッセージは、その送信ノードのデジタル署名を持っている。送信ノードが切断されるか、または別法で利用不可能である場合でも、受信ノードは、ネットワークの生存性を確実にするためにコンセンサスメッセージを確実に転送することができる。例示的なプロセス300の詳細がさらに、図3の以下の説明において論じられる。
【００２９】
いくつかの実装形態では、クライアントノード302は、1つまたは複数のトランザクションをブロックチェーンに追加するための要求を送信することができる。いくつかの場合、この要求はまた、現在のコンセンサスラウンドを示すseq変数を含む。たとえば、ブロックチェーンがコンセンサスの3番目のラウンドにある場合、変数seqは3に等しい。
【００３０】
1つまたは複数のトランザクションをブロックチェーンに追加するための1つまたは複数の要求をクライアントノード302および/または他のノードから受信した後で、ノード1(リーダーノード)304はデジタル署名された前準備メッセージ(pp1)を生成することができる。図4を簡単に参照すると、図4は、本開示の実装形態による、PBFTに基づくコンセンサスメッセージの例示的な構造400を図示する。図4に示されるように、前準備メッセージ402は、view、digest、transaction、timestamp、およびseqを含み得る。変数viewは、ビュー変更回数vを示し得る。PBFTにおけるビュー変更は、リーダーノードが故障したときにPBFTが進行することを可能にすることによって、生存性をもたらし得る。ビュー変更は、実行すべき要求をバックアップノードが無限に待機するのを防ぐ、タイムアウトによって惹起され得る。バックアップノードは、バックアップノードが要求を受信してタイマーがまだ動いていないときに、タイマーを始動することができる。バックアップノードは、要求の実行をもはや待機していないときに、タイマーを停止することができる。しかしながら、バックアップノードは、その時点で他の要求の実行を待機している場合、タイマーを再開することができる。バックアップノードのタイマーがビューの中で満了する場合、バックアップノードは、システムをビューv+1へ移すためにビュー変更を開始することができる。
【００３１】
transactionは、トランザクションをブロックチェーンに追加するためのクライアントノードの要求メッセージであり得る。digestはメッセージのダイジェストであり得る。timestampは、各クライアント要求が一度実行されることを確実にするために使用され得る。timestampは、より後の要求がより前の要求よりも高いタイムスタンプを有するように、順序付けられ得る。たとえば、timestampは、要求が出されるときのクライアントのローカル時計の値であり得る。seqはメッセージのコンセンサスラウンドを示し得る。いくつかの実装形態では、リーダーノードの秘密鍵を使用して、デジタル署名404が前準備メッセージ402に追加され得る。いくつかの実装形態では、前準備メッセージ402などのコンセンサスメッセージは、安定したチェックポイントに達するまで、メッセージを受け入れるノードに記憶され得る。チェックポイントは要求の実行によって生み出される状態であってよく、プルーフを伴うチェックポイントを安定したチェックポイントと呼ぶことができる。
【００３２】
図3を再び参照すると、デジタル署名された前準備メッセージpp1を生成した後で、リーダーノードは、バックアップノード、ノード2 306、ノード3 308、およびノード4 310にメッセージをマルチキャストすることができる。
【００３３】
ノード2 306およびノード3 308が前準備メッセージpp1を受け入れた後で、それらは準備段階314に入ることができる。この時点で、ノード4 310はブロックチェーンネットワークから切断されるか、または別法で利用不可能である。したがって、ノード4 310は、pp1を受信できず、準備メッセージを生成できず、またはマルチキャスティングを実行できない。前準備段階および準備段階は、要求の順序付けを提案するリーダーノードに欠陥があるときであっても、同じビューにおいて送信される要求を順序付けるために使用され得る。
【００３４】
準備段階314において、ノード2 306は、準備メッセージp2を他のノードにマルチキャストし、pp1とp2の両方をそのログに追加することができる。同様に、ノード3 308は、準備メッセージp3を他のノードにマルチキャストし、pp1とp3の両方をそのログに追加することができる。図4を再び参照すると、準備メッセージ406は、view、digest、およびseqを含み得る。デジタル署名408は、準備メッセージ406に追加され得る。
【００３５】
図3を再び参照すると、ノード2 306およびノード3 308は、それらの秘密鍵を使用して、それぞれp2およびp3をデジタル署名することができる。いくつかの実装形態では、ノードは、その固有のダイジェストと同じダイジェストを有する2f個のコンセンサスメッセージを受信する場合、コミット段階316に入ることができ、fはPBFTに基づいてブロックチェーンによって許容可能な欠陥ノードの最大の数である。fの値は(n-1)/3以下の最大の整数として計算することができ、nはノードの総数である。例示的なコンセンサスプロセス300では、ノードの総数は4であるので、f=1である。
【００３６】
すべての受信されたダイジェストがノードの固有のダイジェストと同じであると仮定すると、p2およびp3を受信した後で、ノード1 304は2f個のダイジェストメッセージを有し、コミットc1を生成してマルチキャストし、p2、p3、およびc1をそのログに追加することができる。同様に、ノード2 306は、pp1およびp3を受信した後でコミットc2を生成してマルチキャストし、p3およびc2をそのログに追加することができる。ノード3 308は、pp1およびp2を受信した後でコミットc3を生成してマルチキャストし、p2およびc3をそのログに追加することができる。したがって、コンセンサスノードが別のノードからデジタル署名されたコンセンサスメッセージを受信した後で、コンセンサスメッセージおよびデジタル署名は、受信ノードにローカルに記憶され得る。デジタル署名されたコンセンサスメッセージは、メッセージの正しい順序を確実にするために、対応するseq値に基づいてソートされ得る。
【００３７】
図4を再び参照すると、コミットメッセージ410は、view、digest、およびseqを含み得る。デジタル署名412は、コミットメッセージ410に追加され得る。
【００３８】
図3を再び参照すると、ノード4 310が回復してブロックチェーンネットワークに再接続すると仮定すると、ノード4 310は、同期段階318を開始して、その故障時間の間に逃したメッセージをフェッチすることができる。いくつかの実装形態では、ノード4 310のタイマーがビューの中で期限切れになってビュー変更を開始するのを避けるために、フェッチタイマーは、ビュー変更のタイムアウトの前に切れるように設定され得る。
【００３９】
フェッチタイマーが切れたことに応答して、ノード4 310は、ノード4 310が逃したコンセンサスメッセージを有する1つまたは複数のコンセンサスノードを決定することができる。ノード4 310は、ゴシップアルゴリズムに基づいてフェッチ要求を送信するために、1つまたは複数のコンセンサスノードからランダムに選択することができる。フェッチ要求は、ノードのseq番号と、欠けているコンセンサスメッセージのタイプとを含み得る。
【００４０】
例示的なコンセンサスプロセス300において、欠けているコンセンサスメッセージのタイプは、前準備、準備、およびコミットを含む。したがって、フェッチ要求は、seq<pp,p,c>の形式を有し得る。いくつかの例では、ノード4 310は、欠けているコンセンサスメッセージをフェッチするために、ゴシップアルゴリズムに基づいてノード3 308をランダムに選択する。ノード3 308は、seqのコンセンサスラウンドにおいて、pp1、p2、p3、c1、c2、およびc3のログをとっている。すべてのログがとられたメッセージは、メッセージを出すノードのデジタル署名を含むので、それらの信頼性は、出すノードの対応する公開鍵を使用することによって検証可能であり得る。ノード3 308が、2f+1個以上である3つのコンセンサスメッセージc1、c2、およびc3のログをとったので、デジタル署名されたメッセージpp1、p2、p3、c1、c2、c3をノード4 310に提供することができる。いくつかの場合、フェッチ要求を受信するノードが2f+1個未満のコンセンサスメッセージのログをとっている場合、要求ノードは、少なくとも2f+1個のコンセンサスメッセージが取得されるまで、システムの中の他のノードからフェッチすることができる。例示的なプロセス300において、ノード4 310は、ノード1 304、ノード2 306、およびノード3 308のいずれか1つがブロックチェーンネットワークに接続されている限り、コンセンサスメッセージのすべてをフェッチすることができる。したがって、回復したノードは、欠けているメッセージをフェッチするために、同期を一度実行するだけでよいことがある。したがって、ネットワークリソースを節約することができ、システムの効率を上げることができる。
【００４１】
図5は、本開示の実装形態に従って実行され得る例示的なプロセス500を図示する。提示を明確にするために、以下の説明は全般に、この説明では他の図面の文脈で例示的なプロセス500を説明する。しかしながら、例示的なプロセス500は、たとえば、任意のシステム、環境、ソフトウェア、およびハードウェア、またはシステム、環境、ソフトウェア、およびハードウェアの組合せによって、適宜実行され得る。いくつかの実装形態では、例示的なプロセス500の様々なステップは、並列に、組合せで、ループで、または任意の順序で行われ得る。
【００４２】
502において、PBFTに基づくブロックチェーンネットワークに再接続されるPBFTシステムのバックアップノードは、ビュー変更のタイムアウトの前に切れるタイマーを設定する。504において、バックアップノードは、別のコンセンサスノードへ、タイマーが切れたことに応答してバックアップノードによって欠けている1つまたは複数のコンセンサスメッセージに対する要求を送信する。いくつかの実装形態では、この要求は、コンセンサスラウンドの番号を示す連続番号を含む。いくつかの実装形態では、1つまたは複数のコンセンサスメッセージは、第1のコンセンサスノードによる、前準備メッセージ、準備メッセージ、および欠けているコミットメッセージのうちの1つまたは複数を含む。
【００４３】
506において、バックアップノードは、コンセンサスノードから、それぞれの1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される1つまたは複数のコンセンサスメッセージを受信する。いくつかの実装形態では、1つまたは複数のコンセンサスメッセージは、第1のコンセンサスノードによる、前準備メッセージ、準備メッセージ、および欠けているコミットメッセージのうちの1つまたは複数を含む。いくつかの実装形態では、1つまたは複数のコンセンサスメッセージは、安定したチェックポイントに達するまで、それらが生成または記憶される1つまたは複数のコンセンサスノードに記憶される。
【００４４】
508において、バックアップノードは、受信された1つまたは複数のコンセンサスメッセージに含まれるコミットメッセージの量が2f+1個以上である場合、トランザクションのブロックが有効であると決定し、fはPBFTに基づいてブロックチェーンによって許容可能な欠陥ノードの最大の数である。いくつかの実装形態では、バックアップノードはさらに、1つまたは複数のコンセンサスメッセージに対応する1つまたは複数の連続番号を受信する。各シーケンス番号は、対応するコンセンサスメッセージと関連付けられるコンセンサスラウンドの番号を示す。
【００４５】
いくつかの実装形態では、バックアップノードはさらに、トランザクションのブロックが有効であると決定される場合、トランザクションのブロックをブロックチェーンおよびステータスデータベースに提出する。いくつかの実装形態では、バックアップノードはさらに、コンセンサスノードおよびバックアップノードとは異なる第3のコンセンサスノードへ、タイマーが切れたことに応答して、かつトランザクションのブロックが無効であると決定される場合に、コンセンサスノードによって欠けている第2の1つまたは複数のコンセンサスメッセージに対する要求を送信する。バックアップノードは、第3のコンセンサスノードから、それぞれの第2の1つまたは複数のコンセンサスメッセージを生成する対応するコンセンサスノードの秘密鍵によって各々デジタル署名される第2の1つまたは複数のコンセンサスメッセージを受信する。バックアップノードは次いで、1つまたは複数のコンセンサスメッセージおよび第2の1つまたは複数のコンセンサスメッセージに含まれるコミットメッセージの量が2f+1個以上である場合、トランザクションのブロックが有効であると決定する。
【００４６】
本明細書で説明される主題の実装形態は、特定の利点または技術的な効果を実現するように実装され得る。たとえば、本開示の実装形態は、コンソーシアムブロックチェーンのコンセンサスノードが、対応するメッセージのコンセンサスラウンドを特定する連続番号とともにデジタル署名されたコンセンサスメッセージを送信することを可能にする。デジタル署名されたコンセンサスメッセージは安全であるものとしてバックアップノードが信頼することができ、メッセージのソースは検証されることが可能である。したがって、コンソーシアムブロックチェーンのデータセキュリティおよびプライバシーを改善することができる。その上、バックアップノードが切断から回復する場合、バックアップノードは、フェッチ要求をネットワーク全体にブロードキャストする代わりに、別のランダムコンセンサスノードから欠けているメッセージをフェッチすることによって、他のノードと同期することができる。別のコンセンサスノードからフェッチされたメッセージは、メッセージを出すノードのデジタル署名を持っているので、メッセージのソースを信用することができ、バックアップノードは、1つの同期を通じて1つのノードからすべての欠けているメッセージをフェッチすることが可能であり得る。したがって、同期または合意の複雑さは、PBFTにおける標準的なマルチキャスティング方法に基づくO(n)と比較して、理想的な条件ではO(1)まで低減され得る。それに対応して、計算リソースおよびネットワークリソースを節約することができ、PBFTシステムの効率を向上することができる。
【００４７】
説明された方法は、ブロックチェーンの効率的な更新を通じて、コンピュータリソース(たとえば、処理サイクル、ネットワーク帯域幅、メモリ使用量)の効率的な使用を確実にすることができる。アカウント運営を、より簡単なコンセンサスプロセスを通じて、より迅速にかつ安全に行うことができる。
【００４８】
本明細書で説明される実装形態および動作は、本明細書で説明される構造もしくはそれらのうちの1つまたは複数の組合せを含めて、デジタル電子回路で、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェアで実装され得る。動作は、1つまたは複数のコンピュータ可読記憶デバイスに記憶される、または他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実施され得る。データ処理装置、コンピュータ、またはコンピューティングデバイスは、前述の1つのプログラマブルプロセッサ、1つのコンピュータ、1つのシステムオンチップ、またはこれらの複数、または組合せを例として含む、データを処理するための装置、デバイス、および機械を包含し得る。装置は、専用論理回路、たとえば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)を含み得る。装置はまた、対象のコンピュータプログラムのための実行環境を作り出すコード、たとえば、プロセッサファームウェア、プロトロルスタック、データベース管理システム、オペレーティングシステム(たとえば、1つのオペレーティングシステムまたはオペレーティングシステムの組合せ)、クロスプラットフォームランタイム環境、仮想マシン、またはこれらの1つまたは複数の組合せを構成するコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００４９】
コンピュータプログラム(たとえば、プログラム、ソフトウェア、ソフトウェアアプリケーション、ソフトウェアモジュール、ソフトウェアユニット、スクリプト、またはコードとしても知られている)は、コンパイル型またはインタプリタ型言語、宣言型または手続き型言語を含む、任意の形式のプログラミング言語で書かれてよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む、任意の形式で展開されてよい。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語ドキュメントに記憶される1つまたは複数のスクリプト)を保持するファイルの一部分、対象のプログラムに専用の単一のファイル、または複数の協調的なファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つの場所に位置する、または、複数の場所に分散され通信ネットワークによって相互接続される、1つのコンピュータまたは複数のコンピュータ上で実行され得る。
【００５０】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリまたは両方から、命令およびデータを受信する。コンピュータの不可欠な要素は、命令に従って活動を実行するためのプロセッサ、ならびに、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数のマスストレージデバイスも含み、または、そのマスストレージデバイスからデータを受信し、もしくはそこへデータを移し、もしくはその両方を行うように、動作可能に結合される。コンピュータは、別のデバイス、たとえば、モバイルデバイス、携帯情報端末(PDA)、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイスに埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、磁気ディスク、および磁気光学ディスクを含む、不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されても、またはそれに組み込まれてもよい。
【００５１】
モバイルデバイスは、ハンドセット、ユーザ機器(UE)、携帯電話(たとえば、スマートフォン)、タブレット、ウェアラブルデバイス(たとえば、スマートウォッチおよびスマート眼鏡)、人体に埋め込まれたデバイス(たとえば、バイオセンサ、人工内耳)、または他のタイプのモバイルデバイスを含み得る。モバイルデバイスは、様々な通信ネットワーク(以下で説明される)にワイヤレスに(たとえば、高周波(RF)信号を使用して)通信することができる。モバイルデバイスは、モバイルデバイスの現在の環境の特性を決定するためのセンサを含み得る。センサは、カメラ、マイクロフォン、近接センサ、GPSセンサ、モーションセンサ、加速度計、周辺光センサ、水分センサ、ジャイロスコープ、コンパス、気圧計、指紋センサ、顔認識システム、RFセンサ(たとえば、Wi-Fiおよびセルラー無線)、温度センサ、または他のタイプのセンサを含み得る。たとえば、カメラは、可動レンズまたは固定レンズ、フラッシュ、イメージセンサ、およびイメージプロセッサを伴う、前面カメラまたは後面カメラを含み得る。カメラは、顔認識および/または虹彩認識のための詳細を捉えることが可能なメガピクセルカメラであり得る。カメラは、データプロセッサ、およびメモリに記憶されるまたはリモートでアクセスされる認証情報とともに、顔認識システムを形成することができる。顔認識システムまたは1つまたは複数のセンサ、たとえば、マイクロフォン、モーションセンサ、加速度計、GPSセンサ、またはRFセンサは、ユーザ認証のために使用され得る。
【００５２】
ユーザとの対話を提供するために、実施形態は、ディスプレイデバイスおよび入力デバイス、たとえば、ユーザに情報を表示するための液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)/仮想現実(VR)/拡張現実(AR)ディスプレイ、ならびに、ユーザがそれによってコンピュータに入力を提供できるタッチスクリーン、キーボード、およびポインティングデバイスを有する、コンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは任意の種類の感覚的なフィードバック、たとえば視覚的なフィードバック、聴覚的なフィードバック、または触覚的なフィードバックであってよく、ユーザからの入力は、音響入力、発話入力、または触覚入力を含む、任意の形式で受け取られ得る。加えて、コンピュータは、ドキュメントを送信してユーザによって使用されるデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【００５３】
実施形態は、有線またはワイヤレスデジタルデータ通信(またはそれらの組合せ)の任意の形式もしくは媒体、たとえば通信ネットワークによって相互接続されるコンピューティングデバイスを使用して実装され得る。相互接続されたデバイスの例は、一般に互いから離れており典型的には通信ネットワークを介して対話する、クライアントおよびサーバである。クライアント、たとえばモバイルデバイスは、たとえば、購入、売却、支払、贈与、送付、もしくは貸付のトランザクションの実行、またはこれらの認可を行うサーバと、またはサーバを通じて、自身でトランザクションを実行することができる。そのようなトランザクションは、活動と応答が時間的に近くなるようにリアルタイムであり得る。たとえば、ある個人は、活動および応答が実質的に同時に発生することを知覚し、その個人の活動に続く応答の時間差が1ミリ秒(ms)未満もしくは1秒(s)未満であり、または応答にシステムの処理制約を考慮した意図的な遅延がない。
【００５４】
通信ネットワークの例は、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)、およびワイドエリアネットワーク(WAN)を含む。通信ネットワークは、インターネット、別の通信ネットワーク、または通信ネットワークの組合せの、すべてもしくは一部分を含み得る。情報は、Long Term Evolution(LTE)、5G、IEEE 802、インターネットプロトコル(IP)、または他のプロトコルもしくはプロトコルの組合せを含む、様々なプロトコルおよび規格に従って通信ネットワーク上で送信され得る。通信ネットワークは、接続されたコンピューティングデバイス間で、音声データ、ビデオデータ、バイオメトリックデータ、または認証データ、または他の情報を送信することができる。
【００５５】
別個の実装形態として説明される特徴は、組合せで、単一の実装形態で実装され得るが、単一の実装形態として説明される特徴は、複数の実装形態で、別々に、または任意の適切な部分組合せで実装され得る。特定の順序で説明され特許請求される動作は、特定の順序が実行されなければならないこと、またはすべての図示される動作が実行されなければならないことを要求するものとして理解されるべきではない(いくつかの動作は任意選択であり得る)。適宜、マルチタスキングまたは並列処理(またはマルチタスキングと並列処理の組合せ)が実行され得る。
【符号の説明】
【００５６】
100  例示的な環境
102  コンソーシアムブロックチェーンシステム
104  ブロックチェーン
106  コンピューティングシステム
108  コンピューティングシステム
110  ネットワーク
202  エンティティレイヤ
204  ホストされたサービスレイヤ
206  ブロックチェーンレイヤ
208  トランザクション管理システム
210  ブロックチェーンインターフェース
212  コンソーシアムブロックチェーンシステム
214  ノード
216  ブロックチェーン
302  クライアントノード
304  ノード1
306  ノード2
308  ノード3
310  ノード4
312  前準備
314  準備段階
316  コミット段階
318  同期段階
402  前準備メッセージ
404  デジタル署名
406  準備メッセージ
408  デジタル署名
410  コミットメッセージ
412  デジタル署名
【図１】
0006727630.tif 000002
【図２】
0006727630.tif 000003
【図３】
0006727630.tif 000004
【図４】
0006727630.tif 000005
【図５】
0006727630.tif 000006