(57)【要約】      （修正有）【課題】トランザクションに裏書すべきかどうか、または裏書を拒否すべきかどうかを判断するために、ブロックチェーン・ネットワーク内で裏書ノードによって実行される、従来の裏書ロジックを改善する方法を提供する。【解決手段】方法は、クライアント・デバイスからブロックチェーン・リクエストを、ネットワークを介して受け取り、ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよびトランザクションによって書かれるデータのライト・セットを生成するために、トランザクションをシミュレートする。ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することによって、分散型台帳に関するトランザクションに裏書すべきかどうかを判断する。そして、カスタマイズされた裏書ロジックの判断の結果についての情報をクライアント・デバイスに伝送する。【選択図】図６
2019160312.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーン・ノードであって、
クライアント・デバイスからブロックチェーン・リクエストを受け取るように構成されるネットワーク・インターフェースと、
前記ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよび前記トランザクションによって書かれるデータのライト・セットを生成するために、前記トランザクションをシミュレートすること、および前記ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックの実行によって、分散型台帳に関する前記トランザクションに裏書すべきかどうかを判断することを行うように構成されるプロセッサと
を備え、
カスタマイズ可能な裏書ロジックを前記実行することが、前記生成されたリード・セットおよびライト・セットを入力として受け取り、前記生成されたリード・セットおよびライト・セットに基づいて、前記トランザクションが前記分散型台帳のデータ・ブロックにコミットされるべきか否かを判断し、前記プロセッサが、前記カスタマイズされた裏書ロジックの判断の結果についての情報を前記クライアント・デバイスに伝送するように前記ネットワーク・インターフェースを制御するようにさらに構成される、
ブロックチェーン・ノード。
【請求項２】
前記ブロックチェーン・ノードの前記カスタマイズ可能な裏書ロジックの前記実行が、前記ブロックチェーン・リクエストの前記トランザクションにも裏書する別のブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することとは異なる裏書判断を行う、請求項１に記載のブロックチェーン・ノード。
【請求項３】
前記カスタマイズ可能な裏書ロジックの前記実行が、外部データ・ソースからのオフ・チェーンで取得したデータに基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断する、請求項１又は２に記載のブロックチェーン・ノード。
【請求項４】
前記カスタマイズ可能な裏書ロジックの前記実行が、ユーザ・インターフェースから受け取られたユーザ入力に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断する、請求項１乃至３のいずれかに記載のブロックチェーン・ノード。
【請求項５】
前記カスタマイズ可能な裏書ロジックの前記実行が、別のブロックチェーンから識別された情報に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断する、請求項１乃至４のいずれかに記載のブロックチェーン・ノード。
【請求項６】
前記カスタマイズ可能な裏書ロジックの前記実行が、前記ブロックチェーン・ノードのシステム・クロックから抽出された情報に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断する、請求項１乃至５のいずれかに記載のブロックチェーン・ノード。
【請求項７】
前記トランザクションが前記分散型台帳にコミットされるのを却下すると判断するのに応答して、前記カスタマイズされた裏書ロジックの前記実行が、前記トランザクションを却下する理由をさらに判断し、前記プロセッサが、前記理由を前記クライアント・デバイスに伝送するように前記ネットワーク・インターフェースをさらに制御する、請求項１乃至６のいずれかに記載のブロックチェーン・ノード。
【請求項８】
前記分散型台帳に前記トランザクションをコミットすると判断するのに応答して、前記カスタマイズされた裏書ロジックの前記実行が、前記分散型台帳にコミットされるための前記トランザクションの優先レベルをさらに判断し、前記プロセッサが、前記トランザクションの前記優先レベルを前記クライアント・デバイスに伝送するように前記ネットワーク・インターフェースをさらに制御する、請求項１乃至７のいずれかに記載のブロックチェーン・ノード。
【請求項９】
ブロックチェーン・ノードの方法であって、
クライアント・デバイスからブロックチェーン・リクエストを、ネットワークを介して受け取ることと、
前記ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよび前記トランザクションによって書かれるデータのライト・セットを生成するために、前記トランザクションをシミュレートすることと、
前記ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することによって、分散型台帳に関する前記トランザクションに裏書すべきかどうかを判断することであって、カスタマイズ可能な裏書ロジックを前記実行することが、前記生成されたリード・セットおよびライト・セットを入力として受け取り、前記生成されたリード・セットおよびライト・セットに基づいて、前記トランザクションが前記分散型台帳のデータ・ブロックにコミットされるべきか否かを判断する、前記判断することと、
前記カスタマイズされた裏書ロジックの判断の結果についての情報を前記クライアント・デバイスに伝送することと
を含む、方法。
【請求項１０】
前記ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを前記実行することが、前記トランザクションに裏書する別のブロックチェーン・ノードのカスタマイズ可能な裏書ロジックとは異なる裏書判断を行う、請求項９に記載の方法。
【請求項１１】
前記カスタマイズ可能な裏書ロジックによって前記判断することが、外部データ・ソースからのオフ・チェーンで取得したデータに基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断することを含む、請求項９又は１０に記載の方法。
【請求項１２】
前記カスタマイズ可能な裏書ロジックによって前記判断することが、ユーザ・インターフェースから受け取られたユーザ入力に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断することを含む、請求項９乃至１１のいずれかに記載の方法。
【請求項１３】
前記カスタマイズ可能な裏書ロジックによって前記判断することが、別のブロックチェーンから識別された情報に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断することを含む、請求項９乃至１２のいずれかに記載の方法。
【請求項１４】
前記カスタマイズ可能な裏書ロジックによって前記判断することが、前記ブロックチェーン・ノードのシステム・クロックから抽出された情報に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断することを含む、請求項９乃至１３のいずれかに記載の方法。
【請求項１５】
前記トランザクションが前記分散型台帳にコミットされるのを却下すると判断するのに応答して、前記裏書ロジックによって前記判断することが、前記トランザクションを却下する理由を判断することをさらに含み、前記伝送することが、前記判断された理由を前記クライアント・デバイスに伝送することをさらに含む、請求項９乃至１４のいずれかに記載の方法。
【請求項１６】
前記分散型台帳に前記トランザクションをコミットすると判断するのに応答して、前記裏書ロジックによって前記判断することが、前記分散型台帳にコミットされるための前記トランザクションの優先レベルを判断することをさらに含み、前記伝送することが、前記判断された優先レベルを前記クライアント・デバイスに伝送することをさらに含む、請求項９乃至１５のいずれかに記載の方法。
【請求項１７】
ブロックチェーン・ノードのコンピュータ・プログラムであり、コンピュータにより実行されると、
クライアント・デバイスからブロックチェーン・リクエストを、ネットワークを介して受け取ることと、
前記ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよび前記トランザクションによって書かれるデータのライト・セットを生成するために、前記トランザクションをシミュレートすることと、
前記ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することによって、分散型台帳に関する前記トランザクションに裏書すべきかどうかを判断することであって、カスタマイズ可能な裏書ロジックを前記実行することが、前記生成されたリード・セットおよびライト・セットを入力として受け取り、前記生成されたリード・セットおよびライト・セットに基づいて、前記トランザクションが前記分散型台帳のデータ・ブロックにコミットされるべきか否かを判断する、前記判断することと、
前記カスタマイズされた裏書ロジックの判断の結果についての情報を前記クライアント・デバイスに伝送することと
を含む方法を前記コンピュータのプロセッサに実行させる、コンピュータ・プログラム。
【請求項１８】
前記ブロックチェーン・ノードの前記カスタマイズ可能な裏書ロジックが、前記トランザクションに裏書する別のブロックチェーン・ノードのカスタマイズ可能な裏書ロジックとは異なる裏書判断を行う、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記カスタマイズ可能な裏書ロジックによって前記判断することが、外部データ・ソースからのオフ・チェーンで取得したデータに基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断することを含む、請求項１７又は１８に記載のコンピュータ・プログラム。
【請求項２０】
前記カスタマイズ可能な裏書ロジックによって前記判断することが、ユーザ・インターフェースから受け取られたユーザ入力に基づいて、前記分散型台帳に前記トランザクションをコミットすべきか否かを判断することを含む、請求項１７乃至１９のいずれかに記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は一般に、ブロックチェーン・ネットワーク・システムなどの分散型台帳に関し、より詳細には、トランザクションが有効であるかどうか、およびブロックチェーン・ネットワークの不変台帳にコミットされ得るかどうかを判断するときのカスタマイズされた裏書ロジックを実装できるブロックチェーン・ネットワークのブロックチェーン・ノードに関する。
【背景技術】
【０００２】
分散型台帳は、他のブロックに関する暗号学的ハッシュを格納することなどの暗号化技法を典型的に適用する、レコードの継続的に成長するリストである。ブロックチェーンは、分散型台帳の１つの共通インスタンスである。金融取引に使用されることが多いが、ブロックチェーンは、商品およびサービスに関連した情報（すなわち、製品、パッケージ、ステータス、等）などの他の様々なタイプの情報を格納することができる。非集中化された方式は、ノードの非集中化されたネットワークに権限と信頼を提供し、これらのトランザクションを公開の「ブロック」に、ノードが継続的におよび順次、記録することを可能にし、分散型台帳と呼ばれる一意の「チェーン」を作り出す。暗号文は、ハッシュ・コードなどにより、トランザクション・ソースの認証を守り、中間媒介者を排除するために使用されてよい。分散型台帳に格納されたレコードは、これらの不変的性質により、改ざんおよび改訂から守られることが可能である。各ブロックは、タイムスタンプおよび前のブロックへのリンクを含むことができる。分散型台帳は、情報を保持、追跡、伝達、および確認するために使用されてよい。台帳は分散システムなので、分散型台帳にトランザクションを追加する前に、ピアは、合意状態に至る必要がある
【発明の概要】
【発明が解決しようとする課題】
【０００３】
分散型台帳（ブロックチェーン）にコミットされることになるトランザクションを、クライアント・ノードが起動することを望むと、クライアント・ノードは、トランザクションに裏書する権限のある１つまたは複数の裏書ノードにトランザクションをサブミットする。クライアント・ノードからリクエストを受け取ると、裏書ノードは、トランザクションが参照するスマート・コントラクト、および裏書ピアによって保持される状態のコピーを起動することによってトランザクションをシミュレートする。裏書ノードは次に、トランザクションに裏書する裏書ロジックを有する。デフォルトで、ノードの裏書ロジックはトランザクションを受け入れ、単純にトランザクションに署名する。しかし、裏書ロジックは、トランザクションが許可されるべきかどうか、またはトランザクションが却下されるべきかどうかを、ノードが決定することを可能にせず、裏書ロジックは、外部データ・ソース、別のブロックチェーン、ユーザ入力、システム・リソース、および同様のものから入手された情報などの、トランザクションに関連する可能性があるオフ・チェーン情報に基づいて、トランザクションに裏書すべきかどうかをノードが判断することも可能にはしない。
【課題を解決するための手段】
【０００４】
実施形態の１つの例は、クライアント・デバイスからブロックチェーン・リクエストを受け取るように構成されるネットワーク・インターフェースと、ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよびトランザクションによって書かれるデータのライト・セットを生成するために、トランザクションをシミュレートすること、およびブロックチェーン・ノードのカスタマイズ可能な裏書ロジックの実行によって、分散型台帳に関するトランザクションに裏書すべきかどうかを判断することを行うように構成されるプロセッサとのうちの少なくとも１つを含むブロックチェーン・ノード・システムを提供することができ、カスタマイズ可能な裏書ロジックを実行することが、生成されたリード・セットおよびライト・セットを入力として受け取り、生成されたリード・セットおよびライト・セットに基づいて、トランザクションが分散型台帳のデータ・ブロックにコミットされるべきか否かを判断し、プロセッサが、カスタマイズされた裏書ロジックの判断の結果についての情報をクライアント・デバイスに伝送するようにネットワーク・インターフェースを制御するようにさらに構成される。
【０００５】
実施形態の別の例は、クライアント・デバイスからブロックチェーン・リクエストを、ネットワークを介して受け取ることと、ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよびトランザクションによって書かれるデータのライト・セットを生成するために、トランザクションをシミュレートすることと、ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することによって、分散型台帳に関するトランザクションに裏書すべきかどうかを判断することであって、カスタマイズ可能な裏書ロジックを実行することが、生成されたリード・セットおよびライト・セットを入力として受け取り、生成されたリード・セットおよびライト・セットに基づいて、トランザクションが分散型台帳のデータ・ブロックにコミットされるべきか否かを判断する、判断することと、カスタマイズされた裏書ロジックの判断の結果についての情報をクライアント・デバイスに伝送することと、のうちの少なくとも１つを含む方法を提供することができる。
【０００６】
実施形態のさらなる例は、プロセッサによって読まれると、クライアント・デバイスからブロックチェーン・リクエストを、ネットワークを介して受け取ることと、ブロックチェーン・リクエストのトランザクションによって読まれるデータのリード・セットおよびトランザクションによって書かれるデータのライト・セットを生成するために、トランザクションをシミュレートすることと、ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することによって、分散型台帳に関するトランザクションに裏書すべきかどうかを判断することであって、カスタマイズ可能な裏書ロジックを実行することが、生成されたリード・セットおよびライト・セットを入力として受け取り、生成されたリード・セットおよびライト・セットに基づいて、トランザクションが分散型台帳のデータ・ブロックにコミットされるべきか否かを判断する、判断することと、カスタマイズされた裏書ロジックの判断の結果についての情報をクライアント・デバイスに伝送することと、のうちの少なくとも１つ含む方法をプロセッサに行わせる命令を有するコンピュータ・プログラム、およびそのコンピュータ・プログラムを格納した記憶媒体を提供することができる。
【図面の簡単な説明】
【０００７】
【図１】実施形態の例による、カスタマイズされた裏書処理のためのブロックチェーン・ネットワークを示す図である。
【図２】実施形態の例による、資産共有シナリオのためのピア・ノードのブロックチェーン・アーキテクチャの構成を示す図である。
【図３】実施形態の例による、ピア・ノードのブロックチェーンの構成を示す図である。
【図４】実施形態の例による、許可されたブロックチェーン・ネットワークを示す図である。
【図５】実施形態の例による、カスタマイズされた裏書処理を行うブロックチェーン・ノードを示す図である。
【図６】実施形態の例による、カスタマイズされた裏書ロジックに基づいてブロックチェーンのトランザクションを処理するための方法を示す図である。
【図７】実施形態の例による、カスタマイズされた裏書ロジックに基づいてブロックチェーンのトランザクションを処理するための方法を示す図である。
【図８】実施形態の例による、カスタマイズされた裏書ロジックに基づいてブロックチェーンのトランザクションを処理するための方法を示す図である。
【図９】実施形態の例による、本明細書で説明される１つまたは複数の動作に従って、ブロックチェーンに対して様々な動作を行うように構成される物理インフラストラクチャを示す図である。
【図１０】実施形態の例による、ブロックチェーンに対してスマート・コントラクトの条項を執行するように構成される、契約当事者と仲介サーバの間のスマート・コントラクトの構成を示す図である。
【図１１】実施形態の例のうちの１つまたは複数をサポートするように構成されるコンピュータ・システムを示す図である。
【発明を実施するための形態】
【０００８】
本構成要素は、本明細書の図の中で全体的に説明され、示されるように、多種多様な様々な構成で配置され、デザインされてよいということが容易に理解されよう。したがって、方法、装置、非一時的コンピュータ可読媒体、およびシステムのうちの少なくとも１つの実施形態の詳細な説明は、関連する図および説明に表されるように、本出願の範囲を限定することを意図するものではなく、選択された実施形態を表すにすぎない。
【０００９】
本明細書の全体を通じて説明されるような本特徴、構造、または特性は、１つまたは複数の実施形態の中で任意の適切な手法で組み合わされてよい。例えば、句「実施形態の例（example embodiments）」、「いくつかの実施形態（some embodiments）」、または他の類似の言葉の使用は、本明細書の全体を通じて、実施形態に関連して説明される特定の特徴、構造、または特性が、少なくとも１つの実施形態に含まれることがあるということを指す。したがって、句「実施形態の例」、「いくつかの実施形態において（in some embodiments）」、「他の実施形態において（in other embodiments）」、または他の類似の言葉の出現は、本明細書の全体を通じて、実施形態の同じグループを必ずしもすべて指すわけではなく、説明される特徴、構造、または特性は、１つまたは複数の実施形態の中で任意の適切な手法で組み合わされてよい。
【００１０】
さらに、用語「メッセージ」は、実施形態の説明で使用されることがあるが、本出願は、パケット、フレーム、データグラム、等などの、多くのタイプのメッセージまたはネットワーク・データに適用されてよい。さらに、いくつかのタイプのメッセージ、シグナリング、およびプロトコルが、例示的な実施形態に描写されることがあるが、これらは、いくつかのタイプのメッセージ、シグナリング、またはプロトコルに限定されない。
【００１１】
従来のブロックチェーンの裏書のスマート・コントラクトでは、裏書ノードは、トランザクションをシミュレートするか、またはそうでなければ実行し、裏書ノードの秘密鍵を使用してトランザクションのリード・セットおよびライト・セットに署名し、データに対して他の任意のチェックを行わない。この単純なロジックは、すべての裏書ノードが、同じトランザクション出力を得ること、または言い換えると、トランザクションのリード・セットおよびライト・セットがすべてのノード上で同一であることを保証するためだけに、ブロックチェーン上のすべての裏書ノードに対して適用される。従来の裏書ノードは、計算された出力によって、シミュレートされたトランザクションに常に裏書する。
【００１２】
実施形態の例は、トランザクションに裏書すべきかどうか、またはトランザクションへの裏書を拒否すべきかどうかを判断するために、ブロックチェーン・ネットワーク内で裏書ノードによって実行され得る、特化された（またはカスタマイズされた）裏書ロジックをサポートすることによって従来の裏書ロジックを改善する、方法、デバイス、ネットワーク、またはシステム、あるいはその組合せを提供する。特化された裏書ロジックは、ブロックチェーン・ネットワークのアドミニストレータまたは他の権限のあるエンティティによって裏書ノードに追加されてよい。例えば、特化された／カスタマイズされた裏書ロジックは、Ｇｏｌａｎｇ、Ｓｏｌｉｄｉｔｙ、Ｃ＃、Ｐｙｔｈｏｎ、等などの任意の所望のプログラミング言語で書かれるスマート・コントラクトのコードに含まれてよい。いくつかのケースにおいて、特化された裏書ロジックは、同じトランザクションに裏書する同じブロックチェーン・ネットワーク内のノード対ノードと異なってよい。特化された裏書ロジックは、裏書ノードによってインストールされ、実行されるスマート・コントラクト内に実装されてよい。さらに、特化された裏書ロジックによってアクセスされるデータは、裏書ノード・システム上のローカルなデータ・ソース、外部データ・ソース、ユーザ入力、および同様のものなど、ブロックチェーンの外側（すなわち、オフ・チェーン）にあってよい。
【００１３】
ブロックチェーン・ネットワークは、通信ネットワークを介して互いに通信する複数のノードからなる分散システムである。ブロックチェーン・ノードは、チェーンコード（例えば、スマート・コントラクト、等）と呼ばれるプログラムを実行し、状態および台帳データを保持し、トランザクションを実行する。トランザクションは、チェーンコード上で起動される動作である。トランザクションは、典型的には、「裏書され（endorsed）」なければならず、裏書されたトランザクションだけがコミットされることが可能であり、ブロックチェーンの状態に効果を及ぼす。管理機能およびパラメータに対して１つまたは複数のチェーンコードが存在することができ、まとめてシステム・チェーンコードと呼ばれる。従来の裏書処理は、ノードがトランザクションをシミュレートし、署名することにかかわるが、トランザクションの内容に関して何の判断もしない。しかし、このような処理は、外側のソースからの裏書処理に恩恵をもたらすことができない。様々な態様によれば、本明細書で説明される特化された裏書ロジックは、特定のノードにカスタマイズされることが可能であり、トランザクションの内容、外部データ・ソース、タイミング、システム・リソース、ユーザ入力、およびトランザクションからオフ・チェーンの他の多くのファクタなどのファクタを考慮することができる。
【００１４】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、様々なタイプの複数のノードが同じ物理サーバ上で実行できるという意味では、論理機能である。ノードは、トラスト・ドメイン内でグループ化され、様々な方式でノードを制御する論理的なエンティティに関連付けられてよい。ノードは、トランザクションの起動を裏書人（例えば、ピア）にサブミットし、トランザクションの提案を順序付けサービス（例えば、順序付けノード）にブロードキャストするクライアント、すなわちサブミット・クライアント・ノードなどの、様々なタイプを含むことができる。別のタイプのノードは、クライアントがサブミットしたトランザクションを受け取り、トランザクションをコミットし、状態および台帳のコピーを維持できるピア・ノードである。多くの場合、ノードは、ブロックチェーン・ネットワークの中で複数の役割を果たすことができる。例えば、ピア・ノードには、必要条件ではないが、裏書人ノード、クライアント・ノード、および同様のものの役割があってもよい。順序付けサービス・ノードまたは順序付けノードは、すべてのノードのための通信サービスを実行し、トランザクションをコミットして世界状態を修正するとき、システム内のピア・ノードのそれぞれに対する微細または全体的な水準のブロードキャストなど、配信保証を実装するノードである。
【００１５】
（不変台帳と本明細書で呼ばれることもある）分散型台帳は、ノードのネットワークのすべての状態遷移に関する順番に並べられた改ざん抵抗性のあるレコードである。状態遷移は、参加当事者（例えば、クライアント・ノード、順序付けノード、裏書人ノード、ピア・ノード、等）によってサブミットされるチェーンコードの起動の結果（すなわち、トランザクション）である。トランザクションは、作り出すこと、アップデートすること、削除すること、および同様のことを行うときに、台帳にコミットされる資産のキーと値のペアのセットを生じることができる。台帳は、（チェーンとも呼ばれる）ブロックチェーンを含むことができ、順番に並べられた不変のレコードをブロックに格納することができる。台帳は、ブロックチェーンの現在の状態を維持する状態データベースを含むこともできる。典型的には、チャネルごとに１つの台帳が存在する。各ピア・ノードは、台帳のコピーを維持し、台帳の各チャネルに対してピア・ノードがメンバである。したがって、ノードは、ノードが複数のチャネルに参加するときに複数の台帳を格納することができる。
【００１６】
チェーンは、ハッシュ・リンクされたブロックとして構造化されるトランザクションのログであり、各ブロックは一連のＮ個のトランザクションを収め、ここでＮは１以上である。ブロック・ヘッダは、ブロックのトランザクションのハッシュ、ならびに前のブロックのヘッダのハッシュを含む。このようにして、台帳上のすべてのトランザクションは、順番に並べられ、互いに暗号学的にリンクされてよい。したがって、ハッシュ・リンクを壊さずに台帳データを改ざんすることは不可能である。最近追加されたブロックのハッシュは、その前に来るチェーン上のあらゆるトランザクションを表し、すべてのピア・ノードが、一貫し、信頼できる状態にあることを保証できるようにする。チェーンは、ピア・ノードのファイル・システム（ローカル、付随するストレージ、クラウド、等）に格納されてよく、ブロックチェーンの作業量の追加のみの性質を効率的にサポートする。
【００１７】
不変分散型台帳の現在の状態は、チェーン・トランザクションのログに含まれるすべてのキーの最新値を表す。現在の状態は、チャネルに知られている最新のキー値を表すので、世界状態(ワールドステート、world state)と呼ばれることもある。チェーンコードの起動は、台帳の現在の状態データに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的にするために、キーの最新の値は状態データベースに格納されてよい。状態データベースは単に、チェーンのトランザクションのログへの索引付けされたビューであり、したがって、チェーンからいつでも再生成されることが可能である。状態データベースは、ピア・ノードの始動時、およびトランザクションが受け入れられる前に自動的に回復されてよい（また、必要なら生成されてもよい）。
【００１８】
従来のブロックチェーンの裏書ロジックは単純で限定的である。典型的な裏書処理は、根本的なトランザクションのシミュレーション、および裏書ノードによる署名を含むにすぎない。この処理は、すべての裏書ノードにわたって共通である。しかし、従来の裏書ロジックには、トランザクションの裏書を却下する能力がない。言い換えると、従来の裏書ロジックは、裏書を拒否する権限を裏書ノードに与えず、裏書を拒否する理由も提供しない。また、従来のブロックチェーンの裏書ロジックは、ブロックチェーンに含まれるデータにアクセスすることだけに制限される。
【００１９】
実施形態の例は、従来のブロックチェーンの裏書ロジックに対して大きな恩恵をもたらす。例えば、本明細書で説明される特化された裏書ロジックは、システム・クロック、別のブロックチェーンまたは台帳、（例えば、分析等の）アプリケーション、ユーザ・インターフェースを介したユーザ入力、外部データ・ソース、優先度情報、および同様のものなど、ピアが利用できるオフ・チェーンの外部の秘密情報にアクセスするようにカスタマイズされてよい。さらに、特化された裏書ロジックは、裏書リクエストに対する否定的レスポンスを判断することができ、例えば、ノード／クライアントが、ブロックチェーンへのアクセスを許可されないとロジックが判断すると、ロジックは、却下の理由と共に却下することができる。
【００２０】
いくつかの実施形態において、特化された裏書ロジックは、トランザクションがブロックチェーンにコミットされているときに、裏書されるすべてのトランザクションに関して優先度のレベルを提供するために、裏書されるトランザクションに優先レベルを与えることができる。また、優先度は、トランザクションの優先度についてグループの優先度を判断するために複数の裏書ノードから集約されてよい（例えば、投票）。裏書ロジックによって考慮され得ることを拡大することによって、ブロックチェーンの外側で利用できる追加情報は、ブロックチェーンに記録されるトランザクションを判断するために使用されてよい。
【００２１】
図１は、実施形態の例による、カスタマイズされた裏書処理のためのブロックチェーン・ネットワーク１００を示す。図１を参照すると、ブロックチェーン・ネットワーク１００は、クライアント・デバイス１１０からのトランザクションをコミットしようとしている複数のノードを含む。この例において、ノードは、ピア・ノード１２０、裏書ノード１３０、および順序付けノード１４０として指定される。しかし、ノードのうちのいくつかには２つ以上の役割があってよく、様々な数およびタイプのノードがネットワーク１００内に存在してもよいということを理解されたい。動作の際、クライアント・ノード１１０は、トランザクション・リクエストをピア・ノード１２０にサブミットし、ピア・ノード１２０は次に、クライアント１１０から受け取られたトランザクションの裏書ポリシに基づいて、トランザクション・リクエストを第１の裏書ノード１３０Ａおよび第２の裏書ノード１３０Ｂに転送する。
【００２２】
図１の例において、第１の裏書ノード１３０Ａには、独自のカスタマイズされた裏書ロジックＡがあり、一方、第２の裏書ノード１３０Ｂにも、独自のカスタマイズされた裏書ロジックＢがある。ここで、カスタマイズされた裏書ロジックＡおよびカスタマイズされた裏書ロジックＢは異なってもよい。例えば、ロジックは、様々な比率、様々な要求、様々な変数、様々な優先度、様々なタイミング、様々な条件、および同様のものを含むことができる。１つの非限定的な例として、裏書ロジックＡは、トランザクション中のリクエストされた属性値と、ブロックチェーンに格納された属性値との間に完全なマッチを要求することができ、一方、裏書ロジックＢは、属性の間に完全なマッチを要求することはできず、代わりに、リクエストの属性とブロックチェーンに格納された対応する属性との間に完全なマッチがないときに解決することができる。
【００２３】
ピア・ノード１２０を介してクライアント・システム１１０からトランザクションを受け取るのに応答して、裏書ノード１３０Ａおよび１３０Ｂは、トランザクションに対するリード・セットおよびライト・セットを生成するためにトランザクションをシミュレートする。さらに、裏書ノード１３０Ａは、トランザクションに裏書すべきか否かを判断するために、独自のカスタマイズされた裏書ロジックＡにリード・セットおよびライト・セットを入力し、裏書ノード１３０Ｂは、トランザクションに裏書すべきか否かを判断するために、独自のカスタマイズされた裏書ロジックＢにリード・セットおよびライト・セットを入力する。裏書ノード１３０Ａおよび１３０Ｂは、異なる裏書ロジックを使用しているので、一方の裏書ノードはトランザクションの裏書を承認でき、他方の裏書ノードはトランザクションの裏書を却下できる可能性がある。
【００２４】
トランザクションに裏書すべきか、または拒否すべきかを判断した後、裏書ノード１３０Ａおよび１３０Ｂは、個々のカスタマイズされた裏書判断についての情報をネットワーク１００内の１つまたは複数のノードに伝送する。例えば、裏書ノード１３０Ａおよび１３０Ｂは、ピア・ノード１２０を介して裏書の判断をクライアント・システム１１０に伝送することができる。ここで、クライアント・システム１１０が十分肯定的な裏書を受け取る場合、クライアント１１０は、トランザクションが順序付けノード１４０に送られることをリクエストすることができ、ここで、トランザクションはブロックに追加され、ノード間で複製される分散型台帳にコミットするためにネットワーク１００内の他のノード（例えば、ピア・ノード１２０、または順序付けノード１４０、あるいはその両方）にブロードキャストされてよい。
【００２５】
図２は、実施形態の例による、ブロックチェーン・システムのアーキテクチャ構成２００Ａを示す。図２を参照すると、ブロックチェーン・アーキテクチャ２００Ａは、ブロックチェーンのトランザクションの追加および検証処理（合意）に関与する、例えば、ブロックチェーン・ノード２８１〜２８４のグループ２８０といった、いくつかのブロックチェーン要素を含むことができる。ブロックチェーン・ノード２８１〜２８４の１つまたは複数は、トランザクションに裏書することができ、１つまたは複数のブロックチェーン・ノード２８１〜２８１は、アーキテクチャ２００Ａ内のすべてのブロックチェーン・ノードに順序付けサービスを提供することができる。ブロックチェーン・ノードは、ブロックチェーン認証を始め、ブロックチェーン層２２０に格納された分散型不変台帳に書こうとすることができ、これらのコピーは、土台となる物理インフラストラクチャ２１０に格納されてもよい。ブロックチェーンの構成は、関係者によって求められるカスタマイズされた構成に従って作り出されることがあり、これら自体の状態を維持し、これら自体の資産を制御し、外部情報を受け取ることができる（例えば、チェーンコード、スマート・コントラクト、等といった）格納されたプログラム／アプリケーション・コード２５０にアクセスし、実行するための、アプリケーション・プログラミング・インターフェース（ＡＰＩ：application programming interface）２６０にリンクされるアプリケーション２７０のうちの１つを含むことができる。これは、トランザクションとして導入され、すべてのブロックチェーン・ノード２８１〜２８４上に、分散型台帳に添付することによってインストールされてよい。
【００２６】
ブロックチェーンのベースまたはプラットフォーム２０５は、新しいトランザクションを受け取って格納し、台帳に格納されたデータ・レコードへのアクセスを求めている監査人にアクセスさせるために使用され得る、ブロックチェーンのデータ、サービス（例えば、暗号信託業務、仮想実行環境、等）、および土台となる物理コンピュータのインフラストラクチャといった様々な層を含むことができる。ブロックチェーン層２２０は、プログラム・コードを処理し、物理インフラストラクチャ２１０を利用するのに必要な仮想実行環境にアクセスできるインターフェースを公開することができる。暗号信託業務２３０は、資産交換トランザクションなどのトランザクションを確認し、情報を秘密にしておくために使用されてよい。
【００２７】
図２のブロックチェーン・システムのアーキテクチャ構成２００Ａは、ブロックチェーン・プラットフォーム２０５によって公開された１つまたは複数のインターフェース、および提供されたサービスを介して、プログラム／アプリケーション・コード２５０を処理し、実行することができる。コード２５０は、ブロックチェーンの資産を制御することができる。例えば、コード２５０は、データ・ブロックを格納し、伝達することができ、スマート・コントラクト、および条件またはその実行を受ける他のコード要素を有するチェーンコードの形でノード２８１〜２８４によって実行されてよい。非限定的な例として、スマート・コントラクトは、リマインダ、アップデート、または変更、アップデート、等を受ける他の通知、あるいはその組合せを実行するために作り出されてよい。様々な実施形態によれば、スマート・コントラクトは、オフ・チェーンのデータに基づいて、トランザクションに裏書すべきかどうかを判断する、カスタマイズされた裏書ロジックを実行するために使用されてもよい。スマート・コントラクトは、それ自体、権限付与およびアクセス要求、ならびに台帳の使用に関連のあるルールを識別するために使用されてよい。例えば、クライアント・デバイスから受け取られたハッシュ化された識別子情報２５２は、ブロックチェーン層２２０に含まれる１つまたは複数の処理エンティティ（例えば、仮想マシン）によって処理されてよい。結果は、ブロックチェーンのコンピューティング環境からサード・パーティのアプリケーションへの認められたアクセス２５４を含むことができる。この例において、以前に知られたユーザ識別子またはデータ・テンプレート情報は、ブロックチェーン・プラットフォーム２０５に格納されてよい。物理マシン２１０は、ユーザ・デバイスのテンプレートを取得するためにアクセスされてよく、情報は、確認のために、入って来るユーザ識別子に対してマッチさせるために使用されてよい。
【００２８】
チェーンコード内で、スマート・コントラクトは、高レベルのアプリケーションおよびプログラミング言語によって作り出され、その後、ブロックチェーン内のブロックに書かれてよい。スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーンのピアの分散ネットワーク）によって登録、格納、または複製、あるいはその組合せを行う実行可能コードを含むことができる。しかし、いくつかの実施形態において、カスタマイズされた裏書ロジックを含むスマート・コントラクトは、共通のブロックチェーン・ネットワーク内の他のノードに関してノードに対して一意であってよい。トランザクションは、スマート・コントラクトに関連のある条件が満たされるのに応答して行われ得るスマート・コントラクトのコードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対して信頼できる修正をトリガすることができる。スマート・コントラクトの実行によって起こされるブロックチェーン台帳に対する修正は、１つまたは複数の合意プロトコルによって、ブロックチェーンのピアの分散ネットワークの全体を通じて自動的に複製されてよい。
【００２９】
スマート・コントラクトは、キーと値のペアのフォーマットでブロックチェーンにデータを書くことができる。さらに、スマート・コントラクトのコードは、ブロックチェーンに格納された値を読み、アプリケーションの動作の中でこれらの値を使用することができる。スマート・コントラクトのコードは、様々なロジック動作の出力をブロックチェーンに書くことができる。コードは、仮想マシンまたは他のコンピューティング・プラットフォーム内に一時的なデータ構造を作り出すために使用されてよい。ブロックチェーンに書かれたデータは、公開であってよく、または暗号化され、秘密として維持されてよく、あるいはその組合せであってよい。スマート・コントラクトによって使用／生成される一時的なデータは、与えられた実行環境によってメモリに保持され、その後、ブロックチェーンに必要とされるデータが識別されると削除される。
【００３０】
チェーンコードは、追加の特徴と共にスマート・コントラクトのコード翻訳を含むことができる。本明細書で説明されるように、チェーンコードは、コンピューティング・ネットワークに導入されるプログラム・コードであってよく、ここで、チェーンコードは、合意処理中にチェーンの検証器によって一緒に実行され、検証される。チェーンコードはハッシュを受け取り、以前に格納された特徴のエクストラクタを使って作り出されるデータ・テンプレートに関連のあるハッシュをブロックチェーンから取得する。ハッシュ識別子のハッシュおよび格納された識別子のテンプレートのデータから作り出されたハッシュがマッチする場合、チェーンコードは、リクエストされたサービスに権限付与キーを送る。チェーンコードは、暗号詳細に関連のあるブロックチェーンのデータに書くことができる。図２のこの例において、公表および入手するスマート・コントラクト情報は、資産サービスを提供するエンティティの明細書に従ってアップデートされてよい２２２。１つの機能は、エンティティ＃２が正しい信任状（信憑性証明物、credentials）を有し、有効期限がまだ満期になっておらず、まだアクティブまたは未決の状態にある（すなわち、有効期限前）場合、リクエストするエンティティ、この例ではエンティティ＃２に、資産へのアクセス２２４を提供することであってよい。正しい信任状が要求され、資産アクセス情報を公表する前にスマート・コントラクトの条件が満たされなければならない。
【００３１】
図３は、実施形態の例によるブロックチェーンのノード間のトランザクションのフロー２００Ｂの例を示す。図３を参照すると、トランザクション・フロー２００Ｂは、裏書ピア・ノード２８１にアプリケーション・クライアント・ノード２０１によって送られたトランザクションの提案を含むことができる。裏書ピア２８１はクライアントの署名を確認し、チェーンコード機能を実行してトランザクションをシミュレートすることができる。さらに、様々な実施形態によれば、裏書ピア２８１は、システム情報、ユーザ入力、他のブロックチェーン情報、外部データ・ソース、および同様のものなどのオフ・チェーンのデータに基づいて、カスタマイズされた裏書ロジックを実行して、トランザクションに裏書すべきか否かを判断することができる。出力は、チェーンコードの結果、チェーンコード内で読まれたキー／値のバージョンのセット（リード・セット）、チェーンコードに書かれたキー／値のセット（ライト・セット）である。裏書ピア２８１がトランザクションに裏書すると判断すると、提案のレスポンスが、裏書署名と共にクライアント２０１に送り返される。クライアントは、トランザクションのペイロードの中に裏書を集め、これを順序付けサービス・ノード２８４にブロードキャストする。順序付けサービス・ノード２８４は次に、順序付けされたトランザクションをブロックとしてチャネル上のすべてのピア２８１〜２８３に配信する。コミットの前に、各ピア２８１〜２８３は、トランザクションを検証することができる。例えば、これらのピアは、裏書ポリシをチェックし、指定されたピアの正しい割当てが結果に署名されたことを保証し、トランザクション・ペイロードに対する署名を認証することができる。
【００３２】
図３を参照すると、ステップ２９１において、クライアント・ノード２０１は、リクエストを構築し、裏書人であるピア・ノード２８１に送ることによってトランザクションを始める。クライアント２０１は、Ｎｏｄｅ、Ｊａｖａ（Ｒ）、Ｐｙｔｈｏｎ、および同様のものなどの、サポートされるソフトウェア開発キット（ＳＤＫ：software development kit）を活用するアプリケーションを含むことができ、これは、利用可能なＡＰＩを利用してトランザクションの提案を生成する。提案は、データが読まれること、または台帳に書かれること（すなわち、資産に対する新しいキーと値とのペアを書く）、あるいは両方のことができるように、チェーンコード機能を起動するリクエストである。ＳＤＫは、トランザクションの提案を正しく設計されたフォーマット（例えば、ｇＲＰＣ上のプロトコル・バッファ）の中にパッケージするためのくさびとしての役割を果たし、クライアントの暗号信任状を用いて、このトランザクションの提案に対する一意の署名を生み出すことできる。
【００３３】
それに応じて、裏書ピア・ノード２８１は、（ａ）トランザクションの提案がうまく形成されること、（ｂ）トランザクションが過去にまだサブミットされたことがないこと（リプレイ・アタックの保護）、（ｃ）署名が有効であること、および（ｄ）サブミッタ（例におけるクライアント２０１）が、このチャネル上で、提案された動作を実施するために正しく権限付与されることを確認することができる。裏書ピア・ノード２８１は、起動されたチェーンコード機能への引数としてトランザクションの提案の入力を用いることができる。チェーンコードは次に、レスポンス値、リード・セット、およびライト・セットを含むトランザクションの結果を生み出すために、現在の状態データベースに対して実行される。しかし、この時点で、台帳に対してアップデートは行われない。さらに、チェーンコードは、トランザクションを拒否すべきかどうか、トランザクションを承認／裏書すべきかどうか、トランザクションの優先度のレベル、および同様のものを判断するために使用され得る特化された裏書ロジックを含むこともできる。ステップ２９２において、これらの値のセットは、裏書ピア・ノード２８１による判断および裏書ピア・ノード２８１の署名と共に、アプリケーションが消費するペイロードを解析するクライアント２０１のＳＤＫへの提案レスポンスとして戻される。
【００３４】
それに応じて、クライアント２０１のアプリケーションは、（署名を含む）裏書ピアによって行われるカスタマイズされた裏書判断を検査／確認し、提案レスポンスが同じであるかどうかを判断するために提案レスポンスを比較する。チェーンコードだけが台帳に問い合わせた場合、アプリケーションはクエリのレスポンスを検査し、典型的には、トランザクションを順序付けサービス２８４にサブミットしない。クライアントのアプリケーションが、台帳をアップデートするために、トランザクションを順序付けサービス２８４にサブミットすることを意図する場合、アプリケーションは、サブミットする前に指定された裏書ポリシが満たされたかどうかを判断する（例えば、トランザクションに必要なピア・ノードの両方が、カスタマイズされた裏書ロジックに基づいて裏書したかどうか、等）。ここで、クライアントは、トランザクションに対して複数の当事者のうちのただ１つを含むことができる。この場合、各クライアントには独自の裏書ノードがあり、各裏書ノードはトランザクションに裏書する必要がある。アーキテクチャは、アプリケーションがレスポンスを検査しないことを選ぶか、またはそうでなければ裏書されないトランザクションを転送する場合でも、裏書ポリシはまだ、ピアによって執行され、コミット検証フェーズで支持されるといったようなものである。
【００３５】
検査が成功した後、ステップ２９３において、クライアント２０１は、トランザクションの中に裏書を集め、トランザクション・メッセージ内のトランザクションの提案およびレスポンスを順序付けノード２８４にブロードキャストする。トランザクションは、リード／ライトのセット、裏書ピアの署名、およびチャネルＩＤを収めることができる。順序付けノード２８４は、その動作を行うためにトランザクションの全体内容を検査する必要はなく、順序付けノード２８４は、ネットワーク内のすべてのチャネルからトランザクションを単純に受け取り、チャネルによってトランザクションを時系列で順序付け、チャネルごとにトランザクションのブロックを作り出すことができる。
【００３６】
ステップ２９４において、トランザクションのブロックは、チャネル上のすべてのピア・ノード２８１〜２８３に順序付けノード２８４から配信される。ブロック内のトランザクションは、裏書ポリシが満たされることを保証するため、およびリード・セットがトランザクションの実行によって生成されてからリード・セットの変数に対する台帳の状態への変更がなかったことを保証するために検証される。ブロック内のトランザクションは、有効または無効としてタグ付けされる。いくつかの実施形態において、トランザクションは、裏書ピアから決定される優先度に基づいて順序付けされてよい。例えば、各裏書ピアは台帳にコミットされることになる各トランザクションの優先度について投票することができる。順序付けノードは、各トランザクションに対する集計された投票を識別すること、および最も高い優先度から最も低い優先度にトランザクションを順序付けること、等ができる。さらに、ステップ２９５において、各ピア・ノード２８１〜２８３は、ブロックをチャネルのチェーン（または他の分散型台帳）に添付し、それぞれの有効なトランザクションに対して、ライト・セットが現在の状態データベースにコミットされる。イベントは、トランザクション（起動）が、チェーンに不変的に添付されたことをクライアント・アプリケーションに通知するため、ならびにトランザクションが有効化されたか、または無効化されたかについての通知のために発せられる。
【００３７】
図４は、許可されたブロックチェーン・ネットワーク３００の例を示し、これは分散型の非集中化されたピアツーピアのアーキテクチャを特徴とし、証明機関３１８がユーザの役割および資格（permission）を管理する。この例において、ブロックチェーンのユーザ３０２は、許可されたブロックチェーン・ネットワーク３００にトランザクションをサブミットすることができる。トランザクションは、導入、起動、またはクエリであってよく、ＳＤＫを活用するクライアント側のアプリケーションを通じて、ＲＥＳＴのＡＰＩを通じて直接的に、または同様のものを通じて発行されてよい。信頼できるビジネス・ネットワークは、監査人（例えば、米国の株式市場における証券取引委員会）などの規制当局のシステム３１０へのアクセスを提供することができる。一方で、ブロックチェーンのネットワーク事業者のシステム３１１は、規制当局のシステム３１０を「監査人」として、およびブロックチェーンのユーザ３０２を「クライアント」として登録することなど、メンバの資格を管理する。監査人は、台帳に問い合わせることだけに制約されることがあるが、その一方でクライアントは、いくつかのタイプのチェーンコードを導入し、起動し、問い合わせる権限を与えられることがある。
【００３８】
ブロックチェーンの開発者のシステム３１６は、チェーンコードおよびクライアント側のアプリケーションを書く。ブロックチェーンの開発者のシステム３１６は、ＲＥＳＴのインターフェースを通じてチェーンコードを直接的にネットワークに導入することができる。チェーンコードに従来のデータ・ソース３３０からの信任状を含めるために、開発者のシステム３１６は、帯域外の接続を使用してデータにアクセスすることができる。この例において、ブロックチェーンのユーザ３０２は、ピア・ノード３１２を通じてネットワークに接続する。任意のトランザクションを続ける前に、ノード３１２は、証明機関３１８からユーザの登録およびトランザクションの証明書を取得する。いくつかのケースにおいて、ブロックチェーンのユーザは、許可されたブロックチェーン・ネットワーク３００上で取引するために、これらのデジタル証明書をもっていなければならない。一方で、チェーンコードを動かそうとするユーザは、従来のデータ・ソース３３０に対するこれらの信任状の確認を要求されることがある。ユーザの権限を確かめるために、チェーンコードは、従来の処理プラットフォーム３２０を通じて、このデータへの帯域外の接続を使用することができる。
【００３９】
許可されたブロックチェーン・ネットワーク３００において、関係ノード３１２が知られており、ネットワーク内で確認可能なアイデンティティを有している。ピア・ノード３１２のこのアイデンティティは、各ピア・ノード３１２がトランザクションに「裏書」し、その一意の署名と共にその結果を記録することを可能にする。一意の署名は、その後、裏書ポリシの執行を可能にするネットワーク上の他の任意の当事者／ノードによって確認可能である。資格のないブロックチェーンにおいて。許可されたブロックチェーン・ネットワーク３００は、ブロックチェーンのネットワーク事業者３１１などのノードの管理者だけが、特化された裏書ロジックを導入できるようにすることができる。したがって、どんなユーザでもロジックをアップロードできるわけではない。最初に、ロジックは、別のピア・ノード３１２に導入する前に、管理者ノードによって確認されてよい。許可されたブロックチェーン・ネットワーク３００内のピア・ノード３１２が、様々な資格を有することはない。しかし、各ピア・ノード３１２には、トランザクションのライフ・サイクルにおける適正なフェーズ中にピア３１２上で実行される独自の特化された裏書ロジック（例えば、スマート・コントラクト）があってよい。
【００４０】
図５は、実施形態の例による、カスタマイズされた裏書処理を行うブロックチェーン・ノード４２０を示す。図５を参照すると、裏書ノード４２０は、ブロックチェーンなどの分散型台帳Ａにトランザクションをコミットするために、クライアント・ノード４１０からリクエストを受け取る。この例において、裏書ノード４２０は、カスタマイズされた裏書ロジック実行して、分散型台帳Ａに含めるためにトランザクションに裏書すべきか否かを判断する。カスタマイズされた裏書ロジックは、オフ・チェーンのデータ・ソースにアクセスすることができる。非限定的な例として、オフ・チェーンのデータ・ソースは、クロック４２１などの裏書ノード４２０のシステム・ハードウェアと、台帳Ｂ４２２などの別の分散型台帳（ブロックチェーン）と、データベース、ファイル、アプリケーション、および同様のものなどの外部データ・ソース４２３と、入力デバイスを介してユーザから入力を受け取ることができるユーザ・インターフェース４２４と、を含むがこれらに限定されない。
【００４１】
例えば、クライアント・ノード４１０からトランザクション・リクエストを受け取ると、裏書ノード４２０は、リード・セット（トランザクションによって読まれる資産のリスト）およびライト・セット（トランザクションによって修正または追加される資産のリスト）を収集するためだけにトランザクションをシミュレートすることができる。さらに、収集されたリード・セットおよびライト・セットは、ユーザが提供したカスタム裏書ロジックを実装する、裏書ノード４２０のカスタマイズされた裏書スマート・コントラクトに渡されてよい。例えば、カスタム裏書ロジックは、不正行為を検出すること、ユーザ・インターフェース４２４を介してトランザクションへの裏書または却下を人間に通知すること、リード・セットおよびライト・セットを見てアクセス制御を行うこと、ならびに同様のことを行うために、外部データベース４２３または分析プラットフォームに接続することができる。アクセス制御は、クライアントが資産にアクセスするかまたは修正する資格を有しているかどうかを判断することができ、トランザクションは、トランザクションに裏書せずに却下されてよい。裏書に成功するかまたは失敗すると、クライアントが資産にアクセスできない、トランザクションのタイミングが許可されない、または同様のものなど、トランザクションが却下された場合、クライアント・ノード４１０は、妥当な理由と共に裏書ノード４２０によって通知されてよい。
【００４２】
いくつかの実施形態において、１つまたは複数の裏書ノードにおける裏書ロジックは、他の裏書ロジックとは異なってよい。結果的に、裏書ノードを制御するブロックチェーン・ネットワーク内の各組織は、独自の裏書ロジックを実装することができる。特化された裏書ロジックをインストールするために、１つの実施形態において、ノードの始動中に、裏書ロジックのコードは、ロジックを裏書システムのスマート・コントラクトにノードが挿入できるように引数として渡されてよい。すなわち、コードは、裏書ノードにおける裏書ロジックを修正するかまたはそうでなければカスタマイズするために、裏書ノードのスマート・コントラクトに動的に追加されてよい。別の実施形態において、カスタマイズされた裏書ロジックは、チェーンコードの導入中に指定されたノード上に導入されてよい。別の例として、裏書ロジックは、構成トランザクションと呼ばれる特殊なシステム・トランザクションを使用して、裏書ロジックのライフ・サイクル中にアップデートされてよい。このトランザクションは、裏書ロジックをアップデートするために、ノード上でシステムのスマート・コントラクトによってローカルに処理されてよい。
【００４３】
従来の裏書処理では裏書の却下はない。例えば、クライアントがブロックチェーン・ネットワーク内のノードにトランザクションを送ると、このノードがトランザクションに常に裏書する。クライアントが十分な裏書（ブロックチェーン・ネットワーク内のノードの署名）を得ると、トランザクションは、検証およびコミットのためにネットワークにサブミットされてよい。対照的に、実施形態の例において、ノードは、（各ノード、トランザクションのリード・セット、トランザクションのライト・セット、トランザクションをサブミットしたクライアントのアイデンティティ、および同様のものに対して異なることがあるので）例えば、ノードにおけるカスタム裏書ロジックといった、１つまたは複数のパラメータに基づいて受け入れるかまたは却下することができる。
【００４４】
導入中に定義された裏書ポリシの通り、トランザクションに対する十分な裏書を収集することが、クライアント・ノードのタスクである。クライアント・ノードが十分な裏書を受け取れないとき、クライアント・ノードは、数回、リトライし、裏書の却下の際に提供された理由に基づいてトランザクションを調節することができる。クライアントが、十分な裏書がない状態でトランザクションをサブミットする場合、トランザクションは後で却下される。
【００４５】
特化された裏書ロジックにおいて、ピアは、投票をその裏書と共にさらに記録することができる。様々な実施形態によれば、投票は、ピアが実行したカスタム裏書ロジックの結果として取り込まれた値であってよい。投票は、適正なサブシステムによって解釈され、処理される。例えば、投票は、（例えば、不明瞭な値といった）バイトのバッグであってよい。例えば、裏書ノードは、トランザクションがネットワーク内で受け取るはずの優先度について投票することができる。このピアからの「投票」は、このトランザクションに割り当てられる最終的な優先度を見つけ出すために、他のピアからの「投票」と共に考慮される。どのように投票が突き合わされるかは、平均、最大、最小、等のように、受け入れたポリシに基づいてよい。
【００４６】
図６は、実施形態の例による、カスタマイズされた裏書に基づいてトランザクションを処理する方法５００Ａを示す。例えば、方法５００Ａは、裏書ノード（例えば、図５のノード４２０、等）によって行われてよい。ノードは、サーバ、データベース、コンピュータ、デバイス、クラウド・プラットフォーム、および同様のものなどの、コンピューティング・システムを含むことができる。図６を参照すると、５１０において、方法は、クライアント・デバイスからブロックチェーン・リクエストを、ネットワークを介して受け取ることを含む。例えば、リクエストは、トランザクション、およびブロックチェーン・ネットワーク内のノードの全体にわたって複製される分散型台帳にトランザクションを格納するリクエスト含むことができる。リクエストは、トランザクションに裏書することを裏書ノードにリクエストする指標も含むことができる。
【００４７】
５２０において、方法は、トランザクションによって読まれるデータのリード・セットおよびトランザクションによって書かれるデータのライト・セットを生成するために、トランザクションをシミュレートすることを含む。５３０において、方法は、ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックを実行することによって、分散型台帳に関するトランザクションに裏書すべきかどうかを判断することをさらに含む。例えば、カスタマイズ可能な裏書ロジックを実行することは、生成されたリード・セットおよびライト・セットを入力として受け取り、生成されたリード・セットおよびライト・セットに基づいて、トランザクションが分散型台帳のデータ・ブロックにコミットされるべきか否かを判断する。５４０において、方法は、カスタマイズされた裏書ロジックの判断の結果についての情報をクライアント・デバイスに伝送することを含む。いくつかの実施形態において、ブロックチェーン・ノードのカスタマイズ可能な裏書ロジックは、トランザクションに裏書する別のブロックチェーン・ノードのカスタマイズ可能な裏書ロジックとは異なる裏書判断を行う。
【００４８】
図７および図８は、カスタマイズされた裏書ロジックに基づいて、ブロックチェーンのトランザクションを処理する方法５００Ｂおよび５００Ｃのさらなる例を示す。図７において、カスタマイズ可能な裏書ロジックは、５３１において、例えば、外部データ・ソースからのデータ、ユーザ・インターフェースから受け取られたユーザ入力、別のブロックチェーンから識別された情報、ブロックチェーン・ノードのシステム・クロックから抽出された情報、および同様のものといった、オフ・チェーンで取得したデータに基づいて分散型台帳にブロックチェーン・リクエストをコミットすべきか否かを判断する。トランザクションが分散型台帳にコミットされるのを却下すると判断するのに応答して、裏書ロジックは、５３２において、トランザクションを却下する理由をさらに判断し、５３３において、判断された理由をクライアント・デバイスに伝送することができる。別の例として、図８において、５３５において、分散型台帳にトランザクションをコミットすると判断するのに応答して、カスタマイズされた裏書ロジックは、５３６において、分散型台帳にコミットされるためのトランザクションの優先レベルを判断し、５３７において、判断された優先レベルをクライアント・デバイスに伝送することができる。
【００４９】
図９は、実施形態の例による動作の方法のうちの１つまたは複数に従って、ブロックチェーンに対して様々な動作を行うように構成される物理インフラストラクチャを示す。図９を参照すると、構成６００Ａは、ブロックチェーン６２０およびスマート・コントラクト６４０を有する物理インフラストラクチャ６１０を含み、実施形態の例のいずれかに含まれる動作ステップ６１２のいずれかを実行することができる。ステップ／動作６１２は、１つまたは複数のカスタマイズされた裏書ロジックを含むことができる。ステップは、コンピュータ・システム構成の物理インフラストラクチャ６１０上にある１つまたは複数のスマート・コントラクト６４０、またはブロックチェーン６２０、あるいはその両方から書かれるかまたは読まれる、出力されたまたは書かれた情報を表すことができる。データは、カスタマイズされた裏書ロジックなどの実行されたスマート・コントラクト６４０、またはブロックチェーン６２０、あるいはその両方から出力されてよい。物理インフラストラクチャ６１０は、１つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、またはワイヤレス通信デバイス、あるいはその組合せを含むことができる。
【００５０】
図１０は、実施形態の例による、ブロックチェーンに対してスマート・コントラクトの条項を執行するように構成される、契約当事者と仲介サーバの間のスマート・コントラクトの構成の例を示す。図１０を参照すると、構成６００Ｂは、通信セッション、資産移転セッション、あるいは１つまたは複数のユーザ・デバイス６５２、もしくは６５６、またはその両方を明確に識別するスマート・コントラクト６４０によって動かされる処理または手続きを表すことができる。スマート・コントラクト実行に関する実行、動作、および結果は、サーバ６５４によって管理されてよい。例えば、サーバ６５４は、本明細書で説明されるようなカスタマイズされた裏書ロジックを含むソフトウェア・プログラムを実行することができる。スマート・コントラクト６４０の内容は、スマート・コントラクトのトランザクションの当事者であるエンティティ６５２および６５６の１つまたは複数によるデジタル署名を要求することができる。スマート・コントラクト実行の結果は、ブロックチェーンのトランザクションとしてブロックチェーンに書かれてよい。
【００５１】
上記の実施形態は、ハードウェアに、プロセッサによって実行されるコンピュータ・プログラムに、ファームウェアに、または上記の組合せの中に実装されてよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体上で具体化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（「ＲＡＭ」：random access memory）、フラッシュ・メモリ、リード・オンリ・メモリ（「ＲＯＭ」：read-only memory）、消去可能プログラマブル・リード・オンリ・メモリ（「ＥＰＲＯＭ」：erasable programmable read-only memory）、電気的消去可能プログラマブル・リード・オンリ・メモリ（「ＥＥＰＲＯＭ」：electrically erasable programmable read-only memory）、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク・リード・オンリ・メモリ（「ＣＤ−ＲＯＭ」：compact disk read-only memory）、または当技術分野で知られたストレージ媒体の他の任意の形式の中にあってよい。
【００５２】
例示的なストレージ媒体は、プロセッサがストレージ媒体に情報を読み書きできるように、プロセッサに連結されてよい。別の方式では、ストレージ媒体は、プロセッサに統合されてもよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路（「ＡＳＩＣ」：application specific integrated circuit）の中にあってよい。別の方式では、プロセッサおよびストレージ媒体は、個別の構成要素として存在してよい。例えば、図１１は、コンピュータ・システムのアーキテクチャの例７００を示し、これは、上述の構成要素、等のいずれかを表すか、またはこれらに統合されてよい。
【００５３】
図１１は、本明細書で説明される本出願の実施形態の使用または機能の範囲について、何らかの限定を示唆することを意図するものではない。いずれにしても、コンピューティング・ノード７００は、実装されること、または上文に示す機能のいずれかを行うこと、あるいはその両方ができる。例えば、コンピューティング・ノード７００は、組織化ノード、リクエスト・ノード、ネットワーク・ノード、（例えば、組織者ノードおよびネットワーク・ノードといった）ノードの組合せ、ならびに同様のものであってよい。
【００５４】
コンピューティング・ノード７００に、コンピュータ・システム／サーバ７０２があり、これは、非常に多くの他の汎用または特殊用途のコンピューティング・システム環境または構成で動作するものである。コンピュータ・システム／サーバ７０２と共に使用するのに適切なことがある、よく知られたコンピューティング・システム、環境、または構成、あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、ならびに上記のシステムまたはデバイスのいずれか、および同様のものを含む分散クラウド・コンピューティング環境を含むがこれらに限定されない。
【００５５】
コンピュータ・システム／サーバ７０２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システムが実行可能な命令の一般的な背景で説明されてよい。一般に、プログラム・モジュールは、特定のタスクを行うか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、ロジック、データ構造、等を含むことができる。コンピュータ・システム／サーバ７０２は、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが行われる分散クラウド・コンピューティング環境の中で実践されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモート両方のコンピュータ・システムのストレージ媒体の中に配置されてよい。
【００５６】
図１１に示されるように、クラウド・コンピューティング・ノード７００内のコンピュータ・システム／サーバ７０２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ７０２の構成要素は、１つまたは複数のプロセッサまたは処理ユニット７０４、システム・メモリ７０６、およびシステム・メモリ７０６を含む様々なシステムの構成要素をプロセッサ７０４に連結するバスを含むことができるがこれらに限定されない。
【００５７】
バスは、いくつかのタイプのバス構造のいずれかのうちの１つまたは複数を表し、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む。例として、また限定ではなく、このようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ：Industry Standard Architecture）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Micro Channel Architecture）バス、拡張ＩＳＡ（ＥＩＳＡ：Enhanced ISA）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Video Electronics Standards Association）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ：Peripheral Component Interconnect）バスを含む。
【００５８】
コンピュータ・システム／サーバ７０２は、典型的には、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ７０２によってアクセス可能な任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体の両方、リムーバブルと非リムーバブル・メディアの両方を含む。システム・メモリ７０６は、１つの実施形態において、他の図の流れ図を実装する。システム・メモリ７０６は、ランダム・アクセス・メモリ（ＲＡＭ）７１０、またはキャッシュ・メモリ７１２、あるいはその両方などの、揮発性メモリの形でコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ７０２は、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。ほんの一例として、ストレージ・システム７１４は、非リムーバブルの不揮発性磁気媒体（図示せず、また典型的には「ハード・ドライブ」と呼ばれる）に読み書きするために提供されてよい。図示しないが、リムーバブルの不揮発性磁気ディスク（例えば、「フロッピー・ディスク」）に読み書きするための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などのリムーバブルの不揮発性光ディスクに読み書きするための光ディスク・ドライブが提供されてよい。このような例において、それぞれは、１つまたは複数のデータ媒体インターフェースによってバスに接続されてよい。下記でさらに描写され、説明されるように、メモリ７０６は、本出願の様々な実施形態の機能を行うように構成されるプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００５９】
プログラム／ユーティリティ７１６は、プログラム・モジュール７１８のセット（少なくとも１つ）を有し、例として、また限定ではなく、メモリ７０６、ならびにオペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに格納されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはこれらのいくつかの組合せは、ネットワーク環境の実装を含むことができる。プログラム・モジュール７１８は一般に、本明細書で説明されるような本出願の様々な実施形態の機能、または方法、あるいはその両方を実行する。
【００６０】
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化されてよい。したがって、本出願の態様は、全面的にハードウェアの実施形態、（ファームウェア、常駐ソフトウェア、マイクロコード、等を含む）全面的にソフトウェアの実施形態、またはすべて全体的に本明細書で「回路」、「モジュール」、もしくは「システム」と呼ばれることがあるソフトウェアとハードウェアの態様を組み合わせる実施形態の形をとることができる。さらに、本出願の態様は、具体化されるコンピュータ可読プログラム・コードを有する１つまたは複数のコンピュータ可読媒体の中で具体化されるコンピュータ・プログラム製品の形をとることができる。
【００６１】
コンピュータ・システム／サーバ７０２は、キーボード、ポインティング・デバイス、ディスプレイ７２２、等などの１つもしくは複数の外部デバイス７２０、ユーザがコンピュータ・システム／サーバ７０２と対話できるようにする１つもしくは複数のデバイス、またはコンピュータ・システム／サーバ７０２が１つもしくは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデム、等）、あるいはその組合せと通信することもできる。このような通信は、Ｉ／Ｏインターフェース７２４を介して発生させることができる。さらに、コンピュータ・システム／サーバ７０２は、ネットワーク・アダプタ７２６を介して、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組合せなどの、１つまたは複数のネットワークと通信することができる。描写されるように、ネットワーク・アダプタ７２６（例えば、ネットワーク・インターフェース、等）は、バスを介してコンピュータ・システム／サーバ７０２の他の構成要素と通信する。図示しないが、他のハードウェア構成要素、またはソフトウェア構成要素、あるいはその両方が、コンピュータ・システム／サーバ７０２と共に使用されることもあるということを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ保存ストレージ・システム、等を含むがこれらに限定されない。
【００６２】
様々な実施形態によれば、ネットワーク・インターフェース７２６は、クライアント・デバイスからブロックチェーン・リクエストを受け取ることができる。例えば、ブロックチェーン・リクエストは、クライアント・デバイスから直接的に受け取られた、１つまたは複数の中間のブロックチェーン・ノードを介して受け取られた、および同様のものから受け取られた、クライアント・デバイスによってリクエストされたトランザクションを含むことができる。プロセッサ７０４は、トランザクションによって読まれるデータのリード・セットおよびトランザクションによって書かれるデータのライト・セットを生成するために、トランザクションをシミュレートすることができる。様々な実施形態によれば、プロセッサ７０４は、ブロックチェーン・ノードに固有のカスタマイズ可能な裏書ロジックの実行によって、分散型台帳に関するトランザクションに裏書すべきかどうかを判断することができる。カスタマイズされた裏書ロジックは、ユーザがノードに追加したものであってよく、ブロックチェーンの外側の様々なデータ・ソースを考慮することができる。プロセッサによって実行されると、カスタマイズ可能な裏書ロジックは、生成されたリード・セットおよびライト・セットを入力として受け取り、生成されたリード・セットおよびライト・セットに基づいて、トランザクションが分散型台帳のデータ・ブロックにコミットされるべきか否かを判断する。さらに、プロセッサ７０４は、カスタマイズされた裏書ロジックの判断の結果についての情報をクライアント・デバイスに、直接的にまたは１つもしくは複数の中間ノードを介して伝送するようにネットワーク・インターフェース７２６を制御することができる。
【００６３】
いくつかの実施形態において、プロセッサ７０４は、カスタマイズされた裏書ロジックによって、同じトランザクションにも裏書する別のブロックチェーン・ノードのカスタマイズ可能な裏書ロジックとは異なる裏書判断を行うことができる。カスタマイズ可能な裏書ロジックはプロセッサ７０４をトリガして、（例えば、データベース、台帳、ファイル、等といった）外部データ・ソースの１つまたは複数からのデータ、ユーザ・インターフェースから受け取られたユーザ入力、（例えば、分析等の）アプリケーション、別のブロックチェーンから識別された情報、ブロックチェーン・ノードのシステム・クロックなどのブロックチェーン・ノードのシステム・ハードウェアから抽出された情報、および同様のものなど、オフ・チェーンで取得したデータに基づいて、分散型台帳にトランザクションをコミットすべきか否かを判断することができる。
【００６４】
いくつかの実施形態において、トランザクションが分散型台帳にコミットされるのを却下すると判断するのに応答して、カスタマイズされた裏書ロジックを実行するプロセッサ７０４は、トランザクションを却下する理由を判断することができ、プロセッサ７０４は、クライアント・デバイスに理由を伝送するようにネットワーク・インターフェース７２６を制御することができる。別の例として、分散型台帳にトランザクションをコミットすると判断するのに応答して、カスタマイズされた裏書ロジックを実行するプロセッサ７０４は、分散型台帳にコミットされるためのトランザクションの優先レベルを判断することができ、プロセッサ７０４は、トランザクションの優先レベルをクライアント・デバイスに伝送するようにネットワーク・インターフェース７２６をさらに制御することができる。
【００６５】
システム、方法、および非一時的コンピュータ可読媒体のうちの少なくとも１つの例示的な実施形態が添付の図面に示され、前述の詳細な説明で説明されたが、本出願は開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されるように、非常に多くの再配置、修正、および代用を行うことができるということが理解されよう。例えば、様々な図のシステムの能力は、本明細書で説明される、または分散アーキテクチャ内の、モジュールまたは構成要素の１つまたは複数によって行われてよく、送信機、受信機、または両方のペアを含むことができる。例えば、個別のモジュールによって行われる機能のすべてまたは一部は、これらのモジュールの１つまたは複数によって行われてよい。さらに、本明細書で説明される機能は、様々な時間に、およびモジュールまたは構成要素の内部または外部の様々なイベントに関連して、行われてよい。また、様々なモジュール間で送られる情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、ワイヤレス・デバイス、有線デバイスのうちの少なくとも１つを介して、または複数のプロトコルを介して、あるいはその両方を介して、モジュール間で送られてよい。また、モジュールのいずれかによって送られるか、または受け取られるメッセージは、直接的に、または他のモジュールのうちの１つもしくは複数を介して、あるいはその両方によって、送られるか、または受け取られてよい。
【００６６】
当業者は、「システム」は、パーソナル・コンピュータ、サーバ、コンソール、パーソナル・デジタル・アシスタント（ＰＤＡ：personal digital assistant）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、もしくは他の任意の適切なコンピューティング・デバイス、またはデバイスの組合せとして具体化されてよいということを理解するであろう。「システム」によって行われるような上述の機能を提示することは、何らかの方式で本出願の範囲を限定することを意図するものではなく、多くの実施形態の１つの例を提供することを意図するものである。実際は、本明細書で開示される方法、システム、および装置は、コンピューティング技術と一致するローカライズされ、分散された形で実装されてよい。
【００６７】
本明細書で説明されるシステムの特徴のいくつかは、これらの実装形態の独立性を特に強調するためにモジュールとして提示されたということに留意されたい。例えば、モジュールは、カスタムの超大規模集積（ＶＬＳＩ：very large-scale integration）回路もしくはゲート・アレイを備えるハードウェア回路、ロジック・チップ、トランジスタなどの市販の半導体、または他の個別の構成要素として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィックス処理ユニット、または同様のものなどの、プログラマブル・ハードウェア・デバイスに実装されてもよい。
【００６８】
モジュールは、様々なタイプのプロセッサによって実行するために、ソフトウェアに少なくとも部分的に実装されてよい。実行可能コードの識別される単位は、例えば、オブジェクト、手続き、または関数として組織化され得る、例えば、コンピュータ命令の１つまたは複数の物理ブロックまたは論理ブロックを備えることができる。それでも、識別されたモジュールの実行ファイルは、一緒に物理的に配置される必要はなく、一緒に論理的に結合されると、モジュールを含み、モジュールに対する決められた目的を実現する様々な場所に格納された完全に異なる命令を含むことができる。さらに、モジュールは、コンピュータ可読媒体に格納されてよく、媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータを格納するために使用される他のこのような任意の媒体であってよい。
【００６９】
実際は、実行可能コードのモジュールは、単一の命令、または多くの命令であってよく、いくつかの様々なコード・セグメント上、様々なプログラムの中、およびいくつかのメモリ・デバイスにわたって分散されることさえ可能である。同様に、オペレーション・データは、モジュール内に本明細書では識別され、示されることがあり、任意の適切な形で具体化され、任意の適切なタイプのデータ構造の中で組織化されてよい。オペレーション・データは、単一のデータ・セットとして収集されてよく、また様々なストレージ・デバイスを含む様々な場所に分散されてもよく、単にシステムまたはネットワーク上の電子信号として少なくとも部分的に存在してもよい。
【００７０】
本出願の構成要素は、本明細書の図で全体的に説明され、示されるように、多種多様な様々な構成の中に配置され、デザインされてよいということが容易に理解されよう。したがって、実施形態の詳細な説明は、特許請求されるような本出願の範囲を限定することを意図するものではなく、本出願の選択された実施形態を表すにすぎない。
【００７１】
当業者は、上記は、異なる順序のステップで、または開示された構成とは異なる構成のハードウェア要素で、あるいはその両方で実践されてよいということを容易に理解するであろう。したがって、本出願は、これらの好ましい実施形態に基づいて説明されたが、いくつかの修正、変更、および代替の構造が明白であることが当業者には明白であろう。
【００７２】
本出願の好ましい実施形態が説明されたが、説明された実施形態は例示的なものにすぎず、本出願の範囲は、すべての範囲の均等物およびその変更形態（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォーム、等）によって考慮されるとき、添付の特許請求の範囲によってのみ定義されるべきであるということを理解されたい。
【符号の説明】
【００７３】
１１０  クライアント・デバイス、クライアント・ノード、クライアント・システム、クライアント
１２０  ピア・ノード
１３０  裏書ノード（ロジックＡ）
１３０  裏書ノード（ロジックＢ）
１４０  順序付けノード
１５０  ネットワーク
２０１  アプリケーション・クライアント・ノード、クライアント、クライアント・ノード
２０５  ブロックチェーン・プラットフォーム
２１０  物理インフラストラクチャ、物理マシン、インフラストラクチャ
２２０  ブロックチェーン層（仮想実行環境）
２３０  信託業務（暗号）
２５０  プログラム／アプリケーション・コード、コード、アプリケーション・コード
２５２  ハッシュ化された識別子情報、ハッシュ化された識別子
２５４  サード・パーティのアプリケーションへの認められたアクセス
２７０  アプリケーション
２８０  ブロックチェーン・ノード２８１〜２８４のグループ、ブロックチェーン・ノード
２８１  ブロックチェーン・ノード、ノード、裏書ピア・ノード、裏書ピア、ピア、ピア・ノード、ピア１、第１のピア・ノード
２８２  ブロックチェーン・ノード、ノード、ピア、ピア・ノード、ピア２、第２のピア・ノード
２８３  ブロックチェーン・ノード、ノード、ピア、ピア・ノード、ピア３、第３のピア・ノード
２８４  ブロックチェーン・ノード、ノード、順序付けサービス・ノード、順序付けサービス、順序付けノード、ピア４、第４のピア・ノード（順序付けノード）
２９１  トランザクション
２９２  レスポンス
２９３  トランザクション・データ
２９４  トランザクション
２９５  台帳にトランザクションをコミットする
３００  許可されたブロックチェーン・ネットワーク、許可されたブロックチェーン
３０２  ブロックチェーンのユーザ
３１０  規制当局のシステム、規制当局
３１１  ブロックチェーンのネットワーク事業者のシステム、ブロックチェーンのネットワーク事業者
３１２  ピア・ノード、ピア、ノード
３１６  ブロックチェーンの開発者のシステム、開発者のシステム、ブロックチェーンの開発者
３１８  証明機関
３２０  処理プラットフォーム
３３０  データ・ソース
４１０  クライアント・ノード、クライアント／ノード（台帳Ａ）
４２０  カスタマイズされた裏書処理を行うブロックチェーン・ノード、裏書ノード（台帳Ａ）
４２１  クロック、システム・クロック
４２２  ブロックチェーン（台帳Ｂ）
４２３  外部データ・ソース、外部データベース、データ・ソース
４２４  ユーザ・インターフェース
５１０  クライアント・デバイスからブロックチェーンのトランザクションを受け取る
５２０  リード・セットおよびライト・セットを生成するためにトランザクションをシミュレートする
５３０  カスタマイズされた裏書ロジックの実行によって分散型台帳に対するトランザクションに裏書すべきかどうかを判断する
５４０  カスタマイズされた裏書ロジックの判断の結果についての情報を伝送する
５３１  オフ・チェーンで取得したデータに基づいて分散型台帳にトランザクションをコミットすべきか否かを判断する
５３２  トランザクションがコミットされるのを却下すると判断するのに応答して、却下の理由を判断する
５３３  判断された理由をクライアント・デバイスに伝送する
５３５  分散型台帳にトランザクションをコミットすると判断する
５３６  分散型台帳にコミットされるためのトランザクションの優先レベルを判断する
５３７  判断された優先レベルをクライアント・デバイスに伝送する
６１０  物理インフラストラクチャ
６１２  動作ステップ、ステップ／動作、ステップ
６２０  ブロックチェーン
６４０  スマート・コントラクト
６５２  ユーザ・デバイス、エンティティ、ユーザ・デバイス・エンティティ＃１
６５４  サーバ
６５６  ユーザ・デバイス、エンティティ、ユーザ・デバイス・エンティティ＃２
７０２  コンピュータ・システム／サーバ
７０４  プロセッサ、処理ユニット
７０６  システム・メモリ、メモリ
７１２  キャッシュ・メモリ、キャッシュ
７１４  ストレージ・システム
７２０  外部デバイス
７２２  ディスプレイ
７２４  Ｉ／Ｏインターフェース
７２６  ネットワーク・インターフェース、ネットワーク・アダプタ
【図１】
2019160312.tif 000003
【図２】
2019160312.tif 000004
【図３】
2019160312.tif 000005
【図４】
2019160312.tif 000006
【図５】
2019160312.tif 000007
【図６】
2019160312.tif 000008
【図７】
2019160312.tif 000009
【図８】
2019160312.tif 000010
【図９】
2019160312.tif 000011
【図１０】
2019160312.tif 000012
【図１１】
2019160312.tif 000013