(57)【要約】  方法は、ブロックチェーン・トランザクションのエンドースメントを実行するためのエンドースメント要求を識別するステップと、エンドースメント要求を順序付けノードに送信するステップと、エンドースメント・ブロックチェーン・ピアの性能指標を監視するステップと、性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるステップと、エンドースされたブロックチェーン・トランザクションを受信するステップとを含む。
2021526751.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別することと、
前記１つまたは複数のエンドースメント要求を順序付けノードに送信することと、
エンドースメント・ブロックチェーン・ピアの性能指標を監視することと、
前記性能指標に基づいて前記１つまたは複数のエンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることと、
エンドースされたブロックチェーン・トランザクションを受信することと
を含んでいる、コンピュータ実装方法。
【請求項２】
前記１つまたは複数のエンドースメント要求をブロックに格納することと、
前記ブロックを前記エンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に送信することと
をさらに含んでいる、請求項１に記載の方法。
【請求項３】
前記性能指標が、前記１つまたは複数のエンドースメント要求のブロック高さに基づく前記エンドースメント・ブロックチェーン・ピアのピア処理速度を含んでいる、請求項１に記載の方法。
【請求項４】
各ピア処理速度に従う順序で前記エンドースメント・ブロックチェーン・ピアをランク付けすることをさらに含んでいる、請求項３に記載の方法。
【請求項５】
最低の処理時間を有する前記エンドースメント・ブロックチェーン・ピアが、前記エンドースメント・ブロックチェーン・ピアのランクのリスト内で最下位にランク付けされる、請求項４に記載の方法。
【請求項６】
前記ブロックが、前記１つまたは複数のエンドースメント要求、１つまたは複数のエンドースメント応答、１つまたは複数のエンドースメント応答確認およびトランザクション・レコードを含んでいる、請求項２に記載の方法。
【請求項７】
前記性能指標に基づいて前記エンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることが、前記エンドースメント・ブロックチェーン・ピアのうちの他のものより速い処理速度を有している、前記エンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に、前記エンドースメント要求を割り当てることを含んでいる、請求項１に記載の方法。
【請求項８】
ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別するように構成されたプロセッサと、
前記１つまたは複数のエンドースメント要求を順序付けノードに送信するように構成された送信器と
を備え、
前記プロセッサが、
エンドースメント・ブロックチェーン・ピアの性能指標を監視することと、
前記性能指標に基づいて前記１つまたは複数のエンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることと
を実行するようにさらに構成されており、さらに
エンドースされたブロックチェーン・トランザクションを受信するように構成された受信器と
を備えている、装置。
【請求項９】
前記プロセッサが、
前記１つまたは複数のエンドースメント要求をブロックに格納するようにさらに構成されており、
前記送信器が、前記ブロックを前記エンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に送信するようにさらに構成されている、請求項８に記載の装置。
【請求項１０】
前記性能指標が、前記１つまたは複数のエンドースメント要求のブロック高さに基づく前記エンドースメント・ブロックチェーン・ピアのピア処理速度を含んでいる、請求項８に記載の装置。
【請求項１１】
前記プロセッサが、各ピア処理速度に従う順序で前記エンドースメント・ブロックチェーン・ピアをランク付けするようにさらに構成されている、請求項１０に記載の装置。
【請求項１２】
最低の処理時間を有する前記エンドースメント・ブロックチェーン・ピアが、前記エンドースメント・ブロックチェーン・ピアのランクのリスト内で最下位にランク付けされる、請求項１１に記載の装置。
【請求項１３】
前記ブロックが、前記１つまたは複数のエンドースメント要求、１つまたは複数のエンドースメント応答、１つまたは複数のエンドースメント応答確認、およびトランザクション・レコードを含んでいる、請求項９に記載の装置。
【請求項１４】
前記プロセッサが、前記エンドースメント・ブロックチェーン・ピアのうちの他のものより速い処理速度を有している、前記エンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に、前記エンドースメント要求を割り当てることによって、前記性能指標に基づいて前記エンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てる、請求項８に記載の装置。
【請求項１５】
命令を提供するコンピュータ可読ストレージ媒体であって、前記命令が、実行された場合に、プロセッサに、
ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別することと、
前記１つまたは複数のエンドースメント要求を順序付けノードに送信することと、
エンドースメント・ブロックチェーン・ピアの性能指標を監視することと、
前記性能指標に基づいて前記１つまたは複数のエンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることと、
エンドースされたブロックチェーン・トランザクションを受信することと
を実行させる、コンピュータ可読ストレージ媒体。
【請求項１６】
前記プロセッサが、
前記１つまたは複数のエンドースメント要求をブロックに格納することと、
前記ブロックを前記エンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に送信することと
を実行するようにさらに構成されている、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１７】
前記性能指標が、前記１つまたは複数のエンドースメント要求のブロック高さに基づいて前記エンドースメント・ブロックチェーン・ピアのピアの処理速度を含んでいる、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１８】
前記プロセッサが、
各ピアの処理速度に従う順序で前記エンドースメント・ブロックチェーン・ピアをランク付けすることを実行するようにさらに構成されている、請求項１７に記載のコンピュータ可読ストレージ媒体。
【請求項１９】
最低の処理時間を有する前記エンドースメント・ブロックチェーン・ピアが、前記エンドースメント・ブロックチェーン・ピアのランクのリスト内で最下位にランク付けされる、請求項１８に記載のコンピュータ可読ストレージ媒体。
【請求項２０】
前記ブロックが、前記１つまたは複数のエンドースメント要求、１つまたは複数のエンドースメント応答、１つまたは複数のエンドースメント応答確認、および、トランザクション・レコードを含んでおり、前記性能指標に基づいて前記エンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることが、前記エンドースメント・ブロックチェーン・ピアのうちの他のものより速い処理速度を有している、前記エンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に、前記エンドースメント要求を割り当てることを含んでいる、請求項１６に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、ブロックチェーン上の合意およびピア管理手順に関連しており、より詳細には、自己監視ブロックチェーン（self-monitoring blockchain）内のトランザクションのエンドースメントおよびコミットメントを含むブロックチェーン・タスクの委任を伴う最適なピア管理のために、ブロックチェーン上のピアを監視することに関連している。
【背景技術】
【０００２】
ブロックチェーンは、情報を格納するためのパブリックな台帳として使用されることがある。ブロックチェーンは、主に金融トランザクションに使用されるが、商品およびサービスに関連するさまざまな情報（すなわち、製品、パッケージ、状態など）を格納することができる。非集中的方式は、権限および信用を非集中的ネットワークに提供し、そのノードが継続的かつ連続的にトランザクションをパブリックな「ブロック」に記録できるようにし、ブロックチェーンと呼ばれる一意の「チェーン」を作成する。暗号は、トランザクション・ソースの認証を保護するためにハッシュ・コードを介して使用され、中央の仲介を不要とする。ブロックチェーンは、ブロックチェーンのブロック内に継続的に増大するレコードのリストを維持する分散データベースであり、変更不可能な特性のため、改ざんおよび改訂から保護される。各ブロックは、タイムスタンプおよび前のブロックへのリンクを含む。ブロックチェーンは、情報の保持、追跡、転送、および検証に使用され得る。ブロックチェーンは分散システムであるため、トランザクションをブロックチェーン台帳に追加する前に、すべてのピアが合意状態に達する必要がある。
【０００３】
従来、ブロックチェーン・ネットワーク内で動作しているピアは、さまざまなリソースおよび制約を有することがあり、ブロックチェーン・トランザクションを処理するときに、異なる速度のエンドースメントおよびコミットメントをもたらす。ピアは、中央処理装置（ＣＰＵ：central processing unit）の速度、使用可能なメモリ、およびディスクの速度／容量などの、制限されたリソースを含んでいることがある。ピアは、特定の時間に過多の要求を処理して、過負荷になることもある。ピアは、そのようなトランザクションを処理するための宣伝された処理能力に関して不正直であるか、または過大評価することもある。その結果、ピアは、ブロックチェーンの動作におけるエンドースメント・フェーズおよびコミットメント・フェーズの両方においてボトルネックになる可能性がある。
【０００４】
最適な性能を実現するために、ブロックチェーン・ネットワークは、すべてのピアで同じように、またはピアの能力に比例して、エンドースメント・フェーズおよびコミットメント・フェーズの負荷のバランスを取る必要がある。特定のピアの使用率における増加または減少は、それらのピアに割り当てられた特定の時間でのトランザクションの負荷要件に依存する。一般に、負荷バランシングまたは負荷スケーリングに対して推奨されるポリシーは、ブロックチェーン・ネットワーク内の過剰利用、過小利用、またはボトルネックを決定するための信頼できる手法を提供することができる。最先端の許可型ネットワークは、自己評価機能および自己修正機能を有していない。特定の実行時に非効率的なピアを識別するための動作は、通常、存在しない。ブロックチェーン・ネットワークは、自動的に拡張可能ではなく、負荷は、プロビジョニングされたすべてのピアにわたって均一に分散され得ない。また、実行時のより大きい負荷をサポートするために、ピア・ノードを動的に追加することはできない。さらに、ピア・ノードは、必要に応じてエンドーサがコミッター（committer）またはオーダラ（orderers）になるなどの、他の役割を果たすために再プロビジョニングされない。ネットワークを手動で評価すること、およびスケールアップすること、またはリバランスすることは可能であるが、この手法は、信頼できる監視する実体がない場合に、各組織がそのような変更を独立して実行しなければならないため、リスクをもたらす。過剰プロビジョニングは、リソースの浪費をもたらし、過小プロビジョニングは、性能不足をもたらす。ある組織によって負荷を管理するときの間違った決定は、同じブロックチェーン・ネットワーク上の他の組織の性能に悪影響を与える可能性がある。
【発明の概要】
【０００５】
本発明の１つの態様は、ブロックチェーン・トランザクションのエンドースメントを実行するためのエンドースメント要求を識別することと、エンドースメント要求を順序付けノードに送信することと、エンドースメント・ブロックチェーン・ピア（endorsement blockchain peer）の性能指標を監視することと、性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てることと、エンドースされたブロックチェーン・トランザクションを受信することとのうちの少なくとも１つを含んでいる方法を提供する。
【０００６】
別の態様は、ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別するように構成されたプロセッサと、１つまたは複数のエンドースメント要求を順序付けノードに送信するように構成された送信器とを備え、このプロセッサが、エンドースメント・ブロックチェーン・ピアの性能指標を監視し、性能指標に基づいて１つまたは複数のエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるようにさらに構成されており、さらに、エンドースされたブロックチェーン・トランザクションを受信するように構成されている受信器を含んでいる、装置を提供する。
【０００７】
さらに別の態様は、命令を格納するように構成されたコンピュータ可読ストレージ媒体を提供し、これらの命令は、実行された場合に、プロセッサに、ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別するステップと、１つまたは複数のエンドースメント要求を順序付けノードに送信するステップと、エンドースメント・ブロックチェーン・ピアの性能指標を監視するステップと、性能指標に基づいて１つまたは複数のエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるステップと、エンドースされたブロックチェーン・トランザクションを受信するステップとを実行させる。
【図面の簡単な説明】
【０００８】
【図１Ａ】例示の実施形態に従って、ブロックチェーン・トランザクションの負荷を処理するためのピアの監視および選択の手順の論理ネットワーク図を示す図である。
【図１Ｂ】例示の実施形態に従って、ピアの管理および負荷処理手順の間に実行される一連の動作のシステム構成図を示す図である。
【図１Ｃ】例示の実施形態に従って、ピアの負荷容量を識別し、各性能に従ってピアをランク付けする、例示的なピアの処理の管理図を示す図である。
【図２Ａ】例示の実施形態に従って、アセット共有のシナリオに関する、例示的なピア・ノード・ブロックチェーン・アーキテクチャの構成を示す図である。
【図２Ｂ】例示の実施形態に従って、例示的なピア・ノード・ブロックチェーン構成を示す図である。
【図３】例示の実施形態に従って、許可型ブロックチェーン・ネットワークを示す図である。
【図４】例示の実施形態に従って、ピア管理およびトランザクション管理の構成を実行するためのシステム・メッセージ図を示す図である。
【図５Ａ】例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の例示的な方法のフロー図を示す図である。
【図５Ｂ】例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の別の例示的な方法のフロー図を示す図である。
【図６Ａ】例示の実施形態に従って、本明細書において説明されている１つまたは複数の動作に従って、ブロックチェーンに対してさまざまな動作を実行するように構成された例示的な物理的インフラストラクチャを示す図である。
【図６Ｂ】例示の実施形態に従って、契約当事者間での例示的なスマート・コントラクトの構成、およびブロックチェーン上でスマート・コントラクト条項を執行するように構成された仲介サーバを示す図である。
【図７】例示の実施形態のうちの１つまたは複数をサポートするように構成された例示的なコンピュータ・システムを示す図である。
【発明を実施するための形態】
【０００９】
本明細書の図において概略的に説明され、示されているように、本明細書のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、関連する図および説明において表されている方法、装置、コンピュータ可読媒体、およびシステムのうちの少なくとも１つの実施形態に関する詳細な説明は、適用の範囲を制限するよう意図されておらず、単に選択された実施形態を代表している。
【００１０】
本明細書全体を通して説明された特徴、構造、または特性は、１つまたは複数の実施形態において、任意の適切な様態で組み合わせられてよい。例えば、語句「例示の実施形態」、「一部の実施形態」、またはその他の同様の言葉の使用は、本明細書全体を通じて、実施形態に関連して説明された特定の特徴、構造、または特性が少なくとも１つの実施形態に含まれてよいということを指している。したがって、語句「例示の実施形態」、「一部の実施形態において」、「その他の実施形態において」、またはその他の同様の言葉の出現は、本明細書全体を通じて、必ずしもすべてが実施形態の同じグループを指しておらず、説明された特徴、構造、または特性は、１つまたは複数の実施形態において、任意の適切な様態で組み合わせられてよい。
【００１１】
加えて、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、本出願は、パケット、フレーム、データグラムなどの多くの種類のメッセージまたはネットワーク・データに適用されてよい。さらに、特定の種類のメッセージ、信号伝達、およびプロトコルが例示の実施形態において示されることがあるが、それらは特定の種類のメッセージ、信号伝達、またはプロトコルに限定されない。
【００１２】
例示の実施形態は、選択的ピア管理手順を使用してブロックチェーン分散システムをサポートする方法、デバイス、ネットワーク、またはシステム、あるはその組み合わせを提供する。ブロックチェーンは、互いに通信する複数のノードを含んでいる分散システムである。ブロックチェーンは、チェーンコード（例えば、スマート・コントラクトなど）と呼ばれるプログラムを操作し、状態および台帳のデータを保持し、トランザクションを実行する。一部のトランザクションは、チェーンコード上で呼び出される動作である。一般に、ブロックチェーン・トランザクションは、特定のブロックチェーン・メンバーによって「エンドース」されなければならず、エンドースされたトランザクションのみが、ブロックチェーンにコミットされてよく、ブロックチェーンの状態に影響を与える。エンドースされていない他のトランザクションは、無視される。管理機能およびパラメータのための１つまたは複数の特殊なチェーンコードが存在することがあり、それらは、システム・チェーンコードと総称される。
【００１３】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なる種類の複数のノードが同じ物理サーバ上で実行され得るという意味で、論理的な機能を実行してよい。ノードは、信頼できるドメイン内でグループ化され、さまざまなやり方でそれらのノードを制御する論理エンティティに関連付けられる。ノードは、トランザクション呼び出しをエンドーサ（例えば、ピア）にサブミットし、トランザクション提案を順序付けサービス（例えば、オーダラ）にブローキャストするクライアントまたはサブミット・クライアント・ノードなどの、さまざまな種類を含んでよい。別の種類のノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードであることができる。ピアはエンドーサの役割を持つこともできるが、これは必須要件ではない。順序付けサービス・ノードまたは順序付けノードは、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットする際、およびブロックチェーンのワールド・ステートを変更する際の、システム内の各ピア・ノードへのブロードキャストなどの、配信保証を実施し、これは、通常は制御情報および設定情報を含んでいる初期ブロックチェーン・トランザクションの別の名前である。
【００１４】
台帳は、ブロックチェーンのすべての状態遷移の順序付けられた耐改ざん性のレコードである。状態遷移は、参加している関係者（例えば、クライアント・ノード、順序付けノード、エンドーサノード、ピア・ノードなど）によってサブミットされたチェーンコード呼び出し（すなわち、トランザクション）から生じてよい。トランザクションは、１つまたは複数のオペランド（作成、更新、削除など）として台帳にコミットされているアセットのキーとバリューのペアのセットをもたらしてよい。台帳は、変更不可能な順序付けられたレコードをブロックに格納するために使用されるブロックチェーン（チェーンとも呼ばれる）を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。通常は、１つのチャネルにつき１つの台帳が存在する。各ピア・ノードは、それらのピア・ノードがメンバーになっているチャネルごとに、台帳のコピーを維持する。
【００１５】
チェーンは、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックはＮ個のトランザクションのシーケンスを含んでおり、ここで、Ｎは１以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含んでいる。このようにして、台帳のすべてのトランザクションが順序付けられ、暗号によって互いにリンクされてよい。したがって、ハッシュ・リンクを壊さずに台帳データを改ざんすることはできない。最も最近追加されたブロックチェーンのブロックのハッシュは、それ以前に発生したチェーン上のすべてのトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、ブロックチェーンのワークロードの追記専用という性質を効率的にサポートするピア・ノードのファイル・システム（すなわち、ローカル、取り付けられたストレージ、クラウドなど）に格納されてよい。
【００１６】
変更不可能な台帳の現在の状態は、チェーンのトランザクション・ログに含まれているすべてのキーの最新のバリューを表す。現在の状態は、チャネルに知られている最新のキーのバリューを表すため、ワールド・ステートと呼ばれることもある。チェーンコード呼び出しは、台帳の現在の状態のデータに対してトランザクションを実行する。それらのチェーンコードの相互作用を効率的にするために、最新のキーのバリューが状態データベースに格納されてよい。状態データベースは、単にチェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時に、トランザクションが受け取られる前に、自動的に回復されて（必要な場合は、生成されて）よい。
【００１７】
例示の実施形態は、実行時のピアの性能の継続的評価および低速なピアまたはボトルネックとなっているピアの識別を、信頼できる否認不可能な方法で提供する。リソースの評価は、ネットワーク全体で負荷をリバランスする能力、またはピアの役割および負荷を追加／削除／変更して最適な効率を実現する能力、あるいはその両方を提供することができる。ブロックチェーン・ネットワーク内で、ノードは通常、相互に信頼されていない。エンティティは、異なる組織によって所有され、管理されている。ある組織の監視サービスが、別の組織の監視サービスを信頼していないことがある。クライアントは、どのピアがエンドースメント要求を送信するべきかを決定し、またそれらのピアからのどの応答を、オーダラノードに送信されるトランザクション・エンベロープのために選択するべきか決定するため、ブロックチェーン・トランザクションの実行を管理することにおいて、有意な行動の自由を持っている。
【００１８】
例示の実施形態は、エンドースメント手順をブロックチェーン・トランザクションにすることを提供する。エンドースメント要求およびエンドースメント応答は、それらが生成されるときに順序付けられ、ブロック内に収集され、否認防止のために共有台帳にコミットされる。ピア間の既知の差異を識別して処理することは、ネットワーク自己評価手順においてブロックチェーンを調べることによって推測され得る。
【００１９】
動作中に、クライアント・ノードが、エンドースメント要求を、１つまたは複数のエンドーシング・ピアの代わりにオーダラノードに送信する。エンドースメント要求およびエンドースメント応答は、ブロックに格納され、ピアは、クライアントからの直接的要求ではなく、オーダラノードからのブロックの受信時にエンドースメントを実行し、次に、応答をオーダラ／順序付けノードに送信する。監視およびリバランスすることは、トランザクションごとにエンドースメント要求およびエンドースメント応答のブロック高さを比較することを含めて、ピアの相対的処理速度を監視することによって、各クライアントによって実行され得る。その結果、ピアの選択は、それらのピアについて識別された処理速度の降順に、それらの識別されたピアにエンドースメント要求を送信することによって実行されてよい。
【００２０】
図１Ａは、例示の実施形態に従って、ブロックチェーン・トランザクションの負荷を処理するためのピアの監視および選択の手順の論理ネットワーク図を示している。図１Ａを参照すると、構成１００Ａは、解析モジュール１１０からエンドーサ選択１１１を受信するクライアント・ノード１１４を含んでおり、解析モジュール１１０は、ピア・ノード管理の目的でピアの統計値１１３を監視して決定するように構成されている、ノードのうちのいずれかのコンピュータ処理システムの一部であってよい。ピアをプロビジョニングし、ピアへの割り当てを要求するブロックチェーン・トランザクションの負荷をリバランスするために、ピア情報が使用されてよい。クライアント１１４は、エンドーサ要求１１５をサブミットしてよく、これは、キューに入れられてよく、オーダラノード１１６に対してエンドースメント１１５を必要としてよく、オーダラノード１１６は、エンドースメントの合意ブロックチェーン・トランザクション１２０を実行するように設定されたオーダラノード１１６のプールの一部であってよい。トランザクション・エンベロープ１１７も、オーダラノード１１６に送信される。オーダラノード１１６の出力は、エンドースメント確認１１９を含んでよく、ピア割り当ての決定が提供された後にピアに配布されるブロック１２１を含んでもよい。
【００２１】
負荷バランシング・モジュール１１２は、ピア１３０の監視されて更新された活動に基づいてピアのネットワークを再構成１３１してよい。ブロック１２１は、ピアが、活動中の負荷の目標を達成するために必要なエンドースすることまたはコミットすることあるいはその両方を行えるようにする。コミット・ピア１４０は、ＶＳＣＣ１４２を含むエンドースされたトランザクションを記録する（１２３）ためのトランザクションのコミットのみを実行してよい。他のピア１３８は、この例では、エンドースメント・システム・チェーンコード（ＥＳＣＣ：endorsement system chaincode）１３４、検証システム・チェーンコード（ＶＳＣＣ：verification system chaincode）１３６、およびチェーンコード（ＣＣ：chaincode）１３２を用いてトランザクションをエンドースしてコミットする。次に、エンドースされたトランザクション１２５および記録されたエンドース済みトランザクション１２７が、台帳にコミットされる。
【００２２】
上記の要素は、エンドースメント・プロセスを制御する基本的コンポーネントである。システム・チェーンコードは、エンドーサが実行されているプロセスと同じプロセス内で実行される、特権のあるチェーンコードである。システム・チェーンコードは、エンドーサのすべてのリソースに対するアクセスを有する。一方、チェーンコードは、明確に定義されたインターフェイスと情報をやりとりする１つのコードである。提案をエンドースするために、エンドーサは、この提案が参照しているＣＣを最初に実行し、その後、チェーンコードの出力が、署名を生成するＥＳＣＣに渡される。この署名は、提案のエンドースメントを表す。これらのエンドースメントは、トランザクション内に配置され、このトランザクションが、ブロック内にトランザクションを順序付けしてブロックを配布する順序付けサービスに送信される。コミット・ピアによってブロックが受信された後に、そのブロック内の各トランザクションが、エンドースメント・ポリシーが満たされている（すなわち、十分なエンドースメントが存在する）ことを検証するＶＳＣＣに渡される。
【００２３】
図１Ｂは、例示の実施形態に従って、ピアの管理および負荷処理手順の間に実行される一連の動作のシステム構成図を示している。図１Ｂを参照すると、システム構成１００Ｂは、クライアント・ノード１５２と、エンドースメントおよびコミットメントを実行する第１のピア１５４と、トランザクションのコミットを実行する第２のピア１５６と、ピアへのブロックチェーンの負荷の分散を管理するオーダラノード１５８とを含んでいる。クライアント１５２は、エンドーサ・リスト１６２を含むエンドースメント要求およびトランザクション提案を、負荷の分散を管理するオーダラノード１５８に送信してよいオーダラノード１５８は、コミット・ピア用のブロック１６４を構築する。ブロック１６６が、識別されたピア１５４／１５６に送信される。ピア１５６は、トランザクション・エンベロープを処理してよく（１６８）、他のピア１５４は、同じことを実行してよく、エンドースメント要求およびエンドースメント応答を処理してもよい（１７２）。次に、ピアは、コミットされたイベント１７４をクライアント１５２にサブミットしてよく、それは、エンドースメント応答１７６をオーダラノード１５８にサブミットする。それに応じて、ブロック１７８がピアに送信され、エンドーシング・ピアが、エンドースメント確認１８２をクライアント１５２にサブミットし、クライアント１５２は、エンドースメント確認を処理し、トランザクション・エンベロープ１８４を作成し、トランザクション・エンベロープ１８４は、オーダラノード１５８に送信される（１８６）。「Ｅ」はエンドーサを表し、「Ｃ」はコミッターを表す。処理されたトランザクション・エンベロープが、台帳にコミットされる。エンドースメント確認の処理中に、ピアの処理時間が識別され、ブロック高さと比較される。ピアのうちのいずれかについての既知の統計値に対する更新が実行され、それらの認識された処理能力で、ピアが再び並べ替えられる。
【００２４】
対応するエンドースメント提案が台帳に現れるなどの、特定のイベントの結果として、トランザクションが生成される。ここで、現れるということは、エンドースメント提案がブロックチェーン（例えば、台帳）の特定のブロックに含まれるということを示している。ブロック高さは、ブロックチェーンのジェネシス・ブロックからの距離である。エンドースメント応答（すなわち、エンドースメント・ポリシーに依存する１つまたは複数の応答）が、台帳に現れる。各エンドースメント応答は、台帳の特定のブロックに現れる。したがって、ジェネシス・ブロックからの特定の距離（すなわち、ブロック高さ）が識別され得る。この時点で、ピアの応答性を測定するために、エンドースメント提案およびエンドースメント応答の距離またはブロック高さが比較され得る。
【００２５】
図１Ｃは、例示の実施形態に従って、ピアの負荷容量を識別し、各性能に従ってピアをランク付けする、例示的なピアの処理の管理図を示している。図１Ｃを参照すると、高速なピア、低速なピア、および中間の速度のピアを識別するための手順が、ピア処理能力モデル１００Ｃに示されており、ピアＰ１、Ｐ２、Ｐ３、およびＰ４が、ブロックチェーンの処理サイクルを完了するために必要な時間にわたって監視されている。例えば、台帳トランザクション１９０が、Ｐ１によって約２の時間単位にわたって処理されており、Ｐ２およびＰ３によって約３の時間単位にわたって処理されている。Ｐ４は１９の時間単位を必要とし、したがって、他のピアよりはるかに低速である。ピアは、それらの処理時間に従ってランク付けされてよい。ピアのプロセスは、すべてのピアに関するトランザクション提案１９１、ピアＰ１からのトランザクション応答１９２、ピアＰ２およびＰ３からのトランザクション応答１９３、ならびにピアＰ４からのトランザクション応答１９４として識別される。すべての応答が受信された後に、合意が実行される（１９５）。明らかに、第４のピアＰ４は、他のピアと比較した場合に、最適な処理プラットフォームを提供しておらず、したがってＰ４は、ピアのランク付けのリストの最後尾に移動されるべきである。その結果、Ｐ４は、より少ないエンドースメント要求を受信し、純粋にコミットする役割に切り替えられ、オーダラネットワークに追加される。ブロックは、「ｔ０」（ブロック０）でのジェネシス・ブロックから成長し続ける高さによって測定され、「ｔｉ」は高さ「ｉ」でのブロックである。
【００２６】
例示の実施形態によれば、メッセージおよびブロック内容の処理では、メッセージの種類は、クライアントからオーダラに送信されるエンドースメント要求と、ピアからオーダラに送信されるエンドースメント応答と、オーダラからピアに送信されるエンドースメント応答確認と、ピアからクライアントに送信されるブロック・コミット・イベントとを含んでよい。観察できるように、オーダラは、メッセージの転送および割り当ての労力の大部分の管理に取り組む。
【００２７】
ブロック内では、ブロックは、クライアントによって作成された、エンドースメント要求、エンドースメント応答、エンドースメント応答確認、およびトランザクション・エンベロープまたは「トランザクション」を含んでよい。１つの例では、監視手順は、クライアントに対する資格認定に基づいて、厳密に必要とされるよりも多くのエンドースメントを受信しようとしているクライアントを識別してよい。クライアントは、ピアの応答を任意に拒否することができず、または監視手順によって検出されずに、ピアからの応答が受信されたことを否定することができず、あるいはその両方を行うことができない。また、クライアントは、識別されずに不完全なトランザクション・エンベロープまたは不正なトランザクション・エンベロープをサブミットすることができず、ピアは、エンドースメントおよびコミットメントの処理で、実際に提供できる速度よりも速いように装うことができない。この構成は、より大きく効率的なトランザクションのスループットおよびより短いトランザクションの待ち時間を提供する。
【００２８】
図２Ａは、例示の実施形態に従って、ブロックチェーン・システムのアーキテクチャの構成２００Ａを示している。図２Ａを参照すると、ブロックチェーン・アーキテクチャ２００Ａは、ブロックチェーン・トランザクションの追加および検証プロセス（合意）に参加する特定のブロックチェーン要素（例えば、ブロックチェーン・ノード２８１〜２８４のグループ２８０）を含んでよい。ブロックチェーン・ノード２８１〜２８４のうちの１つまたは複数は、トランザクションをエンドースしてよく、１つまたは複数のブロックチェーン・ノード２８１〜２８４は、アーキテクチャ２００Ａ内のすべてのブロックチェーン・ノードに順序付けサービスを提供してよい。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層２２０に格納されたブロックチェーンの変更不可能な台帳に書き込もうとしてよく、この書き込みのコピーが、基盤になる物理的インフラストラクチャ２１０にも格納されてよい。ブロックチェーンの構成は、格納されたプログラム／アプリケーション・コード２５０（例えば、チェーンコード、スマート・コントラクトなど）にアクセスして実行するためにアプリケーション・プログラミング・インターフェイス（ＡＰＩ：application programming interface）２６０にリンクされた１つまたは複数のアプリケーション２７０を含んでよく、プログラム／アプリケーション・コード２５０は、参加者によって要求されてカスタマイズされた構成に従って作成することができ、それら自身の状態を維持し、それら自身のアセットを制御し、外部の情報を受信することができる。
【００２９】
ブロックチェーン・ベースまたはプラットフォーム２０５は、ブロックチェーン・データ、サービス（例えば、暗号信用サービス、仮想実行環境など）および、基盤になる物理的コンピュータ・インフラストラクチャのさまざまな層を含み、これらは、新しいトランザクションを受信して格納し、データ・エントリにアクセスしようとしている監査人にアクセスを提供するために使用されてよい。ブロックチェーン層２２０は、プログラム・コードを処理し、物理的インフラストラクチャ２１０に参加させるために必要な仮想実行環境へのアクセスを提供するインターフェイスを公開してよい。暗号信用サービス２３０は、アセット交換トランザクションなどのトランザクションを検証し、情報をプライベートに保つために使用されてよい。
【００３０】
図２Ａのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム２０５によって公開された１つまたは複数のインターフェイスおよび提供されたサービスを介して、プログラム／アプリケーション・コード２５０を処理および実行してよい。コード２５０は、ブロックチェーンのアセットを制御してよい。例えば、コード２５０は、データを格納および転送することができ、スマート・コントラクトおよび関連するチェーンコードの形態で、条件または実行の対象になるその他のコード要素とともに、ノード２８１〜２８４によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になるその他の通知、あるいはその組み合わせなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、認証およびアクセスの要件ならびに台帳の使用に関連付けられたルールを識別するために使用され得る。１つの例では、ピア性能データ２２２が、ブロックチェーン層２２０に含まれている１つまたは複数の処理エンティティ（例えば、仮想マシン）によって識別され、処理されてよい。この結果は、ブロックチェーンのタスク／イベントの処理のためにブロックが割り当てられるべき（２２４）ピア・エンティティに関連付けられた最適なコンピューティング・プラットフォームを識別することを含んでよい。
【００３１】
チェーンコード内で、高水準のアプリケーションおよびプログラミング言語を使用して、スマート・コントラクトが作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーン・ピアの分散ネットワーク）への登録、格納、または複製、あるいはその組み合わせが実行される実行可能コードを含んでよい。トランザクションは、スマート・コントラクトに関連付けられた条件が満たされていることに応答して実行され得る、該スマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガーしてよい。スマート・コントラクトの実行によって引き起こされるブロックチェーン台帳に対する変更は、１つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製されてよい。
【００３２】
スマート・コントラクトは、データをキーとバリューのペアの形式でブロックチェーンに書き込んでよい。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納されたバリューを読み取り、それらをアプリケーションの動作において使用することができる。スマート・コントラクト・コードは、さまざまな論理演算の出力をブロックチェーンに書き込むことができる。このコードは、仮想マシンまたはその他のコンピューティング・プラットフォーム内の一時的データ構造を作成するために使用されてよい。ブロックチェーンに書き込まれたデータは、パブリックになること、またはプライベートとして暗号化されて維持されること、あるいはその両方が行われ得る。スマート・コントラクトによって使用／生成される一時的データは、提供された実行環境によってメモリ内に保持され、ブロックチェーンに必要なデータが識別された後に削除される。
【００３３】
チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。本明細書に記載されているように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードであってよく、合意プロセス中に、チェーン・バリデータによって一緒に実行されて検証される。動作中に、チェーンコードは、ハッシュを受信し、以前に格納された特徴抽出器によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出してよい。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュとが一致する場合、チェーンコードは、認証キーを、要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。図２Ａのこの例では、タスクをピアに委任するときに参照する目的で、ピアの性能指標が、ブロックチェーン・トランザクション・ブロックおよびその他の情報源に書き込まれてよい。
【００３４】
図２Ｂは、例示の一実施形態に従って、ブロックチェーンのノード間のトランザクション・フロー２００Ｂの例を示している。図２Ｂを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード２０１によってエンドーシング・ピア・ノード２８１に送信されるトランザクション提案２９１を含んでよい。エンドーシング・ピア２８１は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションをシミュレートしてよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー／バリューのバージョンのセット（読み取られたセット）、およびチェーンコードに書き込まれたキー／バリューのセット（書き込まれたセット）を含んでよい。提案応答２９２が、承認されている場合は、エンドースメント署名と共に、クライアント２０１に返送される。クライアント２０１は、エンドースメントをトランザクションのペイロード２９３にまとめて、順序付けサービス・ノード２８４にブロードキャストする。その後、順序付けサービス・ノード２８４は、順序付けられたトランザクションをチャネル上でブロックとしてすべてのピア２８１〜２８３に配信する。ブロックチェーンへのコミットの前に、各ピア２８１〜２８３がトランザクションを検証してよい。例えば、ピアは、エンドースメント・ポリシーをチェックし、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード２９３に対する署名を認証したことを確認することができる。
【００３５】
再び図２Ｂを参照すると、クライアント・ノード２０１が、要求を構築してエンドーサであるピア・ノード２８１に送信することによって、トランザクション２９１を開始する。クライアント２０１は、ＮＯＤＥ、ＪＡＶＡ（登録商標）、ＰＹＴＨＯＮなどのサポートされているソフトウェア開発キット（ＳＤＫ：software development kit）を利用するアプリケーションを含んでよく、このアプリケーションは、使用可能なＡＰＩを利用してトランザクション提案を生成する。提案は、データが台帳から読み取られること、または台帳に書き込まれること（すなわち、アセットの新しいキーとバリューのペアを書き込むこと）、あるいはその両方を実行できるように、チェーンコード関数を呼び出すことの要求である。ＳＤＫは、トランザクション提案を、適切に設計された形式（例えば、リモート・プロシージャ・コール（ＲＰＣ：ｒｅｍｏｔｅ  ｐｒｏｃｅｄｕｒｅ  ｃａｌｌ）を経由するプロトコル・バッファ）にパッケージ化するためのシム（sim）として機能し、クライアントの暗号的クレデンシャル情報を受け取って、トランザクション提案の一意の署名を生成してよい。
【００３６】
それに応じて、エンドーシング・ピア・ノード２８１は、（ａ）トランザクション提案が適切に形成されていること、（ｂ）トランザクションが過去にすでにサブミットされていないこと（リプレイアタック保護）、（ｃ）署名が有効であること、および（ｄ）そのチャネル上で提案された操作を実行するための適切な権限がサブミッター（例では、クライアント２０１）に与えられていることを検証してよい。エンドーシング・ピア・ノード２８１は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。その後、チェーンコードが、現在の状態データベースに対して実行され、応答値、読み取りセット、および書き込みセットを含んでいるトランザクション結果を生成する。ただしこの時点では、台帳に対する更新は行われない。２９２で、バリューのセットが、エンドーシング・ピア・ノード２８１の署名と共に、提案応答２９２としてクライアント２０１のＳＤＫに返され、このＳＤＫが、アプリケーションが使用するためのペイロードを構文解析する。
【００３７】
それに応じて、クライアント２０１のアプリケーションが、エンドーシング・ピアの署名を検査／検証し、提案応答を比較して、提案応答が同じであるかどうかを判定する。チェーンコードが単に台帳に問い合わせた場合、アプリケーションは問い合わせ応答を検査し、通常は、トランザクションを順序付けノード・サービス２８４にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けノード・サービス２８４にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定されたエンドースメント・ポリシーが満たされているかどうか（すなわち、トランザクションに必要なすべてのピア・ノードがトランザクションをエンドースしたかどうか）を判定する。ここで、クライアントは、トランザクションの複数の関係者のうちの１つのみを含んでよい。この場合、各クライアントは、それ自身のエンドーシング・ノードを含んでよく、各エンドーシング・ノードがトランザクションをエンドースする必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、またはその他の方法でエンドースされていないトランザクションを転送する場合でも、エンドースメント・ポリシーが、ピアによってまだ実施され、コミット検証フェーズで維持されるようにする。
【００３８】
検査に成功した後に、ステップ２９３で、クライアント２０１が、エンドースメントをトランザクションにまとめ、順序付けノード２８４へのトランザクション・メッセージ内でトランザクション提案およびトランザクション応答をブロードキャストする。トランザクションは、読み取り／書き込みセット、エンドーシング・ピアの署名、およびチャネルＩＤを含んでよい。順序付けノード２８４は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに順序付けノード２８４は、単に、トランザクションをネットワーク内のすべてのチャネルから受信して、チャネル別に経時的に順序付けし、チャネルごとにトランザクションのブロックを作成してよい。
【００３９】
トランザクションのブロックは、順序付けノード２８４からチャネル上のすべてのピア・ノード２８１〜２８３に配信される。エンドースメント・ポリシーが満たされていることを保証し、読み取りセットがトランザクションの実行によって生成されて以来、読み取りセットの変数に関して台帳の状態に対する変更がないことを保証するために、ブロック内のトランザクション２９４が検証される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ２９５で、各ピア・ノード２８１〜２８３は、ブロックをチャネルのチェーンに追加し、有効なトランザクションごとに、書き込みセットが現在の状態データベースにコミットされる。トランザクション（呼び出し）が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションが有効にされたか、または無効にされたかを通知するために、イベントが発行される。
【００４０】
図３は許可型ブロックチェーン・ネットワーク３００の例を示しており、許可型ブロックチェーン・ネットワーク３００は、分散型の非集中的ピア・ツー・ピア・アーキテクチャ、ならびにユーザの役割および権限を管理する認証局３１８を特徴とする。この例では、ブロックチェーン・ユーザ３０２は、トランザクションを許可型ブロックチェーン・ネットワーク３１０にサブミットしてよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、ＳＤＫを利用するクライアント側のアプリケーションを介して、ＲＥＳＴ  ＡＰＩを介して直接的に、または同様の方法によって、発行されてよい。信頼できるビジネス・ネットワークは、監査人（例えば、米国の株式市場における証券取引委員会）などの規制者システム３１４にアクセスを提供してよい。一方、ブロックチェーン・ネットワーク運用者３０８は、ノード３１２のシステムを介して、規制者システム３１４を「監査人」として登録し、ブロックチェーン・ユーザ３０２を「クライアント」として登録するなどの、メンバーの権限を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
【００４１】
ブロックチェーン開発者システム３１６は、チェーンコードおよびクライアント側のアプリケーションを書き込む。ブロックチェーン開発者システム３１６は、ＲＥＳＴインターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース３３０からのクレデンシャル情報をチェーンコードに含めるために、開発者システム３１６は、アウトオブバンド接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ３０２は、ピア・ノード３１２を介してネットワークに接続する。ピア・ノード３１２は、いずれかのトランザクションを開始する前に、ユーザのエンロールメントおよびトランザクション証明書を認証局３１８から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク３１０上でトランザクションを実行するために、それらのデジタル証明書を処理しなければならない。一方、チェーンコードを動作させようとしているユーザは、従来のデータ・ソース３３０上のそれらのユーザのクレデンシャル情報を検証することが必要になることがある。ユーザの認証を確認するために、チェーンコードは、従来の処理プラットフォーム３２０を介して、このデータへのアウトオブバンド接続を使用することができる。
【００４２】
図４は、例示の実施形態に記載されている、ピア管理およびトランザクション管理の構成を実行するためのシステム・メッセージ図を示している。図４を参照すると、構成４００は、オーダラ４１０がピア４２０およびブロックチェーン４３０との動作を管理する別のシナリオを提供する。動作中に、オーダラは、ピア・ノード４２０による割り当ておよび処理を必要とするさまざまなエンドースメント要求を識別する（４１２）。ピア・ノードの分析／性能情報が監視されて解析され（４１４）、ピアがランク付けされ（４１６）、相対的な処理能力に見合った順序で並べ替えられる。ピアは、さまざまなタスクに関連する情報を含めるために作成された（４１８）ブロックを受信してよい。ピアの性能指標のランク付けと一致する様態でエンドースメント要求を配布するために、ブロックの割り当てが実行される（４２２）。例えば、ブロックチェーンの負荷処理の性能を最適化するために、最高の能力評価を有するピアには、他のどのピアよりも前にエンドースメント要求が与えられる。トランザクションがエンドースされて完了した後に、トランザクションが、コミットするためにブロックチェーン４３０に転送される（４２４）。
【００４３】
図５Ａは、例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の例示的な方法のフロー図５００Ａを示している。図５Ａを参照すると、この方法は、ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別することと（５１２）、１つまたは複数のエンドースメント要求を順序付けノードに送信することと（５１４）、エンドースメント・ブロックチェーン・ピアの性能指標を監視することと（５１６）、性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てることと（５１８）、エンドースされたブロックチェーン・トランザクションを受信することと（５２２）を含んでよい。
【００４４】
この方法は、確認および処理のためにブロックをピアに送信する前に、エンドースメント要求をブロックに格納することを含んでもよい。この方法は、ブロックをエンドースメント・ブロックチェーン・ピアのうちの１つまたは複数に送信することを含んでもよい。性能指標は、１つまたは複数のエンドースメント要求のブロック高さに基づく、エンドースメント・ブロックチェーン・ピアのピア処理速度を含んでよい。この方法は、各ピアの処理速度に従う順序でエンドースメント・ブロックチェーン・ピアをランク付けすることを含んでもよい。最低の処理時間を有するエンドースメント・ブロックチェーン・ピアは、エンドースメント・ブロックチェーン・ピアのランクのリスト内で、最下位にランク付けされる。ブロックは、１つまたは複数のエンドースメント要求、１つまたは複数のエンドースメント応答、１つまたは複数のエンドースメント応答確認応答、およびトランザクション・レコードを含む。性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるときに、プロセスは、エンドースメント要求を、他のブロックチェーン・ピアより速い処理速度を有している、エンドースメント・ブロックチェーン・ピアのうちの特定の１つに割り当てることも含む。
【００４５】
図５Ｂは、例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の別の例示的な方法のフロー図を示している。図５Ｂを参照すると、方法５００Ｂは、ブロックチェーン・トランザクションのエンドースメントを実行するための１つまたは複数のエンドースメント要求を識別することと（５５２）、エンドースメント・ブロックチェーン・ピアの性能指標を監視することと（５５４）、最適な性能指標を有する信頼できるエンドースメント・ブロックチェーン・ピアのグループを作成することと（５５６）、１つまたは複数のエンドースメント要求をグループに割り当てることと（５５８）、エンドースされたブロックチェーン・トランザクションを受信することと（５６２）を含んでいる。
【００４６】
ピアの性能解析に加えて、最適な性能を有するピアは、ブロックチェーン・トランザクションおよびエンドースメント要求を管理するように形成されたグループの一部であってよい。このようにして、信頼できるピアのグループに頼ることによって、特定のピアを識別する必要性が取り除かれる。上位のブロックチェーン・ピアが識別されると、それらのブロックチェーン・ピアを、性能に基づいて上位のピアのグループ内に配置することができ、二次のピアが、別のグループ内の三次のピアと共に、グループに内に配置されてもよい。トランザクションのエンドースメント、コミットメントなどのための割り当てが行われる場合、タスクをグループに送信することができ、処理タスク・イベントのために明確に識別されるのとは対照的に、ランダムに選択されたグループ内の１つのノードによって、そのタスクを選択または処理することができる。
【００４７】
図６Ａは、例示の実施形態による、動作の例示的な方法のうちの１つまたは複数にしたがうブロックチェーン上で様々な動作を実行するように構成された例示的な物理的インフラストラクチャを示している。図６Ａを参照すると、例示的な構成６００Ａは、ブロックチェーン６２０およびスマート・コントラクト６４０を含んでいる物理的インフラストラクチャ６１０を含んでおり、物理的インフラストラクチャ６１０は、例示の実施形態のいずれかに含まれている動作のステップ６１２のいずれかを実行してよい。ステップ／動作６１２は、１つまたは複数のフロー図または論理図あるいはその両方において説明されたか、または示されたステップのうちの１つまたは複数を含んでよい。これらのステップは、コンピュータ・システムの構成の物理的インフラストラクチャ６１０上に存在する１つまたは複数のスマート・コントラクト６４０またはブロックチェーン６２０あるいはその両方に書き込まれるか、またはこれらから読み取られる、出力または書き込み情報を表してよい。実行されたスマート・コントラクト６４０またはブロックチェーン６２０あるいはその両方から、データが出力され得る。物理的インフラストラクチャ６１０は、１つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。
【００４８】
図６Ｂは、例示の実施形態に従って、契約当事者間での例示的なスマート・コントラクトの構成、およびブロックチェーンに対してスマート・コントラクトの条件を執行するように構成された仲介サーバを示している。図６Ｂを参照すると、構成６００Ｂは、通信セッション、１つまたは複数のユーザ・デバイス６５２または６５６あるいはその両方を明示的に識別するスマート・コントラクト６４０によって動作させられるアセット転送セッションまたはプロセスあるいは手順を表してよい。スマート・コントラクトの実行、動作、および実行結果は、サーバ６５４によって管理されてよい。スマート・コントラクト６４０の内容は、スマート・コントラクト・トランザクションの関係者であるエンティティ６５２および６５６のうちの１つまたは複数によるデジタル署名を要求してよい。スマート・コントラクトの実行結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込まれてよい。
【００４９】
前述の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組み合わせにおいて実装されてよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体に具現化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、フラッシュ・メモリ、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memory）、電子的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ：electrically erasable programmable read-only memory）、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disk read-only memory）、または当技術分野において知られた任意のその他の形態のストレージ媒体に存在してよい。
【００５０】
例示的なストレージ媒体は、プロセッサがストレージ媒体から情報を読み取り、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合されてよい。代替方法では、ストレージ媒体はプロセッサと一体であってよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路（ＡＳＩＣ：application specific integrated circuit）に存在してよい。代替方法では、プロセッサおよびストレージ媒体は、個別のコンポーネントとして存在してよい。例えば、図７は、前述したコンポーネントのいずれかなどを表すか、またはそれらに統合されてよい、例示的なコンピュータ・システム・アーキテクチャ７００を示している。
【００５１】
図７は、本明細書に記載された本出願の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、コンピューティング・ノード７００は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【００５２】
コンピューティング・ノード７００内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム／サーバ７０２が存在する。コンピュータ・システム／サーバ７０２での使用に適した周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００５３】
コンピュータ・システム／サーバ７０２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでよい。コンピュータ・システム／サーバ７０２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実践されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
【００５４】
図７に示すように、クラウド・コンピューティング・ノード７００内のコンピュータ・システム／サーバ７０２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ７０２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット７０４、システム・メモリ７０６、および、システム・メモリ７０６を含むさまざまなシステム・コンポーネントをプロセッサ７０４に結合するバスを含んでよいが、これらに限定されない。
【００５５】
バスは、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnects）バスを含むが、これらに限定されない。
【００５６】
コンピュータ・システム／サーバ７０２は、通常、種々のコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ７０２によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブルの媒体を含む。システム・メモリ７０６は、一実施形態では、他の図のフロー図を実装する。システム・メモリ７０６は、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）７１０またはキャッシュ・メモリ７１２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ７０２は、その他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、非リムーバブル、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム７１４を提供することができる。図示されていないが、リムーバブル、不揮発性の磁気ディスク（例えば、「フロッピー（登録商標）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などのリムーバブル、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバスに接続することができる。下で詳細に示され、説明されるように、メモリ７０６は、本出願のさまざまな実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを備える少なくとも１つのプログラム製品を含んでよい。
【００５７】
（少なくとも１つの）プログラム・モジュール７１８のセットを含んでいるプログラム／ユーティリティ７１６が、限定ではなく例として、メモリ７０６に格納されてよく、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも同様である。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール７１８は、通常、本明細書に記載された本出願のさまざまな実施形態の機能または方法あるいはその両方を実行する。
【００５８】
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化されてよい。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアの態様とハードウェアの態様を組み合わせる実施形態の形態を取ってよく、これらはすべて、本明細書では、一般に「回路」、「モジュール」、または「システム」と呼ばれてよい。さらに、本出願の形態は、コンピュータ可読プログラム・コードが具現化されている１つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態を取ってよい。
【００５９】
また、コンピュータ・システム／サーバ７０２は、キーボード、ポインティング・デバイス、ディスプレイ７２２などの１つまたは複数の外部デバイス７２０、ユーザがコンピュータ・システム／サーバ７０２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ７０２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組み合わせと通信することもできる。このような通信は、Ｉ／Ｏインターフェイス７２４を介して行うことができる。さらに、コンピュータ・システム／サーバ７０２は、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ７２６を介して通信することができる。図示されているように、ネットワーク・アダプタ７２６は、バスを介してコンピュータ・システム／サーバ７０２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ７０２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００６０】
システム、方法、およびコンピュータ可読媒体のうちの少なくとも１つの例示の実施形態が添付の図面において示され、前述の詳細な説明において説明されたが、本出願が、開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されているように、多数の再配置、変更、および置き換えを行うことができるということが理解されるであろう。例えば、さまざまな図のシステムの機能は、本明細書に記載されたモジュールまたはコンポーネントのうちの１つまたは複数によって、あるいは分散アーキテクチャにおいて実行することができ、送信器、受信器、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの１つまたは複数によって実行されてよい。さらに、本明細書に記載された機能は、さまざまな時間に、さまざまなイベントに関して、モジュールまたはコンポーネントの内部または外部で、実行されてよい。また、さまざまなモジュールの間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも１つを介して、または複数のプロトコルを介して、あるいはその組み合わせを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、または他のモジュールのうちの１つまたは複数を介して、あるいはその両方によって、送信または受信されてよい。
【００６１】
当業者は、「システム」を、パーソナル・コンピュータ、サーバ、コンソール、ＰＤＡ（personal digital assistant）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意のその他の適切なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化できるということを、理解するであろう。「システム」によって実行されているとして前述の機能を提示することは、本出願の範囲を限定するように全く意図されておらず、多くの実施形態のうちの１つの例を提供するよう意図されている。実際に、本明細書で開示された方法、システム、および装置は、計算技術に一致する局所的な分散された形態で実装されてよい。
【００６２】
本明細書において説明されたシステムの特徴の一部が、それらの実装の独立性を特に強調するために、モジュールとして提示されていることに、注意するべきである。例えば、モジュールは、カスタム超大規模集積（ＶＬＳＩ：very large-scale integration）回路またはゲート・アレイ、論理チップなどの市販の半導体、トランジスタ、またはその他の個別のコンポーネントを備えているハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィックス・プロセッシング・ユニットなどの、プログラム可能なハードウェア・デバイスにおいて実装されてもよい。
【００６３】
モジュールは、さまざまな種類のプロセッサによって実行するために、ソフトウェアにおいて少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されたユニットは、例えばオブジェクト、プロシージャ、または関数として編成されてよいコンピュータ命令の１つまたは複数の物理的または論理的ブロックを備えてよい。それにもかかわらず、識別されたモジュールの実行ファイルは、物理的に一緒に配置される必要はなく、異なる位置に格納された異種の命令を含んでよく、それらの命令は、論理的に一緒に結合された場合にモジュールを含み、モジュールの規定された目的を達成する。さらに、モジュールはコンピュータ可読媒体に格納されてよく、このコンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータの格納に使用される任意のその他の媒体であってよい。
【００６４】
実際に、実行可能コードのモジュールは、単一の命令であるか、または多くの命令であることができ、複数の異なるコード・セグメントにわたって、異なるプログラム間および複数のメモリ・デバイスにまたがって、分散されてもよい。同様に、操作可能なデータが、識別され、本明細書ではモジュール内で示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。操作可能なデータは、単一のデータ・セットとして収集されてよく、または異なるストレージ・デバイスを含む、異なる位置にわたって分散されてよく、システムまたはネットワーク上の単なる電子信号として、少なくとも部分的に存在してよい。
【００６５】
本明細書の図において概略的に説明され、示されているように、本出願のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、実施形態の詳細な説明は、請求される本出願の範囲を限定するよう意図されておらず、単に、本出願の選択された実施形態を表している。
【００６６】
当業者は、開示された順序とは異なる順序でステップを使用して、または開示された構成におけるハードウェア要素とは異なるハードウェア要素を使用して、あるいはその両方を使用して、前述の内容を実践できるということを、容易に理解するであろう。したがって、本出願は、これらの好ましい実施形態に基づいて説明されたが、特定の変更、変形、および代替の構造が明白であるということは、当業者にとって明らかであろう。
【００６７】
本出願の好ましい実施形態が説明されたが、説明された実施形態が単なる例であり、それらの実施形態と同等のものおよびそれらの実施形態に対する変更の全範囲（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど）で考えた場合、本出願の範囲が添付の特許請求の範囲のみによって定義されるべきであるということが、理解されるべきである。
【図１Ａ】
2021526751.tif 000003
【図１Ｂ】
2021526751.tif 000004
【図１Ｃ】
2021526751.tif 000005
【図２Ａ】
2021526751.tif 000006
【図２Ｂ】
2021526751.tif 000007
【図３】
2021526751.tif 000008
【図４】
2021526751.tif 000009
【図５Ａ】
2021526751.tif 000010
【図５Ｂ】
2021526751.tif 000011
【図６Ａ】
2021526751.tif 000012
【図６Ｂ】
2021526751.tif 000013
【図７】
2021526751.tif 000014
【国際調査報告】
2021526751.tif 000015
2021526751.tif 000016