(57)【要約】【課題】ブロックチェーン・ネットワークのインフラストラクチャ用のサービス・マネジメントを促進する技法を提供する。【解決手段】システムは、メモリと、メモリに記憶されるコンピュータ実行可能コンポーネントを実行させるプロセッサとを備える。コンピュータ実行可能コンポーネントは、割り当てコンポーネントと、グループ化コンポーネントと、実装コンポーネントとを備えることができる。割り当てコンポーネントは、ブロックチェーン・ネットワーク内で、第１のノード・タイプのノードの第１のグループを動作スロットの第１のセットに、また、第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループを動作スロットの第２のセットに割り振ることができる。グループ化コンポーネントは、動作スロットの第２のセットに割り振られたノードの第２のグループを、動作スロットの第１のセット内のノードの第１のグループと集約することができる。実装コンポーネントは、サービス・マネジメント動作を実行することができる。合意アルゴリズムは、サービス・マネジメント動作の実行中に満たされ得る。【選択図】図１
2021515293.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
プロセッサに動作可能に連結されたシステムにより、およびブロックチェーン・ネットワーク内で、第１のノード・タイプのノードの第１のグループを動作スロットの第１のセットに、また、前記第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループを動作スロットの第２のセットに割り振ることと、
前記システムにより、前記動作スロットの第２のセットに割り振られた前記ノードの第２のグループを、前記動作スロットの第１のセット内の前記ノードの第１のグループと集約することであって、前記動作スロットの第１のセットのうちの１つまたは複数が、前記ノードの第１のグループおよび前記ノードの第２のグループ両方に対応する複数の割り振られたノードを備える、前記集約することと、
前記システムにより、前記ノードの第１のグループと前記動作スロットの第１のセット内で集約される前記ノードの第２のグループとを前記集約することに基づいてサービス・マネジメント動作を実行することであって、合意アルゴリズムは、前記サービス・マネジメント動作を前記実行することの間に満たされる、前記実行することと
を含む、コンピュータ実装方法。
【請求項２】
前記ノードの第１のグループを前記割り振ることが、前記ノードの第２のグループを前記割り振ることとは独立して実施される、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記ブロックチェーン・ネットワーク内で、前記ノードの第１のグループがピア・ノードであり、前記ノードの第２のグループがｏｒｄｅｒｅｒノードである、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記第１のノード・タイプが前記ブロックチェーン・ネットワークに存在する第１の機能性であり、前記第２のノード・タイプが前記ブロックチェーン・ネットワークに存在する第２の機能性であり、前記第１の機能性が前記第２の機能性とは異なっている、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記システムにより、前記ブロックチェーン・ネットワーク内の、前記ノードの第１のグループに関連付けられるエンドースメント・ポリシ、および前記ノードの第２のグループに関連付けられる前記合意アルゴリズムに基づいて前記サービス・マネジメント動作を実行すること
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記システムにより、取引にデジタル署名を適用することに基づいて前記取引を承認するために必要とされる前記ノードの第２のグループの最小数を決定すること
をさらに含む、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記合意アルゴリズムが、ｉｎ−ｓｅｒｖｉｃｅである前記ノードの第１のグループおよび前記ノードの第２のグループの最小数を維持することにより、ブロックチェーンのそれぞれのブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供する、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記ノードの第２のグループが承認を行うエンティティであり、前記コンピュータ実装方法が、
前記システムにより、前記ブロックチェーン・ネットワークにサブミットされる取引を受信することと、
前記システムにより、前記ノードの第２のグループのうちの２つ以上のノードが前記取引を承認したことを判断することと，
前記システムにより、前記サービス・マネジメント動作を前記実行することの間に前記取引を完了することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記ノードの第２のグループを前記集約することが、前記システムにより、前記サービス・マネジメント動作を前記実行することの間、前記ノードの第１のグループおよび前記ノードの第２のグループを更新するために実施されるステップ数を最小にすることを含む、請求項１に記載のコンピュータ実装方法。
【請求項１０】
請求項１ないし９のいずれかの請求項に記載の方法のすべてのステップを遂行するように構成される手段を含む、システム。
【請求項１１】
コンピュータ・プログラムがコンピュータ・システム上で実行される時、請求項１ないし９のいずれかの請求項に記載の方法のすべてのステップを遂行するための命令を含む、コンピュータ・プログラム。
【請求項１２】
ブロックチェーン・ネットワークであって、
前記ブロックチェーン・ネットワークにおいて第１の機能性を実行するノードの第１のセットと、
前記ブロックチェーン・ネットワークにおいて第２の機能性を実行するノードの第２のセットであって、前記第１の機能性は前記第２の機能性とは異なっている、前記ノードの第２のセットと、
コンピュータ実行可能コンポーネントを記憶するメモリと、前記メモリに記憶される前記コンピュータ実行可能コンポーネントを実行するプロセッサとを備えるサービス・マネジメント・エンジンであって、前記コンピュータ実行可能コンポーネントが、
前記ノードの第１のセットが前記第１の機能性を実行し、前記ノードの第２のセットが前記第２の機能性を実行することを判断するカテゴリ化コンポーネントと、
前記ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、および前記ノードの第２のセットについて前記サービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定する規則コンポーネントと、
前記ステップの第１の数量と前記ステップの第２の数量との集約に基づいて前記サービス・マネジメント動作を実行する実装コンポーネントであって、前記集約は、前記サービス・マネジメント動作の実行についてステップの最小数を規定する、前記実装コンポーネントと
を備える、前記サービス・マネジメント・エンジンと
を備える、ブロックチェーン・ネットワーク。
【請求項１３】
前記規則コンポーネントが、前記ノードの第１のセット内のノードの数量が、前記サービス・マネジメント動作について指定されるノードの規定された数量未満であると判断し、前記コンピュータ実行可能コンポーネントが、
１つまたは複数のノードを前記ノードの第１のセットに追加する挿入コンポーネントであって、前記挿入コンポーネントが前記ノードの第１のセット内のノードの数量と前記ノードの規定された数量との差異に基づいて、追加するノードの数量を決定する、前記挿入コンポーネント
をさらに備える、請求項１２に記載のブロックチェーン・ネットワーク。
【請求項１４】
前記規則コンポーネントが、前記ノードの第１のセット内のノードの数量が、前記サービス・マネジメント動作について指定されるノードの規定された数量より多いと判断し、前記実装コンポーネントが、前記ブロックチェーン・ネットワークにおける処理効率を損なうことなく前記ノードの第１のセットに対して前記サービス・マネジメント動作を実行する、請求項１２に記載のブロックチェーン・ネットワーク。
【請求項１５】
コンピュータ実装方法であって、
プロセッサに動作可能に連結されたシステムにより、ブロックチェーン・ネットワーク内のノードの第１のセットが第１の機能性を実行すること、および前記ブロックチェーン・ネットワーク内のノードの第２のセットが前記第１の機能性とは異なる第２の機能性を実行すること、を判断することと、
前記システムにより、前記ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、および前記ノードの第２のセットについて前記サービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定することと、
前記システムにより、前記ステップの第１の数量と前記ステップの第２の数量との集約に基づいて前記サービス・マネジメント動作を実行することであって、前記集約が、前記サービス・マネジメント動作の実行についてステップの最小数を規定する、前記実行することと
を含む、コンピュータ実装方法。
【請求項１６】
前記システムにより、前記ノードの第１のセット内のノードの数量が前記サービス・マネジメント動作について指定されるノードの規定された数量を満たすかどうかを判断することと、
前記システムにより、前記ノードの数量が前記ノードの規定された数量より少ないという前記判断に基づいて、１つまたは複数のノードを前記ノードの第１のセットに追加することであって、前記追加するノードの数量が前記ノードの第１のセット内の前記ノードの数量と前記ノードの規定された数量との差異に基づいて決定される、前記追加することと
をさらに含む、請求項１５に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、分散コンピューティング・システムに関し、より詳細には相互依存性のあるブロックチェーン・ネットワーク機能のためのサービス・マネジメントに関する。
【背景技術】
【０００２】
ブロックチェーン・ネットワークでは、サーバのコンテナとして様々なタイプのノードをホストすることができる。様々なタイプのノードのセットが、様々な機能性を提供することができ、そのためノードの様々な機能性を考慮してノードのマネジメントを実施するべきである。
【０００３】
例えば、Ｃａｒｌｅｎら（米国特許第９，６４５，８１１号）は、「コンテナが、実施されており、かつ制御ノードの他のコンテナで実施されている他のサービスから隔離されているサービスを含む、制御ノードにおいてコンテナの故障を検出する方法（a method that detects a failure of a container in a controller node where the container includes a service being performed and isolated from other services being performed in other containers on the controller node）」（要約書参照）を議論している。「制御ノードは、サービスを含むコンテナを終了し、そのサービスについての既知の状態を決定する。（The controller node terminates the container including the service and determines a known state for the service.）」（同文献参照）。「制御ノードは、終了されたコンテナを置き換える新しいコンテナでサービスを再開し、ここで、再開されるサービスは変更を使用することなく既知の状態から開始する。（The controller node restarts the service in a new container that replaces the terminated container where the restarted service starts from the known state without using the changes.）」（同文献参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９，６４５，８１１号
【発明の概要】
【０００５】
本発明の１つまたは複数の実施形態の基本的な理解を与えるための概要を以下に提示する。この概要は主要もしくは重要な要素を特定すること、または特定の実施形態のいかなる範囲もしくは特許請求の範囲のいかなる範囲をも詳述することを意図されていない。その唯一の目的は、後に提示されるより詳細な説明への導入部として簡素化された形式での概念を提示することである。本明細書において説明される１つまたは複数の実施形態において、ブロックチェーン・ネットワークのインフラストラクチャ用のサービス・マネジメントを促進するシステム、コンピュータ実装方法、装置またはコンピュータ・プログラム製品あるいはその組合せが、提供される。
【課題を解決するための手段】
【０００６】
一実施形態によると、システムは、コンピュータ実行可能コンポーネントを記憶するメモリと、メモリに記憶されるコンピュータ実行可能コンポーネントを実行させるプロセッサとを備えることができる。コンピュータ実行可能コンポーネントは、ブロックチェーン・ネットワーク内で、第１のノード・タイプのノードの第１のグループを動作スロットの第１のセットに、また、第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループを動作スロットの第２のセットに割り振る割り当てコンポーネントを備えることができる。コンピュータ実行可能コンポーネントは、動作スロットの第２のセットに割り振られたノードの第２のグループを、動作スロットの第１のセット内のノードの第１のグループと集約するグループ化コンポーネントをさらに備えることができる。動作スロットの第１のセットのうちの１つまたは複数は、ノードの第１のグループおよびノードの第２のグループ両方に対応する複数の割り振られたノードを備えることができる。さらには、コンピュータ実行可能コンポーネントは、動作スロットの第１のセット内でノードの第１のグループとノードの第２のグループとを集約するグループ化コンポーネントに基づいてサービス・マネジメント動作を実行することができる実装コンポーネントを備えることができる。合意アルゴリズムは、サービス・マネジメント動作の実行中に満たされ得る。
【０００７】
一例では、割り当てコンポーネントは、ノードの第１のグループを、ノードの第２のグループの割り振りとは独立して割り振ることができる。別の例によると、第１のノード・タイプは、ブロックチェーン・ネットワークに存在する第１の機能性であり得る。さらには、この例については、第２のノード・タイプは、ブロックチェーン・ネットワークに存在する第２の機能性であり得る。第１の機能性は、第２の機能性とは異なっていることができる。
【０００８】
別の例では、実装コンポーネントは、ブロックチェーン・ネットワーク内の、ノードの第１のグループに関連付けられるエンドースメント・ポリシ、およびノードの第２のグループに関連付けられる合意アルゴリズムに基づいてサービス・マネジメント動作を実行することができる。この例にさらに付け加えると、エンドースメント・ポリシは、取引にデジタル署名を適用することにより取引を承認するために必要とされるノードの第２のグループの最小数を決定することができる。ノードの最小数を維持している間でも、サービス・マネジメント動作が進行中の取引についてのサービスからノードを除去すると、個々の取引を取り消すことができる。この状況では、クライアントは取引を再発行することができる。したがって、検証された取引がブロックチェーンに移ることを確実にすることができる。
【０００９】
一例によると、合意アルゴリズムは、ｉｎ−ｓｅｒｖｉｃｅであるノードの第１のグループおよびノードの第２のグループの最小数を維持することにより、ブロックチェーンの個々のブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供することができる。他の例によると、合意アルゴリズムは、ｉｎ−ｓｅｒｖｉｃｅであるそれぞれ複数のノード・グループ内の最小数のノードを維持することにより、ブロックチェーンの個々のブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供することができる。別の例によると、グループ化コンポーネントは、実装コンポーネントがサービス・マネジメント動作を実行している間、ノードの第１のグループおよびノードの第２のグループを更新するために実施されるステップ数を最小にすることができる。
【００１０】
別の実施形態は、プロセッサに動作可能に連結されたシステムにより、およびブロックチェーン・ネットワーク内で、第１のノード・タイプのノードの第１のグループを動作スロットの第１のセットに、また、第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループを動作スロットの第２のセットに割り振ることを含むことができるコンピュータ実装方法に関する。方法は、システムにより、動作スロットの第２のセットに割り振られたノードの第２のグループを、動作スロットの第１のセット内のノードの第１のグループと集約することをさらに含むことができる。動作スロットの第１のセットのうちの１つまたは複数は、ノードの第１のグループおよびノードの第２のグループ両方に対応する複数の割り振られたノードを備えることができる。さらには、方法は、システムにより、ノードの第１のグループと動作スロットの第１のセット内で集約されるノードの第２のグループとを集約することに基づいてサービス・マネジメント動作を実行することを含むことができる。合意アルゴリズムは、サービス・マネジメント動作の実行中に満たされ得る。
【００１１】
一例によると、ノードの第２のグループは、承認を行うエンティティであり得る。この例にさらに付け加えると、方法は、システムにより、ブロックチェーン・ネットワークにサブミットされる取引を受信することと、システムにより、ノードの第２のグループのうちの２つ以上のノードが取引を承認したことを判断することとを含むことができる。方法は、システムにより、サービス・マネジメント動作の実行中に取引を完了することをさらに含むことができる。
【００１２】
さらに別の実施形態は、ブロックチェーン・インフラストラクチャ用のサービス・マネジメントを促進するためのコンピュータ・プログラム製品に関する。コンピュータ・プログラム製品は、プログラム命令を埋め込まれたコンピュータ可読記憶媒体を備えることができる。プログラム命令は、処理コンポーネントによって実行可能であり得、処理コンポーネントによって、およびブロックチェーン・ネットワーク内で、処理コンポーネントに、第１のノード・タイプのノードの第１のグループを動作スロットの第１のセットに、また、第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループを動作スロットの第２のセットに割り振らせる。プログラム命令はさらに処理コンポーネントに、処理コンポーネントにより、動作スロットの第２のセットに割り振られたノードの第２のグループを、動作スロットの第１のセット内のノードの第１のグループと集約させることができる。動作スロットの第１のセットのうちの１つまたは複数は、ノードの第１のグループおよびノードの第２のグループ両方に対応する複数の割り振られたノードを備えることができる。プログラム命令はさらに処理コンポーネントに、処理コンポーネントにより、ノードの第１のグループと動作スロットの第１のセット内で集約されるノードの第２のグループとの集約に基づいてサービス・マネジメント動作を実行させることができる。合意アルゴリズムは、サービス・マネジメント動作の実行中に満たされ得る。
【００１３】
別の実施形態は、ブロックチェーン・ネットワークで第１の機能性を実行するノードの第１のセット、およびブロックチェーン・ネットワークで第２の機能性を実行するノードの第２のセットを備えることができるブロックチェーン・ネットワークに関することができる。第１の機能性は、第２の機能性とは異なっていることができる。ブロックチェーン・ネットワークは、コンピュータ実行可能コンポーネントを記憶するメモリと、メモリに記憶されるコンピュータ実行可能コンポーネントを実行するプロセッサとを備えるサービス・マネジメント・エンジンをさらに備えることができる。コンピュータ実行可能コンポーネントは、ノードの第１のセットが第１の機能性を実行し、ノードの第２のセットが第２の機能性を実行することを判断するカテゴリ化コンポーネントをさらに備えることができる。コンピュータ実行可能コンポーネントは、ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、およびノードの第２のセットについてサービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定する規則コンポーネントをさらに備えることができる。さらには、コンピュータ実行可能コンポーネントは、ステップの第１の数量とステップの第２の数量との集約に基づいてサービス・マネジメント動作を実行する実装コンポーネントを備えることができる。集約は、サービス・マネジメント動作の実行についてステップの最小数を規定することができる。
【００１４】
一例では、規則コンポーネントは、ノードの第１のセット内のノードの数量が、サービス・マネジメント動作について指定されるノードの規定された数量未満であると判断することができる。この例にさらに付け加えると、コンピュータ実行可能コンポーネントは、ノードの第１のセットに１つまたは複数のノードを追加する挿入コンポーネントをさらに備えることができる。挿入コンポーネントは、ノードの第１のセット内のノードの数量と、ノードの規定された数量との差異に基づいて、追加するノードの数量を決定することができる。
【００１５】
別の例によると、規則コンポーネントは、ノードの第１のセット内のノードの数量が、サービス・マネジメント動作について指定されるノードの規定された数量より多いと判断することができる。加えて、実装コンポーネントは、ブロックチェーン・ネットワークの可用性を損なうことなくノードの第１のセットに対してサービス・マネジメント動作を実行することができる。
【００１６】
さらに別の実施形態は、プロセッサに動作可能に連結されたシステムにより、ブロックチェーン・ネットワーク内のノードの第１のセットが第１の機能性を実行し、ブロックチェーン・ネットワーク内のノードの第２のセットが第１の機能性とは異なる第２の機能性を実行すること、を判断することを含むことができるコンピュータ実装方法に関する。方法は、システムにより、ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、およびノードの第２のセットについてサービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定することをさらに含むことができる。さらには、方法は、システムにより、ステップの第１の数量とステップの第２の数量との集約に基づいてサービス・マネジメント動作を実行することを含むことができる。集約は、サービス・マネジメント動作の実行についてステップの最小数を規定することができる。
【図面の簡単な説明】
【００１７】
【図１】本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークのインフラストラクチャ用のサービス・マネジメントを促進する、例示の、非限定的なシステムのブロック図である。
【図２】本明細書において説明される１つまたは複数の実施形態による、簡素化されたバージョンのブロックチェーン・ネットワークの、例示の、非限定的な図である。
【図３】本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメントを促進する、例示の、非限定的なブロックチェーン・ネットワークのブロック図である。
【図４】本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークにおけるサービス・マネジメントを実行することを促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図５】本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワーク内においてサービス・マネジメント動作を実施することを促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図６】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的なブロックチェーン・ネットワーク環境の図である。
【図７】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的なブロックチェーン・ネットワーク環境の別の実装形態の図である。
【図８】本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークのインフラストラクチャ用のサービス・マネジメントを促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図９】本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークのインフラストラクチャに関連付けられる複数のノードに対応するノード・タイプを決定することを促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１０】本明細書において説明される１つまたは複数の実施形態による、様々な通信チャネルへのノードの割り振りを最適化することを任意選択で促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１１】制御されていないノードの使用の、例示の、非限定な図である。
【図１２】本明細書において説明される１つまたは複数の実施形態による、制御されているノードの使用の、例示の、非限定な図である。
【図１３】本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメント動作を割り振るために必要とされる複数の動作スロットを決定することを促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１４】本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメント動作を割り振るために必要とされる複数の動作スロットの決定を続行することを促進する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１５】本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメント動作を割り振るために必要とされる複数の動作スロットの決定を続行する、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１６】本明細書において説明される１つまたは複数の実施形態による、１つまたは複数のノードを、サービス・マネジメント動作を実施するために必要とされる動作スロットの最大数に割り振るための、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１７】本明細書において説明される１つまたは複数の実施形態による、１つまたは複数のノードを、サービス・マネジメント動作を実施するために必要とされる動作スロットの最大数に割り振ることを続行するための、例示の、非限定的なコンピュータ実装方法の流れ図である。
【図１８】本明細書において説明される１つまたは複数の実施形態による、複数のロールの例の、非限定な概略図である。
【図１９】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的な、図１８のエンドースメント・ポリシの図である。
【図２０】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的な、図１８のｏｒｄｅｒｅｒノード・ポリシの図である。
【図２１】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的な、図１８のＫａｆｋａノード・ポリシの図である。
【図２２】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定な、マージされた複数のロールの図である。
【図２３】本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的なブロックチェーン・ネットワークのサービス・マネージャ・プログラムの図である。
【図２４】本明細書において説明される１つまたは複数の実施形態が促進され得る、例示の、非限定的な動作環境のブロック図である。
【図２５】本明細書において説明される１つまたは複数の実施形態による、クラウド・コンピューティング環境の図である。
【図２６】本明細書において説明される１つまたは複数の実施形態による、抽象モデル・レイヤの図である。
【発明を実施するための形態】
【００１８】
以下の詳細な説明は例示に過ぎず、実施形態、または実施形態の適用もしくは使用、あるいはその両方を限定するよう意図されていない。さらには、先の「技術分野」「背景技術」または「発明の概要」セクション、あるいは「発明を実施するための形態」セクションにおいて提示される、いかなる明記されたまたは示唆された情報によっても拘束されるよう意図されていない。
【００１９】
次に１つまたは複数の実施形態を、図面を参照して説明するが、一貫して同一の参照符号は同一の要素を参照するために使用される。以下の説明において、説明目的のため、１つまたは複数の実施形態のより徹底した理解を与えるために、多くの具体的な詳細が説明される。しかしながら、様々な場合において、１つまたは複数の実施形態はこれらの具体的な詳細無しに実践され得ることが明白である。
【００２０】
本明細書において議論される様々な態様は、マネジメント、具体的にはブロックチェーン・ネットワークなどの、ノードのネットワーク上のサービス・マネジメント・アクティビティに関する。本明細書において利用される場合、「ノード」はネットワークに存在する特定の機能性である。さらには、様々な態様はブロックチェーン・ネットワークに関し、ブロックチェーンの用語では、ネットワークとはノードのネットワークを称する。ネットワーク内のノード（または、ノードのセット）は、様々な機能性を有することができる。さらには、クラスタの形態でともに機能する複数のノードが存在し得る。
【００２１】
本明細書において議論される１つまたは複数の実施形態は、可用性、パフォーマンス、コンプライアンス、およびセキュリティについて信頼される事業ネットワーク全体の、エンタープライズ・グレードの、ブロックチェーン・インフラストラクチャ用のサービス・マネジメントに関する場合がある。例えば、サービス・マネジメントのコンテキストにおいて、ブロックチェーン・ネットワーク上のノードの個々のタイプの一意な特徴を捉えることができる。さらには、ブロックチェーン・ネットワーク上の事業関与者同士の取引を中断することなく、インフラストラクチャでメンテナンス動作を実施する可能性を特定することができる。
【００２２】
さらには、ブローカのセットの制御されていない指定によって引き起こされる不十分なサービス・マネジメント動作の問題を、本明細書において与えられる様々な実施形態に見出すことができる。一例では、大規模なブロックチェーン・ネットワークがあり、データが一定の参加者のみで共有されるべき場合、それらの参加者だけのプライベート・チャネルを作成することができる。問題は、ブローカのセットを１つまたは複数のチャネルに明示的に割り当てて、サービス・マネジメント動作の効率を向上させることにより解決することができる。
【００２３】
加えて、本明細書において、中断無しの効率的なメンテナンス手順についての全体設計が提供される。したがって、ブロックチェーン・ネットワーク上で中断されない取引のフローにしたがって運用する様々な業界のあらゆるタイプの事業者によって、１つまたは複数の実施形態を利用することができる。
【００２４】
ブロックチェーン・フレームワークの実装の実装形態は、ｈｙｐｅｒｌｅｄｇｅｒ  ｆａｂｒｉｃであり得る。様々な態様を説明する目的で、ｈｙｐｅｒｌｅｄｇｅｒ  ｆａｂｒｉｃの実装形態に関する例を与えることができる。しかしながら、開示される態様はｈｙｐｅｒｌｅｄｇｅｒ  ｆａｂｒｉｃの実装形態に限定されず、他のタイプのブロックチェーン・フレームワークの実装形態を開示される態様で利用することができることに留意されたい。さらには、ここにおいては様々な態様を説明するためにノードの様々な名称が利用されるが、開示される態様の実装形態はこの命名の慣例に限定されない。
【００２５】
本明細書において議論される場合、ブロックチェーンのプロトコルについて、ノードを更新するため、または修復するため、あるいはその両方のために、１つまたは複数のノードを停止（例えば、更新、修復などのために）することができる。いくつかの実装形態では、ノードを更新するため、または修復するため、あるいはその両方のために、ターゲット・ノードが停止される際、他のノードに基づく冗長性が存在することができ、そのために効率性が損なわれない。すべてのノード・タイプについて、耐性があるいくつかのｆ個の障害ノードが存在することがあり、ここでｆは整数である。式は考慮するノードのタイプによって異なり得ることに留意されたい。一例では、ノードの第１のタイプ（例えば、順序付けノード）に関して、障害ノードがｆ個までのクラッシュ合意について、ノードの数が２ｆ＋１以上であるべきことを示す式があり得る。したがって、この式については、システム内に最小３つの順序付けノードがなければならない。さらには、システム内に５つの順序付けノードがある場合、２つのノードの故障には耐えることができる。悪意のあるノードが存在し得るビザンチン合意について、この式は３ｆ＋１まで変わる。しかしながら、他の実装形態では他の式を利用することができることに留意されたい。
【００２６】
図１は、本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークのインフラストラクチャ用のサービス・マネジメントを促進する、例示の、非限定的なシステム１００のブロック図を示している。本開示で説明されるシステム（例えば、システム１００など）、装置、または処理の態様は、マシン内で具体化されるマシン実行可能コンポーネントを構成することができ、例えば、１つまたは複数のマシンに関連付けられる１つまたは複数のコンピュータ可読媒体に具体化される。そのようなコンポーネントは、１つまたは複数のマシン、例えばコンピュータ、コンピューティング・デバイス、仮想マシンなどによって実行される時、マシンに説明された動作を実施させることができる。
【００２７】
システム１００、またはシステム１００のコンポーネントあるいはその両方は、上述の技術、コンピュータ・アーキテクチャなどの進歩により生ずる新しい問題を解決するために採用することができる。システム１００の１つまたは複数の実施形態は、コンピューティング・システム、プロセッサ・システム、人工知能システム、または他のシステムあるいはその組合せに対して技術的な改善を提供することができる。システム１００の１つまたは複数の実施形態は、処理パフォーマンスを改善すること、処理効率を改善すること、または処理特徴を改善すること、あるいはその組合せにより、技術的な改善をさらに提供することができる。
【００２８】
図１で示される実施形態では、システム１００は、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、処理コンポーネント１０８、メモリ１１０、またはストレージ１１２あるいはその組合せを備えることができる。メモリ１１０は、コンピュータ実行可能コンポーネントおよび命令を記憶することができる。処理コンポーネント１０８（例えば、プロセッサ）は、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、または他のシステム・コンポーネントあるいはその組合せによって命令（例えば、コンピュータ実行可能コンポーネントおよび対応する命令）の実行を促進することができる。示されるように、いくつかの実施形態では、システム１００の１つまたは複数の機能を実施するために、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、処理コンポーネント１０８、メモリ１１０、またはストレージ１１２あるいはその組合せのうちの、１つまたは複数を、電気的に、通信可能に、または動作可能にあるいはその組合せで、互いに接続することができる。
【００２９】
割り当てコンポーネント１０２は、ブロックチェーン・ネットワーク内で、第１のノード・タイプのノードの第１のグループ１１４を動作スロットの第１のセットに割り振ることができる。さらには、割り当てコンポーネント１０２は、ブロックチェーン・ネットワーク内で、第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループ１１６を動作スロットの第２のセットに割り振ることができる。割り当てコンポーネント１０２は、ノードの第２のグループ１１６の動作スロットの第２のセットへの割り振りとは独立して、ノードの第１のグループ１１４を動作スロットの第１のセットに割り振ることができる。
【００３０】
いくつかの実装形態では、第１のノード・タイプはブロックチェーン・ネットワークに存在する第１の機能性であり得、第２のノード・タイプはブロックチェーン・ネットワークに存在する第２の機能性であり得る。第１の機能性は、第２の機能性とは異なっていることができる。具体的で、非限定的な例では、ブロックチェーン・ネットワーク内で、ノードの第１のグループは、ピア・ノードであり得、ノードの第２のグループはｏｒｄｅｒｅｒノードであり得る。
【００３１】
ブロックチェーン・ネットワークでは、ピア・ノードは事業関与者によって使用される。ピア・ノードは、ネットワーク上の取引を相互に承認する。１つまたは複数のタイプの取引を、事業関与者によって合意される特定のエンドースメント・ポリシに関連付けることができる。エンドースメント・ポリシの例としては、以下が挙げられるが、それに限定されない：Ｔ（２，’Ａ’，’Ｂ’，’Ｃ’）は’Ａ’、’Ｂ’または’Ｃ’のうちからいずれか２つのプリンシパルに署名を要求する；Ｔ（１，’Ａ’，Ｔ（２，’Ｂ’，’Ｃ’））はプリンシパルＡに１つの署名を要求するか、またはプリンシパルＢおよびＣにそれぞれの署名を要求するか、のいずれかである。ピア・ノードのメンテナンスは、様々なタイプの取引を作り出し、エンドースメント・ポリシを提案する事業関与者との対話的な方法で実施されるべきである。例えば、いくつかの取引がポリシＴ（３，’Ａ’，’Ｂ’，’Ｃ’）を有する場合、どのノードも停止されない場合がある。さらには、動作の実施の前に事業関与者とのコミュニケーションがあるべきである。
【００３２】
ブロックチェーン・ネットワークでは、ｏｒｄｅｒｅｒノードはピア・ノードとインフラストラクチャとの間のゲートウェイである。ｏｒｄｅｒｅｒノードは、パブリックな機能である。ピア・ノードは、選択したあらゆるｏｒｄｅｒｅｒノードに、サービスを順序付けるために接続することができる。ｏｒｄｅｒｅｒノードは、いかなる時にもどの事業関与者も、排他的に使用することができない。さらには、ｏｒｄｅｒｅｒノードは一様であることができ、どのｏｒｄｅｒｅｒノードも特別ではない。これらの特徴のために、ｏｒｄｅｒｅｒノードのメンテナンスの間、１つまたは複数のピア・ノードについて、ピア・ノードの近傍に利用可能なｏｒｄｅｒｅｒノードが十分存在することが保証されるべきである。
【００３３】
グループ化コンポーネント１０４は、動作スロットの第２のセットに割り振られたノードの第２のグループ１１６を、動作スロットの第１のセット内のノードの第１のグループ１１４と集約することができる。さらには、動作スロットの第１のセットの１つまたは複数は、ノードの第１のグループ１１４およびノードの第２のグループ１１６両方に対応する複数の割り振られたノードを備えることができる。実装コンポーネント１０６は、動作スロットの第１のセット内でノードの第１のグループ１１４とノードの第２のグループ１１６とを集約するグループ化コンポーネント１０４に基づいてサービス・マネジメント動作を実行することができる。合意アルゴリズムは、サービス・マネジメント動作の実行中に満たされ得る。
【００３４】
いくつかの実装形態によると、実装コンポーネント１０６は、ブロックチェーン・ネットワーク内の、ノードの第１のグループ１１４に関連付けられるエンドースメント・ポリシ、およびノードの第２のグループ１１６に関連付けられる合意アルゴリズムに基づいてサービス・マネジメント動作を実行することができる。これらの実装形態にさらに付け加えると、エンドースメント・ポリシは、取引にデジタル署名を適用することにより取引を承認するために必要とされるノードの第２のグループの最小数を決定することができる。
【００３５】
一例では、合意アルゴリズムは、ｉｎ−ｓｅｒｖｉｃｅであるノードの第１のグループおよびノードの第２のグループの最小数を維持することにより、ブロックチェーンの１つまたは複数のブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供することができる。さらには、いくつかの実装形態によると、グループ化コンポーネント１０４は、実装コンポーネントがサービス・マネジメント動作を実行している間、ノードの第１のグループおよびノードの第２のグループを更新するために実施されるステップ数を最小にすることができる。
【００３６】
様々な実施形態において、システム１００は、プロセッサを備えるあらゆるタイプのコンポーネント、マシン、デバイス、施設、装置、もしくは機器またはその組合せであることができるか、または、有線もしくは無線またはその両方のネットワークと、効果的もしくは動作可能な、またはその両方の通信を可能にすることができるか、あるいはその両方である。システム１００を備えることができるコンポーネント、マシン、装置、デバイス、施設、または機器あるいはその組合せは、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラスのコンピューティング・マシンまたはデータベースあるいはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、家庭用の電化製品または器具あるいはその両方、工業的または商用あるいはその両方のデバイス、ハンドヘルド・デバイス、携帯情報端末、マルチメディア・インターネット対応電話機、マルチメディア・プレーヤ、などを含むことができる。
【００３７】
様々な実施形態において、性質として高度に技術的であり、抽象的ではなく、また人間による精神的な作用のセットとして実施することができない問題を解決するために、システム１００はハードウェアまたはソフトウェアあるいはその両方を採用することができる。さらには、一定の実施形態において、実施されるプロセスのいくつかは、１つまたは複数の特化したコンピュータ（例えば、１つまたは複数の特化された処理ユニット、量子計算コンポーネントで特化したコンピュータなど）によって実施して、サービス・マネジメントに関連して規定されたタスクを遂行することができる。
【００３８】
システム１００（例えば、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、または他のシステム・コンポーネントあるいはその組合せ）は、人間によって実施することができない（例えば、一人の人間の思考の能力を超えている）ブロックチェーン・ネットワークのためのサービス・マネジメントを実施することを了解されたい。例えば、一定の時間にわたって、システム１００（例えば、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、または他のシステム・コンポーネントあるいはその組合せ）により処理されるデータ量、処理されるデータ速度、または処理されるデータのデータ・タイプあるいはその組合せは、同じ時間にわたって一人の人間の思考により処理され得る量、速度、データ・タイプよりも多く、速く、また多様であることができる。システム１００（例えば、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、または他のシステム・コンポーネントあるいはその組合せ）は、上で言及したブロックチェーン・ネットワークのためのサービス・マネジメントをやはり実施しつつ、１つまたは複数の他の機能を実施することに対して完全に動作可能であることもできる（例えば、完全に電源をオンにする、完全に実行するなど）。さらには、システム１００（例えば、割り当てコンポーネント１０２、グループ化コンポーネント１０４、実装コンポーネント１０６、または他のシステム・コンポーネントあるいはその組合せ）によって生成され調整される動作スロットは、ユーザによって手動で取得することが不可能な情報を含むことができる。例えば、１つまたは複数のサービス・マネジメント動作を生成して出力するための、情報のタイプ、情報の多様さ、またはシステムの最適化あるいはその組合せは、ユーザによって手動で取得され処理され得る情報よりも複雑である可能性がある。
【００３９】
さらに詳細に、図２は本明細書において説明される１つまたは複数の実施形態による、簡素化されたバージョンのブロックチェーン・ネットワーク２００の、例示の、非限定的な表現を示している。本明細書において利用される場合、「取引」は、ブロックチェーン・ネットワークのクライアント同士のビジネス・ロジックである。ある使用事例では、取引は第１のチーム・メンバから第２のチーム・メンバへの金銭の転送であってもよく、または別のタイプの転送（例えば、車両の転送）であってもよい。
【００４０】
「チャネル」は、データの分離性と秘匿性を可能にするプライベートな重なりである。使用事例では、チャネルはチーム・メンバのサブセットであり得、その間の金銭の転送は外部者には不可視である。ブロックチェーン・ネットワークで動作中の、複数の事業エンティティがある可能性がある。その用途についてともに機能する事業エンティティは、１つのチャネルにあることができる。例えば、１チャネルで機能している２つ以上の異なる金融機関エンティティがあることができるが、そのエンティティは異なるチャネル上にある異なる事業エンティティ（例えば、自動車ディーラ）のサブセットを含むチャネルには参加しない。言及したように、特定のチャネルで行われる取引は、１つまたは複数の確立された規則またはポリシあるいはその両方の機能として、そのチャネル上の他のエンティティには可視ではない。
【００４１】
「ステート」は、チャネルの取引に含められるすべてのキーについて、最後の（例えば、最新の）値を表現する。使用事例では、ステートはチーム・メンバのサブセット内のメンバの個々の残高であり得る。例えば、転送が実施される場合、第１のエンティティ（例えば、第１の顧客）の残高が減る場合があり、第２のエンティティ（例えば、第２の顧客）の残高が増える場合がある。
【００４２】
「台帳（ｌｅｄｇｅｒ）」は、１つまたは複数のチャネル上のすべてのステートの変化の検証可能な履歴である。使用事例では、台帳はチーム・メンバのサブセット間のすべての残高変更の履歴であり得る。「ブロック」は、順序付けられ、暗号化された取引の一覧である。使用事例では、ブロックは、規定された時間範囲（例えば、一週間）内でのチーム・メンバのサブセットにおけるすべての取引であり、時間によって順序付けられ、エンベロープ（仮想的な電子的エンベロープであり得る）に封止されている
【００４３】
したがって、「ブロックチェーン」は、先行するブロックに暗号的にリンクすることができるブロックを含んでいる。ブロックチェーンは、台帳の実装形態を表現することができる。使用事例では、ブロックチェーンはエンベロープの積み重なりであり得、規定された時間範囲（例えば、一週間）によって順序付けられ、個々のエンベロープは先のエンベロープに貼り付けることができる。さらに詳細に、複数の取引はあるブロックに向かうことができ、そのブロックが以前のブロックを指し示すやり方で、そのブロックはブロックチェーン内に向かう。一例では、実施されるハッシュ演算があってもよく、悪意のあるエンティティにより以前のブロックに変更が加えられると、そのノードは除去することができる。
【００４４】
図２には２つの異なる取引が示されており、第１の取引２０２１、および第２の取引２０２２として図示される。２つの取引だけが図示されているが、ブロックチェーン・ネットワーク内では実質的に同時に３つ以上の取引が生じる可能性があることに留意されたい。取引は、銀行アプリケーション、自動車販売アプリケーション、または他のタイプのアプリケーションなど個々のアプリケーションでサブミットすることができる。
【００４５】
１つまたは複数のアプリケーションを別個のチャネル（長く丸みのある四角として図示される）に展開することができる。例えば、第１のアプリケーションを利用する第１の取引２０２１を第１のチャネル２０４１に展開することができ、第２のアプリケーションを利用する第２の取引２０２２を第２のチャネル２０４２に展開することができる。
【００４６】
加えて、合意に参加するノードがある可能性があり、これらは独立したノードである可能性がある。図示されるように、ノード（円によって表現される）は、チャネルには含まれない。一例では、顧客がアプリケーションに要求をサブミットする場合、チャネルに属するすべては取引の一部である。さらには、使用されるアプリケーションに関わらず、取引は、チャネル独立である、ノードの独立したセットから合意を取得しようと企てる。合意は取引以外で生じることに留意されたい。
【００４７】
例示の使用事例では、アプリケーションは、一定の金額の転送は第１の口座から第２の口座のものであるべき（例えば、取引）であることを示す可能性がある。別のアプリケーションは、車両がディーラから顧客の元へ行き、車両の所有がこの２つのエンティティの間で転送されることを示すことができる。これらの２つの異なる取引は異なるチャネル上で生じる。しかしながら、独立した合意が達成される時、取引は同一のブロックにマージすることができる。したがって、同一のブロックに向かう複数の取引があり得、これは合意が達成するものである。さらには、合意は取引の順序付けを容易にすることができる。例えば、合意は取引をブロックに入れ、それをブロックチェーンに追加し、次いでそれをコミッティング・ノードに追加するが、これは取引以外で生じる場合がある。
【００４８】
さらに詳細に、第１のチャネル２０４１は、存続する規定されたステート２０６にある。規定されたステート２０６は、チャネルの取引に含められるすべてのキーについて、最新の値を含むことができる。使用事例では、ステートはチーム・メンバのサブセット内の全員の残高を含む。１つまたは複数の取引が完了すると、すべてのブロック２１０が存続されて、１つまたは複数のチャネル上のステート変化すべての検証可能な履歴を提供することができるブロックチェーン２０８が存在する。
【００４９】
図３は本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメントを促進する、例示の、非限定的なブロックチェーン・ネットワーク３００のブロック図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００５０】
ブロックチェーン・ネットワーク３００は、システム１００のコンポーネントまたは機能性あるいはその両方のうちの１つまたは複数を備えることができ、またその逆もあり得る。ブロックチェーン・ネットワーク３００は、ブロックチェーン・ネットワーク３００内で第１の機能性を実行することができるノードの第１のセット３０２を含むことができる。また、ブロックチェーン・ネットワーク３００内で第２の機能性を実行することができるノードの第２のセット３０４も含まれ得る。ノードの第１のセット３０２によって実行される第１の機能性は、ノードの第２のセット３０４によって実行される第２の機能性とは異なっている可能性がある。
【００５１】
さらにブロックチェーン・ネットワーク３００には、サービス・マネジメント・エンジン３０６、カテゴリ化コンポーネント３０８、規則コンポーネント３１０、実装コンポーネント３１２、挿入コンポーネント３１４も含まれ得る。さらには、サービス・マネジメント・エンジン３０６は、コンピュータ実行可能コンポーネントを記憶することができるメモリ（例えば、メモリ１１０）、およびメモリに記憶されたコンピュータ実行可能コンポーネントを実行することができるプロセッサ（例えば、処理コンポーネント１０８）を備えることができる。
【００５２】
カテゴリ化コンポーネント３０８は、ノードの第１のセット３０２が第１の機能性を実行し、ノードの第２のセット３０４が第２の機能性を実行することを判断することができる。規則コンポーネント３１０は、ノードの第１のセット３０２についてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、およびノードの第２のセット３０４についてサービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定することができる。さらには、実装コンポーネント３１２は、ステップの第１の数量とステップの第２の数量との集約に基づいてサービス・マネジメント動作を実行することができる。例えば、集約は、サービス・マネジメント動作の実行についてステップの最小数を規定することができる。
【００５３】
ある実装形態によると、規則コンポーネント３１０は、ノードの第１のセット３０２内のノードの数量が、サービス・マネジメント動作について指定されるノードの規定された数量より少ないと判断することができる。この実装形態にさらに付け加えると、挿入コンポーネント３１４が１つまたは複数のノードをノードの第１のセット３０２に追加することができる。例えば、挿入コンポーネント３１４は、ノードの第１のセット３０２内のノードの数量とノードの規定された数量との差異に基づいて、追加するノードの数量を決定することができる。
【００５４】
いくつかの実装形態によると、規則コンポーネント３１０は、ノードの第１のセット３０２内のノードの数量が、サービス・マネジメント動作について指定されるノードの規定された数量より多いと判断することができる。この実装形態にさらに付け加えると、実装コンポーネント３１２は、ブロックチェーン・ネットワーク３００の故障なくノードの第１のセット３０２に対してサービス・マネジメント動作を実行することができる。
【００５５】
図４は、本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークにおけるサービス・マネジメントを実行することを促進する、例示の、非限定的なコンピュータ実装方法４００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００５６】
４０２において、プロセッサに動作可能に連結されブロックチェーン・ネットワーク内にあるシステムは、第１のノード・タイプのノードの第１のグループ（例えば、ノードの第１のグループ１１４、ノードの第１のグループ３０２）を動作スロットの第１のセットに、また、第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループ（例えば、ノードの第２のグループ１１６、ノードの第２のグループ３０４）を動作スロットの第２のセットに割り振ることができる（例えば、割り当てコンポーネント１０２により）。ある実装形態によると、ノードの第１のグループは、動作スロットの第２のセットに割り振られるノードの第２のグループとは独立して、動作スロットの第１のセットに割り振ることができる。
【００５７】
一例では、第１のノード・タイプは、ブロックチェーン・ネットワークに存在する第１の機能性であり得る。この例にさらに付け加えると、第２のノード・タイプは、ブロックチェーン・ネットワークに存在する第２の機能性であり得る。第１の機能性および第２の機能性は、異なる機能性であることができる。具体的な例では、ノードの第１のグループはピア・ノードであり得、ノードの第２のグループはｏｒｄｅｒｅｒノードであり得る。しかしながら、本明細書において提供される１つまたは複数の実施形態は、この実装形態に限定されず、ノードの第１のグループ、ノードの第２のグループ、またはノードの後続のグループあるいはその組合せについて他のタイプのノードを利用することができることに留意されたい。
【００５８】
４０４において、動作スロットの第２のセットに割り振られたノードの第２のグループは、システムにより、動作スロットの第１のセット内のノードの第１のグループと集約することができる（例えば、グループ化コンポーネント１０４により）。動作スロットの第１のセットのうちの１つまたは複数は、ノードの第１のグループおよびノードの第２のグループ両方に対応する複数の割り振られたノードを備えることができる。
【００５９】
さらには、４０６において、システムは、ノードの第１のグループと動作スロットの第１のセット内で集約されるノードの第２のグループとを集約することに基づいてサービス・マネジメント動作を実行することができる（例えば、実装コンポーネント１０６により）。合意アルゴリズムは、サービス・マネジメント動作の実行中に満たされ得る。
【００６０】
例えば、サービス・マネジメント動作は、ブロックチェーン・ネットワーク内の、ノードの第１のグループに関連付けられるエンドースメント・ポリシ、およびノードの第２のグループに関連付けられる合意アルゴリズムに基づいて実行することができる。この例にさらに付け加えると、取引にデジタル署名を適用することに基づいて、取引を承認するために必要とされるノードの第２のグループの最小数を決定することができる。
【００６１】
いくつかの実装形態によると、ノードの第２のグループを集約するために、ノードの第１のグループおよびノードの第２のグループを更新するために実施される複数のステップを決定することができる。実施されるステップ数の決定は、例えば、サービス・マネジメント動作が実行される間であり得る。
【００６２】
別の例では、合意アルゴリズムは、ｉｎ−ｓｅｒｖｉｃｅであるノードの第１のグループおよびノードの第２のグループの最小数を維持することにより、ブロックチェーンの１つまたは複数のブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供することができる。他の例によると、合意アルゴリズムは、ｉｎ−ｓｅｒｖｉｃｅであるそれぞれ複数のノード・グループ内の最小数のノードを維持することにより、ブロックチェーンの個々のブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供することができる。
【００６３】
サービス・マネジメント動作は取引の処理の間に実行することができる。例えば、取引は、サービス・マネジメント動作の開始に先立って、またはその後に、ブロックチェーン・ネットワークにサブミットすることができる。この場合、ノードの第２のグループにおいて１つまたは複数のノードが取引を承認するために利用されることになる場合、サービス・マネジメント動作は一時的に停止する可能性がある。コンピュータ実装方法の４０６に示されるように、取引が完了した（例えば、１つまたは複数のノードが取引の承認を完了した（または承認を拒否した））と判断された時、またはその後、サービス・マネジメント動作を実行することができる。
【００６４】
図５は、本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワーク内においてサービス・マネジメント動作を実施することを促進する、例示の、非限定的なコンピュータ実装方法５００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００６５】
５０２において、プロセッサに動作可能に連結されたシステムは、ブロックチェーン・ネットワーク内のノードの第１のセットが第１の機能性を実行すること、およびブロックチェーン・ネットワーク内のノードの第２のセットが第１の機能性とは異なる第２の機能性を実行すること、を判断することができる（例えば、カテゴリ化コンポーネント３０８により）。
【００６６】
５０４において、ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、およびノードの第２のセットについてサービス・マネジメント動作を実施するために実行されるステップの第２の数量を、システムにより決定することができる（例えば、規則コンポーネント３１０により）。
【００６７】
さらには、５０６において、システムは、ステップの第１の数量とステップの第２の数量との集約に基づいてサービス・マネジメント動作を実行することができる（例えば、実装コンポーネント３１２により）。集約は、サービス・マネジメント動作の実行のためのステップの最小数を規定することができる。
【００６８】
本明細書において議論されるように、様々な態様が、ネットワーク上の事業関与者がサービス・マネジメント手順に気付かないように、中断無しのやり方で様々なタイプのノードを保持するサーバを管理することができる。さらには、管理は、サーバの利用および時間消費の観点から効率的なやり方で実施することができる。
【００６９】
ブロックチェーン・ネットワークでは、合意はすべてのチャネルに対して保証されるべきであるが、サービス・マネジメントのアクティビティ（例えば、マネジメントの目的で関与者のサーバ／コンテナ／サービスをシャットダウンするなど）は合意に影響を及ぼす可能性があることに留意されたい。さらには、アプリケーションはいかなる１つのブロックチェーン・サービス・エンティティによっても制御されない。やはり、アプリケーションは、ブロックチェーン・サービス・プロバイダによってすらも完全には制御されない。代わりに、複数の事業関与者およびサービス・プロバイダは合意が実現できるように協力するべきである。これはマネジメント動作に余計な複雑性をもたらすものであり、それを開示される態様により克服することができる。
【００７０】
図６は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的なブロックチェーン・ネットワーク環境６００を示している。図示されるように、様々なエンティティの間で、通信ネットワーク６０２を介するなど、１つまたは複数の無線（または、有線）の通信リンクを確立することができる。一例では、通信ネットワーク６０２は、クラウド・コンピューティング・ネットワークである可能性がある。ブロックチェーン・サービス・マネジメント・デバイス６０４は、本明細書において議論される１つまたは複数の態様の実施を促進することができる。
【００７１】
図示されるように、様々なノードを、ブロックチェーン・ネットワーク環境６００に含めることができ、また１つまたは複数のクライアント・アプリケーションが、複数の場所または複数の領域あるいはその両方を表現するノードのセットとインターフェースすることができる（例えば、１つまたは複数のチャネルを介して）。例えば、１つまたは複数のクライアント・アプリケーション６０５は、エンドーサ・ノード（Ｅ０）、エンドーサ・ノード（Ｅ１）、エンドーサ・ノード（Ｅ２）、コミッティング・ノード（Ｃ０）、およびｏｒｄｅｒｅｒノード６０８を含むことができるノードの第１のセット６０６と対話することができる。さらには、別のクライアント・アプリケーション６１０は、エンドーサ・ノード（Ｅ３）、コミッティング・ノード（Ｃ１）、およびｏｒｄｅｒｅｒノード６１４を含むことができるノードの第２のセット６１２と対話することができる。加えて、クライアント・アプリケーション６１６は、エンドーサ・ノード（Ｅ４）、コミッティング・ノード（Ｃ２）、およびｏｒｄｅｒｅｒノード６２０を含むことができるノードの第３のセット６１８と対話することができる。ｏｒｄｅｒｅｒノードはノードの様々なセット内に図示されているが、ｏｒｄｅｒｅｒノードはブロックチェーン・ネットワーク内ですべてのチャネルによって共有することができる。ノードの１つまたは複数のセットに関して一定の数のノードが図示され説明されているが、開示される態様はこの実装形態に限定されないことに留意されたい。
【００７２】
図７は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的なブロックチェーン・ネットワーク環境７００の別の実装形態を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００７３】
この例示のブロックチェーン・ネットワーク環境７００では、１つまたは複数のｏｒｄｅｒｅｒノード７０２は、ノード間で濃実線と薄実線とによって図示される１つまたは複数のチャネルをサポートすることができる（例えば、エンドーサ・ノード、コミッティング・ノード、または他のタイプのノード）。Ｅ０、Ｅ２、Ｅ３、およびＣ２は１つのチャネル内にあり（例えば薄実線により表される）、Ｅ１、Ｅ２、Ｅ４、Ｃ０およびＣ１は別のチャネル内にある（濃実線により表される）。この例では、クライアントに特有のｏｒｄｅｒｅｒノードはない。図示されるように、エンドーサ・ノードＥ２は、両方のチャネルによって使用される。また、図示されるように、１つまたは複数の他のクライアント・アプリケーション６０５、６１６、７０４および７０６は、所与のチャネルに接続することができる。１つのチャネルに接続するクライアントは、他のチャネルの存在を意識しないが、クライアントは複数のチャネルに接続することができる。
【００７４】
図８は、本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークのインフラストラクチャ用のサービス・マネジメントを促進する、例示の、非限定的なコンピュータ実装方法８００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００７５】
８０２において、ブロックチェーン・ネットワークのインフラストラクチャに関連付けられる複数のノードに対応するノード・タイプを決定することができる。任意選択で、８０４において、決定されたノード・タイプのうちの１つに対応するノードの割り振りを、ブロックチェーン・ネットワーク内でセットアップされる様々な通信チャネルに最適化することができる。
【００７６】
さらには、８０６において、あるノード・タイプ（例えば、ｘ＝１・・・ｎ）に対応する１つまたは複数のノード（Ｎｘ）について、サービス・マネジメント動作を割り振るために必要とされる複数の動作スロット（Ｓｘ）を決定することができる。必要とされる動作スロットの数は、ブロックチェーン・ネットワーク全体の合意プロセスを維持しつつ、決定することができる。例えば、あるノード・タイプの特定のノードを、サービスから除去することができる。この例にさらに付け加えると、特定のノードを除去することができ、そしてソフトウェア・パッチを展開することができる。
【００７７】
運用計画にしたがって、８０８において、必要とされる動作スロットの最大数（Ｓｍａｘ）を、サービス・マネジメント動作を実施するために最多の動作スロットを必要としているノード・タイプの１つのノードに基づいて割り振ることができる。８１０において、ノード・タイプ（ｘ＝１・・・ｎ）に対応する１つまたは複数のノード（Ｎｘ）について、ノード依存性があるかどうかを判断することができる。
【００７８】
さらに、８１２において、あるノード・タイプ（ｘ＝１・・・ｎ）に対応する１つまたは複数のノード（Ｎｘ）について、そのノード・タイプについてノード・リーダが存在するかどうかを判断することができる。本明細書において議論される１つまたは複数の態様によると、ノード・リーダは、過剰なリーダ切り替えを妨げるため、または軽減するため、あるいはその両方のために、停止された最後のノードであることができる。
【００７９】
８１４において、１つまたは複数のノードを、運用計画、ノード依存性、およびノード・リーダに基づいてサービス・マネジメント動作を実施するために必要とされる動作スロットの最大数（Ｓｍａｘ）の１つまたは複数に割り振ることができる。必要とされる動作スロットの最大数（Ｓｍａｘ）のうち少なくとも１つのスロットは、様々なノード・タイプのノードの集約を含むことができる。
【００８０】
図９は、本明細書において説明される１つまたは複数の実施形態による、ブロックチェーン・ネットワークのインフラストラクチャに関連付けられる複数のノードに対応するノード・タイプを決定することを促進する、例示の、非限定的なコンピュータ実装方法９００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００８１】
コンピュータ実装方法９００は、図８の８０２に対応することができる。さらに詳細に、９０２において、特定のブロックチェーン・ネットワーク内のノードおよびそれらの個々のノード・タイプに関連付けられるノード情報更新についての要求を、ネットワーク管理センタ（ＮＭＣ）に要求することができる。
【００８２】
９０４において、ＮＭＣから応答が受信されたかどうかを判断することができる。応答が受信されている場合（「はい」）、コンピュータ実装方法９００は、９０６に続くことができ、さらなる処理のために図８の８０４に戻る。代替的には、９０４において、決定が、応答が受信されなかった（「いいえ」）であった場合、９０８において、１つまたは複数のノードの個々のノード・タイプに関連付けられるノード情報を集計することができる。例えば、特定のブロックチェーン・ネットワーク内の１つまたは複数のノードを、集計することができる。
【００８３】
９１０において、特定のブロックチェーン・ネットワーク内の１つまたは複数のノードから応答が受信されたかどうかを判断することができる。１つまたは複数のノードから個々の応答が受信されている場合「はい」、コンピュータ実装方法９００は、９１２に続くことができ、さらなる処理のために図８の８０４に戻る。
【００８４】
代替的には、９１０において、１つまたは複数のノードからの個々の応答が受信されていないと判断された場合（「いいえ」）、コンピュータ実装方法９００は、９１４において、所定の時間間隔の間、待機することができ、次いでさらなる処理のために９０２に戻ることができる。例えば、ノードの１つのセットだけが応答した場合、コンピュータ実装方法９００にしたがう処理を、応答しなかったノードの残りのセットの分、繰り返すことができる。
【００８５】
図１０は、本明細書において説明される１つまたは複数の実施形態による、様々な通信チャネルへのノードの割り振りを最適化することを任意選択で促進する、例示の、非限定的なコンピュータ実装方法１０００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００８６】
コンピュータ実装方法１０００は、図８の８０４に対応することができる。ノードの割り振りは、決定されたノード・タイプのうちの１つに対応するノードの割り振りであることができる。さらには、様々な通信チャネルは、ブロックチェーン・ネットワーク内でセットアップされる様々な通信チャネルであることができる。
【００８７】
１００２において、Ｋａｆｋａノードが検出されるかどうかを判断することができる。Ｋａｆｋａノードが検出されない場合（「いいえ」）、コンピュータ実装方法１０００は、１００４に続くことができ、さらなる処理のために図８の８０６に戻ることができる。１００２における判断が、Ｋａｆｋａノードが検出されるとのことである場合（「はい」）、１００６において、チャネルの最適化が実施されるべきかどうかを判断することができる。チャネルの最適化が実施されるべきではない場合（「いいえ」）、コンピュータ実装方法１０００は、１００４に続くことができ、さらなる処理のために図８の８０６に戻ることができる。
【００８８】
代替的には、チャネルの最適化が実施されるべきである場合（「はい」）、１０１０において、Ｋａｆｋａノードの数（Ｋ）を受信することができる。１０１２において、Ｋａｆｋａノードの数（Ｋ）に基づいて、Ｋａｆｋａノード（Ｋ）用の複製ファクタ（Ｍ）を受信することができる。さらには、コンピュータ実装方法１０００の１０１４において、チャネルごとの（ＣＨ０−ＣＨｎ）最小の必要とされるＫａｆｋａノード（Ｎ）を受信することができる。
【００８９】
複製ファクタが３である６つのＫａｆｋａノードを有する具体的な例について、１０１６において、１つまたは複数の偶数チャネル（ＣＨ０、ＣＨ２、ＣＨ４）に、偶数Ｋａｆｋａノード（Ｋ０、Ｋ２、Ｋ４）を割り振ることができる。同じようなやり方で、１０１６において、１つまたは複数の奇数チャネル（ＣＨ１、ＣＨ３、ＣＨ５など）に、奇数Ｋａｆｋａノード（Ｋ１、Ｋ３、Ｋ５）を割り振ることができる。その後、コンピュータ実装方法１０００は、１０２０に続くことができ、さらなる処理のために図８の８０６に戻ることができる。
【００９０】
奇数ノードおよび偶数ノードについての上の例は、図１０の具体例に当てはまることに留意されたい。以下の汎用アルゴリズムは、あらゆる所与の数のＫａｆｋａノード、チャネル、複製ファクタ、およびＭｉｎ  ＩｎＳｙｎｃ  Ｒｅｐｌｉｃａｓで動作することができる。
チャネル全体のＫａｆｋａノードを分散するための汎用アルゴリズム
For each channel: 0 to MaxChannels do
Start_Position=(ChannelNumber*Replication_Factor) mod 
quotient(NumberKafkaNodes,ReplicationFactor)
End_Position=Start_Position+Replication_Factor
For each kafka_node: 0 to MaxKafkaNodes do
If KafkaNodeNumber is between Start_Position andEnd_Position
Assign the kafka_node to the channel
EndIf
EndFor
If the MaxKafkaNodes >= 
quotient(NumberKafkaNodes,ReplicationFactor)*Replication_Factor then
Distribute the load from a selectedremainder(NumberKafkaNodes,ReplicationFactor) of kafka nodes to these extranodes
EndIf
EndFor
【００９１】
汎用アルゴリズムによって生成される３つの例示のチャネル割り当ては、以下のように与えられる：
【００９２】
【表１】
2021515293.tif 000003
【００９３】
【表２】
2021515293.tif 000004
【００９４】
【表３】
2021515293.tif 000005
【００９５】
図１１は、制御されていないＫａｆｋａノードの使用の例示の、非限定な表現１１００を図示している。チャネル１１０２は、垂直軸に示されており、Ｋａｆｋａノード１１０４は水平軸に示されている。Ｋａｆｋａノード（ブローカとも呼ばれる）は、取引ログの複数された記憶を与える。本明細書において利用される場合、変更のない耐障害性が利用される。耐障害性のパフォーマンスは、default.replication.factorおよびmin.insync.replicasによって規定され、これらは１つまたは複数の態様にしたがって変更されないままである。この例では、以下が適用される：default.replication.factor=3かつmin.insync.replicas=2。したがって、チャネルに関しては、そのログは３つのＫａｆｋａブローカにわたって複製され、ここで少なくとも２つのブローカはチャネルがアクセス可能であることを維持するためにａｌｉｖｅとなる。デフォルトの設定では、チャネルはそれら自身のブローカのセットを制御されないやり方で選択する。結果としては、Ｋａｆｋａノードはお互い、相互に排他的となり得る。例えば、ブローカＫ１とＫ３は、これらは同時的に停止することがないという意味では相互に排他的であり、そうでなければ、チャネルＣｈ０はアクセス不能となる。この例では、ブローカのすべての対は相互に排他的であることに留意されたい。
【００９６】
Ｋａｆｋａノードはさらなるチャネルが作成されると容易にもつれを起こすことがあり、それがマネジメント運用についての問題を起こすことがある。例えば、有効なメンテナンス・シーケンスを特定することが困難になることがある（例えば、チャネル上で運用の中断無しに運用を終了できるように、メンテナンス・グループをどのように構成するか）。さらには、短期のメンテナンス・シーケンスが存在しない可能性がある。この例では、ブローカの対が相互に排他的であるため、可能な手法だけが６つのブローカを６つの別個のサーバ上で展開し、１つずつそこで動作する。時間消費およびサーバの利用の両方の観点から、特にネットワークがスケール・アップする際（例えば、さらに多くのＫａｆｋａノードがネットワークに含められる場合）、この手法は不十分である。本明細書において議論される様々な態様は、これらの効率性を克服することができる。
【００９７】
図１２は、本明細書において説明される１つまたは複数の実施形態による、制御されているＫａｆｋａノードの使用の例示の、非限定な表現１１０６を図示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【００９８】
表現１１０６におけるＫａｆｋａノードの制御される使用は一例であり、開示される態様にしたがって使用を制御する他のやり方が利用され得ることに留意されたい。この場合、チャネルに任意にブローカを選択させる代わりに、本明細書において議論されるように、チャネルのためのブローカのセットを明示的に指定することができる。この手法により様々な利点を達成することができる。例えば、有効なメンテナンス・シーケンスを特定することが容易となる可能性がある。ＫａｆｋａブローカＫ０およびＫ１は、同時的に停止する可能性があり、そしてブローカＫ２およびＫ３は、同時的に停止する可能性があり、最終的にブローカＫ４およびＫ５は、同時的に停止する可能性がある。この手順の間、すべてのチャネルはいかなる中断も無しにアクセスすることができる。
【００９９】
別の利点は、運用が効率的に実施され得る可能性があることである。（図１１のように）６つのステップの代わりに、図１２の実装形態としては３つのステップだけが存在する。これは、いつでもあらゆるチャネルについて停止する可能性があるブローカがせいぜい１つであるため、この例には妥当な解決策である。さらに、ネットワークがスケール・アップする場合、利点がより明白となる。実際、この例ではあらゆる数のＫａｆｋａノードについて３つのステップのみが利用される。
【０１００】
Ｋａｆｋａノードを制御下に置くことにより、メンテナンス・シーケンスの特定を、チャネル運用への中断なく、容易で明確なものとすることができる。さらには、時間消費およびサーバ利用の両方の観点から、効率的なマネジメント運用が可能である。ネットワークがスケール・アップする場合、一定長さのメンテナンス・シーケンスでスケーラビリティに対処することが可能である。さらには、変更のない耐障害性があり得る。耐障害性のパフォーマンスは、default.replication.factorおよびmin.insync.replicasによって規定され得、これは本明細書において提供される様々な態様にしたがって変更されないままである。
【０１０１】
図１３は、本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメント動作を割り振るために必要とされる複数の動作スロットを決定することを促進する、例示の、非限定的なコンピュータ実装方法１２００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１０２】
コンピュータ実装方法１２００は、図８の８０６に対応することができる。サービス・マネジメント動作を割り振るために必要とされる動作スロットの決定は、ブロックチェーン・ネットワーク全体の合意プロセスを維持しつつ、実施することができる。１２０２において、ノード・タイプ１に対応するノードＮ１について、ノードＮ１についてのエンドースメント・ポリシを含むスマート・コントラクトにアクセスすることができる。一実装形態によると、ノード・タイプ１はピア・ノードであり得る。この実装形態にさらに付け加えると、エンドースメント・ポリシは、例えば、エンドースメント・ポリシＰ１、Ｐ２、Ｐ３などであることができる。
【０１０３】
１２０４において、ノードをサービス外にして動作スロットに割り振ることができる。例えば、ノードはエンドースメント・ポリシ（例えば、エンドースメント・ポリシＰ１）を有するノードであることができる。さらには、ノードは、動作スロットＳ０、Ｓ１、Ｓ２、Ｓ３などから選択された動作スロットに割り振ることができる。
【０１０４】
１２０６において、別のノードの同一の動作スロットへの割り振りが可能かどうかを判断することができる。可能ではない場合（「いいえ」）、１２０４に戻り、別のノードをサービス外として異なる動作スロットに割り振ることができる。別のノードが同一の動作スロットに割り振ることができると判断される場合（「はい」）、１２０８において、別のノードをサービス外として同一の動作スロットに割り振ることができる。例えば、他のノードは異なるエンドースメント・ポリシ（例えば、エンドースメント・ポリシＰ３）を有するノードであることができる。
【０１０５】
１２１０において、別のノードを同一の動作スロットへ割り振ることができるかどうか別の判断を行うことができる。判断が別のノードが同一の動作スロットに割り振ることができるとのことである場合（「はい」）、１２０８に戻り、さらなるノードをサービス外として動作スロットに割り振ることができる。これは再帰的であり得ることに留意されたい。
【０１０６】
１２１０における判断が、別のノードは同一の動作スロットに割り振ることができないとのことである場合、１２１２に続き、第１のノード・タイプ１のすべてのノードＮ１がスロットに割り振られているかどうかの判断を行うことができる。第１のタイプ１のすべてのノードＮ１がスロットに割り振られていない場合（「いいえ」）、１２０４に戻る。第１のタイプ１のすべてのノードＮ１がスロットに割り振られている場合（「はい」）、図１４のコンピュータ実装方法１３００に関して議論するように、１２１４に続く。
【０１０７】
図１４は、本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメント動作を割り振るために必要とされる複数の動作スロットの決定を続行することを促進する、例示の、非限定的なコンピュータ実装方法１３００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１０８】
１３０２において、ノード・タイプ２に対応するノードＮ２について、耐故障規則Ｎ２にアクセスすることができる。一例では、ノードＮ２はｏｒｄｅｒｅｒノードであり得る。１３０４において、ノードＮ２に対応するノードをサービス外にして動作スロットに割り振ることができる。例えば、動作スロットは、動作スロットＳ’０、Ｓ’１、Ｓ’２、Ｓ’３などから選択されたスロットであり得る。
【０１０９】
１３０６において、別のノードを同一の動作スロットへ割り振ることができるかどうかの判断を行うことができる。別のノードを割り振ることができない場合（「いいえ」）、１３０４に戻る。別のノードを割り振ることができる場合（「はい」）、１３０８において、ノードＮ２に対応する別のノードをサービス外として同一の動作スロットに割り振ることができる。
【０１１０】
１３１０に進み、別のノードを同一の動作スロットへ割り振ることができるかどうかの判断を行うことができる。そうであれば（「はい」）、１３０８に戻る。しかしながら、別のノードを割り振ることができない場合（「いいえ」）、１３１２においてノード・タイプ２のすべてのノードＮ２がスロットに割り振られているかどうかの判断が行われる。
【０１１１】
ノード・タイプ２のすべてのノードＮ２がスロットに割り振られていない場合（「いいえ」）、１３０４に戻り、別のノードをサービス外とすることができる。代替的には、１３１２における判断がノード・タイプ２のすべてのノードＮ２がスロットに割り振られているとのことである場合（「はい」）、図１５のコンピュータ実装方法１４００に関して議論するように１３１４に続く。
【０１１２】
図１５は、本明細書において説明される１つまたは複数の実施形態による、サービス・マネジメント動作を割り振るために必要とされる動作スロットの数の決定を続行する、例示の、非限定的なコンピュータ実装方法１４００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１１３】
１４０２において、ノード・タイプ３に対応するノードＮ３について、耐故障規則Ｎ３にアクセスすることができる。一例では、ノードＮ３はＫａｆｋａノードであり得る。コンピュータ実装方法１４００の１４０４において、ノードＮ３に対応するノードをサービス外にして動作スロットに割り振ることができる。例えば、動作スロットは、動作スロットＳ”０、Ｓ”１、Ｓ”２、Ｓ”３などから選択されたスロットであり得る。
【０１１４】
１４０６において別のノードを同一の動作スロットへ割り振ることができるかどうかの判断を行うことができる。別のノードを割り振ることができない場合（「いいえ」）、１４０４に戻り、別のノードを異なる動作スロットに割り振ることができる。１４０６において別のノードを割り振ることができると判断される場合（「はい」）、１４０８において、ノードＮ２に対応する別のノードをサービス外として同一の動作スロットに割り振ることができる。
【０１１５】
１４１０に進み、別のノードを同一の動作スロットへ割り振ることができるかどうかの判断を行うことができる。そうであれば（「はい」）、１４０８に戻る。しかしながら、別のノードを割り振ることができない場合（「いいえ」）、１４１２においてノード・タイプ３のすべてのノードＮ３がスロットに割り振られているかどうかの判断が行われる。
【０１１６】
ノード・タイプ３のすべてのノードＮ３がスロットに割り振られていない場合（「いいえ」）、１４０４に戻り、別のノードをサービス外とすることができる。代替的には、１４１２における判断がノード・タイプ３のすべてのノードＮ３がスロットに割り振られているとのことである場合、１４１４に続き、コンピュータ実装方法８００にしたがうさらなる処理のために図８の８０８に戻る。
【０１１７】
図１６は、本明細書において説明される１つまたは複数の実施形態による、１つまたは複数のノードを、サービス・マネジメント動作を実施するために必要とされる動作スロットの最大数に割り振るための、例示の、非限定的なコンピュータ実装方法１５００の流れ図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１１８】
コンピュータ実装方法１５００は、図８の８１４に対応することができる。１５０２において、ノードの割り振りに必要とされる動作スロットの最大数（Ｓｍａｘ）を含むタイプのうちの１つのノード（例えば、Ｎ１）を選択することができる。最大数の動作スロット（Ｓｍａｘ）を有する動作スロットに割り振られた１つまたは複数のノード（例えば、Ｎ１）のノードについて、１５０４において、ノードのうちのいずれか１つ（例えば、Ｎ１）に依存性（例えば、依存性ノードＮＤ）を有する他のノードがあるかどうかを判断する。
【０１１９】
動作スロットに割り振られたノードのうちのいずれか１つ（例えば、Ｎ１）に依存性（ＮＤ）を有する１つまたは複数の他のノードに基づいて、１５０６において、依存性ノード（ＮＤ）を、それが依存性を有する対象である対応するノードとともに動作スロットに配置する。
【０１２０】
１５０８において、選択されたノード（例えば、Ｎ１）についてノード・リーダを決定することができるかどうかの判断を行うことができる。ノード・リーダを決定することができる場合（「はい」）、１５１０において、ノード・リーダおよびノード・リーダを有するスロット内のあらゆる他のノードを最後のスロットに切り替えることにより、ノード・リーダを再割り振りすることができる。ノード・リーダを再割り振りすることは、例えば、スロット場所が以前にそのノード・リーダによって占有された最後のスロット内で１つまたは複数のノードを再割り振りする間に生じる可能性がある。
【０１２１】
ノード・リーダが再割り振りされる時、またはその後、１５１０において、または１５０８における判断がノード・リーダを決定することができないとのことである場合（「いいえ」）、１５１２に続き、そして他のノード・タイプ（例えば、Ｎ２）のうちの１つのノードを、動作スロットの最大数（Ｓｍａｘ）を含むノードの動作スロット（例えば、Ｎ１）に割り振ることができる。コンピュータ実装方法１５００は、図１７に続くことができる。
【０１２２】
図１７は、本明細書において説明される１つまたは複数の実施形態による、１つまたは複数のノードの、サービス・マネジメント動作を実施するために必要とされる動作スロットの最大値への割り振りを続行するための、例示の、非限定的なコンピュータ実装方法１６００の流れ図を図示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１２３】
１６０２において、動作スロットに割り振られた１つまたは複数のノード（例えば、Ｎ２）のノードについて、これらのノードのうちの１つ（例えば、Ｎ２）に依存性を有する他のノード（Ｎｄ）があるかどうかを判断する。動作スロットに割り振られたノードのうちのいずれか１つ（例えば、Ｎ２）に依存性（Ｎ’Ｄ）を有する１つまたは複数の他のノードに基づいて、１６０４において、依存性ノード（Ｎ’Ｄ）を、それが依存性を有する対象である対応するノードとともに動作スロットに配置する。
【０１２４】
１６０６において、選択されたノード（例えば、Ｎ２）について、ノード・リーダを決定することができるかどうかの判断を行うことができる。ノード・リーダを決定することができる場合（「はい」）、１６０８において、ノード・リーダおよびノード・リーダを有するスロット内のあらゆる他のノードを最後のスロットに切り替えることにより、ノード・リーダを再割り振りすることができる。ノード・リーダを再割り振りすることは、例えば、スロット場所が以前にそのノード・リーダによって占有された最後のスロット内で１つまたは複数のノードを再割り振りする間に生じる可能性がある。
【０１２５】
ノード・リーダが再割り振りされる時、またはその後、１６０８において、または１６０６における判断がノード・リーダを決定することができないとのことである場合（「いいえ」）、１６１０に続き、ネットワーク内に別のノード・タイプ（例えば、Ｎ３）の他のノードがあるかどうか判断される。ネットワーク内に別のノード・タイプのノードがある場合（「はい」）、コンピュータ実装方法１６００は図１６に戻ることができる。ネットワーク内に別のノード・タイプのノードがない場合（「いいえ」）、コンピュータ実装方法１６００は終了することができる。
【０１２６】
図１８は、本明細書において説明される１つまたは複数の実施形態による、複数のロールの例１７００の、非限定な概略表現を図示している。この例では３つの異なるノードを図示している。図面の左上に図示されているのは、１つまたは複数のｚｏｏｋｅｅｐｅｒノード１７０２であり、これは代替的には、順序付けノードであってもよい（例えば、ｚｏｏｋｅｅｐｅｒノードと順序付けノードは似たようなやり方で振る舞う）。右上は１つまたは複数のエンドースメント・ノード１７０４であり、左下は１つまたは複数のＫａｆｋａノード１７０６である。
【０１２７】
ｚｏｏｋｅｅｐｅｒノードは、配信された一貫性のある設定を提示することにより、Ｋａｆｋａノードの振る舞いを調整することができる。例えば、設定は、図１１で図示されるように、第１のチャネル４のすべての取引履歴を３、５、および０で番号付けされた３つのＫａｆｋａブローカによって複製することができることを指定することができる。ブロックチェーン・ネットワークの中心部に存在しつつ、ｚｏｏｋｅｅｐｅｒノードは合意プロトコルによる単純な規則にしたがう：Ｎ＞２ｆ＋１。したがって、メンテナンスの間、いつでもｚｏｏｋｅｅｐｅｒノードの厳密に半分超がｕｐであるよう保証されるべきである。そうでなければ、ブロックチェーン・ネットワーク全体がダウンすることになる。
【０１２８】
図示されるように、５つのｚｏｏｋｅｅｐｅｒノード、すなわちｚｏｏｋｅｅｐｅｒノードＦ  １７０２１、ｚｏｏｋｅｅｐｅｒノードＧ  １７０２２、ｚｏｏｋｅｅｐｅｒノードＨ  １７０２３、ｚｏｏｋｅｅｐｅｒノードＩ  １７０２４、およびｚｏｏｋｅｅｐｅｒノードＪ  １７０２５がある。ｚｏｏｋｅｅｐｅｒノードＪ  １７０２５は、リーダのｚｏｏｋｅｅｐｅｒノードである。５つのピア・ノードまたはエンドースメント・ノード、すなわち、エンドースメント・ノードＡ  １７０４１、エンドースメント・ノードＢ  １７０４２、エンドースメント・ノードＣ  １７０４３、エンドースメント・ノードＤ  １７０４４、およびエンドースメント・ノードＥ  １７０４５がある。
【０１２９】
ピア・ノード（例えば、エンドースメント・ノード１７０４）は、ポリシ・ラベルＰ１、Ｐ２、またはＰ３あるいはその組合せとともに図示されている。複数のポリシがあることができ、またエンドースメント・ノード１７０４は３つの異なるポリシを表現することができる。例えば、第１のポリシＰ１は、ネットワークに少なくとも３つのａｌｉｖｅの（例えば、停止されていない）ノードがあるべきであることである。したがって、取引の提案を承認するためには個々の事業関与者から少なくとも１つのピア・ノードが必要である。第２のポリシＰ２は、ネットワークに少なくとも２つのａｌｉｖｅのノードがあるべきであることである。さらには、第３のポリシＰ３は、ネットワークに少なくとも１つのａｌｉｖｅのノードがあるべきであることである。図１９に図示されるように、エンドースメントが影響されないようなやり方で１つまたは複数のピア・ノードを停止することができる（例えば、少なくとも一時的にサービスから除去される）。ｈｙｐｅｒｌｅｄｇｅｒ  ｆａｂｒｉｃでは、ＳｍａｒｔＣｏｎｔｒａｃｔはＣｈａｉｎｃｏｄｅと称される場合があることに留意されたい。
【０１３０】
さらには、４つのＫａｆｋａノード、すなわちＫａｆｋａノードＫ  １７０６１、ＫａｆｋａノードＬ  １７０６２、ＫａｆｋａノードＭ  １７０６３、およびＫａｆｋａノードＮ  １７０６４がある。Ｋａｆｋａノードの場合、ポリシを定義することができる。さらには、Ｋａｆｋａノード（Ｋ）について、ここでＫは４である。Minimum insync replicas、Ｍは２である場合がある。加えて、default.replication.factorについて、Ｎは３である場合がある。この例では、ＭはＮより少ない可能性があり、ＮはＫより少ない可能性があるというポリシがあり得る（Ｍ＜Ｎ＜Ｋ）。このポリシは、合意メカニズムにおけるＫａｆｋａノードの展開に基づいて決定することができる。この例では、Ｍは２であり、Ｎは３である。いくつかの実装形態では、ＭおよびＮが異なる値であり得る可能性があるより大きなＫがある可能性がある。３つより多いタイプのノードがある場合があるが、簡略化の目的のために３つのみを図示して説明していることに留意されたい。
【０１３１】
図１９は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的な、図１８のエンドースメント・ポリシの表現１８００を図示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１３２】
この例では、第１の選択ノードＢ（例えば、エンドースメント・ノードＢ  １７０４２）が停止される。ノードＢが停止されたとしても、Ｐ１、Ｐ２、およびＰ３、それぞれのノードのあるインスタンスはダウンし、したがって、１つのノードはＰ１を実施するために利用可能ではない。これは、Ｐ１ポリシをサービスすることができる３つの他のノード、エンドースメント・ノードＡ  １７０４１、エンドースメント・ノードＤ  １７０４４、およびエンドースメント・ノードＥ  １７０４５があるため、許容可能である。したがって、取引が３つのノードからの応答を必要とした場合、ノードＢが停止されたとしても応答を与えることができる。
【０１３３】
２つの応答が返されるべきである場合、エンドースメント・ノードＤ  １７０４４およびエンドースメント・ノードＥ  １７０４５がａｌｉｖｅであるため、ポリシＰ２についても同様の状況が発生する。加えて、ポリシＰ３について、エンドースメント・ノードＣ  １７０４３がａｌｉｖｅであるため、応答をエンドースメント・ノードＣ  １７０４３から受信することができる。
【０１３４】
例によって図示されるように、エンドースメント・ピア・ロール１８０２用に４つの動作スロットがある。第１のスロット１８０４がＢとともに図示されているが、Ｂが第１のスロット１８０４内にある必要はない。第２のスロット１８０６はノードＣおよびノードＥ用であり、ノードＣが停止されたとしてもＰ３がなおａｌｉｖｅであるため、これらを停止することができるが、なぜなら、その時点でノードＢにはパッチが適用され再起動され、そのようにノードＢがやはりａｌｉｖｅであるためである。さらには、Ｐ２がダウンしたとしても、Ｂが利用可能であるため、ノードＥは停止することができる。第３のスロット１８０８は、ノードＡ用であり、第４のスロット１８１０はノードＤ用である。したがって、ポリシＰ１にサービスすることができるノードＡ、ノードＢ、およびノードＤがある。ポリシＰ２にさらにサービスすることができるノードＤおよびノードＢがさらにある。ノードＡおよびノードＤは任意の順序で停止することができることに留意されたい。
【０１３５】
換言すると、第１のロールについて、要求事項は４つの異なるスロット、第１のスロット１８０４、第２のスロット１８０６、第３のスロット１８０８、および第４のスロット１８１０に細分化されている。したがって、いくつのスロットが必要とされるかに関して判断を行うことができ、これは様々なタイプのノードについて独立的に実施することができる。この例では、図１９で図示されるようにエンドースメント・ピア・ロール用に４つの動作スロットが決定されており、やはりこれはこの例における最大数である。
【０１３６】
図１９は、マルチチャネルを図示しており、単一のチャネル（ノードにインストールされたチェーンコード）内に複数のエンドースメント・ポリシがあることに留意されたい。さらに他のロールは、ｏｒｄｅｒｅｒ、Ｋａｆｋａ、ｚｏｏｋｅｅｐｅｒ、ＣｏｕｃｈＤＢ、ＣｈａｉｎＣｏｄｅなどを含むことができるが、それらに限定されない。
【０１３７】
図２０は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的な、図１８のｏｒｄｅｒｅｒノード・ポリシの表現１９００を図示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１３８】
ｏｒｄｅｒｅｒノードについて、ｆ個の故障に耐えるために、Ｎは２ｆ＋１である。５つのノードがあり、ｆ＝２ノードまで同時に停止することができる。５つのｚｏｏｋｅｅｐｅｒノードがある編成は、１つのｑｕｏｒｕｍを形成するために３つ必要である。したがって、５つの編成により、２つのピアが失敗するが、なおｑｕｏｒｕｍを維持することができる。図２０の例は、３つのスロットを利用しており、ｚｏｏｋｅｅｐｅｒロール１９０２用の動作スロットによって図示されている。まず、ノードＦおよびＧを停止することができ、次いでノードＨおよびＩを停止することができ、次いでノードＪを停止することができる。ノードＪは最後に停止されるが、これはノードＪがリーダだからである。
【０１３９】
図２１は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的な、図１８のＫａｆｋａノード・ポリシの表現２０００を図示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１４０】
Ｋａｆｋａノードは図１９および図２０で図示される他のノードと同じように動作する。Ｋａｆｋａについては、一度に１つのノードだけ停止することができ、それによってチャネル作成が影響を受けない。Ｋａｆｋａロール２００２用の動作スロットは特定の順序、ノードＫ、ノードＬ、ノードＭ、そしてノードＮで図示しているが、ノードは任意の順序で停止することができる。
【０１４１】
図２２は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定な、マージされた複数のロールの表現２１００を図示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。
【０１４２】
バランスのとれた負荷を維持するために、複数のロールをマージすることができる。最後の動作スロットは、サービス・マネジメント動作がどのように実施され得るかを図示している。第１のスロット２１０２では、ノードＢ、ノードＦ、ノードＪ、およびノードＫが停止される。第２のスロット２１０４では、ノードＣ、ノードＥ、およびノードＬが停止される。第３のスロット２１０６では、ノードＡ、ノードＨ、ノードＩ、およびノードＭが停止される。第４のスロット２１０８では、ノードＤ、ノードＪ、およびノードＮが停止される。
【０１４３】
いくつかの実装形態によると、最小数のノードがある可能性があり、したがって、どのノードも停止されない場合がある。この状況では、規定されたロール用に余分な一時的なノードを追加することができる。次いで、すべてのノードにパッチが適用されるまで、一度に１つのノードを停止することができる。代替的には、クラスタ内のノードすべてを置き換える全く新しいノードを開始させることができる（例えば、古いノードすべてを破壊するだけ）。
【０１４４】
図２３は、本明細書において説明される１つまたは複数の実施形態による、例示の、非限定的なブロックチェーン・ネットワークのサービス・マネージャ・プログラム２２００を図示している。内部コンポーネント２２０２は、ブロックチェーン・ネットワーク・サービス・マネージャ（ＢＮＳＭ）プログラム２２０４、および１つまたは複数のオペレーティング・システム２２０６を含むことができ、これらは１つまたは複数の有形ストレージ・デバイス２２０８に少なくとも部分的に含まれ得る。内部コンポーネントはさらに１つまたは複数のプロセッサ２２１０、１つまたは複数のランダム・アクセス・メモリ（ＲＡＭ）２２１２、および１つまたは複数の読取り専用メモリ（ＲＯＭ）２２１４を含むことができ、これらはバス２２１６を介して動作可能に連結することができる。さらには、ネットワーク・アダプタまたはインターフェース２２１８を、バス２２１６に動作可能に連結することができる。読取り／書込みドライブまたはインターフェース２２２０を、バス２２１６および１つまたは複数のポータブル有形ストレージ・デバイス２２２２に動作可能に連結することができ、これらは外部コンポーネントのセット２２２４に含めることができる。さらには、１つまたは複数のデバイス・ドライバ２２２６を、バス２２１６に接続することができ、また外部コンポーネントのセット２２２４のうちの１つまたは複数のコンポーネントとインターフェースすることができる。例えば、１つまたは複数のデバイス・ドライバ２２２６は、コンピューティング・デバイス２２２８、ならびにキーボード２２３０およびマウス２２３２として図示される１つまたは複数の入力デバイスとインターフェースすることができる。
【０１４５】
説明の簡略化のため、コンピュータ実装方法は、一連の作用として描写され、説明される。主題の革新は図示される作用または作用の順序あるいはその両方によって限定されず、例えば、作用は様々な順序でまたは同時にあるいはその両方で、ならびに本明細書において提示および説明されていない他の作用とともに、発生することができることを理解および了解されたい。さらには、すべての図示される作用が、開示される主題にしたがってコンピュータ実装方法を実装するために必要とされるわけではない。加えて、当業者であれば理解および了解することであるが、コンピュータ実装方法は代替的に、状態図または事象を介して一連の相互に関連付けられる状態として表現することができる。追加的に、本明細書の以降および本明細書全体にわたって開示されるコンピュータ実装方法は、そのようなコンピュータ実装方法を、コンピュータに輸送および移動することを容易にするために製造物品に記憶できることをさらに了解すべきである。本本明細書において使用する場合、製造物品という用語は、あらゆるコンピュータ可読デバイスまたは記憶媒体からアクセス可能なコンピュータ・プログラムを包含することが意図されている。
【０１４６】
開示される主題の様々な態様についてのコンテキストを与えるために、図２４ならびに以下の議論は、開示される主題の様々な態様が実装され得る適切な環境の一般的な説明を与えるよう意図されている。図２４は、本明細書において説明される１つまたは複数の実施形態が促進され得る、例示の、非限定的な動作環境のブロック図を示している。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は簡潔のために省略する。図２４を参照すると、本開示の様々な態様を実装するための適切な動作環境２３００はまたコンピュータ２３１２を含むことができる。コンピュータ２３１２はまた処理ユニット２３１４、システム・メモリ２３１６、およびシステム・バス２３１８を含むことができる。システム・バス２３１８は、システム・メモリ２３１６を含むがそれに限定されないシステム・コンポーネントを処理ユニット２３１４に結合する。処理ユニット２３１４は様々な利用可能なプロセッサのうちの任意のものであることができる。デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャが、やはり処理ユニット２３１４として採用され得る。システム・バス２３１８は、メモリ・バスもしくはメモリ・コントローラ、周辺バスもしくは外部バスを含むいくつかのタイプのバス構造、またはインダストリアル・スタンダード・アーキテクチャ（ＩＳＡ）、マイクロチャネル・アーキテクチャ（ＭＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、ＶＥＳＡローカル・バス（ＶＬＢ）、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、カード・バス、ユニバーサル・シリアル・バス（ＵＳＢ）、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、ファイヤワイヤ（ＩＥＥＥ  １３９４）、およびＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）を含むがそれらに限定されないあらゆる多様な利用可能なバス・アーキテクチャを使用するローカル・バス、あるいはその組合せのうちの任意のものであることができる。システム・メモリ２３１６はまた揮発性メモリ２３２０および不揮発性メモリ２３２２を含むことができる。スタートアップの間など、コンピュータ２３１２内の要素間で情報を伝送するための基本的なルーチンを含んでいるＢａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ（ＢＩＯＳ）は、不揮発性メモリ２３２２に記憶される。例示として、限定ではなく、不揮発性メモリ２３２２は読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ）（例えば、強誘電ＲＡＭ（ＦｅＲＡＭ））を含むことができる。揮発性メモリ２３２０はまた外部キャッシュ・メモリとして作用するランダム・アクセス・メモリ（ＲＡＭ）を含むことができる。例示として、限定ではなく、ＲＡＭは静的ＲＡＭ（ＳＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）、ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ（ＤＲＤＲＡＭ）、およびＲａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭなどの多くの形態で利用可能である。
【０１４７】
コンピュータ２３１２はまたリムーバブル／非リムーバブルの、揮発性／不揮発性のコンピュータ記憶媒体を含むことができる。例えば、図２４はディスク・ストレージ２３２４を図示している。ディスク・ストレージ２３２４は、磁気ディスク・ドライブ、フロッピー（Ｒ）・ディスク・ドライブ、テープ・ドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックのようなデバイスも含むことができるがそれに限定されない。ディスク・ストレージ２３２４はまた記憶媒体を別個に、またはコンパクト・ディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤ書込み可能ドライブ（ＣＤ−Ｒドライブ）、ＣＤ書換え可能ドライブ（ＣＤ−ＲＷドライブ）もしくはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光学ディスク・ドライブを含むがそれに限定されない他の記憶媒体と組み合わせて含むことができる。システム・バス２３１８へのディスク・ストレージ２３２４の接続を容易にするために、典型的にはインターフェース２３２６などのリムーバブルまたは非リムーバブルのインターフェースが使用される。図２４はまたユーザと適切な動作環境２３００内で説明される基本的なコンピュータ・リソースとの間で中間的なものとして機能するソフトウェアを描写している。そのようなソフトウェアはまた、例えばオペレーティング・システム２３２８を含むことができる。オペレーティング・システム２３２８は、ディスク・ストレージ２３２４に記憶することができ、コンピュータ２３１２のリソースを制御して割り当てるよう作用する。システム・アプリケーション２３３０は、例えばシステム・メモリ２３１６またはディスク・ストレージ２３２４のいずれかに記憶されるプログラム・モジュール２３３２およびプログラム・データ２３３４を通じてオペレーティング・システム２３２８によるリソースの管理を活用する。本開示は様々なオペレーティング・システムまたはオペレーティング・システムの組合せにより実装することができることを了解されたい。ユーザはコマンドまたは情報を、入力デバイス２３３６を通じてコンピュータ２３１２に入力する。入力デバイス２３３６は、マウスなどのポインティング・デバイス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラなどを含むがそれらに限定しない。これらのおよび他の入力デバイスはインターフェース・ポート２３３８を介してシステム・バス２３１８を通じて処理ユニット２３１４に接続する。インターフェース・ポート２３３８は例えばシリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス（ＵＳＢ）を含む。出力デバイス２３４０は入力デバイス２３３６として同一のタイプのポートのうちのいくつかを使用する。したがって、例えばＵＳＢポートはコンピュータ２３１２に入力を与えるため、およびコンピュータ２３１２から出力デバイス２３４０に情報を出力するために使用することができる。出力アダプタ２３４２は、他の出力デバイス２３４０の中でも特別なアダプタを必要とする、モニタ、スピーカ、およびプリンタなどのいくつかの出力デバイス２３４０があることを図示するために与えられる。出力アダプタ２３４２は、例示として、限定ではなく、出力デバイス２３４０とシステム・バス２３１８との間の接続の方法を提供するビデオおよびサウンド・カードを含む。他のデバイスまたはデバイスのシステムあるいはその両方は、リモート・コンピュータ２３４４などの入力機能および出力機能の両方を提供することに留意すべきである。
【０１４８】
コンピュータ２３１２は、リモート・コンピュータ２３４４などの１つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。リモート・コンピュータ２３４４はコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサ・ベースの電化製品、ピア・デバイス、もしくは他の共通のネットワーク・ノードなどであってもよく、また典型的にはコンピュータ２３１２に対して説明される要素の多くまたはすべてを含むこともできる。簡略化のため、メモリ・ストレージ・デバイス２３４６のみをリモート・コンピュータ２３４４とともに図示する。リモート・コンピュータ２３４４はネットワーク・インターフェース２３４８を通じてコンピュータ２３１２に論理的に接続しており、そして通信接続２３５０を介して物理的に接続されている。ネットワーク・インターフェース２３４８は、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、セルラ・ネットワークなど有線または無線あるいはその両方の通信ネットワークを包含している。ＬＡＮ技術はＦｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＦＤＤＩ）、Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＣＤＤＩ）、イーサネット（Ｒ）、トークン・リング、などを含む。ＷＡＮ技術は、ポイントツーポイントリンク、サービス総合デジタル網（ＩＳＤＮ）などの回路交換ネットワークおよびそれらの変形例、パケット交換ネットワーク、ならびにデジタル加入者線（ＤＳＬ）を含むがそれらに限定しない。通信接続２３５０とは、ネットワーク・インターフェース２３４８をシステム・バス２３１８に接続するために採用されるハードウェア／ソフトウェアを称する。通信接続２３５０は、明瞭に図示するためにコンピュータ２３１２の内部に示してあるが、コンピュータ２３１２の外部にまたあってもよい。ネットワーク・インターフェース２３４８への接続のためのハードウェア／ソフトウェアとしてはまた、例示的な目的のみであるが、一般電話機グレード・モデム、ケーブル・モデム、およびＤＳＬモデム、ＩＳＤＮアダプタ、ならびにイーサネット（Ｒ）・カードを含むモデムなどの内部および外部技術を含むことができる。
【０１４９】
本発明は、統合のあらゆる可能な技術的詳細レベルにおいてシステム、方法、装置、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは前述のあらゆる適切な組合せであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙としては、さらに以下を挙げることができる：ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令を記録させるパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる適切な組合せ。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または電線を介して送信される電気的信号など、一過性の信号そのものであると解釈されてはならない。
【０１５０】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、個別のコンピューティング／処理デバイスに、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せなどのネットワークを介して、外部のコンピュータもしくは外部のストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅の送信ケーブル、光学送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。それぞれのコンピューティング／処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための設定データ、あるいはスモールトーク（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語などの手続き型プログラミング言語もしくは類似するプログラミング言語、を含む１つまたは複数のプログラミング言語のあらゆる組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、すべてユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして、一部はユーザのコンピュータ上かつ一部はリモート・コンピュータ上で、またはすべてリモート・コンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は外部のコンピュータ（例えば、インターネット・サービス・プロバイダを使用するインターネットを介して）に対してなされてもよい。一部の実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個別化することができる。
【０１５１】
本発明の態様は本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／作用を実装するための方法を作成すべく、汎用目的コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作るものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶させるコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実装する命令を含む製造物品を備えるべく、コンピュータ可読記憶媒体に記憶され得、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定のやり方で機能するように指示するものであってもよい。コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実装するように、コンピュータ実装処理を作るべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作可能な動作を実施させるものであってもよい。
【０１５２】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態にしたがって、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フローチャートまたはブロック図のそれぞれのブロックは、指定される論理機能を実装するための１つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。一部の代替的な実装形態において、ブロックにおいて示した機能は図面で示した順とは異なって発生してもよい。例えば、連続して示される２つのブロックは、実際には実質的に同時に実行されてもよく、またはブロックは関与する機能性によっては、時に逆の順で実行されてもよい。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実施する、または特殊目的ハードウェアおよびコンピュータ命令の組合せを実行する、特殊目的ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【０１５３】
１つまたは複数のコンピュータで実行するコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的なコンテキストにおいて、主題を上で説明してきたが、当業者であれば本開示はまた他のプログラム・モジュールと組み合わせて実装され得ることを理解されよう。一般的に、プログラム・モジュールは、特定のタスクを実施するか、または特定の抽象的なデータ・タイプを実装するか、あるいはその両方のルーチン、プログラム、コンポーネント、データ構造などを含む。さらには、当業者であれば、本発明のコンピュータ実装方法は、単一プロセッサまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、ならびにコンピュータ、ハンドヘルド・コンピューティング・デバイス（例えば、ＰＤＡ、電話機）、マイクロプロセッサ・ベースのまたはプログラマブルの、家庭用または業務用電子機器など、を含む他のコンピュータ・システム構成で実践できることを了解されよう。図示した態様はまた、タスクが通信ネットワークを通じてリンクされたリモート処理デバイスによって実施される分散コンピューティング環境において実践することができる。しかしながら、本開示の、すべてでないにしても一部の態様は、スタンドアロンのコンピュータで実践することができる。分散コンピューティング環境において、プログラム・モジュールはローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置することができる。
【０１５４】
本開示はクラウド・コンピューティングについての詳細な説明を含むが、本明細書で具陳される教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ本発明の実施形態は、現在既知のまたは後に開発されるあらゆる他のタイプのコンピューティング環境と併せて実装することができる。
【０１５５】
クラウド・コンピューティングは、最小限の管理努力で、またはサービスのプロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、便利でオン・デマンドの構成可能なコンピューティング・リソースの共有されるプールへ（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）のネットワーク・アクセスを可能とするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つの展開モデルを含むことができる。特徴は、以下の通りである：オン・デマンド・セルフサービス：クラウド消費者は、サービスのプロバイダとの人間対話を要求することなく必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピュータ機能を一方的にプロビジョニングすることができる。幅広いネットワーク・アクセス：機能はネットワーク上で利用可能であり、異質なシンまたはシックなクライアントのプラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による使用を促進する標準的なメカニズムを通じてアクセスされる。リソース・プール：プロバイダのコンピューティング・リソースは、マルチテナントのモデルを使用する複数の消費者にサービス提供するためにプールされ、異なる物理的および仮想的なリソースが要求にしたがって動的に割り当ておよび再割り当てされる。消費者が提供されるリソースの正確な場所についての制御または情報を一般的に持たない点で、場所の独立性の意味があるが、高レベルの抽象化（例えば、国、州、またはデータ・センタ）において場所を特定できることもある。迅速な順応性：機能は迅速かつ伸縮自在にプロビジョニングすることができ、いくつかの場合において、自動的に、素早くスケール・アウトされ、迅速にリリースされて素早くスケール・インされる。消費者にとって、プロビジョニングのために利用可能な機能は、しばしば無制限なようで、いつでもいくらでも購入することができる。計測されるサービス：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント）に適当な抽象化のいくつかのレベルにおいて計測機能を活用することによりリソースの使用を自動的に制御し、最適化する。リソースの使用は監視され、制御され、かつ報告され得、利用されるサービスのプロバイダおよび消費者の両方にとって透明性を与えている。
【０１５６】
サービス・モデルは以下の通りである：ソフトウェアを提供するサービス（Software as a Service（ＳａａＳ））：消費者に提供される機能は、クラウド・インフラストラクチャで実行するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース（例えば、ウェブ・ベースの電子メール）を通じて様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理または制御することはなく、例外として限定されたユーザ固有アプリケーションの構成設定が可能である。プラットフォームを提供するサービス（Platform as a Service（ＰａａＳ））：消費者に提供される機能は、消費者作成のクラウド・インフラストラクチャ、またはプロバイダによって供給されるプログラミング言語およびツールを使用して作成された取得されたアプリケーションに展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラストラクチャの管理または制御をしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションについての制御を有する。インフラストラクチャを提供するサービス（Infrastructure as a Service（ＩａａＳ））：消費者に提供される機能は、消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することができる処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、基礎となるクラウド・インフラストラクチャの管理または制御をしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションについての制御を有し、場合によっては選択されたネットワーク・コンポーネント（例えば、ホスト・ファイヤウォール）の限定された制御を有する。
【０１５７】
展開モデルは以下の通りである：プライベート・クラウド：クラウド・インフラストラクチャはある組織のためだけに運用される。クラウド・インフラストラクチャはその組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される事案（例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス懸案事項）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャはその組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆または大規模な業界団体に対して利用可能とされ、クラウド・サービスを販売する組織によって所有される。ハイブリッド・クラウド：クラウド・インフラストラクチャは、一意なエンティティのままである２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）を組み合わせたものであるが、データおよびアプリケーションのポータビリティを可能にする標準化された、または専有的な技術（例えば、クラウド間でロード・バランシングを行うためのクラウド・バースト）によってともに結合される。
【０１５８】
クラウド・コンピューティング環境は、ステートレスであること、低い結合性、モジュール性、および意味論的な相互運用性に集中するサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【０１５９】
次に図２５を参照すると、例示的なクラウド・コンピューティング環境２４５０が描写されている。示されるように、クラウド・コンピューティング環境２４５０は、例えば、携帯情報端末（ＰＤＡ）または携帯電話２４５４Ａ、デスクトップ・コンピュータ２４５４Ｂ、ラップトップ・コンピュータ２４５４Ｃ、または自動車コンピュータ・システム２４５４Ｎあるいはその組合せなどのクラウドの消費者によって使用されるローカルのコンピューティング・デバイスと通信することができる１つまたは複数のクラウド・コンピューティング・ノード２４１０を含む。ノード２４１０は互いに通信することができる。本明細書において上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッドのクラウドまたはその組合せなどの１つまたは複数のネットワークにおいて、これらは物理的または仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境２４５０は、クラウドの消費者がローカルのコンピューティング・デバイスでリソースを維持する必要のない、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せをサービスとして与えることができる。図２５に示されるコンピューティング・デバイス２４５４Ａ〜Ｎのタイプは、図示のみを意図されており、コンピューティング・ノード２４１０およびクラウド・コンピューティング環境２４５０は、あらゆるタイプのネットワーク上またはネットワーク・アドレス可能接続で（例えば、ウェブ・ブラウザを使用して）あるいはその両方であらゆるタイプのコンピュータ化されたデバイスと通信することができることが理解されよう。
【０１６０】
次に図２６を参照すると、クラウド・コンピューティング環境２４５０（図２５）によって提供される機能的な抽象化レイヤのセットが示されている。図２６に示されるコンポーネント、レイヤ、および機能は、図示のみを意図されており、本発明の実施形態はそれらに限定されないことがまず理解されるべきである。描写されるように、以下のレイヤおよび対応する機能が提供される：ハードウェアおよびソフトウェア・レイヤ２５６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、以下が挙げられる：メインフレーム２５６１、縮小命令セット・コンピュータ（Reduced Instruction Set Computer（ＲＩＳＣ））アーキテクチャ・ベースのサーバ２５６２、サーバ２５６３、ブレード・サーバ２５６４、ストレージ・デバイス２５６５、ならびにネットワークおよびネットワーク・コンポーネント２５６６。いくつかの実施形態において、ソフトウェア・コンポーネントはネットワーク・アプリケーション・サーバ・ソフトウェア２５６７、およびデータベース・ソフトウェア２５６８を含む。
【０１６１】
仮想化レイヤ２５７０は、仮想エンティティの以下の例を提供することができる抽象化レイヤを与える：仮想サーバ２５７１、仮想ストレージ２５７２、仮想プライベート・ネットワークを含む仮想ネットワーク２５７３、仮想アプリケーションおよびオペレーティング・システム２５７４、および仮想クライアント２５７５。
【０１６２】
一例において、管理レイヤ２５８０は以下で説明される機能を提供することができる。リソース・プロビジョニング２５８１は、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および課金２５８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費についての課金または請求書発行を提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド消費者およびタスクについての識別情報の検証、ならびにデータおよび他のリソースについての保護を提供する。ユーザ・ポータル２５８３はクラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス水準管理２５８４は、要求されるサービス水準が満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス水準合意（ＳＬＡ）計画および遂行２５８５は、将来的な要求がＳＬＡにしたがって予期されるクラウド・コンピューティング・リソースについての事前申し合わせ、およびクラウド・コンピューティング・リソースの調達を提供する。
【０１６３】
ワークロード・レイヤ２５９０はクラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤからもたらされ得るワークロードおよび機能の例として以下が挙げられる：マッピングおよびナビゲーション２５９１、ソフトウェア開発およびライフサイクル管理２５９２、仮想授業教育配信２５９３、データ分析処理２５９４、トランザクション処理２５９５、およびサービス・マネジメント・エンジン２５９６。
【０１６４】
本出願で使用される場合、用語「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」などは、コンピュータ関連のエンティティ、または１つもしくは複数の特別な機能性を有して動作可能なマシンに関連するエンティティを称することができるか、または含むことができるか、あるいはその両方である。本明細書において開示されるエンティティは、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、実行可能なもの、実行のスレッド、プログラムまたはコンピュータあるいはその組合せであることができるが、それに限定しない。例示として、サーバ上で実行中のアプリケーションおよびサーバの両方はコンポーネントであることができる。１つまたは複数のコンポーネントはプロセスまたは実行のスレッドあるいはその両方の中に存在することができ、また、コンポーネントは１つのコンピュータに集中してもよく、または２つ以上のコンピュータ間で分散されてもよく、あるいはその両方であってもよい。別の例において、個々のコンポーネントは様々なデータ構造を記憶させる様々なコンピュータ可読媒体から実行することができる。コンポーネントは、１つまたは複数のデータ・パケットを有する信号にしたがうなど、ローカルまたはリモートのプロセスあるいはその両方のプロセスを介して通信することができる（例えば、１つのコンポーネントからのデータは、ローカル・システム内で、分散システム内で、または他のシステムとのインターネットなどのネットワーク全体で、あるいはその組合せで、信号を介して別のコンポーネントと相互作用する）。別の例として、コンポーネントは、電気的または電子的な回路によって動作させられる機械的な部品によって与えられる特別な機能性を有する装置であることができ、プロセッサによって実行されるソフトウェアまたはファームウェア・アプリケーションによって動作させられる。そのような場合、プロセッサは装置に対して内部または外部にあることができ、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部を実行することができる。さらに別の例として、コンポーネントは機械的な部品無しに電子機器部品を通じて特別な機能性を提供する装置であることができ、ここで、電子機器部品は電子機器部品の機能性を少なくとも一部付与するソフトウェアまたはファームウェアを実行するためのプロセッサまたは他の方法を含むことができる。一態様において、コンポーネントは例えば、クラウド・コンピューティング・システム内で仮想マシンを介して電子機器部品をエミューレートすることができる。
【０１６５】
加えて、用語「または（or）」は、排他的「or」ではなく包括的「or」を意味することを意図されている。すなわち、特に明記しない限り、またはコンテキストから離れない限り、「Ｘは、ＡまたはＢを採用する」とは、自然包括的並べ替えのうちの任意のものを意味することを意図されている。すなわち、ＸがＡを採用する、ＸがＢを採用する、またはＸがＡおよびＢを両方採用する場合、「ＸがＡまたはＢを採用する」が前述の事例のうちの任意のものの下で満たされる。さらには、本明細書および添付される図面内で使用される場合、冠詞「１つの（a）」および「１つの（an）」は、単数形を対象とすると特に明記しない限り、またはコンテキストから離れない限り、一般的に「１つまたは複数の」を意味するものと解釈されるべきである。本明細書において使用される場合、用語「例（example）」または「例示の（exemplary）」あるいはその両方は、例、事例、または図示として機能することを意味するよう利用される。疑念の回避のため、本明細書において開示される主題はそのような例によって限定されない。加えて、本明細書において「例」または「例示の」あるいはその両方として説明されるあらゆる態様または設計は、必ずしも他の態様もしくは設計より好ましい、または有利であるとして解釈される必要はなく、また当業者に既知の等価な例示の構造および技法を排除するつもりでもない。
【０１６６】
本明細書で採用されるように、用語「プロセッサ」は実質的に、シングルコア・プロセッサ、ソフトウェア・マルチスレッド実行機能を有するシングルプロセッサ、マルチコア・プロセッサ、ソフトウェア・マルチスレッド実行機能を有するマルチコア・プロセッサ、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサ、並列プラットフォーム、および分散共有メモリを有する並列プラットフォーム、を備えるあらゆるコンピューティング処理ユニットまたはデバイスを称することができるが、限定はしない。追加的に、プロセッサとは、集積回路、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル・ロジック・コントローラ（ＰＬＣ）、複合プログラマブル・ロジック・デバイス（ＣＰＬＤ）、個別ゲートもしくはトランジスタ・ロジック、個別ハードウェア・コンポーネント、または本明細書において説明される機能を実施するために設計されるそれらのあらゆる組合せを称することができる。さらには、プロセッサは空間使用を最適化するためまたはユーザ機器のパフォーマンスを向上させるために、分子および量子ドット・ベースのトランジスタ、スイッチ、ならびにゲートなどのナノスケールのアーキテクチャを活用することができるが、限定はしない。プロセッサはまたコンピューティング処理ユニットの組合せとして実装され得る。本開示において、「記憶する」、「ストレージ」、「データ記憶」、「データ・ストレージ」、「データベース」ならびにコンポーネントの動作および機能性に関連する実質的にあらゆる他の情報記憶コンポーネントなどの用語は、「メモリ」内に具体化されるエンティティ「メモリ・コンポーネント」またはメモリを含むコンポーネントを称するために利用される。本明細書において説明されるメモリまたはメモリ・コンポーネントあるいはその両方は揮発性メモリまたは不揮発性メモリのいずれかであることができるか、または揮発性メモリおよび不揮発性メモリの両方を含むことができることを了解されたい。例示として、限定ではなく、不揮発性メモリは読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ）（例えば、強誘電ＲＡＭ（ＦｅＲＡＭ））を含むことができる。揮発性メモリは例えば外部キャッシュ・メモリとして動作できるＲＡＭを含むことができる。例示として、限定ではなく、ＲＡＭはシンクロナスＲＡＭ（ＳＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）、ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ（ＤＲＤＲＡＭ）、およびＲａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ（ＲＤＲＡＭ）などの多くの形態で利用可能である。追加的に、本明細書におけるシステムまたはコンピュータ実装方法の開示されるメモリ・コン��ーネントは、これらのおよびあらゆる他の適切なタイプのメモリを含むことを意図されているが、それらを含むように限定されていない。
【０１６７】
上で説明してきたことは、システムおよびコンピュータ実装方法の単なる例を含む。もちろん、本開示を説明することを目的として、コンポーネントまたはコンピュータ実装方法のすべての考えられる組合せを説明することは不可能だが、当業者であれば本開示の多くのさらなる組合せおよび並べ替えが可能であることを理解し得る。さらには、発明を実施するための形態、特許請求の範囲、付録および図面において用語「含む（includes）」、「有する（has）」、「所有する（possesses）」などが使用される範囲では、そのような用語は、請求項の移行句として採用される場合に「を備える（comprising）」が解釈される際の用語「を備える（comprising）」と類似するやり方で、包括的であることを意図されている。例示を目的として様々な実施形態の説明を提示してきたが、網羅的であること、または開示された実施形態に限定することは意図されていない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正形態および変形形態が当業者にとって明らかとなろう。本明細書において使用される用語法は、実施形態の原理、実践的な用途もしくは市場で見られる技術に対する技術的な改善を最良に説明するため、または当業者の他の者が本明細書において開示される実施形態を理解できるように選ばれたものである。
【図１】
2021515293.tif 000006
【図２】
2021515293.tif 000007
【図３】
2021515293.tif 000008
【図４】
2021515293.tif 000009
【図５】
2021515293.tif 000010
【図６】
2021515293.tif 000011
【図７】
2021515293.tif 000012
【図８】
2021515293.tif 000013
【図９】
2021515293.tif 000014
【図１０】
2021515293.tif 000015
【図１１】
2021515293.tif 000016
【図１２】
2021515293.tif 000017
【図１３】
2021515293.tif 000018
【図１４】
2021515293.tif 000019
【図１５】
2021515293.tif 000020
【図１６】
2021515293.tif 000021
【図１７】
2021515293.tif 000022
【図１８】
2021515293.tif 000023
【図１９】
2021515293.tif 000024
【図２０】
2021515293.tif 000025
【図２１】
2021515293.tif 000026
【図２２】
2021515293.tif 000027
【図２３】
2021515293.tif 000028
【図２４】
2021515293.tif 000029
【図２５】
2021515293.tif 000030
【図２６】
2021515293.tif 000031
【手続補正書】
【提出日】令和3年3月24日(2021.3.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
プロセッサに動作可能に連結されたシステムにより、およびブロックチェーン・ネットワーク内で、第１のノード・タイプのノードの第１のグループを動作スロットの第１のセットに、また、前記第１のノード・タイプとは異なる第２のノード・タイプのノードの第２のグループを動作スロットの第２のセットに割り振ることと、
前記システムにより、前記動作スロットの第２のセットに割り振られた前記ノードの第２のグループを、前記動作スロットの第１のセット内の前記ノードの第１のグループと集約することであって、前記動作スロットの第１のセットのうちの１つまたは複数が、前記ノードの第１のグループおよび前記ノードの第２のグループ両方に対応する複数の割り振られたノードを備える、前記集約することと、
前記システムにより、前記ノードの第１のグループと前記動作スロットの第１のセット内で集約される前記ノードの第２のグループとを前記集約することに基づいてサービス・マネジメント動作を実行することであって、合意アルゴリズムは、前記サービス・マネジメント動作を前記実行することの間に満たされる、前記実行することと
を含む、コンピュータ実装方法。
【請求項２】
前記ノードの第１のグループを前記割り振ることが、前記ノードの第２のグループを前記割り振ることとは独立して実施される、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記ブロックチェーン・ネットワーク内で、前記ノードの第１のグループがピア・ノードであり、前記ノードの第２のグループがｏｒｄｅｒｅｒノードである、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記第１のノード・タイプが前記ブロックチェーン・ネットワークに存在する第１の機能性であり、前記第２のノード・タイプが前記ブロックチェーン・ネットワークに存在する第２の機能性であり、前記第１の機能性が前記第２の機能性とは異なっている、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記システムにより、前記ブロックチェーン・ネットワーク内の、前記ノードの第１のグループに関連付けられるエンドースメント・ポリシ、および前記ノードの第２のグループに関連付けられる前記合意アルゴリズムに基づいて前記サービス・マネジメント動作を実行すること
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記システムにより、取引にデジタル署名を適用することに基づいて前記取引を承認するために必要とされる前記ノードの第２のグループの最小数を決定すること
をさらに含む、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記合意アルゴリズムが、ｉｎ−ｓｅｒｖｉｃｅである前記ノードの第１のグループおよび前記ノードの第２のグループの最小数を維持することにより、ブロックチェーンのそれぞれのブロック内の取引のセットについて、正しい順序付けおよび検証の両方を提供する、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記ノードの第２のグループが承認を行うエンティティであり、前記コンピュータ実装方法が、
前記システムにより、前記ブロックチェーン・ネットワークにサブミットされる取引を受信することと、
前記システムにより、前記ノードの第２のグループのうちの２つ以上のノードが前記取引を承認したことを判断することと，
前記システムにより、前記サービス・マネジメント動作を前記実行することの間に前記取引を完了することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記ノードの第２のグループを前記集約することが、前記システムにより、前記サービス・マネジメント動作を前記実行することの間、前記ノードの第１のグループおよび前記ノードの第２のグループを更新するために実施されるステップ数を最小にすることを含む、請求項１に記載のコンピュータ実装方法。
【請求項１０】
ブロックチェーン・ネットワークで実行されるシステムあって、
前記ブロックチェーン・ネットワークにおいて第１の機能性を実行するノードの第１のセットと、
前記ブロックチェーン・ネットワークにおいて第２の機能性を実行するノードの第２のセットであって、前記第１の機能性は前記第２の機能性とは異なっている、前記ノードの第２のセットと、
コンピュータ実行可能コンポーネントを記憶するメモリと、前記メモリに記憶される前記コンピュータ実行可能コンポーネントを実行するプロセッサとを備えるサービス・マネジメント・エンジンであって、前記コンピュータ実行可能コンポーネントが、
前記ノードの第１のセットが前記第１の機能性を実行し、前記ノードの第２のセットが前記第２の機能性を実行することを判断するカテゴリ化コンポーネントと、
前記ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、および前記ノードの第２のセットについて前記サービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定する規則コンポーネントと、
前記ステップの第１の数量と前記ステップの第２の数量との集約に基づいて前記サービス・マネジメント動作を実行する実装コンポーネントであって、前記集約は、前記サービス・マネジメント動作の実行についてステップの最小数を規定する、前記実装コンポーネントと
を備える、前記サービス・マネジメント・エンジンと
を備える、システム。
【請求項１１】
前記規則コンポーネントが、前記ノードの第１のセット内のノードの数量が、前記サービス・マネジメント動作について指定されるノードの規定された数量未満であると判断し、前記コンピュータ実行可能コンポーネントが、
１つまたは複数のノードを前記ノードの第１のセットに追加する挿入コンポーネントであって、前記挿入コンポーネントが前記ノードの第１のセット内のノードの数量と前記ノードの規定された数量との差異に基づいて、追加するノードの数量を決定する、前記挿入コンポーネント
をさらに備える、請求項１０に記載のシステム。
【請求項１２】
前記規則コンポーネントが、前記ノードの第１のセット内のノードの数量が、前記サービス・マネジメント動作について指定されるノードの規定された数量より多いと判断し、前記実装コンポーネントが、前記ブロックチェーン・ネットワークにおける処理効率を損なうことなく前記ノードの第１のセットに対して前記サービス・マネジメント動作を実行する、請求項１０に記載のシステム。
【請求項１３】
コンピュータ実装方法であって、
プロセッサに動作可能に連結されたシステムにより、ブロックチェーン・ネットワーク内のノードの第１のセットが第１の機能性を実行すること、および前記ブロックチェーン・ネットワーク内のノードの第２のセットが前記第１の機能性とは異なる第２の機能性を実行すること、を判断することと、
前記システムにより、前記ノードの第１のセットについてサービス・マネジメント動作を実施するために実行されるステップの第１の数量、および前記ノードの第２のセットについて前記サービス・マネジメント動作を実施するために実行されるステップの第２の数量を決定することと、
前記システムにより、前記ステップの第１の数量と前記ステップの第２の数量との集約に基づいて前記サービス・マネジメント動作を実行することであって、前記集約が、前記サービス・マネジメント動作の実行についてステップの最小数を規定する、前記実行することと
を含む、コンピュータ実装方法。
【請求項１４】
前記システムにより、前記ノードの第１のセット内のノードの数量が前記サービス・マネジメント動作について指定されるノードの規定された数量を満たすかどうかを判断することと、
前記システムにより、前記ノードの数量が前記ノードの規定された数量より少ないという前記判断に基づいて、１つまたは複数のノードを前記ノードの第１のセットに追加することであって、前記追加するノードの数量が前記ノードの第１のセット内の前記ノードの数量と前記ノードの規定された数量との差異に基づいて決定される、前記追加することと
をさらに含む、請求項１３に記載のコンピュータ実装方法。
【請求項１５】
コンピュータ・プログラムであって、請求項１ないし９、１３または１４のいずれか１項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
【国際調査報告】
2021515293.tif 000032
2021515293.tif 000033