(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークにおいてビュー切り換えを実行するためのコンピュータ実装方法であって、前記ブロックチェーンネットワークがプライマリノードおよび複数のバックアップノードを含み、前記プライマリノードが前記ブロックチェーンネットワーク内のサービス要求に関するコンセンサスを開始し、前記サービス要求がビュー切り換えを開始するためのものではなく、前記方法が、
ブロックチェーンプライマリノードにより、ブロックチェーンネットワーク内のビュー切り換え条件のトリガリングを受信するステップであって、前記トリガリングが、
(a)前記サービス要求を受信すること、前記サービス要求に関する前記コンセンサスを開始すること、および前記サービス要求に関する前記コンセンサスの結果を決定すること、あるいは、
(b)所定の時間内に前記サービス要求に関する前記コンセンサスを開始することに失敗すること、
のうちの一つを示す、受信するステップと、
前記ブロックチェーンプライマリノードにより、前記ビュー切り換え条件の前記トリガリングに基づいて前記複数のバックアップノードから後継ノードを選択するステップと、
前記ブロックチェーンプライマリノードにより前記後継ノードに基づいて、現在のビューを、前記後継ノードを後続のブロックチェーンプライマリノードとして使用する次のビューに切り換えるステップであって、前記後続のブロックチェーンプライマリノードが、前記次のビューにおいてコンセンサスを開始する、切り換えるステップと
を含む、コンピュータ実装方法。
【請求項２】
前記ビュー切り換え条件の前記トリガリングを受信するステップは、
前記ブロックチェーンプライマリノードにより、サービス要求を受信するステップと、
前記サービス要求に関するコンセンサスを所定の時間内に開始することに失敗すると決定するステップと
を含む、請求項1に記載のコンピュータ実装方法。
【請求項３】
前記サービス要求に関する前記コンセンサスを前記所定の時間内に開始することに失敗すると決定するステップは、
前記サービス要求内に含まれるデータが不正確であると決定するステップ
を含む、請求項2に記載のコンピュータ実装方法。
【請求項４】
前記サービス要求に関する前記コンセンサスを前記所定の時間内に開始することに失敗すると決定するステップは、
前記ブロックチェーンプライマリノードが、コンセンサスフェーズを示す不正確な通知メッセージを前記後継ノードに送信したと決定するステップ
を含む、請求項2に記載のコンピュータ実装方法。
【請求項５】
前記ブロックチェーンプライマリノードにより、前記後継ノードを選択するステップは、
前記ブロックチェーンプライマリノードにより、前記現在のビューの次のビューを決定するステップと、
前記次のビューに対応する後継ノードを選択するステップと
を含む、請求項1に記載のコンピュータ実装方法。
【請求項６】
前記現在のビューを、前記後継ノードを前記後続のブロックチェーンプライマリノードとして使用する前記次のビューに切り換えるステップは、
前記現在のビューを前記次のビューに切り換えるステップであって、前記後継ノードは、前記次のビューにおいてのブロックチェーンプライマリノードとして使用される、切り換えるステップ
を含む、請求項5に記載のコンピュータ実装方法。
【請求項７】
前記ブロックチェーンネットワークは、コンソーシアムブロックチェーンネットワークまたはプライベートブロックチェーンネットワークを含む、請求項1に記載のコンピュータ実装方法。
【請求項８】
ブロックチェーンネットワークにおいてビュー切り換えを実行する動作を実行するための、コンピュータシステムによって実行可能な1つまたは複数の命令を記憶する非一時的コンピュータ可読媒体であって、前記ブロックチェーンネットワークがプライマリノードおよび複数のバックアップノードを含み、前記プライマリノードが前記ブロックチェーンネットワーク内のサービス要求に関するコンセンサスを開始し、前記サービス要求がビュー切り換えを開始するためのものではなく、前記命令が、
ブロックチェーンプライマリノードにより、ブロックチェーンネットワーク内のビュー切り換え条件のトリガリングを受信するステップであって、前記トリガリングが、
(a)前記サービス要求を受信すること、前記サービス要求に関する前記コンセンサスを開始すること、および前記サービス要求に関する前記コンセンサスの結果を決定すること、あるいは、
(b)所定の時間内に前記サービス要求に関する前記コンセンサスを開始することに失敗すること、
のうちの一つを示す、受信するステップと、
前記ブロックチェーンプライマリノードにより、前記ビュー切り換え条件の前記トリガリングに基づいて前記複数のバックアップノードから後継ノードを選択するステップと、
前記ブロックチェーンプライマリノードにより前記後継ノードに基づいて、現在のビューを、前記後継ノードを後続のブロックチェーンプライマリノードとして使用する次のビューに切り換えるステップであって、前記後続のブロックチェーンプライマリノードが、前記次のビューにおいてコンセンサスを開始する、切り換えるステップと
を含む、非一時的コンピュータ可読媒体。
【請求項９】
前記ビュー切り換え条件の前記トリガリングを受信するステップは、
前記ブロックチェーンプライマリノードにより、サービス要求を受信するステップと、
前記サービス要求に関するコンセンサスを所定の時間内に開始することに失敗すると決定するステップと
を含む、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記サービス要求に関する前記コンセンサスを前記所定の時間内に開始することに失敗すると決定するステップは、
前記サービス要求内に含まれるデータが不正確であると決定するステップ
を含む、請求項9に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記サービス要求に関する前記コンセンサスを前記所定の時間内に開始することに失敗すると決定するステップは、
前記ブロックチェーンプライマリノードが、コンセンサスフェーズを示す不正確な通知メッセージを前記後継ノードに送信したと決定するステップ
を含む、請求項9に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記ブロックチェーンプライマリノードにより、前記後継ノードを選択するステップは、
前記ブロックチェーンプライマリノードにより、前記現在のビューの次のビューを決定するステップと、
前記次のビューに対応する後継ノードを選択するステップと
を含む、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記現在のビューを、前記後継ノードを前記後続のブロックチェーンプライマリノードとして使用する前記次のビューに切り換えるステップは、
前記現在のビューを前記次のビューに切り換えるステップであって、前記後継ノードは、前記次のビューにおいてのブロックチェーンプライマリノードとして使用される、切り換えるステップ
を含む、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項１４】
前記ブロックチェーンネットワークは、コンソーシアムブロックチェーンネットワークまたはプライベートブロックチェーンネットワークを含む、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１５】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータと相互動作可能に結合され、前記1つまたは複数のコンピュータによって実行されると、ブロックチェーンネットワークにおいてビュー切り換えを実行するための1つまたは複数の動作を実行する1つまたは複数の命令を格納する有形の非一時的機械可読媒体を有する1つまたは複数のコンピュータメモリデバイスとを備えるコンピュータ実装システムであって、前記ブロックチェーンネットワークがプライマリノードおよび複数のバックアップノードを含み、前記プライマリノードが前記ブロックチェーンネットワーク内のサービス要求に関するコンセンサスを開始し、前記サービス要求がビュー切り換えを開始するためのものではなく、前記1つまたは複数の命令が、
ブロックチェーンプライマリノードにより、ブロックチェーンネットワーク内のビュー切り換え条件のトリガリングを受信するステップであって、前記トリガリングが、
(a)前記サービス要求を受信すること、前記サービス要求に関する前記コンセンサスを開始すること、および前記サービス要求に関する前記コンセンサスの結果を決定すること、あるいは、
(b)所定の時間内に前記サービス要求に関する前記コンセンサスを開始することに失敗すること、
のうちの一つを示す、受信するステップと、
前記ブロックチェーンプライマリノードにより、前記ビュー切り換え条件の前記トリガリングに基づいて前記複数のバックアップノードから後継ノードを選択するステップと、
前記ブロックチェーンプライマリノードにより前記後継ノードに基づいて、現在のビューを、前記後継ノードを後続のブロックチェーンプライマリノードとして使用する次のビューに切り換えるステップであって、前記後続のブロックチェーンプライマリノードが、前記次のビューにおいてコンセンサスを開始する、切り換えるステップと
を含む、コンピュータ実装システム。
【請求項１６】
前記ビュー切り換え条件の前記トリガリングを受信するステップは、
前記ブロックチェーンプライマリノードにより、サービス要求を受信するステップと、
前記サービス要求に関するコンセンサスを所定の時間内に開始することに失敗すると決定するステップと
を含む、請求項15に記載のコンピュータ実装システム。
【請求項１７】
前記サービス要求に関する前記コンセンサスを前記所定の時間内に開始することに失敗すると決定するステップは、
前記サービス要求内に含まれるデータが不正確であると決定するステップ
を含む、請求項16に記載のコンピュータ実装システム。
【請求項１８】
前記サービス要求に関する前記コンセンサスを前記所定の時間内に開始することに失敗すると決定するステップは、
前記ブロックチェーンプライマリノードが、コンセンサスフェーズを示す不正確な通知メッセージを前記後継ノードに送信したと決定するステップ
を含む、請求項16に記載のコンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ技術の分野に関し、特に、コンセンサス方法および装置に関する。
【背景技術】
【０００２】
現在、ブロックチェーン技術が広く使用されており、ブロックチェーン技術において非集中型モードは、データが容易に改ざんされないということを保証し、それによってセキュリティを向上させる。
【０００３】
実際に、複数のノードを含むブロックチェーンネットワーク(ノードは、サービスを処理することに参加する、ブロックチェーンネットワーク内のデバイスと考えられ得る)は、対応するサービスをクライアントデバイスに対して提供することができる。ブロックチェーンネットワーク内のノードは、クライアントデバイスのサービス要求に対する処理を実施し、処理結果をクライアントデバイスにフィードバックする。このプロセスにおいて、独立的に作動するノードにより生成される処理結果は、一致しないことがある。クライアントデバイスが正しい処理結果を受信することができるということを保証するために、ノードの間のコンセンサスが、実用的ビザンチンフォールトトレランス(PBFT:Practical Byzantine Fault Tolerance)アルゴリズムを使用することにより実施される(すなわち、正しい処理結果が、ノードにより共同で確認され、または受け付けられ得る)。
【０００４】
PBFTアルゴリズムを使用するプロセスにおいて、コンセンサスが通常、ビューにおいて実施される。ビューにおいて、ブロックチェーンネットワーク内の1つのノードが、プライマリノード(プライマリ)として使用され、他のノードが、バックアップノード(バックアップ)として使用される。この事例において、プライマリノードは、クライアントデバイスのサービス要求を受信し、サービス要求をすべてのバックアップノードにブロードキャストし、プライマリノードは、コンセンサスを開始する。コンセンサスに達するノードは、サービス要求に対する処理を実施し、処理結果をクライアントデバイスにフィードバックする。
【０００５】
既存の技術において、バックアップノードは、ビュー切り換えを開始し、バックアップノードにより開始されるビュー切り換えは、通常、ビューにおいて他のノードにより確認され、または受け付けられることを必要とする。バックアップノードは、ビューにおいて他のノード(プライマリノードを含む)に対してビュー切り換え要求を開始し、すなわち、他のノードに対してビュー切り換え要求に関するコンセンサスを開始する(このコンセンサスは、やはりPBFTを使用する。サービス要求に関するコンセンサスのプロセスとは異なり、ビュー切り換え要求に基づくコンセンサスプロセスにおいて、各々のノードは、サービス要求に関するコンセンサスを一時停止する。したがって、ビュー切り換え要求に関するコンセンサスは、本質的には、追加的なコンセンサスプロセスである)。所定の数量のノードがコンセンサスに達した後、バックアップノードが新しいプライマリノードになるということが決定される。新しいプライマリノードは、新しいビューメッセージをブロードキャストして、ビュー切り換えを完了する。
【０００６】
しかしながら、先の機構において、追加的なコンセンサスプロセスが、バックアップノードにより開始されるビュー切り換えに対して実施されることを必要とし、追加的なコンセンサスプロセスは、システム計算量を増加させる。加えて、ビュー切り換えのコンセンサスプロセスにおいて、コンセンサスは、所定の数量のノードにより確認された後に達せられ得る。最後に、新しいプライマリノードは、新しいビューメッセージをブロードキャストし、プロセス全体は、ある期間の時間を消費する。明らかに、既存のビュー切り換えのやり方は、システムの計算量を増加させるのみでなく、さらには、サービス要求を処理するために消費される時間を増加させる。その結果、相対的に低い処理効率が引き起こされる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本出願の実装形態は、現在のビュー切り換えのやり方が、ブロックチェーンネットワークの計算量を増加させ、処理時間消費を増加させるという問題を軽減するための、コンセンサス方法および装置を提供する。
【課題を解決するための手段】
【０００８】
本出願の実装形態は、以下のステップ、すなわち、ブロックチェーンプライマリノードにより、ビュー切り換え条件のトリガリングを監視するステップと、ブロックチェーンプライマリノードにより、ビュー切り換え条件のトリガリングが監視されるときに後継ノードを選択するステップと、ブロックチェーンプライマリノードにより後継ノードに基づいて、現在のビューを、後継ノードを後続のブロックチェーンプライマリノードとして使用する次のビューに切り換えるステップであって、後続のブロックチェーンプライマリノードが、次のビューにおいてコンセンサスを開始するようにする、切り換えるステップとを含む、コンセンサス方法を提供する。
【０００９】
本出願の実装形態は、以下、すなわち、ビュー切り換え条件のトリガリングを監視するように構成される監視モジュールと、監視モジュールがビュー切り換え条件のトリガリングを監視するときに後継ノードを選択するように構成されるノード決定モジュールと、後継ノードに基づいて、現在のビューを、後継ノードを後続のブロックチェーンプライマリノードとして使用する次のビューに切り換えることであって、後続のブロックチェーンプライマリノードが、次のビューにおいてコンセンサスを開始するようにする、切り換えることを行うように構成されるビュー切り換えモジュールとを含む、コンセンサス装置を提供する。
【００１０】
本出願の実装形態は、コンセンサス方法および装置を提供する。任意のビューにおいて、ブロックチェーンプライマリノードは、ビュー切り換え条件のトリガリングを能動的に監視する。ビュー切り換え条件がトリガされるならば、ブロックチェーンプライマリノードは、ビュー切り換えを実施することを必要とする。さらに、ブロックチェーンプライマリノードは、後継ノードを他のブロックチェーンノードから、次のビューにおいてのブロックチェーンプライマリノードとして選択する。それに応じて、ブロックチェーンプライマリノードは、ビュー切り換えを実施する。切り換えられたビューにおいて、後継ノードは、サービスを処理するための新しいブロックチェーンプライマリノードとして使用される。加えて、ビュー切り換えは、それでもなお、先のプロセスに基づいて実施される。明らかに、先のビュー切り換えは、ブロックチェーンプライマリノードにより開始される。そのようなやり方は、ブロックチェーンバックアップノードが、ビュー切り換えコンセンサスを開始することを防止する。換言すれば、追加的なコンセンサスが防止され得る。したがって、ブロックチェーンネットワークにおける、追加的な計算量および処理時間消費が低減され得る。
【００１１】
ここで説明される付随する図面は、本出願のさらなる理解をもたらすことを意図されるものであり、本出願の一部分をなす。本出願の例示的な実装形態、および、それらの実装形態の説明は、本出願を説明することを意図されるものであり、本出願に関する制限をなすものではない。付随する図面においては、以下の通りである。
【図面の簡単な説明】
【００１２】
【図１ａ】本出願の実装形態による、コンセンサスプロセスが基づくアーキテクチャを例示する図である。
【図１ｂ】本出願の実装形態による、コンセンサスプロセスを例示する図である。
【図２】本出願の実装形態による、任意のビューにおける3フェーズプロトコルに基づくコンセンサスプロセスを例示する概略線図である。
【図３】本出願の実装形態による、ビュー切り換えの応用実例の実行プロセスを例示する概略線図である。
【図４】本出願の実装形態による、コンセンサス装置を例示する概略構造線図である。
【発明を実施するための形態】
【００１３】
本出願の目的、技術的解決策、および利点をより明確にするために、後に続くことが、本出願の具体的な実装形態、および付随する図面を参照して、本出願の技術的解決策を、明確に、および包括的に説明する。明らかに、説明される実装形態は、本出願の実装形態のすべてではなく一部にすぎない。創造的努力なしに本出願の実装形態に基づいて当業者により得られるすべての他の実装形態は、本出願の保護範囲に該当するものとする。
【００１４】
上記で説明されたように、ブロックチェーンネットワーク内のノードがPBFTアルゴリズムを使用することによりコンセンサスを実施するというプロセスにおいて、ブロックチェーンプライマリノードが不良になると、ブロックチェーンバックアップノードが、ビュー切り換えを開始する。追加的なコンセンサスが、ブロックチェーンバックアップノードにより開始されるビュー切り換えに対して必要とされる。すなわち、ビュー切り換えは、他のブロックチェーンノードによる確認または受け付けの後にのみ完了され得る。明らかに、追加的なコンセンサスプロセスは、ブロックチェーンネットワークの計算量を増加させ、さらには、処理時間消費を増加させる。
【００１５】
よって、本出願の実装形態は、コンセンサス方法を提供する。任意のビューにおけるブロックチェーンプライマリノードについて、コンセンサスが終了した後、ブロックチェーンプライマリノードは、ビュー切り換えを開始して、ブロックチェーンプライマリノードを変更し、追加的なコンセンサスプロセスは必要とされない。説明を容易にするために、ブロックチェーンプライマリノードは、単純にプライマリノードと呼称され、ブロックチェーンバックアップノードは、単純にバックアップノードと呼称される。加えて、下記で説明される「ノード」は、コンセンサスに参加する、ブロックチェーンネットワーク内のノードと理解されるべきである。
【００１６】
本出願の実装形態において、コンセンサス方法において使用されるアーキテクチャが図1aにおいて示されるということに留意することは有意義である。ブロックチェーンネットワークは、複数のノードを含み、複数のクライアントデバイスが、ブロックチェーンネットワークとのサービスインタラクションを実施することができるということが、図1aから分かる。ブロックチェーンネットワークの応用タイプは、コンソーシアムブロックチェーンネットワークまたはプライベートブロックチェーンネットワークであり得るものであり、ブロックチェーンネットワークは、サービスをユーザに対して提供することができる。ノードは、サーバ、コンピュータ、モバイルデバイス、および、計算処理機能を有する他のデバイスを含むが、それらに制限されない。クライアントデバイスは、ブラウザ、アプリケーション、その他を作動させるように構成され得るものであり、クライアントデバイスは、エンドユーザデバイス、サーバ、またはデータベースであり得る。実装形態は、ここでは制限されない。
【００１７】
図1aにおいて示される関係性アーキテクチャに基づいて、本出願の実装形態において提供されるコンセンサスプロセスが、図1bにおいて示される。プロセスは、後に続くステップを含む。
【００１８】
S101:プライマリノードは、ビュー切り換え条件のトリガリングを監視する。
【００１９】
本出願のこの実装形態において、ビュー切り換え条件は、ビュー切り換えを実施するために満たされることを必要とする条件と考えられ得る。例えば、プライマリノードが、所定の期間の時間の中で、サービス要求をブロードキャストしない、または、コンセンサスを完了しない。
【００２０】
本出願のこの実装形態における可能なやり方において、タイマが、ビュー切り換え条件のトリガリングを監視するために、プライマリノード内にセットされ得る。例えば、タイマは、プライマリノードによりサービス要求をブロードキャストすることの挙動を計時して、プライマリノードによりサービス要求をブロードキャストすることの挙動が満了するかどうかを検出するために使用され得る。タイマは、プライマリノード上で作動する計時機能またはサービスと考えられ得るものであり、当然ながら、本出願に関する制限をなすものではない。
【００２１】
S102:プライマリノードは、ビュー切り換え条件のトリガリングが監視されるときに後継ノードを選択する。
【００２２】
ビュー切り換え条件がトリガされるならば、プライマリノードは、ビュー切り換えを実施することを必要とする。任意のビューにおいて、ただ1つのプライマリノードが存し、他のノードはバックアップノードであるということに留意することは有意義である。したがって、ビュー切り換えは、プライマリノードの切り換えを示す。したがって、本ステップにおいて、プライマリノードは、後継ノードを次のプライマリノードとして選択する(本出願のこの実装形態における後継ノードは、現在のビューにおけるプライマリノードと同じノードではない、すなわち、現在のビューにおけるプライマリノードは、後継ノードとして使用され得ない)。
【００２３】
S103:プライマリノードは、後継ノードに基づいて、現在のビューを、後継ノードを後続のプライマリノードとして使用する次のビューに切り換えることであって、後続のプライマリノードが、次のビューにおいてコンセンサスを開始するようにする、切り換えることを行う。
【００２４】
後継ノードが決定された後、プライマリノードは、ビュー切り換えを実施する。バックアップノードがビュー切り換えコンセンサスを開始するという既存のやり方において、バックアップノードがビュー切り換えコンセンサスを開始するというプロセスは、ビューにおけるプライマリノードの「弾劾」のプロセスと考えられ得る。既存のやり方とは異なり、本出願のこの実装形態において、プライマリノードがビュー切り換えを独立的に実施するというプロセスは、「能動的放棄」のプロセスと考えられ得るものであり、プライマリノードは、コンセンサスを開始することなくビュー切り換えを実施する。明らかに、追加的なコンセンサスプロセスが、さらには防止される。ビュー切り換えが実施された後、新しく指名されたプライマリノードが、切り換えられたビューにおいてコンセンサスを開始することに対して責任を負い、新しく指名されたプライマリノードもまた、先のビュー切り換えプロセスを実施するということが理解され得る。詳細は、簡潔さのために、ここでは省略される。
【００２５】
先のステップによれば、任意のビューにおいて、プライマリノードは、ビュー切り換え条件のトリガリングを能動的に監視する。ビュー切り換え条件がトリガされるならば、プライマリノードは、ビュー切り換えを実施することを必要とする。さらに、プライマリノードは、後継ノードを他のノードから、次のビューにおけるプライマリノードとして選択する。それに応じて、プライマリノードは、ビュー切り換えを実施する。切り換えられたビューにおいて、後継ノードは、サービスを処理するための新しいプライマリノードとして使用される。加えて、ビュー切り換えは、それでもなお、先のプロセスに基づいて実施される。明らかに、先のビュー切り換えは、プライマリノードにより開始される。そのようなやり方は、バックアップノードが、ビュー切り換えコンセンサスを開始することを防止する。換言すれば、追加的なコンセンサスが防止され得る。したがって、ブロックチェーンネットワークにおける追加的な計算量および処理時間消費が低減され得る。
【００２６】
実際に、異なるビュー切り換え条件が存在する。以下で、ビュー切り換え条件のトリガリングを詳細に説明する。
【００２７】
第1のシナリオ:
実際に、クライアントデバイスは、サービス要求をプライマリノードに送信する。正常な状態において、サービス要求を受信した後、プライマリノードは、サービス要求をビューにおいてのバックアップノードにブロードキャストして、サービス要求に関するコンセンサスを実施する。しかしながら、プライマリノードは、異常なノードであることがあり、サービス要求を受信した後の長い時間の間、サービス要求をブロードキャストしない。したがって、バックアップノードは、ビュー切り換えコンセンサスを開始する。したがって、プライマリノードが、所定の期間の時間の中で、サービス要求をブロードキャストしないという理由での、バックアップノードにより開始されるビュー切り換えコンセンサスを防止するために、プライマリノードは、計時を独立的に実施し、プライマリノードの満了現象を能動的に監視する。
【００２８】
換言すれば、このシナリオにおいて、ビュー切り換え条件が、プライマリノードが、所定の期間の時間の中で、サービス要求をブロードキャストしないということであるならば、ビュー切り換え条件をトリガすることは、以下、すなわち、プライマリノードにより、サービス要求を受信することと、所定の時間内にサービス要求に関するコンセンサスを開始することに失敗することとを含む。
【００２９】
実際の動作において、計時は、プライマリノード内の計時機能を有するプログラムまたはサービス、例えば、先に述べられたタイマにより実施され得る。計時は、プライマリノードがサービス要求を受信する時点から始められ得る。所定の時間は、5s、10s、その他にセットされ得るものであり、実際の要件に基づいて決定され得るものであり、本出願に関する制限をなすものではない。
【００３０】
第2のシナリオ:
先のシナリオとは異なり、このシナリオにおいて、サービス要求を受信した後、プライマリノードは、サービス要求を現在のビューにおいてのバックアップノードにブロードキャストする。換言すれば、プライマリノードは、所定の時間が満了する前に、サービス要求に関するコンセンサスを開始している。それに対応して、ビューにおいてのノードは、サービス要求に関するコンセンサスを実施し、コンセンサス結果を生成する。
【００３１】
ここでは、既存のビュー切り換え機構に基づいて、コンセンサス結果が、コンセンサスが失敗するということであるならば、バックアップノードは、ビュー切り換えコンセンサスを開始するということに留意することは有意義である。明らかに、コンセンサスが失敗するということは、ビュー切り換え条件と考えられ得る。換言すれば、このシナリオにおいて、コンセンサスが失敗するとき、プライマリノードは、ビュー切り換えを能動的に実施して、バックアップノードが追加的なビュー切り換えコンセンサスを開始することを防止する。
【００３２】
加えて、既存のビュー切り換え機構に基づいて、コンセンサス結果が、コンセンサスが達せられるということであるならば、プライマリノードは、別のサービス要求に関するコンセンサスを開始することを継続する。しかしながら、プライマリノードは、後続の作動するプロセスにおいて不良であることがある。プライマリノードが不良になると、バックアップノードは、やはりビュー切り換えコンセンサスを開始する。したがって、この事例を防止するために、本出願のこの実装形態において、コンセンサスが達せられた後、プライマリノードは、それでもなおビュー切り換えを実施する。
【００３３】
このシナリオにおいて、コンセンサス結果が、コンセンサスが達せられるということであるか、コンセンサスが失敗するということであるかに関わらず、プライマリノードは、コンセンサス結果を決定した後にビュー切り換えを実施するということが認められ得る。換言すれば、ビュー切り換え条件をトリガすることは、以下、すなわち、プライマリノードにより、サービス要求を受信することと、サービス要求に関するコンセンサスを開始することと、コンセンサス結果を決定することとを含む。
【００３４】
すなわち、このシナリオにおいて、プライマリノードは、コンセンサスが達せられたと、または、コンセンサスが失敗すると決定することを必要とする。以下は、どのようにプライマリノードが、コンセンサスが達せられたと、または、コンセンサスが失敗すると決定するかを詳細に説明する。
【００３５】
最初に、サービス要求に基づくコンセンサスプロセスは、本質的には、3フェーズプロトコルに基づくコンセンサスプロセスであるということに留意することは有意義である。3つのフェーズは、前準備フェーズと、準備フェーズと、コミットフェーズとを含み、完全なコンセンサスプロセスを形成する。各々のフェーズにおいて、ノード(プライマリノードおよびバックアップノードの両方を含む)は、コンセンサスメッセージを互いに送信する。すなわち、ビューにおいての各々のノードにとって、異なるフェーズに入ることは、他のノードにより確認され、または受け付けられることを必要とする。したがって、3つのフェーズの各々は、コンセンサスプロセスと考えられ得る。通常、すべてのノードがコミットフェーズに入るとき、コンセンサスプロセスが完了されるということが考えられ得る。
【００３６】
図2は、ビューにおいての3フェーズプロトコルに基づくノードのコンセンサスプロセスである。図2において、クライアントデバイスは、0と番号付けされたノード(レプリカ0、すなわち、プライマリノード)へのサービス要求を開始し、プライマリノードは、サービス要求をバックアップノード(レプリカ1、レプリカ2、およびレプリカ3)にブロードキャストし、3フェーズコンセンサスを実施することを始める。コンセンサスに達するノードは、サービス要求を処理し、処理結果をクライアントデバイスにフィードバックする。
【００３７】
それに応じて、後に続く動作が実施される。
【００３８】
1.プライマリノードは、コンセンサスが失敗すると決定する。
【００３９】
本出願のこの実装形態において、コンセンサスが失敗するということは、コンセンサスプロセス満了(単純にコンセンサス満了と下記で呼称され、コンセンサス満了は、コンセンサスプロセスにより消費される時間が、所定のコンセンサス持続時間を超過するということを意味し、コンセンサスプロセスにより消費される時間は、プライマリノードがコンセンサスを開始する時点から計数され得る)として表される。理由は、後に続くようなものである。
【００４０】
1つの事例において、プライマリノードは、不良のノードである(ノードが不良であるならば、ノード内でコンセンサスを実施するために使用されるデータは不良である、または、ノード内のコンセンサス論理は不良であるということが考えられ得る)。すなわち、プライマリノードによりバックアップノードに送信されるサービス要求は、不正確なデータ(例えば、不正確なサービス要求シーケンス番号)を含むことがある。PBFT機構により保証されて、バックアップノードは、プライマリノードによりブロードキャストされるサービス要求をチェックする。不正確なデータがサービス要求内に含まれると、正常なバックアップノードは、サービス要求を確認または受け付けない。この事例において、プライマリノードは、サービス要求を送信するプロセスを繰り返すことがあり、その結果、コンセンサスは満了する。
【００４１】
代替的に、別の事例において、プライマリノードは、同じように不良のノードである。この事例において、プライマリノードは、コンセンサスフェーズを指示する不正確な通知メッセージを他のバックアップノードに送信することがあり、すなわち、プライマリノードは、所定のフェーズに入ったということを「不正確に」考える。この事例において、バックアップノードは、プライマリノードの通知メッセージに関するコンセンサスを実施して、プライマリノードの通知メッセージの真正性を確認する。同様に、正常なバックアップノードは、やはり、プライマリノードにより送信される通知メッセージを確認または受け付けない。この事例において、プライマリノードは、不正確な通知メッセージを送信するプロセスを繰り返すことがあり、その結果、コンセンサスは満了する。
【００４２】
当然ながら、先の内容は、実際のコンセンサス満了につながり得る、ただ2つの可能な事例であり、本出願に関する制限と考えられるべきではない。明らかに、先の内容から、コンセンサスが満了すると、コンセンサスは失敗するということが分かる。
【００４３】
したがって、本出願のこの実装形態において、プライマリノードは、コンセンサスが失敗するかどうかを、コンセンサスプロセスの全体的な時間消費具合を監視することにより検出することができる。コンセンサスプロセスが満了すると、プライマリノードは、ビュー切り換え動作を直ちに開始し、バックアップノードにより開始されるビュー切り換えの追加的なコンセンサスプロセスが防止され得る。すなわち、本出願のこの実装形態において、プライマリノードが、コンセンサスが失敗すると決定するというプロセスは、以下のようなものであり得る:プライマリノードは、コンセンサスプロセスにより消費される時間を、サービス要求に関するコンセンサスがビューにおいてのバックアップノードの間で開始される時点から監視し、コンセンサスにより消費される時間が、所定の時間を超過するということが検出されるとき、コンセンサスが失敗すると決定する。
【００４４】
2.プライマリノードは、コンセンサスが達せられると決定する。
【００４５】
先の3フェーズプロトコルから、ノードがコミットフェーズに入るならば、ノードは、サービス要求を処理し、生成される処理結果をクライアントデバイスにフィードバックすることができるということが分かる。加えて、フェーズに入るために、各々のノードは、ビューにおいての他のノードにより確認され、または受け付けられることを必要とする。したがって、ノードがコミットフェーズに入るならば、そのことは、ノードが他のノードにより確認され、または受け付けられるということを示す。プライマリノードがコミットフェーズに入るならば、そのことは、コンセンサスが達せられたということを示すということが分かる。このことは、なぜならば、PBFT機構において、ノードがフェーズに入るならば、そのことは、ノードの状態が、ビューにおいての大部分のノードにより確認され、または受け付けられるということを示すからである。それに応じて、そのことは、大部分のノードが正しいノードであるということを示す。
【００４６】
したがって、そのようなやり方において、プライマリノードが、コンセンサスが達せられると決定するというプロセスは、以下の通りであり得る:プライマリノードは、プライマリノードの対応するフェーズを監視し、プライマリノードが、プライマリノードがコミットフェーズに入り、所定のコンセンサス持続時間が満了しないということを検出するとき、コンセンサスが完了されると決定する。すなわち、プライマリノードがコミットフェーズに入るということを確認するとき、プライマリノードは、コミットフェーズに入るためにプライマリノードにより消費される時間が、所定の時間を超過しないということを保証することをさらに必要とする。
【００４７】
本出願のこの実装形態においての別のやり方において、プライマリノードは、通知メッセージを他のノードに送信しないことがある(すなわち、プライマリノードは、不良のノードであることがある)。しかしながら、プライマリノードは、それでもなお、バックアップノードにより送信される通知メッセージを受信することができる。この事例において、所定の数量のノードがコミットフェーズに入るならば、コンセンサスは完了されるということが考えられ得る。
【００４８】
実際に、ノードがコミットフェーズに入った後、ノードは、通常、通知メッセージをビューにおいての他のノードに送信し、通知メッセージは、例えば、<commit, v, n, D(m)>であり得るものであり、「commit」は、ノードがコミットフェーズに入ったということを示し、「v」は、ビュー番号を示し、「n」は、サービス要求のシーケンス番号を示し、「D(m)」は、通知メッセージを送信するノードによりサービス要求に関して実施される署名を示す。
【００４９】
プライマリノードは、プライマリノードにより受信される、およびコミットフェーズに入るということを示す通知メッセージに関しての統計情報を収集することができる。受信される通知メッセージの数量が2f+1より大であるならば、そのことは、十分なノードがコンセンサスに達するということを示す。次いで、そのことは、コンセンサスが完了されるということを示す。fは、PBFT機構においての許容可能な不正確なノードの最大数量である。この事例において、プライマリノードは、コンセンサスが完了されると決定することができる。
【００５０】
したがって、プライマリノードが、コンセンサスが達せられると決定するというプロセスは、さらには、以下のようなものであり得る:プライマリノードは、プライマリノードにより受信される、および、バックアップノードがコミットフェーズに入るということを示し、通知メッセージを監視し、プライマリノードが、受信される通知メッセージの数量が、所定の数量を超過し、所定のコンセンサス持続時間が満了しないということを検出するとき、コンセンサスが完了されると決定する。
【００５１】
コンセンサスが完了した後、プライマリノードは、ビュー切り換えを開始して、プライマリノードを変更し、新しいビューに入る。
【００５２】
以下は、本出願のこの実装形態におけるビュー切り換えプロセスを説明する。
【００５３】
PBFT機構において、各々のビューは、対応する番号を有する。例えば、先の例においてvは、現在のビューの番号を表す。それに対応して、ブロックチェーンネットワーク内の各々のノードは、対応する番号を有する。ブロックチェーンネットワーク内に総数R個のノードが存在するならば、ノードの番号は、0からR-1であり、例えば、レプリカ0、レプリカ1、…、およびレプリカR-1である。ノード番号とビュー番号との間に関係性が存する。レプリカpが、番号pを伴うノードを表すために使用されるならば、ノード番号およびビュー番号は、次の式を満たす:p=v mod R、ただし、vは、0から正の無限大までの整数である。
【００５４】
この関係性は、ノード番号pが、ビュー番号vの、ブロックチェーンネットワーク内に含まれるノードの数量Rを法とする剰余演算の後に得られるということを示す。
【００５５】
換言すれば、vは、0からR-1の範囲にわたるので、プライマリノードの識別情報が、異なるノードに順次引き渡されるということが保証される。例えば、現在のビューのプライマリノードがレプリカ0(ビュー番号0に対応する)であるならば、次のビュー(1と番号付けされる)においてプライマリノードは、レプリカ1である。すべてのノードは、このやり方においてトラバースされる。
【００５６】
したがって、本出願のこの実装形態において、ビュー切り換えプロセスは、以下、すなわち、プライマリノードによりプライマリノードの番号を決定することと、プライマリノードの番号に基づいて、ノードであって、その番号がプライマリノードの番号の後に配列される、ノードを決定することと、ビュー切り換え通知メッセージを、決定されたノードに基づいて生成することと、ビュー切り換えメッセージを各々のバックアップノードに送信して、ビュー切り換えを実施することを、決定されたノードが、次のビューにおけるプライマリノードになるように行うこととを含むということが分かる。
【００５７】
以下は、説明のために具体的な応用実例を使用する。図3において示されるように、実例は、以下のステップを含む。
【００５８】
S301:vと番号付けされたビューにおいてプライマリノードpは、クライアントデバイスにより送信されるサービス要求を受信し、計時を実施する。
【００５９】
S302:所定の時間が満了するとき、ビューにおいて各々のバックアップノードへのサービス要求に関するコンセンサスを開始すべきかどうかを決定し、「はい」ならば、ステップS303を実施し、さもなければ、ステップS305を実施する。
【００６０】
S303:コンセンサス結果を得る。
【００６１】
S304:コンセンサスが達せられるかどうかを決定し、ステップS305を実施する。
【００６２】
S305:ビューvをビューv+1に切り換え、p+1と番号付けされたノードを、ビューv+1におけるプライマリノードと決定する。
【００６３】
先のビュー切り換えが、プライマリノードにより開始される。そのようなやり方は、バックアップノードがビュー切り換えコンセンサスを開始することを防止する。
【００６４】
上記のことは、本出願の実装形態において提供されるコンセンサス方法である。同じ着想に基づいて、本出願の実装形態は、コンセンサス装置をさらに提供する。図4において示されるように、任意のビューに対して、コンセンサス装置は、以下、すなわち、ビュー切り換え条件のトリガリングを監視するように構成される監視モジュール401と、監視モジュールがビュー切り換え条件のトリガリングを監視するときに後継ノードを選択するように構成されるノード決定モジュール402と、後継ノードに基づいて、現在のビューを、後継ノードを後続のブロックチェーンプライマリノードとして使用する次のビューに切り換えることであって、後続のブロックチェーンプライマリノードが、次のビューにおいてコンセンサスを開始するようにする、切り換えることを行うように構成されるビュー切り換えモジュール403とを含む。
【００６５】
サービス要求が受信され、サービス要求に関するコンセンサスが所定の時間内に開始されないとの決定に応答して、監視モジュール401は、ビュー切り換え条件のトリガリングが監視されると決定する。
【００６６】
サービス要求が受信され、サービス要求に関するコンセンサスが開始され、コンセンサス結果が決定されるとの決定に応答して、監視モジュール401は、ビュー切り換え条件のトリガリングが監視されると決定する。
【００６７】
ノード決定モジュール402は、現在のビューの次のビューを決定し、次のビューに対応する後継ノードを決定する。
【００６８】
ビュー切り換えモジュール403は、現在のビューを、決定された次のビューに切り換え、後継ノードは、次のビューにおけるプライマリノードとして使用される。
【００６９】
任意のビューにおいてノードは、コンソーシアムブロックチェーンネットワークまたはプライベートブロックチェーンネットワーク内のノードを含む。
【００７０】
1990年代においては、技術的改善が、ハードウェア改善(例えば、ダイオード、トランジスタ、またはスイッチなどの回路構造に対する改善)であるか、それともソフトウェア改善(方法手順に対する改善)であるかは、明確に区別され得る。しかしながら、技術が発達するにつれて、多くの方法手順に対する現在の改善は、ハードウェア回路構造に対する直接的改善と考えられ得る。設計者は、通常、改善された方法手順をハードウェア回路内へとプログラムして、対応するハードウェア回路構造を得る。したがって、方法手順は、ハードウェアエンティティモジュールを使用することにより改善され得る。例えば、プログラマブル論理デバイス(PLD)(例えば、フィールドプログラマブルゲートアレイ(FPGA))は、そのような集積回路であり、PLDの論理機能は、ユーザにより、デバイスプログラミングによって決定される。設計者は、チップ製造業者に特定用途向け集積回路チップを設計および生産することを要求することなく、プログラミングを実施して、デジタルシステムをPLDへと「集積する」。加えて、現時において、集積回路チップを手作業で製造する代わりに、そのようなプログラミングは、たいていは、「論理コンパイラ」ソフトウェアを使用することにより実施される。論理コンパイラソフトウェアは、プログラムを開発し書き表すために使用されるソフトウェアコンパイラと同様である。元のコードは、コンパイルのために特定のプログラミング言語の形で書き表されることを必要とする。言語は、ハードウェア記述言語(HDL)と呼称される。アドバンストブール演算式言語(ABEL:Advanced Boolean Expression Language)、Alteraハードウェア記述言語(AHDL)、Confluence、Cornell Universityプログラミング言語(CUPL)、HDCal、Javaハードウェア記述言語(JHDL)、Lava、Lola、MyHDL、PALASM、およびRubyハードウェア記述言語(RHDL)などの、多くのHDLが存する。超高速集積回路ハードウェア記述言語(VHDL)およびVerilogが、最も普通に使用される。当業者は、さらには、論理方法手順を実施するハードウェア回路は、その方法手順が、いくつもの説明されたハードウェア記述言語を使用することにより論理的にプログラムされ、集積回路内へとプログラムされれば、容易に得ることができるということが理解されよう。
【００７１】
コントローラは、任意の適切な方法を使用することにより実施され得る。例えば、コントローラは、マイクロプロセッサもしくはプロセッサ、または、マイクロプロセッサもしくはプロセッサにより実行され得るコンピュータ可読プログラムコード(ソフトウェアまたはファームウェアなど)を記憶するコンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラ、または内蔵マイクロプロセッサであり得る。コントローラの例は、以下のマイクロプロセッサ:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、およびSilicon Labs C8051F320を含むが、それらに制限されない。メモリコントローラが、さらには、メモリの制御論理の一部分として実施され得る。当業者は、さらには、コンピュータ可読プログラムコードを使用することによりコントローラを実施することに加えて、論理プログラミングが、方法ステップに関して、コントローラが、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブル論理コントローラ、および内蔵マイクロプロセッサの形式において同じ機能を実施することを可能とするために実施され得るということを知っている。したがって、コントローラは、ハードウェア構成要素と考えられ得るものであり、コントローラ内の様々な機能を実施するように構成される装置は、さらには、ハードウェア構成要素内の構造と考えられ得る。または、様々な機能を実施するように構成される装置は、方法を実施するソフトウェアモジュール、および、ハードウェア構成要素内の構造の両方と考えられることさえある。
【００７２】
先の実装形態において例示されたシステム、装置、モジュール、またはユニットは、コンピュータチップもしくはエンティティを使用することにより実施され得るものであり、または、所定の機能を有する製品を使用することにより実施され得る。典型的な実装形態デバイスはコンピュータである。コンピュータは、例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲームコンソール、タブレットコンピュータ、またはウェアラブルデバイス、または、これらのデバイスのうちの任意のものの組み合わせであり得る。
【００７３】
説明を容易にするために、上記の装置は、機能を様々なユニットに分割することにより説明されている。当然ながら、本出願が実施されるとき、各々のユニットの機能は、1つまたは複数のまとまりの、ソフトウェアおよび/またはハードウェアにおいて実施され得る。
【００７４】
当業者は、本開示の実装形態が、方法、システム、またはコンピュータプログラム製品として提供され得るということを理解するはずである。したがって、本開示は、ハードウェアのみの実装形態、ソフトウェアのみの実装形態、または、ソフトウェアおよびハードウェアの組み合わせによる実装形態の形式を使用し得る。なおまた、本開示は、コンピュータ使用可能プログラムコードを含む、1つまたは複数のコンピュータ使用可能記憶媒体(ディスクメモリ、CD-ROM、光学メモリ、その他を含むが、それらに制限されない)上で実施されるコンピュータプログラム製品の形式を使用し得る。
【００７５】
本開示は、本開示の実装形態に基づく方法、デバイス(システム)、およびコンピュータプログラム製品の、フローチャートおよび/またはブロック線図を参照して説明されている。コンピュータプログラム命令は、フローチャートおよび/またはブロック線図内の、各々のプロセスおよび/または各々のブロック、ならびに、フローチャートおよび/またはブロック線図内の、プロセスおよび/またはブロックの組み合わせを実施するために使用され得るということに留意することは有意義である。これらのコンピュータプログラム命令は、機械を生成するために、汎用コンピュータ、専用コンピュータ、埋め込み型プロセッサ、または、別のプログラマブルデータ処理デバイスのプロセッサに対して提供され得るものであり、そのことによって、コンピュータ、または、別のプログラマブルデータ処理デバイスのプロセッサにより実行される命令は、フローチャート内の1つもしくは複数のプロセス内の、および/または、ブロック線図内の1つもしくは複数のブロック内の、特定の機能を実施するための装置を生成する。
【００７６】
これらのコンピュータプログラム命令は、コンピュータ、または、別のプログラマブルデータ処理デバイスに、特定のやり方において稼働するように命令することができる、コンピュータ可読メモリ内に記憶され得るものであり、そのことによって、コンピュータ可読メモリ内に記憶される命令は、命令装置を含む人工物を生成する。命令装置は、フローチャート内の1つもしくは複数のプロセス内の、および/または、ブロック線図内の1つもしくは複数のブロック内の、特定の機能を実施する。
【００７７】
これらのコンピュータプログラム命令は、コンピュータ、または、別のプログラマブルデータ処理デバイス上へとロードされ得るものであり、そのことによって、一連の動作およびステップが、コンピュータ、または、別のプログラマブルデバイス上で実施され、以て、コンピュータ実施処理を生成する。したがって、コンピュータ、または、別のプログラマブルデバイス上で実行される命令は、フローチャート内の1つもしくは複数のプロセス内の、および/または、ブロック線図内の1つもしくは複数のブロック内の、特定の機能を実施するためのステップを提供する。
【００７８】
典型的な構成において、コンピューティングデバイスは、1つまたは複数のプロセッサ(CPU)と、1つまたは複数の入出力インターフェイスと、1つまたは複数のネットワークインターフェイスと、1つまたは複数のメモリとを含む。
【００７９】
メモリは、コンピュータ可読媒体の形のものである、非永続的メモリ、ランダムアクセスメモリ(RAM)、不揮発性メモリ、および/または、別の形式、例えば、読み出し専用メモリ(ROM)もしくはフラッシュメモリ(フラッシュRAM)を含み得る。メモリは、コンピュータ可読媒体の例である。
【００８０】
コンピュータ可読媒体は、任意の方法または技術を使用することにより情報を記憶することができる、永続的、非永続的、移動可能、および移動不可能媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータであり得る。コンピュータ記憶媒体の例は、パラメータランダムアクセスメモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、別のタイプのランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリ、または別のメモリ技術、コンパクトディスク読み出し専用メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、または別の光学記憶機構、カセット磁気テープ、磁気テープ/磁気ディスク記憶機構、または別の磁気記憶デバイスを含むが、それらに制限されない。コンピュータ記憶媒体は、コンピューティングデバイスによりアクセス可能な情報を記憶するために使用され得る。本明細書における定義に基づいて、コンピュータ可読媒体は、変調されるデータ信号および搬送波などの一時的コンピュータ可読媒体(一時的媒体)を含まない。
【００８１】
用語「含む」、「内包する」、または、それらの任意の他の異形は、非排他的な含みを包含することを意図され、そのため、要素の列挙を含むプロセス、方法、製品、またはデバイスは、それらの要素を含むのみではなく、さらには、明示的に列挙されない他の要素を含む、または、そのようなプロセス、方法、製品、もしくはデバイスに固有の要素をさらに含むということにさらに留意することは有意義である。これ以上の制約がなければ、「…を含む」により先導される要素は、要素を含むプロセス、方法、製品、またはデバイス内の追加的な同一の要素の存在を排除しない。
【００８２】
当業者は、本出願の実装形態が、方法、システム、またはコンピュータプログラム製品として提供され得るということを理解するはずである。したがって、本出願は、ハードウェアのみの実装形態、ソフトウェアのみの実装形態、または、ソフトウェアおよびハードウェアの組み合わせによる実装形態の形式を使用し得る。なおまた、本出願は、コンピュータ使用可能プログラムコードを含む、1つまたは複数のコンピュータ使用可能記憶媒体(ディスクメモリ、CD-ROM、光学メモリ、その他を含むが、それらに制限されない)上で実施されるコンピュータプログラム製品の形式を使用し得る。
【００８３】
本出願は、コンピュータにより実行されるコンピュータ実行可能命令、例えばプログラムモジュールの一般的な文脈において説明され得る。一般的には、プログラムモジュールは、特定のタスクを実行する、または、特定の抽出データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。本出願は、さらには、分散コンピューティング環境内で実践され得る。分散コンピューティング環境内では、タスクは、通信ネットワークを通して接続されるリモート処理デバイスにより実施される。分散コンピューティング環境内では、プログラムモジュールは、ローカルおよびリモートの両方の、記憶デバイスを含むコンピュータ記憶媒体内に配置され得る。
【００８４】
本明細書における実装形態は、漸進的なやり方において説明されている。実装形態の同じまたは同様の部分については、それらの実装形態に対して参照が行われ得る。各々の実装形態は、他の実装形態との違いに重点を置く。特に、システム実装形態は、基本的には方法実装形態と同様であり、したがって、簡潔に説明されている。関連した部分については、方法実装形態における関連した説明を参照することができる。
【００８５】
先の実装形態は、本出願の実装形態であり、本出願を制限することを意図されない。当業者は、様々な修正および変更を本出願に対して行うことができる。本出願の趣旨および原理から逸脱することなく行われる、いかなる修正、等価的置換、または改善も、本出願においての特許請求の範囲の範囲に該当するものとする。
【符号の説明】
【００８６】
401  監視モジュール
402  ノード決定モジュール
403  ビュー切り換えモジュール
【図１ａ】
0006756918.tif 000002
【図１ｂ】
0006756918.tif 000003
【図２】
0006756918.tif 000004
【図３】
0006756918.tif 000005
【図４】
0006756918.tif 000006