IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ デフィニティ スティフトゥングの特許一覧

特許7469826分散ネットワークにおけるメッセージング
<>
  • 特許-分散ネットワークにおけるメッセージング 図1
  • 特許-分散ネットワークにおけるメッセージング 図2
  • 特許-分散ネットワークにおけるメッセージング 図3
  • 特許-分散ネットワークにおけるメッセージング 図4
  • 特許-分散ネットワークにおけるメッセージング 図5
  • 特許-分散ネットワークにおけるメッセージング 図6
  • 特許-分散ネットワークにおけるメッセージング 図7
  • 特許-分散ネットワークにおけるメッセージング 図8
  • 特許-分散ネットワークにおけるメッセージング 図9
  • 特許-分散ネットワークにおけるメッセージング 図10
  • 特許-分散ネットワークにおけるメッセージング 図11
  • 特許-分散ネットワークにおけるメッセージング 図12a
  • 特許-分散ネットワークにおけるメッセージング 図12b
  • 特許-分散ネットワークにおけるメッセージング 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-09
(45)【発行日】2024-04-17
(54)【発明の名称】分散ネットワークにおけるメッセージング
(51)【国際特許分類】
   G06F 9/46 20060101AFI20240410BHJP
   H04L 67/63 20220101ALI20240410BHJP
   G06F 9/50 20060101ALI20240410BHJP
【FI】
G06F9/46 420Z
H04L67/63
G06F9/50 150Z
【請求項の数】 20
(21)【出願番号】P 2022522808
(86)(22)【出願日】2019-10-18
(65)【公表番号】
(43)【公表日】2023-02-15
(86)【国際出願番号】 EP2019078405
(87)【国際公開番号】W WO2021073755
(87)【国際公開日】2021-04-22
【審査請求日】2022-10-14
(73)【特許権者】
【識別番号】521435190
【氏名又は名称】デフィニティ スティフトゥング
【氏名又は名称原語表記】DFINITY STIFTUNG
【住所又は居所原語表記】Genferstrasse 11, 8002 Zuerich Switzerland
(74)【代理人】
【識別番号】110002664
【氏名又は名称】弁理士法人相原国際知財事務所
(72)【発明者】
【氏名】ウィリアムズ, ドミニク
(72)【発明者】
【氏名】カメニッシュ, ヤン
(72)【発明者】
【氏名】クレメント, アレン
(72)【発明者】
【氏名】デアラー, ダヴィッド
(72)【発明者】
【氏名】ドライヴェールズ, マヌ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2019-526945(JP,A)
【文献】特表2012-530328(JP,A)
【文献】特開2006-260400(JP,A)
【文献】米国特許出願公開第2018/0113752(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
H04L 67/63
(57)【特許請求の範囲】
【請求項1】
複数のサブネットを含む分散ネットワークであって、
前記複数のサブネットの各々は、複数のノードを含み、
前記分散ネットワークは、
計算ユニットのセットを実行し、
サブネット割り当てに従って、前記計算ユニットの各々を前記複数のサブネットのうちの1つに割り当て、それにより、それぞれの前記サブネットについて、計算ユニットの前記セットの割り当てられたサブセットを作成し、
前記複数のサブネットの各ノード上で、前記計算ユニットの前記割り当てられたサブセットを実行し、
前記計算ユニットの前記割り当てられたサブセットを前記それぞれのサブネットを渡って複製し、
前記サブネット割り当てに基づき、メッセージングプロトコルを介して前記計算ユニット間でユニット間メッセージを交換する、ように構成されており、
前記計算ユニットは、前記分散ネットワークのノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部であり、前記ユニット状態は、ユニット間メッセージの入力キューおよび出力キューを含み、
前記ユニット間メッセージは、異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ、および、同じサブネットに割り当てられた計算ユニット間で交換されるサブネット内のユニット間メッセージ、を含み、
前記分散ネットワークは、前記サブネット割り当てをネットワーク構成データとして記憶するように構成され、
前記メッセージングプロトコルは、送信計算ユニットと受信計算ユニットとの間で前記サブネット間のユニット間メッセージを、前記ネットワーク構成データから前記受信計算ユニットの前記サブネット割り当てを検索し、そして、前記サブネット割り当てに従って前記受信計算ユニットに割り当てられた前記サブネットに前記サブネット間のユニット間メッセージをルーティングすることによって交換するように構成される、ことを特徴とする分散ネットワーク。
【請求項2】
請求項1に記載の分散ネットワークであって、前記メッセージングプロトコルは、送信サブネットから複数の受信サブネットへの前記サブネット間のユニット間メッセージを、前記複数の受信サブネットによってソートされた出力ストリーム中にルーティングするように構成される、ことを特徴とする分散ネットワーク。
【請求項3】
請求項1または請求項2に記載の分散ネットワークであって、前記メッセージングプロトコルは、前記ユニット間メッセージ、特に個々のユニット間メッセージの受信についての肯定応答または否定応答に適合されたシグナリングメッセージを提供するように更に構成される、ことを特徴とする分散ネットワーク。
【請求項4】
請求項3に記載の分散ネットワークであって、前記メッセージングプロトコルは、受信サブネットから対応する送信サブネットに前記シグナリングメッセージを送信し、前記受信が確認されるまで、送信されたユニット間メッセージを保存する、ように構成される、ことを特徴とする分散ネットワーク。
【請求項5】
請求項1または請求項2に記載の分散ネットワークであって、前記分散ネットワークは、前記分散ネットワークのユーザからのイングレスメッセージを受信して処理するように更に構成される、ことを特徴とする分散ネットワーク。
【請求項6】
請求項1または請求項2に記載の分散ネットワークであって、前記分散ネットワークは、前記ユニット間メッセージのサブセットの選択および/または処理順序に関してコンセンサスを得るために適合されたコンセンサスプロトコルを実行するように構成される、ことを特徴とする分散ネットワーク。
【請求項7】
請求項6に記載の分散ネットワークであって、
前記分散ネットワークは、前記コンセンサスプロトコルをサブネットコンセンサスプロトコルとして各サブネットで別個に実行するように構成され、
前記サブネットの各々は、前記それぞれのサブネットによって受信された前記ユニット間メッセージの前記選択および/または処理順序に関してローカルサブネットコンセンサスを得るように構成される、ことを特徴とする分散ネットワーク。
【請求項8】
請求項6に記載の分散ネットワークであって、
前記複数のサブネットの各々は、そのノード上で別個のサブネットプロトコルクライアントを実行するように構成され、前記別個のサブネットプロトコルクライアントは、別個のサブネットメッセージングコンポーネントおよび別個のサブネットコンセンサスコンポーネントを含み、
前記それぞれのサブネットの前記別個のコンセンサスプロトコルクライアントの各々は、前記複数のサブネットのうちの1つ又は複数の他のサブネットから受信した前記ユニット間メッセージの前記選択および/または処理順序に関してサブネットコンセンサスを得るように構成される、ことを特徴とする分散ネットワーク。
【請求項9】
請求項6に記載の分散ネットワークであって、
前記コンセンサスプロトコルは、前記ユニット間メッセージおよび前記複数のサブネットのイングレスメッセージを受信して処理するように構成され、前記ユニット間メッセージおよび前記イングレスメッセージから、予め定義されたコンセンサスメカニズムに従って入力ブロックのキューを生成し、前記メッセージングプロトコルに入力ブロックの前記キューを提供し、
前記メッセージングプロトコルは、前記入力ブロックを処理するように構成される、ことを特徴とする分散ネットワーク。
【請求項10】
請求項9に記載の分散ネットワークであって、前記メッセージングプロトコルは、前記コンセンサスプロトコルから受信した前記入力ブロックによって開始されるように構成される、ことを特徴とする分散ネットワーク。
【請求項11】
請求項9に記載の分散ネットワークであって、
前記メッセージングプロトコルは、前記コンセンサスプロトコルから受信した前記入力ブロックについて、特に前記入力ブロックに含まれる前記ユニット間メッセージおよび前記イングレスメッセージについて1つ以上の入力チェックを実行するように構成され、
前記1つ以上の入力チェックは、過負荷チェック、順序配信チェック、及び/又は、対象宛先の有効性チェックを含む、ことを特徴とする分散ネットワーク。
【請求項12】
請求項1または請求項2に記載の分散ネットワークであって、前記複数のサブネットは、前記サブネットの各ノード上における、計算ユニットの前記割り当てられたサブセットの前記ユニット状態の空間においてアクティブレプリケーションを実行するように構成される、ことを特徴とする分散ネットワーク。
【請求項13】
請求項1または請求項2に記載の分散ネットワークであって、前記メッセージングプロトコルは、決定論的かつ複製された計算を実行するように構成される、ことを特徴とする分散ネットワーク。
【請求項14】
請求項1または請求項2に記載の分散ネットワークであって、
前記分散ネットワークは、実行メッセージを実行するための実行手順を実行するように構成された実行コンポーネントを含み、
前記実行手順は、前記実行メッセージの決定論的かつ複製されたスケジューリングと計算を実行するように構成される、ことを特徴とする分散ネットワーク。
【請求項15】
請求項2に記載の分散ネットワークであって、認証コンポーネントを更に含み、前記認証コンポーネントは、前記それぞれのサブネットによって、前記出力ストリームを認証するように構成される、ことを特徴とする分散ネットワーク。
【請求項16】
請求項1または請求項2に記載の分散ネットワークであって、
前記複数のノードの各々は、メインネットプロトコルクライアントを実行するように構成され、前記メインネットプロトコルクライアントは、前記サブネット割り当てを含む前記ネットワーク構成データを前記複数のサブネットに配布するように構成される、ことを特徴とする分散ネットワーク。
【請求項17】
分散ネットワークにおいてユニット間通信を実行するためのコンピュータ実装された方法であって、
前記分散ネットワークは、複数のサブネットであって、この複数のサブネットの各々が複数のノードを含む、複数のサブネットを含み、
前記方法は、
計算ユニットのセットを実行するステップと、
サブネット割り当てに従って、前記計算ユニットの各々を前記複数のサブネットのうちの1つに割り当て、それにより、それぞれの前記サブネットについて、計算ユニットの前記セットの割り当てられたサブセットを作成するステップと、
前記複数のサブネットの各ノード上で、前記計算ユニットの前記割り当てられたサブセットを実行するステップと、
前記計算ユニットの前記割り当てられたサブセットを前記それぞれのサブネットを渡って複製するステップと、
前記サブネット割り当てに基づき、メッセージングプロトコルを介して前記計算ユニット間でユニット間メッセージを交換するステップと、を含み、
前記計算ユニットは、前記分散ネットワークのノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部であり、前記ユニット状態は、ユニット間メッセージの入力キューおよび出力キューを含み、
前記ユニット間メッセージは、異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ、および、同じサブネットに割り当てられた計算ユニット間で交換されるサブネット内のユニット間メッセージ、を含み、
前記方法は、
前記分散ネットワークによって、前記サブネット割り当てをネットワーク構成データとして記憶するステップと、
前記メッセージングプロトコルによって、送信計算ユニットと受信計算ユニットとの間で前記サブネット間のユニット間メッセージを、前記ネットワーク構成データから前記受信計算ユニットの前記サブネット割り当てを検索し、そして、前記サブネット割り当てに従って前記受信計算ユニットに割り当てられた前記サブネットに前記サブネット間のユニット間メッセージをルーティングすることにより、交換するステップと、を更に含む、ことを特徴とするコンピュータ実装された方法。
【請求項18】
請求項1~請求項16の何れか一項に記載の分散ネットワークのためのノードであって、前記ノードは、そのサブネット割り当てに従って、前記計算ユニットの前記割り当てられたサブセットを実行するように構成される、ことを特徴とする分散ネットワークのためのノード。
【請求項19】
分散ネットワークを動作させるためのコンピュータ可読記憶媒体であって、
前記分散ネットワークは、複数のサブネットを含み、
記コンピュータ可読記憶媒体、その中に具体化されたプログラム命令を有
前記プログラム命令は、複数のノードの1つまたは複数によって実行可能であり、それにより前記複数のノードの前記1つまたは複数に実行される方法は、
計算ユニットのセットを実行するステップと、
サブネット割り当てに従って、前記計算ユニットの各々を前記複数のサブネットのうちの1つに割り当て、それにより、それぞれの前記サブネットについて、計算ユニットの前記セットの割り当てられたサブセットを作成するステップと、
前記複数のサブネットの各ノード上で、前記計算ユニットの前記割り当てられたサブセットを実行するステップと、
前記計算ユニットの前記割り当てられたサブセットを前記それぞれのサブネットを渡って複製するステップと、
前記サブネット割り当てに基づき、メッセージングプロトコルを介して前記計算ユニット間でユニット間メッセージを交換するステップと、を含み、
前記計算ユニットは、前記分散ネットワークのノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部であり、前記ユニット状態は、ユニット間メッセージの入力キューおよび出力キューを含み、
前記ユニット間メッセージは、異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ、および、同じサブネットに割り当てられた計算ユニット間で交換されるサブネット内のユニット間メッセージ、を含み、
前記方法は、
前記分散ネットワークによって、前記サブネット割り当てをネットワーク構成データとして記憶するステップと、
前記メッセージングプロトコルによって、送信計算ユニットと受信計算ユニットとの間で前記サブネット間のユニット間メッセージを、前記ネットワーク構成データから前記受信計算ユニットの前記サブネット割り当てを検索し、そして、前記サブネット割り当てに従って前記受信計算ユニットに割り当てられた前記サブネットに前記サブネット間のユニット間メッセージをルーティングすることにより、交換するステップと、を更に含む、ことを特徴とするコンピュータプログラム。
【請求項20】
分散ネットワークのノードを動作させるためのコンピュータ可読記憶媒体であって、
前記分散ネットワークは、複数のサブネットであって、そのサブネットの各々が複数のノードを含む、複数のサブネットを含み、
前記分散ネットワークは、
計算ユニットのセットを実行し、
サブネット割り当てに従って、前記計算ユニットの各々を前記複数のサブネットのうちの1つに割り当て、それにより、それぞれの前記サブネットについて、計算ユニットの前記セットの割り当てられたサブセットを作成する、ように構成され、
記コンピュータ可読記憶媒体、その中に具体化されたプログラム命令を有
前記プログラム命令は、前記ノードによって実行可能であり、それにより前記ノードに実行される方法は、
前記計算ユニットのその割り当てられたサブセットを実行するステップと、
前記サブネット割り当てに基づき、メッセージングプロトコルを介して前記計算ユニット間でユニット間メッセージを交換するステップと、を含み、
前記計算ユニットは、前記ノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部であり、前記ユニット状態は、ユニット間メッセージの入力キューおよび出力キューを含み、
前記ユニット間メッセージは、異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ、および、同じサブネットに割り当てられた計算ユニット間で交換されるサブネット内のユニット間メッセージ、を含み、
前記方法は、
前記メッセージングプロトコルによって、送信計算ユニットと受信計算ユニットとの間で前記サブネット間のユニット間メッセージを、ネットワーク構成データから前記受信計算ユニットのサブネット割り当てを検索し、そして、前記サブネット割り当てに従って前記受信計算ユニットに割り当てられた前記サブネットに前記サブネット間のユニット間メッセージをルーティングすることにより、交換するステップを更に含む、ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のサブネットを含む分散ネットワークに関する。各サブネットは、複数のノードを含む。
さらなる態様は、サブネットのノード間でメッセージを交換するための方法、分散ネットワークのノード、対応するコンピュータプログラム製品、および非一時的な媒体上に符号化されたソフトウェアアーキテクチャに関する。
【背景技術】
【0002】
分散ネットワークでは、複数のノードが分散した形で配置される。分散ネットワークコンピューティングでは、ソフトウェアおよびデータは複数のノードの全体にわたって分散される。ノードはコンピューティングリソースを確立し、分散ネットワークは分散コンピューティング技術を使用することができる。
【0003】
分散ネットワークの例として、ブロックチェーンネットワークがある。ブロックチェーンネットワークは、コンセンサスに基づく、ブロックを基本とした電子台帳である。各ブロックはトランザクション(取引記録/取引データ)およびその他の情報を含む。さらに、各ブロックには直前のブロックのハッシュが含まれるため、全てのブロックは共に連鎖し、ブロックチェーンに書き込まれた全てのトランザクションの永続的で不変の記録を作成することができる。トランザクションには、例えばスマートコントラクトなどと呼ばれる小さなプログラムが含まれ得る。
【0004】
ブロックチェーンにトランザクションを書き込むためには、ネットワークによる「検証」を受ける必要がある。つまり、ブロックチェーンに書き込むブロックについて、ネットワークノードが同意を得る必要がある。このような同意は、様々なコンセンサスプロトコルによって達成され得る。
【0005】
コンセンサスプロトコルの一種に、プルーフ・オブ・ワークコンセンサスプロトコルがある。プルーフ・オブ・ワークコンセンサスプロトコルは、一般にコンセンサスプロトコルに参加する関係者に何らかの作業を要求し、それは通常コンピュータによる処理時間に相当する。ビットコインのようなプルーフ・オブ・ワークをベースとした暗号通貨システムでは、トランザクションの検証および新しいブロックの生成のために、計算量の多いパズル解き作業に参加する必要がある。
【0006】
コンセンサスプロトコルの別の種類に、プルーフ・オブ・ステークコンセンサスプロトコルがある。このようなプルーフ・オブ・ステークプロトコルは、時間やエネルギーを消費する計算を必要としないという利点がある。プルーフ・オブ・ステークに基づくブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダムな選択とネットワーク内のそれぞれのノードのステーク(賭け金)との組み合わせによって選ばれる。
【0007】
暗号通貨以外にも、分散ネットワークは様々な他の用途のために使用され得る。特に、非集中かつ分散型のコンピューティング機能やサービスを提供するために使用され得る。
特許文献1は、ブロックチェーンにおける台帳間メッセージングを開示する。動作の方法の一例は、第1のブロックチェーンから第2のブロックチェーンに送信されたブロックチェーントランザクションを受信することと、第1のブロックチェーンと第2のブロックチェーンとの間の台帳間の契約を特定することと、第2のブロックチェーンにおいて第1のブロックチェーンからの台帳間メッセージを受信することと、台帳間メッセージに基づき、第1のブロックチェーンまたは第2のブロックチェーンにおいてブロックチェーントランザクションを記録するかどうかを決定することと、を含むことができる。
従って、より高機能な分散ネットワークが求められている。
【先行技術文献】
【特許文献】
【0008】
【文献】米国特許出願公開第2018/0113752号明細書
【発明の概要】
【発明が解決しようとする課題】
【0009】
したがって、本発明の一態様の1つの目的は、機能性を高めた分散ネットワークを提供することである。
【課題を解決するための手段】
【0010】
本発明の第1の態様の一実施形態によれば、複数のサブネットを含む分散ネットワークが提供される。複数のサブネットの各々は、複数のノードを含む。ネットワークは、計算ユニットのセットを実行するように、及び、計算ユニットのセットの計算ユニットの各々を、サブネット割り当てに従って複数のサブネットのうちの1つに割り当てるように構成され、それにより、サブネットの各々について計算ユニットのセットの割り当てられたサブセットを作成する。ネットワークは、複数のサブネットの各ノード上で計算ユニットの割り当てられたサブセットを実行するように、及び、計算ユニットの割り当てられたサブセットをそれぞれのサブネットを渡って複製するように更に構成される。ネットワークは、サブネット割り当てに基づき、メッセージングプロトコルを介して計算ユニット間でユニット間メッセージを交換するように更に構成される。
計算ユニットは、分散ネットワークのノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部であり、ユニット状態は、ユニット間メッセージの入力キューおよび出力キューを含む。
ユニット間メッセージは、異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ、および、同じサブネットに割り当てられた計算ユニット間で交換されるサブネット内のユニット間メッセージを含む。
ネットワークは、サブネット割り当てをネットワーク構成データとして記憶するように構成される。さらに、メッセージングプロトコルは、ネットワーク構成データ中の受信計算ユニットのサブネット割り当てを検索し、サブネット割り当てに従って受信計算ユニットに割り当てられたサブネットにサブネット間のユニット間メッセージをルーティングする、ことにより、送信計算ユニットと受信計算ユニットとの間でサブネット間のユニット間メッセージを交換するように構成されてもよい。
【0011】
本発明の実施形態によるそのようなネットワークは、ネットワークの計算ユニット間のユニット間メッセージの交換を効率的かつ信頼性の高い方法で促進することができる。さらに、このようなネットワークは、サブネットのそれぞれのノードを渡って、計算ユニットのユニット状態の複製を容易にすることができる。
したがって、このような分散ネットワークでは、互いに通信可能な複製された計算ユニットが提供される。
実施形態の方法は、効率的かつ柔軟なルーティングメカニズムを提供する。
ユニット間メッセージは、分散ネットワークの異なる計算ユニット間で交換されるメッセージとして定義することができる。
【0012】
計算ユニットは、ネットワークのノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部として定義することができる。サブネットの各々は、計算ユニットのセット、特に計算ユニットの状態をサブネットを渡って複製するように構成される。その結果、それぞれのサブネットの計算ユニットは、間違いがないように動作する限り、常に同じ状態となる。
【0013】
実施形態によれば、計算ユニットのユニット状態の複製は、サブネットの各ノード上の、計算ユニットの割り当てられたサブセットの空間においてアクティブレプリケーションを実行することによって促進され得る。より詳細には、メッセージングプロトコルは、決定論的(一意的)かつ複製された計算を実行するように構成され得る。実施形態によれば、ユニット状態は、特に、入力キュー、出力キュー、システム状態、及びアプリケーション状態またはユーザ状態を含んでもよい。
【0014】
メッセージングプロトコルは、ユニット間メッセージの交換を管理するプロトコルとして定義することができる。特に、メッセージングプロトコルは、ユニット間メッセージを送信サブネットから受信サブネットにルーティングするように構成されてもよい。このために、メッセージングプロトコルは、それぞれのサブネット割り当てを使用する。サブネット割り当ては、メッセージングプロトコルに対して、それぞれの通信の計算ユニットのそれぞれの位置/サブネットを示すものである。
【0015】
施形態によれば、メッセージングプロトコルは、送信サブネットから複数の受信サブネットへのサブネット間のユニット間メッセージを、複数の受信サブネットによってソートされた出力ストリームにルーティングするように構成される。
これは、サブネット間のユニット間メッセージのための特に効率的なルーティングメカニズムである
【0016】
実施形態によれば、メッセージングプロトコルは、ユニット間メッセージの受信についての肯定応答(ACK)または否定応答(NACK)に適合されたシグナリングメッセージを提供するように更に構成される。応答は、特に個々のユニット間メッセージに対して提供され得る。
このような一実施形態によれば、シグナリングメッセージは、メッセージを正常に受信したことを受信サブネットが肯定的に応答するための応答メッセージを含んでもよい。一方、シグナリングメッセージは、例えば容量やその他の理由によりメッセージを肯定的に応答することができず、拒否する必要があったことを示すための否定的な応答またはエラーメッセージとして実施してもよい。このような場合、エラーメッセージは、送信サブネットが対応するメッセージを再送信するきっかけとなり得る。
【0017】
実施形態によれば、メッセージングプロトコルは、受信サブネットから対応する送信サブネットにシグナリングメッセージを送信するように、そして、受信が確認されるまで送信したユニット間メッセージを保存するように構成される。
これにより、受け渡しを保証することができる。
【0018】
実施形態によれば、ネットワークは、ネットワークのユーザからのイングレスメッセージを受信し、処理するように更に構成される。
このようなイングレスメッセージは、例えば、ある計算タスクを実行するためにネットワークの計算ユニットに宛てられる実行要求であってもよい。イングレス(入方向)メッセージは、一般に、ネットワークに対して外部から、特に外部インターフェース経由で、特にネットワークの外部ユーザから提供されるメッセージとして定義することができる。
【0019】
一実施形態によれば、ネットワークは、ユニット間メッセージのサブセット、特にサブネット間のユニット間メッセージの選択および/または処理順序に関してコンセンサスを得るために適合されたコンセンサスプロトコルを実行するように構成される。
イングレスメッセージを受信して処理するように構成されたネットワークでは、ネットワークは、ユニット間メッセージおよびイングレスメッセージの選択および/または処理順序に関してコンセンサスを得るために適合されたコンセンサスプロトコルを実行するように構成することができる。
【0020】
実施形態によれば、メッセージングプロトコルは、ユニット間メッセージをコンセンサスプロトコルに提供してもよい。
コンセンサスプロトコルは、次に、複数のサブネットのうちの1つが、複数のサブネットのうちの1つ以上の他のサブネットから受信したサブネット間のユニット間メッセージの選択および/または処理順序に関してコンセンサスを得るためのコンセンサスアルゴリズムを実行することができる。より詳しくは、コンセンサスプロトコルは、処理すべきサブネット間のユニット間メッセージを選択し、対応する処理順序に合意することができる。
コンセンサスが得られた後、コンセンサスプロトコルは、選択されたメッセージおよび対応する処理順序を、さらなる処理のためにメッセージングプロトコルに提供することができる。
【0021】
実施形態によれば、ネットワークは、各サブネット上でコンセンサスプロトコルを別個に実行するように更に構成される。さらに、サブネットの各々は、それぞれのサブネットが受信したサブネット間のユニット間メッセージの選択および/または処理順序に関して、ローカルサブネットコンセンサスを得るように構成されてもよい。
このような一実施形態によれば、サブネットの各々は、受信したサブネット間メッセージの選択および/または処理順序に関して独自に決定することができる。このようなローカルサブネットコンセンサスは、効率性とスケーラビリティの面でメリットを提供する。さらに、これは、それぞれのサブネットの個別のニーズを考慮することを許容する。
特に、これは、異なるサブネット上で異なるコンセンサスアルゴリズムを実行することを許容する。この点で、コンセンサスプロトコルは、異なるサブネットが、個々のニーズ、要件、および/または優先傾向(preferences)に従って使用することができる幾つかの異なるコンセンサスアルゴリズムを含むことができる。さらに、コンセンサスプロトコルは、実施形態に応じて異なるバージョンを有することができる。
【0022】
実施形態によれば、複数のサブネットの各々は、そのノード上で別個のサブネットプロトコルクライアントを実行するように構成される。別個のサブネットプロトコルクライアントは、別個のサブネットメッセージングコンポーネントおよび別個のサブネットコンセンサスコンポーネントを含む。それぞれのサブネットの別個のコンセンサスプロトコルクライアントの各々は、複数のサブネットのうちの1つまたは複数の他のサブネットから受信したユニット間メッセージの選択および/または処理順序に関してサブネットコンセンサスを得るように構成される。
このような一実施形態によれば、各サブネットは、他のサブネットから独立して、それ自身の、個々のサブネットプロトコルクライアントを実行することができる。
【0023】
一実施形態によれば、コンセンサスプロトコルは、ユニット間メッセージ、特にサブネット間のユニット間メッセージ、および複数のサブネットのイングレスメッセージを受信して処理し、そして、ユニット間メッセージおよびイングレスメッセージから入力ブロックのキューを予め定義されたコンセンサスメカニズムに従って生成する、ように構成される。コンセンサスが得られると、コンセンサスプロトコルは、さらなる処理のために入力ブロックのキューをメッセージングプロトコルに提供する。このような入力ブロックは、サブネット間のユニット間メッセージおよびイングレスメッセージの効率的かつ安全な処理を容易に行えるようにする。
【0024】
実施形態によれば、ネットワークは、コンセンサスプロトコルとして、プルーフ・オブ・ステークコンセンサスプロトコルを実行するように構成される。
プルーフ・オブ・ステークコンセンサスプロトコルは、サブネット間メッセージおよびイングレスメッセージの処理順序に関して、特にメッセージングプロトコルによる更なる処理のために作成される次の入力ブロックに関してコンセンサスを得ることを目的としている。
【0025】
いくつかの実施形態によれば、それぞれのサブネットの全てのノードがコンセンサスプロトコルに参加することができる。他の実施形態によれば、コンセンサスプロトコルは、予め定義された選挙スキーム(方式)に従ってサブネットの複数のノードから委員会のメンバーを選出し、そして、委員会の選出されたメンバーでコンセンサスプロトコルを実行する、ように更に構成される。
このようなネットワークは、委員会がサブネットのノードの全てのセットよりも大幅に小さくなる場合があることから、高いトランザクションレートおよび短いファイナライズ(合意到達)時間を達成することができる。このような一実施形態は、特に数百、数千のノードを含む、より大きな規模のサブネットのために有用である。その場合、委員会は、一例として20~60ノードのみで構成されることもある。したがって、委員会は、サブネット内の全てのノードが参加する場合よりも、より効率的に行動することができる。このような委員会は、入力ブロックを公証する権限があるため、また、公証委員会と呼ばれる場合がある。
【0026】
いくつかの実施形態によれば、閾値リレー方式を使用することができる。より詳しくは、本発明の実施形態によるネットワークは、閾値リレー、つまり、分散ランダムビーコン(乱数)を使用することができる。分散ランダムビーコンは、それぞれのサブネットのランダムに選択されたノードの後続公証委員会(subsequent notarization committees)によって維持されるものである。ランダムビーコンの出力は、例えば、ブロック提案者のランク付けや新世代委員会の構成のために、システム内のエントロピー(情報量)として用いられる。
このような閾値リレー方式は、例えば「Timo Hanke, Mahnush Movahedi and Dominic Williams」らによる文書「DFINITY Technology Overview Series, Consensus System, Rev.1, https://dfinity.org/static/dfinity-consensus-0325c35128c72b42df7dd30c22c41208.pdf」に記載されている。
【0027】
実施形態によれば、メッセージングプロトコルは、コンセンサスプロトコルから受信した入力ブロックによって開始されるように構成される。これは、入力ブロックの効率的かつ同期的な処理を容易にする。
【0028】
実施形態によれば、コンセンサスプロトコルは、入力ブロックに1つ以上の実行パラメータを追加するように更に構成される。実行パラメータは、ランダムシード、指定された実行時間、および/または高さインデックス(height index)を含んでもよい。このような実行パラメータは、入力ブロックおよびその対応するメッセージの処理の効率性および/またはセキュリティを、さらに容易にし、かつ向上させることができる。
ランダムシードは、例えば、実行時の擬似的なランダム性を実現するために必要に応じて使用することができる。高さインデックスは、入力ブロックの順序どおりの処理を容易にするための、例えば、入力ブロックの昇順のインデックスであってもよい。
【0029】
実施形態によれば、メッセージングプロトコルは、入力ブロックおよび/またはサブネット間メッセージに対し、特にサブネット間のユニット間メッセージ、およびコンセンサスプロトコルから受信した入力ブロックのイングレスメッセージに対して1つ以上の入力チェックを実行するように構成される。1つ以上の入力チェックは、過負荷チェック、順序配信チェック、および/または対象宛先の有効性チェックを含んでもよい。過負荷チェックは、メッセージングコンポーネントおよび後続の実行コンポーネントが、多すぎる入力ブロック及び/又は入力メッセージによって過負荷になることを防ぐことができる。順序配信チェックは、例えば、高さインデックスを検査することによって行うことができる。有効性チェックは、入力ブロックおよび対応するメッセージの有効性を保証し、問題のある入力ブロックまたはメッセージを破棄するための任意の適切な検査を含むことができる。
【0030】
実施形態によれば、ネットワークは、実行メッセージを実行するための実行手順を実行するように構成された実行コンポーネントを含む。実行メッセージは、ユニット間メッセージ及び/又はイングレスメッセージを含んでもよい。実行手順は、特に、実行メッセージの決定論的かつ複製された計算を実行するように構成される。実行手順は、実行プロトコルであっても、又は実行アルゴリズムであってもよい。
したがって、そのような一実施形態によれば、メッセージングコンポーネントおよび実行コンポーネントは、両方とも、複製された決定論的な計算を実行することができる。コンセンサスプロトコルを実行し、それぞれのサブネットのノードの複製された計算ユニットが同じ入力を受信することを保証するコンセンサスコンポーネントと組み合わせることで、計算ユニットのユニット状態の完全な複製を実現することができる。
【0031】
実施形態によれば、ネットワークは、認証コンポーネントを含む。認証コンポーネントは、それぞれのサブネットによる出力ストリームを、特に、それぞれのサブネットの計算ユニットの閾値署名、マルチ署名、または個々の署名の集合によって認証するように構成される。
マルチ署名は、サブネットの計算ユニットが出力ストリームに共同で署名することを可能にする電子署名である。このような共同署名は、通常、サブネットの全ての計算ユニットの個々の署名を集めたものよりも、よりコンパクトなものとなる。
【0032】
実施形態によれば、サブネットメッセージングコンポーネントは、誘導プールコンポーネント、ユニット状態を記憶するための状態記憶コンポーネント、および出力キューコンポーネントを含む。
一実施形態によれば、ネットワークは、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネントを更に含む。ネットワーキングプロトコルは、ノード間通信を実行するように構成されたユニキャストコンポーネント、サブネット内通信を実行するように構成されたブロードキャストコンポーネント、および/またはサブネット間通信を実行するように構成されたクロスネットコンポーネントを含んでもよい。
さらなる実施形態によれば、複数のノードの各々は、メインネットプロトコルクライアントを実行するように構成される。メインネットプロトコルクライアントは、特に、複数のサブネットに構成データを配布するように構成される。構成データは、特にサブネット割り当てを含んでもよい。
一実施形態によれば、複数のサブネットの各々は、少なくとも4つのノードを含む。
【0033】
本発明の方法の態様の一実施形態によれば、分散ネットワークにおいてユニット間通信を実行するためのコンピュータ実装された方法が提供される。分散ネットワークは、複数のサブネットを含み、複数のサブネットの各々は、複数のノードを含む。方法は、計算ユニットのセットを実行するステップと、サブネット割り当てに従って計算ユニットのセットの計算ユニットの各々を複数のサブネットのうちの1つに割り当て、それによって、サブネットの各々に対し、計算ユニットのセットの割り当てられたサブセットを作成するステップと、を含む。方法は、複数のサブネットの各ノード上で計算ユニットの割り当てられたサブセットを実行することと、計算ユニットの割り当てられたサブセットをそれぞれのサブネットを渡って複製することと、サブネット割り当てに基づき、メッセージングプロトコルを用いて計算ユニット間でユニット間メッセージを交換することと、を更に含む。
【0034】
本発明の別の態様の一実施形態によれば、分散ネットワークのノードが提供される。
本発明の別の態様の一実施形態によれば、分散ネットワークを動作させるためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、その中に具体化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令は、複数のノードの1つまたは複数に、本発明の方法の態様のステップを実行させるために、分散ネットワークの複数のノードの1つまたは複数によって実行可能である。
本発明の別の態様の一実施形態によれば、分散ネットワークのノードを動作させるためのコンピュータプログラム製品が提供される。
【0035】
本発明の別の態様の一実施形態によれば、非一時的なコンピュータ可読媒体上に符号化されたソフトウェアアーキテクチャが提供される。ソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノードを動作させるように構成される。符号化されたソフトウェアアーキテクチャは、複数のノードの1つまたは複数に、本発明の方法の態様のステップを含む方法を実行させるための、複数のノードの1つまたは複数によって実行可能なプログラム命令を含む。
【0036】
本発明の一態様の特徴および利点は、本発明の他の態様に、適宜、適用することができる。
他の有利な実施形態は、以下の説明と同様に、従属請求項に記載される。
本発明は、明細書の以下の詳細な説明から、よりよく理解され、上記以外の目的も明らかとなるであろう。説明では、添付の図面を参照する。
【図面の簡単な説明】
【0037】
図1】本発明の一実施形態に係る分散ネットワークの例示的なブロック図である。
図2】ネットワークのノード上で動作する計算ユニットをより詳細に示す図である。
図3】サブネットで受信されるサブネット間メッセージの模式図である。
図4】本発明の一実施形態に係るネットワークの各ノード上で実行される主要なプロセスを示す図である。
図5】サブネット間およびサブネット内のメッセージの交換に関与する主要なレイヤを示すレイヤモデルの図である。
図6】サブネットプロトコルクライアントのプロトコルコンポーネントを示す概略ブロック図である。
図7】メッセージングプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフローを例示的に視覚化した図である。
図8】本発明の一実施形態に係る計算ユニットをより詳細に示す図である。
図9】本発明の例示的な実施形態に係るコンセンサスコンポーネントによる入力ブロックの作成を示す図である。
図10】ネットワーキングコンポーネントをより詳細に示す図である。
図11】本発明の一実施形態に係るネットワークノードの例示的な実施形態を示す図である。
図12a】分散ネットワークのサブネット間でサブネット間メッセージを交換するためのコンピュータ実装された方法の処理ステップを含むフローチャートである。
図12b】分散ネットワークのサブネット間でサブネット間メッセージを交換するためのコンピュータ実装された方法の処理ステップを含むフローチャートである。
図13】本発明の実施形態に係る分散ネットワークを実行するためのコンピュータ実装された方法の処理ステップを含むフローチャートである。
【発明を実施するための形態】
【0038】
最初に、本発明の実施形態のいくつかの一般的な態様および用語について紹介する。
実施形態によれば、分散ネットワークは、分散された形に配置された複数のノードを含む。このような分散ネットワークコンピューティングでは、ソフトウェアおよびデータは複数のノードの全体にわたって分散される。ノードはコンピューティングリソースを確立し、分散ネットワークは特に分散コンピューティング技術を使用することができる。
【0039】
実施形態によれば、分散ネットワークは、特にブロックチェーンネットワークとして実施され得る。「ブロックチェーン」という用語は、電子的、コンピュータを使った、分散型台帳、の全ての形式を含むものである。いくつかの実施形態によれば、ブロックチェーンネットワークは、プルーフ・オブ・ワークブロックチェーンネットワークとして実施され得る。他の実施形態によれば、ブロックチェーンネットワークは、プルーフ・オブ・ステークブロックチェーンネットワークとして実施され得る。
【0040】
図1は、本発明の一実施形態に係る分散ネットワーク100の例示的なブロック図である。
分散ネットワーク100は、複数のノード10(ネットワークノード10と示されることもある)を含む。複数のノード10は、複数のサブネット11に亘って分散される。図1の例では、SNA、SNB、SNC、及びSNDと示される4つのサブネット11が設けられる。
複数のサブネット11の各々は、それぞれのサブネット11の各ノード10上で計算ユニットのセットを実行するように構成される。実施形態によれば、計算ユニットは、ソフトウェアの一部、特に、それ自身のユニット状態を含む又はこれを有するソフトウェアの一部として理解されるべきである。
【0041】
ネットワーク100は、それぞれのサブネット11内のサブネット内通信のための、特に同じサブネットに割り当てられた計算ユニット間で交換されるサブネット内のユニット間メッセージのための通信リンク12を含む。
さらに、ネットワーク100は、サブネット11の異なるサブネットの間のサブネット間通信のための、特に異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージのための通信リンク13を含む。
したがって、通信リンク12は、サブネット内またはピアツーピア(P2P)通信リンクと示されることもあり、そして、通信リンク13は、サブネット間またはサブネットツーサブネット(SN2SN)通信リンクと示されることもある。
【0042】
実施形態によれば、ユニット状態は、計算ユニットによって使用される全てのデータまたは情報、特に計算ユニットが変数に格納するデータとして、だけでなく、計算ユニットが遠隔呼び出しから取得するデータとしても、また、理解されるべきである。ユニット状態は、それぞれのノードのそれぞれのメモリ位置における特定の記憶位置を表すことができる。これらのメモリ位置の内容は、計算ユニットの実行の任意の時点で、実施形態によればユニット状態と呼ばれる。計算ユニットは、特にステートフル計算ユニットとして実施されてもよく、すなわち、計算ユニットは、先行のイベント、又はユーザとのやり取りを記憶するように実施形態に従って設計される。
【0043】
本発明の実施形態によれば、サブネット11は、サブネット11のそれぞれを渡って(越えて)計算ユニットのセットを複製するように構成される。より詳しくは、サブネット11は、サブネット11のそれぞれを渡って計算ユニットのユニット状態を複製するように構成される。
ネットワーク100は、特に、プルーフ・オブ・ステークブロックチェーンネットワークであってもよい。
プルーフ・オブ・ステーク(PoS)は、ブロックチェーンネットワークにおいて、どのノードがブロックチェーンの次のブロックの作成を認められるかについて分散型コンセンサスを得る方法を説明する。PoS方式では、加重ランダム選択を使用することができ、それにより、個々のノードの重みは、特にそれぞれのノードの資産(「ステーク」)に応じて決定され得る。
【0044】
図2は、ネットワーク100のノード10上で動作する計算ユニット15をより詳細に示す図である。ネットワーク100は、ネットワーク100上で動作する計算ユニットの各々を、複数のサブネットのうちの1つ、この例ではサブネットSNA、SNB、SNC、又はSNDのうちの1つに、サブネット割り当てに従って割り当てるように構成される。分散ネットワーク100のサブネット割り当ては、サブネットSNA、SNB、SNC、及びSNDの各々について、計算ユニットの全セットの割り当てられたサブセットを作成する。
【0045】
より詳しくは、図2には、左側201に、図1のサブネットSNAのノード10が示されている。分散ネットワーク100のサブネット割り当てでは、5つの計算ユニット15のサブセットがサブネットSNAに割り当てられる。より詳しくは、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5のサブセットが、それである。計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5の割り当てられたサブセットは、サブネットSNAの各ノード10上で動作する。さらに、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5の割り当てられたサブセットは、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5の各々が同じユニット状態を有するようにサブネットSNA全体にわたって複製される。これは、特に、サブネットSNAの各ノード10上の、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5のユニット状態の空間においてアクティブレプリケーションを実行することによって、実施されてもよい。
【0046】
さらに、図2には、右側202に、図1のサブネットSNBのノード10が示されている。分散ネットワーク100のサブネット割り当てでは、4つの計算ユニット15のサブセットがサブネットSNBに割り当てられる。つまり、より詳しくは、計算ユニットCUB1、CUB2、CUB3、及びCUB4の割り当てられたサブセットのことである。計算ユニットCUB1、CUB2、CUB3、及びCUB4の割り当てられたサブセットは、サブネットSNBの各ノード10上で動作する。さらに、計算ユニットCUB1、CUB2、CUB3、及びCUB4の割り当てられたサブセットは、例えば、上述したようにユニット状態の空間においてアクティブレプリケーションを実行することにより、計算ユニットCUB1、CUB2、CUB3、及びCUB4の各々が同じユニット状態を有するようにサブネットSNB全体にわたって複製される。
【0047】
図1に戻ると、ネットワーク100は、サブネット割り当てに基づき、メッセージングプロトコルを介してネットワークの計算ユニット間でユニット間メッセージを交換するように構成される。
実施形態によれば、分散ネットワークは、特に、メッセージングプロトコルを介してサブネットSNA、SNB、SNC、及びSNDの間でサブネット間メッセージ16を交換するように構成されてもよい。サブネット間メッセージ16は、特に、サブネット割り当てに従って異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ16aとして実施され得る。一例として、分散ネットワーク100は、サブネットSNA上で動作する送信計算ユニットとしての計算ユニットCUA1と、サブネットSNB上で動作する受信計算ユニットとしての計算ユニットCUB2との間で、ユニット間メッセージM1,16aを交換するように構成されてもよい。さらに、サブネット間メッセージ16は、シグナリングメッセージ16bとして実施されてもよい。シグナリングメッセージ16bは、ユニット間メッセージの受け入れまたは受信が確認されたことに対応する肯定応答メッセージ(ACK)、またはユニット間メッセージの受け入れが確認されないことに対応する(リジェクションに相当する)、例えば、送信障害を示すための否定応答メッセージ(NACK)を包含してもよい。
【0048】
ネットワーク100は、特に、計算ユニット10のサブネット割り当てをネットワーク構成データとして、例えば図10に示すようなネットワークコンポーネント1000に、特にクロスネットコンポーネント1030に記憶するように構成されてもよい。
メッセージングプロトコルは、ネットワーク構成データから受信計算ユニットのサブネット割り当てを、その後に、検索することができる。上記の例では、受信計算ユニットCUB2がサブネットSNBに位置していることがわかるので、対応するサブネット間のユニット間メッセージM1をサブネットSNBにルーティングすることになる。
【0049】
さらなる実施形態によれば、ネットワーク100は、メッセージングプロトコルおよびコンセンサスプロトコルを介して、サブネット間メッセージ16を交換するように構成されてもよい。コンセンサスプロトコルは、それぞれの受信サブネットにおいて、サブネット間メッセージ16の選択および/または処理順序に関するコンセンサスを得るように構成されてもよい。
例えばサブネットSNBを参照すると、サブネットSNA、SNC、及びSNDからサブネット間メッセージ16を受信する。コンセンサスプロトコルは、これらのサブネット間メッセージ16を受信して処理し、受信したサブネット間メッセージ16の選択および/または処理順序に関してコンセンサスを得るために、予め定義されたコンセンサスアルゴリズムまたはコンセンサスメカニズムを実行する。
【0050】
実施形態によれば、ネットワーク100は、コンセンサスプロトコルを各サブネット上で別個に実行するように構成されてもよい。つまり、SNA、SNB、SNC、及びSNDのサブネットの各々は、別個に、かつ他のサブネットから独立して、それ自身のコンセンサスプロトコルを実行する。したがって、サブネットSNA、SNB、SNC、及びSNDの各々は、どの受信メッセージを選択して処理するか、そして、どの順番で処理するかを、それ自身で、かつ他のサブネットから独立して決定することができる。よって、サブネットSNA、SNB、SNC、及びSNDの各々は、受信したサブネット間メッセージ16の選択および処理順序に関してサブネット単位でコンセンサスを得る。このようなコンセンサスは、また、ローカルコンセンサスまたはサブネットコンセンサスとみなされることもある。
【0051】
この概念を、図3を参照してより詳しく説明する。
図3は、図1のサブネット11のSNBで受信されるサブネット間メッセージ16の模式図である。
サブネットSNBは、サブネットSNAからサブネット間メッセージSNA-SNBを、サブネットSNCからサブネット間メッセージSNC-SNBを、および、サブネットSNDからサブネット間メッセージSND-SNBを受信する。これらのサブネット間メッセージのプールは、サブネットSNB上でローカルにコンセンサスプロトコルを実行するコンセンサスコンポーネント(CSNB)30によって処理される。したがって、コンセンサスコンポーネント30は、サブネットコンセンサスコンポーネントと示されることがある。
コンセンサスコンポーネント30は、予め定義されたコンセンサスアルゴリズムまたはメカニズムに従ってサブネット間メッセージから入力ブロックIBのキューを生成し、入力ブロックIBのキューを、メッセージングプロトコルを実行し、入力ブロックIBを更に処理するように構成されるメッセージングコンポーネント(MSNB)31に提供する。
実施形態によれば、それぞれのサブネット11のノード10の各々は、コンセンサスプロトコルに参加することができる。このような実施形態によれば、サブネット11の各々は、例えば10~100ノード、特に20~50ノードを含むことができる。そのような数は、セキュリティと効率性との間の有利な妥協点を提供し得る。
【0052】
他の実施形態によれば、コンセンサスプロトコルは、予め定義された選挙スキームに従ってそれぞれのサブネット11の複数のノード10から委員会のメンバーを選出するように、そして、委員会の選出されたメンバーとのみコンセンサスプロトコルを実行するように、構成されてもよい。このようなアプローチは、ノードの数のより多いサブネット、例えば1000以上のノードを持つサブネットのために特に有効である。
【0053】
図4は、本発明の一実施形態に係るネットワーク100の各ノード10上で実行される主要なプロセスを示す図である。本発明の実施形態によるネットワークのネットワーククライアントは、ノード10がネットワークに参加するために必要なプロトコルコンポーネントのセットである。実施形態によれば、各ノード10は、メインネットおよび多くとも1つのサブネットのメンバーであり、これは、各ノードが、メインネットのためのクライアントおよび場合によってはサブネットのためのクライアントを実行することを意味する。
ノードマネージャ40は、メインネットプロトコルクライアント41、サブネットプロトコルクライアント42、およびセキュリティアプリケーション43を、起動、再起動、およびアップデートするように構成される。
【0054】
実施形態によれば、複数のサブネット11の各々は、別個のサブネットプロトコルクライアント42を、その対応するノード10上で実行するように構成される。メインネットプロトコルクライアント41は、特に、構成データを複数のサブネット11との間で配布するように構成される。メインネットプロトコルクライアント41は、特に、システム計算ユニットのみを実行し、ユーザが提供する計算ユニットは全て実行しないように構成されてもよい。メインネットプロトコルクライアント41は、メインネットのローカルクライアントであり、そして、サブネットプロトコルクライアント42は、サブネットのローカルクライアントである。
【0055】
セキュリティアプリケーション43は、ノード10の秘密鍵を記憶し、それを用いて全ての動作を実行する。
セキュリティアプリケーション43は、ノードが保持した秘密鍵を保護するように構成される。より詳しくは、秘密鍵は、別個の実行環境(別個のプロセスまたは別個の仮想マシン(VM))で保持され、処理される。セキュリティアプリケーション43は、インターフェースを介して秘密鍵を抽出できないように、限定および制御されたインターフェースで動作するように構成される。実施形態によれば、セキュリティアプリケーションは、ハードウェアセキュリティモジュール(HSM)のように、又はHSMと同様に動作するように構成される。したがって、セキュリティアプリケーション43は、ソフトウェアHSMとして示されることがある。
【0056】
図5は、サブネット間およびサブネット内のメッセージの交換に関与する主要なレイヤ(層)を示すレイヤモデル500の図である。レイヤモデル500は、サブネット間通信のための上位層として機能するように構成されたメッセージング層51を含む。より詳しくは、メッセージング層51は、異なるサブネットの計算ユニット間でサブネット間メッセージをルーティングするように構成される。さらに、メッセージング層51は、ネットワークのユーザからのイングレスメッセージをネットワークの計算ユニットにルーティングするように構成される。
レイヤモデル500は、イングレスメッセージと同様に異なるサブネットからサブネット間メッセージを受信するように構成され、そして、特に処理順序に関して合意することにより、次にそれぞれのサブネットによってさらに処理される入力ブロックのシーケンスにそれらを組み入れるように構成される複数のコンセンサス層52を更に含む。さらに、レイヤモデル500は、単一のサブネットのノード間の通信を構成および駆動するように構成されたピアツーピア(P2P)層を含む。
実施形態によれば、ネットワークは、複数のさらなる層、特に、ネットワークの計算ユニット上で実行メッセージを実行するように構成される実行層を含んでもよい。
【0057】
図6は、サブネットプロトコルクライアント、例えば図4のサブネットプロトコルクライアント42のプロトコルコンポーネント600を示す概略ブロック図である。
図6中の実線の矢印は、ユニット間メッセージおよびイングレスメッセージに関連するものである。破線の矢印は、システム情報に関連するものである。
【0058】
プロトコルコンポーネント600は、メッセージングプロトコルを実行するように構成されたメッセージングコンポーネント61と、実行メッセージを実行するための、特にユニット間メッセージ及び/又はイングレスメッセージを実行するための実行プロトコルを実行するように構成された実行コンポーネント62と、を含む。プロトコルコンポーネント600は、さらに、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネント63と、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント64と、状態管理プロトコルを実行するように構成された状態管理コンポーネント65と、クロスサブネット転送プロトコルを実行するように構成されたXネットコンポーネント66と、ネットワークの外部ユーザから受信したイングレスメッセージを取り扱うように構成されたイングレスメッセージハンドラコンポーネント67と、を含む。プロトコルコンポーネント600は、さらに、暗号コンポーネント68を含む。暗号コンポーネント68は、例えば、図4を参照して説明したようなセキュリティアプリケーション43として実施され得るセキュリティコンポーネント611と協働する。さらに、サブネットプロトコルクライアント42は、図4を参照して説明したようなメインネットプロトコルクライアント41の一部であり得るリーダーコンポーネント610と協働し得る。リーダーコンポーネント610は、メインネットによって格納および配布される情報を、それぞれのサブネットプロトコルクライアント42に提供することができる。これには、サブネットへのノードの割り当て、ノードの公開鍵、サブネットへの計算ユニットの割り当てなどが含まれる。
【0059】
メッセージングコンポーネント61および実行コンポーネント62は、これらのコンポーネントにおける全ての計算、データおよび状態が、それぞれのサブネットの全てのノード、より詳しくはそれぞれのサブネットの全ての信頼できるノード全体にわたって同一に複製されるように構成される。これは、これらのコンポーネントのウェーブパターンバックグラウンド(wave-pattern background)によって示される。
このような同一の複製は、実施形態に従って達成され、一方では、メッセージングコンポーネント61への入力のストリームが、それぞれのサブネットによって合意されること、そして、そのように、全てのノード、より詳しくは全ての信頼できるノードについて同一であること、を保証するコンセンサスコンポーネント63の働きによって達成される。他方では、これは、メッセージングコンポーネント61および実行コンポーネント62が、決定論的かつ複製された計算を実行するように構成されることによって達成される。
【0060】
Xネット転送コンポーネント66は、他のサブネットにメッセージストリームを送信し、他のサブネットからメッセージストリームを受信する。
ほとんどのコンポーネントは、暗号化アルゴリズムを実行するために暗号コンポーネント68にアクセスし、構成情報を読み取るためにメインネットリーダー70にアクセスすることになる。
実行コンポーネント62は、メッセージングコンポーネント61から計算ユニットのユニット状態および計算ユニットのための着信メッセージを受信し、発信メッセージおよび計算ユニットの更新されたユニット状態を返信する。また、実行中に、処理したメッセージ(クエリ)のガス(gas)消費量を計測することもある。
【0061】
メッセージングコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロックによって開始される。すなわち、各入力ブロックに対して、メッセージングコンポーネント61は、以下のようなステップを実行する。それぞれの入力ブロックを解析し、計算ユニットへのメッセージを取得する。さらに、異なる計算ユニットのそれぞれの入力キューにメッセージをルーティングするとともに、各計算ユニットに割り当てられた容量に応じて実行されるようにメッセージをスケジューリングする。そして、実行コンポーネント62を使用して、対応する計算ユニットによってメッセージを処理し、その結果、送信すべきメッセージがそれぞれの計算ユニットの出力キューに追加される。ただし、同一サブネット上の計算ユニット宛のメッセージの場合は、対応する計算ユニットの入力キューに直接入れることができる。メッセージングコンポーネント61は、最終的に、計算ユニットの出力キューのメッセージを、受信計算ユニットが配置されているサブネットのためのメッセージストリームにルーティングし、そして、これらのメッセージストリームを状態管理コンポーネント65に転送して認証されるように、すなわち、それぞれのサブネットによって署名されるようにする。
【0062】
状態管理コンポーネント65は、認証コンポーネント65aを含む。認証コンポーネント65aは、それぞれのサブネットの出力ストリームを認証するように構成される。これは、例えば、閾値署名、マルチ署名、またはそれぞれのサブネットの計算ユニットの個々の署名の集合によって行われ得る。
【0063】
図7は、メッセージングプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフロー、例えば図6のメッセージングコンポーネント61およびコンセンサスコンポーネント63のワークフロー700を例示的に視覚化した図である。より詳しくは、図7は、サブネットSNBと、サブネットSNAおよびSNCとの間で交換されるサブネット間メッセージのワークフローを視覚化したものである。さらに、サブネットSNBは、複数のユーザUとイングレスメッセージを交換する。
図7の右下側から順に、複数の入力ストリーム701、702、及び703がコンセンサスコンポーネント63によって受信される。コンセンサスコンポーネント63は、サブネットSNBのサブネットクライアントによって実行されるサブネットコンセンサスコンポーネントである。入力ストリーム701は、サブネットSNAからサブネットSNBへのサブネット間メッセージ711を含む。入力ストリーム702は、サブネットSNCからサブネットSNBへのサブネット間メッセージ712を含む。入力ストリーム703は、複数のユーザUからサブネットSNBへのイングレスメッセージ713を含む。
【0064】
サブネット間メッセージ711、及び712は、シグナリングメッセージと同様に、異なるサブネットの計算ユニット間で交換されるサブネット間のユニット間メッセージを含む。シグナリングメッセージは、ユニット間メッセージの受け入れについての肯定応答または否定応答のために使用される。メッセージングコンポーネント61は、受信サブネットから対応する送信サブネットに、すなわちこの例ではサブネットSNBからサブネットSNAおよびSNCに、シグナリングメッセージを送信するように構成される。メッセージングコンポーネント61は、本実施例によれば、それぞれのユニット間メッセージに対する確認メッセージを受信するまで、送信されたサブネット間のユニット間メッセージを保存するように構成される。これにより、受け渡しを保証することができる。
【0065】
コンセンサスコンポーネント63は、サブネットSNA、SNCのサブネット間メッセージ711、712及びユーザUのイングレスメッセージ713を受信して処理するように、そして、対応するコンセンサスプロトコルによって実行される予め定義されたコンセンサスメカニズムに従ってサブネット間メッセージ711、712、及びイングレスメッセージ713から入力ブロック720のキューを生成するように、構成される。コンセンサスによって生成された各入力ブロック720は、イングレスメッセージ713のセット、サブネット間メッセージ711、712のセット、および実行パラメータ714,EPを含む。実行パラメータ714,EPは、特に、ランダムシード、指定された実行時間および/または高さインデックスを含んでもよい。また、コンセンサスコンポーネント63は、サブネットの現在の負荷に基づいて入力ブロック毎にメッセージ数を変化させてもよい。
コンセンサスコンポーネント63は、入力ブロック720のキューを、次に、メッセージングコンポーネント61に提供する。メッセージングコンポーネント61は、メッセージングプロトコルを実行し、入力ブロック720を処理するように構成される。
メッセージングプロトコルおよびメッセージングコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロック720によって開始される。
【0066】
受信した入力ブロックを処理する前に、メッセージングコンポーネント61は、1つ又は複数の入力チェックを含む1つ又は複数の前処理ステップを実行することができる。入力チェックは、入力チェックコンポーネント740によって実行されてもよい。
入力チェックは、実施形態に応じて異なる粒度で実行されてもよい。まず、入力ブロック全体に対して入力チェックが実行されてもよい。このようなチェック(検査)は、また、入力ブロックチェックと示されることもある。これらは、次の入力ブロックの高さのチェックを含んでもよい。もし、次の入力ブロックの高さが、期待される次の順番のものよりも低い場合、その入力ブロックは破棄される。入力ブロックが期待される次の順番のものでない場合、メッセージングコンポーネント61は、ノードキャッチアッププロトコルを起動することができる。入力ブロックが次の順番のものである場合、その入力ブロックは、メッセージングコンポーネント61によって更に処理される。
入力ブロック中の異なる種類のメッセージ(シグナリングメッセージ、イングレスメッセージ、ユニット間メッセージ)は、一緒にグループ化されてもよい。
【0067】
入力チェックは、メッセージングコンポーネントが現在過負荷であって処理を実行するのに十分な処理能力を持っていないかどうかをチェックするための過負荷チェックを更に含んでもよい。例えば誘導プール内の関連するキューが満杯の場合、対応するメッセージは拒否され得る。さらに、入力チェックは、順序配信チェックを含んでもよい。順序配信の要件を満たすために、メッセージに例えばシーケンス番号などの注釈を付けることができる。シーケンス番号を持つメッセージを受信した場合、メッセージングコンポーネント61は、それが期待される番号を持つかどうかをチェックすることができ、そして、持っていない場合、それを拒否することができる。さらに、入力チェックコンポーネント740は、対象宛先の有効性チェック、すなわち、メッセージが、対応するサブネット上でアクティブである計算ユニットを対象としているかどうかのチェックを行うことができる。
入力チェックを正常に通過した場合、それぞれの入力ブロック720のメッセージは、メッセージングコンポーネント61によって更に処理されてもよく、そして、対応するメッセージは、誘導プールコンポーネント731の誘導プールの対応するキューに加えられてもよい。メッセージングコンポーネント61の誘導プールコンポーネント731は、入力チェックコンポーネント740を正常に通過し、かつ、それに応じて更なる処理のためにメッセージングコンポーネント61によって受け入れられた入力ブロックおよび入力メッセージを受信する。
【0068】
一般に、メッセージングコンポーネント61は、イングレスメッセージ、シグナリングメッセージおよびサブネット間メッセージを適宜誘導プールコンポーネント731に入れることによって、入力ブロック720を前処理する。サブネットストリーム中のシグナリングメッセージは、パージ(消去)可能な出力キューのメッセージの確認として扱われる。
本実施例では、誘導プールコンポーネント731は、サブネット-ユニット間キューSNA-B1、SNC-B1、SNA-B2、及びSNC-B2、並びにユーザ-ユニット間キューU-B1、及びU-B2を含む。
【0069】
これらの前処理ステップに続いて、メッセージングコンポーネント61は、1実行サイクルの間に可能な限り多くの誘導プールを実行するために実行コンポーネント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への出力メッセージを示す。
【0070】
出力キューコンポーネント733は、例えば図6に示した認証コンポーネント65aによって認証され、他のコンポーネントによって伝播されるサブネットごとの出力ストリームのセットを形成することによって、結果の出力メッセージの出力キューを後処理する。本実施例では、サブネットごとの出力ストリームSNB-SNA、SNB-SNC、及びSNB-Uが提供される。
それゆえ、メッセージングコンポーネント61は、それぞれのサブネットの計算ユニットの状態/ユニット状態、本実施例ではサブネットSNBの計算ユニットB1及びB2の状態を記憶するように構成される状態記憶コンポーネント732を更に含む。対応するユニット状態は、各計算ユニットのワーキングメモリである。
【0071】
メッセージングコンポーネント61では、システム状態の特定の部分を決定論的に変化させることが重要となる。各ラウンドにおいて、実行コンポーネント61は、それぞれの計算ユニットの状態を読み出して更新することにより誘導プールから特定のメッセージを実行し、そして、実行された計算ユニットの送信したい送信メッセージを返す。これらの送信メッセージ、言い換えると出力メッセージは、当初、ネットワークの計算ユニット間のユニット間メッセージを含む出力キューコンポーネント733に入る。同じサブネットの計算ユニット間のサブネット内メッセージは、それぞれのサブネット内部でルーティングされて分配される一方、サブネット間メッセージは、サブネット-宛先によってソートされた出力ストリームにルーティングされる。
さらに、どのメッセージが処理されたかをシステムの残りの部分に知らせるために、実施形態に従って2つの状態が維持され得る。第1の状態は、サブネット間メッセージのために、そして、第2の状態は、イングレスメッセージのために維持され得る。
【0072】
以下では、メインネットプロトコルクライアント41とサブネットプロトコルクライアント42との間のやり取りについて、より詳しく説明する(図4を参照)。メインネットプロトコルクライアント41は、サブネットのための構成情報を含んだ多数のレジストリを管理する。これらのレジストリはメインネット上の計算ユニットによって実装され、そして、全てのノードがメインネットに参加していることから、これらのレジストリへのアクセスは、単なる状態の読み取り操作によって実現することができる。
すなわち、サブネットコンポーネントリーダー、図6の610(メインネットリーダー)は、実際にはメインネットプロトコルクライアント41のサブコンポーネントであってもよく、そのため、このコンポーネントとのやり取りは、メインネットクライアントおよびサブネットクライアントが動作する2つの分離された環境間の相互作用を生じさせる。
さらに、全てのノードがメインネットに参加していることから、サブネットよりもはるかに規模が大きく、そのためメッセージが全てのノードに広がるにはより時間がかかる。
【0073】
図8は、本発明の一実施形態に係る計算ユニット800をより詳細に示す図である。
計算ユニット800は、入力キュー801、出力キュー802、アプリケーション状態803、及びシステム状態804を含む。
【0074】
図9は、本発明の実施形態に係る分散ネットワークにおけるブロックの作成を示す図である。ブロックは、特に、図7に示した入力ブロック720であってもよい。入力ブロック720は、コンセンサスプロトコル、特にローカルサブネットコンセンサスプロトコルを実行するコンセンサスコンポーネント63によって作成される。
この例示的な実施形態では、3つの入力ブロック901、902、及び903が示されている。ブロック901は、複数のトランザクション、すなわちトランザクションtx1.1、tx1.2および、場合によってはドットで示される更なるトランザクションを含む。ブロック902はまた、複数のトランザクション、すなわちトランザクションtx2.1、tx2.2および、場合によってはドットで示される更なるトランザクションを含む。ブロック903はまた、複数のトランザクション、すなわちトランザクションtx3.1、tx3.2および、場合によってはドットで示される更なるトランザクションを含む。入力ブロック901、902、及び903は、一緒に繋がれる。より詳しくは、ブロックの各々は、前のブロックのブロックハッシュを含む。これにより、現在のブロックが前のブロックと暗号的に結び付けられる。
【0075】
実施形態によれば、トランザクションは、サブネット間メッセージ、イングレスメッセージ、およびシグナリングメッセージであってもよい。
実施形態によれば、入力ブロック901、902、及び903は、プルーフ・オブ・ステークコンセンサスプロトコルによって作成されてもよい。
しかし、コンセンサスコンポーネントによって生成された入力ブロックは、実施形態に従って一緒に繋がれる必要がないことに留意されたい。むしろ、受信したメッセージの処理順序についてサブネットのノード間で何らかの合意を得るための任意のコンセンサスプロトコルを、実施形態に従って使用することができる。
【0076】
図10は、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント1000をより詳細に示す図である。ネットワーキングコンポーネント1000は、例えば、図6に示されたネットワーキングコンポーネント64のより詳しい実施形態であってもよい。ネットワーキングコンポーネント1000は、ノード間通信を行うように構成されたユニキャストコンポーネント1010、サブネット内通信を行うように構成されたブロードキャストコンポーネント1020、及びサブネット間通信を行うように構成されたクロスネットコンポーネント1030を含む。クロスネットコンポーネント1030は、計算ユニットのサブネット割り当てをネットワーク構成データとして記憶してもよい。
【0077】
ここで図11を参照すると、例えば図1のネットワーク100の、本発明の実施形態に係るネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、コンピューティング機能を実行し得るコンピューティングノードを確立し、それゆえ、一般にコンピューティングシステムまたはコンピュータとして実施され得る。ネットワークノード10は、例えば、サーバコンピュータであってもよい。ネットワークノード10は、サブネット間通信およびコンセンサスプロトコル、特にプルーフ・オブ・ステークコンセンサスプロトコルを実行するためのコンピュータ実装された方法を実行するように構成されてもよい。ネットワークノード10は、数々の他の汎用の又は専用のコンピューティングシステム環境または構成で動作することが可能である。
【0078】
ネットワークノード10は、プログラムモジュールなどのコンピュータシステム実行可能な命令がコンピュータシステムによって実行されるという一般的な文脈で説明され得る。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象的なデータ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれてもよい。ネットワークノード10は、汎用コンピューティングデバイスの形態で示される。ネットワークノード10のコンポーネントは、1つ以上のプロセッサまたは処理装置1115と、システムメモリ1120と、およびシステムメモリ1120を含む様々なシステムコンポーネントをプロセッサ1115に結合するバス1116と、を含んでもよいが、これらに限定されるものではない。
【0079】
バス1116は、メモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む、幾つかのタイプのバス構造のうちの何れか1つまたは複数を示す。例として、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、および周辺機器相互接続(PCI)バスが含まれる。
【0080】
ネットワークノード10は、典型的に、様々なコンピュータシステム可読媒体を含む。そのような媒体は、ネットワークノード10によってアクセス可能な任意の利用可能な媒体であってよく、揮発性および不揮発性の媒体の両方、着脱可能および着脱不可能な媒体の両方を含む。
システムメモリ1120は、ランダムアクセスメモリ(RAM)1121及び/又はキャッシュメモリ1122などの揮発性メモリの形式のコンピュータシステム可読媒体を含むことができる。ネットワークノード1110は、他の着脱可能/着脱不可能な、揮発性/不揮発性のコンピュータシステム記憶媒体を更に含んでもよい。例としてのみであるが、ストレージシステム1123は、着脱不可能な不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)からの読み出しおよびそれへの書き込みのために提供され得る。また、図示しないが、着脱可能な不揮発性の磁気ディスク(例えば、「フロッピーディスク」)からの読み出しおよびそれへの書き込みのための磁気ディスクドライブ、および、CD-ROM、DVD-ROM、又は他の光学媒体などの着脱可能な不揮発性の光ディスクからの読み出し又はそれへの書き込みのための光ディスクドライブを設けることが可能である。そのような場合、各々は、1つ以上のデータメディアインターフェースによってバス1116に接続することができる。以下に更に示され、説明されるように、メモリ1120は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含んでもよい。
【0081】
プログラムモジュール1131のセット(少なくとも1つ)を有するプログラム/ユーティリティ1130は、例として、限定ではなく、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ1120に記憶されてもよい。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータの各々またはそれらの幾つかの組み合わせは、ネットワーキング環境の実装を含んでもよい。プログラムモジュール1131は、一般に、本明細書に記載される本発明の実施形態の機能および/または方法を実行する。プログラムモジュール1131は、分散ネットワークにおいてコンセンサスプロトコルを含むサブネット間通信を実行するためのコンピュータ実装された方法の1つまたは複数のステップを、例えば上述した方法の1つまたは複数のステップを、特に実行することができる。
【0082】
ネットワークノード10は、ディスプレイ1118と同様に、キーボードまたはポインティングデバイスなどの1つ以上の外部デバイス1117と、また通信することができる。このような通信は、入力/出力(I/O)インターフェース1119を介して行うことができる。さらに、ネットワークノード10は、ネットワークアダプタ1141を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、及び/又は公衆ネットワーク(例えば、インターネット)などの1つ又は複数のネットワーク40と通信することが可能である。実施形態によれば、ネットワーク1140は、特に、複数のネットワークノード10を含む分散ネットワーク、例えば図1のようなネットワーク100であってもよい。図に示すように、ネットワークアダプタ1141は、バス1116を介してネットワークノード10の他のコンポーネントと通信する。図示しないが、他のハードウェアおよび/またはソフトウェアコンポーネントをネットワークノード10と組み合わせて使用できることを理解されたい。
【0083】
図12aは、本発明の実施形態に係る複数のサブネットを含む分散ネットワークを実行するためのコンピュータ実装された方法の処理ステップを含むフローチャート1201を示す。
図12bは、このような分散ネットワークにおいてサブネット間通信を実行するためのコンピュータ実装された方法の処理ステップを含むフローチャート1202を示す。分散ネットワークは、例えば、図1に示すようなネットワーク100として実施することができる。
【0084】
図12aを参照すると、ステップ1210において、複数のサブネットの各サブネットは、そのノード上で計算ユニットのセットを実行する。計算ユニットの各々は、それ自身のユニット状態を含む。
ステップ1220において、ネットワークは、それぞれのサブネットを渡って(越えて)計算ユニットのセットを複製する。
図12bを参照すると、ステップ1230において、送信サブネットは受信サブネットにサブネット間メッセージを送信する。
ステップ1240において、受信サブネットは、サブネットコンセンサスプロトコルを実行する。これは、サブネットの全てのノードを関わらせてもよいし、サブネットのノードの選択されたサブセットのみを関わらせるようにしてもよい。
ステップ1250において、受信サブネットは、ローカルサブネットコンセンサスプロトコルによって、受信したサブネット間メッセージの選択および処理順序についてローカルサブネットにおけるコンセンサスに到達する。
ステップ1260において、受信サブネットは、ローカルサブネットプロトコルによって合意された選択および処理順序に従って、受信したサブネット間メッセージを処理する。
【0085】
図13は、本発明の実施形態に係る複数のサブネットを含む分散ネットワークを実行するためのコンピュータ実装された方法の処理ステップを含むフローチャート1300を示す。
ステップ1310において、分散ネットワークは、サブネット割り当てに従って、計算ユニットの各々をサブネットに割り当てる。
ステップ1320において、分散ネットワークは、それぞれのサブネットの各ノード上で、割り当てられた計算ユニットのサブセットを実行する。
ステップ1330において、分散ネットワークは、それぞれのネットワークを渡って、割り当てられた計算ユニットのサブセットを複製する。
ステップ1340において、分散ネットワークは、サブネット割り当てに基づき、計算ユニット間でユニット間メッセージを交換する。
【0086】
本発明の態様は、システム、特に複数のサブネットを含む分散ネットワーク、方法、および/またはコンピュータプログラム製品として実施することができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読の記憶媒体(または媒体)を含んでもよい。
コンピュータ可読記憶媒体は、命令実行装置によって使用するための命令を保持および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、またはこれらの任意の適切な組み合わせであってもよいが、これらに限定されるものではない。本明細書で使用するコンピュータ可読記憶媒体は、それ自体が、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して伝送される電気信号などのように、一過性の信号であると解釈されるものではない。
【0087】
本明細書に記載されたコンピュータ可読プログラム命令は、ネットワーク、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークを介して、コンピュータ可読記憶媒体または外部コンピュータもしくは外部記憶デバイスからそれぞれの計算/処理装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各計算/処理装置内のネットワークアダプタカードまたはネットワークインターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、そして、そのコンピュータ可読プログラム命令をそれぞれの計算/処理装置内のコンピュータ可読記憶媒体に格納するために転送する。
【0088】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語、を含む1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれであってもよい。
本発明の態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書で説明される。
【0089】
本発明の実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに、マシンを作成するように提供されてもよい。具体的には、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/またはブロック図のブロックに規定された機能/行為を実行するための手段を作成するように提供されてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能なデータ処理装置、および/または他の装置に特定の方法で機能するように指示することができるコンピュータ可読記憶媒体にまた記憶されてもよい。そうした場合、記憶は、その中に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図のブロックに規定された機能/行為の態様を実行する命令を含む製造品を含むように行われる。
【0090】
コンピュータ可読プログラム命令は、コンピュータ実装されたプロセスを作成するためにコンピュータ、他のプログラム可能な装置、または他の装置上で実行される一連の動作ステップ、を実施するように、つまり、コンピュータ、他のプログラム可能な装置、または他の装置上で実行される命令が、フローチャートおよび/またはブロック図のブロックに規定された機能/行為を実行するように、コンピュータ、他のプログラム可能なデータ処理装置、または他の装置上にまた読み込まれてもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるネットワーク、システム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示すものである。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能(複数も可)を実施するための1つまたは複数の実行可能な命令からなる、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替的な実施態様では、ブロックに記された機能は、図に記された順序とは異なる順序で実行される場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行される場合もあれば、機能によっては逆の順序で実行される場合もあり得る。
本発明の好ましい実施形態が示され、説明されているが、本発明はこれに限定されるものではなく、以下の請求項の範囲内で他に様々に具体化し、実施することができることを明確に理解されたい。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12a
図12b
図13