(57)【要約】  例の動作は、第１のブロックチェーン・ノードにおいて、処理を必要とするブロックチェーン・トランザクションを特定することと、第１のブロックチェーン・ノードによって、および、第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントによって、ブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することであって、１つまたは複数のプロキシ・エージェントは、ブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、実行することと、ブロックチェーン・トランザクションをコミットするよう決定することと、ブロックチェーン・トランザクションを、第１のブロックチェーン・ノードによって維持される台帳に記憶することとのうちの１つまたは複数を含むことができる。
2021526249.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
第１のブロックチェーン・ノードにおいて、処理を必要とするブロックチェーン・トランザクションを特定することと、
前記第１のブロックチェーン・ノードによって、および、前記第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントによって、前記ブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することであって、前記１つまたは複数のプロキシ・エージェントは、ブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、前記実行することと、
前記ブロックチェーン・トランザクションをコミットするよう決定することと、
前記ブロックチェーン・トランザクションを、前記第１のブロックチェーン・ノードによって維持される台帳に記憶することと
を含む、方法。
【請求項２】
前記第１のブロックチェーン・ノードにおいて、前記１つまたは複数のプロキシ・エージェントからエンドースメントを受信すること
を含む、請求項１に記載の方法。
【請求項３】
前記他のブロックチェーン・ノードのうちの１つまたは複数によって前記スマート・コントラクト・ノードを実行することと、
前記１つまたは複数の他のブロックチェーン・ノードによって前記ブロックチェーン・トランザクションをコミットするよう決定することと、
前記コミットされたブロックチェーン・トランザクションを、前記１つまたは複数の他のブロックチェーン・ノードのそれぞれによって維持される他の台帳に記憶することと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記１つまたは複数のプロキシ・エージェントが、前記第１のブロックチェーン・ノードにインストールされるか、または、前記第１のブロックチェーン・ノードの一定の近接内のコロケートされる場所にある、請求項１に記載の方法。
【請求項５】
前記コロケートされる場所が、前記第１のブロックチェーン・ノードと前記１つまたは複数のプロキシ・エージェントとの通信について、レイテンシの上限しきい値を超えない、決定されたレイテンシに基づいているか、または、前記コロケートされる場所が、前記第１のブロックチェーン・ノードと、前記１つまたは複数のプロキシ・エージェントのために使用される処理プラットフォームへの物理的な距離との間の地理学的距離に基づいている、請求項４に記載の方法。
【請求項６】
前記１つまたは複数のプロキシ・エージェントから前記他のブロックチェーン・ノードへ更新を送信して前記他のブロックチェーン・ノードにおいて他の台帳の複製を更新すること
をさらに含む、請求項１に記載の方法。
【請求項７】
前記１つまたは複数のプロキシ・エージェントに関連付けられるプロキシ台帳において前記ブロックチェーン・トランザクションを記憶すること
をさらに含む、請求項１に記載の方法。
【請求項８】
前記ブロックチェーン・トランザクションを前記１つまたは複数の他のブロックチェーン・ノードに送信した後、前記プロキシ台帳において前記ブロックチェーン・トランザクションをキャッシュすることと、
前記ブロックチェーン・トランザクションを前記他のブロックチェーン・ノードに送信した後で、かつ、前記他のブロックチェーン・ノードからの前記ブロックチェーン・トランザクションの受領の確認を受信した後、前記プロキシ台帳において前記ブロックチェーン・トランザクションを削除することと
をさらに含む、請求項７に記載の方法。
【請求項９】
システムであって、
第１のブロックチェーン・ノードであって、
コミットを必要とするブロックチェーン・トランザクションを特定することと、
前記第１のブロックチェーン・ノードによって前記ブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することとを行うように構成される、前記第１のブロックチェーン・ノードと、
前記第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントであって、前記１つまたは複数のプロキシ・エージェントは、ブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、前記１つまたは複数のプロキシ・エージェントと
を含み、前記第１のブロックチェーン・ノードは、
前記ブロックチェーン・トランザクションをコミットすることと、
前記ブロックチェーン・トランザクションを、前記第１のブロックチェーン・ノードによって維持される台帳に記憶することと
を行うように構成される、システム。
【請求項１０】
前記第１のブロックチェーン・ノードが、前記１つまたは複数のプロキシ・エージェントからエンドースメントを受信するようにさらに構成される、請求項９に記載のシステム。
【請求項１１】
前記１つまたは複数の他のブロックチェーン・ノードが、前記ブロックチェーン・トランザクションを前記１つまたは複数の他のブロックチェーン・ノードへコミットする決定により、前記スマート・コントラクト・ノードを実行することと、前記コミットされたブロックチェーン・トランザクションを前記１つまたは複数の他のブロックチェーン・ノードのそれぞれによって維持される他の台帳に記憶することとを行うように構成される、請求項９に記載のシステム。
【請求項１２】
前記１つまたは複数のプロキシ・エージェントが、前記第１のブロックチェーン・ノードにインストールされるか、または、前記第１のブロックチェーン・ノードの一定の近接内のコロケートされる場所にある、請求項９に記載のシステム。
【請求項１３】
前記コロケートされる場所が、前記第１のブロックチェーン・ノードと前記１つまたは複数のプロキシ・エージェントとの通信についてレイテンシの上限しきい値を超えない、決定されたレイテンシに基づいているか、または前記コロケートされる場所が、前記第１のブロックチェーン・ノードと、前記１つまたは複数のプロキシ・エージェントのために使用される処理プラットフォームへの物理的な距離との間の地理学的距離に基づいている、請求項１２に記載のシステム。
【請求項１４】
前記１つまたは複数のプロキシ・エージェントが、前記他のブロックチェーン・ノードにおいて前記他の台帳の複製を更新するために前記他のブロックチェーン・ノードへ更新を送信するように構成される、請求項９に記載のシステム。
【請求項１５】
前記１つまたは複数のプロキシ・エージェントが、前記１つまたは複数のプロキシ・エージェントに関連付けられるプロキシ台帳において前記ブロックチェーン・トランザクションを記憶することと、前記ブロックチェーン・トランザクションが前記１つまたは複数の他のブロックチェーン・ノードに送信された後、前記プロキシ台帳において前記ブロックチェーン・トランザクションをキャッシュすることと、前記ブロックチェーン・トランザクションが前記他のブロックチェーン・ノードに送信された後で、かつ、前記他のブロックチェーン・ノードからの前記ブロックチェーン・トランザクションの受領の確認が受信された後、前記プロキシ台帳において前記ブロックチェーン・トランザクションを削除することとを行うように構成される、請求項９に記載のシステム。
【請求項１６】
非一過性のコンピュータ可読記憶媒体であって、実行されるとプロセッサに
第１のブロックチェーン・ノードにおいて、処理を必要とするブロックチェーン・トランザクションを特定することと、
前記第１のブロックチェーン・ノードによって、および、前記第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントによって、前記ブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することであって、前記１つまたは複数のプロキシ・エージェントは、ブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、前記実行することと、
前記ブロックチェーン・トランザクションをコミットするよう決定することと、
前記ブロックチェーン・トランザクションを、前記第１のブロックチェーン・ノードによって維持される台帳に記憶することと
を実施させる命令を記憶するように構成される、非一過性のコンピュータ可読記憶媒体。
【請求項１７】
前記プロセッサが、
前記第１のブロックチェーン・ノードにおいて、前記１つまたは複数のプロキシ・エージェントからエンドースメントを受信することと、
前記他のブロックチェーン・ノードのうちの１つまたは複数によって前記スマート・コントラクト・ノードを実行することと、
前記１つまたは複数の他のブロックチェーン・ノードによって前記ブロックチェーン・トランザクションをコミットするよう決定することと、
前記コミットされたブロックチェーン・トランザクションを前記１つまたは複数の他のブロックチェーン・ノードのそれぞれによって維持される他の台帳に記憶することと
を実施するようにさらに構成される、請求項１６に記載の非一過性のコンピュータ可読記憶媒体。
【請求項１８】
前記１つまたは複数のプロキシ・エージェントが、前記第１のブロックチェーン・ノードにインストールされるか、または前記第１のブロックチェーン・ノードの一定の近接内のコロケートされる場所にあり、前記コロケートされる場所が、前記第１のブロックチェーン・ノードと前記１つまたは複数のプロキシ・エージェントとの通信についてレイテンシの上限しきい値を超えない、決定されたレイテンシに基づいているか、または前記コロケーション場所が、前記第１のブロックチェーン・ノードと、前記１つまたは複数のプロキシ・エージェントのために使用される処理プラットフォームへの物理的な距離との間の地理学的距離に基づいている、請求項１６に記載の非一過性のコンピュータ可読記憶媒体。
【請求項１９】
前記プロセッサが、
前記１つまたは複数のプロキシ・エージェントから前記他のブロックチェーン・ノードへ更新を送信して前記他のブロックチェーン・ノードにおいて前記他の台帳の複製を更新することと、
前記１つまたは複数のプロキシ・エージェントに関連付けられるプロキシ台帳において前記ブロックチェーン・トランザクションを記憶することと
を実施するようにさらに構成される、請求項１６に記載の非一過性のコンピュータ可読記憶媒体。
【請求項２０】
前記プロセッサが、
前記ブロックチェーン・トランザクションを前記１つまたは複数の他のブロックチェーン・ノードに送信した後、前記プロキシ台帳において前記ブロックチェーン・トランザクションをキャッシュすることと、
前記ブロックチェーン・トランザクションを前記他のブロックチェーン・ノードに送信した後で、かつ、前記他のブロックチェーン・ノードからの前記ブロックチェーン・トランザクションの受領の確認を受信した後、前記プロキシ台帳において前記ブロックチェーン・トランザクションを削除することと
を実施するようにさらに構成される、請求項１９に記載の非一過性のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的に、ブロックチェーンへのピア参加に関し、より詳細には、ブロックチェーン上のプロキシ・エージェントおよびプロキシ台帳に関する。
【背景技術】
【０００２】
台帳は、一般的にトランザクションが記録される勘定台帳として定義される。分散台帳は、全体または一部が複数のコンピュータに複製される台帳である。暗号化台帳（ＣＤＬ）は、次の性質：不可逆性（いったんトランザクションが記録されると、元に戻すことができない）、アクセス性（任意の関係者が、ＣＤＬに全体または一部アクセスすることができる）、時系列的かつタイムスタンプを有する（すべての関係者が、トランザクションがいつ台帳に追加されたかを知っている）、合意ベースである（トランザクションは、ネットワーク上の関係者によって、典型的には満場一致で、認められた場合のみ追加される）、検証可能性（すべてのトランザクションは暗号法的に検証することができる）のうちの少なくともいくつかを有することができる。ブロックチェーンは、ＣＤＬの一例である。本明細書における説明および図面は、ブロックチェーンに関して説明されるが、当該出願はあらゆるＣＤＬに等しく適用する。
【０００３】
分散台帳は、継続的に増大するレコードのリストであり、典型的には、他のブロックに関連する暗号法的ハッシュを記憶するなど、暗号法的技法を適用する。ブロックチェーンは、分散台帳の一般的な一例であり、情報を記憶するためのパブリックな台帳として使用することができる。主に金融取引用に使用されるが、ブロックチェーンは、商品およびサービスに関連する様々な情報（すなわち、製品、パッケージ、状態など）を記憶することができる。非中央集権化されたスキームは、非中央集権化されたネットワークに権限および信頼性を与え、そのノードが連続的にかつ順次にそれらのトランザクションをパブリックな「ブロック」に記録することを可能にし、ブロックチェーンと参照される一意な「チェーン」を作成する。ハッシュ・コードを介する暗号法を使用して、トランザクション・ソースの認証をセキュアにして、中心となる仲介者を不要とする。ブロックチェーンは、継続的に増大するレコードのリストをブロックチェーンのブロック内に維持する分散データベースであり、その不変な性質により改竄および改版されることからセキュアになされている。それぞれのブロックは、タイムスタンプおよび先行するブロックに対するリンクを含んでいる。ブロックチェーンを使用して、情報の保持、追跡、移送、および検証をすることができる。ブロックチェーンは、分散システムであるため、トランザクションをブロックチェーン台帳に追加する前に、すべてのピアが合意状態に達する必要がある。
【０００４】
従来、許可型のブロックチェーン（permissioned blockchain）のシステムは、ノード間で分散される合意を提供する際、有意なレイテンシを被っていた。ブロックチェーン・ネットワークに参加するノードの場所およびこれらのノード間の通信に関与するレイテンシに依存して、既存のブロックチェーン・ネットワークのパフォーマンスは、例えば、１秒当たり数１０トランザクションまたはそれよりも多いオーダーとなる場合がある。主流となるブロックチェーン・トランザクションのプロセッサは、時には１秒当たり５００００トランザクションを超える速度をピークとして、平均して１秒当たり数千トランザクションをサポートすることができる。ほとんどのブロックチェーン・システムは、現在の能力を有意に超えて増大するようパフォーマンスの向上を必要とするより大きなスケールのキャパシティへ拡張する傾向がある。従来型のブロックチェーン・ネットワークでは、ネットワークに参加しているノードは、台帳のノードの複製に結合されるスマート・コントラクト・レイヤでプログラムされたロジックを処理する。システム内でコミットされるトランザクションについて、合意メカニズムを介して検証ノード（ノードを選択する）により様々なトランザクションが合意され、トランザクションは、さらに検証リーダーノードによって順序付けられ、それぞれのノードは、トランザクションを台帳のその複製にコミットする。
【０００５】
ある構成では、エンドーシング・ノードのセットがトランザクションをエンドースし、その後、トランザクションは、順序付けられ、個々の台帳にコミットされる。これらのエンドーシング・ノード間の相互作用に伴うレイテンシに応じて、システムのスループット・パフォーマンスが限定要因となり得、遅延および他のシステム構成の懸念事項をもたらす場合がある。
【発明の概要】
【０００６】
例示的な一実施形態は、ブロックチェーン・ノードによるエンドースメントを必要とするブロックチェーン・トランザクションを特定することと、他のブロックチェーン・ノードのうちの１つまたは複数に関連付けられるプロキシ・エージェントから１つのブロックチェーン・ノードにおいてエンドースメントを受信することと、ブロックチェーン・トランザクションをコミットするよう決定することと、コミットされたブロックチェーン・トランザクションを、１つのブロックチェーン・ノードによって維持される台帳に記憶することと、のうちの１つまたは複数を含む方法を提供することができる。
【０００７】
さらに別の例示的な実施形態は、第１のブロックチェーン・ノードであって、コミットを必要とするブロックチェーン・トランザクションを特定することと、第１のブロックチェーン・ノードによってブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することとのうちの１つまたは複数を行うように構成された第１のブロックチェーン・ノードと、第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントであって、１つまたは複数のプロキシ・エージェントは、ブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、１つまたは複数のプロキシ・エージェントとを含み、第１のブロックチェーン・ノードは、また、ブロックチェーン・トランザクションをコミットすることと、ブロックチェーン・トランザクションを、第１のブロックチェーン・ノードによって維持される台帳に記憶することを行うように構成される、システムを含むことができる。
【０００８】
なお別の例示的な実施形態は、実行されるとプロセッサに、第１のブロックチェーン・ノードにおいて、処理を必要とするブロックチェーン・トランザクションを特定することと、第１のブロックチェーン・ノードによって、および、前記第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントによって、ブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することであって、１つまたは複数のプロキシ・エージェントはブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、実行することと、ブロックチェーン・トランザクションをコミットするよう決定することと、ブロックチェーン・トランザクションを、第１のブロックチェーン・ノードによって維持される台帳に記憶することとを実施させる命令を記憶するように構成される、非一過性のコンピュータ可読記憶媒体を含むことができる。
【図面の簡単な説明】
【０００９】
【図１Ａ】例示的な実施形態による、プロキシ・ノードを伴うプロキシ台帳およびエンドースメント管理のシステム・ネットワーク構成の図である。
【図１Ｂ】例示的な実施形態による、プロキシ台帳およびエンドースメント管理のシステム・ネットワーク構成の図である。
【図２Ａ】例示的な実施形態による、プロキシ・エージェントのトランザクション・エンドースメントについての例示的なピア・ノードのブロックチェーン・アーキテクチャ構成の図である。
【図２Ｂ】例示的な実施形態による、例示的なピア・ノードのブロックチェーン構成の図である。
【図３】例示的な実施形態による、許可型のブロックチェーンのネットワークの図である。
【図４】例示的な実施形態による、プロキシ・エージェントを介するピア・ノード管理を実施するためのシステム・メッセージング図である。
【図５Ａ】例示的な実施形態による、ブロックチェーン内でのプロキシ・エージェント管理の例示の方法のフロー図である。
【図５Ｂ】例示的な実施形態による、ブロックチェーン内でのプロキシ・エージェント管理の別の例示の方法のフロー図である。
【図５Ｃ】例示的な実施形態による、ブロックチェーン内でのプロキシ・エージェント管理の別の例示の方法のフロー図である。
【図６Ａ】例示的な実施形態による、本明細書において説明される１つまたは複数の動作にしたがう、ブロックチェーン上で様々な動作を実施するように構成される例示的な物理的インフラストラクチャの図である。
【図６Ｂ】例示的な実施形態による、契約当事者間の例示的なスマート・コントラクト構成およびブロックチェーン上でスマート・コントラクト条項を執行するように構成された仲介サーバを示す図である。
【図７】例示的な実施形態のうちの１つまたは複数をサポートするように構成される例示的なコンピュータ・システムの図である。
【発明を実施するための形態】
【００１０】
本明細書の図面において一般的に説明され図示される当該コンポーネントは、多様な構成で配置構成され、設計される可能性があることが容易に理解されよう。したがって、添付の図面に表現される方法、装置、非一過性のコンピュータ可読媒体、およびシステムのうち少なくとも１つの実施形態の以下の詳細な説明は、特許請求される本出願の範囲を限定するよう意図されておらず、選択された実施形態の単なる典型例である。
【００１１】
本明細書を通じて説明される当該特徴、構造、または特性は、１つまたは複数の実施形態において、任意の適切なやり方で組み合わせることができる。例えば、本明細書を通じて、句「例示的な実施形態」、「いくつかの実施形態」または他の同様の言い回しの使用は、実施形態に関連して説明される特定の特徴、構造または特性が少なくとも１つの実施形態に含まれ得る事実に言及している。したがって、本明細書を通じて、句「例示的な実施形態」、「いくつかの実施形態」、「他の実施形態において」または他の同様の言い回しの登場は、必ずしもすべてが実施形態の同一の群を指しておらず、説明される特徴、構造、または特性は１つまたは複数の実施形態において任意の適切なやり方で組み合わせることができる。
【００１２】
加えて、用語「メッセージ」が実施形態の説明に使用されている場合があるが、その適用はパケット、フレーム、図などの多くのタイプのネットワーク・データに適用され得る。用語「メッセージ」はまた、パケット、フレーム、データグラム、およびそのあらゆる等価物を含む。さらには、例示的な実施形態において特定のタイプのメッセージおよびシグナリングが描かれる場合がある一方、これらは特定のタイプのメッセージに限定されず、また本出願は特定のタイプのシグナリングに限定されない。
【００１３】
例示的な実施形態は、様々な場所におけるノードにわたって分散台帳（ブロックチェーン）を維持するためのプロキシベースの手法を提供する方法、デバイス、ネットワーク、またはシステムあるいはその組合せを提供する。プロキシ・スマート・コントラクト・エージェントおよびプロキシ台帳は、ブロックチェーン・ネットワーク上のそれぞれのノードにおいてデプロイされてもよい。トランザクションに必要なリソースは、ノードを代表するエージェントをまたいで分割することができる。集約台帳（aggregate ledger）は、それぞれのノードにサブミットされたトランザクションに基づいて別個の台帳のセットとして維持される。システムは、プロキシ・ノードにおいてトランザクションをキャッシュする柔軟性を与え、高速のトランザクション処理を可能にして、それぞれのノードをまたいで必要に応じてアクセス制御を与えられて利用されるスマート・コントラクト・ロジックにおける柔軟性を与えることができる。システムのスケーラビリティは、それぞれのノードが、他のノードからのプロキシ・エージェントと相互作用をしてその台帳をローカルに更新する能力によって実現される。ノード、ひいては合意に関するプロキシ・エージェントの数が増加するにつれ、１ノード当たりのスループットは低下する可能性がある。しかしながら、他のプロキシ・ノード・エージェントが単に非検証エージェントとして機能することから、システムは、ノード当たりのスループット・スケーラビリティを確実にするために、合意決定に関与するノードの数を制限するように構成することができる。システム全体のスループットは、それぞれのノードにおける台帳のスループットの合計に基づくことになる。結果として、それぞれのノードにおける処理が比較的独立的であることに起因して、このシステムは、それぞれのノードにおいてプロキシ・エージェントによって可能にされる、トランザクションの局所化された処理に高度にスケーラブルなスループットを提供することができる。
【００１４】
ブロックチェーンは、互いに通信する複数のノードを含む分散システムである。ブロックチェーンは、チェーンコード（例えば、スマート・コントラクトなど）と呼ばれるプログラムを動作させ、状態および台帳データを保持し、トランザクションを実行する。いくつかのトランザクションは、チェーンコードで呼び出される動作である。一般的に、ブロックチェーン・トランザクションは、典型的には一定のブロックチェーン・メンバによって「エンドース」されなければならず、エンドースされたトランザクションだけがブロックチェーンにコミットすることができ、ブロックチェーンの状態に影響を与えることができる。エンドースされない他のトランザクションは、無視される。管理機能およびパラメータのための１つまたは複数の特殊なチェーンコードが存在する場合があり、システム・チェーンコードと総称される。
【００１５】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なるタイプの複数のノードが同一の物理サーバ上で実行することができるという意味で、論理的な機能を実施することができる。ノードは、信頼されるドメインにグループ化され、それらを様々な方法で制御する論理的なエンティティに関連付けられる。ノードは、エンドーサ（例えば、ピア）にトランザクション呼び出しをサブミットして順序付けサービス（例えば、順序付けノード）にトランザクション・プロポーザルをブロードキャストするクライアントまたはサブミット・クライアント・ノードなどの様々なタイプを含むことができる。別のタイプのノードは、クライアントがサブミットしたトランザクションを受信し、そのトランザクションをコミットして、ブロックチェーン・トランザクションの台帳の状態および複製を維持することができる、ピア・ノードである。ピアはまたエンドーサの役割を有することができるが、これは必要事項ではない。順序付けサービス・ノード、すなわちオーダラ―（ｏｒｄｅｒｅｒ）は、すべてのノードについて通信サービスを実行中のノードであり、トランザクションをコミットしてブロックチェーンのワールド・ステートを変更する際、システム内のピア・ノードのそれぞれへのブロードキャストなどの配信保証を実装し、これは通常制御およびセットアップ情報を含む初期のブロックチェーン・トランザクション用の別名である。
【００１６】
台帳は、ブロックチェーンのすべての状態遷移の、順序付けられた、耐改竄性のレコードである。状態遷移は、参加している関係者（例えば、クライアント・ノード、順序付けノード、エンドーサ・ノード、ピア・ノードなど）によってサブミットされたチェーンコード呼び出し（すなわち、トランザクション）から生じる場合がある。トランザクションは、作成、更新、削除など、１つまたは複数のオペランドとして台帳にコミットされるアセットのキー−バリューの対のセットとなる可能性がある。台帳は、不変で、ブロック内の順序付けられるレコードを記憶するために使用されるブロックチェーン（チェーンとも称される）を含む。台帳は、ブロックチェーンの現在の状態を維持するステート・データベースをさらに含む。典型的には１チャネルあたり１台帳である。それぞれのピア・ノードは、それらがメンバであるそれぞれのチャネルごとの台帳の複製を維持する。
【００１７】
チェーンは、ハッシュでリンクされたブロックとして構造化されるトランザクション・ログであり、それぞれのブロックは、一連のＮ個のトランザクションを含み、ここでＮは１以上である。ブロックのヘッダは、ブロックのトランザクションのハッシュ、ならびにそれに先行ブロックのヘッダのハッシュを含む。この方法で、台帳のすべてのトランザクションを順序付け、ともに暗号法的にリンクさせることができる。したがって、ハッシュ・リンクを壊さずに台帳データを改竄することは不可能である。最も最近追加されたブロックチェーンのブロックのハッシュは、チェーン上のそれまでに生じたすべてのトランザクションを代表しており、すべてのピア・ノードが、一貫しており、信頼できる状態にあることを確実にすることを可能にしている。チェーンは、ピア・ノードのファイル・システム（すなわち、ローカル、付属ストレージ、クラウドなど）に記憶することができ、ブロックチェーン・ワークロードの追記のみの性質を効率的にサポートしている。
【００１８】
不変な台帳の現在の状態は、チェーン・トランザクション・ログに含まれるすべてのキーに対する最新のバリューを表している。現在の状態は、チャネルに既知である最新のキーバリューを表しているため、ときにはワールド・ステートと称される。チェーンコード呼び出しは、台帳の現在の状態データに対するトランザクションを実行する。これらのチェーンコード相互作用を効率的にするために、キーの最新のバリューをステート・データベースに記憶することができる。ステート・データベースは、単純にチェーンのトランザクション・ログにインデックス付けされたビューであるため、いつでもチェーンから再生成することができる。ステート・データベースは、ピア・ノードのスタートアップ時、またトランザクションが受理されるより前に、自動的にリカバリすることができる（または必要であれば生成される）。
【００１９】
例では、図面の要素に対応するよう定義される特定の変数および識別子を与える。例えば、「Ｎ」は、ネットワークにおけるブロックチェーン・ノードのセットであり、「ＳＣ（ｎ，ｍ）」は、ノード「ｍ」においてサブミットされたトランザクションで実行されるＮノードのうちの１つ「ｎ」についてのスマート・コントラクト・コードであり、ｐｒｏｘｙ（ｎ，ｍ）は、ノード「ｍ」で実行中のノード「ｎ」用のプロキシ・エージェントであり、ｌｅｄｇｅｒ（ｍ，ｎ）はノード「ｎ」において維持されるノード「ｍ」用の台帳であり、ｌｅｄｇｅｒ（ｍ，ｍ）は、ノード「ｍ」において維持されるノード「ｍ」用の台帳の複製であり、ｐｒｏｘｙｌｅｄｇｅｒ（ｍ，ｐｒｏｘｙ（ｎ，ｍ））は台帳であり、Ａｇ．ｌｅｄｇｅｒ（ｍ）はノード「ｍ」において維持されるすべてのｌｅｄｇｅｒ（ｌｅｄｇｅｒ（ｉ，ｍ））の集約セットであり、ここでｉεＮである。
【００２０】
例示の実施形態によると、ブロックチェーン・ネットワーク内のそれぞれのノードにおいて、他のノードに対応するプロキシ・スマート・コントラクト・エージェントは、特定のノードとコロケートされるか、または一定程度のサービスを維持するためにピアが十分近くない場合にピア・ノード動作に支援を与えるために特定のノードに極近接して位置付けられるか、あるいはその両方であるプロキシ・ノード・エージェントにおいてデプロイされる。ブロックチェーン・トランザクションの要求の何らかの合意もしくはエンドースメント、または他の通信、あるいはその両方が必要とされる場合、第１のノード「Ａ」において、ノード「Ａ」においてサブミットされたトランザクションを処理するために、ノード「Ａ」にインストールされたか、または他のピアよりもノード「Ａ」の近くにインストールされたプロキシ・スマート・コントラクト・エージェントは、他のノードを代理して実行し、トランザクションを処理して必要な入力を与える。トランザクションを成功裏に処理した後、処理されたトランザクションは、ノード「Ａ」において維持される台帳「Ａ」にコミットされる。プロキシ・スマート・コントラクト・エージェントはさらに台帳を維持し、トランザクションをｌｅｄｇｅｒ（Ａ，Ａ）のそれ自身の複製にコミットする。ノード「Ｂ」を代理するプロキシ・エージェントは、台帳「Ａ」のその複製を作成して更新し、これはｌｅｄｇｅｒ（Ａ，ｐｒｏｘｙ（Ｂ，Ａ））と呼ばれる。周期的に、プロキシ・スマート・コントラクトは、別のノード「Ｂ」を代理して、ノード「Ｂ」にブロックの更新されたセットを送信する。ノード「Ｂ」において、ノード「Ａ」についての台帳の複製が維持され（ｌｅｄｇｅｒ（Ａ，Ｂ））て、ｌｅｄｇｅｒ（Ａ，ｐｒｏｘｙ（Ｂ，Ａ））への更新に基づいてノード「Ｂ」がｐｒｏｘｙ（Ｂ，Ａ）から更新を受信するとｌｅｄｇｅｒ（Ａ，Ｂ）が更新されるようにする。
【００２１】
図１Ａは、例示的な実施形態による、プロキシ・ノードを伴うプロキシ台帳およびエンドースメント管理のシステム・ネットワーク構成を図示している。図１Ａを参照すると、それぞれのノードは、そのノードにおいてサブミットされたトランザクションに基づいて台帳の複製、ならびに、他のノードからの台帳の複製を有し、これは、これらのノードに対してサブミットされたトランザクションに基づく。この例１００Ａでは、プロキシ・ノード１０８および１１０は、ノード「Ａ」１０２と相互作用してノード「Ａ」用の台帳を維持している。ノードＢ１０４およびノードＣ１０６は、それら自身の個々のプロキシ・ノードからの更新に基づいて、ノードＡ上の台帳への更新を同期する。
【００２２】
一例において、トランザクションは、ノードＣによって供給される商品に基づいてノードＡにおいて行うことができ、これらはノードＢを介して出荷される。商品がノードＡに到達すると、ノードＡによってノードＣおよびＢに対してトランザクションが作られ、ノードＡにおいてノードＡ用の台帳によって、ならびにノードＡにおいてコロケートされるノードＣおよびＢ用のプロキシ・エージェントによって管理されるプロキシ台帳によって記録され、プロキシ台帳はノードＡにおいてノードＡ用の台帳に記憶されているトランザクションの記録を複製する。コロケートされる態様は、同一のノードにインストールすることができるか、またはノードで動作している管理プラットフォーム・ノードにインストールすることができるか、あるいはその両方である。時間的に後に、個々のノードＣおよびＢは、ノードＡにおいてコロケートされるそれらの個々のプロキシ・エージェントを介してトランザクションに関する情報を受信する。あるいは、移送が行われるのではなく、ノードＡの台帳は単に商品がノードＡに到着したというイベントを記録することができ、この情報はノードＣおよびＢ用のプロキシ・エージェントによって管理されるプロキシ台帳において複製され、やはりこれらはノードＡとコロケートされる。時間的に後に、個々のノードＣおよびＢは、それらの個々のプロキシ・エージェントからトランザクションに関する情報を受信し、それら自身のカスタム台帳をそれらの記録手順に適切なあらゆるやり方で更新することができるが、これはトランザクション自身と同時的に起こらなくてもよい。
【００２３】
図１Ｂは、例示的な実施形態による、プロキシ台帳およびエンドースメント管理のシステム・ネットワーク構成１００Ｂの図である。図１Ｂを参照すると、集約台帳（Ａｇ．ｌｅｄｇｅｒ（Ａ））は、ｌｅｄｇｅｒ（Ａ，Ａ）１２４および他のノードのｌｅｄｇｅｒ（Ｂ，Ａ）、ｌｅｄｇｅｒ（Ｃ，Ａ）などからの台帳の複製を含む場合がある。集約台帳（Ａｇ．ｌｅｄｇｅｒ（Ｂ））は、ｌｅｄｇｅｒ（Ｂ，Ｂ）、ならびにｌｅｄｇｅｒ（Ａ，Ｂ）１１６およびｌｅｄｇｅｒ（Ｃ，Ｂ）などの他のノードからの台帳の複製を含む場合がある。集約台帳（Ａｇ．ｌｅｄｇｅｒ（Ｃ））は、ｌｅｄｇｅｒ（Ｃ，Ｃ）、ならびにｌｅｄｇｅｒ（Ａ，Ｃ）１２８およびｌｅｄｇｅｒ（Ｂ，Ｃ）などの他のノードからの台帳の複製を含む場合がある。したがって、全体的なブロックチェーン台帳システムは、ノードのそれぞれにおいてサブミットされたトランザクションに基づく台帳の集約に基づいている。簡潔さの理由から、図１００Ａには、上で特定されたすべての台帳複製は含まれていない。
【００２４】
受け取った商品についての移送に関連付けられるトランザクションの例について、ノードＡについてのスマート・コントラクトＳＣ（Ａ，Ａ）１２２、あるいはＳＣ（Ｂ）１１４に基づいている、ＰｒｏｘｙＳＣ（Ｂ，Ａ）１１８として示される、プロキシ・ノードにおけるノードＢについてのプロキシ・スマート・コントラクト、もしくはＳＣ（Ｃ）１２６に基づいている、ＰｒｏｘｙＳＣ（Ｃ，Ａ）１３２として示される、ノードＡに位置する、ノードＣについてのプロキシ・スマート・コントラクトまたはその両方を使用して、ノードＡ用のトランザクション残高が商品についてトランザクションの必要事項をカバーするために妥当かどうかを判断することができる。ノードＡは、また、それ自身のスマート・コントラクトＳＣ（Ａ，Ａ）１２２を有する。ノードＡにおいて商品の受け取りを単に記録することの例については、そのようなスマート・コントラクトは、受け取った商品の量がトランザクション注文を反映して妥当だったかどうか、または受け取った商品のタイプが正しかったかどうか、または商品が期日前に受け取ったかどうか、などの制約をチェックすることができる。
【００２５】
ｌｅｄｇｅｒ（Ａ，ｐｒｏｘｙ（Ｂ，Ａ））１２０などのそれぞれのプロキシ台帳は、ｌｅｄｇｅｒ（Ａ，Ａ）１２４全体を表してはいない。ｌｅｄｇｅｒ（Ａ，ｐｒｏｘｙ（Ｃ，Ａ））１３４についても、同様のシナリオである。ノードＢにおいてｌｅｄｇｅｒ（Ａ，Ｂ）をコミットした後、プロキシ台帳はそれが含むブロックを削除することができる。しかしながら、過去のトランザクションについてのブロックチェーン・システムからの読み出しが、すべてのノードにわたる合意を必要とする場合、データ検証時間が増大する可能性がある。あるいは、ノードＢにおいてｌｅｄｇｅｒ（Ａ，Ｂ）をコミットした後、プロキシ台帳はすべての最近のトランザクションのキャッシュを維持し続けることができる。使われてから最も時間が経過した（Least Recently Used：ＬＲＵ）トランザクションを無効にするキャッシュベースの手法は、過去のトランザクションについてのノードにわたるデータ検証が高速で起こり、他のノードからの参加とともにそれぞれのノードにおいてローカルに実施されることを保証にすることができる。ノードのプロキシ・エージェントとその親ノードとの間の更新の頻度は、利用可能なキャッシュのサイズにより、変わる可能性がある。あるいは、キャッシュのサイズは、ノードにわたるネットワーク内の動的な負荷およびキャッシュ記憶空間可用性に基づくノードのプロキシ・エージェントとその親ノードとの間の更新の頻度に基づいて、変わる可能性がある。すべてのノードにわたる単一の台帳、また１つの台帳ですべてのノードにわたって合意を維持するようと試みる代わりに、このタイプのシステムは、台帳のセットを維持し、このセットはそれぞれのノードごとに１つの台帳を含む。プロキシ・スマート・コントラクト・エージェントを含むプロキシ・ノード・エージェント、およびプロキシ台帳は、それぞれのノードにデプロイされる。プロキシ・スマート・コントラクト・エージェントを使用して、それぞれのノードにおいて、高速の処理およびトランザクションの台帳へのコミットが可能となる。エージェントは、別個のデバイスであってもよいが、ピア・ノード・コンピュータで動作するソフトウェア・モジュールとして実装されることが好ましい。プロキシ・ノードは、別のノードから台帳についてバルクの更新を実施することによって、それらが代表するよう割り振られているノードと同期する。複数のチャネルが、それぞれ個々の台帳ごとにサポートされ得る。アクセス制御を利用して、特定のノードにおいてそれぞれのプロキシ・エージェントに対してアクセスを与えることができる。アクセス制御は、必要であればチャネルごとに異なっていてよい。ノードＢが、ノードＡにおいてそのプロキシを介して、ノードＡで実行しようとしているスマート・コントラクトは、ノードＢがそれ自身の台帳用の、それ自身のノードで実行するスマート・コントラクトとは異なっている可能性がある。この手法は、それぞれのノードにおける個々の台帳の必要性をカスタマイズすることができ、システム内にさらなる柔軟性を提供することができる。プロキシ・エージェントは、それらが代表するよう割り振られている他のピアに対して更新を送信することにより動作するブロックチェー��・ピアであり得る。
【００２６】
プロキシ・エージェントは、ブロックのトランザクションの実際の内容の、さらに非緊急／受動的な更新を伴う、コミットされブロックに関連付けられた、マークル・ツリー・ハッシュなどメタデータのみのプロアクティブな更新およびトランザクションのリストを提供することができる。プロキシ・ノードと、それらが代表するノードとの間の通信は、ネットワーク利用が低い時間帯、例えば、米国、またはアジア、または高いトランザクション・トラフィックを生じさせる世界の他の地域の夜間など、ネットワークのトラフィックが少ないと特定されるときに、実施することができる。最終的に、情報はプロキシ台帳に更新される。サプライ（supplies）などのリソースは、また予測的に、二重払いを避け、トランザクションがローカルで進むことを可能にするために、ノードを代表するエージェントに渡って、分散して分割することができる。
【００２７】
グローバル・リソース全体は、様々な地域に渡って分割することができる。例えば、リソース「Ａ」を、シンガポール（リージョン１）、オーストラリア（リージョン２）およびニュージーランド（リージョン３）にわたる「Ａ」＝Ａ１＋Ａ２＋Ａ３として分割すると仮定する。次に、オーストラリアとニュージーランドにおいて、それぞれＡ２がＡ２Ｎｅｗに変更され、Ａ３がＡ３Ｎｅｗに変更され、それにしたがってコミットされるが、シンガポールはまだ更新情報を受信していないと仮定する。ここで、Ａ１の最新のバリューは「ＳＧ」において既知であり、Ａ２の最新のバリューは、「Ａｕｓ」において所有されており、Ａ３はニュージーランドにおいて所有されている。グローバル・リソース全体は、様々な地域に渡って分割することができる。例えば、シンガポール（ＳＧ）からのリソース「Ａ」を、シンガポール（ＳＧ）（リージョン１）、オーストラリア（ＡＵＳ）（リージョン２）、およびニュージーランド（ＮＺ）（リージョン３）にわたるＡ＝Ａ１＋Ａ２＋Ａ３として分割する。量「Ａ２」および「Ａ３」は、ＳＧからＡＵＳおよびＮＺに割り当てられる。これにより、リソースＡを伴うＡＵＳおよびＮＺにおけるトランザクションを、リソースＡのローカルな可用性に基づいて、ローカルでコミットさせることができる。将来的な時点において、リソースＡの部分が、必要に応じて異なる地域に再割り振りすることができる一方で、続行中のトランザクションについてそれぞれのリージョンにおいてリソースＡの妥当な量を利用可能にすることができる。予測エンジンを使用して、将来的な所与の時間に所与のリージョンにおいて必要とされるリソースの量を予測することができる。
【００２８】
グローバルなピア・ノード分散シナリオでは、ピアにサブミットされた複雑なクエリを、リソース可用性全体を決定するために遠い地域に送信しなければならず、分散ネットワークの従来的なレイテンシ・コストを被ることになる。しかしながら、そのようなクエリの頻度は、少なく、ほとんどのクエリがローカルのリソースに対してむけられ、ローカルで管理されることが期待される。一例では、ＳＧ／ＡＵＳ／ＮＺの例では、ＡＵＳとＮＺにおいて、それぞれＡ２がＡ２Ｎｅｗに変更され、Ａ３がＡ３Ｎｅｗに変更され、それにしたがってコミットされるが、ＳＧはまだトランザクションを認識していないと仮定する。ここで、Ａ１の最新のバリューは「ＳＧ」において既知であり、Ａ２の最新のバリューは、ＡＵＳにおいて所有されており、Ａ３はＮＺにおいて所有されている。「Ａ」に対するグローバルなクエリがサブミットされると、それぞれ３つの地域から、Ａ１が取得され、Ａ１が変わっていない場合は、Ａ２Ｎｅｗが取得され、Ａ３Ｎｅｗも取得される。グローバルな状態は、リソース「Ａ」についてＡＮｅｗ＝Ａ１＋Ａ２Ｎｅｗ＋Ａ３Ｎｅｗとして得られる。しかしながら、このクエリは、３つの異なる遠い地域を横断しなければならず、そのリージョン間で従来ネットワークの高レイテンシを被ることになる。
【００２９】
例示の実施形態によると、それぞれの地域の場所におけるクラウド・デプロイメントは、リモートの組織のプロキシ・ノードに対するローカルな組織用のローカル・ノードなど、異なる組織を代表するノード用に仮想マシン／コンテナ・パーティションを使用することができそれらは同一のクラウド・インフラストラクチャ内にコロケートされ、それによって、インフラストラクチャは、仮想マシン（ＶＭ）／コンテナ・パーティションに信頼できる分離を与えながら、コロケーションの機能性によりレイテンシを最小化する。ノードまたはプロキシ・ノードの機能は、複製されて、トランザクションをロード・バランスするための高可用性を提供することができる。エンドースメント・リクエストは、ロード・バランスのために複製されたノード間で分散することができるが、しかしながら、所与の場所でノードまたはプロキシ・ノードのすべての複製されたバージョンによってコミット・トランザクションを実行しなければならない。リソースおよび地域にわたる台帳分割を含み、およびプロキシ台帳との受動的な協調を含むシステム全体は、集約台帳の特徴がノードによって維持される個々の台帳の「スーパーセット（ｓｕｐｅｒｓｅｔ）」であることに起因して、「スーパー台帳（ｓｕｐｅｒｌｅｄｇｅｒ）」と呼ぶことができる。
【００３０】
図２Ａは、例示の実施形態によるブロックチェーン・アーキテクチャ構成２００Ａを図示している。図２Ａを参照すると、ブロックチェーン・アーキテクチャ２００Ａは、特定のブロックチェーン要素、例えば、ブロックチェーン・ノード２０２のグループを含むことができる。ブロックチェーン・ノード２０２は、１つまたは複数のノード２０４〜２１０を含むことができる。（単なる例示として４ノードが描かれている）。これらのノードは、ブロックチェーン・トランザクションの追加、および検証プロセス（合意）などの、複数のアクティビティに参加している。ブロックチェーン・ノード２０４〜２１０のうちの１つまたは複数は、トランザクションをエンドースすることができ、またアーキテクチャ２００Ａ内のすべてのブロックチェーン・ノード用の順序付けサービスを提供することもできる。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン・レイヤ２１６に記憶される不変な台帳であるブロックチェーンへの書き込みを試みることができ、その複製もまた基礎となっている物理的なインフラストラクチャ２１４に記憶することができる。ブロックチェーン構成は、記憶されたプログラム／アプリケーション・コード２２０（例えば、チェーンコード、スマート・コントラクトなど）にアクセスして実行するための、アプリケーション・プログラミング・インターフェース（ＡＰＩ）２２２にリンクされる１つまたは複数のアプリケーション２２４を含むことができ、これらは参加者によって求められるカスタマイズされた構成にしたがって作成することができ、それら自身の状態を維持し、それら自身のアセットを制御し、そして外部情報を受信することができる。これは、すべてのブロックチェーン・ノード２０４〜２１０上で、分散台帳への追記を介して、トランザクションとしてデプロイして、インストールすることができる。
【００３１】
ブロックチェーン・ベースまたはプラットフォーム２１２は、ブロックチェーンのデータ、サービス（例えば、暗号法的なトラスト・サービス、仮想実行環境など）、基礎となっている物理的なコンピュータ・インフラストラクチャといった、様々なレイヤを含み、これらは、新しいトランザクションを受信して記憶し、データ・エントリへのアクセスを試みる監査にアクセスを提供するために使用することができる。ブロックチェーン・レイヤ２１６は、プログラム・コードを処理するために必要な仮想実行環境へのアクセスを与えるインターフェースを公開し、物理的なインフラストラクチャ２１４に繋がることができる。暗号法的なトラスト・サービス２１８を使用して、アセット交換トランザクションなどのトランザクションを検証して、情報を秘密にしておくことができる。
【００３２】
図２Ａのブロックチェーン・アーキテクチャ構成は、ブロックチェーン・プラットフォーム２１２により、１つまたは複数の公開されるインターフェース、および提供されるサービスを介してプログラム／アプリケーション・コード２２０を処理して実行することができる。コード２２０は、ブロックチェーンアセットを制御することができる。例えば、コード２２０は、データを記憶して移送することができ、また、スマート・コントラクトおよびその実行の対象となる条件または他のコード要素に関連付けられるチェーンコードの形態でノード２０４〜２１０によって実行され得る。非限定的な例として、スマート・コントラクトは、リマインダ、更新、または変更、更新などを対象とする他の通知あるいはその組合せを実行するために作成することができる。スマート・コントラクトは、それ自身を使用して権限に関連付けられる規則を特定し、台帳の必要事項および使用にアクセスすることができる。
【００３３】
チェーンコード内で、スマート・コントラクトは、高水準のアプリケーションおよびプログラミング言語を介して作成することができ、ブロックチェーン内のブロックに書き込まれる。スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーン・ピアの分散ネットワーク）に登録される、記憶される、または複製される、あるいはその組合せである、実行可能コードを含むことができる。トランザクションは、スマート・コントラクト・コードの実行であり、これは、スマート・コントラクトに関連付けられる条件が満足されたことに応じて実施され得る。スマート・コントラクトの実行は、デジタルなブロックチェーン台帳の状態に対し、信頼される修正をトリガする場合がある。スマート・コントラクトの実行によって生じるブロックチェーン台帳への修正は、１つまたは複数の合意プロトコルによりブロックチェーン・ピアの分散ネットワーク全体に渡って自動的に複製され得る。
【００３４】
スマート・コントラクトは、データをキー−バリュー対のフォーマットで、ブロックチェーンに書き込むことができる。さらには、スマート・コントラクト・コードは、ブロックチェーンに記憶されるバリューを読み出し、アプリケーションの動作においてそれらを使用することができる。スマート・コントラクト・コードは、様々な論理演算の出力をブロックチェーンに書き込むことができる。コードを使用して、仮想マシンまたは他のコンピューティング・プラットフォーム上で、一時的なデータ構造を作成することができる。ブロックチェーンに書き込まれたデータは、パブリックであり得るか、または暗号化されて秘密として維持され得るか、あるいはその両方である。スマート・コントラクトによって使用される／生成される一時的なデータは、与えられた実行環境によってメモリ内に保持され、次いでブロックチェーンに必要なデータが特定されると削除される。
【００３５】
チェーンコードは、スマート・コントラクトのコード解釈を、さらなる特徴とともに、含むことができる。本明細書に記載されるように、チェーンコードは、コンピューティング・ネットワークにデプロイされるプログラム・コードであり得、そこで合意プロセスの間にチェーン・バリデータによって実行および検証される。チェーンコードは、ハッシュを受信し、以前に記憶された特徴抽出器の使用によって作成されたデータ・テンプレートに関連付けられるハッシュをブロックチェーンから取り出す。ハッシュ識別子のハッシュ、および記憶された識別子テンプレート・データから作成されたハッシュが一致する場合、チェーンコードは認可キー（authorization key）をリクエストされたサービスに送信する。チェーンコードはブロックチェーンに暗号法的な詳細に関連付けられるデータを書き込むことができる。図２Ａにおいて、一例では、あるブロックチェーン・トランザクションが、エンドースメントまたは他のブロックチェーン・ピア・サービスを要求する潜在的なトランザクションとして特定される（２２６）。ブロックチェーン・ピア・ノードのうちの１つまたは複数によってトランザクションがエンドースされると、トランザクションはプロキシ・エージェントを介してピアによって維持される台帳に更新することができる（２２８）。プロキシ・エージェントは、トランザクションをコミットするために必要なエンドースメントを与える担当となっている場合がある。
【００３６】
図２Ｂは、例示の実施形態によるブロックチェーンのノード同士のトランザクション・フロー２００Ｂの例を図示している。図２Ｂを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード２６０によってエンドーシング・ピア・ノード２８１に送信されたトランザクション・プロポーザル２９１を含む場合がある。エンドーシング・ピア２８１は、クライアント署名を検証し、チェーンコード関数を実行してトランザクションを開始することができる。出力には、チェーンコードの結果、チェーンコードで読み出されたキー／バリューのセット（読み出しセット（read set））バージョンおよびチェーンコードに書き込まれたキー／バリューのセット（書き込みセット(write set)）が含まれる場合がある。プロポーザル・レスポンス２９２は、承認されている場合はエンドースメント署名とともに、クライアント２６０に送信し戻される。クライアント２６０は、エンドースメントをトランザクション・ペイロード２９３にまとめて、それを順序付けサービス・ノード２８４にブロードキャストする。順序付けサービス・ノード２８４は、次いで順序付けられたトランザクションをブロックとして、チャネル上のすべてのピア２８１〜２８３に配信する。ブロックチェーンへのコミットの前に、それぞれのピア２８１〜２８３は、トランザクションを検証することができる。例えば、ピアはエンドースメント・ポリシをチェックして、指定されたピアの正しい割り当てが結果に署名してあり、トランザクション・ペイロード２９３に対して署名を認証してあることを確認することができる。
【００３７】
再度、図２Ｂを参照すると、クライアント・ノード２６０は、リクエストを構築してエンドーサであるピア・ノード２８１に送信することによって、トランザクション２９１を開始する。クライアント２６０は、トランザクション・プロポーザルを生成するために利用可能なＡＰＩを利用するＮＯＤＥ、ＪＡＶＡ（登録商標）、ＰＹＴＨＯＮなどのサポートされるソフトウェア開発キット（ＳＤＫ）を活用するアプリケーションを含むことができる。プロポーザルは、データの台帳からの読み出しまたは台帳への書き込み（すなわち、アセットについての新しいキーバリュー対を書き込む）あるいはその両方を行うことができるよう、チェーンコード関数を呼び出すためのリクエストである。ＳＤＫは、トランザクション・プロポーザルを適切に設計されたフォーマット（例えば、リモート・プロシージャ・コール（ＲＰＣ）上のプロトコル・バッファ）にパッケージするためのシム（shim）として機能し、クライアントの暗号法的クレデンシャル情報を得てトランザクション・プロポーザル用の一意な署名を作成することができる。
【００３８】
それに応じて、エンドーシング・ピア・ノード２８１は、（ａ）トランザクション・プロポーザルが正しく形成されたこと、（ｂ）過去においてトランザクションがまだサブミットされていないこと（リプレイ攻撃保護）、（ｃ）署名が有効であること、（ｄ）チャネル上で提案された操作を実行するための適切な権限がサブミッタ（例では、クライアント２６０）に与えられていること、を検証することができる。エンドーシング・ピア・ノード２８１は、トランザクション・プロポーザルの入力を呼び出されたチェーンコード関数への引数とすることができる。次いで、チェーンコードは、現在の状態データベースに対して実行され、レスポンス値、読み出しセット、および書き込みセットを含むトランザクションの結果を作りだす。しかしながら、この時点では、台帳への更新はなされていない。２９２において、バリューのセットは、エンドーシング・ピア・ノード２８１の署名とともに、プロポーザル・レスポンス２９２としてクライアント２６０のＳＤＫに戻され、クライアント２６０はそのアプリケーションが使用するためのペイロードを構文解析する。
【００３９】
それに応じて、クライアント２６０のアプリケーションは、エンドーシング・ピアの署名を検査／検証して、プロポーザル・レスポンスを比較してプロポーザル・レスポンスが同一かどうかを判断する。チェーンコードが台帳にクエリしただけである場合、アプリケーションは、クエリ・レスポンスを検査し、典型的にはトランザクションを順序付けノード・サービス２８４にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けノード・サービス２８４にトランザクションをサブミットするよう意図する場合、アプリケーションは、指定されたエンドースメント・ポリシがサブミットの前に遂行されているかどうか（すなわち、トランザクションに必要なすべてのピア・ノードが、そのトランザクションをエンドースしたか）を判断する。ここで、クライアントはトランザクションへの複数の関係者のうち１つだけを含むことができる。この場合、それぞれのクライアントは、それら自身のエンドーシング・ノードを有することができ、それぞれのエンドーシング・ノードはトランザクションをエンドースする必要がある。アーキテクチャは、アプリケーションがレスポンスを検査しないよう選択した場合、またはそうではなく、エンドースされなかったトランザクションを転送する場合であっても、やはりエンドースメント・ポリシがピアによって施行され、コミット検証フェーズにおいて維持されるものである。
【００４０】
検査が成功した後、ステップ２９３において、クライアント２６０は、エンドースメントをトランザクションにまとめて、トランザクション・プロポーザルおよびトランザクション・メッセージ内のレスポンスを順序付けノード２８４にブロードキャストする。トランザクションは、読み出し／書き込みセット、エンドーシング・ピアの署名、およびチャネルＩＤを含む場合がある。順序付けノード２８４は、その動作を実施するためにトランザクションの内容全体を検査する必要はなく、代わりに順序付けノード２８４は、単にトランザクションをネットワーク内のすべてのチャネルから受信し、チャネルでそれらを時系列的に順序付け、チャネルごとにトランザクションのブロックを作成することができる。
【００４１】
トランザクションのブロックは、順序付けノード２８４から、チャネル上のすべてのピア・ノード２８１〜２８３に提供される。ブロック内のトランザクション２９４は、あらゆるエンドースメント・ポリシが遂行されることを保証にするため、および、読み出しセットがトランザクション実行により生成されてから、読み出しセット変数について台帳状態に変更がなかったことを保証にするために、検証される。ブロック内のトランザクションは、有効または無効としてタグ付けされる。さらには、ステップ２９５において、それぞれのピア・ノード２８１〜２８３は、ブロックをチャネルのチェーンに追加し、それぞれ有効なトランザクションごとに書き込みセットが現在の状態データベースにコミットされる。トランザクション（呼び出し）がチェーンに不変に追加されたことをクライアント・アプリケーションに通知するため、ならびにトランザクションが有効化されたかまたは無効化されたかを通知するために、イベントが発生する。
【００４２】
図３は、許可型のブロックチェーンのネットワーク３００の例を図示しており、分散型の、非中央集権型のピアツーピアのアーキテクチャを特徴としており、認証局３１８が、ユーザ・ロールおよび権限を管理している。この例では、ブロックチェーン・ユーザ３０２は、許可型のブロックチェーンのネットワーク３１０にトランザクションをサブミットすることができる。この例では、トランザクションは、デプロイ、呼び出し、またはクエリである可能性があり、またＳＤＫを活用するクライアント・サイドのアプリケーションを通じて、直接ＲＥＳＴ  ＡＰＩを通じて、などで発行することができる。信頼されるビジネス・ネットワークは、監査（例えば、米国株式市場における証券取引委員会）などの規制者システム３１４にアクセスを与えることができる。一方で、ブロックチェーン・ネットワーク運用者ノード３０８は、規制者システム３１４を「監査」として、またブロックチェーン・ユーザ３０２を「クライアント」としてエンロールするなど、メンバの権限を管理している。監査は、台帳を照会することだけに制限される可能性がある一方で、クライアントは、特定のタイプのチェーンコードをデプロイ、呼び出し、およびクエリするよう認可され得る。
【００４３】
ブロックチェーン開発者システム３１６は、チェーンコードおよびクライアント・サイドのアプリケーションを書き込む。ブロックチェーン開発者システム３１６は、チェーンコードを、ＲＥＳＴインターフェースを介して直接ネットワークにデプロイすることができる。従来的なデータ・ソース３３０からのクレデンシャル情報をチェーンコード内に含めるために、開発者システム３１６は、データにアクセスするためにアウトオブバンド接続を使用することができる。この例では、ブロックチェーン・ユーザ３０２は、ピア・ノード３１２を通じてネットワークに接続する。いずれかのトランザクションに進む前に、ピア・ノード３１２は、ユーザのエンロールメントおよびトランザクション証明書を認証局３１８から取り出す。場合によっては、ブロックチェーン・ユーザは、許可型のブロックチェーンのネットワーク３１０上で取引するために、これらのデジタル証明書を所有しなければならない。一方で、チェーンコードを動かそうと試みるユーザは、彼らのクレデンシャル情報を従来的なデータ・ソース３３０上で検証するよう要求される場合がある。ユーザの認可を確認するために、チェーンコードは従来的な処理プラットフォーム３２０を通じて、このデータに対してアウトオブバンド接続を使用することができる。
【００４４】
図４は、例示的な実施形態による、プロキシ・エージェントを介するピア・ノード管理を実施するためのシステム・メッセージング図を図示している。図４を参照すると、例示の構成４００は、１つまたは複数のピア４１０、およびピア４１０に対応する１つまたは複数のプロキシ４２０を含む。また、ブロックチェーン４３０は、ピア４１０およびプロキシ４２０によって維持される台帳のうちの１つまたは複数を表すことができる。動作中、エンドースメントを必要とするブロックチェーン・トランザクションがピア４１０のうちの１つまたは複数によって特定され（４１２）、トランザクションは、エンドースする１つまたは複数のプロキシに転送される（４１４）。プロキシは、トランザクションをエンドースするために必要なエンドースメント動作を実施することにより、ピアのように作用することができる（４１６）。エンドースメントが特定され（４１８）、ブロックチェーン４３０にコミットされる（４２２）。トランザクションは、他の台帳に、それらの個々の台帳へのコミットのために転送される（４２４）。指定された時間、またはネットワークしきい値条件（例えば、時刻、ネットワーク・パフォーマンス・メトリクスなど）あるいはその両方など、更新ポリシに基づいて、適当な時期に、他のピアによって維持される他の台帳の複製は更新される（４２６）。
【００４５】
図５Ａは、例示的な実施形態による、ブロックチェーン内でのプロキシ・エージェント管理の例示の方法のフロー図を図示している。図５Ａを参照すると、方法５００Ａは、ブロックチェーン・ノードによるエンドースメントを必要とするブロックチェーン・トランザクションを特定すること（５１２）と、他のブロックチェーン・ノードのうちの１つまたは複数に関連付けられるプロキシ・エージェントから、１つのブロックチェーン・ノードにおいてエンドースメントを受信すること（５１４）と、必要なエンドースメントが特定されるとブロックチェーン・トランザクションをコミットするよう決定すること（５１６）と、コミットされたブロックチェーン・トランザクションを、１つのブロックチェーン・ノードによって維持される台帳に記憶すること（５１８）とを提供することができる。この例では、１つのピア・ノードは、コミットメント合意特徴を実施する主要ピア・ノードである。他のノードは、それらのプロキシを使用して、必要なエンドースメント・リクエストに対するタイムリーなレスポンスを維持する。ノードおよびプロキシのそれぞれは、すべてのトランザクションの集約台帳の一部で有り得る台帳を維持することができる。プロキシ・エージェントは、１つのブロックチェーン・ノードにソフトウェア・モジュールとしてインストールされるか、またはノードに極近接して動作するスタンドアロンのデバイスであってもよい。
【００４６】
方法はまた、台帳の更新を中継する最適な時間を決定するために、ネットワーク・レイテンシが低い期間を決定することを含むことができる。方法は、また、ネットワーク・レイテンシが低い期間の間に、更新をプロキシ・エージェントから他のブロックチェーン・ノードのうちの１つまたは複数に送信して、他のブロックチェーン・ノードに関連付けられる台帳を更新することと、プロキシ・エージェントに関連付けられるプロキシ台帳においてブロックチェーン・トランザクションを記憶することと、他のブロックチェーン・ノードのうちの１つまたは複数に更新を送信した後、プロキシ台帳においてブロックチェーン・トランザクションを削除することと、または代わりに、他のブロックチェーン・ノードのうちの１つまたは複数に更新を送信した後、プロキシ台帳においてブロックチェーン・トランザクションをキャッシュすることとを含むことができる。
【００４７】
図５Ｂは例示的な実施形態による、ブロックチェーン内でのプロキシ・エージェント管理の別の例示の方法のフロー図を示している。図５Ｂを参照すると、方法５００Ｂは、ブロックチェーン・ノードによるエンドースメントを必要とするブロックチェーン・トランザクションを特定すること（５５２）と、１つのブロックチェーン・ノードにおいて他のブロックチェーン・ノードのうちの１つまたは複数に関連付けられるプロキシ・オブジェクトからエンドースメントを受信すること（５５４）と、ブロックチェーン・トランザクションをコミットするよう決定すること（５５６）と、コミットされたブロックチェーン・トランザクションを、１つのブロックチェーン・ノードによって維持される台帳に記憶すること（５５８）と、プロキシ・オブジェクトを介して、台帳のバックアップ複製を、１つまたは複数の他のブロックチェーン・ノードに記憶される台帳の他の複製に転送すること（５６２）とを提供する。
【００４８】
第１のブロックチェーン・ノードにおいて台帳の複製を維持することに加えて、台帳の複製または台帳への更新あるいはその両方は、ネットワーク・レイテンシが最適なネットワーク使用時間よりも低いと判断される時間の間に、他のブロックチェーン・ノード／ピアに受動的に転送される場合がある。プロキシ・オブジェクトは、最近のトランザクションを他のブロックチェーン・ノードに転送するために存在する。プロキシ・オブジェクトは、初期の台帳更新プロセスの間に作成され定義される場合があり、更新されるトランザクションを、適当な時間に共有するようにトリガすることができる。プロキシ・オブジェクトは、ネットワーク・レイテンシ、時刻、または更新がさらなるネットワーク・レイテンシを招くことなく転送され得ると判断される他の時間、などのしきい値によって定義され得る。
【００４９】
図５Ｃは、例示的な実施形態による、ブロックチェーン内でのプロキシ・エージェント管理の別の例示の方法のフロー図を図示している。図５Ｃを参照すると、例は、第１のブロックチェーン・ノードにおいて処理を必要とするブロックチェーン・トランザクションを特定すること（５７２）と、第１のブロックチェーン・ノードによって、および、第１のブロックチェーン・ノードとコロケートされる１つまたは複数のプロキシ・エージェントによって、ブロックチェーン・トランザクションに関連付けられるスマート・コントラクトを実行することであって、１つまたは複数のプロキシ・エージェントは、ブロックチェーン・ネットワーク上の他のブロックチェーン・ノードにも関連付けられる、実行すること（５７４）と、ブロックチェーン・トランザクションをコミットするよう決定すること（５７６）と、コミットされたブロックチェーン・トランザクションを、第１のブロックチェーン・ノードによって維持される台帳に記憶すること（５７８）とを含む、方法５７０を提供する。
【００５０】
方法はまた、第１のブロックチェーン・ノードにおいて１つまたは複数のプロキシ・エージェントからエンドースメントを受信することと、他のブロックチェーン・ノードのうちの１つまたは複数によってスマート・コントラクト・ノードを実行することと、他のブロックチェーン・ノードのうちの１つまたは複数によってブロックチェーン・トランザクションをコミットするよう決定することと、コミットされたブロックチェーン・トランザクションを、１つまたは複数の他のブロックチェーン・ノードのそれぞれによって維持される他の台帳に記憶することとを含む。１つまたは複数のプロキシ・エージェントは、第１のブロックチェーン・ノードにインストールすることができるか、または第１のブロックチェーン・ノードの一定の近接内のコロケートされる場所にある。コロケートされる場所は、第１のブロックチェーン・ノードと１つまたは複数のプロキシ・エージェントとの通信についてレイテンシ上限しきい値を超えないように決定されたレイテンシに基づいているか、またはコロケーション場所は、第１のブロックチェーン・ノードと、１つまたは複数のプロキシ・エージェントのために使用される処理プラットフォーム間の物理的な距離との間の地理学的距離に基づいている。方法はまた、１つまたは複数のプロキシ・エージェントから他のブロックチェーン・ノードへ更新を送信して他のブロックチェーン・ノードにおいて台帳の複製を更新することと、１つまたは複数のプロキシ・エージェントに関連付けられるプロキシ台帳においてブロックチェーン・トランザクションを記憶することと、ブロックチェーン・トランザクションを他のブロックチェーン・ノードのうちの１つまたは複数に送信した後、プロキシ台帳においてブロックチェーン・トランザクションをキャッシュすることと、トランザクションを他のブロックチェーン・ノードに送信した後で、、かつ、他のブロックチェーン・ノードからのトランザクションの受領の確認を受信した後、プロキシ台帳においてブロックチェーン・トランザクションを削除することとを提供することができる。他の特徴は、トランザクションを、プロキシ・エージェントによる個々のノードへのその送信に先立って、１つのノードにおいてローカルにコミットできるようにするために、ノードにわたってリソースを分割できるようにすることを提供することができる。キャッシュすることは、キャッシュ用の空間可用性、もしくはキャッシュ用の事前指定のタイム・ホライズンに基づいて、またはキャッシュ用のＬＲＵポリシなどのキャッシュ・ポリシに基づいてなど、１つまたは複数の制約に基づいて実施され得る。プロキシ・エージェントは、ブロックチェーン・ネットワーク上で個々のピアのローカルな代表として機能し、コミットされるトランザクションの個々のピアへの送信に先立って、トランザクションがローカルでコミットできるようにしている。ブロックチェーン・ネットワーク上のそれぞれのノードは、そのノードの台帳を、ブロックチェーン・ネットワーク上の他のピアの台帳の複製されたバージョンとともに含む集約台帳を維持する。集約台帳の一部である台帳のそれぞれは、ソースおよび由来情報の異なるセットを特定する異なるジェネシス・ブロックを有する。
【００５１】
図６Ａは、例示的な実施形態による、動作の例示的な方法のうちの１つまたは複数にしたがうブロックチェーン上で様々な動作を実施するように構成される例示的な物理的インフラストラクチャを図示している。図６Ａを参照すると、例示的な構成６００Ａは、ブロックチェーン６２０およびスマート・コントラクト６４０を伴う物理的なインフラストラクチャ６１０を含み、例示的な実施形態のうちのいずれかに含まれる動作ステップ６１２のいずれかを実行することができる。ステップ／動作６１２は、１つまたは複数のフロー図または論理図あるいはその両方において説明されるか、または描かれるステップのうちの１つまたは複数を含むことができる。ステップは、システム構成の物理的なインフラストラクチャ６１０に常駐する１つもしくは複数のスマート・コントラクト６４０またはコンピュータ・ブロックチェーン６２０あるいはその両方に書き込まれたか、または読み出された出力または書き込み情報を表すことができる。データは、実行されたスマート・コントラクト６４０またはブロックチェーン６２０あるいはその両方から出力され得る。物理的なインフラストラクチャ６１０は、１つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、またはワイヤレス通信デバイスあるいはその組合せを含むことができる。
【００５２】
図６Ｂは、例示的な実施形態による、契約当事者間の例示的なスマート・コントラクト構成およびブロックチェーン上でスマート・コントラクト条項を執行する構成される仲介するサーバを図示している。図６Ｂを参照すると、構成６５０Ｂは、通信セッション、１つまたは複数のユーザ・デバイス６５２または６５６あるいはその両方を明示的に特定するスマート・コントラクト６４０によって進められるアセット移送セッションまたはプロセスまたはプロシージャを表すことができる。スマート・コントラクト実行の実行、動作および結果は、サーバ６５４によって管理することができる。スマート・コントラクト６４０の内容は、スマート・コントラクト・トランザクションの関係者であるエンティティ６５２および６５６のうちの１つまたは複数によるデジタル署名を必要とする場合がある。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込むことができる。
【００５３】
上記実施形態は、ハードウェア、プロセッサによって実行されるコンピュータ・プログラム、ファームウェア、またはこれらの組合せにおいて実装され得る。コンピュータ・プログラムは、記憶媒体などコンピュータ可読媒体に具体化することができる。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（「ＲＡＭ」）、フラッシュ・メモリ、読み出し専用メモリ（「ＲＯＭ」）、消去可能プログラム可能読み出し専用メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラム可能読み出し専用メモリ（「ＥＥＰＲＯＭ」）、レジスタ、ハードディスク、リムーバブル・ディスク、コンパクト・ディスク読み出し専用メモリ（「ＣＤ−ＲＯＭ」）、または当分野で既知の記憶媒体のあらゆる他の形態で存在することができる。
【００５４】
例示の記憶媒体は、プロセッサが記憶媒体から情報を読み出すこと、および情報を記憶媒体に書き込むことができるように、プロセッサに結合することができる。代替として、記憶媒体はプロセッサに統合することもできる。プロセッサおよび記憶媒体は、特定用途向け集積回路（「ＡＳＩＣ」）に存在することができる。代替として、プロセッサおよび記憶媒体は、個別部品として存在することができる。例えば、図７は、上述のコンポーネントなどのいずれかを代表することができるか、または上述のコンポーネントなどのいずれかに統合することができる、例のコンピュータ・システム・アーキテクチャ７００を図示している。
【００５５】
図７は、本明細書で説明される本出願の実施形態の使用または機能性の範囲に関して、いかなる制限をも示唆するように意図されていない。とにかく、コンピューティング・ノード７００は、本明細書で上述の機能性のいずれかを実装または実施あるいはその両方を行うことができる。
【００５６】
コンピューティング・ノード７００には、多くの他の汎用または特殊目的の、コンピューティング・システム環境または構成で動作可能である、コンピュータ・システム／サーバ７０２が存在する。コンピュータ・システム／サーバ７０２での使用に適切であり得る周知のコンピューティング・システム、環境、または構成あるいはそれらの組合せの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップのデバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、ミニ・コンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるがそれに限定しない。
【００５７】
コンピュータ・システム／サーバ７０２は、コンピュータ・システムによって実行されているプログラム・モジュールなどのコンピュータ・システム−実行可能命令の一般的なコンテキストで説明され得る。一般的に、プログラム・モジュールは、特定のタスクを実施するか、または特定の抽象的なデータ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム／サーバ７０２、タスクが通信ネットワークを通じてリンクされたリモート処理デバイスによって実施される分散クラウド・コンピューティング環境において実践することができる。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム記憶媒体に配置することができる。
【００５８】
図７において示されるように、クラウド・コンピューティング・ノード７００におけるコンピュータ・システム／サーバ７０２が汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ７０２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット７０４、システム・メモリ７０６、および、システム・メモリ７０６を含む様々なシステム・コンポーネントをプロセッサ７０４に連結するバスを含むことができるが、それに限定されない。
【００５９】
バスは、バス構造のいくつかのタイプのいずれかのうちの１つまたは複数を表しており、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたは様々なバス・アーキテクチャの任意のものを使用するローカル・バスを含む。限定ではなく例として、そのようなアーキテクチャはインダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、およびＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【００６０】
コンピュータ・システム／サーバ７０２は、典型的には様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ７０２によってアクセス可能なあらゆる利用可能な媒体であることができ、揮発性および非揮発性の媒体、ならびにリムーバブルおよび非リムーバブルの媒体の両方を含む。一実施形態において、システム・メモリ７０６は、他の図面のフロー図を実装する。システム・メモリ７０６は、ランダム・−アクセス・メモリ（ＲＡＭ）７１０またはキャッシュ・メモリ７１２あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ７０２は、他のリムーバブル／非リムーバブルの、揮発性／非揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。単なる例として、非リムーバブル、非揮発性の磁気媒体（典型的には「ハード・ドライブ」と称され、図示せず）からの読み出しおよびそれへの書き込みのためのストレージ・システム７１４を設けることができる。図示していないが、リムーバブル、非揮発性の磁気ディスク（例えば、「フロッピー（登録商標）・ディスク」）からの読み出しおよびそれへの書き込みのための磁気ディスク・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光学媒体などのリムーバブル、非揮発性の光学ディスクからの読み出しまたはそれへの書き込みのための光学ディスク・ドライブを設けることができる。そのような事例において、それぞれは１つまたは複数のデータ媒体インターフェースによってバスへ接続することができる。以下でさらに描写され説明されるように、メモリ７０６は、本出願の様々な実施形態の機能を実行するように構成されるプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００６１】
プログラム・モジュール７１８のセット（少なくとも１つ）を有するプログラム／ユーティリティ７１６は、限定ではなく例として、メモリ７０６に記憶することができ、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも同様である。オペレーティング・システムのそれぞれ、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそのいくつかの組合せは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール７１８は、一般的に本明細書において説明されるような本出願の様々な実施形態の、機能または方法あるいはその両方を実行する。
【００６２】
当業者であれば理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化することができる。したがって、本出願の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本明細書においてすべて一般的に「回路」、「モジュール」または「システム」と称され得るソフトウェアとハードウェアの態様を組み合わせた実施形態の形態を取ることができる。さらには、本出願の態様は、コンピュータ可読プログラム・コードを具体化して有する１つまたは複数のコンピュータ可読媒体において具体化されるコンピュータ・プログラム製品の形態を取ることができる。
【００６３】
コンピュータ・システム／サーバ７０２は、また、キーボード、ポインティング・デバイス、ディスプレイ７２２、などの１つもしくは複数の外部デバイス７２０、ユーザがコンピュータ・システム／サーバ７０２と対話できるようにする１つもしくは複数のデバイス、またはコンピュータ・システム／サーバ７０２が１つもしくは複数の他のコンピューティング・デバイスと通信できるようにするあらゆるデバイス（例えば、ネットワーク・カード、モデムなど）あるいはその組合せと通信することができる。そのような通信はＩ／Ｏインターフェース７２４を介して行うことができる。さらになお、コンピュータ・システム／サーバ７０２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、またはネットワーク・アダプタ７２６を介するパブリック・ネットワーク（例えば、インターネット）あるいはその組合せなどの１つまたは複数のネットワークと通信することができる。描写されるように、ネットワーク・アダプタ７２６は、バスを介してコンピュータ・システム／サーバ７０２の他のコンポーネントと通信する。図示していないが、他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントが、コンピュータ・システム／サーバ７０２と併せて使用することができることが理解されるべきである。例として、マイクロコード、デバイス・ドライバ、冗長化処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、それに限定されない。
【００６４】
システム、方法、および非一過性のコンピュータ可読媒体のうちの少なくとも１つの例の実施形態が添付の図面に図示され、また先の詳細な説明において説明されてきたが、本出願は、開示される実施形態に限定されず、以下の特許請求の範囲によって説明され定義されるように、多数の再構成、修正、および置換が可能であることを理解されたい。例えば、様々な図面のシステムの機能は、本明細書において説明されるモジュールまたはコンポーネントのうちの１つまたは複数によって実施することができるか、または分散アーキテクチャにおいて実施される場合があり、送信機、受信機またはその両方の対を含む場合もある。例えば、個々のモジュールによって実施される機能性のすべてまたは一部は、これらのモジュールのうちの１つまたは複数によって実施することができる。さらには、本明細書において説明される機能性は、様々な時間に、また様々なイベントに関連して、モジュールまたはコンポーネントに対して内部的にまたは外部的に実施することができる。さらに、様々なモジュール間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、ワイヤレス・デバイス、ワイヤード・デバイス、または複数のプロトコル、あるいはその組合せのうちの少なくとも１つを介してモジュール間で送信することができる。さらに、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、または他のモジュールのうちの１つもしくは複数を介して、あるいはその両方で、送信または受信することができる。
【００６５】
当業者であれば、「システム」は、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末（ＰＤＡ）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、またはあらゆる他の適切なコンピューティング・デバイス、またはデバイスの組合せとして具体化され得ることを理解できるであろう。上述の機能を「システム」によって実施されるとして提示することは、いかなる方法でも本出願の範囲を限定するよう意図しておらず、多くの実施形態のうちの一例を与えるよう意図されている。実際、本明細書において開示される方法、システム、および装置は、コンピューティング技術に一貫して局所化および分散された形態で実施される場合がある。
【００６６】
本明細書において説明されるシステム特徴のうちの一部は、その実装形態の独立性をより強調するためにモジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタムの超大規模集積（ＶＬＳＩ）回路またはゲート・アレイ、論理チップなどの市販の半導体、トランジスタ、または他の個別部品を備えるハードウェア回路として実装される場合がある。モジュールはまた、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィック・プロセシング・ユニットなどのプログラマブルなハードウェア・デバイスに実装される場合もある。
【００６７】
モジュールはまた、様々なタイプのプロセッサによる実行のために、少なくとも部分的にソフトウェアで実装することができる。実行可能なコードの特定されたユニットは、例えば、１つまたは複数の物理的または論理的な、例えば、オブジェクト、プロシージャ、または関数として組織化することができる、コンピュータ命令のブロックを含む場合がある。特定されるモジュールの実行可能物は、物理的に一緒に配置される必要はないが、論理的に一緒に結合されるとモジュールを構成してモジュールの明記される目的を達成する異なる場所に記憶される別の命令を含むことができる。さらには、モジュールは、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータを記憶するために使用されるあらゆる他のそのような媒体であり得るコンピュータ可読媒体に記憶される場合がある。
【００６８】
実際、実行可能なコードのモジュールは、単一の命令、または複数の命令であることができ、様々なプログラム間で、いくつかのメモリ・デバイスに渡って、いくつかの異なるコード・セグメントに分散されることさえあり得る。同様に、動作可能なデータが、本明細書においてモジュール内に特定されて図示され、あらゆる適切なタイプのデータ構造においてあらゆる適切な形態で具体化され、組織化される可能性がある。動作可能なデータは、単一のデータ・セットとして収集することができるか、または様々なストレージ・デバイス上を含む異なる場所に分散されてもよく、また少なくとも部分的に、システムまたはネットワーク上の単なる電子的な信号として存在する場合がある。
【００６９】
本明細書の図面において一般的に説明され図示される本出願のコンポーネントは、多様な構成で配置構成され、設計される可能性があることが容易に理解されよう。したがって、実施形態の詳細な説明は、特許請求される出願の範囲を限定するよう意図されておらず、本出願の選択された実施形態の単なる代表である。
【００７０】
当業者であれば、上記が異なる順のステップで、または開示されるのとは異なる構成のハードウェア要素で、あるいはその両方で、実践され得ることを容易に理解するであろう。したがって、本出願はこれらの好ましい実施形態に基づいて説明されてきたが、特定の修正形態、変形形態、および代替構築物が明らかであることは、当業者にとって明らかとなろう。
【００７１】
本出願の好ましい実施形態が説明されてきたが、説明された実施形態は例示に過ぎず、本出願の範囲は、添付の特許請求の範囲によってのみ、それに対する等価物および修正形態の全範囲（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど）を考慮して、定義されることを理解されたい。
【図１Ａ】
2021526249.tif 000003
【図１Ｂ】
2021526249.tif 000004
【図２Ａ】
2021526249.tif 000005
【図２Ｂ】
2021526249.tif 000006
【図３】
2021526249.tif 000007
【図４】
2021526249.tif 000008
【図５Ａ】
2021526249.tif 000009
【図５Ｂ】
2021526249.tif 000010
【図５Ｃ】
2021526249.tif 000011
【図６Ａ】
2021526249.tif 000012
【図６Ｂ】
2021526249.tif 000013
【図７】
2021526249.tif 000014
【国際調査報告】
2021526249.tif 000015
2021526249.tif 000016