(57)【要約】  一例としての動作は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別することと、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信することと、１つまたは複数のピアからエンドースメント応答メッセージを受信することであって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信することと、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送することと、のうちの１つまたは複数を含み得る。
2021524963.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンにおける優先順位付けのための方法であって、
ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別することと、
前記ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信することと、
前記１つまたは複数のピアからエンドースメント応答メッセージを受信することであって、前記エンドースメント応答メッセージが、前記ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、前記受信することと、
受信した前記複数の優先度および前記ブロックチェーン・トランザクションを前記ピアに対する割当てのために順序付けノードに転送することと、
を含む方法。
【請求項２】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、前記複数の優先度のうちの他の少なくとも１つとは異なる少なくとも１つの優先度を含む、請求項１に記載の方法。
【請求項３】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、全て同一の優先度である、請求項１に記載の方法。
【請求項４】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度を判断するために使用される基準が、チェーンコード識別子（ＩＤ）、呼び出される関数、トランザクション・タイプ、およびブロックチェーン・トランザクションの現在の負荷のうちの１つまたは複数を含む、請求項１ないし３のいずれかに記載の方法。
【請求項５】
受信した前記複数の優先度に基づいて、前記順序付けノードにおいて前記ブロックチェーン・トランザクションの最終的な順序付け優先度を判断することと、
前記ブロックチェーン・トランザクションを複数の優先度キューのうちの１つに割り当てることと、
をさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
１つまたは複数のトランザクション矛盾が識別されるときに、他のブロックチェーン・トランザクションより高い優先度を割り当てられた複数のブロックチェーン・トランザクションを前記複数の優先度キューから選択することと、
ブロックチェーン・ブロックを形成するために、前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションを確認することと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションが、エンドースメント・ポリシーに基づいて確認される、請求項６に記載の方法。
【請求項８】
ブロックチェーンにおける優先順位付けのための装置であって、
ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別するように構成されるプロセッサと、
前記ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信するように構成される送信器と、
前記１つまたは複数のピアからエンドースメント応答メッセージを受信するように構成される受信器であって、前記エンドースメント応答メッセージが、前記ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、前記受信器と、を備え、
前記送信器が、受信した前記複数の優先度および前記ブロックチェーン・トランザクションを前記ピアに対する割当てのために順序付けノードに転送するようにさらに構成される、装置。
【請求項９】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、前記複数の優先度のうちの他の少なくとも１つとは異なる少なくとも１つの優先度を含む、請求項８に記載の装置。
【請求項１０】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、全て同一の優先度である、請求項８に記載の装置。
【請求項１１】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度を判断するために使用される基準が、チェーンコード識別子（ＩＤ）、呼び出される関数、トランザクション・タイプ、およびブロックチェーン・トランザクションの現在の負荷のうちの１つまたは複数を含む、請求項８ないし１０のいずれかに記載の装置。
【請求項１２】
前記プロセッサが、
受信した前記複数の優先度に基づいて、前記順序付けノードにおいて前記ブロックチェーン・トランザクションの最終的な順序付け優先度を判断し、
前記ブロックチェーン・トランザクションを複数の優先度キューのうちの１つに割り当てるようにさらに構成される、請求項８ないし１１のいずれかに記載の装置。
【請求項１３】
前記プロセッサが、
１つまたは複数のトランザクション矛盾が識別されるときに、他のブロックチェーン・トランザクションより高い優先度を割り当てられた複数のブロックチェーン・トランザクションを前記複数の優先度キューから選択し、
ブロックチェーン・ブロックを形成するために、前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションを確認するようにさらに構成される、請求項１２に記載の装置。
【請求項１４】
前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションが、エンドースメント・ポリシーに基づいて確認される、請求項１３に記載の装置。
【請求項１５】
ブロックチェーンにおける優先順位付けのためのコンピュータ・プログラム製品であって、
処理回路によって読出し可能であり、請求項１ないし７のいずれかに記載の方法を実行するための前記処理回路による実行用命令を記憶する、コンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
【請求項１６】
コンピュータ可読媒体上に記憶され、デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるときに、請求項１ないし７のいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、概して、許可型ブロックチェーンに関し、より詳細には、許可型ブロックチェーンにおける優先順位付けに関する。
【背景技術】
【０００２】
ブロックチェーンは、情報を記憶するための公開台帳として使用され得る。ブロックチェーンは、主に金融トランザクションのために用いられるが、商品およびサービス（即ち、製品、パッケージ、状態など）に関する様々な情報を記憶し得る。非集中型方式は、非集中型ネットワークに権限および信用を与え、そのノードが連続的かつ逐次的にそれらのトランザクションを公開「ブロック」上に記録することを可能にし、ブロックチェーンと呼ばれる一意の「チェーン」を生成する。ハッシュ・コードを介した暗号法が、トランザクション元の認証を保証するために使用され、中央の仲介者を除去する。ブロックチェーンは、連続的に成長するレコードのリストをブロックチェーンのブロックに維持する分散型データベースであり、ブロックチェーンのブロックは、それらの不変性特性に起因して改ざんおよび改訂から保護される。各ブロックは、タイムスタンプおよび前のブロックへのリンクを含む。ブロックチェーンは、情報を保持し、追跡し、移転し、および検証するために使用され得る。ブロックチェーンは分散型システムであるため、ブロックチェーン台帳にトランザクションを追加する前に、全てのピアが、合意状態に達する必要がある。
【０００３】
従来、「処理対象の要求」および「記憶対象のデータ」全てが対等の重要性を有するわけではないとき、優先順位付けは、多くの種類のネットワークにおいて使用されている。優先度は、非集中型方式で判断され、および施行される必要がある。既存技術を直接適用することは、ブロックチェーン・ネットワークを集中制御型のシステムに退化させ得る。許可型ブロックチェーン・ネットワークは、トランザクション実行、合意、台帳確認、およびコミットメント段階などの複数の相互作用する異種プロセス／コンポーネントを有する複雑な分散型システムである。１つのコンポーネントにおいて優先度を施行することは、差別化サービスとはならないことがあるため、施行努力は、トランザクションの処理の複数段階において優先度を施行する必要がある。現在、ブロックチェーン・トランザクションに関する全ての要求が、対等の重要性で、より具体的には固定の順序で順番に処理されている。しかしながら、ブロックチェーン内のトランザクションを高速で追跡すること、または減速することが有益であるシナリオが存在する。重要なトランザクションは、通常のトランザクションよりも優先を必要とし得る（例えば、金融、健康管理など）。システム・トランザクションは、クライアント・トランザクションよりも優先を必要とし得る。システムの状態を変更する書込みトランザクションは、照会（読出し）トランザクションよりも優先を必要とし得る。
【０００４】
自由参加型（permissionless）ブロックチェーン・システムは、トランザクション手数料／暗号通貨を用いた優先順位付けを達成するための自然な手法を有する。例えば、トランザクションに対して支払う手数料が高いほど、そのトランザクションをブロックに追加するためにより大きなインセンティブをブロックチェーン・マイナーが有することを可能にし、そのトランザクションは、他のトランザクションより高速に実行される。より高い報酬が与えられるトランザクションについてそれが見落とされるとき、トランザクションは、無期限に延期され得る。この手法は、一度サブミットされたトランザクション実行を保証しようとする許可型ブロックチェーン・ネットワークにおいては実用的ではない。
【０００５】
したがって、当技術分野において前述した問題に対処する必要がある。
【発明の概要】
【０００６】
第１の態様から見ると、本発明は、ブロックチェーンにおける優先順位付けの方法を提供し、この方法は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別することと、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信することと、１つまたは複数のピアからエンドースメント応答メッセージを受信することであって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信することと、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送することと、を含む。
【０００７】
さらなる一態様から見ると、本発明は、ブロックチェーンにおける優先順位付けのための装置を提供し、この装置は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別するように構成されるプロセッサと、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信するように構成される送信器と、１つまたは複数のピアからエンドースメント応答メッセージを受信するように構成される受信器であって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信器と、を含み、この送信器は、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送するようにさらに構成される。
【０００８】
さらなる一態様から見ると、本発明は、ブロックチェーンにおける優先順位付けのためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、処理回路によって読出し可能であり、本発明のステップを実行する方法を実行するための処理回路による実行用命令を記憶する、コンピュータ可読記憶媒体を含む。
【０００９】
さらなる一態様から見ると、本発明は、コンピュータ可読媒体上に記憶され、デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムであって、上記プログラムがコンピュータ上で実行されるときに、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【００１０】
１つの例としての実施形態は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別することと、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信することと、１つまたは複数のピアからエンドースメント応答メッセージを受信することであって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信することと、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送することと、のうちの１つまたは複数を含む方法を提供し得る。
【００１１】
別の例としての実施形態は、ピア・エンドースメントを要求するブロックチェーン・トランザクションの識別の１つまたは複数を実行するように構成されるプロセッサと、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信するように構成される送信器と、１つまたは複数のピアからエンドースメント応答メッセージを受信するように構成される受信器であって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信器と、を含み、この送信器が、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送するようにさらに構成される、装置を含み得る。
【００１２】
別の例としての実施形態は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別することと、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信することと、１つまたは複数のピアからエンドースメント応答メッセージを受信することであって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信することと、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送することと、のうちの１つまたは複数を、実行時にプロセッサに実行させる命令を記憶するように構成される非一過性コンピュータ可読記憶媒体を含み得る。
【００１３】
本発明の実施形態は、これから単なる例として添付図面を参照して説明される。
【図面の簡単な説明】
【００１４】
【図１Ａ】例としての実施形態による、ブロックチェーン・トランザクション優先度割当ての論理ネットワーク図を示す。
【図１Ｂ】例としての実施形態による、ブロックチェーン・トランザクション優先度割当ての間に実行される動作のセットのシステム構成図を示す。
【図２Ａ】例としての実施形態による、トランザクション優先度割当てシナリオのための一例としてのピア・ノード・ブロックチェーン・アーキテクチャ構成を示す。
【図２Ｂ】例としての実施形態による、一例としてのピア・ノード・ブロックチェーン構成を示す。
【図３】例としての実施形態による、許可型ブロックチェーン・ネットワークを示す図である。
【図４】例としての実施形態による、トランザクション優先度割当てを実行するためのシステム・メッセージング図を示す。
【図５Ａ】例としての実施形態による、ブロックチェーンにおけるブロックチェーン・トランザクション優先度割当ての一例としての方法のフロー図を示す。
【図５Ｂ】例としての実施形態による、ブロックチェーンにおけるブロックチェーン・トランザクション優先度割当ての別の例としての方法のフロー図を示す。
【図６Ａ】例としての実施形態による、本明細書に説明される１つまたは複数の動作に従ってブロックチェーン上の様々な動作を実行するように構成される一例としての物理インフラストラクチャを示す。
【図６Ｂ】例としての実施形態による、ブロックチェーン上のスマート・コントラクト条件を施行するように構成される契約当事者と仲介サーバとの間の一例としてのスマート・コントラクト構成を示す。
【図７】例としての実施形態のうちの１つまたは複数をサポートするように構成される、一例としてのコンピュータ・システムを示す。
【発明を実施するための形態】
【００１５】
インスタント・コンポーネントは、本明細書において概して説明され図面に示されるように、多種多様な異なる構成において配列され設計され得ると、容易に理解される。よって、関連する図面および説明に表される、方法、装置、非一過性コンピュータ可読媒体、およびシステムの実施形態の詳細な説明は、本出願の範囲を限定することを意図しておらず、単に選択された実施形態を表している。
【００１６】
本明細書全体を通して説明されるようにインスタント特徴、構造、または特性は、１つまたは複数の実施形態において、任意の適当なやり方で結合され得る。例えば、「例としての実施形態」、「いくつかの実施形態」という語句、または他の類似の言葉の使用は、本明細書全体を通して、実施形態に関連して説明される特定の特徴、構造、または特性が少なくとも１つの実施形態に含まれ得るという事実を指す。よって、「例としての実施形態」、「いくつかの実施形態において」、「他の実施形態において」という語句、または他の類似の言葉の出現は、本明細書全体を通して、必ずしも全てが同一グループの実施形態を指しておらず、説明される特徴、構造、または特性が、１つまたは複数の実施形態において任意の適当なやり方で結合され得る。
【００１７】
さらに、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、本出願は、パケット、フレーム、データグラムなどの多くの種類のメッセージまたはネットワーク・データに適用され得る。さらに、ある種類のメッセージ、シグナリング、およびプロトコルが、例示的実施形態に示されることがあるが、それらは、ある種類のメッセージ、シグナリング、またはプロトコルに限定されない。
【００１８】
例としての実施形態は、方法、デバイス、ネットワーク、またはシステム、あるいはそれらの組合せを提供し、それらは、選択的ピア管理手続きでブロックチェーン分散型システムをサポートする。ブロックチェーンは、互いに通信する複数のノードを含む分散型システムである。ブロックチェーンは、チェーンコード（例えばスマート・コントラクトなど）と呼ばれるプログラムを動作させ、状態および台帳データを保持し、そしてトランザクションを実行する。いくつかのトランザクションは、チェーンコード上で呼び出される動作である。概して、ブロックチェーン・トランザクションは、典型的には、あるブロックチェーン・メンバによって「エンドース」されなければならず、エンドースされたトランザクションのみが、ブロックチェーンにコミットされ、ブロックチェーンの状態に対する影響を有し得る。エンドースされない他のトランザクションは、無視される。管理機能およびパラメータについての１つまたは複数の特殊なチェーンコードが存在することがあり、まとめてシステム・チェーンコードと呼ばれる。
【００１９】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なる種類の複数のノードが同一の物理サーバ上で実行し得るという意味で、論理関数を実行し得る。ノードは、信頼できるドメイン内にグループ化され、様々なやり方でそれらを制御する論理エンティティに関連付けられる。ノードは、クライアント、またはトランザクション呼び出しをエンドーサ（endorser）（例えば、ピア）にサブミットし、トランザクション提案を順序付けサービス（例えば、順序付けノード）にブロードキャストするサブミット・クライアントなどの異なる種類を含み得る。ノードの別の種類は、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、そしてブロックチェーン・トランザクションの台帳の状態およびコピーを維持し得るピア・ノードである。ピアは、エンドーサの役割も有し得るが、それは必須ではない。順序付けサービス・ノードまたはオーダラ（orderer）は、全てのノードについての通信サービスを実行するノードであり、それは、トランザクションをコミットするとき、およびブロックチェーンの世界状態を修正するときに、システム内の各ピア・ノードへのブロードキャストなどの、配信保証を実施する。
【００２０】
台帳は、ブロックチェーンの全ての状態遷移の、順番に配列された耐改ざんレコードである。状態遷移は、参加している当事者（例えば、クライアント・ノード、順序付けノード、エンドーサ・ノード、ピア・ノードなど）によってサブミットされるチェーンコード呼び出し（即ち、トランザクション）から生じ得る。トランザクションは、生成、更新、削除などの１つまたは複数のオペランドとして台帳にコミットされている資産キー・バリュー・ペアのセットをもたらし得る。台帳は、不変性の、順番に配列されたレコードをブロックに記憶するために使用されるブロックチェーン（チェーンとも呼ばれる）を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。典型的には、チャネル毎に１つの台帳が存在する。各ピア・ノードは、それらがメンバであるチャネル毎に台帳のコピーを維持する。
【００２１】
チェーンは、ハッシュでリンクされたブロックとして構築されるトランザクション・ログであり、各ブロックは、Ｎ個のトランザクションのシーケンスを含み、ここでＮは１以上である。ブロック・ヘッダは、ブロックのトランザクションのハッシュだけでなく、前のブロックのヘッダのハッシュも含む。このようにして、台帳上の全てのトランザクションが、順番に配列され、暗号によって共にリンクされ得る。したがって、ハッシュ・リンクを壊すことなく台帳データを改ざんすることはできない。直近に追加されたブロックチェーン・ブロックのハッシュは、その前に来たチェーン上のあらゆるトランザクションを表し、全てのピア・ノードが整合性および信頼性のある状態にあることを保証することを可能にしている。チェーンは、ピア・ノード・ファイル・システム（即ち、ローカル、アタッチされたストレージ、クラウドなど）上に記憶されてもよく、ブロックチェーンの作業負荷の追加専用の性質を効率的にサポートする。
【００２２】
不変性の台帳の現在の状態は、チェーン・トランザクション・ログに含まれる全てのキーについての最新の値を表す。現在の状態は、チャネルにとって既知の最新のキー・バリューを表すため、それは、世界状態と呼ばれることがある。チェーンコード呼び出しは、台帳の現在の状態データに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的にするために、キーの最新の値が、状態データベース内に記憶され得る。状態データベースは、単にチェーンのトランザクション・ログ内にインデックスされたビューであってもよく、したがって、それはいかなるときでもチェーンから再生成され得る。状態データベースは、ピア・ノードが起動した直後、およびトランザクションが受諾される前に、自動的に回復され得る（または必要であれば生成され得る）。
【００２３】
例としての実施形態は、ブロックチェーン・ピアが非集中型方式で保留中のブロックチェーン・トランザクションに優先度を割り当てるための、およびブロックチェーン・ネットワーク内のトランザクション処理の異なる段階において優先度が施行されるための方法、デバイス、システム、およびコンピュータ・プラットフォームを提供する。各ピアによって提供される割り当てられた優先度は、静的ルール、または他のネットワーク要素上の偶発的な動的システム・ルール、あるいはその両方に基づき得る。そのような割り当てられた優先度は、優先度統合ポリシーに基づいてトランザクションを管理するために、割り当てられ、使用されるべき単一の「最終」優先度に統合される。そのような統合されたポリシーは、トランザクションの順序付け／合意の間だけでなく、ブロックチェーン・トランザクション・コミットメントの前のトランザクション確認の間も、施行される。順序付けプロセス中の施行は、順序付け／オーダラ・ノードの順序付けサービスが、優先度を意識したブロック形成ポリシーに基づいて様々な利用可能優先度からトランザクションを選択することを可能にする。そのような優先度を意識したブロック形成ポリシーは、異なるピアが、ブロック形成の間複数の異なる優先度キューから同一セットのトランザクションを読み出すことを保証する。優先度の割当ては、また、それらがブロックチェーン上のトランザクションの一部として持続しているとき、後の時点において監査され得る。
【００２４】
１つの実施形態におけるインスタント適用例は、許可型ブロックチェーンに関係し、別の実施形態では、許可型ブロックチェーンにおける優先順位付けに関係する。
【００２５】
図１Ａは、例としての実施形態による、ブロックチェーン・トランザクション優先度割当ての論理ネットワーク図を示す。図１Ａを参照すると、構成１００は、オーダラ、コミッタ（committer）、エンドーサを含むがそれらに限定されないピアに対するトランザクション委任を管理するクライアント１１０を含む。動作中、クライアント・ノード１１０は、１つまたは複数のエンドーシング・ピアの代わりに優先度施行モジュール１１２の一部として動作する、オーダラ・ノード（１１１、１１３、１１５）にエンドースメント要求１０５を送信する。エンドースメント要求および応答は、多重キュー・ブロック生成器１１６によって生成されるブロック内に記憶され、ピアは、クライアントからの直接の要求ではなくオーダラ・ノードからブロックを受信するとエンドースメントを実行し、次いでオーダラ／順序付けノードに応答を送信する。モニタリングおよびリバランシングは、ピアの相対的処理速度をモニタリングすることによって各クライアントにより実行されてもよく、それは、トランザクション毎のエンドースメント要求および応答のブロック高さを比較することを含む。その結果、ピアの選択は、それらのピアについて識別される降順の処理速度の順序で、それらの識別されたピアにエンドースメント要求を送信することによって実行され得る。
【００２６】
クライアント・ノードまたはエンティティが、新たなブロックチェーン・トランザクション要求１０１を「エンドーサ」・ピアのセットに提案／送信するとき、優先度計算器１２４は、各ピアによって使用されてもよく、それらのエンドーサ・ピア（１２１、１２３、１２５）は、優先度をトランザクションに割り当て、エンドースメント応答メッセージ１０３を用いてトランザクションに埋め込む。エンドーサは、実施されるポリシーに基づいて静的に優先度を決定してもよく、またはエンドーサは、局所的知識（例えば、現在のトランザクション負荷サイズ）に基づいて動的に優先度を決定してもよい。各エンドーサは、その応答エンドースメント・メッセージにおいて同一または異なる優先度をトランザクションに割り当て得る。１つの例では、トランザクションへのアクセスを提供される４つのエンドーサが存在する場合、それぞれが異なる優先度をトランザクションに割り当て得る、または３つが同一の優先度をトランザクションに割り当て得る、または全てが同一の優先度を割り当て得る、などであってもよい。エンドーサによるポリシーの初期割当ては、トランザクションが実行されるときに決定するための各ピアによるソフト優先度施行１２０と考えられ得る。
【００２７】
エンドーサが優先度を判断するために使用し得る基準のいくつかの例は、チェーンコードＩＤ、呼び出される特定の関数、読出しトランザクションよりも高い優先度を有する書込みトランザクション（例えば、監査目的でトランザクション・ログに書き込まれる空のライト・セットを有する照会）、または保留中のトランザクションの現在経験しているネットワーク負荷、あるいはそれらの組合せを含み得る。ピア・エンドーサは、優先度のソフト施行など、より高い優先度を有するトランザクションを最初に実行するために、局所的に計算された優先度を利用し得る。クライアントは、全てのエンドースメントおよび優先度割当てを受信し、整合性について結果をチェックする。クライアントは、優先度をバンドルし、トランザクションと共に全ての情報を「オーダラ」・ピア／合意プロバイダに転送し得る。
【００２８】
オーダラおよびエンドーサ・エンティティにおける優先度統合器１１４は、優先度統合ポリシー１４０を用いて最終優先度を決定する。この最終優先度は、エンドースメントの第２ラウンドを用いてエンドーサによって判断される。オーダラは、ブロック形成の間に優先順位付けを施行し、優先度毎に別個のキュー１１８を維持し、最終優先度割当て手続きに基づいてトランザクションをそれぞれのキュー１１８に送信する。オーダラ・ピアは、各優先度レベルからブロックに含まれるトランザクションの数を記述する、優先度を意識したブロック形成ポリシーに基づいて、異なる優先度キューからトランザクションを読み出す。多重キュー・ブロック生成器１１６は、ブロックを形成する。全てのオーダラは、ブロックを形成するために異なる優先度キューから同一セットのトランザクションを選択するべきである。このプロセスをサポートするために、カット時間（ＴＴＣ：time to cut）同期メッセージが、この多重キュー構成において使用される。トランザクションは、書込みトランザクション１０７および読出しトランザクション１０９を含み得る。ブロックは、優先度施行１３０についてのバリデータ（validator）１３４に配信１１１される。バリデータ／コミッタ・ノード（１３１、１３３、１３５）は、各トランザクションに割り当てられたポリシーを活用して、優先順位付けされたバリデータ１３４を介した確認順序付けおよび実行の間、優先度を施行する。優先順位付けされたバリデータ１３４は、ブロック内に矛盾があるときに、より低い優先度のトランザクションよりもより高い優先度のトランザクションを選択する。それは、トランザクションの並列確認の形成である。最終的には、予備的優先度がエンドーサによって割り当てられ、最終優先度がオーダラによって選択されると、トランザクションは、台帳１３６にコミットされる。
【００２９】
特定のトランザクションに割り当てる優先度を決定するとき、第１の手法は、それがリード・セット／ライト・セットまたはクライアントＩＤあるいはその両方であろうと、チェーンコードＩＤなどの様々なパラメータに基づいて優先度を決定するための静的手法であってもよい。優先度を決定するためのポリシーは、ポリシー決定を正当化するために取得され使用される構成ファイルを介して指定され得る。優先度は、動的に決定されてもよく、その場合に、各ピアは、クライアントＩＤ毎のトランザクションの数、所与のピアにおけるシステム負荷、認識されていない／好適なクライアントから受信したトランザクションに基づいて優先権を決定する。エンドーサは、トランザクションに割り当てる優先度を決定し、エンドースメントについてのクライアントの要求に対する提案応答の一部としてそれを送信してもよく、次いで、最終優先度およびコミットメント動作のために順序付けサービスにトランザクションを転送する。エンドーサは、優先度を確立するときに署名を提供し得る。
【００３０】
静的優先度割当ての１つの例は、あるトランザクションを、トランザクション「Ａ」：＃読出し  １０、＃書込み  ２、トランザクションＢ：＃読出し  ２、＃書込み  １０として識別することを規定し得る。結果は、トランザクションのそれぞれにおける読出しおよび書込みの数に基づいて、トランザクションＡに優先度「３」が割り当てられ、トランザクションＢに優先度「１」が割り当てられることになる。優先度方式ポリシーに対しては、書込みは読出しよりも重要である。次に、オーダラは、トランザクションについての異なるまたは同一の、あるいはその両方のエンドースされた優先度を受信し、最終優先度を決定しなければならない。別の例としての実施形態では、優先度統合は、また、優先度の最終処理のためにエンドースメントの第２ラウンドを用いてエンドーサにおいて実行されてもよく、その場合に、クライアントはエンドーサから受信した優先度をバンドルし、最終優先度計算のために各エンドーサにそれらを返送する。１つの特定の優先度の例において、エンドーサ・セットが、Ｅ＝｛Ａ，Ｂ，Ｃ，Ｄ｝であると仮定すると、いくつかの例としてのポリシーは、「ｎ」のうちの過半数（ｎ／２＋）であってもよい。優先度は、Ａ＞Ｂ＞Ｃ＞Ｄなどの順序で考慮され、Ａがエンドースされる場合、その優先度が考慮され、そうでない場合、Ｂの優先度が考慮される、などである。ある重み（Ａ＝４０、Ｂ＝３０、Ｃ＝２０、Ｄ＝１０）を用いると、平均はＳＵＭ（全て）／ｎである。
【００３１】
例としての実施形態によれば、Ｎ個の優先度レベルに対応するＮ個のキューが存在する。キューに発行するとき、オーダラは、受信したトランザクションから優先度の値を読み出し、割り当てられた優先度の過半数、優先度の中央値、または他の優先度セグメンテーション動作に基づいてトランザクションを適当な優先度キューに発行する。オーダラは、キューを読み出し、ブロックを形成する。ブロック内に含まれるべき各優先度のトランザクションの数は、ポリシーにおいて定義され得る。オーダラは、パーセンテージ、バッチ・サイズ、またはタイムアウト、あるいはそれらの組合せに基づいてブロックを形成する。オーダラは、まず、優先度毎のトランザクションの期待数を含むことによってブロックを形成することを試みる。トランザクションの期待数に到達する前にタイムアウトがある場合、カット時間ブロック数「ｎ」（ＴＴＣ−ｎ＊）のメッセージが、全てのキューに送信される。ブロックは、まず、トランザクションの期待数、および各トピックからのＴＴＣの前に利用可能なトランザクションを含む。残りのトランザクションは、ＴＴＣ−ｎの前の残りのトランザクションで最も高い優先度を有するトピックから取られる。
【００３２】
優先度を施行するとき、１つの例は、例えば、３つの優先度＜高、中、低＞についてパーセンテージが＜１００、０、０＞であり、ブロックを形成するためのバッチ・サイズが１００である場合、オーダラは、高優先度のキューから１００個のトランザクションを観測するとすぐにブロックを形成しなければならないと規定し得る。１００個の高優先度のトランザクションが見られる前にタイムアウトがある場合、オーダラは、全てのキューにＴＴＣ−ｎメッセージを送信する。ＴＴＣ−ｎメッセージの前に、高優先度キューに６０個のトランザクション、中優先度キューに２０個のトランザクション、低優先度キューに５０個のトランザクションがあった。今、ブロックは、高優先度キューから６０個のトランザクション、中優先度から２０個のトランザクション、および低優先度キューから２０個のトランザクションを含む。この例では、全ての高優先度キュー・トランザクションが、等しい数の中優先度および低優先度トランザクションと共にブロックのために取られた。
【００３３】
ブロック管理の別の例では、パーセンテージ・タプルは、＜５０、３０、２０＞であってもよい。オーダラが高優先度キューに少なくとも５０個のトランザクション、中優先度キューに３０個のトランザクション、および低優先度キューに２０個のトランザクションを観測する場合、オーダラは、すぐにブロックを形成する。バケットのいずれかが、タイムアウトにおいて一杯ではない場合、ＴＴＣ−ｎメッセージが、全てのキューに送信される。ＴＴＣ−ｎの前に、高優先度キューに５５個のトランザクション、中優先度キューに５０個のトランザクション、低優先度キューに１０個のトランザクションがあったと仮定すると、今、形成されるブロックは、高優先度キューから５５個のトランザクション、中優先度キューから３５個のトランザクション、および低優先度キューから１０個のトランザクションを含むことになる。
【００３４】
優先度は、代替的には、クライアントによって、またはトランザクションの最終段階（コミッタ）において決定され得る。クライアントは、また、それがより重要でない、またはより重要であると識別するトランザクションについての優先度を提案し得る。オーダラに悪意のある可能性があり、分岐した台帳から回復するやり方があるという仮定を用いると、優先度検証もまた、オーダラにおいて実行されてもよく、その場合に、最終優先度計算は、各オーダラにおいて独立して検証されてもよく、トランザクションの最終優先度がもともと読み出されたキューに合致するかどうかを判断するために、チェックが実行され得る、任意の不遵守問題を識別すると、トランザクションは落とされ得る。この構成についてのいくつかの基本的な仮定は、多重ピア分散型ブロックチェーン・システムを含み、そこでは、ピアが、１つまたは複数の役割（例えば、エンドーサ、コミッタ、オーダラ）を有してもよく、「全体の順序」を提供する分散型キュー、および全ての消費者が、同一セットのメッセージを消費する。
【００３５】
初期優先度を決定する間エンドーサによって使用され得る可能な基準は、様々な異なる基準に基づき得る。例えば、チェーンコードに関して、特定のチェーンコード（スマート・コントラクト）に関するトランザクションは、何らかの他のチェーンコードに関するトランザクションよりも高い優先度を有し得る。例えば、システム構成更新トランザクションは、システム・チェーンコードによって実行され、任意の他のチェーンコードに関するトランザクションよりも高い優先度がエンドーサによって割り当てられ得る。チェーンコード内の関数に関する別の例では、複数の関数が存在し、特定関数を呼び出すトランザクションには、同一チェーンコード内の他の関数を呼び出すトランザクションよりも高い優先度が割り当てられ得る。例えば、病院管理についてのチェーンコードが存在し、そのチェーンコード内部に「admitPatientToEmergency」および「dischargePatient」の２つの関数が存在する場合。その結果、「admitPatientToEmergency」関数に関するトランザクションには、「dischargePatient」関数に関するトランザクションよりも高い優先度が割り当てられ得る。空のライト・セットを有する読出し／照会に対するトランザクションに関しては、この場合、エンドーサは、ある変数に対するシステム更新「書込み」を実行しなければならないトランザクションに、単に変数を「読出し」しなければならないトランザクションよりも高い優先権を与えるように構成され得る。逆のポリシーも使用されてもよく、その場合、読出しトランザクションに、書込みトランザクションよりも高い優先度が割り当てられる。現在の経験負荷の例に関して、ここで、エンドーサは、エンドーサがある時間に優先度＃１（即ち最高優先度）を有するトランザクションを全く見ていないことが分かっている場合、それらの状況下で、第２の優先度＃２（優先度＃１より低い優先度）を有するトランザクションも優先度＃１のレベルに移動し得るようなやり方で、構成され得る。また、エンドーサは、それらのポリシーのうちの１つよりも多くの組合せを用いることによって、優先度を決定するように構成され得る。
【００３６】
概して、例としての実施形態に従って考慮されている２つの主な種類のポリシーが存在し、それらは、優先度ポリシーおよび優先度統合ポリシーを含む。優先度ポリシーは、例としてのポリシー考慮において概説されるポリシーの種類である。例えば、優先度ポリシーが、チェーンコードＩＤにのみ基づいて優先度を決定することであった場合、ポリシー文書は、「チェーンコード１」−＞優先度１、「チェーンコード２」−＞優先度１、「チェーンコード３」−＞優先度２、などと述べる。他方のポリシーは、優先度統合ポリシーである。
【００３７】
オーダラは、優先度統合ポリシーを用いて最終優先度を判断する。優先度ポリシーおよび優先度統合ポリシーの両方は、２つの別個のファイルに記憶される。それらのファイルは、ポリシー・ファイルである。第１のポリシー・ファイルは、初期優先度割当てを判断するためにエンドーサによって使用され、第２のポリシー・ファイルは、最終優先度を決定するために、オーダラによって使用される。エンドーサ・セットは、Ｅ＝｛Ａ，Ｂ，Ｃ，Ｄ｝であり、いくつかの例としてのポリシーは、「ｎ」のうちの過半数（ｎ／２＋）であり得る。優先度は、Ａ＞Ｂ＞Ｃ＞Ｄなどの順序で考慮され、Ａがエンドースされる場合、その優先度が考慮され、そうでない場合、Ｂの優先度が考慮される。ある重み（Ａ＝４０、Ｂ＝３０、Ｃ＝２０、Ｄ＝１０）を用いると、平均はＳＵＭ（全て）／ｎである。上述した例において、４つのエンドーサＡ、Ｂ、Ｃ、およびＤが存在する。よって、「Ｅ」によって示されるエンドーサのセットは、４つの要素を有する。したがって、Ｅ＝｛Ａ，Ｂ，Ｃ，Ｄ｝である。そこで、サンプル優先度統合ポリシーは、サンプル・ポリシー１：「ｎ」のうちの過半数（ｎ／２＋）であってもよく、そのため、ｎ＝４のこの例では４つのエンドーサが存在し、２（ｎ／２）または２より多くのエンドーサが何らかの優先度について同意する場合、それが、最終優先度である。サンプル・ポリシー２について、優先度は、Ａ＞Ｂ＞Ｃ＞Ｄなどの順序で考慮される。クライアントは、セットＥにおける１つまたは複数のエンドーサからエンドースメントを取らないように選択し得ることに留意されたい。その場合、この種の優先度統合ポリシーが指定され、かつクライアントがエンドーサ「Ａ」からエンドースメントを取る場合、「Ａ」によって割り当てられた優先度はどれでも、最終優先度と考えられる。同様に、エンドーサ「Ａ」からのエンドースメントが見つからない場合、およびＢからのエンドースメントが取られる場合、エンドーサ「Ｂ」によって割り当てられる優先度が、最終優先度と考えられる、などである。別のサンプル・ポリシー３では、ある重み（Ａ＝４０、Ｂ＝３０、Ｃ＝２０、Ｄ＝１０）を用いて、この種のポリシーにおいて、各エンドーサにある重みが割り当てられており、そのため、エンドーサ「Ａ」が、優先度が＃１であるべきであると示した場合、Ｂ、Ｃ、およびＤが、優先度が＃２であるべきであると投票する。測定されるように、優先度＃１に対して４０の重み（エンドーサＡからの）が存在したが、優先度＃２に対しては６０の重み（エンドーサＢ、Ｃ、およびＤからの）が存在したからである。別の例において、サンプル・ポリシー＃４は、平均ＳＵＭ（全て）／ｎを有する。これは、単純な平均に基づくポリシーであり、そのため、「Ａ」が優先度＃２を示し、「Ｂ」が優先度＃２を示し、Ｃが優先度＃３を示し、Ｄが優先度＃１を示す場合、最終優先度は、平均である（２＋２＋３＋１）／４＝２となる。
【００３８】
ポリシー管理のシステム構成は、ブロック内に各優先度のある数のトランザクションを含むように構成され得る。そのため、例えば、ブロック・サイズは１００個のトランザクションであり、かつ３つの優先度レベルがある場合、優先度＃１のトランザクションを５０個、優先度＃２のトランザクションを３０個、優先度＃３のトランザクションを２０個、ブロック内に含む。そこで、この比は、５０：３０：２０であり、それが構成として定義され得る。理想的には、ブロックチェーン・メンバのうちのいずれかを無視しないように、各キューから少なくとも１つのトランザクションが単一のブロックに含まれる。ある期間の間、いくつかの特定の優先度レベルのトランザクションを停止することが望ましい場合、トランザクション動作比率が、それに従って指定され得る。例えば、上述した例において、比率が５０：５０：０である場合、優先度＃３を有するトランザクションは、どのブロックにも含まれない。そのため、ある時間の後この比率が更新されるまで、優先度＃３を有するトランザクションは全く処理されず、５０個のトランザクションが存在すると仮定すると、優先度＃１および＃２のそれぞれが各ブロックを満たすために利用可能である。言い換えると、優先度＃３は、厳密には、優先度＃１および＃２のトランザクションを収容した後の任意の残りのキャパシティに基づく、ベスト・エフォート・シナリオとなる。
【００３９】
図１Ｂは、例としての実施形態による、ブロックチェーン・トランザクション優先度割当ての間に実行される動作のセットのシステム構成図を示す。図１Ｂを参照すると、システム構成１５０は、クライアント１５２、エンドーシング・ピア１５４、オーダラ１５６、およびコミッティング・ピア１５８を含む。最初に、クライアント１５２は、エンドーシング・ピア１５４に優先度割当てのためのトランザクションをサブミットする。トランザクション要求は、クライアントＩＤ、チェーンコードＩＤ、トランザクション・ペイロード、タイムスタンプ、およびクライアント署名を含み得る１６２。エンドーシング・ピア１５４は、トランザクションをシミュレートし、既知のデータに基づいて優先度を計算し、そして優先度割当てに署名し得る１６３。エンドースメント１６４は、クライアント１５２に返送され、クライアント１５２は、トランザクションおよび優先度情報を収集し１６５、エンドースメントをオーダラ１５６に送信する１６６。優先度割当ては、ポリシーに基づいて統合され、対応キューに割り当てられる１６７。トランザクションは、キューから読み出され、各トランザクションの優先度が、トランザクションのブロックを生成する前に検証される１６９。ブロックは、書込みトランザクション１６８と共にエンドーシング・ピアに割り当てられる。ピアは、エンドースメントおよびリード・セットを検証し、許容可能であれば、ライト・セットが状態に適用される１７１。トランザクションは、次いで、コミッティング・ピアにサブミットされ１７２、コミッティング・ピアは、優先度を確認し、ブロックチェーンへの引渡しのためにトランザクションを確認する１７３。
【００４０】
図２Ａは、例としての実施形態による、ブロックチェーン・システム・アーキテクチャ構成２００を示す。図２Ａを参照すると、ブロックチェーン・アーキテクチャ２００は、あるブロックチェーン要素、例えば、ブロックチェーン・トランザクション追加および確認プロセス（合意）に参加する、ブロックチェーン・ノード２８１〜２８４のグループ２８０を含み得る。ブロックチェーン・ノード２８１〜２８４の１つまたは複数は、トランザクションをエンドースしてもよく、１つまたは複数のブロックチェーン・ノード２８１〜２８４は、アーキテクチャ２００内の全てのブロックチェーン・ノードについての順序付けサービスを提供し得る。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層２２０に記憶されるブロックチェーン不変台帳に書込みしようとしてもよく、そのコピーもまた、支持物理インフラストラクチャ２１０上に記憶され得る。ブロックチェーン構成は、１つまたは複数のアプリケーション２７０を含んでもよく、アプリケーション２７０は、記憶されたプログラム／アプリケーション・コード２５０（例えば、チェーンコード、スマート・コントラクトなど）にアクセスし実行するために、アプリケーション・プログラミング・インターフェース（ＡＰＩ）２６０にリンクされる。プログラム／アプリケーション・コード２５０は、参加者によって求められるカスタマイズされた構成に従って生成されてもよく、それ自体の状態を維持し、それ自体の資産を制御し、外部情報を受信し得る。
【００４１】
ブロックチェーン・ベースまたはプラットフォーム２０５は、ブロックチェーン・データの様々な層、サービス（例えば、暗号による信用サービス、仮想実行環境など）、ならびに新たなトランザクションを受信および記憶し、データ・エントリにアクセスしようとしている監査役へのアクセスを提供するために使用され得る支持物理コンピュータ・インフラストラクチャを含み得る。ブロックチェーン層２２０は、プログラム・コードを処理し物理インフラストラクチャ２１０に関与するのに必要な仮想実行環境へのアクセスを提供するインターフェースを公開し得る。暗号による信用サービス２３０は、資産交換トランザクションなどのトランザクションを検証し、情報を秘密のままにするために使用され得る。
【００４２】
図２Ａのブロックチェーン・アーキテクチャ構成は、公開された１つまたは複数のインターフェースおよび提供されるサービスを介して、ブロックチェーン・プラットフォーム２０５によってプログラム／アプリケーション・コード２４０を処理および実行し得る。コード２４０は、ブロックチェーン資産を制御し得る。例えば、コード２４０は、データを記憶および移転してもよく、スマート・コントラクトの形態でノード２８１〜２８４によって実行されてもよく、その実行を前提として条件または他のコード要素とチェーンコードを関連付けられてもよい。非限定的な例として、スマート・コントラクトは、変更、更新などを前提としてリマインダ、更新、または他の通知、あるいはそれらの組合せを実行するために生成され得る。スマート・コントラクト自体は、認可およびアクセス要件、ならびに台帳の使用に関するルールを識別するために使用され得る。１つの例では、ピア・トランザクション優先度データ２２２は、ブロックチェーン層２２０に含まれる１つまたは複数の処理エンティティ（例えば、仮想機械）によって識別され処理され得る。結果は、ブロックチェーン・タスク／イベントの処理のための優先度割当てに従ってピアにブロックを割り当てること２２４を含み得る。
【００４３】
チェーンコード内で、スマート・コントラクトは、高レベル・アプリケーションおよびプログラミング言語を介して生成されてもよく、次いで、ブロックチェーン内のブロックに書き込まれてもよい。スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーン・ピアの分散型ネットワーク）を用いて登録される、記憶される、または複製される、あるいはそれらの組合せである実行可能コードを含み得る。トランザクションは、スマート・コントラクトに関連付けられた条件が満たされていることに応答して実行され得るスマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼性のある修正をトリガし得る。スマート・コントラクト実行により生じるブロックチェーン台帳への修正は、１つまたは複数の合意プロトコルを通してブロックチェーン・ピアの分散型ネットワーク全体で自動的に複製され得る。
【００４４】
スマート・コントラクトは、キー・バリュー・ペアのフォーマットでブロックチェーンにデータを書き込み得る。さらに、スマート・コントラクト・コードは、ブロックチェーンに記憶された値を読み出し、アプリケーション動作においてそれらを使用し得る。スマート・コントラクト・コードは、様々な論理演算の出力をブロックチェーン内に書き込み得る。コードは、仮想機械または他のコンピューティング・プラットフォームにおいて一時データ構造を生成するために使用され得る。ブロックチェーンに書き込まれたデータは、公開であってもよく、または秘密として暗号化され維持されてもよく、あるいはその両方であってもよい。スマート・コントラクトによって使用され／生成される一時データは、供給される実行環境によってメモリ内に保持され、ブロックチェーンに必要なデータが識別されるとすぐに削除される。
【００４５】
チェーンコードは、追加の特徴と共に、スマート・コントラクトのコード解釈を含み得る。本明細書で説明されるように、チェーンコードは、コンピューティング・ネットワーク上に展開されるプログラム・コードであってもよく、そこで、チェーンコードは、合意プロセス中にチェーン・バリデータによって共に実行され確認される。動作中に、チェーンコードは、ハッシュを受信し、以前記憶された特徴抽出器により生成されるデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取得し得る。ハッシュ識別子のハッシュと記憶された識別子テンプレート・データから生成されるハッシュとが合致する場合、チェーンコードは、認可キーを要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたブロックチェーン・データに書き込み得る。図２Ａのこの例において、ピア優先度割当ては、トランザクション・ブロックとしてブロックチェーンにトランザクションを順序付けし、割り当て、そして書き込むために使用され得る。
【００４６】
図２Ｂは、一例としての実施形態による、ブロックチェーンのノード間のトランザクション・フロー２５０の一例を示す。図２Ｂを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード２０１によってエンドーシング・ピア・ノード２８１に送信されたトランザクション提案２９１を含み得る。エンドーシング・ピア２８１は、クライアント署名を検証し、トランザクションをシミュレートするためにチェーンコード関数を実行し得る。出力は、チェーンコード結果、チェーンコードにおいて読み出されたキー／バリュー・バージョンのセット（リード・セット）、およびチェーンコードに書き込まれたキー／バリューのセット（ライト・セット）を含み得る。提案応答２９２は、承認された場合、エンドースメント署名と共にクライアント２０１に返送される。クライアント２０１は、トランザクション・ペイロード２９３内にエンドースメントを集め、順序付けサービス・ノード２８４にそれをブロードキャストする。順序付けサービス・ノード２８４は、次いで、チャネル上の全てのピア２８１〜２８３に順序付けされたトランザクションをブロックとして配信する。ブロックチェーンへの引渡しの前に、各ピア２８１〜２８３は、トランザクションを確認し得る。例えば、ピアは、指定されたピアの正しい分配が結果に署名し、トランザクション・ペイロード２９３に対して署名を認証したことを保証するために、エンドースメント・ポリシーをチェックし得る。
【００４７】
再び図２Ｂを参照すると、クライアント・ノード２０１は、ピア・ノード２８１への要求を構成し送信することによって、トランザクション２９１を開始する。ピア・ノード２８１は、エンドーサである。クライアント２０１は、ＮＯＤＥ、Ｊａｖａ（Ｒ）、ＰＹＴＨＯＮなどのサポートされるソフトウェア開発キット（ＳＤＫ）を活用するアプリケーションを含んでもよく、それは、利用可能なＡＰＩを利用してトランザクション提案を生成する。ＪａｖａおよびＪａｖａに基づく商標およびロゴは、Ｏｒａｃｌｅ、またはその関連会社、あるいはその両方の商標または登録商標である。
【００４８】
データが読み出され得る、または台帳に書き込まれ得る（即ち、資産についての新たなキー・バリュー・ペアを書き込む）、あるいはその両方であるように、提案は、チェーンコード関数を呼び出すための要求である。ＳＤＫは、トランザクション提案を適切に設計されたフォーマット（例えば、リモート・プロシージャ・コール（ＲＰＣ）上のプロトコル・バッファ）にパッケージ化し、トランザクション提案についての一意の署名を作り出すためにクライアントの暗号による信用証明書を取るためのシムの役割をし得る。
【００４９】
それに応答して、エンドーシング・ピア・ノード２８１は、（ａ）トランザクション提案がうまく形成されること、（ｂ）トランザクションが既に過去にサブミットされていないこと（リプレイ・アタック防御）、（ｃ）署名が有効であること、および（ｄ）サブミッタ（例でのクライアント２０１）が、提案された動作をそのチャネル上で実行するように適切に認可されていること、を検証し得る。エンドーシング・ピア・ノード２８１は、呼び出されたチェーンコード関数への引数としてトランザクション提案入力を取り得る。チェーンコードは、次いで、応答値、リード・セット、およびライト・セットを含むトランザクション結果を作り出すために現在の状態データベースに対して実行される。しかしながら、この時点では台帳に更新は行われない。２９２において、値のセットは、エンドーシング・ピア・ノード２８１の署名と共に、消費するアプリケーションについてのペイロードを解析するクライアント２０１のＳＤＫに提案応答２９２として再び渡される。
【００５０】
それに応答して、クライアント２０１のアプリケーションは、エンドーシング・ピアの署名を検査／検証し、提案応答が同一であるかどうかを判断するために提案応答を比較する。チェーンコードが台帳に照会のみをした場合、アプリケーションは、クエリ応答を検査し、典型的には順序付けノード・サービス２８４にトランザクションをサブミットしない。クライアント・アプリケーションが、台帳を更新するために順序付けノード・サービス２８４にトランザクションをサブミットすることを意図する場合、指定されたエンドースメント・ポリシーがサブミットの前に満たされている（即ち、トランザクションに必要な全てのピア・ノードがトランザクションをエンドースした）かどうかを、アプリケーションが判断する。ここで、クライアントは、トランザクションに対する複数の当事者のうちの１人だけを含み得る。この場合、各クライアントが、それ自体のエンドーシング・ノードを有してもよく、各エンドーシング・ノードは、トランザクションをエンドースする必要がある。アーキテクチャは、アプリケーションが、応答を検査しないように選択するか、またはそうでなければエンドースされていないトランザクションを転送するとしても、エンドースメント・ポリシーが、依然としてピアによって施行され、コミット確認段階において支持されるようにする。
【００５１】
検査成功後、ステップ２９３において、クライアント２０１は、エンドースメントをトランザクション内に集め、トランザクション・メッセージ内のトランザクション提案および応答を順序付けノード２８４にブロードキャストする。トランザクションは、リード・セット／ライト・セット、エンドーシング・ピアの署名、およびチャネルＩＤを含み得る。順序付けノード２８４は、その動作を実行するためにトランザクションの内容全体を検査する必要はなく、その代わりに、順序付けノード２８４は、ネットワーク内の全てのチャネルからトランザクションを単に受信し、チャネルによって暗号によりそれらを順序付けし、そしてチャネル毎にトランザクションのブロックを生成し得る。
【００５２】
トランザクションのブロックは、順序付けノード２８４からチャネル上の全てのピア・ノード２８１〜２８３に配信される。ブロック内のトランザクション２９４は、任意のエンドースメント・ポリシーが満たされていることを保証するため、およびリード・セットがトランザクション実行によって生成されて以降リード・セット変数についての台帳状態に変更がなかったことを保証するために、確認される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ２９５において、各ピア・ノード２８１〜２８３は、ブロックをチャネルのチェーンに付加し、有効トランザクション毎に、ライト・セットが、現在の状態データベースにコミットされる。トランザクション（呼び出し）が、チェーンに不変的に付加されていることをクライアント・アプリケーションに通知するためだけでなく、トランザクションが有効化されたかまたは無効化されたかを通知するためにも、イベントが発行される。
【００５３】
図３は、許可型ブロックチェーン・ネットワーク３００の一例を示し、それは、分散型の、非集中型ピアツーピア・アーキテクチャ、ならびにユーザの役割および許可を管理する証明書権限３１８を特徴付ける。この例では、ブロックチェーン・ユーザ３０２は、許可型ブロックチェーン・ネットワーク３１０にトランザクションをサブミットし得る。この例では、トランザクションは、展開、呼び出し、または照会であってもよく、ＳＤＫを活用するクライアント側アプリケーションを通して、ＲＥＳＴ  ＡＰＩを直接通して、などにより発行され得る。信頼できるビジネス・ネットワークが、監査役（例えば、米国株式市場における証券取引委員会）などの規制者システム３１４へのアクセスを提供し得る。一方、ブロックチェーン・ネットワーク事業者３０８は、規制者システム３１０を「監査役」として、ブロックチェーン・ユーザ３０２を「クライアント」として登録するなどの、メンバ許可を管理することを含むノードのシステムを管理する。監査役は台帳を照会することのみに制限されてもよく、その一方で、クライアントは、あるタイプのチェーンコードを展開し、呼び出し、照会するように認可されてもよい。
【００５４】
ブロックチェーン開発者システム３１６は、チェーンコードおよびクライアント側アプリケーションを書き込む。ブロックチェーン開発者システム３１６は、ＲＥＳＴインターフェースを通してネットワークに直接チェーンコードを展開し得る。従来のデータ・ソース３３０からの信用証明書をチェーンコードに含めるために、開発者システム３１６は、帯域外接続を使用して、データにアクセスし得る。この例では、ブロックチェーン・ユーザ３０２は、ピア・ノード３１２を通してネットワークに接続する。任意のトランザクションを続行する前に、ピア・ノード３１２は、証明書権限３１８からユーザの登録およびトランザクション証明書を取得する。いくつかの場合において、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク３１０上で取引するために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを駆動しようとするユーザは、従来のデータ・ソース３３０上で彼らの信用証明書を検証することを必要とされ得る。ユーザの認可を確かめるために、チェーンコードは、従来の処理プラットフォーム３２０を通してこのデータへの帯域外接続を使用し得る。
【００５５】
図４は、例としての実施形態による、トランザクション優先度割当てを実行するためのシステム・メッセージング図を示す。図４を参照すると、システム４００は、クライアント４１０、ピア４２０、およびオーダラ４３０を提供する。プロセスは、エンドースメントを要求する１つまたは複数のブロックチェーン・トランザクションを識別すること４１２を含み得る。対応する要求が生成され、エンドースメント・ピアに送信４１４されてもよく、エンドースメント・ピアは、初期または第１の優先度をブロックチェーン・トランザクションに割り当てる４１６。エンドースメント応答は、エンドーサ・ピア署名および１つまたは複数のトランザクションに割り当てられた優先度を含む。応答４１８は、クライアント４１０に返送され、クライアント４１０は、エンドースメント４２２をオーダラ４３０に転送する。トランザクションは、オーダラ４３０によって判断される各トランザクションに割り当てられた最終優先度に依存して、キュー内で順序付け４２４される。ブロックは、トランザクションのコミットメントについて生成４２６され、コミッティング・ピアに割当て４２８される。トランザクションは、それらの最終優先度４３２、および、ポリシーに従ってより低い優先度のトランザクションを考慮しつつより高い優先度を有するトランザクションを選択するために使用される優先度選択手続きに基づいてコミットされる。
【００５６】
図５Ａは、例としての実施形態による、ブロックチェーンにおけるブロックチェーン・トランザクション優先度割当ての一例としての方法のフロー図を示す。図５Ａを参照すると、方法５００は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別すること５１２と、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの１つまたは複数の要求を送信すること５１４と、１つまたは複数のピアからエンドースメント応答メッセージを受信すること５１６であって、このエンドースメント応答メッセージが、ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、受信すること５１６と、を含み得る。この方法は、また、受信した複数の優先度およびブロックチェーン・トランザクションをピアに対する割当てのために順序付けノードに転送すること５１８を含む。
【００５７】
ブロックチェーン・トランザクションに割り当てられた複数の優先度は、複数の優先度のうちの他の少なくとも１つとは異なる少なくとも１つの優先度を含む。ブロックチェーン・トランザクションに割り当てられた複数の優先度が、全て同一の優先度であってもよい。ブロックチェーン・トランザクションに割り当てられた複数の優先度を判断するために使用される基準が、チェーンコード識別子（ＩＤ）、呼び出される関数、トランザクション・タイプ、およびブロックチェーン・トランザクションの現在の負荷のうちの１つまたは複数を含む。この方法は、また、受信した複数の優先度に基づいて、順序付けノードにおいてブロックチェーン・トランザクションの最終的な順序付け優先度を判断することと、それらの最終優先度に基づいて、ブロックチェーン・トランザクションを複数の優先度キューのうちの１つに割り当てることと、を提供する。この方法は、また、１つまたは複数のトランザクション矛盾が識別されるときに、他のブロックチェーン・トランザクションより高い優先度を割り当てられた複数のブロックチェーン・トランザクションを複数の優先度キューから選択することと、ブロックチェーン・ブロックを形成するために、より高い優先度を割り当てられた複数のブロックチェーン・トランザクションを確認することと、を含んでもよい。概して、より高い優先度を割り当てられた複数のブロックチェーン・トランザクションが、エンドースメント・ポリシーに基づいて最初に確認される。
【００５８】
図５Ｂは、例としての実施形態による、ブロックチェーンにおけるブロックチェーン・トランザクション優先度割当ての別の例としての方法のフロー図を示す。図５Ｂを参照すると、方法５５０は、ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別すること５５２と、ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信すること５５４と、信頼性のあるソースから送信されたエンドースメントの要求を識別すること５５６と、信頼性のあるソースに基づいて１つまたは複数のピアによって所定の優先度をブロックチェーン・トランザクションに割り当てること５５８と、割り当てられた所定の優先度を含むエンドースメント応答メッセージを１つまたは複数のピアから受信すること５６２と、を含む。
【００５９】
ポリシーおよびエンドースメント要求の既知の属性に従ってピアにより実行される優先度判断手続きに加えて、信頼性のあるソースは、ある優先度のものであると知られているエンドースメント要求を転送するだけであってもよい。これによって、ピアが、任意の判断プロセスにオーバライドすること、およびいかなる他の優先度計算または判断プロセスもなしにある優先度を直接割り当てることが可能となる。
【００６０】
図６Ａは、例としての実施形態による動作の例としての方法のうちの１つまたは複数に従って、ブロックチェーン上の様々な動作を実行するように構成される一例としての物理インフラストラクチャを示す。図６Ａを参照すると、例としての構成６００は、ブロックチェーン６２０およびスマート・コントラクト６４０を有する物理インフラストラクチャ６１０を含み、それは、例としての実施形態のうちのいずれかに含まれる動作ステップ６１２のいずれかを実行し得る。ステップ／動作６１２は、１つまたは複数のフロー図またはロジック図あるいはその両方において説明され、または示されるステップのうちの１つまたは複数を含み得る。ステップは、コンピュータ・システム構成の物理インフラストラクチャ６１０上に存在する、１つまたは複数のスマート・コントラクト６４０またはブロックチェーン６２０、あるいはその両方から書き込まれ、または読み出される出力または書込み情報を表し得る。データは、実行されたスマート・コントラクト６４０またはブロックチェーン６２０、あるいはその両方から出力され得る。物理インフラストラクチャ６１０は、１つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはそれらの組合せを含み得る。
【００６１】
図６Ｂは、例としての実施形態による、ブロックチェーン上のスマート・コントラクト条件を施行するように構成される契約当事者と仲介サーバとの間の一例としてのスマート・コントラクト構成を示す。図６Ｂを参照すると、構成６５０は、１つまたは複数のユーザ・デバイス６５２または６５６あるいはその両方を明示的に識別するスマート・コントラクト６４０によって駆動される、通信セッション、資産移転セッション、またはプロセスもしくは手続きを表し得る。実行、動作、およびスマート・コントラクト実行の結果が、サーバ６５４によって管理され得る。スマート・コントラクト６４０の内容は、スマート・コントラクト・トランザクションに対する当事者であるエンティティ６５２および６５６のうちの１つまたは複数によるデジタル署名を必要とし得る。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込まれ得る。
【００６２】
上記実施形態は、ハードウェアにおいて、プロセッサにより実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、または上記の組合せにおいて実施され得る。コンピュータ・プログラムは、記憶媒体などのコンピュータ可読媒体上で具現化され得る。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（「ＲＡＭ」）、フラッシュ・メモリ、読出し専用メモリ（「ＲＯＭ」）、消去可能プログラマブル読出し専用メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブル読出し専用メモリ（「ＥＥＰＲＯＭ」）、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク読出し専用メモリ（「ＣＤ−ＲＯＭ」）、または当技術分野において既知の任意の他の形式の記憶媒体に存在し得る。
【００６３】
プロセッサが記憶媒体から情報を読み出し、かつ記憶媒体に情報を書き込むように、一例示的記憶媒体は、プロセッサに連結され得る。代替的には、記憶媒体が、プロセッサと一体であってもよい。プロセッサおよび記憶媒体は、特定用途向け集積回路（「ＡＳＩＣ」）に存在してもよい。代替的には、プロセッサおよび記憶媒体は、個別のコンポーネントとして存在してもよい。例えば、図７は、一例としてのコンピュータ・システム・アーキテクチャ７００を示し、それは、上述したコンポーネントのうちのいずれかを表してもよく、または上述したコンポーネントのうちのいずれかにおいて一体化されてもよい。
【００６４】
図７は、本明細書で説明されるアプリケーションの実施形態の使用または機能性の範囲に関するいかなる限定も示唆することを意図しない。それにもかかわらず、コンピューティング・ノード７００は、実施されること、または本明細書で上述した機能性のいずれかを実行すること、あるいはその両方が可能である。
【００６５】
コンピューティング・ノード７００には、コンピュータ・システム／サーバ７０２が存在し、コンピュータ・システム／サーバ７０２は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム／サーバ７０２を用いた使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００６６】
コンピュータ・システム／サーバ７０２は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的状況において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム／サーバ７０２は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
【００６７】
図７に示されるように、クラウド・コンピューティング・ノード７００内のコンピュータ・システム／サーバ７０２は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム／サーバ７０２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット７０４、システム・メモリ７０６、およびシステム・メモリ７０６を含む様々なシステム・コンポーネントをプロセッサ７０４に連結するバスを含み得るが、これらに限定されない。
【００６８】
バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの１つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）・バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）・バスを含む。
【００６９】
コンピュータ・システム／サーバ７０２は、典型的には多様なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ７０２によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。１つの実施形態において、システム・メモリ７０６は、他の図面のフロー図を実施する。システム・メモリ７０６は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ（ＲＡＭ）７１０またはキャッシュ・メモリ７１２あるいはその両方などの揮発性メモリの形態で含み得る。
【００７０】
コンピュータ・システム／サーバ７０２は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、記憶システム７１４は、非リムーバブル不揮発性磁気媒体（図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる）から読み出し、かつそれに書き込むために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）からの読出しおよびそれへの書込みのための磁気ディスク・ドライブ、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読出しまたはそれへの書込みのための光学ディスク・ドライブが、提供され得る。そのような場合、それぞれが、１つまたは複数のデータ媒体インターフェースによってバスに接続され得る。以下でさらに示され、説明されるように、メモリ７０６は、本出願の様々な実施形態の機能を実行するように構成されるプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含み得る。
【００７１】
プログラム・モジュール７１８のセット（少なくとも１つ）を有するプログラム／ユーティリティ７１６は、限定ではなく例として、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ７０６に記憶され得る。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組合せは、ネットワーキング環境の実施を含み得る。プログラム・モジュール７１８は、概して、本明細書に説明されるように、本出願の様々な実施形態の機能または方法論あるいはその両方を実行する。
【００７２】
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本出願の態様は、完全な一ハードウェア実施形態、完全な一ソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本明細書で「回路」、「モジュール」、もしくは「システム」と全て概して呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせる一実施形態の形態を取ってもよい。さらに、本出願の態様は、その上で具現化されるコンピュータ可読プログラム・コードを有する、１つまたは複数のコンピュータ可読媒体において具現化される一コンピュータ・プログラム製品の形態を取ってもよい。
【００７３】
コンピュータ・システム／サーバ７０２は、また、キーボード、ポインティング・デバイス、ディスプレイ７２２などの１つもしくは複数の外部デバイス７２０、ユーザがコンピュータ・システム／サーバ７０２と対話することを可能にする１つもしくは複数のデバイス、またはコンピュータ・システム／サーバ７０２が１つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはそれらの組合せと通信し得る。そのような通信は、Ｉ／Ｏインターフェース７２４を介して発生し得る。まださらに、コンピュータ・システム／サーバ７０２は、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用ワイド・エリア・ネットワーク（ＷＡＮ）、または公衆ネットワーク（例えば、インターネット）、あるいはそれらの組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ７２６を介して通信し得る。図示されるように、ネットワーク・アダプタ７２６は、バスを介してコンピュータ・システム／サーバ７０２の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム／サーバ７０２と併せて使用され得ることが理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
【００７４】
システム、方法、および非一過性コンピュータ可読媒体の一例としての実施形態は、添付図面に示され、前述の詳細な説明に説明されているが、本出願は、開示される実施形態に限定されず、以下の特許請求の範囲によって明らかにされ定義されるように、多数の再配列、修正、および代用を可能にすることが理解されるであろう。例えば、様々な図面のシステムのケイパビリティは、本明細書に説明されるモジュールもしくはコンポーネントのうちの１つもしくは複数によって、または分散型アーキテクチャにおいて実行されてもよく、送信器、受信器、またはその両方の対を含んでもよい。例えば、個々のモジュールによって実行される機能性の全てまたは一部が、これらのモジュールのうちの１つまたは複数によって実行され得る。さらに、本明細書に説明される機能性は、様々なときに、かつ様々なイベントに関連して、モジュールまたはコンポーネントの内部または外部で実行され得る。また、様々なモジュール間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの１つもしくは複数を介して、または複数のプロトコルを介して、あるいはその両方を介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接、または他のモジュールの１つもしくは複数を介して、あるいはその両方で、送信または受信され得る。
【００７５】
「システム」は、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末（ＰＤＡ）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意の他の適当なコンピューティング・デバイス、あるいはデバイスの組合せとして具現化され得ることを、ある当業者は理解するであろう。「システム」によって実行されるように上述の機能を提示することは、どんなやり方でも本出願の範囲を限定することを意図しておらず、多くの実施形態のうちの１つの例を提供することを意図している。確かに、本明細書において開示された方法、システム、および装置は、コンピューティング技術と一貫した局所型および分散型形態で実施され得る。
【００７６】
本明細書において説明されたシステム特徴のうちのいくつかが、より詳細にはそれらの実施の独立性を強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタム超大規模集積（ＶＬＳＩ）回路またはゲート・アレイ、論理チップなどのオフザシェルフ半導体、トランジスタ、または他の個別のコンポーネントを含むハードウェア回路として実施され得る。モジュールは、また、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル論理デバイス、グラフィック処理ユニットなどのプログラマブル・ハードウェア・デバイスにおいて実施され得る。
【００７７】
モジュールは、また、様々な種類のプロセッサによる実行のためにソフトウェアにおいて少なくとも部分的に実施され得る。実行可能コードの識別されるユニットは、例えば、オブジェクト、手続き、または関数として組織され得る、例えば、コンピュータ命令の１つまたは複数の物理または論理ブロックを含み得る。それにもかかわらず、識別されるモジュールの実行可能ファイルは、物理的に共に位置されなくともよいが、論理的に共に接合されるときに、モジュールを含み、モジュールについての述べられた目的を達成する、異なる位置に記憶される別個の命令を含んでもよい。さらに、モジュールは、コンピュータ可読媒体上に記憶されてもよく、コンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータを記憶するために使用される任意の他のそのような媒体であってもよい。
【００７８】
確かに、実行可能コードのモジュールは、単一の命令または多数の命令であってもよく、複数の異なるコード・セグメントにわたって、異なるプログラムの間に、かつ複数のメモリ・デバイスにわたって分散すらされてもよい。同様に、動作データは、モジュール内において本明細書に識別され、例示されてもよく、任意の適当な形態で具現化され、任意の適当な種類のデータ構造内に編成されてもよい。動作データは、単一のデータ・セットとして収集されてもよく、または異なる記憶デバイスにわたって含む異なる位置にわたって分散されてもよく、かつ単にシステムまたはネットワーク上の電子信号として少なくとも部分的に存在してもよい。
【００７９】
本出願のコンポーネントは、本明細書において概して説明され図面に示されるように、多種多様な異なる構成において配列され設計され得ることが、容易に理解されるであろう。したがって、本実施形態の詳細な説明は、特許請求される本出願の範囲を限定することを意図しておらず、単に本出願の選択された実施形態を表している。
【００８０】
上記は、異なる順序のステップで実施されてもよく、または開示された構成とは異なる構成においてハードウェア要素を用いて実施されてもよく、あるいはその両方であってもよいことを、当業者は容易に理解するであろう。したがって、本出願は、これらの好適な実施形態に基づいて説明されているが、ある修正、変形、および代替的な構造が明らかとなることが、当業者には明らかとなる。
【００８１】
本出願の好適な実施形態が説明されているが、説明された実施形態が単なる例示であり、本出願の範囲は、均等物およびそれに対する修正（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど）の全範囲と共に考慮されるときに、添付の特許請求の範囲のみによって定義されるものであることが理解されるべきである。
【図１Ａ】
2021524963.tif 000003
【図１Ｂ】
2021524963.tif 000004
【図２Ａ】
2021524963.tif 000005
【図２Ｂ】
2021524963.tif 000006
【図３】
2021524963.tif 000007
【図４】
2021524963.tif 000008
【図５Ａ】
2021524963.tif 000009
【図５Ｂ】
2021524963.tif 000010
【図６Ａ】
2021524963.tif 000011
【図６Ｂ】
2021524963.tif 000012
【図７】
2021524963.tif 000013
【手続補正書】
【提出日】令和2年11月18日(2020.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロックチェーンにおける優先順位付けのための方法であって、
ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別することと、
前記ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信することと、
前記１つまたは複数のピアからエンドースメント応答メッセージを受信することであって、前記エンドースメント応答メッセージが、前記ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、前記受信することと、
受信した前記複数の優先度および前記ブロックチェーン・トランザクションを前記ピアに対する割当てのために順序付けノードに転送することと、
を含む方法。
【請求項２】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、前記複数の優先度のうちの他の少なくとも１つとは異なる少なくとも１つの優先度を含む、請求項１に記載の方法。
【請求項３】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、全て同一の優先度である、請求項１に記載の方法。
【請求項４】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度を判断するために使用される基準が、チェーンコード識別子（ＩＤ）、呼び出される関数、トランザクション・タイプ、およびブロックチェーン・トランザクションの現在の負荷のうちの１つまたは複数を含む、請求項１ないし３のいずれかに記載の方法。
【請求項５】
受信した前記複数の優先度に基づいて、前記順序付けノードにおいて前記ブロックチェーン・トランザクションの最終的な順序付け優先度を判断することと、
前記ブロックチェーン・トランザクションを複数の優先度キューのうちの１つに割り当てることと、
をさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
１つまたは複数のトランザクション矛盾が識別されるときに、他のブロックチェーン・トランザクションより高い優先度を割り当てられた複数のブロックチェーン・トランザクションを前記複数の優先度キューから選択することと、
ブロックチェーン・ブロックを形成するために、前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションを確認することと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションが、エンドースメント・ポリシーに基づいて確認される、請求項６に記載の方法。
【請求項８】
ブロックチェーンにおける優先順位付けのための装置であって、
ピア・エンドースメントを要求するブロックチェーン・トランザクションを識別するように構成されるプロセッサと、
前記ブロックチェーンに割り当てられる１つまたは複数のピアにエンドースメントの要求を送信するように構成される送信機と、
前記１つまたは複数のピアからエンドースメント応答メッセージを受信するように構成される受信機であって、前記エンドースメント応答メッセージが、前記ブロックチェーン・トランザクションに割り当てられる複数の優先度を含む、前記受信機と、を備え、
前記送信機が、受信した前記複数の優先度および前記ブロックチェーン・トランザクションを前記ピアに対する割当てのために順序付けノードに転送するようにさらに構成される、装置。
【請求項９】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、前記複数の優先度のうちの他の少なくとも１つとは異なる少なくとも１つの優先度を含む、請求項８に記載の装置。
【請求項１０】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度が、全て同一の優先度である、請求項８に記載の装置。
【請求項１１】
前記ブロックチェーン・トランザクションに割り当てられた前記複数の優先度を判断するために使用される基準が、チェーンコード識別子（ＩＤ）、呼び出される関数、トランザクション・タイプ、およびブロックチェーン・トランザクションの現在の負荷のうちの１つまたは複数を含む、請求項８ないし１０のいずれかに記載の装置。
【請求項１２】
前記プロセッサが、
受信した前記複数の優先度に基づいて、前記順序付けノードにおいて前記ブロックチェーン・トランザクションの最終的な順序付け優先度を判断し、
前記ブロックチェーン・トランザクションを複数の優先度キューのうちの１つに割り当てるようにさらに構成される、請求項８ないし１１のいずれかに記載の装置。
【請求項１３】
前記プロセッサが、
１つまたは複数のトランザクション矛盾が識別されるときに、他のブロックチェーン・トランザクションより高い優先度を割り当てられた複数のブロックチェーン・トランザクションを前記複数の優先度キューから選択し、
ブロックチェーン・ブロックを形成するために、前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションを確認するようにさらに構成される、請求項１２に記載の装置。
【請求項１４】
前記より高い優先度を割り当てられた前記複数のブロックチェーン・トランザクションが、エンドースメント・ポリシーに基づいて確認される、請求項１３に記載の装置。
【請求項１５】
ブロックチェーンにおける優先順位付けのためのコンピュータ・プログラムであって、
処理回路によって読出し可能であり、請求項１ないし７のいずれかに記載の方法を実行する、コンピュータ・プログラム。
【請求項１６】
請求項１ないし７のいずれかに記載の方法を行うように実行可能なプログラム命令を記憶した、記憶媒体。
【国際調査報告】
2021524963.tif 000014
2021524963.tif 000015
2021524963.tif 000016