(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-06
(54)【発明の名称】分散ネットワークにおける計算ユニットの移行
(51)【国際特許分類】
G06F 9/46 20060101AFI20231129BHJP
【FI】
G06F9/46 420A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023523328
(86)(22)【出願日】2020-12-21
(85)【翻訳文提出日】2023-02-22
(86)【国際出願番号】 EP2020087406
(87)【国際公開番号】W WO2022002427
(87)【国際公開日】2022-01-06
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521435190
【氏名又は名称】デフィニティ スティフトゥング
【氏名又は名称原語表記】DFINITY STIFTUNG
【住所又は居所原語表記】Genferstrasse 11, 8002 Zuerich Switzerland
(74)【代理人】
【識別番号】110002664
【氏名又は名称】弁理士法人相原国際知財事務所
(72)【発明者】
【氏名】カメニッシュ, ヤン
(72)【発明者】
【氏名】チェルッリ, アンドレア
(72)【発明者】
【氏名】デアラー, ダヴィッド
(72)【発明者】
【氏名】ドライヴェールズ, マヌ
(72)【発明者】
【氏名】カシツィン, ロマン
(72)【発明者】
【氏名】ウィリアムズ, ドミニク
(57)【要約】
本発明の第1の態様の実施形態では、分散ネットワークを動作させるコンピュータ実装方法が提供される。分散ネットワークは、レプリケート計算クラスタとして具体化された複数のサブネットを備える。本方法は、複数のサブネットのうちの第1のサブネットから、複数のサブネットのうちの第2サブネットに計算ユニットを移行するステップをさらに含む。その移行するステップは、第1のサブネットおよび第2サブネットに、移行される移行計算ユニットとして、第1サブネットの計算ユニットを伝達することを含む。移行するステップは、第1サブネットから第2サブネットに移行計算ユニットを転送するステップと、第2サブネット上に移行計算ユニットをインストールするステップと、第2サブネット上で移行計算ユニットを起動して実行するステップと、をさらに含む。本発明のさらなる態様は、対応する分散ネットワーク、ノード、コンピュータプログラム製品、およびソフトウェアアーキテクチャに関する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
分散ネットワークを動作させるコンピュータ実装方法であって、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットの各々は1つ以上の割り当てノードを含み、前記方法は、
一連の計算ユニットを実行するステップと、
サブネット割り当てにしたがって前記一連の計算ユニットの各々を前記複数のサブネットのうちの1つに割り当てるステップであって、それにより、前記複数のサブネットの各々について前記一連の計算ユニットの割り当てサブセットを生成するステップと、
前記計算ユニットの前記割り当てサブセットを、前記複数のサブネットの各ノード上で実行するステップと、
前記計算ユニットの前記割り当てサブセットを、それぞれの前記サブネットにわたって複製するステップと、
前記複数のサブネットのうちの第1サブネットから前記複数のサブネットのうちの第2のサブネットに計算ユニットを移行するステップと、を含み、前記移行するステップは、
前記第1サブネットの計算ユニットを、前記第1サブネットおよび前記第2サブネットに、移行される移行計算ユニットとして伝達するステップと、
前記移行計算ユニットを前記第1サブネットから前記第2サブネットに転送するステップと、
前記移行計算ユニットを前記第2サブネットにインストールするステップと、
前記移行計算ユニットを前記第2サブネットにおいて起動して実行するステップと、を有するコンピュータ実装方法。
【請求項2】
前記第1サブネットが、移行する前記移行計算ユニットを準備するステップをさらに含む請求項1に記載のコンピュータ実装方法。
【請求項3】
前記方法は、特に、移行する前記移行計算ユニットを準備する前記ステップは、
移行時刻を予定するステップと、
前記移行時刻以降において、前記移行計算ユニット向けのメッセージの受諾を停止するステップと、
前記移行時刻以降において、前記移行計算ユニットの実行、および/または前記移行計算ユニットのユニット状態の変更を停止するステップと、をさらに含む請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記複数のサブネットは、連続した方法で複数のブロックを実行するように構成され、
前記移行時刻は、前記第1サブネットが処理する最後のブロックを画定するブロック高さである、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記移行計算ユニットを得るステップは、
前記第2サブネットの前記複数のノードが前記第1サブネットに参加するステップを含む請求項1から4までのいずれか1項に記載のコンピュータ実装方法。
【請求項6】
前記第2サブネットの前記複数のノードが前記第1サブネットにリスニングモードで受動的に参加し、前記リスニングモードは、特に、前記第1サブネットのすべてのアーチファクトを検証するステップを含むが、アーチファクト自体は生成しない、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記参加するステップは、前記移行時刻以前に実行される、請求項5または6に記載のコンピュータ実装方法。
【請求項8】
前記移行計算ユニットを前記第1サブネットから前記第2サブネットに転送する前記ステップは、前記第1サブネットのレプリカと前記第2サブネットのレプリカとの間で前記移行計算ユニットのノード内転送を実行するステップを有し、前記第1サブネットの前記レプリカおよび前記第2サブネットの前記レプリカは同一のノードで実行される、請求項5から7までのいずれか1項に記載のコンピュータ実装方法。
【請求項9】
前記移行計算ユニットを転送する前記ステップは、
前記第2サブネットの各々のノードが、前記第1サブネットのノードからメッセージングプロトコルを経由して前記移行計算ユニットを得るステップを有する、請求項1から4までのいずれか1項に記載のコンピュータ実装方法。
【請求項10】
前記計算ユニットを転送する前記ステップは、
前記第1サブネットの前記複数のノードが、前記移行計算ユニットを1つ以上のチャンクに分割するステップと、
前記移行計算ユニットの前記1つ以上のチャンクを、メッセージングプロトコルを経由して前記第1サブネットから前記第2サブネットに転送するステップと、を有する請求項9に記載のコンピュータ実装方法。
【請求項11】
前記メッセージングプロトコルは、状態同期プロトコルを包含する、請求項9に記載のコンピュータ実装方法。
【請求項12】
前記第1サブネットが、前記移行時刻以降において、前記移行計算ユニットへのメッセージを拒絶するステップであって、それにより、それぞれの前記メッセージの再送付を容易にするステップを含む、請求項1から11までのいずれか1項に記載のコンピュータ実装方法。
【請求項13】
前記第2サブネットの前記複数のノードは、前記移行計算ユニットの前記起動に同意するコンセンサスプロトコルを実行するステップをさらに有する、請求項1から12までのいずれか1項に記載のコンピュータ実装方法。
【請求項14】
前記分散ネットワークは、中央制御装置を備え、前記中央制御装置は前記移行計算ユニットの前記移行を起動するステップを実行するように構成される、請求項1から13までのいずれか1項に記載のコンピュータ実装方法。
【請求項15】
前記複数のノードの各々はノードマネージャを含み、前記ノードマネージャは、
前記制御装置レジストリを監視するステップと、
サブネットに参加するように前記複数のノードに指示するステップと、
前記計算ユニットを、前記第2サブネットに参加するノードのパーティションに移動するステップ、および/または
サブネットへの参加を停止するように複数のノードに指示するステップと、を有する請求項1から14までのいずれか1項に記載のコンピュータ実装方法。
【請求項16】
分散ネットワークを動作させるコンピュータ実装方法であって、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットの各々は1つ以上の割り当てノードを含み、前記方法は、
一連の計算ユニットを実行するステップと、
サブネット割り当てにしたがって前記一連の計算ユニットの各々を前記複数のサブネットのうちの1つに割り当てるステップであって、それにより、前記複数のサブネットの各々について前記一連の計算ユニットの割り当てサブセットを生成するステップと、
前記計算ユニットの前記割り当てサブセットを、前記複数のサブネットの各ノード上で実行するステップと、
前記複数のサブネットの前記複数のノードが、決定論的で複製される方法で、前記複数のサブネットにわたって複数の計算を実行するするステップと、
前記複数のサブネットのうちの第1サブネットから前記複数のサブネットのうちの既存のものではない第2のサブネットに計算ユニットを移行するステップと、を含み、前記移行するステップは、
前記第1サブネットの計算ユニットを、移行される移行計算ユニットとして、前記第1サブネットに伝達するステップと、
前記第1サブネットの前記複数のノードが、前記第2サブネットを開始するステップと、
前記第1サブネットの前記複数のノードおよび前記第2サブネットが、前記移行計算ユニットを、前記第1サブネットから前記第2サブネットに内部転送するステップと、
前記第1サブネットの前記複数のノードおよび前記第2サブネットが、前記移行計算ユニットを、前記第2サブネット上にインストールするステップと、
前記第1サブネットの前記複数のノードおよび前記第2サブネットが、前記移行計算ユニットを前記第2サブネット上で起動して実行するステップと、を有するコンピュータ実装方法。
【請求項17】
前記第1サブネットの一部分ではない前記第2サブネットの複数の追加ノードを追加するステップをさらに有する、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記第1サブネットの前記複数のノードを前記第2サブネットから削除するステップをさらに有する、請求項16または17に記載のコンピュータ実装方法。
【請求項19】
前記第1サブネットが、移行する移行計算ユニットを準備するステップをさらに含む、請求項16から18までのいずれか1項に記載のコンピュータ実装方法。
【請求項20】
移行時刻を予定するステップと、
前記移行時刻以降において、前記移行計算ユニット向けのメッセージの受諾を停止するステップと、
前記移行時刻以降において、前記移行計算ユニットの実行、および/または前記移行計算ユニットのユニット状態の変更を停止するステップと、をさらに有する請求項16から19までのいずれか1項に記載のコンピュータ実装方法。
【請求項21】
前記複数のサブネットは、連続した方法で複数のブロックを実行するように構成され、
前記移行時刻は、前記第1サブネットが処理する最後のブロックを画定するブロック高さである、請求項20に記載のコンピュータ実装方法。
【請求項22】
前記第2サブネットの前記複数のノードが、特にコンセンサスプロトコルを実行することで、前記移行計算ユニットの前記起動に同意するステップをさらに有する、請求項16から21までのいずれか1項に記載のコンピュータ実装方法。
【請求項23】
前記第1サブネットが、前記移行時刻以降に、前記移行計算ユニット向けのメッセージを拒絶するステップであって、それにより、それぞれの前記メッセージの再送付を容易にするステップを有する、請求項16から22までのいずれか1項に記載のコンピュータ実装方法。
【請求項24】
前記分散ネットワークは、中央制御装置を備え、前記中央制御装置は前記移行計算ユニットの前記移行を起動するステップを実行するように構成される、請求項16から13までのいずれか1項に記載のコンピュータ実装方法。
【請求項25】
前記複数のノードの各々はノードマネージャを含み、前記ノードマネージャは、
前記制御装置レジストリを監視するステップと、
サブネットに参加するように前記複数のノードを指示するステップと、
前記計算ユニットを、前記第2サブネットに参加する前記ノードのパーティションに移動するステップ、および/または
サブネットへの参加を停止するように複数のノードに指示するステップと、を有する請求項1から14までのいずれか1項に記載のコンピュータ実装方法。
【請求項26】
分散ネットワークであって、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットの各々は1つ以上の割り当てノードを含み、請求項1から25までのいずれか1項に記載のコンピュータ実装方法のそれぞれの前記ステップを実行するように構成されている分散ネットワーク。
【請求項27】
請求項26に記載の分散ネットワークのノードであって、請求項1から25までのいずれか1項に記載のコンピュータ実装方法へ参加するように構成されたノード。
【請求項28】
分散ネットワークを動作させるコンピュータプログラム製品であって、前記分散ネットワークは複数のサブネットを備え、プログラム命令が具体化されたコンピュータ可読記憶媒体と、複数のノードのうちの1つ以上で実行可能であり、前記複数のノードのうちの1つ以上において請求項1から25のいずれか1項に記載のコンピュータ実装方法を実行させる前記プログラム命令と、を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ネットワークを動作させる方法に関する。分散ネットワークは、複数のサブネットを備える。各サブネットは、複数のノードを含む。
【背景技術】
【0002】
さらなる態様は、対応する分散ネットワーク、分散ネットワークのノード、対応するコンピュータプログラム製品、および非一時的媒体上に符号化されたソフトウェアアーキテクチャに関する。
【0003】
分散ネットワークでは、複数のノードが分散して配置される。分散ネットワークの計算では、ソフトウェアとデータが複数のノードに分散される。ノードは計算リソースを構築し、分散ネットワークは分散計算技術を使用し得る。
【0004】
分散ネットワークの一例として、ブロックチェーンネットワークがある。ブロックチェーンネットワークは、複数のブロックからなり、合意に基づく電子台帳である。各ブロックは、複数のトランザクションおよびその他の情報からなる。さらに、各ブロックは前のブロックのハッシュを含むことで連鎖しているので、ブロックチェーンに書き込まれたすべてのトランザクションが永続的に変更不可能な記録として作成される。トランザクションは、例えば、スマートコントラクトとして知られる小規模なプログラムを含み得る。トランザクションがブロックチェーンに書き込まれるためには、ネットワークによる「検証」が必須である。言い換えれば、ネットワークノードは、ブロックチェーンに書き込まれるブロックにおいて同意を得る必要がある。このような同意は、さまざまなコンセンサスプロトコルで達成され得る。
【0005】
コンセンサスプロトコルの1つの形態として、プルーフオブワークコンセンサスプロトコルがある。一般に、プルーフオブワークコンセンサスプロトコルでは、コンセンサスプロトコルに参加する当事者に何らかの作業が必要とされ、通常、それはコンピュータによる処理時間に相当する。ビットコインなどのプルーフオブワークに基づく暗号通貨システムでは、計算集約型のパズルを解くことで、トランザクションを検証して新たなブロックを作成する。他の形態のコンセンサスプロトコルとして、プルーフオブステークコンセンサスプロトコルがある。このようなプルーフオブステークプロトコルは、時間を要するエネルギー集約型である計算が不要であるとの利点を有する。プルーフオブステークに基づくブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダム選択の組み合わせ、ならびにネットワークのそれぞれのノードのステークを通して選出される。暗号通貨とは別に、分散ネットワークは、さまざまな他のアプリケーションに使用され得る。特に、それらは分散型および分散計算能力およびサービスの提供に使用され得る。
【0006】
このように、機能が強化された分散ネットワークが必要とされている。
【発明の概要】
【課題を解決するための手段】
【0007】
したがって、本発明の1つの目的は、機能が強化された分散ネットワークを提供するところにある。
【0008】
本発明の第1の態様では、分散ネットワークを動作させるコンピュータ実装方法が提供される。分散ネットワークは複数のサブネットを備え、複数のサブネットの各々は1つ以上の割り当てノードを含む。本方法は、一連の計算ユニットを実行するステップと、サブネット割り当てにしたがって一連の計算ユニットの各々を複数のサブネットのうちの1つに割り当てるステップと、を含む。これにより、複数のサブネットの各々について一連の計算ユニットの割り当てサブセットを生成する。本方法は、計算ユニットの割り当てサブセットを、複数のサブネットの各ノード上で実行するステップと、決定論的で複製される方法で、複数のノードのサブネットワークにわたって計算を実行し、それによって実行状態のチェーンを通過するステップをさらに含む。本方法は、複数のサブネットのうちの第1サブネットから複数のサブネットのうちの第2のサブネットに計算ユニットを移行するステップをさらに含む。その移行するステップは、第1サブネットの計算ユニットを、第1サブネットおよび第2サブネットに、移行される移行計算ユニットとして伝達するステップを含む。移行するステップは、移行計算ユニットを第1サブネットから第2サブネットに転送するステップと、移行計算ユニットを第2サブネットにインストールするステップと、移行計算ユニットを第2サブネットにおいて起動して実行するステップと、をさらに含む。
【0009】
そのような具体化された方法は、複製される方法でサブネットを動作させる分散ネットワークに対して、動作の柔軟性を向上させる。いくつかの実施形態では、サブネットはまた、レプリケート計算クラスタとして示され得る。そのようなレプリケート計算クラスタでは、それぞれのサブネットに割り当てられた計算ユニットは、サブネットの各ノード上で実行され、サブネットにわたる複製を行うことで、同一の実行状態のチェーンを通過する。本発明の実施形態による方法は、1つのサブネットから他のサブネットへの計算ユニットの移行を可能にする。これは、特に、サブネットおよびそれらの割り当てノードの負荷および容量管理に関して、ネットワークの柔軟性を改善する。
【0010】
そのような分散ネットワークの実行状態は、サブネットの複数のノードによって合意されると、もはや削除できないことから不変であると見なされ得る。したがって、計算ユニットのそのような移行は、一見したところ、そのように複製される設定では直観に反するものとして観察されることがある。
【0011】
それにもかかわらず、本発明の発明者らは、そのような先入観を克服し、レプリケート計算クラスタ、またはサブネット間の計算ユニットの移行を可能にするレプリケート計算クラスタを形成するサブネットを有する分散ネットワークを設計した。
【0012】
一実施形態では、本方法は、第1サブネットが、移行する移行計算ユニットを準備するステップをさらに含む。
【0013】
さらなる実施形態では、本方法は、特に、移行する移行計算ユニットを準備するステップが、移行時刻を予定するステップを含み得る。移行時刻は、さまざまな方法で予定され得る。いくつかの実施形態では、それは中央制御装置により予定され得る。他の実施形態では、中央制御装置は、計算ユニットが移行されることを、それぞれのサブネット、特に、第1サブネットおよび第2サブネットに単に伝達し得る。いくつかの実施形態では、中央制御装置は、中央レジストリにおいて更新を行い得る。次に、第1サブネット、例えば、第1サブネットの計算ユニットマネージャは、レジストリの変化を観測し得、対応する移行時刻を予定し得る。移行時刻は、特に、移行計算ユニット向けのメッセージの受諾を停止する、および移行計算ユニットの実行を停止する、および/または移行時刻以降の移行計算ユニットのユニット状態を変更する時刻を画定する。言い換えれば、移行時刻以降において、それぞれの計算ユニットのユニット状態は固定され、言い換えれば、凍結され、もはや変更されない。そして、固定されたその状態を含む計算ユニットは、移行の準備が完了しているとみなし得る。
【0014】
一実施形態では、複数のサブネットは、連続してブロックを実行するように構成され、移行時刻は、第1サブネットが処理する最後のブロックを画定するブロック高さとなる。いくつかの実施形態では、ブロックは、非同期方式で処理され得るので、ブロック高さは、移行時刻としての暦上の特定の時刻をあらかじめ画定せず、むしろ特定のブロック高さに関する時刻を画定することに留意されたい。この点において、移行時刻という用語は、広い意味を有すると理解されるべきである。
【0015】
一実施形態では、移行計算ユニットを取得するステップは、第2サブネットの複数のノードが第1サブネットに参加するステップを含む。このことは、第2サブネットの複数のノードが、第1サブネットの計算ユニットを実行することを含み得る。第1サブネットに参加することで、第2サブネットの複数のノードは、第1サブネットの計算ユニット、特に移行計算ユニットのユニット状態または実行状態を観察し得る。参加するステップは、特に移行時刻の前に実施し得る。これにより、第2サブネットの複数のノードは、移行計算ユニットのユニット状態において、あらかじめ信頼を得ることが可能になる。さらに、それらにより移行計算ユニットの状態の一部の取得をあらかじめ開始し得ることから、ダウンタイムが低減される。このことは、効率的な転送を容易にする。
【0016】
一実施形態では、第2サブネットの複数のノードは、リスニングモードで第1サブネットに受動的に参加し得る。リスニングモードは、特に、第1サブネットのすべてのアーチファクトの検証を含むが、アーチファクト自体は生成しない。この点において、アーチファクトは、第1サブネットの複数のノード間で交換される任意の情報であり得る。一実施形態では、第2サブネットの複数のノードは、この第2サブネットの複数のタスクのサブセットだけを実行し得る。一例として、それらは、例えば、ブロックの提案および公証に参加しなくてもよいが、有効である場合には、各ブロックを検証し、それを実行し得る。
【0017】
一実施形態では、移行計算ユニットを第1サブネットから第2サブネットに転送するステップは、第1サブネットのレプリカと第2サブネットのレプリカとの間で移行計算ユニットのノード内転送を実行するステップを含み、第1サブネットのレプリカと第2サブネットのレプリカとは同一のノード上で実行される。
【0018】
レプリカは、ノード上で実行されて同一のサブネットに割り当てられる一連の計算ユニットにより形成される。
【0019】
このような実施形態では、第1サブネットに参加した第2サブネットの複数のノードは、2つのレプリカ、すなわち、第1サブネット用の第1レプリカと第2サブネット用の第2レプリカとを実行する。両方のレプリカが同一のノード上で実行されるので、それらは、同一の信頼されるドメイン内にあり、特に、受動レプリカであり得る第1レプリカとして、移行計算ユニットの状態を含む第1サブネットの計算ユニットの状態を観察する。そして、移行計算ユニットのこの状態は、ノードの中で、つまり、同一の信頼ドメインの中で、第1レプリカから第2レプリカに、したがって、第1サブネットから第2サブネットに転送され得る。
【0020】
一実施形態では、移行計算ユニットを転送するステップは、第2サブネットの各ノードが、メッセージングプロトコルを経由して第1サブネットのノードから移行計算ユニットを取得するステップを含む。
【0021】
このような実施形態では、第2サブネットの複数のノードは、第1サブネットの一部ではない。言い換えれば、第1サブネットに参加していない。移行高さに達すると、第1サブネットは移行する移行計算ユニットを準備する。これは、特に、第1サブネットの複数ノードが移行計算ユニットに、例えば共同署名を実行するステップを含み、それにより、移行計算ユニットの状態を移行ブロック高さで証明することを含み得る。次いで、認定された移行計算ユニットは、メッセージングプロトコルを経由して第2サブネットの複数のノードに伝達され得る。
【0022】
一実施形態では、メッセージングプロトコルを経由して計算ユニットを転送するステップは、第1サブネットのノードが、移行計算ユニットを1つ以上のチャンクに分割するステップと、メッセージングプロトコルを経由して、第1サブネットから第2サブネットに移行計算ユニットの1つ以上のチャンクを転送するステップと、を含む。これは、特に帯域幅に関して、効率的な転送を容易にし得る。
【0023】
一実施形態では、メッセージングプロトコルは、第1サブネットの複数のノード上の移行計算ユニットと、第2サブネットの複数のノード上にインストールされた対応する移行計算ユニットと、の間の状態を同期させる状態同期プロトコルを含み得る。
【0024】
一実施形態では、第1サブネットは、移行計算ユニットの移行時刻または移行ブロック高さメッセージ以降において、拒絶し得る。このことは、メッセージの送信者が、それぞれのメッセージの再送付を行うことを容易にする。
【0025】
一実施形態では、第2サブネットの複数のノードは、特に、コンセンサスプロトコルを実行することで、移行計算ユニットの起動に合意し得る。そのようなステップは、第2サブネットの十分な数のノードが利用可能な計算ユニットを有すること、したがって、計算ユニットが合意後に動作可能になり得ることを保証し得る。さらに、これは、対応するノードが同時に移行計算ユニットの実行を開始することを保証し得るので、決定論的な処理を容易にする。
【0026】
本発明の第2の態様の実施形態では、分散ネットワークを動作させる他のコンピュータ実装方法が提供される。分散ネットワークは、複数のサブネットを備え、複数のサブネットの各々は、1つ以上の割り当てノードを備える。本方法は、一連の計算ユニットを実行するステップと、サブネット割り当てにしたがって複数のサブネットのうちの1つに計算ユニットの各々を割り当てるステップとを含み、それにより、サブネットの各々について一連の計算ユニットの割り当てサブセットを作成する。本方法は、複数のサブネットの各ノード上で、計算ユニットの割り当てサブセットを実行するステップと、複数のサブネットのノードが、決定論的で複製される方法で、複数のサブネットにわたって計算を実行するステップとをさらに含む。コンピュータ実装方法は、複数のサブネットのうちの第1サブネットから複数のサブネットのうちの第2サブネットに計算ユニットを移行するステップを含む。この実施形態では、第2サブネットは既存のものではなく、すなわち、新たな第2サブネットの作成が必須である。その移行するステップは、第1サブネットの計算ユニットを、移行される移行計算ユニットとして第1サブネットに伝達するステップを含む。その伝達に応答して、第1サブネットの複数のノードは、新たな第2サブネットを生成して開始する。次いで、移行計算ユニットは、第1サブネットから第2サブネットへ内部で、すなわち、レプリカ間のそれぞれのノードの中で転送される。これは、この転送がそれぞれのノードの同一の信頼されるドメイン内で行われるという利点を有する。さらなるステップは、第1サブネットおよび第2サブネットの複数のノードが、第2サブネット上に移行計算ユニットをインストールするステップと、第1サブネットおよび第2サブネットの複数のノードが、第2サブネット上で移行計算ユニットを起動して実行するステップとを含む。移行計算ユニットを起動して実行する前に、特にコンセンサスプロトコルが起動に合意するステップを実行し得る。第2の態様のさらなる実施形態では、追加の複数のノードが、第1サブネットの一部ではなくて第2サブネットに追加され得る。これらの追加の複数のノードは、例えば、再開可能性(Resumability)または状態リカバープロトコルを経由して、移行計算ユニットの状態をキャッチアップする可能性がある新規ノードである。
【0027】
さらなるステップは、第2サブネットから第1サブネットの複数のノードを削除するステップを含み得る。これにより、移行計算ユニットは、第1サブネットの複数のノードから他の新たなノードセットに完全に移行される。
【0028】
いくつかの実施形態では、複数の計算ユニットは、前述された方法および後述される方法で、第1サブネットから第2サブネットに1つずつ移行され得る。
【0029】
本発明の他の態様の一実施形態では、本発明の第1の態様の方法ステップを実行するように構成された分散ネットワークが提供される。
【0030】
本発明の他の態様の一実施形態では、本発明の第2の態様の方法ステップを実行するように構成された分散ネットワークが提供される。
【0031】
本発明の他の態様の一実施形態では、分散ネットワークのノードが提供される。
【0032】
本発明の他の態様の一実施形態では、分散ネットワークを動作させるコンピュータプログラム製品が提供される。コンピュータプログラム製品は、それとともに具体化されたプログラム命令を有するコンピュータ可読記憶媒体を備え、プログラム命令は、分散ネットワークの複数のノードのうちの1つ以上で実行可能であり、複数のノードのうちの1つ以上で本発明の方法態様のステップを実行する。
【0033】
本発明の他の態様の一実施形態では、分散ネットワークのノードを動作させるコンピュータプログラム製品が提供される。
【0034】
本発明の他の態様の一実施形態では非一時的コンピュータ可読媒体上に符号化されたソフトウェアアーキテクチャが提供される。ソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノードを動作させるように構成される。符号化されたソフトウェアアーキテクチャは、複数のノードのうちの1つ以上が実行可能なプログラム命令を備えており、複数のノードのうちの1つ以上で本発明の方法の態様のステップを備える方法を実行する。
【0035】
本発明の一態様の特徴および利点は、必要に応じて本発明の他の態様に適用し得る。
【0036】
他の有用な実施形態は、従属請求項および以下の説明に列記されている。
【0037】
以下の詳細な説明から、本発明はよりよく理解され、上記以外の目的が明らかになるであろう。そのような説明は、添付の図面を参照して行われる。
【図面の簡単な説明】
【0038】
【
図1】
図1は、本発明の一実施形態による分散ネットワークの例示的なブロック図である。
【
図2】
図2は、ネットワークのノード上で実行される計算ユニットをより詳細に示す図である。
【
図3a】
図3aは、移行計算ユニットを第1サブネットから第2サブネットに移行する方法の複数のステップのうちの1つを示す図である。
【
図3b】
図3bは、移行計算ユニットを第1サブネットから第2サブネットに移行する方法ステップの1ステップを示す図である。
【
図3c】
図3cは、移行計算ユニットを第1サブネットから第2サブネットに移行する方法ステップの1ステップを示す図である。
【
図3d】
図3dは、移行計算ユニットを第1サブネットから第2サブネットに移行する方法ステップの1ステップを示す図である。
【
図3e】
図3eは、移行計算ユニットを移行させる他のメカニズムを示す図である。
【
図4a】
図4aは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図4b】
図4bは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図4c】
図4cは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図4d】
図4dは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図4e】
図4eは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図4f】
図4fは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図4g】
図4gは、計算ユニットを第1サブネットから既存ではない第2サブネットに移行するコンピュータ実装方法のステップの1ステップを示す図である。
【
図5】
図5は、本発明の一実施形態による、ネットワークの各ノード上で実行される主要なプロセスを示す図である。
【
図6】
図6は、サブネットプロトコルクライアントのプロトコルコンポーネントの概略ブロック図である。
【
図7】
図7は、メッセージングプロトコルおよびコンセンサスプロトコルならびに関連するコンポーネントのワークフローを例示的に視覚化した図である。
【
図8】
図8は、サブネット間およびサブネット内メッセージの交換に関与する主要なレイヤーを図示するレイヤーモデル図である。
【
図9】
図9は、本発明の例示的な実施形態による、コンセンサスコンポーネントの入力ブロックの作成を示す図である。
【
図10】
図10は、計算ユニットの移行のタイミング図である。
【
図12】
図12は、ネットワークコンポーネントのより詳細図である。
【
図13】
図13は、状態マネージャコンポーネントのより詳細な実施形態を示す図である。
【
図14】
図14は、分散ネットワークを実行するコンピュータ実装方法の方法ステップを含むフローチャートである。
【
図15】
図15は、計算ユニットを第1サブネットから第2サブネットに移行するコンピュータ実装方法の方法ステップを含むフローチャートである。
【
図16】
図16は、計算ユニットを第1サブネットから第2サブネットに移行する他のコンピュータ実装方法の方法ステップを含むフローチャートである。
【
図17】
図17は、本発明の実施形態によるノードの例示的な実施形態を示す図である。
【発明を実施するための形態】
【0039】
最初に、本発明の実施形態のいくつかの態様全般および用語を紹介する。
【0040】
いくつかの実施形態では、分散ネットワークは、分散方式で配置された複数のノードを備える。このような分散ネットワークの計算では、ソフトウェアとデータが複数のノードにわたって分散される。複数のノードは計算リソースを構築し、分散ネットワークは、特に分散計算技術を使用し得る。
【0041】
いくつかの実施形態では、分散ネットワークは、特にブロックチェーンネットワークとして具体化され得る。「ブロックチェーン」という用語には、電子的なコンピューターベースの分散型台帳のすべての形態を含み得る。いくつかの実施形態では、ブロックチェーンネットワークは、プルーフオブワークブロックチェーンネットワークとして具体化され得る。他の実施形態では、ブロックチェーンネットワークは、プルーフオブステークブロックチェーンネットワークとして具体化され得る。
【0042】
計算ユニットは、分散ネットワークのノード上で実行されており、それ自体のユニット状態を有するソフトウェアの一部として定義され得る。ユニット状態は、実行状態とも称され得る。複数のサブネットの各々は、一連の計算ユニット、特にそれらの計算ユニットの状態を、サブネットにわたって複製するように構成される。その結果、それらの計算ユニットは、それらが誠実に振る舞う限り、常に、ユニット状態または実行状態の同一のチェーンを通過する。計算ユニットは、計算ユニットのコードと、計算ユニットのユニット状態または実行状態と、を含む。
【0043】
メッセージングプロトコルは、ユニット間メッセージの交換を管理するプロトコルとして定義され得る。特に、メッセージングプロトコルは、それぞれのサブネット割り当てを使用して、送信サブネットから受信サブネットにユニット間メッセージを送るように構成され得る。サブネット割り当ては、メッセージングプロトコルに、それぞれの通信の計算ユニットのそれぞれの位置またはサブネットを提示する。
【0044】
図1に、本発明の一実施形態による分散ネットワーク100の例示的なブロック図を示す。分散ネットワーク100は、ネットワークノード10としても示され得る複数のノード10を備える。複数のノード10は、複数のサブネット11に分散されている。
図1の例では、SNA、SNB、SNC、およびSNDで示される4つのサブネット11が提供される。複数のサブネット11の各々は、それぞれのサブネット11の各ノード10上で1連の計算ユニットを実行するように構成される。いくつかの実施形態では、計算ユニットは、ソフトウェアの一部として理解される。特に、それ自体のユニット状態を含むか、またはそれを有するソフトウェアの一部として、または言い換えれば、実行状態として、理解される。ネットワーク100は、それぞれのサブネット11内のサブネット内通信を行う。特に、同一のサブネットに割り当てられた計算ユニット間で交換されるサブネット内ユニット間メッセージの通信を行う通信リンク12を備える。さらに、ネットワーク100は、サブネット11のうちの異なるサブネット間のサブネット間通信を行う通信リンク13を備える。この通信リンク13は、特に、異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージの通信を行う。したがって、通信リンク12は、サブネット内またはピアツーピア(P2P)通信リンクとしても示され得る。また、通信リンク13は、サブネット間またはサブネットツーサブネット(SN2SN)通信リンクとしても示され得る。
【0045】
いくつかの実施形態では、ユニット状態は、計算ユニットが使用するすべてのデータまたは情報、特に、計算ユニットが変数に格納するデータだけでなく、計算ユニットがリモートコールから取得するデータも含むと理解される。ユニット状態は、特に、それぞれのノードのそれぞれのメモリ位置における格納位置を表し得る。いくつかの実施形態では、これらのメモリ位置の内容は、計算ユニットの実行中の任意に与えられた時点でのユニット状態と称される。計算ユニットは、特に、ステートフル計算ユニットとして具体化し得る。すなわち、計算ユニットは、以前の事象またはユーザーの対話を記憶する実施形態にしたがって設計される。本発明のいくつかの実施形態によれば、サブネット11は、一連の計算ユニットを、それぞれのサブネット11にわたって複製するように構成される。より具体的には、サブネット11は、一連の計算ユニットのユニット状態を、それぞれのサブネット11にわたって複製するように構成される。
【0046】
ネットワーク100は、特に、プルーフオブステークブロックチェーンネットワークであり得る。プルーフオブステーク(PoS)は、ブロックチェーンネットワークが、ブロックチェーンの次のブロックの作成を許可されるノードについての分散コンセンサスに到達する方法を表す。PoS方式は、重み付けされたランダム選択を使用し得る。それにより、個々のノードの重みは、特に、それぞれのノードの資産(「ステーク」)に依存して決定され得る。
【0047】
図2に、ネットワーク100のノード10上で実行される計算ユニット15の詳細を示す。ネットワーク100は、ネットワーク100上で実行されている計算ユニットの各々を、複数のサブネットのうちの1つ、この例では、サブネット割り当てにしたがって、サブネットSNA、SNB、SNC、およびSNDのうちの1つに割り当てるように構成される。分散ネットワーク100のサブネット割り当ては、サブネットSNA、SNB、SNC、およびSNDの各々について、一連の計算ユニット全体の割り当てサブセットを作成する。より具体的には、
図2の左側201は、
図1のサブネットSNAのノード10を示す。分散ネットワーク100のサブネット割り当てでは、4つの計算ユニット15のサブセットをサブネットSNAに割り当てている。より具体的には、計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4のサブセットを割り当てている。計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4の割り当てサブセットは、サブネットSNAのそれぞれのノード10上で実行される。さらに、計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4の割り当てサブセットは、計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4の各々がユニット状態の同一のチェーンを通過するように、サブネットSNA全体にわたって複製される。これは、特に、サブネットSNAのノード10の各々に対して、計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4のユニット状態の空間において能動的に複製を行うことで実行され得る。
【0048】
さらに、
図2の右側202に、
図1のサブネットSNBのノード10を示す。分散ネットワーク100のサブネット割り当ては、サブネットSNBに2つの計算ユニット15のサブセット、より具体的には計算ユニットCU
B1およびCU
B2の割り当てサブセットを割り当てている。計算ユニットCU
B1およびCU
B2の割り当てサブセットは、サブネットSNBのそれぞれのノード10上で実行される。さらに、計算ユニットCU
B1およびCU
B2の割り当てサブセットは、サブネットSNB全体にわたって複製され、計算ユニットCU
B1およびCU
B2の各々は、例えば、前述のように、ユニット状態の空間において能動的に複製を行うことで、同一のユニット状態または実行状態を通過する。
【0049】
図2に、サブネットSNAとサブネットSNBとの間の計算ユニットの移行の一般的な例を示す。より具体的には、サブネットSNAの複数のノードはすでに4つの計算ユニットの実行が必須である。しかし、サブネットSNBは2つの計算ユニットを有するだけであり、分散ネットワークは、例えば、負荷の均等化または他の理由により、計算ユニットCU
A4をサブネットSNAからサブネットSNBへ移行することを決定し得る。
【0050】
図1に示すように、分散ネットワーク100は、中央制御装置CCU20を備える。中央制御装置20は、中央レジストリ21を備え、ネットワークの複数のノードにネットワーク制御情報を提供し得る。中央制御装置20は、移行される移行計算ユニットCU
A4の移行を起動し得る。これは、例えば、中央レジストリ21を更新して移行計算ユニットCU
A4を移行状態に設定することで行い得る。サブネットSNA、SNB、SNC、およびSNDの計算ユニットマネージャ(明示されていない)は、中央レジストリ21におけるそのようなレジストリ変化を検出し、計算ユニットCU
A4の移行を起動し得る。いくつかの実施形態では、中央制御装置は、サブネットにより構築され得る。
【0051】
図10を参照すると、本発明の実施形態による計算ユニットのそのような移行のタイミング図が示されている。最初に、中央制御装置20は、それぞれの移行計算ユニットを、レジストリ21の移行状態に設定し得る。
【0052】
ブロック高さNに対応する時刻tNにおいて、第1サブネットSNA、例えば、第1サブネットSNAの計算ユニットマネージャは、計算ユニットCUA4の移行を示すまたは伝達する中央レジストリ21の変化を観測し得る。次に、計算ユニットマネージャは、移行時刻または移行ブロック高さを予定するまたは起動し得る。この例では、移行時刻tN+Kは移動ブロック高さN+Kに対応する。移行時刻は、第1サブネットSNAによって処理される最後のブロックのブロック高さを画定するが、移行計算ユニットは、まだ第1サブネットSNAの一部分である。
【0053】
図1に戻ると、ネットワーク100は、サブネット割り当てに基づいて、メッセージングプロトコルを経由してネットワークの計算ユニット間でユニット間メッセージを交換するように構成されている。いくつかの実施形態によれば、分散ネットワークは、特に、メッセージングプロトコルを経由してサブネットSNA、SNB、SNC、およびSND間でサブネット間メッセージ16を交換するように構成され得る。サブネット間メッセージ16は、特に、サブネット割り当てにしたがって異なるサブネットに割り当てられた計算ユニット間で交換されるサブネット間のユニット間メッセージ16aとして具体化され得る。例えば、分散ネットワーク100は、サブネットSNA上で実行する送信計算ユニットとしての計算ユニットCU
A1と、サブネットSNB上で実行する受信計算ユニットとしての計算ユニットCU
B2と、の間でユニットツーユニットメッセージM1、16aを交換するように構成され得る。さらに、サブネット間メッセージ16は、伝達メッセージ16bとして具体化され得る。伝達メッセージ16bは、ユニットツーユニットメッセージの受諾または受信を肯定応答するように適合された肯定応答メッセージ(ACK)、または、例えば、送信不良を示すユニットツーユニットメッセージの受諾(拒否に対応する)を肯定応答しないように適合された非肯定応答メッセージ(NACK)を含み得る。
【0054】
ネットワーク100は、特に、計算ユニット10のサブネット割り当てをネットワーク構成データとして、例えば、
図12に示されるネットワーキングコンポーネント1200、特にクロスネットコンポーネント1230に格納するように構成され得る。この情報は、中央レジストリにも格納し得る。
【0055】
さらなる実施形態では、ネットワーク100は、メッセージングプロトコルおよびコンセンサスプロトコルを経由してサブネット間メッセージ16を交換するように構成され得る。コンセンサスプロトコルは、それぞれの受信サブネットにおけるサブネット間メッセージ16の選択および/または処理順序についてコンセンサスに達するように構成され得る。例えば、サブネットSNBを参照すると、サブネットSNA、SNC、およびSNDからサブネット間メッセージ16を受信する。コンセンサスプロトコルは、これらのサブネット間メッセージ16を受信して処理し、あらかじめ定義されたコンセンサスアルゴリズムまたはコンセンサスメカニズムを実行することで、受信したサブネット間メッセージ16の選択および/または処理順序について合意を得る。
【0056】
次に、
図3aから
図3dを参照して、計算ユニットを第1サブネットから第2サブネットに移行するコンピュータ実装方法を説明する。より具体的には、
図3aから
図3dまでには、第1サブネットSNAのノードN1、N2、およびN3の個数と第2サブネットSNBのノードN4、N5、およびN6の個数とを示す。第1サブネットSNAは、4つの計算ユニットの割り当てサブセット、より具体的には計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4を実行するように構成される。第2サブネットSNBは、2つの計算ユニットの割り当てサブセット、より具体的には計算ユニットCU
B1およびCU
B2を実行するように構成される。割り当てられた一連の計算ユニットのそれぞれをノード上で実行して、それぞれのノード上のサブセットのレプリカを形成する。すなわち、複数のノードN1、N2、およびN3上のレプリカSNA310と、複数のノードN4、N5、およびN6上のレプリカSNB320と、を形成する。そのようなレプリカは、サブネットの複数のノード上の計算ユニットの割り当てサブセットについてのパーティションと見なされ得る。言い換えれば、レプリカは、一連の計算ユニットが、ノード上で実行されて同一のサブネットに割り当てられて形成される。
図3aの例では、サブネットSNAがブロック高さNで動作すると仮定される。サブネットSNBは、例示を単純化するために
図3aから
図3eには示されていないが、異なるブロック高さで動作し得る。
図3aから
図3dでは、基礎となる分散ネットワークが、負荷均等化の理由から、計算ユニットCU
A4を第1サブネットSNAから第2サブネットSNBに移行すると仮定する。移行処理を開始するために、中央制御装置20は、例えば、計算ユニットCU
A4を移行状態に設定するレジストリを更新して、意図された移行を第1サブネットSNAおよび第2サブネットSNBに伝達する。
【0057】
次に、サブネットSNAの計算ユニットマネージャは、移行時刻/移行ブロック高さを予定し得る。この例では、移行ブロックの高さは、ブロック高さN+Kであり、Nは、第1サブネットまたはソースサブネットSNAがレジストリ変更を観測する高さである。数値Kは、分散ネットワークのそれぞれの構成に応じて選択し得、それぞれの分散ネットワークのニーズに適合し得る。一例として、Kは、例えば、10、100、または1000、さらにそれ以上のブロック高さであり得る。Kが大きいほど、計算ユニットCUA4の転送の準備に関連するサブネットにおけるそれぞれのリードタイムが大きくなる。
【0058】
図3bは、サブネットSNAの中間ブロック高さN+XにおけるサブネットSNAおよびSNBの複数のノードを示す。ここでは、X<Kなので、移行ブロック高さN+Kに達しておらず、計算ユニットCU
A4は、まだサブネットSNAにより処理される。
【0059】
一方、第2サブネットSNBの複数のノードN4、N5、N6は、第1サブネットSNAに参加しており、計算ユニットCUA1、CUA2、CUA3、およびCUA4をローカルレプリカ330として実行し始めている。言い換えれば、ノードN4、N5、およびN6は、サブネットSNAの計算ユニットを実行するために現在使用されている新しいパーティションを作成している。
【0060】
第2サブネットSNBの複数のノードは、特に受動的レプリカとしてサブネットSNAのレプリカ310を実行し得る。言い換えれば、それらは、サブネットSNAに完全には参加せず、サブネットSNAの動作の限られた部分のみを実行する。特に、レプリカ310は、計算ユニットCUA1、CUA2、CUA3、およびCUA4の状態を最新にするために、計算ユニットCUA1、CUA2、CUA3、およびCUA4のユニット状態または実行状態を主に観測するように構成し得る。この受動的な参加は、特に、計算ユニットCUA4のユニット状態向けに内部の信頼できるドメインの作成に使用され得る。言い換えれば、サブネットSNAを観測して部分的にサブネットSNAに参加することで、複数のノードN4、N5、およびN6は、伝達する高さNと移行する高さN+Kとの間のリードタイムの間に、計算ユニットCUA4の状態を、それ自体の内部で信頼できる領域に、信頼できる方法であらかじめ転送する。その後、有効なブロックの実行に追従するだけで、移行する高さの状態に到達する。
【0061】
図3cに、サブネットSNAのブロック高さN+K+1におけるサブネットSNAおよびSNBの複数のノードを示す。移行計算CU
A4の処理を引き継ぐために、ノードN4、N5、N6は、受動的レプリカ330で利用可能な移行するブロック高さN+Kで、計算ユニットCU
A4の最終状態を内部で転送し得る。より具体的には、受動的レプリカ330は停止され、ブロック高さN+Kにおける計算ユニットCU
A4の最終状態は、例えば、インバウンド計算ユニットに割り当てられた複数のノードN4、N5、およびN6のディレクトリ340に転送される。次に、サブネットSNBのレプリカ320は、内部で信頼できる通信メカニズム350を経由して、内部ディレクトリ340から計算ユニットCU
A4を受信または取得し得る。次いで、レプリカ320は、計算ユニットCU
A4の起動に合意し、サブネットSNB上で、特に、サブネットSNB向けのノードN4、N5、およびN6の対応するレプリカ320上で計算ユニットCU
A4を実行し始め得る。
【0062】
ある移行期間中では、第1サブネットSNAの複数のノードは、計算ユニットCU
A4のレプリカを依然として含み得る。コピーは、単なる受動的コピーであり得るので、計算ユニットCU
A4は、もはや、複数のノードN1、N2、およびN3のレプリカSNAによりアクティブに実行されない。これについて、
図3cでは計算ユニットCU
A4が点線で示されている。
【0063】
図3dに、ブロック高さN+K+2におけるサブネットSNAおよびSNBの複数のノードを示す。ここで、第1サブネットSNAの複数のノードは、計算ユニットCU
A4を完全に削除し、計算ユニットCU
A1、CU
A2、およびCU
A3を有するサブネットSNAのレプリカSNA310のみを実行する。
【0064】
さらに、計算ユニットCU
A4は、サブネットSNBに完全に統合されており、ノードN4、N5、およびN6のレプリカSNB320により実行される。移行計算ユニットは、
図3dではCU
B3/A4と表示され、以前の計算ユニットCU
A4が3番目の計算ユニットとしてサブネットSNB上で実行されることを示している。
【0065】
ここで、移行計算ユニットCU
A4を移行する他のメカニズムについて、
図3eを参照して説明する。
図3eに示す例も、
図3aで示した初期設定から開始される。
図3eには、ブロック高さN+K+1におけるノードN1からN6までが示される。ノードN1、N2、およびN3がブロックN+Kを処理した後、ノードN1、N2、およびN3の中において、移行計算ユニットCU
A4およびそれに対応する最終状態が、レプリカSNA310から、専用の記憶空間に転送される。この記憶空間は、例えば、アウトバウンド計算ユニットに割り当てられたノードN1、N2、およびN3のディレクトリ360である。次に、サブネットSNBのレプリカ320は、サブネットSNAとサブネットSNBとの間のサブネット間通信メカニズムを構築するメッセージングプロトコル370を経由して、ディレクトリ360から計算ユニットCU
A4の状態を受信または取得し得る。このような実施形態では、第2サブネットSNBのノードN4、N5、およびN6は、第1サブネットに参加していない。移行高さN+Kに達した後、第1サブネットSNAは、移行用に移行計算ユニットCU
A4を準備して、それをディレクトリ360に置いた。いくつかの実施形態では、ディレクトリ360に置かれた移行ブロック高さN+Kにおける計算ユニットCU
A4は、例えば、共同署名により、ノードN1、N2、およびN3によって認証され得る。認証された計算ユニットCU
A4を受信すると、レプリカ320は、それを起動して開始することに合意し得、サブネットSNB上で計算ユニットCU
A4を実行する。このように、ノードN4、N5、およびN6は、計算ユニットCU
B3/A4をサブネットSNBの一部として処理し得る。
【0066】
次に、
図4aから
図4gまでを参照して、本発明の他の実施形態による、第1サブネットから第2サブネットに計算ユニットの移行するコンピュータ実装方法を説明する。
【0067】
図4aに、第1サブネットSNAの複数のノードN1、N2、およびN3を示す。第1サブネットSNAは、3つの計算ユニット、より具体的には計算ユニットCU
A1、CU
A2、およびCU
A3の割り当てサブセットを実行するように構成される。
図4aから
図4gに示す実施形態では、分散ネットワークは、第1サブネットSNAの計算ユニットCU
A3を、既存ではないサブネットSNB、すなわち、新たに作成されるサブネットSNBに移行するように動作する。中央制御装置20は、例えば、レジストリの更新を行って計算ユニットCU
A3を移行状態に設定することで、意図された移行を第1サブネットSNAに伝達して移行処理を開始する。したがって、計算ユニットCU
A3は、改めて移行計算ユニットと表され得る。さらに、例えば、中央制御装置20またはサブネットSNAの計算ユニットマネージャ、または他の存在あるいはメカニズムは、移行時刻または移行ブロック高さを予定する。そして、
図4bに示すように、第1サブネットSNAのノードN1、N2、N3は、新たな第2サブネットSNBを作成し、新たな第2サブネットSNBの実行を開始する。これは、ノードN1、N2、およびN3上に、第2サブネットSNB用の新たなパーティションを作成することを含む。したがって、ノードN1、N2、およびN3の各々は、サブネットSNB用の新しいレプリカSNB420を作成している。次いで、ノードN1、N2、およびN3は、第1サブネットSNA上での移行計算ユニットの実行を停止し得る。次に、
図4cに示すように、ノードN1、N2、およびN3は、移行計算ユニットCU
A3/B1を起動して、第1計算ユニットとして新たなサブネットSNBに転送される第1サブネットSNAの移行計算ユニットCU
A3/B1の実行を開始することに合意する。したがって、以下では、移行計算ユニットをCU
A3/B1と表示する。ノードN1、N2、およびN3が両方のサブネットSNAおよびSNBを実行するとき、計算ユニットCU
A3は、同一のノード内の計算ユニットCU
A3/B1に内部的に転送され得る状態である。したがって、レプリカSNA410からレプリカSNB420への同一の信頼できるドメイン内に転送され得る。レプリカSNAおよびSNBの両方が同一のノード上で動作するので、レプリカSNBは、いくつかの実施形態では、第1レプリカSNAが移行ブロック高さN+Kにおける計算ユニットCU
A3の最終状態に合意するまで待機するだけでよい。次に、レプリカSNBは、ノード内部での通信メカニズム430を経由して、同一のノードの第1レプリカSNAから計算ユニットCU
A3のこの状態を受信し得る。例えば、レプリカSNAは、計算ユニットCU
A3を、レプリカSNBが選定可能なそれぞれのノードのファイルシステムの専用ディレクトリに格納し得る。移行計算ユニットCU
A3/B1が内部通信または転送メカニズム430を経由して転送されると、ノードN1、N2。およびN3は、新たに作成した第2サブネットSNB上に移行計算ユニットCU
A3/B1をインストールして起動することに合意し、移行計算ユニットCU
A3/B1が実行され得る。
【0068】
図4dは、移行期間について図示する。この期間では、レプリカSNA410が、計算ユニットCU
A3を非アクティブモードでまだ保持している。その一方では、移行された計算ユニットCU
A3/B1が新たなレプリカSNB420上ですでに実行されている。
【0069】
図4eでは、ノードN1、N2、およびN3について示す。ここでは、移行計算ユニットCU
A3は、レプリカSNAからすでに削除されており、移行計算ユニットCU
A3/B1は、ノードN1、N2、およびN3上の新たなレプリカSNB上で実行されている。
【0070】
図4fに、新たな一連のノードを図示する。その一連のノードは、追加のまたは新規のノードN4、N5、およびN6を備え、それらは、第2サブネットSNBに追加されて第2サブネットSNBのそれぞれのレプリカSNB上で移行計算ユニットCU
A3/B1の実行をすでに開始している。新たな新規ノードN4、N5、およびN6は、ノードN1、N2、およびN3から、転送メカニズム450を経由して、移行計算ユニットCU
A3/B1を受信し得る。この移行計算ユニットの転送は、ノード間の何らかのメッセージングプロトコル、例えば、状態同期プロトコルで実行し得る。この計算ユニットCU
A3/B1の転送は、異なるノード間、すなわち、2つの異なる信頼できるドメイン間で行われるので、計算ユニットCU
A3/B1の状態は、例えば、ノードN1、N2、およびN3の共同署名を用いて、認証された方法で転送される。いくつかの実施形態では、新規ノードを追加するこのメカニズムは、サブネットに参加するプロトコルおよびサブネットの状態全体をキャッチアップするプロトコルに委任し得る。
【0071】
図4gに、移行計算ユニットCU
A3がレプリカSNAからすでに削除されたノードN1、N2、およびN3を示す。ここでは、移行計算ユニットCU
A3/B1は、追加のまたは新規ノードN4、N5、およびN6の新たなレプリカSNB上でのみ実行される。
【0072】
図4aから
図4gを参照して説明したメカニズムでは、移行計算ユニットの移動を行う一種の「スピンオフ」アプローチを使用する。移行計算ユニットを最初に実行する複数のノードでは、最初に、他のパーティションである新しいサブネットを開始する。次に、それらは、移行計算ユニットを、新たに作成されたサブネットを構築するする新たに生成したパーティションに、ノードの内部で最初に転送する。この転送は同一の信頼できるドメイン内で行われる。次いで、新たな複数のノードが、新たに生成した第2サブネットに追加され得、そして、新たに生成した第2サブネットの動作を引き継ぎ得る。その一方で、第1サブネットの以前のノードは、第2サブネットから消去され得る。このアプローチは、第1サブネットから第2サブネットへの移行計算ユニットの最初の転送が、対応するノードの内部で、つまり、同一の信頼できるドメインで内部的に行われるという利点を有する。さらに、ネットワーク上の複数の異なるノード間で、転送メカニズム450を経由する転送が必須であるのは、移行計算ユニットCU
A3/B1だけである。このことは、移行計算ユニットの円滑で効率的かつ迅速な移行を容易にし得る。
【0073】
図5は、本発明の一実施形態による、ネットワーク100の各ノード10上で実行され得る主要な処理を示す。本発明のいくつかの実施形態のネットワークのネットワーククライアントとは、ネットワークへ参加するノード10が必要とする一連のプロトコルコンポーネントのことである。いくつかの実施形態では、各ノード10は、メインネットの一員である。さらに、各ノードは、1つ以上のサブネットの一員であり得る。
【0074】
ノードマネージャ50は、メインネットプロトコルクライアント51、サブネットプロトコルクライアント52、およびセキュリティアプリケーション53を起動、再起動、および更新するように構成される。他のいくつかの実施形態では、中央制御装置20は、メインネットプロトコルクライアント(
図1参照)の代替として使用され得る。いくつかの実施形態では、いくつかのサブネットプロトコルクライアントを使用して、いくつかのレプリカを実装し得る。
【0075】
いくつかの実施形態では、複数のサブネット11の各々は、それらに対応する複数のノード10上で別個のサブネットプロトコルクライアント52を実行するように構成される。メインネットプロトコルクライアント51は、特に、複数のサブネット11で、およびそれらの間で構成データを配布するように構成される。メインネットプロトコルクライアント51は、特に、システム計算ユニットだけを実行するように構成し得るが、ユーザーが提供する計算ユニットは実行しない。メインネットプロトコルクライアント51は、メインネットのローカルクライアントであり、サブネットプロトコルクライアント52は、サブネットのローカルクライアントである。セキュリティアプリケーション53は、ノード10の秘密鍵を格納し、それらに対応する動作を実行する。ノードマネージャ50は、例えば、制御装置20のレジストリ21を監視し得る。そして、サブネットに参加するようにノードに指示し得る。また、第2サブネットに参加するノードのパーティションに計算ユニットを移動し得、および/またはサブネットへの参加を停止するようにノードに指示し得る。
【0076】
図6は、サブネットプロトコルクライアントの、例えば
図5のサブネットプロトコルクライアント52の、プロトコルコンポーネント600の概略ブロック図を示す。
図6の実線矢印は、ユニット間メッセージおよびイングレスメッセージに関連する。破線矢印は、システム情報に関連する。プロトコルコンポーネント600は、メッセージングプロトコルを実行するように構成されたメッセージングコンポーネント61と、実行プロトコルを実行するように構成された実行コンポーネント62と、を備える。実行プロトコルは、実行メッセージを実行するものであり、特に、ユニット間メッセージおよび/またはイングレスメッセージを実行する。プロトコルコンポーネント600は、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネント63、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント64、状態マネージャプロトコルを実行するように構成された状態マネージャコンポーネント65、サブネット間転送プロトコルを実行するように構成されたX-Netコンポーネント66、およびネットワークの外部ユーザーから受信したイングレスメッセージを処理するように構成されたイングレスメッセージハンドラコンポーネント67をさらに備える。プロトコルコンポーネント600は、さらに、暗号コンポーネント68を含む。暗号コンポーネント68は、例えば、
図5を参照して説明したセキュリティアプリケーション53として具体化され得るセキュリティコンポーネント611と協働する。さらに、サブネットプロトコルクライアント52は、リーダーコンポーネント610と協働し得る。このリーダーコンポーネントは、
図5を参照して説明したように、メインネットプロトコルクライアント51の一部であり得る。リーダーコンポーネント610は、メインネットが格納し、それぞれのサブネットプロトコルクライアント52に配布される情報を提供し得る。これには、サブネットへのノードの割り当て、ノード公開鍵、サブネットへの計算ユニットの割り当てなどが含まれる。
【0077】
メッセージングコンポーネント61および実行コンポーネント62は、これらのコンポーネントにおけるすべての計算、データ、および状態が、それぞれのサブネットのすべてのノードにわたって、より具体的にはそれぞれのサブネットのすべての誠実なノードにわたって、同様に複製されるように構成される。これは、これらのコンポーネントの背景に波パターンとして図示される。一方では、コンセンサスコンポーネント63が、メッセージングコンポーネント61への入力ストリームがそれぞれのサブネットによって合意される。よって、すべてのノードについて、より具体的には、すべての誠実なノードについて同様であることを保証することで、いくつかの実施形態では、そのような同様な複製が達成される。他方、このことは、メッセージングコンポーネント61および実行コンポーネント62が、決定論的で複製される計算を実行するように構成されるという事実により達成される。
【0078】
X-Net転送コンポーネント66は、他のサブネットにメッセージストリームを送信し、他のサブネットからメッセージストリームを受信する。コンポーネントの大部分は、暗号コンポーネント68にアクセスして暗号アルゴリズムを実行し、メインネットリーダ70にアクセスして構成情報を読み取る。
【0079】
実行コンポーネント62は、メッセージングコンポーネント61から、計算ユニットのユニット状態と計算ユニットの着信メッセージとを受信し、計算ユニットの発信メッセージと更新されたユニット状態とを返信する。実行を行っている間に、処理メッセージ(クエリ)のガス消費も測定し得る。メッセージングコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロックによりクロック制御される。すなわち、各入力ブロックについて、メッセージングコンポーネント61は、以下のステップを実行する。それぞれの入力ブロックを解析して、その計算ユニットのためのメッセージを取得する。さらに、メッセージが異なる計算ユニットのそれぞれの入力キューに送付され、割り当てられた各計算ユニットの容量にしたがって、実行するメッセージを計画する。次いで、実行コンポーネント62を使用して、対応する計算ユニットによりメッセージを処理し、その結果、送信されるメッセージを、それぞれの計算ユニットの出力キューに追加する。ただし、メッセージが同一のサブネット上の計算ユニット宛てのとき、そのメッセージは、対応する計算ユニットの入力キューに直接置かれ得る。メッセージングコンポーネント61は、最後に、計算ユニットの出力キューのメッセージを、受信計算ユニットが位置するサブネットのメッセージストリームに送付し、これらのメッセージストリームを状態マネージャコンポーネント65に転送して、認証される、すなわち、それぞれのサブネットにより署名される。
【0080】
状態マネージャコンポーネント65は、認証コンポーネント65aを含む。認証コンポーネント65aは、それぞれのサブネットの出力ストリームを認証するように構成される。これは、例えば、それぞれのサブネットの計算ユニットのしきい値署名、多重署名、または個々の署名の集合により実行され得る。
【0081】
図7に、メッセージングプロトコルおよびコンセンサスプロトコルのワークフロー700と、関連するコンポーネントを示す。それらは、例えば、
図6のメッセージングコンポーネント61およびコンセンサスコンポーネント63を例示的に視覚化したものである。より具体的には、
図7は、サブネットSNBとサブネットSNAとサブネットSNCとの間で交換されるサブネット間メッセージのワークフローを視覚化する。また、サブネットSNBは、複数のユーザーUとの間で、イングレスメッセージを交換する。
【0082】
図7の右下から出発して、複数の入力ストリーム701、702、および703が、コンセンサスコンポーネント63により受信される。コンセンサスコンポーネント63は、サブネットSNBのサブネットクライアントが実行するサブネットコンセンサスコンポーネントである。入力ストリーム701は、サブネットSNAからサブネットSNBへのサブネット間メッセージ711を含む。入力ストリーム702は、サブネットSNCからサブネットSNBへのサブネット間メッセージ712を含む。入力ストリーム703は、複数のユーザーUからサブネットSNBへのイングレスメッセージ713を含む。サブネット間メッセージ711および712は、異なるサブネットの計算ユニット間で交換されるサブネット内部でのユニット間メッセージおよび伝達メッセージを備える。伝達メッセージは、ユニット間メッセージの受諾について、肯定応答するか、または非肯定応答するために使用される。メッセージングコンポーネント61は、受信サブネットから対応する送信サブネットに、すなわち、この例では、サブネットSNBから、サブネットSNAおよびサブネットSNCに伝達メッセージを送信するように構成される。メッセージングコンポーネント61は、この例では、サブネット間で送信されたユニット間メッセージを、それぞれのユニット間メッセージについて確認応答メッセージが受信されるまで格納するように構成される。これは、送達の保証を提供する。
【0083】
コンセンサスコンポーネント63は、ユーザーUのサブネットSNAおよびサブネットSNCのサブネット間メッセージ711および712、ならびに複数のユーザーUのイングレスメッセージ713を受信して処理することで、対応するコンセンサスプロトコルが実行する所定のコンセンサスメカニズムにしたがって、サブネット間メッセージ711、712、およびイングレスメッセージ713から入力ブロック720のキューを生成するように構成される。コンセンサスによって生成される各入力ブロック720は、一連のイングレスメッセージ713、一連のサブネット間メッセージ711および712、ならびに実行パラメータ714であるEPを含む。実行パラメータ714であるEPは、特に、ランダムシード、指定された実行時刻、および/または高さ指数を含み得る。コンセンサスコンポーネント63はまた、サブネットの現在の負荷に基づいて、各入力ブロックにおけるメッセージ数を変更し得る。
【0084】
コンセンサスコンポーネント63は、メッセージングプロトコルを実行し、入力ブロック720を処理するように構成されたメッセージングコンポーネント61に、入力ブロック720のキューを提供する。メッセージングプロトコルおよびメッセージングコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロック720によりクロック制御される。
【0085】
受信した入力ブロックを処理する前に、メッセージングコンポーネント61は、1つ以上の入力チェックを含む1つ以上の前処理ステップを実行し得る。入力チェックは、入力チェックコンポーネント740によって実行され得る。入力チェックに合格したとき、それぞれの入力ブロック720のメッセージは、メッセージングコンポーネント61によってさらに処理され得る。また、対応するメッセージは、誘導プールコンポーネント731の誘導プールの中の対応するキューに追加され得る。メッセージングコンポーネント61の誘導プールコンポーネント731は、入力チェックコンポーネント740で合格して、さらなる処理のためにメッセージングコンポーネント61によって受諾された入力ブロックおよび入力メッセージを受信する。一般に、メッセージングコンポーネント61は、必要に応じて、イングレスメッセージ、伝達メッセージ、およびサブネット間メッセージを誘導プールコンポーネント731に置いて、入力ブロック720の前処理を行う。サブネットストリームの伝達メッセージは、一掃可能な出力キューのメッセージの肯定応答とみなされる。この例では、誘導プールコンポーネント731は、サブネット~ユニット間のキューSNA-B1、SNC-B1、SNA-B2、およびSNC-B2、ならびにユーザー~ユニット間のキューU-B1およびU-B2を備える。
【0086】
これらの前処理ステップに続いて、メッセージングコンポーネント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への出力メッセージを示す。出力キューコンポーネント733は、例えば、
図6に示す認証コンポーネント65aが認証して他のコンポーネントが配布しているサブネットごとの一連の出力ストリームを形成することで、出力メッセージの結果として生じる出力キューの後処理を行う。この例では、サブネットごとの出力ストリームSNB-SNA、SNB-SNC、およびSNB-Uが提供される。
【0087】
したがって、メッセージングコンポーネント61は、それぞれのサブネットの計算ユニットの状態またはユニット状態、この例ではサブネットSNBの計算ユニットB1および計算ユニットB2の状態を記憶するように構成された状態記憶コンポーネント732をさらに備える。対応するユニット状態は、各計算ユニットの作業メモリである。メッセージングコンポーネント61は、システム状態の特定の部分を決定論的に変化させることを中心に展開する。各ラウンドでは、実行コンポーネント61は、それぞれの計算ユニットの状態を読み出して更新することで、誘導プールからの特定のメッセージを実行し、実行された計算ユニットが送信したい任意の発信メッセージを返信する。これらの発信メッセージ、言い換えれば出力メッセージは、最初にネットワークの計算ユニット間のユニット間メッセージを含む出力キューコンポーネント733に入力される。同一のサブネットの計算ユニット間のサブネット内メッセージは、それぞれのサブネット内で内部的に送付および分散され得るが、サブネット間メッセージは、サブネットの宛先で区分された出力ストリームに送付される。
【0088】
さらに、いくつかの実施形態では、どのメッセージが処理されたかについてシステムのそれ以外の部分に通知するために、2つの状態を維持し得る。第1部分は、サブネット間メッセージ向けに維持され、第2部分は、イングレスメッセージ向けに維持され得る。
【0089】
以下では、メインネットプロトコルクライアント51とサブネットプロトコルクライアント52との間の対話についてより詳細に説明する(
図5参照)。メインネットプロトコルクライアント51は、サブネットの構成情報を含む多数のレジストリを管理する。これらのレジストリは、メインネット上の計算ユニットにより実装される。他の実施形態によれば、中央レジストリは、メインネットの代替として使用され得る。
【0090】
図8に、レイヤーモデル800を示し、サブネット間およびサブネット内メッセージの交換に関与する主要なレイヤーが図示されている。レイヤーモデル800は、サブネット間通信の上位レイヤーとして機能するように構成されたメッセージングレイヤー81を備える。より詳細には、メッセージングレイヤー81は、異なるサブネットの計算ユニット間でサブネット間メッセージを送るように構成される。さらに、メッセージングレイヤー81は、ネットワークのユーザーからのイングレスメッセージをネットワークの計算ユニットに送るように構成される。レイヤーモデル800は、複数のコンセンサスレイヤー82をさらに備える。コンセンサスレイヤー82は、異なるサブネットからのサブネット間メッセージならびにイングレスメッセージを受信し、特に処理順序について同意することで、それらを編成するように構成されており、それぞれのサブネットが、さらなる処理を行う入力ブロックの順序に含まれる。また、レイヤーモデル800は、単一のサブネットのノード間の通信を編成して駆動するように構成されたピアツーピア(P2P)レイヤーを備える。いくつかの実施形態では、ネットワークは、複数のさらなるレイヤー、特に、ネットワークの計算ユニット上で実行メッセージを実行するように構成された実行レイヤーを備え得る。
【0091】
図9を参照すると、本発明の実施形態による分散ネットワークにおけるブロックの生成について図示されている。ブロックは、特に
図7に示される入力ブロック720であり得、これは、コンセンサスプロトコル、特にローカルサブネットコンセンサスプロトコルを実行するコンセンサスコンポーネント63により作成される。この例示的な実施形態では、3つの入力ブロック901、902、および903が図示されている。ブロック901は、複数のトランザクション、つまり、トランザクションtx1.1、tx1.2、および場合によりドットで示されるさらなるトランザクションを含む。ブロック902はまた、複数のトランザクション、つまり、トランザクションtx2.1、tx2.2、および場合によりドットで示されるさらなるトランザクションを含む。ブロック903はまた、複数のトランザクション、つまり、トランザクションtx3.1、tx3.2、および場合によりドットで示されるさらなるトランザクションを含む。入力ブロック901、902、および903は互いに連鎖される。より詳細には、ブロックの各々は、前ブロックのブロックハッシュを含む。これは、現ブロックを前ブロックに暗号的に結びつける。いくつかの実施形態では、トランザクションは、サブネット間メッセージ、イングレスメッセージ、および伝達メッセージであり得る。いくつかの実施形態によれば、入力ブロック901、902、および903は、プルーフオブステークプロトコルにより作成され得る。ただし、コンセンサスコンポーネントが生成した入力ブロックは、いくつかの実施形態では、互いに連鎖する必要はないことに留意されたい。むしろ、いくつかの実施形態では、受信したメッセージの処理順序に関してサブネットの複数のノード間で、何らかの種類のコンセンサスに到達する任意のコンセンサスプロトコルが、使用され得る。
【0092】
図11に、本発明の実施形態による計算ユニット1100のより詳細な図を示す。計算ユニット1110は、入力キュー1101、出力キュー1102、アプリケーション状態1103、およびシステム状態1104を備える。計算ユニット1100は、一般に、計算ユニットのコードと、計算ユニットのユニット状態または実行状態と、を備える。
【0093】
図12に、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント1200のより詳細な図を示す。ネットワーキングコンポーネント1200は、例えば、
図6に示すネットワーキングコンポーネント64のより詳細な実施形態であり得る。ネットワーキングコンポーネント1200は、ノード間通信を実行するように構成されたユニキャストコンポーネント1210と、サブネット内通信を実行するように構成されたブロードキャストコンポーネント1220と、サブネット間通信を実行するように構成されたクロスネットコンポーネント1230とを備える。クロスネットコンポーネント1230は、計算ユニットのサブネット割り当てをネットワーク構成データとして格納するか、または中央レジストリからそれを読み取り可能である。
【0094】
図13に、例えば、
図6に示した状態マネージャコンポーネント65である状態マネージャコンポーネント1300のより詳細な実施形態を示す。状態マネージャコンポーネント1300は、ストレージコンポーネント1310と、認証コンポーネント1320と、同期コンポーネント1330と、を備える。ストレージコンポーネント1310は、ユニット状態を格納するディレクトリ1311、ユニット状態の認証変数を格納するディレクトリ1312、インバウンド移行計算ユニットを格納するディレクトリ1313、およびアウトバウンド移行計算ユニットを格納するディレクトリ1314を備える。状態マネージャコンポーネント1330はまた、出力ストリームを維持して認証し得る。
【0095】
いくつかの実施形態では、認証コンポーネント1320は、しきい値署名または多重署名アルゴリズムを実行するように構成され、ストレージコンポーネント1310の部品を認証する。特に、認証コンポーネント1320は、他のサブネットに移行される移行計算ユニットであり、アウトバウンド移行計算ユニットとしてディレクトリ1314に配置される移行計算ユニットを認証し得る。
【0096】
図14に、本発明のいくつかの実施形態による、複数のサブネットを含む分散ネットワークの実行を行うコンピュータ実装方法の方法ステップを含むフローチャート1400を示す。分散ネットワークは、例えば、
図1に示されるネットワーク100として具体化し得る。ステップ1410において、複数のサブネットの各サブネットは、そのノード上で一連の計算ユニットを実行し、計算ユニットの各々は、それ自体のユニット状態を含む。ステップ1420において、ネットワークは、一連の計算ユニットをそれぞれのサブネットにわたって複製する。
【0097】
図15に、本発明の一実施形態による、計算ユニットを分散ネットワークの第1サブネットから第2サブネットへの移行するコンピュータ実装方法の方法ステップを含むフローチャート1500を示す。分散ネットワークは、例えば、
図1に示されるネットワーク100として具体化されてもよい。ステップ1510において、中央制御装置20は、第1サブネットの計算ユニットを移行される移行計算ユニットとして、第1サブネットSNAおよび第2サブネットSNBに伝達する。ステップ1520において、第1サブネットSNAは、移行する移行計算ユニットを準備する。このステップ1520は、例えば、計算ユニットマネージャが移行時刻または移行ブロックの高さを予定することを含み得る。ステップ1520は、第1サブネットSNAが、移行時刻または移行ブロック高さ以降に、移行計算ユニットのメッセージの受諾を停止して、第1サブネットSNAが、移行計算ユニットの実行を停止して、および/または、移行時刻または移行ブロック高さ以降に、移行計算ユニットのユニット状態を変更することをさらに含み得る。
【0098】
ステップ1530において、移行ブロック高さの移行計算ユニットは、第1サブネットから第2サブネットに転送される。これは、例えば、
図3aから
図3eを参照して説明されるように、さまざまな転送メカニズムで実行され得る。ステップ1540において、第2サブネットSNBのノードは、移行計算ユニットをインストールする。ステップ1550において、第2サブネットSNBのノードは、移行計算ユニットの起動に合意する。これは、特に、コンセンサスプロトコルを実行することで行い得る。最後に、ステップ1560において、第2サブネットのノードは、第2サブネットSNB上で転送された移行計算ユニットを起動し、実行する。
【0099】
図16に、本発明の一実施形態による、計算ユニットを分散ネットワークの第1サブネットから第2サブネットへの移行するコンピュータ実装方法の方法ステップを含むフローチャート1600を示す。分散ネットワークは、例えば、
図1に示されるネットワーク100として具体化し得る。
【0100】
ステップ1610において、中央制御装置20は、第1サブネットSNAに、第1サブネットの計算ユニットを、第2サブネットに移行される移行計算ユニットとして伝達する。第2のサブネットは、まだ存在しないので新たな作成が必要である。ステップ1620において、第1サブネットのノードは、それらのノード上に新たなレプリカ用のパーティションを作成することで、新たな第2サブネットを作成して開始する。ステップ1630において、移行計算ユニットは、第1サブネットから第2サブネットに内部的に、すなわち第1サブネットSNAのそれぞれのノード内で転送される。移行前であっても、移行計算ユニットは移行状態にし得る。
【0101】
ステップ1640において、第2サブネットも実行する第1サブネットの複数のノードは、第2サブネット上に移行計算ユニットをインストールする。次に、ノードは、起動に合意するステップを実行し得る。ステップ1650において、第1サブネットおよび第2サブネットの複数のノードは、第2サブネット上で移行計算ユニットを起動して実行を開始する。ステップ1660において、第1サブネットの一部ではない追加の複数のノードを第2サブネットに追加し得る。ステップ1670において、第1サブネットの複数のノードを第2サブネットから削除し得る。これにより、移行が完了する。
【0102】
図17を参照すると、例えば、
図1ネットワーク100の、本発明の実施形態によるネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、計算機能を実行することができる計算ノードを構築する。したがって、概ね計算システムまたはコンピュータとして具体化され得る。ネットワークノード10は、例えば、サーバコンピュータであり得る。ネットワークノード10は、多数の他の汎用システム環境または構成で動作し得、または専用計算システム環境または構成で動作し得る。ネットワークノード10は、コンピュータシステムが実行するプログラムモジュールなどのコンピュータシステム実行可能命令の一般的なコンテキストで説明し得る。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。ネットワークノード10は、汎用計算装置の形態で示される。ネットワークノード10のコンポーネントは、それに限定されるものではないが、1つ以上のプロセッサまたは処理ユニット1715と、システムメモリ1720と、システムメモリ1720を含むさまざまなシステムコンポーネントをプロセッサ1715に結合するバス1716と、を含み得る。バス1716は、いくつかのタイプのバス構造のいずれかのうちの1つ以上を表す。ネットワークノード10は、典型的には、さまざまなコンピュータシステム可読媒体を含む。システムメモリ1720は、ランダムアクセスメモリ(RAM)1721および/またはキャッシュメモリ1722などの揮発性メモリの形態のコンピュータシステム可読媒体を含み得る。ネットワークノード1710は、他の取り外し可能または取り外し不可で、揮発性または不揮発性コンピュータシステム記憶媒体をさらに含むことができる。ほんの一例として、記憶システム1723は、取り外し不可の不揮発性磁気媒体(図示せず、一般に「ハードドライブ」と称される)からの読み取りおよび書き込みの用に設置可能である。以下でさらに図示および説明するように、メモリ1720は、本発明の実施形態の機能を実行するように構成された一連のプログラムモジュール(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含み得る。プログラムまたはユーティリティ1730は、一連のプログラムモジュール1731(少なくとも1つ)を有し、それに限定するものではないが、例えば、メモリ1720に格納し得、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータも格納し得る。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらの任意の組合せの各々は、ネットワーキング環境の実装を含み得る。プログラムモジュール1731は、一般に、本明細書に記載の本発明の実施形態の機能および/または方法を実行する。プログラムモジュール1731は、特に、分散ネットワークをさせる動作コンピュータ実装方法の1つ以上のステップ、例えば、上述の方法の1つ以上のステップを実行し得る。ネットワークノード10はまた、キーボードまたはポインティングデバイスなどの1つ以上の外部デバイス1717、ならびにディスプレイ1718と通信し得る。そのような通信は、入出力(I/O)インターフェース1719を介して行うことができる。さらに、ネットワークノード10は、ネットワークアダプタ1741を通して、ローカルエリアネットワーク(LAN)、汎用ワイドエリアネットワーク(WAN)、および/またはパブリックネットワーク(例えば、インターネット)などの1つ以上のネットワーク1740と通信可能である。いくつかの実施形態では、ネットワーク1740は、特に、複数のネットワークノード10、例えば、
図1に示されるネットワーク100を備える分散ネットワークであり得る。
【0103】
本発明の態様は、システム、特に、複数のサブネットを備える分散ネットワーク、方法、および/またはコンピュータプログラム製品として具体化され得る。コンピュータプログラム製品は、プロセッサが本発明の態様を実行するためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0104】
コンピュータ可読記憶媒体は、命令実行装置が使用する命令を保持および格納可能な有形装置であり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組合せであり得るが、これらに限定されるものではない。コンピュータ可読記憶媒体は、本明細書で使用されるように、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または配線を通して送信される電気信号などのそれ自体が一時的な信号であるもの、と解釈されるべきではない。
【0105】
本明細書で説明するコンピュータ可読プログラム命令は、それぞれの計算または処理装置に、コンピュータ可読記憶媒体、またはネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはワイヤレスネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロード可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを含み得る。本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組合せで記述されたソースコードまたはオブジェクトコードのいずれかであり得る。
【0106】
本発明の態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して本明細書で説明される。
【0107】
本発明の実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて、機械を生成し得る。これにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサで実行される命令が、フローチャートおよび/またはブロック図のブロックまたはブロックに指定された機能/動作を実装するための手段が生成される。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに特定の方法で機能するように指示可能であるコンピュータ可読記憶媒体に格納され得る。その格納された命令を有するコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図または複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を備える。
【0108】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードすることで、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上で実行される一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行されるコンピュータ実装プロセスを生成し得る。これにより、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上で実行される命令は、フローチャートおよび/またはブロック図または複数のブロックにおいて指定される機能/動作を実装する。
【0109】
図示したフローチャートおよびブロック図に、本発明のさまざまな実施形態による、ネットワーク、システム、方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装する1つ以上の実行可能命令を備える、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実装形態では、ブロックに記載された機能は、図に記載された順序から外れて発生し得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得る。また、これらのブロックは、関与する機能に応じて逆の順序でも実行され得る。
【0110】
本明細書には、本発明の現状で好ましい実施形態が示され記載されているが、本発明は、それらに限定されるものではなく、特許請求の範囲内で、他の方法でさまざまに具体化され実施され得ることが明確に理解されるものである。
【国際調査報告】