(57)【要約】  例としての動作は、クライアント・ノードによって、トランザクション提案を複数のピアのうちの１つまたは複数のピアに送信することと、複数のピアのうちの少なくとも１つのピアによって、トランザクション提案に関連付けられたトランザクションをシミュレーションすることと、エンドーサ・ピアによって、エンドースメント・ポリシーが満たされているかどうかを評価することと、エンドースメント・ポリシーが満たされている場合に、エンドーサ・ピアによって、台帳にコミットされるようにトランザクションを少なくとも１つのオーダラ・ノードに送信することと、を含むブロックチェーン・ネットワークにおけるワンステップ・トランザクション・サブミッションを提供する方法のうちの１つまたは複数を含み得る。
2021525016.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーン・ネットワークにおいて、ワンステップ・トランザクション・サブミッションを提供する方法であって、
クライアント・ノードによって、トランザクション提案を複数のピアのうちの１つまたは複数のピアに送信することと、
前記複数のピアのうちの少なくとも１つのピアによって、前記トランザクション提案に関連付けられたトランザクションをシミュレーションすることと、
エンドーサ・ピアによって、エンドースメント・ポリシーが満たされているかどうかを評価することと、
前記エンドースメント・ポリシーが満たされている場合に、前記エンドーサ・ピアによって、台帳にコミットされるように前記トランザクションを少なくとも１つのオーダラ・ノードに送信することと、
を含む、方法。
【請求項２】
前記複数のピアによって、下位層のプロトコルを用いて前記トランザクション提案を拡散させることをさらに含む、請求項１に記載の方法。
【請求項３】
前記下位層のプロトコルが、ゴシップ・プロトコルである、請求項２に記載の方法。
【請求項４】
所与のチェーンコードに関連付けられた全てのエンドーサが最終的には前記シミュレーションの結果を受信するように、前記複数のピアのうちの前記少なくとも１つのピアによって、他のピアに前記結果を通信することをさらに含む、請求項１に記載の方法。
【請求項５】
前記少なくとも１つのオーダラ・ノードによってビザンチン挙動をサポートするために、前記エンドースメント・ポリシーが満たされている場合の前記少なくとも１つのオーダラ・ノードに前記トランザクションを前記送信することがランダムである、請求項１に記載の方法。
【請求項６】
エンドース結果が、前記クライアント・ノードに返されない、請求項１に記載の方法。
【請求項７】
前記ブロックチェーン・ネットワークが、複数のトランザクション・モードをサポートし、どのトランザクション・モードが使用されるかは、グローバルに、各ピア上で、前記トランザクション提案自体において、またはそれらの組み合わせで設定される、請求項１に記載の方法。
【請求項８】
前記エンドースメント・ポリシーが、トランザクション結果に同意しなければならないピアの数、どのピアのセットが前記トランザクション結果に同意しなければならないか、またはその両方を決定する、請求項１に記載の方法。
【請求項９】
前記ピアから結果を集めること、および前記ポリシーがいつ満たされるかを判断することを前記クライアントが担当する、トランザクション・フローに類似または同一のセキュリティ保証を提供するために、前記ワンステップ・トランザクション・サブミッション・プロセスのトランザクション・フローがフォールト・トレラントである、請求項１に記載の方法。
【請求項１０】
システムであって、
クライアント・ノードと、
複数のピアと、
少なくとも１つのエンドーサ・ノードと、を備え、
前記クライアント・ノードが、前記複数のピアのうちの１つまたは複数のピアにトランザクション提案を送信するように構成され、
前記複数のピアが、
前記トランザクション提案に関連付けられたトランザクションをシミュレーションし、
エンドースメント・ポリシーが満たされているかどうかを評価し、
前記エンドースメント・ポリシーが満たされている場合に、台帳にコミットされるように前記トランザクションを前記少なくとも１つのオーダラ・ノードに送信するように構成される、システム。
【請求項１１】
前記複数のピアが、ゴシップ・プロトコルを用いて使用される前記トランザクション提案を拡散させるようにさらに構成される、請求項１０に記載のシステム。
【請求項１２】
前記複数のピアが、所与のチェーンコードに関連付けられた全てのエンドーサが最終的には前記シミュレーションの結果を受信するように、他のピアに前記結果を通信するようにさらに構成される、請求項１０に記載のシステム。
【請求項１３】
前記エンドースメント・ポリシーが満たされている場合に前記トランザクションが前記少なくとも１つのオーダラ・ノードに送信されることが、前記少なくとも１つのオーダラ・ノードによってビザンチン挙動をサポートするためにランダムである、請求項１０に記載のシステム。
【請求項１４】
エンドースされる結果が、前記クライアント・ノードに返されない、請求項１０に記載のシステム。
【請求項１５】
前記システムが、複数のトランザクション・モードをサポートし、どのトランザクション・モードが使用されるかは、グローバルに、各ピア上で、前記トランザクション提案自体において、またはそれらの組み合わせで設定される、請求項１０に記載のシステム。
【請求項１６】
前記エンドースメント・ポリシーが、トランザクション結果に同意しなければならないピアの数、どのピアのセットが前記トランザクション結果に同意しなければならないか、またはその両方を決定する、請求項１０に記載のシステム。
【請求項１７】
プログラム命令を記憶している非一過性コンピュータ可読媒体であって、少なくとも１つのプロセッサによって実行されるときに、前記少なくとも１つのプロセッサに、
クライアント・ノードからトランザクション提案を受信させ、
前記トランザクション提案に関連付けられたトランザクションをシミュレーションさせ、
エンドースメント・ポリシーが満たされているかどうかを評価させ、
前記エンドースメント・ポリシーが満たされている場合に、台帳にコミットされるように前記トランザクションを少なくとも１つのオーダラ・ノードに送信させる、
非一過性コンピュータ可読媒体。
【請求項１８】
前記プログラムが、前記少なくとも１つのプロセッサに、ゴシップ・プロトコルを用いて前記トランザクション提案を拡散させるようにさらに構成される、請求項１７に記載の非一過性コンピュータ可読媒体。
【請求項１９】
前記プログラムが、前記少なくとも１つのプロセッサに、所与のチェーンコードに関連付けられた全てのエンドーサが最終的には前記シミュレーションの結果を受信するように、他のピアに前記結果を通信させるようにさらに構成される、請求項１７に記載の非一過性コンピュータ可読媒体。
【請求項２０】
前記エンドースメント・ポリシーが、トランザクション結果に同意しなければならないピアの数、どのピアのセットが前記トランザクション結果に同意しなければならないか、またはその両方を決定する、請求項１７に記載の非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、概してトランザクション管理に関し、より詳細には、ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理に関する。
【背景技術】
【０００２】
ブロックチェーン・ネットワークにおいてトランザクションをサブミットするためのフローは、特に、呼び出されるスマート・コントラクトが、台帳にコミットされる前に満たされなければならない関連ポリシーを有する場合に、クライアントについての複数のステップを含み得る。これは、Ｈｙｐｅｒｌｅｄｇｅｒ（登録商標）  Ｆａｂｒｉｃ  ｖ１における場合であり、その場合、クライアントは、まずトランザクション提案を１つまたは複数のピア（ピアはエンドーシング・ポリシーにおいて指定されている）に送信し、結果を収集し、エンドーシング・ポリシーが満たされているかどうかを判断し、次いで１つまたは複数のオーダラ・ノード（orderer node）にトランザクションをサブミットする必要がある。ブロックチェーン・プラットフォームのためのクライアント・ソフトウェア開発キット（ＳＤＫ）の提供によって、ブロックチェーン・ネットワークと対話するアプリケーション・コードからそれらのタスクが簡略化されるが、通信オーバヘッドおよび処理タスクは回避できない。通信および処理リソースが制限されている場合（例えばモノのインターネット（ＩｏＴ）デバイスに対して）、状況は危機的になる。したがって、それらの欠陥を克服する改善されたトランザクション管理手法が、有益であり得る。
【発明の概要】
【０００３】
本出願のある実施形態は、従来のブロックチェーン・トランザクション管理技術によってまだ完全には識別されていない、認識されていない、または解決されていない、当技術分野の問題および必要性に解決策を提供し得る。例えば、本出願のいくつかの実施形態は、ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理に属する。
【０００４】
１つの例としての実施形態は、ブロックチェーン・ネットワークにおけるワンステップ・トランザクション・サブミッションを提供する方法を含む方法を提供し得る。方法は、クライアント・ノードによって、トランザクション提案を複数のピアのうちの１つまたは複数のピアに送信することと、複数のピアのうちの少なくとも１つのピアによって、トランザクション提案に関連付けられたトランザクションをシミュレーションすることと、エンドーサ・ピアによって、エンドースメント・ポリシーが満たされているかどうかを評価することと、エンドースメント・ポリシーが満たされている場合に、エンドーサ・ピア（endorser peer）によって、台帳にコミットされるようにトランザクションを少なくとも１つのオーダラ・ノードに送信することと、のうちの１つまたは複数を含み得る。
【０００５】
別の例としての実施形態は、クライアント・ノード、複数のピア、および、少なくとも１つのエンドーサ・ノードを含むシステムを提供し得る。クライアント・ノードが、複数のピアのうちの１つまたは複数のピアにトランザクション提案を送信するように構成される。複数のピアは、トランザクション提案に関連付けられたトランザクションをシミュレーションすること、エンドースメント・ポリシーが満たされているかどうかを評価すること、またはエンドースメント・ポリシーが満たされている場合に、台帳にコミットされるようにトランザクションを少なくとも１つのオーダラ・ノードに送信すること、あるいはそれらの組み合わせのうちの１つまたは複数を実行するように構成される。
【０００６】
さらなる例としての実施形態は、少なくとも１つのプロセッサによって実行されるときに、クライアント・ノードからトランザクション提案を受信すること、トランザクション提案に関連付けられたトランザクションをシミュレーションすること、エンドースメント・ポリシーが満たされているかどうかを評価すること、またはエンドースメント・ポリシーが満たされる場合に台帳にコミットされるようにトランザクションを少なくとも１つのオーダラ・ノードに送信すること、あるいはそれらの組み合わせのうちの１つまたは複数をプロセッサに実行させるプログラム命令を記憶している非一過性コンピュータ可読媒体を提供し得る。
【０００７】
発明の実施形態は、ここで単なる例として添付図面を参照して説明される。
【図面の簡単な説明】
【０００８】
【図１】例としての実施形態による、方式を実施するブロックチェーン・ノードのネットワークのネットワーク図を示す。
【図２】例としての実施形態による、アセット共有シナリオのための例としてのピア・ノード・ブロックチェーン・アーキテクチャ構成を示す。
【図３】例としての実施形態による、許可型ブロックチェーン・ネットワークを示す図である。
【図４】ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理を提供する例としての方法のフロー図を示す。
【図５Ａ】例としての実施形態による、本明細書に説明される１つまたは複数の動作に従ってブロックチェーン上の様々な動作を実行するように構成される例としての物理インフラストラクチャを示す。
【図５Ｂ】例としての実施形態による、ブロックチェーン上でスマート・コントラクト条件を施行するように構成される契約当事者と仲介サーバとの間の例としてのスマート・コントラクト構成を示す。
【図６】例としての実施形態のうちの１つまたは複数をサポートするように構成される、例としてのコンピュータ・システムを示す。
【発明を実施するための形態】
【０００９】
インスタントのコンポーネントが、本明細書において概略的に説明され図面に示されるように、多種多様な異なる構成において配列され設計され得ることが容易に理解されるであろう。よって、添付図面において表される、方法、装置、非一過性コンピュータ可読媒体、およびシステムのうちの少なくとも１つの実施形態の以下の詳細な説明は、特許請求される出願の範囲を限定することを意図しておらず、単に選択された実施形態を表している。
【００１０】
本明細書全体を通して説明される、インスタントの特徴、構造、または特性は、１つまたは複数の実施形態において、任意の適当なやり方で結合され得る。例えば、「例としての実施形態」、「いくつかの実施形態」という語句、または他の類似の言葉の使用は、本明細書全体を通して、実施形態に関連して説明される特定の特徴、構造、または特性が少なくとも１つの実施形態に含まれ得るという事実を指す。よって、「例としての実施形態」、「いくつかの実施形態において」、「他の実施形態において」という語句、または他の類似の言葉の出現は、本明細書全体を通して、必ずしも全てが実施形態の同一グループを指しておらず、説明される特徴、構造、または特性が、１つまたは複数の実施形態において任意の適当なやり方で結合され得る。
【００１１】
さらに、「メッセージ」という用語が、実施形態の説明において使用されていることがあるが、出願は、パケット、フレーム、データグラムなどの多くの種類のネットワーク・データに適用され得る。「メッセージ」という用語は、また、パケット、フレーム、データグラム、およびそれらの任意の均等物を含む。さらに、ある種類のメッセージおよびシグナリングが、例示的実施形態に示されることがあるが、それらは、ある種類のメッセージに限定されず、出願は、ある種類のシグナリングに限定されない。
【００１２】
例としての実施形態は、ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理を提供する方法、デバイス、ネットワーク、またはシステム、あるいはそれらの組み合わせを提供する。
【００１３】
ブロックチェーンは、互いに通信する複数のノードを含む分散型システムである。ブロックチェーンは、「チェーンコード」（例えばスマート・コントラクトなど）と呼ばれるプログラムを動作させ、状態および台帳データを保持し、トランザクションを実行する。いくつかのトランザクションは、チェーンコード上で呼び出される動作である。概して、ブロックチェーン・トランザクションは、典型的には、あるブロックチェーン・メンバによって「エンドース（endorse）」されなければならず、エンドースされたトランザクションのみが、ブロックチェーンにコミットされ、ブロックチェーンの状態に対する影響を有し得る。エンドースされない他のトランザクションは、無視される。管理機能およびパラメータについての１つまたは複数の特定のチェーンコードが存在してもよく、まとめて、「システム・チェーンコード」と呼ばれる。
【００１４】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なる種類の複数のノードが同一の物理サーバ上で実行し得るという意味で、論理機能を実行し得る。ノードは、信頼できるドメイン内にグループ化され、様々な方法でそれらを制御する論理エンティティに関連付けられる。ノードは、トランザクション呼び出しをエンドーサ（例えば、ピア）にサブミットし、トランザクション提案を順序付けサービス（例えば、順序付けノード）にブロードキャストするクライアントまたはサブミット・クライアント・ノードなどの異なる種類を含み得る。ノードの別の種類は、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持し得るピア・ノードである。ピア・ノード（またはピア）は、エンドーサの役割も有し得るが、それは必須ではない。順序付けサービス・ノードまたはオーダラ・ノードは、全てのノードについて通信サービスを実行するノードである。オーダラ・ノードは、トランザクションをコミットし、ブロックチェーンのワールドステート（world state）を変更するときに、システム内のピア・ノードのそれぞれに対するブロードキャストなどの、配信保証を実施し、これは、制御およびセットアップ情報を通常含む、初期のブロックチェーン・トランザクションについての別名である。
【００１５】
台帳は、ブロックチェーンの全ての状態遷移の、順番に配列された耐改ざん性のレコードである。状態遷移は、参加している当事者（例えば、クライアント・ノード、順序付けノード、エンドーサ・ノード、ピア・ノードなど）によってサブミットされるチェーンコード呼び出し（即ち、トランザクション）から生じ得る。トランザクションは、生成、更新、削除などの１つまたは複数のオペランドとして台帳にコミットされているアセットキーバリュー・ペアのセットをもたらし得る。台帳は、不変性の、順番に配列されたレコードをブロックに記憶するために使用されるブロックチェーン（チェーンとも呼ばれる）を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。典型的には、チャネル毎に１つの台帳が存在する。各ピア・ノードは、それらがメンバであるチャネル毎に台帳のコピーを維持する。
【００１６】
分散型台帳は、複数のコンピュータに全体的にまたは部分的に複製される台帳である。暗号分散型台帳（ＣＤＬ）は、不可逆性（トランザクションが一旦記録されると元に戻ることができない）、アクセス可能性（いかなる当事者も全体的または部分的にＣＤＬにアクセス可能である）、時系列かつタイムスタンプされている（全ての当事者が、トランザクションがいつ台帳に追加されたかを知っている）、合意ベース（ネットワーク上の当事者により、典型的には満場一致で承認された場合にのみ、トランザクションが追加される）、または検証可能性（全てのトランザクションが暗号により検証され得る）、あるいはそれらの組み合わせである、これらの特性の少なくともいくつかを有し得る。ブロックチェーンは、ＣＤＬの一例である。本明細書における説明および図面は、ブロックチェーンに関して説明されるが、主題の出願は、いかなるＣＤＬにも同様に適用する。
【００１７】
分散型台帳は、他のブロックに関する暗号ハッシュを記憶するなど、暗号技術を典型的に適用するレコードの連続的に成長するリストである。ブロックチェーンは、分散型台帳の１つの一般的な例であり、情報を記憶するための公開台帳として使用され得る。ブロックチェーンは、主に金融トランザクションのために用いられるが、商品およびサービスに関する様々な情報（即ち、製品、パッケージ、状態など）を記憶し得る。非集中型方式は、非集中型ネットワークに権限および信用を与え、そのノードが連続的かつ逐次的にそれらのトランザクションを公開「ブロック」上に記録することを可能にして、ブロックチェーンと呼ばれる一意の「チェーン」を生成する。暗号法が、ハッシュ・コードを介して、トランザクション元の認証を保証するために使用され、中央の仲介者を除去する。ブロックチェーンは、連続的に成長するレコードのリストをブロックチェーンのブロックに維持する分散型データベースであり、ブロックチェーンのブロックは、その不変性特性に起因して改ざんおよび改訂から保護される。各ブロックは、タイムスタンプおよび前のブロックへのリンクを含む。ブロックチェーンは、情報を保持し、追跡し、移転し、検証するために使用され得る。ブロックチェーンは分散型システムであるため、ブロックチェーン台帳にトランザクションを追加する前に、典型的には全てのピアが合意状態に達する必要がある。
【００１８】
チェーンは、ハッシュでリンクされたブロックとして構造化されるトランザクション・ログであり、各ブロックは、Ｎは１以上であるとして、Ｎ個のトランザクションのシーケンスを含む。ブロック・ヘッダは、ブロックのトランザクションのハッシュだけでなく、前のブロックのヘッダのハッシュも含む。このようにして、台帳上の全てのトランザクションが、順番に配列され、暗号によって共にリンクされ得る。したがって、ハッシュ・リンクを壊すことなく台帳データを改ざんすることはできない。最新の追加されたブロックチェーン・ブロックのハッシュは、その前に来たチェーン上のあらゆるトランザクションを表し、全てのピア・ノードが整合性および信頼性のある状態にあることを保証することを可能にしている。チェーンは、ピア・ノードのファイル・システム（即ち、ローカルな、アタッチされたストレージ、クラウドなど）上に記憶されてもよく、ブロックチェーンの作業負荷の追加のみの性質を効率的にサポートする。
【００１９】
不変性台帳の現在の状態は、チェーン・トランザクション・ログに含まれる全てのキーについての最新の値を表す。現在の状態は、チャネルにとって既知の最新のキーバリューを表すため、それは、ワールドステートと呼ばれることがある。チェーンコード呼び出しは、台帳の現在の状態データに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的にするために、キーの最新の値が、状態データベース内に記憶され得る。状態データベースは、単にチェーンのトランザクション・ログ内にインデックスされたビューであってもよく、したがって、それは任意の時にチェーンから再生成され得る。状態データベースは、ピア・ノードが起動した後、およびトランザクションが受諾される前に、自動的に回復され得る（または必要であれば生成され得る）。
【００２０】
トランザクションが台帳にコミットされ、トランザクション結果に基づいて状態が更新されるたびに、そのようなトランザクションが記憶された順序に基づいて更新されるキーについてタイムスタンプが計算される。しかしながら、スマート・コントラクトが、現在のトランザクションにおいて修正されない、より多くのキーを含む場合、修正は、それらのキーに対して行われない。
【００２１】
いくつかの実施形態は、コミットされるトランザクションがポリシーを満たさなければならないブロックチェーン・ネットワークにおいて、ワンステップ・トランザクション・サブミッションを提供するように適合される。ポリシーは、トランザクション結果に同意しなければならないピアの数を決定してもよく、またはピアのどのセットが同意しなければならないかを指定してもよく、あるいはその両方を行ってもよい。いくつかの実施形態のアプローチは、特定のポリシーに非依存であり、トランザクション・サブミッションを処理するために、互いに通信し、固定されたステップのセットに従うようにピアに求めるだけである。このワンステップ手法は、クライアント側において要求される計算リソースが少なく、厳重な接続性要件が少ないので、ＩｏＴアプリケーションに対し有用である。実際に、いくつかの実施形態は、（１）商業／コンシューマ・アプリケーション・ソフトウェア、ミドルウェア、およびオペレーティング・システム、（２）ビジネス・プロセス改善に関連する方法、プロセス、および／もしくはコード、（３）ソーシャル・メディアおよびマーケティング、（４）ハンドヘルドデバイス、（５）健康管理アプリケーション、または（６）スマーター・プラネット（smarter planet）およびＩｏＴ、あるいはそれらの組み合わせを含むがこれらに限定されない、アプリケーションに活用され得る。
【００２２】
いくつかの実施形態では、同一のセキュリティおよびプライバシー保証を保持しつつ、クライアント側を簡略化する代替の方式が採用される。いくつかの実施形態のこの新たな方式では、クライアントは、ネットワークの１つまたは複数のピアにトランザクション要求をサブミットする。ピアは、要求されたピアを保証するために通信プロトコルに従い、他のピアから処理結果を取得し、処理し、得ることが可能である。ポリシーが満たされていることをピアが検出すると、検出したピアは、ネットワーク内でコミット段階を開始し得る。いくつかの実施形態の新たな方式は、クライアント側の簡略化の利点をもたら一方で、エンドーシング・プロセスの通知を受けることができ、ビザンチン挙動（byzantine behavior）を許容するエンドーサが従うプロトコルを提供する。
【００２３】
下位層のネットワークは、いくつかの実施形態において提案されるトランザクション管理方式をサポートするために拡張される必要がある場合がある。所与のトランザクションに同意する必要があるピアは、関連するポリシーがいつ満たされるかを判断するために、互いに通信することが可能であるべきである。ピアから結果を集めることおよびポリシーがいつ満たされるかを判断することをクライアントが担当する、トランザクション・フローに、類似または同一のセキュリティ保証を提供するために、従うプロトコルはフォールト・トレラントであるべきである。ポリシーが満たされたことを１つのそのようなピアが検出すると、検出したピアが、トランザクションが台帳にコミットされるのに必要なステップを開始し得る。
【００２４】
「ゴシップベースの（gossip-based）」プロトコルは、下位層のブロックチェーン・プラットフォームによって既に使用されている可能性がある。この場合、この通信メカニズムが、ピアがクライアントからの着信トランザクション要求を分配するため、およびト、ランザクションを実行したピア間でトランザクション結果を通信するために使用され得る。基本的には、ゴシップ・プロトコルは、固定グループの参加者がいる場合の同意のための手法である。周期的に、各参加者は、ランダムにピアを選択し、状態を交換する。この状態は、全ての欠陥のない参加者が最終的に同一の状態に収束するように調和される。この手法は、参加者の故障およびメッセージ損失に直面してでさえ、Ｎが参加者の数であるとしてＯ（ｌｏｇ  Ｎ）のゴシップの繰り返しで収束して、効率的であることが示され得る。さらに、ゴシップ・プロトコルは、メンバーシップ自体が他の状態情報と共にゴシップが行われる（gossiped）オープンで動的なメンバーシップに適している。
【００２５】
一実施形態におけるインスタントのアプリケーションは、トランザクション管理に関し、別の実施形態では、ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理に関する。
【００２６】
図１は、例としての実施形態による、方式を実施するブロックチェーン・ノードのネットワーク１００（例えば、Ｈｙｐｅｒｌｅｄｇｅｒ（登録商標）  Ｆａｂｒｉｃ  ｖ１ネットワーク）のネットワーク図を示す。ブロックチェーン・ネットワークの典型であるように、ネットワーク１００は、クライアント・ノード１１０と、複数のエンドーサ・ピア・ノードＥＰ１  １２０、ＥＰ２  １２２、ＥＰ３  １２４、およびＥＰ４  １２６と、オーダラ・ノードＯＮ１  １３０およびＯＮ２  １３２と、を含む。本実施形態におけるトランザクション・プロセスに関与するノードは、灰色で示されており（即ち、クライアント・ノード１１０、ＥＰ１  １２０、ＥＰ２  １２２、ＥＰ３  １２４、およびＯＮ１  １３０）、関与しないノードは、白で示されている（即ち、ＥＰ４  １２６およびＯＮ２  １３２）。
【００２７】
クライアント・ノード１１０は、まず１つまたは複数のピアに（ここでは、ＥＰ２  １２２だけに）トランザクション提案を送信する。ピアＥＰ１  １２０、ＥＰ２  １２２、ＥＰ３  １２４、およびＥＰ４  １２６は、下位層のプロトコル（例えば、ゴシップ・プロトコル）を用いてトランザクション提案を拡散させる。複雑性を低下させるため、ここでは、ＥＰ２  １２２についての拡散の矢印およびシミュレーション結果の矢印のみが示されている。エンドーサ・ピアは、トランザクションをシミュレーションし、所与のチェーンコードに関連付けられた全てのエンドーサが最終的にはシミュレーション結果を受信するように、結果を通信する。エンドーサ・ピアは、エンドースメント・ポリシーが満たされているかどうかを評価する。ここで、ノードＥＰ１  １２０、ＥＰ２  １２２、およびＥＰ３  １２４は、トランザクション結果に同意しなければならない。ＥＰ１  １２０は、エンドースメント・ポリシーが満たされている（即ち、ノードＥＰ１  １２０、ＥＰ２  １２２、およびＥＰ３  １２４が同意している）と判断し、１つまたは複数のオーダラ・ノード（本実施形態では、ＯＮ１  １３０のみ）にトランザクションを送信する。選択は、オーダラによってビザンチン挙動をサポートするためにランダムであってもよい。トランザクションが、順序付けのために送信された（即ち、１つまたは複数のオーダラ・ノードに送信された）後、トランザクションは、ブロック内に含まれ、次いで、トランザクションをシミュレーションしたノードおよび台帳のコピーを維持するだけであるノードにネットワーク１３４上で拡散される。図１に示されるノードのいずれか、および図示されないおそらく追加のノードは、出願の範囲から逸脱することなくネットワーク１３４に含まれ得る。
【００２８】
いくつかの実施形態の新たな方式において、クライアントは、トランザクションを１つまたは複数のピアに送信し、各エンドーサは、通常通りトランザクションをシミュレーションする。しかしながら、エンドーシング結果をクライアントに返す代わりに、エンドーサは、互いに通信して必要なエンドーシング署名を収集する。達成すると、エンドーサは、エンドースされたトランザクションを１つまたは複数のオーダラに送信する。
【００２９】
エンドーシング・プロセスに関与するエンドーサは、エンドーシング・ポリシーによって決定される。ブロックチェーン・プラットフォームは、元のトランザクション管理モードおよびいくつかの実施形態の新たなトランザクション管理モードの両方をやはりサポートし得る。いくつかの実施形態において、各トランザクションにどのメカニズムが使用されるかは、グローバルに、各ピア上で、またはトランザクション提案自体の上でさえ、設定され得る。
【００３０】
図２は、例としての実施形態による、ブロックチェーン・アーキテクチャ構成２００を示す。ブロックチェーン・アーキテクチャ２００は、あるブロックチェーン要素、例えばブロックチェーン・ノードのグループ２０２を含み得る。ブロックチェーン・ノード２０２は、１つまたは複数のノード２０４〜２１０を含み得る（４つのノードは、単なる例によりここに示されている）。これらのノードは、ブロックチェーン・トランザクション追加および確認プロセス（合意）などのいくつかのアクティビティに参加する。ブロックチェーン・ノード２０４〜２１０のうちの１つまたは複数は、トランザクションをエンドースしてもよく、アーキテクチャ２００内の全てのブロックチェーン・ノードに順序付けサービスを提供し得る。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層２１６に記憶されるブロックチェーンの不変性の台帳に書き込みしようとしてもよく、そのコピーもまた、支持物理インフラストラクチャ２１４上に記憶され得る。ブロックチェーン構成は、アプリケーション２２４を含んでもよく、アプリケーション２２４は、記憶されたプログラム／アプリケーション・コード２２０（例えば、チェーンコード、スマート・コントラクトなど）にアクセスし実行するために、アプリケーション・プログラミング・インターフェース（ＡＰＩ）２２２にリンクされ、参加者によって求められるカスタマイズされた構成に従って生成されてもよく、それ自体の状態を維持し、それ自体のアセットを制御し、外部情報を受信してもよい。これは、トランザクションとして展開され、分散型台帳に付加することによって、全てのブロックチェーン・ノード２０４〜２１０上にインストールされ得る。
【００３１】
ブロックチェーン・ベースまたはプラットフォーム２１２は、ブロックチェーン・データ、サービス（例えば、暗号による信用サービス、仮想実行環境など）、ならびに新たなトランザクションを受信および記憶し、データ・エントリにアクセスしようとしている監査役へのアクセスを提供するために使用され得る支持物理コンピュータ・インフラストラクチャの種々の層を含み得る。ブロックチェーン層２１６は、プログラム・コードを処理し物理インフラストラクチャ２１４に関与するのに必要な仮想実行環境へのアクセスを提供するインターフェースを公開し得る。暗号による信用サービス２１８は、アセット交換トランザクションなどのトランザクションを検証し、情報を秘密のままにするために使用され得る。
【００３２】
図２のブロックチェーン・アーキテクチャ構成は、公開された１つまたは複数のインターフェースおよび提供されるサービスを介して、ブロックチェーン・プラットフォーム２１２によってプログラム／アプリケーション・コード２２０を処理および実行し得る。コード２２０は、ブロックチェーンアセットを制御し得る。例えば、コード２２０は、データを記憶および移転してもよく、スマート・コントラクトの形態でノード２０４〜２１０によって実行されてもよく、その実行の影響を受ける条件または他のコード要素とチェーンコードを関連付けられてもよい。非限定的な例として、スマート・コントラクトは、リマインダ、更新、または変更、更新などの対象となる他の通知、あるいはそれらの組み合わせを実行するために生成され得る。スマート・コントラクト自体は、認可およびアクセス要件、ならびに台帳の使用に関するルールを識別するために使用され得る。例えば、コミットされるトランザクションがポリシーを満たさなければならなかったブロックチェーン・ネットワークにおいて、ワンステップ・トランザクション・サブミッションを提供することに関係する情報２２６は、ブロックチェーン層２１６に含まれる１つまたは複数の処理エンティティ（例えば、仮想機械）によって処理され得る。結果２２８は、トランザクション結果に同意するピアの数を示す情報を含み得る。物理インフラストラクチャ２１４は、本明細書で説明されるデータまたは情報のいずれかを取得するために利用され得る。
【００３３】
チェーンコード内で、スマート・コントラクトは、高レベル・アプリケーションおよびプログラミング言語を介して生成されてもよく、次いでブロックチェーン内のブロックに書き込まれてもよい。スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーン・ピアの分散型ネットワーク）を用いて登録される、記憶される、または複製される、あるいはそれらの組み合わせである実行可能コードを含み得る。トランザクションは、スマート・コントラクトに関連付けられた条件が満たされていることに応答して実行され得るスマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼性のある修正をトリガし得る。スマート・コントラクト実行により生じるブロックチェーン台帳への修正は、１つまたは複数の合意プロトコルを通してブロックチェーン・ピアの分散型ネットワーク全体で自動的に複製され得る。
【００３４】
スマート・コントラクトは、キーバリュー・ペアのフォーマットでブロックチェーンにデータを書き込み得る。さらに、スマート・コントラクト・コードは、ブロックチェーンに記憶された値を読み出し、アプリケーション動作においてそれらを使用し得る。スマート・コントラクト・コードは、様々な論理演算の出力をブロックチェーン内に書き込み得る。コードは、仮想機械または他のコンピューティング・プラットフォームにおいて一時データ構造を生成するために使用され得る。ブロックチェーンに書き込まれたデータは、公開されてもよく、または暗号化され、秘密として維持されてもよく、あるいはその両方であってもよい。スマート・コントラクトによって使用され／生成される一時データは、供給される実行環境によってメモリ内に保持され、次いでブロックチェーンに必要なデータが識別された時点で削除される。
【００３５】
チェーンコードは、追加の特徴と共に、スマート・コントラクトのコード解釈を含み得る。本明細書で説明されるように、チェーンコードは、コンピューティング・ネットワーク上に展開されるプログラム・コードであってもよく、そこで、チェーンコードは、合意プロセス中にチェーン・バリデータ（chain validator）によって共に実行され確認される。チェーンコードは、ハッシュを受信し、以前記憶された特徴抽出器の使用により生成されるデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取得する。ハッシュ識別子のハッシュと記憶された識別子テンプレート・データから生成されるハッシュとが合致する場合、チェーンコードは、認可キーを要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたブロックチェーン・データに書き込み得る。
【００３６】
図３は、許可型ブロックチェーン・ネットワーク３００の例を示し、許可型ブロックチェーン・ネットワーク３００は、分散型で、非集中型ピア・ツー・ピア・アーキテクチャ、ならびにユーザの役割および許可を管理する認証局３１８を特徴とする。この例では、ブロックチェーン・ユーザ３０２は、許可型ブロックチェーン・ネットワーク３１０にトランザクションをサブミットし得る。この例では、トランザクションは、展開、呼び出し、または照会であってもよく、ＳＤＫを活用するクライアント側アプリケーションを通して、直接ＲＥＳＴ  ＡＰＩを通してなどで、発行されてもよい。信頼性のあるビジネス・ネットワークは、監査役（例えば、米国株式市場における証券取引委員会）などの規制者システム３１４へのアクセスを提供し得る。一方、ノード３０８のブロックチェーン・ネットワーク事業者システムは、規制者システム３１４を「監査役」として、ブロックチェーン・ユーザ３０２を「クライアント」として登録するなど、メンバ許可を管理する。監査役は、台帳を照会することのみに制限されてもよく、対してクライアントは、ある種類のチェーンコードを展開し、呼び出し、照会するように認可されてもよい。
【００３７】
ブロックチェーン開発者システム３１６は、チェーンコードおよびクライアント側アプリケーションを書き込む。ブロックチェーン開発者システム３１６は、ＲＥＳＴインターフェースを通してネットワークに直接チェーンコードを展開し得る。従来のデータ・ソース３３０からの信用証明書をチェーンコードに含めるために、開発者システム３１６は、アウトオブバンド接続を使用してデータにアクセスし得る。この例では、ブロックチェーン・ユーザ３０２は、ピア・ノード３１２を通してネットワークに接続する。任意のトランザクションを続行する前に、ピア・ノード３１２は、認証局３１８からユーザの役割およびトランザクション証明書を取得する。いくつかの場合において、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク３１０上で取引するために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを駆動しようとするユーザは、従来のデータ・ソース３３０上で彼らの信用証明書を検証することを必要とされ得る。ユーザの認可を確かめるために、チェーンコードは、従来の処理プラットフォーム３２０を通してこのデータへのアウトオブバンド接続を使用し得る。
【００３８】
図４は、ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理を提供する例としての方法のフロー図４００を示す。クライアント・ノードは、４１０において１つまたは複数のピアにトランザクション提案を送信する。トランザクション提案は、次いで４２０において、下位層のプロトコル（例えば、ゴシップ・プロトコル）を用いて、ピアにより拡散される。４３０において、ピアのうちの少なくともいくつかが、トランザクション提案に関連付けられたトランザクションをシミュレーションし、４４０において、所与のチェーンコードに関連付けられた全てのエンドーサが最終的にはシミュレーションの結果を受信するように、他のピアに結果を通信する。エンドーサ・ピアは、次いで４５０において、エンドースメント・ポリシーが満たされているかどうかを評価する。エンドースメント・ポリシーが満たされている場合、エンドーサ・ピアは、４６０において台帳にコミットされるようにトランザクションを少なくとも１つのオーダラ・ノードに送信する。オーダラ・ノードのうちの１つまたは複数は、次いで４７０において、台帳にトランザクションをコミットする。このワンステップ・プロセスと従来のプロセスとの間の差は、エンドーシング結果がクライアント・ノードに送信されないということである。
【００３９】
いくつかの実施形態において、トランザクションは、オーダラ・ノードによりビザンチン挙動をサポートするために、ランダムにオーダラ・ノードに送信される。ある実施形態では、ブロックチェーン・ネットワークが、複数のトランザクション・モードをサポートし、どのトランザクション・モードが使用されるかは、グローバルに、各ピア上で、トランザクション提案自体において、またはそれらの組み合わせで設定される。いくつかの実施形態では、エンドースメント・ポリシーが、トランザクション結果に同意しなければならないピアの数、どのピアのセットがトランザクション結果に同意しなければならないか、またはその両方を決定する。ある実施形態では、ピアから結果を集めること、およびポリシーがいつ満たされるかを判断することをクライアントが担当するトランザクション・フローに類似または同一のセキュリティ保証を提供するために、ワンステップ・トランザクション・サブミッション・プロセスのトランザクション・フローはフォールト・トレラントである。
【００４０】
図５Ａは、例としての実施形態による動作の例としての方法のうちの１つまたは複数に従って、ブロックチェーン上の様々な動作を実行するように構成される例としての物理インフラストラクチャを示す。図５Ａを参照すると、例としての構成５００は、ブロックチェーン５２０およびスマート・コントラクト５４０を有する物理インフラストラクチャ５１０を含み、それは、例としての実施形態のうちのいずれかに含まれる動作ステップ５１２のいずれかを実行し得る。ステップ／動作５１２は、１つまたは複数のフロー図またはロジック図あるいはその両方において説明され、または示されるステップのうちの１つまたは複数を含み得る。ステップは、コンピュータ・システム構成の物理インフラストラクチャ５１０上に存在する、１つまたは複数のスマート・コントラクト５４０またはブロックチェーン５２０、あるいはその両方に書き込まれ、または読み出される出力または書き込み情報を表し得る。データは、実行されたスマート・コントラクト５４０またはブロックチェーン５２０、あるいはその両方から出力され得る。物理インフラストラクチャ５１０は、１つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはそれらの組み合わせを含み得る。
【００４１】
図５Ｂは、例としての実施形態による、ブロックチェーン上のスマート・コントラクト条件を施行するように構成される契約当事者と仲介サーバとの間の例としてのスマート・コントラクト構成を示す。図５Ｂを参照すると、構成５５０は、１つまたは複数のユーザ・デバイス５５２または５５６あるいはその両方を明示的に識別するスマート・コントラクト５４０によって駆動される、通信セッション、アセット移転セッション、またはプロセスもしくは手続きを表し得る。実行、動作、およびスマート・コントラクト実行の結果が、サーバ５５４によって管理され得る。スマート・コントラクト５４０の内容は、スマート・コントラクト・トランザクションに対する当事者であるエンティティ５５２および５５６のうちの１つまたは複数によるデジタル署名を必要とし得る。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込まれ得る。
【００４２】
上記実施形態は、ハードウェアにおいて、プロセッサにより実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、または上記の組み合わせにおいて実施され得る。コンピュータ・プログラムは、記憶媒体などのコンピュータ可読媒体上で具現化され得る。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（「ＲＡＭ」）、フラッシュ・メモリ、読み出し専用メモリ（「ＲＯＭ」）、消去可能プログラマブル読み出し専用メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブル読み出し専用メモリ（「ＥＥＰＲＯＭ」）、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク読み出し専用メモリ（「ＣＤ−ＲＯＭ」）、または当技術分野において既知の任意の他の形態の記憶媒体に存在してもよい。
【００４３】
プロセッサが記憶媒体から情報を読み出し、かつ情報を書き込み得るように、例示的記憶媒体は、プロセッサに連結され得る。代替的には、記憶媒体が、プロセッサと一体であってもよい。プロセッサおよび記憶媒体は、特定用途向け集積回路（「ＡＳＩＣ」）に存在してもよい。代替的には、プロセッサおよび記憶媒体は、個別のコンポーネントとして存在してもよい。例えば、図６は、例としてのコンピュータ・システム・アーキテクチャ６００を示し、それは、上述したコンポーネントのうちのいずれかを表してもよく、または上述したコンポーネントのうちのいずれかにおいて一体化されてもよい、などである。
【００４４】
図６は、本明細書で説明されるアプリケーションの実施形態の使用または機能性の範囲に関するいかなる限定も示唆することを意図しない。それにかかわらず、コンピューティング・ノード６００は、実施されること、または上述した機能性のいずれかを実行すること、あるいはその両方が可能である。
【００４５】
コンピューティング・ノード６００には、コンピュータ・システム／サーバ６０２が存在し、コンピュータ・システム／サーバ６０２は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム／サーバ６０２を用いた使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組み合わせの例は、ＩｏＴデバイス、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００４６】
コンピュータ・システム／サーバ６０２は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的状況において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム／サーバ６０２は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
【００４７】
図６に示されるように、クラウド・コンピューティング・ノード６００内のコンピュータ・システム／サーバ６０２は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム／サーバ６０２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット６０４、システム・メモリ６０６、およびシステム・メモリ６０６を含む様々なシステム・コンポーネントをプロセッサ６０４に連結するバスを含み得るが、これらに限定されない。
【００４８】
バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの１つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）・バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）・バスを含む。
【００４９】
コンピュータ・システム／サーバ６０２は、典型的には多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ６０２によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。一実施形態において、システム・メモリ６０６は、他の図面のフロー図を実施する。システム・メモリ６０６は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ（ＲＡＭ）６１０またはキャッシュ・メモリ６１２あるいはその両方などの揮発性メモリの形態で含み得る。コンピュータ・システム／サーバ６０２は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、記憶システム６１４は、非リムーバブル不揮発性磁気媒体（図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる）から読み出し、かつ書き込むために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク（例えば、「フロッピー（登録商標）・ディスク」）からの読み出しおよび書き込みのための磁気ディスク・ドライブ、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読み出しまたは書き込みのための光学ディスク・ドライブが、提供され得る。このような場合、それぞれが、１つまたは複数のデータ媒体インターフェースによってバスに接続され得る。以下でさらに示され、説明されるように、メモリ６０６は、出願の様々な実施形態の機能を実行するように構成されるプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含み得る。
【００５０】
プログラム・モジュール６１８のセット（少なくとも１つ）を有するプログラム／ユーティリティ６１６は、限定ではなく例として、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ６０６に記憶され得る。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施を含み得る。プログラム・モジュール６１８は、概して、本明細書に説明されるような、出願の様々な実施形態の機能または方法論あるいはその両方を実行する。
【００５１】
当業者に理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本出願の態様は、完全なハードウェア実施形態、完全なソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本明細書で「回路」、「モジュール」、もしくは「システム」と全て概して呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせた実施形態の形態を取ってもよい。さらに、本出願の態様は、その上で具現化されるコンピュータ可読プログラム・コードを有する、１つまたは複数のコンピュータ可読媒体において具現化されるコンピュータ・プログラム製品の形態を取ってもよい。
【００５２】
コンピュータ・システム／サーバ６０２は、また、キーボード、ポインティング・デバイス、ディスプレイ６２２などの１つもしくは複数の外部デバイス６２０、ユーザがコンピュータ・システム／サーバ６０２と対話することを可能にする１つもしくは複数のデバイス、またはコンピュータ・システム／サーバ６０２が１つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはそれらの組み合わせと通信し得る。このような通信は、Ｉ／Ｏインターフェース６２４を介して発生し得る。さらに、コンピュータ・システム／サーバ６０２は、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用ワイド・エリア・ネットワーク（ＷＡＮ）、または公衆ネットワーク（例えば、インターネット）、あるいはそれらの組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ６２６を介して通信し得る。図示されるように、ネットワーク・アダプタ６２６は、バスを介してコンピュータ・システム／サーバ６０２の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム／サーバ６０２と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
【００５３】
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも１つの例としての実施形態は、添付図面に示され、前述の詳細な説明に記載されているが、出願は、開示される実施形態に限定されず、以下の特許請求の範囲によって明記され定義されるように、多数の再配列、修正、および代用が可能であると、理解されたい。例えば、様々な図面のシステムの能力は、本明細書に説明されるモジュールもしくはコンポーネントのうちの１つもしくは複数によって、または分散型アーキテクチャにおいて実行されてもよく、送信機、受信機、またはその両方の対を含んでもよい。例えば、個々のモジュールによって実行される機能性の全てまたは一部が、これらのモジュールのうちの１つまたは複数によって実行され得る。さらに、本明細書に説明される機能性は、様々な時に、かつ様々なイベントに関連して、モジュールまたはコンポーネントの内部または外部で実行され得る。また、様々なモジュール間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの１つもしくは複数を介して、または複数のプロトコルを介して、あるいはその両方を介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接、または他のモジュールの１つもしくは複数を介して、あるいはその両方で、送信または受信され得る。
【００５４】
「システム」は、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末（ＰＤＡ）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意の他の適当なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化され得ると、当業者は理解するであろう。「システム」によって実行される上述の機能を提示することは、いかなる方法でも本出願の範囲を限定することを意図しておらず、多くの実施形態のうちの一例を提供することを意図している。実際に、本明細書において開示された方法、システム、および装置は、コンピューティング技術と一貫した局所型および分散型形態で実施され得る。
【００５５】
本明細書において説明されたシステム特徴のうちのいくつかが、より詳細にはそれらの実施の独立性を強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタム超大規模集積（ＶＬＳＩ）回路またはゲート・アレイ、論理チップなどのオフザシェルフ半導体、トランジスタ、または他の個別のコンポーネントを含むハードウェア回路として実施され得る。モジュールは、また、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル論理デバイス、グラフィック処理ユニットなどのプログラマブル・ハードウェア・デバイスにおいて実施され得る。
【００５６】
モジュールは、また、様々な種類のプロセッサによる実行のためにソフトウェアにおいて少なくとも部分的に実施され得る。例えば、実行可能コードの識別されるユニットは、例えば、オブジェクト、手続き、または関数として編成され得るコンピュータ命令の１つまたは複数の物理または論理ブロックを含み得る。それにもかかわらず、識別されるモジュールの実行可能ファイルは、物理的に共に位置されなくともよいが、論理的に接合されるときに、モジュールを含み、モジュールについての述べられた目的を達成する、異なる位置に記憶された別個の命令を含んでもよい。さらに、モジュールは、コンピュータ可読媒体上に記憶されてもよく、コンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータを記憶するために使用される任意の他のそのような媒体であってもよい。
【００５７】
実際に、実行可能コードのモジュールは、単一の命令または多数の命令であってもよく、複数の異なるコード・セグメントにわたって、異なるプログラムの間に、かつ複数のメモリ・デバイスにわたって分散されてもよい。同様に、動作データはモジュール内において本明細書に識別され、例示されてもよく、任意の適当な形態で具現化され、任意の適当な種類のデータ構造内に編成されてもよい。動作データは、単一のデータ・セットとして収集されてもよく、または異なる記憶デバイス上を含む異なる位置にわたって分散されてもよく、かつ単にシステムまたはネットワーク上の電子信号として少なくとも部分的に存在してもよい。
【００５８】
出願のコンポーネントは、本明細書において概して説明され図面に示されるように、多種多様な異なる構成において配列され設計され得ると、容易に理解されるであろう。したがって、実施形態の詳細な説明は、特許請求される出願の範囲を限定することを意図しておらず、単に出願の選択された実施形態を表している。
【００５９】
上記は、異なる順序のステップで実施されてもよく、または開示されたものとは異なる構成のハードウェア要素で実施されてもよく、あるいはその両方であってもよいと、当業者は容易に理解するであろう。したがって、出願は、これらの好適な実施形態に基づいて説明されているが、ある修正、変形、および代替的な構造が明らかであることが、当業者には明らかであろう。
【００６０】
本出願の好適な実施形態が説明されているが、説明された実施形態が単なる例示であり、出願の範囲は、均等物およびそれに対する修正（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど）の全範囲と共に考慮されるときに、添付の特許請求の範囲のみによって定義されるものと理解されるべきである。
【図１】
2021525016.tif 000003
【図２】
2021525016.tif 000004
【図３】
2021525016.tif 000005
【図４】
2021525016.tif 000006
【図５Ａ】
2021525016.tif 000007
【図５Ｂ】
2021525016.tif 000008
【図６】
2021525016.tif 000009
【国際調査報告】
2021525016.tif 000010
2021525016.tif 000011
2021525016.tif 000012