(57)【要約】【課題】ブロックチェーン外に関連データを格納及び検証を適切に行う。【解決手段】第１のブロックチェーンノードに関連付けられた第１の計算装置は、チェーン外の記憶装置に格納される関連データと共にトランザクション要求を受信する。第１のブロックチェーンノードは、第２のブロックチェーンノードに通信を送信してトランザクションをブロックチェーンに記録することを提案する。トランザクションは、関連データの検証までの間条件付きでブロックチェーンの新しいブロックに記録される。第１のブロックチェーンノードは、第２のブロックチェーンノードから、検証されたとしてブロックチェーンへのトランザクションの記録を提案する通信を受信する。第１及び第２のブロックチェーンノードは、１つまたは複数の通信を送信して、トランザクションの有効性を示す別の新しいブロックをブロックチェーンに追加する。【選択図】図１
2020017256.tif 000002
【特許請求の範囲】
【請求項１】
第１のブロックチェーンノードと関連付けられる第１の計算装置を含み、
前記第１の計算装置は、１以上の第２のブロックチェーンノードそれぞれと関連付けられる１以上の第２の計算装置と通信可能であり、
前記第１の計算装置は、命令に従って動作することで所定の処理を実行する１以上のプロセッサを含み、
前記所定の処理は、
前記第１の計算装置によって、トランザクションの要求及び関連付けられた関連データを受信し、
前記関連データをチェーン外の格納場所に格納し、
前記第１のブロックチェーンノードによって、前記関連データのコンテンツを表すハッシュ値を含む通信を、前記１以上の第２のブロックチェーンノードに送信して、前記トランザクションをブロックチェーン上に記録することを提案し、
前記第１のブロックチェーンノードによって、前記１以上の第２のブロックチェーンノードのうちの少なくとも１つから、前記関連データの検証がされるまで条件付きで受け入れられたとして前記ブロックチェーンへの前記トランザクションの記録を承認する通信を受信し、
前記第１のブロックチェーンノードによって、前記１以上の第２のブロックチェーンノードに、前記ハッシュ値と少なくとも１つの承認とを含むトランザクション情報を送信して前記ブロックチェーンに新しいブロックを追加し、
前記第１の計算装置によって、前記１以上の第２のブロックチェーンノードに関連付けられた前記１以上の第２の計算装置に、前記関連データを送信し、
前記第１のブロックチェーンノードによって、前記１以上の第２のブロックチェーンノードのうちの少なくとも１つから、検証されたとして前記ブロックチェーンへの前記トランザクションの記録を提案する通信を受信し、
前記第１のブロックチェーンノードによって、前記１以上の第２のブロックチェーンノードのうちの少なくとも１つに、検証された前記トランザクションの前記ブロックチェーン上での記録を承認する通信を送信し、
前記第１のブロックチェーンノードによって、前記１以上の第２のブロックチェーンノードのうちの少なくとも１つから、前記ハッシュ値と前記少なくとも１つの承認とを含む前記トランザクション情報を受信して前記ブロックチェーンに別の新しいブロックを追加する、システム。
【請求項２】
請求項１に記載のシステムであって、
前記第１のブロックチェーンノードによって、前記通信を前記１以上の第２のブロックチェーンノードに送信して前記トランザクションを前記ブロックチェーン上に記録することを提案することは、前記トランザクションについてのトランザクション情報及び前記第１のブロックチェーンノードに関連付けられたデジタル署名を送信することを含む、システム。
【請求項３】
請求項２に記載のシステムであって、
前記第１のブロックチェーンノードによって、前記１以上の第２のブロックチェーンノードのうちの少なくとも１つから、検証されたとして前記ブロックチェーンへの前記トランザクションの記録を提案する前記通信を受信することは、前記１以上の第２のブロックチェーンノードの少なくとも１つが前記トランザクション情報及び前記関連データを審査して、前記トランザクション情報及び前記関連データが有効であると判定したことを示す、システム。
【請求項４】
請求項３に記載のシステムであって、
前記トランザクション情報及び前記関連データを審査することは、前記第１のブロックチェーンノードから受信した前記ハッシュ値を前記関連データから計算されたハッシュ値と比較することを含む、システム。
【請求項５】
請求項３に記載のシステムであって、
前記トランザクション情報及び前記関連データを審査することは、前記トランザクション情報及び前記関連データを審査して前記関連データが前記トランザクション情報に記述された前記トランザクションを指示することを保証することを含む、システム。
【請求項６】
請求項１に記載のシステムであって、さらに、
前記関連データのサイズと前記ブロックチェーン上の格納のための閾値サイズとを比較し、
前記関連データのサイズが前記閾値サイズを超えていることに基づいて、前記関連データをチェーン外に格納することを指定する、システム。
【請求項７】
請求項１に記載のシステムであって、さらに、
前記１以上の第２の計算装置へ前記関連データを送信することは、前記関連データを少なくとも一つの他のトランザクションの関連データと共にバッチ処理することにより実行され、
前記送信することは、少なくとも一つの条件が満たされていることに基づいてトリガされ、
前記少なくとも一つの条件は、
データ転送を実行するための所定のスケジュールに基づく前記データ転送の指示、
前記データ転送を実行するのに十分な帯域幅または他のリソースがあるという指示の受信、
閾値数のトランザクションがデータ転送を待っているという指示の受信、及び
閾値数の関連データオブジェクトが転送を待っているという指示の受信、の少なくとも一つを含む、システム。
【請求項８】
請求項１に記載のシステムであって、さらに、
前記第１の計算装置の前記１以上のプロセッサは、ブロックチェーンプログラムを実行し、前記第１の計算装置に前記第１のブロックチェーンノードとして機能させる、システム。
【請求項９】
第１のブロックチェーンノードと関連付けられる第１の計算装置によって、トランザクションの要求とチェーン外の格納場所に関連付けられた関連データを格納する指示とを受信し、
前記第１のブロックチェーンノードによって、前記関連データのコンテンツを表す要約値を含む通信を、第２のブロックチェーンノードに送信して、前記トランザクションをブロックチェーン上に記録することを提案し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードから、前記関連データの検証がされるまで条件付きで受け入れられたとして前記ブロックチェーンへの前記トランザクションの記録を承認する通信を受信し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードに通信を送信して前記ブロックチェーンに新しいブロックを追加し、前記新しいブロックは、前記トランザクションの条件付きで受け入れを示し、
前記第１の計算装置によって、前記第２のブロックチェーンノードに関連付けられた第２の計算装置に、前記関連データを送信し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードから、検証されたとして前記ブロックチェーンへの前記トランザクションの記録を提案する通信を受信し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードに、検証された前記トランザクションの前記ブロックチェーン上での記録を承認する通信を送信し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードから、通信を受信して前記ブロックチェーンに前記トランザクションの有効性を示す別の新しいブロックを追加する、ことを含む方法。
【請求項１０】
請求項９に記載の方法であって、
前記第１の計算装置によって、前記関連データを前記第２のブロックチェーンノードに関連づけられている前記第２の計算装置に送信することは、前記関連データを他のトランザクションの関連データと共にバッチ処理することを含む、方法。
【請求項１１】
請求項９に記載の方法であって、
前記第１の計算装置により、前記第２のブロックチェーンノードに関連づけられている前記第２の計算装置へ前記関連データを送信することは、少なくとも一つの条件が満たされていることに基づいてトリガされ、
前記少なくとも一つの条件は、
データ転送を実行するための所定のスケジュールに基づく前記データ転送の指示、
前記データ転送を実行するのに十分な帯域幅または他のリソースがあるという指示の受信、
閾値数のトランザクションがデータ転送を待っているという指示の受信、及び
閾値数の関連データオブジェクトが転送を待っているという指示の受信、の少なくとも一つを含む、方法。
【請求項１２】
請求項９に記載の方法であって、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードから、検証されたとして前記ブロックチェーンへの前記トランザクションの記録を提案する前記通信を受信することは、前記第２のブロックチェーンノードに関連付けられている前記第２の計算装置が、前記トランザクション及び前記関連データを審査して前記トランザクション及び前記関連データが有効であると判定したことを示す、方法。
【請求項１３】
請求項９に記載の方法であって、
前記関連データを受信することは、少なくとも一部において、前記第２の計算装置に、前記第１のブロックチェーンノードからの前記要約値を受信した前記関連データのコンテンツから計算される要約値と比較することにより前記トランザクション及び前記関連データを審査させる、方法。
【請求項１４】
請求項９に記載の方法であって、
前記第１のブロックチェーンノードによって、前記通信を前記第２のブロックチェーンノードに送信して前記トランザクションを前記ブロックチェーン上に記録することを提案することは、前記トランザクションについてのトランザクション及び前記第１のブロックチェーンノードに関連付けられたデジタル署名を送信することを含む、方法。
【請求項１５】
請求項９に記載の方法であって、
前記要約値は、ハッシュアルゴリズムを使用して、少なくとも前記関連データのコンテンツから計算される、方法。
【請求項１６】
第１のブロックチェーンノードと関連付けられる第１の計算装置によって、トランザクションの要求とチェーン外の格納場所に関連付けられた関連データを格納する指示とを受信し、
前記第１のブロックチェーンノードによって、前記関連データのコンテンツを表す要約値を含む通信を、第２のブロックチェーンノードに送信して、前記トランザクションをブロックチェーン上に記録することを提案し、
前記第１の計算装置によって、前記第２のブロックチェーンノードに関連付けられた第２の計算装置に、前記関連データを送信し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードから、前記関連データの検証に基づいて受け入れられたとして前記ブロックチェーンへの前記トランザクションの記録を承認する通信を受信し、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードに通信を送信して前記ブロックチェーンに前記トランザクションの受け入れを示す新しいブロックを追加する、ことを含む方法。
【請求項１７】
請求項１６に記載の方法であって、
前記第１のブロックチェーンノードによって、前記第２のブロックチェーンノードから、前記関連データの検証に基づいて受け入れられたたとして前記ブロックチェーンへの前記トランザクションの記録を承認する通信を受信することは、前記第２のブロックチェーンノードが前記トランザクション及び前記関連データを審査して、前記トランザクション及び前記関連データが有効であると判定したことを示す、方法。
【請求項１８】
請求項１７に記載の方法であって、
前記トランザクション及び前記関連データを審査することは、前記第１のブロックチェーンノードから受信した前記要約値と前記関連データから計算された要約値とを比較することを含む、方法。
【請求項１９】
請求項１６に記載の方法であって、
前記第１のブロックチェーンノードによって、前記通信を前記第２のブロックチェーンノードに送信して前記トランザクションを前記ブロックチェーン上に記録することを提案することは、前記トランザクションについてのトランザクション情報及び前記第１のブロックチェーンノードに関連付けられたデジタル署名を送信することを含む、方法。
【請求項２０】
請求項１６に記載の方法であって、さらに、
前記関連データのサイズと前記ブロックチェーン上の格納のための閾値サイズとを比較し、
前記関連データのサイズが前記閾値サイズを超えていることに基づいて、前記関連データをチェーン外に格納することを指定する、ことを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ブロックチェーンにおける検証を行うシステムに関する。
【背景技術】
【０００２】
ブロックチェーンは、ブロックと呼ばれる連続的に成長する一連の（すなわち、チェーンの）レコードを維持する一種の分散データ構造である。各ブロックには、タイムスタンプと直前のブロックへのリンクが含まれている。ブロックはトランザクションまたは他の種類の情報を格納することができる。ブロックの検証プロセスはかなり簡単に実行でき、これにより不正なトランザクションの可能性が減少する。ネットワーク上の複数の場所に分散してデータを格納することで、ブロックチェーンは、データが一元的に管理されることによるリスクを軽減または排除する。
【０００３】
ブロックチェーン技術は、ブロックチェーン上に大きなサイズのデータを記憶するのに適しているとは考えられていない。例えば、ブロックチェーンの各ブロックが最大限度までの特定量のデータのみを格納できるように、ブロックサイズを制限することができる。ブロックサイズ制限は、ブロックチェーンネットワークを構成する複数のコンセンサスノード間のブロックの通信を容易にすることができる。いくつかの例において、大きいファイルは、ブロックチェーン内の複数のブロックにまたがって格納するために小さいファイルに分割されることがある。他の場合には、大きなファイルまたは他の大きなサイズのデータをブロックチェーンとは別に記憶することができ（すなわち、「オフチェーン」）、データのハッシュをブロックチェーンに記憶してブロックチェーン上のデータのレコードを維持することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１９−４４６３号公報
【発明の概要】
【０００５】
本明細書におけるいくつかの例は、関連データと共にトランザクション要求を受信する第１のブロックチェーンノードに関連付けられた第１の計算装置を含む。関連データはチェーン外記憶装置に格納される。第１のブロックチェーンノードは、第２のブロックチェーンノードに通信を送信して、トランザクションをブロックチェーンに記録することを提案する。トランザクションは関連データの検証まで条件付きでブロックチェーンの新しいブロックに記録される。第１の計算装置は、検証を実行する第２のブロックチェーンノードに関連付けられた第２の計算装置に関連データを送信する。第１のブロックチェーンノードは、第２のブロックチェーンノードから、検証されているとしてブロックチェーンへのトランザクションの記録を提案する通信を受信する。第１及び第２のブロックチェーンノードは１または複数の通信を送信して、トランザクションの有効性を示す別の新しいブロックをブロックチェーンに追加する。
【図面の簡単な説明】
【０００６】
【図１】いくつかの実装形態による、データのブロックチェーンロギングのためのシステムの例示的アーキテクチャを示す。
【図２】いくつかの実装による、チェーン外に格納された関連データの同期検証のための例示的なプロセスを示すシーケンス図である。
【図３】いくつかの実装による、チェーン外に格納された関連データの非同期検証のための例示的なプロセスを示すシーケンス図である。
【図４】いくつかの実装形態による合意要求の例示的なデータ構造を示す。
【図５】いくつかの実装形態によるプット要求の例示的なデータ構造を示す。
【図６】いくつかの実装によるｐｕｔ応答の例示的なデータ構造を示す。
【図７】いくつかの実装形態による提案要求の例示的なデータ構造を示す。
【図８】いくつかの実装による提案の例示的なデータ構造を示す。
【図９】いくつかの実装形態による転送完了通知の例示的データ構造を示す。
【図１０】いくつかの実装形態による審査要求の例示的データ構造を示す。
【図１１】いくつかの実装形態による取得要求の例示的データ構造を示す。
【図１２】いくつかの実装形態による取得応答の例示的データ構造を示す。
【図１３】いくつかの実装による審査応答の例示的なデータ構造を示す。
【図１４】いくつかの実施態様による承認要求のデータ構造の一例を示す。
【図１５】いくつかの実装形態による承認の例示的なデータ構造を示す。
【図１６】いくつかの実装形態による合意伝播の例示的なデータ構造を示す。
【図１７】いくつかの実装形態による合意伝播確認応答の例示的なデータ構造を示す。
【図１８】いくつかの実装形態による合意伝播通知の例示的データ構造を示す。
【図１９】いくつかの実装形態による合意ステータス通知の例示的なデータ構造を示す。
【図２０】いくつかの実装形態による事前審査要求の例示的データ構造を示す。
【図２１】いくつかの実装形態による事前審査応答の例示的データ構造を示す。
【図２２】いくつかの実装形態による確認要求の例示的データ構造を示す。
【図２３】いくつかの実装形態による確認応答の例示的データ構造を示す。
【図２４】いくつかの実装形態による中間合意伝播の例示的データ構造を示す。
【図２５】いくつかの実装形態による中間合意伝播確認応答の例示的なデータ構造を示す。
【図２６】いくつかの実装形態による中間合意伝播通知の例示的データ構造を示す。
【図２７】いくつかの実装形態による合意更新要求の例示的データ構造を示す。
【図２８】いくつかの実装形態による更新提案の例示的データ構造を示す。
【図２９】いくつかの実装形態による更新承認の例示的なデータ構造を示す。
【図３０】いくつかの実装形態による更新伝播の例示的データ構造を示す。
【図３１】いくつかの実装形態による合意更新通知の例示的データ構造を示す。
【図３２】いくつかの実装形態による合意ステータス通知の例示的なデータ構造を示す。
【図３３】いくつかの実装形態による、チェーン外に格納された関連データを有するトランザクションを記録するための例示的なプロセスを示すフロー図である。
【図３４】いくつかの実装形態による、チェーン外に格納された関連データを有するトランザクションを記録するための例示的なプロセスを示すフロー図である。
【図３５】いくつかの実装形態による計算装置の例示的アーキテクチャを示す。
【発明を実施するための形態】
【０００７】
本明細書におけるいくつかの実装形態は、ブロックチェーンのブロックに関連してチェーン外（オフチェーン）に格納されたデータの検証及び記述を可能にするための技法及び構成を対象とする。例えば、チェーン外に格納されたデータは、ブロックチェーンの１または複数（１以上）のブロックに格納された情報に関連する関連データであり得るが、関連データ全体自体はブロックチェーンの１または複数のブロックに格納されない。第１の例では、チェーン外に格納された関連データは、ブロックチェーン上のトランザクションについての情報を記録するための提案とともに、検証のために１または複数の他のエンティティに送信され得る。この例では、トランザクションを記述するための関連データの検証及びブロックチェーンへの新しいブロックの追加は同期して実行され得る、すなわち、チェーン外に格納されている関連データ及びトランザクション情報は、新しいブロックがブロックチェーンに追加される前に、検証され得る。
【０００８】
他の例では、チェーン外に格納された関連データは、トランザクションに関する情報をブロックチェーンに記録することに関して非同期的に転送されてもよい。例えば、トランザクション及び関連データに関する情報は、ブロックチェーンネットワークに参加している１以上の他のエンティティに送信されてもよく、トランザクション情報及び関連データに関する情報の中間のまたは他の条件付き記録は、ブロックチェーンに格納されてもよい。その後、トランザクションに関連する関連データは、１または複数の他のエンティティに送信され、関連データ及びトランザクションを検証するための審査を受けることができる。トランザクション及びチェーン外に格納された関連データが検証審査に合格した場合、トランザクションの条件付き状態は認可済み（ａｐｐｒｏｖｅｄ）状態またはそうでなければ合意済み（ａｇｒｅｅｄ−ｔｏ）状態に変更され、ブロックチェーン上の新しいブロックに記録されてもよい。
【０００９】
同期検証の例示的実装形態として、第１のブロックチェーンノードに関連付けられた第１の計算装置は、トランザクション要求及びブロックチェーン上に格納するための閾値サイズを超える関連付けられた関連データを受信し得る。いくつかの例において、第１の計算装置は、受信データのサイズをブロックチェーン上で許容されるデータの最大閾値サイズと比較して、関連データをチェーン外の格納場所に格納すべきであると決定することができる。関連データを受信し、関連データのサイズが閾値サイズを超えると判定したことに応答して、第１の計算装置は、関連データをチェーン外の記憶場所に記憶することができる。さらに、第１のブロックチェーンノードは、ブロックチェーン上にトランザクションを記録することを提案するために、ブロックチェーンネットワーク内の１または複数の第２のブロックチェーンノードそれぞれに通信を送信することができる。例えば、通信は、トランザクションに関する情報と、関連データのコンテンツ（内容）を表すハッシュ値または他の要約値と、第１のエンティティのデジタル署名とを含むことができる。さらに、第１の計三装置は、関連データ、例えば少なくとも関連データのコンテンツを、１または複数の第２のブロックチェーンノードそれぞれに関連付けられた１または複数の第２の計算装置それぞれに送信することができる。
【００１０】
関連データ及びトランザクションに関する情報を受信した後、第２の計算装置のうちの少なくとも１つは、受信したハッシュ値との比較に基づいて受信した関連データの検証を実行することができる。トランザクション情報及び関連データが検証審査に合格した場合、上記第２の計算装置のうちの少なくとも１つは、対応する第２のブロックチェーンノードにブロックチェーンへのトランザクションの記録を承認（ｅｎｄｏｒｓｅ）するように指示する。したがって、審査に合格した検証の結果に基づいて、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つから、ブロックチェーンへのトランザクションの記録を承認する通信を受信し得る。例えば、その通信は、承認を要求しているエンティティのデジタル署名を含むことができる。承認を伴う少なくとも１つの通信に少なくとも部分的に基づいて、第１のブロックチェーンノードは、第２のブロックチェーンノードそれぞれに、ハッシュ値と少なくとも１つの承認を含むトランザクション情報を送信して、新しいブロックをブロックチェーンに追加することができる。
【００１１】
同様に、非同期の例では、第１のブロックチェーンノードに関連付けられた第１の計算装置は、トランザクション要求及びブロックチェーン上に格納するための閾値サイズを超える関連付けられた関連データを受信し得る。いくつかの例において、第１の計算装置は、受信した関連データのサイズをブロックチェーン上で許容されるデータの閾値最大サイズと比較して、関連データをチェーン外に格納する必要があると判定することができる。関連データを受信し、関連データのサイズが閾値サイズを超えると判定したことに応答して、第１の計算装置は、関連データをチェーン外の記憶場所に記憶することができる。さらに、第１のブロックチェーンノードは、ブロックチェーン上のトランザクションを記録することを提案するために、ブロックチェーンネットワーク内の１または複数の第２のブロックチェーンノードそれぞれに通信を送信することができる。さらに、その通信は、関連データのコンテンツを表すハッシュ値または他の要約値と、第１のエンティティのデジタル署名とを含むことができる。
【００１２】
第２のブロックチェーンノードは、トランザクションの記録を提案する通信を受信して、例えば、通信のソースのデジタル署名を検証した後に承認を送り返してもよい。したがって、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つから、関連するデータ及びトランザクション情報の検証を待つ間条件付きで受け入れられたとして、ブロックチェーンノードへのトランザクションの記録を承認する通信を受信し得る。承認を伴う少なくとも１つの通信に少なくとも部分的に基づいて、第１の計算装置は、第２のブロックチェーンノードそれぞれに、関連データのハッシュ値と少なくとも１つの承認を含むトランザクション情報を送信して、新しいブロックをブロックチェーンに追加することができる。したがって、関連データ及びトランザクション情報がまだ検証されていなくても、トランザクション情報及び関連データのハッシュ値がブロックチェーンに記録され、情報を不変にすることができる。
【００１３】
第１の計算装置は、関連データを、１または複数のブロックチェーンノードそれぞれに関連付けられた１または複数の第２の計算装置それぞれに送信することができる。第２の計算装置のうちの少なくとも１つは、受信したハッシュ値との比較及び他の審査手順に基づいて、受信した関連データ及びトランザクション情報の検証を実行することができる。トランザクション情報及び関連データが検証審査に合格した場合、第２の計算装置のうちの少なくとも１つは、対応する第２のブロックチェーンノードに、ブロックチェーンへのトランザクションの記録を承認するように命令する。審査に合格した検証の結果に基づいて、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つから、検証されたとしてブロックチェーンへのトランザクションの記録を提案し、デジタル署名を含む通信を、受信し得る。それに応答して、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つに、検証されたトランザクションのブロックチェーン上での記録を承認する通信を送信することができる。その結果、第１のブロックチェーンノードは、第２のブロックチェーンノードそれぞれから、ハッシュ値と少なくとも１つの承認とを含むトランザクション情報を受信して、ブロックチェーンに新しいブロックを追加することができる。
【００１４】
本開示のいくつかの例は、複数のブロックチェーンノード計算装置（以下、「ブロックチェーンノード」）を含むブロックチェーンシステムの環境に適用することができる。ブロックチェーンノードは、ブロックチェーンに対して、それぞれのブロックチェーンノードによって管理されるブロックチェーンのインスタンスそれぞれに追加された新しいブロックとして、トランザクションデータを追加するように構成することができる。さらに、ブロックチェーンのブロックに格納するために指定されたサイズを超えるトランザクションに関連するデータは、関連データとしてチェーン外の格納場所に格納され、本明細書に記載の技法を使用して、トランザクションデータと共に検証されてもよい。
【００１５】
説明の目的で、いくつかの例示的な実装形態は、合意（ａｇｒｅｅｍｅｎｔ）または他の種類のトランザクションに関連して使用されるブロックチェーンのための、チェーン外のデータ記憶（データ格納）及び検証の環境において説明される。しかし、本明細書の実装形態は、説明される特定の例に限定されるものではなく、開示に照らして当業者には明らかなように、他のブロックチェーンアプリケーション、他の種類のトランザクション、他の種類の関連データ、他の種類の計算システム、他のシステムアーキテクチャなどに拡張することができる。
【００１６】
以下においていくつかの実施形態の詳細を説明する。詳細な説明は、添付の図面を参照しながら説明される。異なる図における同じ参照番号の使用は、類似または同一の要素または特徴を示す。
【００１７】
図１は、いくつかの実装形態による、ブロックチェーンに関連付けられたコンテンツをチェーン外で記憶するためのシステム１００の例示的アーキテクチャを示す図である。本例において、第１のエンティティ１０２（１）は、以下のものを含む。ユーザアプリケーション１０６（１）を含むユーザ計算装置１０４（１）のような、１または複数の計算装置、審査官プログラム１１０（１）を含む審査官計算装置１０８（１）、管理プログラム１１４（１）を含む管理計算装置１１２（１）、そして、ブロックチェーンプログラム１１８（１）を含み、１または複数の関連ブロックチェーン１２０（１）を有する、第１のブロックチェーンノード計算装置（「ブロックチェーンノード」）１１６（１）。さらに、第１のエンティティ１０２（１）は、チェーン外記憶装置１２２（１）を含むことができる。この例では、管理計算装置１１２（１）は、記憶プログラム１２４（１）を含み、チェーン外記憶装置１２２（１）での関連データ１２６（１）の記憶（格納）を管理する。いくつかの例では、記憶プログラム１２４（１）は管理プログラム１１４（１）のモジュールとして含まれていてもよい。記憶プログラム１２４（１）は、管理プログラム１１４（１）とは別であってもよく、または別個のストレージ計算装置（図１には示されていない）上で実行されてもよい。
【００１８】
いくつかの構成例では、計算装置１０４（１）、１０８（１）、１１２（１）、及び１１６（１）のそれぞれは、同じ計算装置、別々の計算装置、または任意の計算相違の組み合わせであってよい。一例として、ブロックチェーンノード１１６（１）は、ユーザ計算装置１０４（１）、審査官計算装置１０８（１）、及び管理計算装置１１２（１）から物理的に分離した計算装置である。さらに、いくつかの例において、ユーザ計算装置１０４（１）は、審査官計算装置１０８（１）及び管理計算装置１１２（１）とは別個の計算装置である。  いくつかの例において、チェーン外記憶装置１２２（１）は、ストレージアレイ、ＲＡＩＤストレージ、ストレージエリアネットワーク、ネットワークアタッチトストレージ、クラウドストレージなどのストレージシステムと関連付けられてもよく、ストレージコントローラ（図１には示さず）を含んでもよい。さらに別の例として、計算装置１０４（１）、１０８（１）、１１２（１）、及び１１６（１）のうちのいくつかまたはすべては、１または複数の仮想計算機としてインスタンス化され得る。計算装置１０４（１）、１０８（１）、１１２（１）、及び１１６（１）の他の多くの変形は、本明細書の開示の利益を得る多数の他の変形形態が当業者には明らかであろう。そして、計算装置１０４（１）、１０８（１）、１１２（１）、及び１１６（１）のさらなる詳細及びそれらの様々な機能は、例えば、図３５に関して以下に説明される。
【００１９】
第１のエンティティ１０２（１）の計算装置１０４（１）、１０８（１）、１１２（１）、及び１１６（１）は、互いに通信を行い、さらに、１または複数のネットワークを介して、１または複数の他のエンティティのそれぞれの計算装置と通信することができる。図示の例では、第１のエンティティ１０２（１）に関連付けられた１または複数の計算装置は、第２のエンティティ１０２（２）、第３のエンティティ１０２等の計算装置と通信することができる。例えば、第２のエンティティ１０２（２）及び第３のエンティティ１０２（３）は、１または複数の、第１のエンティティ１０２（１）と同じ計算装置及び／または機能構成要素を有することができる。
【００２０】
したがって、この例では、第２のエンティティ１０２（２）は、ユーザアプリケーション１０６（２）を含むユーザ計算装置１０４（２）、審査官プログラム１１０（２）を含む審査官計算装置１０８（２）、管理プログラム１１４（２）及び記憶プログラム１２４（２）を含む管理計算装置１１２（２）と関連付けられる。第２のエンティティ１０２（２）は、さらに、ブロックチェーンプログラム１１８（２）を含み、１または複数の関連ブロックチェーン１２０（２）を有する第２のブロックチェーンノード計算装置（「ブロックチェーンノード」）１１６（２）、及び、関連データ１２６の関連データコンテンツ１３６を少なくとも格納するためのチェーン外記憶装置１２２（２）に関連付けられている。第３のエンティティ１０２（３）は、第１のエンティティ１０２（１）及び第２のエンティティ１０２（２）に関して本明細書で説明されている動作のいくつかまたはすべてを実行することができる類似または異なる機能構成要素を含むことができるが、図を明確にするために図１には示されていない。
【００２１】
１または複数のネットワーク１３０は、任意の適切な通信技術を含むことができ、例えば、インターネットなどの広域ネットワーク、イントラネットなどのローカルエリアネットワーク、セルラーネットワークなどの無線ネットワーク、Ｗｉ  ?  Ｆｉなどのローカル無線ネットワーク、ＢＬＵＥＴＯＯＴＨ（登録商標）などの短距離無線通信、ファイバチャネル、光ファイバ、イーサネット（登録商標）、または他のそのようなネットワークを含む有線ネットワーク、直接有線接続、またはそれらの任意の組合せを含むことができる。ネットワーク１３０は、有線及び／または無線通信技術を含み得る。そのようなネットワークを介して通信するために使用されるプロトコルは、当技術分野において周知であり、本明細書では詳細に説明されない。  
【００２２】
ブロックチェーンノード１１６（１）及び１１６（２）それぞれのブロックチェーンプログラム１１８（１）及び１１８（２）は、ブロックチェーン１２０（１）及び１２０（２）をそれぞれ管理するように構成されており、この例では、ブロックチェーン１２０（１）及び１２０（２）は、同じブロックチェーンの個別に維持、管理されたバージョンである。例えば、ブロックチェーンプログラム１１８（１）は、ブロックチェーン１２０（１）を維持し、追加することができ、ブロックチェーンプログラム１１８（２）は、ブロックチェーン１２０（２）を維持し、追加することができる。ブロックチェーンノード１１６（１）及び１１６（２）は、複数のブロックチェーンノード１１６を含むブロックチェーンネットワーク１３２に参加するブロックチェーンノードである。
【００２３】
いくつかの例では、システム１００によって提供されるブロックチェーンネットワーク１３２は、スケーラブルな分散型ピアツーピアシステムであり、ブロックチェーン１２０または他のブロックチェーン（図１には図示せず）を生成及び維持することができる。ブロックチェーン１２０内に維持されているデータの完全性は、例えば単なる信頼に基づくインフラストラクチャではなく、コンセンサスメカニズムに基づくものである。本明細書の例では、「コンセンサス」は、何が真実であるか偽であるかに関する集合的な意思決定プロセスまたは合意を指す。例えば、システム１００内のブロックチェーンネットワーク１３２は、参加しているブロックチェーンノード１１６からなる分散型コンセンサスネットワークを提供し、ブロックチェーンノードは、コンセンサスノードとして機能する。システム１００内のブロックチェーンネットワーク１３２に参加している様々な異なるコンセンサスノードは、一連のブロックチェーン通信１３４を交換してコンセンサスに達することができ、コンセンサスは、例えば、１または複数のブロックチェーンノード１１６による提案及び他の１または複数のブロックチェーン１１６による提案の承認に基づく。いくつかの例において、個々のブロックチェーンノード１１６は、ブロックチェーンネットワークが全体として合意に基づいた決定を達成することを可能にするために、それら自身のデータを提供する。  
【００２４】
システム１００内のブロックチェーンネットワーク１３２は、データをブロックチェーン１２０内の連続したブロックとして記録するように構成されており、ブロックチェーン１２０は、データの分散データ構造として機能する。その結果、データは安全かつ不変にブロックチェーン１２０内に記録され、実質的に変更不可能である。システム１００内のすべてのブロックチェーンノード１１６は、同じブロックチェーンプログラム１１８を実行することができる。特定のブロックについてコンセンサスに達すると、ブロックチェーンノード１１６はそのブロックをブロックチェーン１２０に記録する。したがって、いくつかの例において、ブロックチェーンノード１１６のそれぞれは、ブロックチェーン１２０の完全なコピーを維持する。
【００２５】
いくつかの例では、システム１００内のブロックチェーンネットワーク１３２の分散型ピアツーピア性は、任意の単一のユーザ、ユーザのグループ、または他のエンティティ１０２が、基礎となるインフラストラクチャを制御するまたは完全性を損なうことを、防ぐのに役立ち得る。例えば、エンティティ１０２は、個人、グループ、企業、国家関係者、組織など、あるいはこれらのエンティティの組み合わせとすることができる。いくつかの例において、システム１００は、私的（つまり、一般にはアクセスできない）であり、ブロックチェーンノード１１６は、通常、１または複数のエンティティ１０２によって所有され、操作され、またはそうでなければ関連付けられる。他の例において、ブロックチェーンノード１１６の一部またはすべては、ブロックチェーンネットワーク１３２をサービスとして提供する第三者と関連づけられる。他の多くの様々な変形例は、本明細書の開示の恩恵を受ける他の多くの変形が当業者には明らかであろう。
【００２６】
図示の例では、３つのエンティティが示されているが、エンティティの数は、様々な異なるアプリケーションに応じて変化する、いくつかの例では、ユーザアプリケーション１０６、審査官プログラム１１０、管理プログラム１１４、記憶プログラム１２４及び／またはブロックチェーンプログラム１１８は、互いに及び／または他のエンティティのプログラムと、直接に及び／または１または複数のアプリケーションプログラミングインターフェース（ＡＰＩ）を介して、通信することができる。したがって、本明細書における実装形態は、様々なプログラム間の通信のためのいかなるプロトコルまたは他の技術にも限定されない。さらに、プログラム１０６、１１０、１１４、１１８、及び１２４は、説明のために例として示されているが、本明細書で説明されている機能を実行するための例において、より多くのまたはより少ないプログラムを実行できることが可能であることは、当業者には明らかであろう。
【００２７】
いくつかの例において、ユーザアプリケーション１０６は、エンティティ１０２の１または複数のユーザによって、システム１００に参加している１または複数の他のエンティティのユーザとの間で、合意を成すまたはトランザクションを実行するといったことのために、使用されるアプリケーションプログラムである。さらに、管理プログラム１１４は、スマートコントラクト、合意または他の種類のトランザクションに対する要求を受信し、トランザクションのブロックチェーン記録の組み合わせ及び特定のトランザクションに関連する関連データ１２６のチェーン外記憶を管理するように構成される。いくつかの例では、記憶プログラム１２４は、関連データ１２６をチェーン外記憶装置１２２に格納し、関連データ１２６または少なくともそのコンテンツを関連データコンテンツ１３６として他のエンティティ１０２へ転送を制御するなどのために、チェーン外記憶装置１２２と通信する。いくつかの例では、記憶プログラム１２４は、オブジェクトストレージ計算装置、ストレージエリアネットワーク、ネットワーク接続ストレージ、または本明細書で説明されているシステムで使用され得る他の任意のタイプの記憶装置に組み込むことができる。
【００２８】
さらに、審査官プログラム１１０は実行され、ブロックチェーン１２０に記録されるトランザクションのための関連データ及びトランザクション情報の検証を行う。本明細書の例で論じるように、審査官プログラム１１０は、管理プログラム１１４によって呼び出されて、チェーン外記憶装置１２２に記憶された関連データ、及び関連データに対応するトランザクション情報の検証審査を実行する。さらに、上述のように、いくつかの例において、審査官プログラム１１０は管理プログラム１１４のモジュールまたはサブコンポーネントであってもよく、管理計算装置１１２上で実行されてもよく、これにより別個の審査官計算装置１０８を不要としてもよい。
【００２９】
いくつかの例において、管理計算装置１１２は、ブロックチェーン１２０に記録されたトランザクションを管理及び検証するために使用することができ、このとき、管理計算装置１１２は、様々な異なるアプリケーションのために管理プログラム１１４を使用する。様々な異なるアプリケーションは、例えば、スマートコントラクトの条件の実行、セキュリティトランザクションの実行、システム内のイベントのログ記録、モノインターネット（ＩｏＴ）デバイスの管理、データの管理、銀行トランザクションの追跡、またはその他多数のアプリケーションである（ここでは総称して記録トランザクションと呼ぶ）。本明細書のいくつかの例では、スマートコントラクトはブロックチェーン１２０上のレコードを生成し、レコードは、例えば、利害関係者、図示の例において第１のエンティティ１０２（１）、第２のエンティティ１０２（２）、及び第３のエンティティ１０２（３）、からのコンセンサスを伴う合意を記述する。例えば、スマートコントラクトは、例えば、トランザクションを実行するための指定された条件が検出されたときに他の計算装置上などで、特定のオペレーションを自動的にトリガするように実行される。
【００３０】
本明細書におけるいくつかの例では、プロセスは、スマートコントラクトまたは関連するトランザクションに関連する証拠の検証を決定するための審査を含み得る。したがって、システム１００は、デジタル証拠、すなわち、ブロックチェーン１２０に記録される特定の合意または他のトランザクションに関連するがブロックチェーンからチェーン外に格納される関連データを処理する機能を含む。スマートコントラクトの利害関係者は、スマートコントラクトプロセス中に関連データを審査または検証したい場合があり、また証拠が不変であることを確認したい場合もある。ただし、関連データのデータサイズは、ブロックチェーンブロックが処理するように構成されている閾値サイズよりも大きいことがよくある。特に、大部分のブロックチェーン技術は個々のブロック内のデータサイズを比較的小さい閾値サイズ、例えば１ＭＢ、２ＭＢなどに制限するため、ブロックチェーンネットワーク内の通信プロトコル及び永続的データフォーマットは効率的なままである。  
【００３１】
本明細書における実装形態は、ブロックチェーン上の複数のエンティティ間の対話を可能にする。合意または他のトランザクションは、合意文書または他のトランザクション文書を提案することによって、ブロックチェーン１２０上で実行し、記録することができる。上記文書は、デジタル形式で表現されるが、合意または他の取引を裏付ける証拠として、何らかの関連データを参照するか、そうでなければそれに関連付けられている。例えば、関連データは、トランザクションに参加しているエンティティのうちの少なくとも１つによって提供されてもよい。
【００３２】
以下の例では、「合意」を記録するときに、用語「合意」、及び、用語「提案」、「審査」及び「承認」を使用するが、記載された技術は、チェーン外記憶装置に格納されている関連データを参照する、ブロックチェーンに記録される任意のトランザクションまたは他の情報に適用することができる。したがって、本明細書における実装は、「合意」に限定されるものではない。さらに、いくつかの例では、本明細書では異なるエンティティが異なるタイプの検証を実行することがある。例えば、第１のエンティティは、ブロックチェーンへの記録のために第２のエンティティに合意または他のトランザクションを提案する。第２のエンティティは、トランザクション情報と関連データの検証を実行し、関連データがハッシュと一致し、トランザクションが規則、法律、規則などに違反しないことを保証にする。一方、第３のエンティティは、異なる検証審査を実行する。例えば、第２のエンティティにとっての関心事ではなかったが、第３のエンティティにとっての関心事である、規則、法律、規制などにトランザクションが違反しないことを保証にする。これは、例えば、二つのエンティティが、異なる国または異なる裁判管轄にあるような場合である。したがって、第２のエンティティからの承認は第２のエンティティによる審査の合格を確認することができ、第３のエンティティからの承認は第３のエンティティによる審査の合格を確認することができる。他の状況では、単一のエンティティによる承認で十分な場合がある。  
【００３３】
さらに別の例として、第２のエンティティは第１のエンティティのスーパーバイザであり、合意または他のトランザクション情報は、第１のエンティティによって提案されたビジネスプロセスに対する、スーパーバイザとしての第２のエンティティからの確認要求である。この場合、第１のエンティティから第２のエンティティへの提案は、第１のエンティティの顧客との提案された対話などのために、ビジネスプロセスが記述した検証の要求である。第２のエンティティによる審査は、提案されたビジネスプロセスが、第１のエンティティと第２のエンティティが属する組織の法律、規制、または商慣行に違反しないことの確認を含む。
【００３４】
図２及び図３は、いくつかの実装による、ブロックチェーンの関連データを検証するための第１のエンティティ１０２（１）及び第２のエンティティ１０２（２）の機能コンポーネントの例示的なプロセス及び対話を示すシーケンス図である。図２は、いくつかの実施態様による関連データの同期検証のための例示的なプロセス２００を示すシーケンス図である。図３は、いくつかの実装形態による関連データの非同期検証のための例示的なプロセス３００を示すシーケンス図である。例えば、図２の例示的な同期プロセス２００の間、関連データはコンセンサスと共に転送され検証される。一方、例示的な非同期プロセス３００は、関連データの転送または検証なしに不変の合意を得て、その後、データ転送及び検証を得る。したがって、非同期プロセス３００は、同期不変性及び非同期有効性を有するブロックチェーン上の「検証中状態」を可能にする。検証結果は、検証が決定された後にブロックチェーンに追加されてもよい。したがって、非同期プロセス３００は、初期不変性及び複雑な検証ロジックの実装を可能にすることができる。
【００３５】
図２の例では、第１のエンティティ１０２（１）がブロックチェーン上に情報（この例では合意とする）を記録することを提案し、合意にはブロックチェーンに格納されない関連データがあるする。例えば、関連データは、ブロックチェーンのブロック内に格納するための閾値サイズを超えている、または、そうでない場合でブロックチェーン内に格納されない。さらに、少なくとも第２のエンティティ１０２（２）がプロセス２００に参加しているとする。他のエンティティ（例えば、第３のエンティティなど）も参加してもよいが、第３のエンティティに関する対話は一般に第２のエンティティと同じであり、したがって、明確な説明のために別々に示されていない。
【００３６】
２０２で、第１のエンティティ１０２（１）に関連付けられたユーザアプリケーション１０６（１）は、合意要求を発行する。例えば、ユーザアプリケーション１０６（１）は、第１のエンティティ１０２（１）と第２のエンティティ１０２（２）などの１または複数の他のエンティティ１０２との間の既存のスマートコントラクトまたは他の合意に基づいて、合意要求を作成する。
【００３７】
図４は、いくつかの実装形態による合意要求４０２の例示的なデータ構造を示す。この例では、合意要求４０２は、合意識別子（ＩＤ）４０４、合意宣言４０６、及び１または複数の関連データオブジェクト４０８を含む。関連データオブジェクト４０８のそれぞれは、メタデータ４１０及びコンテンツ４１２を含み得る。メタデータ４１０の例は、データオブジェクトのタイトルまたは他の名前、コンテンツに関する情報、作成日、オブジェクトのサイズ、所有者情報などを含み得る。
【００３８】
合意ＩＤ４０４は、ブロックチェーンネットワーク内で一意であるか、そうでなければ個々に識別可能であり、それによって対応する合意を特定的に識別することができるＩＤである。合意宣言４０６は、対応する合意を記述するデジタルまたは他の機械可読文書である。例えば、合意宣言４０６は、平文、ＪＳＯＮ、ＸＭＬ、または他の様々なフォーマットのいずれかでフォーマットすることができ、エンティティ間の合意を記述する。さらに、いくつかの例では、合意宣言４０６は、関連データオブジェクト４０８への１または複数の引用を含む。
【００３９】
各関連データオブジェクト４０８は、合意を支持するための関連データである、またはそれを含む。したがって、関連データオブジェクト４０８は、写真または他の画像、法律文書のコピー、合意に関連する音声または映像の記録、合意に関連するデータ構造など、合意に関連する任意の種類のデジタルデータを含み得る。各関連データオブジェクト４０８は、タイトルなどを含む、合意に対する関連データオブジェクト４０８の重要性を示すメタデータ４１０と、データ自体であるコンテンツ４１２とを含むことができる。関連データオブジェクト４０８は、第１のエンティティ１０２（１）に関連するユーザアプリケーションまたは他のソースによって直接提供され得る。あるいは、関連データオブジェクト４０８は、図２に示されたプロセスの開始前などに、他のエンティティによって提供されてもよい。
【００４０】
図２に戻って、２０４において、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、第１のエンティティ１０２（１）に関連付けられた記憶プログラム１２４（１）に、プット要求を発行する。例えば、合意要求の受信に応答して、管理プログラム１１４（１）は、２０４で、プット要求を開始する。プット要求は、各関連データオブジェクト４０８の少なくともコンテンツ４１２を、記憶プログラム１２４（１）によって管理されているチェーン外記憶装置へ格納するように記憶プログラム１２４（１）に指示する。いくつかの例では、プット要求はまた、記憶プログラム１２４（１）がコンテンツ４１２に関連付けられたメタデータ４１０の少なくとも一部を格納することを要求する。単一のプット要求は、複数の関連データオブジェクト４０８を格納するために採用され得る。さらに、記憶プログラム１２４（１）は、各関連データオブジェクト４０８について各コンテンツ４１２にオブジェクトＩＤを割り当てる。
【００４１】
図５は、いくつかの実装形態によるプット要求５０２の例示的データ構造を示す。この例では、プット要求５０２は、関連データオブジェクト４０８のコンテンツ４１２を含む。他の例では、プット要求５０２は、複数の関連データオブジェクト４０８のコンテンツ４１２を含み得る。プット要求５０２は、また、他の例において、関連データオブジェクト４０８のコンテンツ４１２に関連するメタデータ４１０の一部または全部を含み得る。
【００４２】
図２に戻って、２０６において、第１のエンティティ１０２（１）に関連付けられている記憶プログラム１２４（１）は、第２のエンティティ１０２（２）に関連付けられている記憶プログラム１２４（２）への、そして、合意に参加している他のエンティティへの、データ転送を開始する。例えば、２０４におけるプット要求に含まれるコンテンツ４１２の格納に応答して関連データオブジェクト４０８を格納した後、記憶プログラム１２４（１）は、各コンテンツについて、少なくともコンテンツ４１２及び対応するコンテンツＩＤを、第２のエンティティ１０２（２）と関連付けられている記憶プログラム１２４（２）、そして、合意に参加している他のエンティティ（すなわち、利害関係者）へ転送する。さらに、いくつかの例では、記憶プログラム１２４（１）はまた、コンテンツ４１２に関連するメタデータ４１０のうちのいくつかまたはすべてを転送することもできる。
【００４３】
２０８で、第１のエンティティ１０２（１）に関連付けられた記憶プログラム１２４（１）は、管理プログラム１１４（１）にプット応答を発行する。例えば、データを他のエンティティに転送することに加えて、記憶プログラム１２４（１）は、各関連データオブジェクト４０８の各コンテンツ４１２に関連付けられたオブジェクトＩＤを示すために、プット応答を管理プログラムに送信する。プット応答はまた、オブジェクトＩＤに対応する関連データオブジェクト４０８のコンテンツ４１２から計算されたハッシュ値を含み得る。
【００４４】
図６は、いくつかの実装形態によるプット応答６０２の例示的データ構造を示す。この例におけるプット応答６０２は、プット要求の対象であったオブジェクトコンテンツ４１２に割り当てられた、またはそうでなければそれに関連付けられたオブジェクトＩＤ６０４を含む。加えて、いくつかの例において、プット応答６０２は、オブジェクトコンテンツ４１２に対して計算されたハッシュ値を含む。例えば、ハッシュ値は、ＳＨＡ−０、ＳＨＡ２５６、ＳＨＡ５１２、または当技術分野で知られている様々な他のハッシュアルゴリズムのいずれかの適切なハッシュアルゴリズムなどを使用して計算することができる。さらに、ハッシュアルゴリズムは、関連データオブジェクト４０８のコンテンツを表す短い要約値を提供するための１つの技術として説明されているが、デジタル指紋などの様々な他の技術は、本明細書中の開示の恩恵を受ける当該技術分野の当業者には明らかであろう。さらに、他の例において、ハッシュ値６０６が含まれず、管理プログラム１１４（１）は、関連データオブジェクト４０８のコンテンツ４１２の管理プログラム自身のバージョンに基づいてハッシュ値６０６を計算することができる。プット要求と同様に、プット応答は、複数の関連データオブジェクト４０８に対するものであってもよく、または各関連データオブジェクト４０８の各コンテンツ４１２に対する個別のプット応答があってもよい。
【００４５】
図２に戻って、２１０において、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）に提案要求を発行する。例えば、プット応答２０８の受信に応答して、管理プログラム１１４（１）は提案要求を作成し、その提案要求を第１のブロックチェーンノード１１６（１）に送信する。
【００４６】
図７は、いくつかの実装形態による提案要求７０２の例示的データ構造を示す。この例では、提案要求７０２は、チェーン上の合意文書７０４を含む。チェーン上の合意文書７０４は、合意要求４０２と同様であり得る。したがって、チェーン上の合意文書７０４は、合意ＩＤ４０４と上述した合意宣言４０６を含む。しかしながら、１または複数の関連データオブジェクト４０８はそれぞれ、それぞれの関連データオブジェクト４０８の代わりに、それぞれのデータオブジェクト情報７０６のセットと置き換えられる。各データオブジェクト情報７０６のセットは、関連データオブジェクトのタイトル７０８、オブジェクトＩＤ６０４、及びハッシュ値６０６を含むことができ、合意要求４０２及びプット応答２３０から決定される。管理プログラム１１４（１）は、組み立てられた提案要求７０２を第１のブロックチェーンノード１１６（１）に送信する。
【００４７】
図２に戻って、２１２において、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、提案要求を受信し、それに応答して第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）に提案を送信する。例えば、提案要求の受信に応答して、第１のブロックチェーンノード１１６（１）は、提案を作成し、ブロックチェーンネットワーク内の他のブロックチェーンノードに送信する。
【００４８】
図８は、いくつかの実装形態による提案８０２の例示的なデータ構造を示す。提案８０２は、ブロックチェーンプロトコルに基づいて生成することができ、この例では、提案ＩＤ８０４、管理プログラム１１４（１）から受信した提案要求に含まれていたチェーン上の合意文書７０４、及び、提案者の署名８０６を含む。例えば、提案者の署名は、提案者の（すなわち、第１のエンティティの）信用証明書で署名されたデジタル署名である。一例として、デジタル署名は、ＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｌｅｍａｎｄ）ベースのデジタル署名、または当技術分野で知られている他の任意の適切なデジタル署名方式である。提案８０２が作成されると、第１のブロックチェーンノード１１６（１）は、提案８０２をブロックチェーンネットワーク内の他のブロックチェーンノードの各々に送信し、他のブロックチェーンプログラム１１８が提案を確認することを可能にする。例えば、第２のエンティティ１０２（２）に加えて提案８０２を受け取る１以上の他のエンティティがあってもよいが、これらの他のエンティティによって実行される手順は、第２のエンティティ１０２（２）に関して本明細書に記載される手順と同じまたは同様であり得る。
【００４９】
図２に戻って、２１４において、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）が提案を受信し、それに応答して、提案通知を第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）に送信する。例えば、提案通知は、上述の受信した提案８０２を単に含む。さらに、提案通知を送信する前に、第２のブロックチェーンノード１１６（２）は、提案が実際に第１のエンティティ１０２（１）からのものであることを保証するために提案者のデジタル署名を検証してもよい。管理プログラム１１４（２）は、提案通知２１４を受信し、第１のエンティティからのデータ転送の完了の指示を待つ。
【００５０】
２１６において、第１のエンティティ１０２（１）に関連付けられた記憶プログラム１２４（１）は、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）へのデータ転送を完了する。例えば、記憶プログラム１２４（１）は、合意に関してチェーン外に記憶されることになる合意に関連するすべてのコンテンツを、第２のエンティティ１０２（２）に関連する記憶プログラム１２４（２）に送る。記憶プログラム１２４（２）は、本明細書の他の箇所で説明されているように、受信したコンテンツをチェーン外の記憶場所に格納する。
【００５１】
２１８において、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）は、第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）に転送完了通知を送信する。例えば、転送完了通知は、合意に関するすべての関連データが第２のエンティティ１０２（２）の記憶プログラム１２４（２）によって受信されたことを管理プログラム１１４（２）に示す。
【００５２】
図９は、いくつかの実装形態による転送完了通知９０２の例示的データ構造を示す。この例では、転送完了通知は、コンテンツが第２のエンティティの記憶プログラム１２４（２）に転送された関連データオブジェクトのオブジェクトＩＤ６０４を含む。いくつかの例では、複数の関連データオブジェクトがあるとき、転送完了通知９０２は、複数のオブジェクトＩＤ６０４を含む。さらに、他の例では、記憶プログラム１２４（２）が転送完了通知を自律的に送信するのではなく、管理プログラム１１４（２）は、提案通知の受信後に定期的に記憶プログラム１２４（２）をポーリングして、データオブジェクトコンテンツ転送がいつ完了したかを判定することができる。  
【００５３】
図２に戻ると、２２０で、提案通知及び転送完了通知を受信した後、第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）は、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）に審査要求を送信する。例えば、審査要求は、図７に関して上述した、チェーン上の合意文書７０４を少なくとも含む。
【００５４】
図１０は、いくつかの実装形態による審査要求１００２の例示的データ構造を示す。この例では、審査要求１００２は、提案８０２で受信したチェーン上の合意文書７０４を含み、合意文書７０４は、合意ＩＤ４０４、合意宣言４０６、及びタイトル７０８、１または複数のデータオブジェクト情報セット７０６を含む。データオブジェクト情報セット７０６は、各関連データオブジェクトのタイトル７０８、オブジェクトＩＤ６０４、及びハッシュ値６０６を含む。
【００５５】
図２に戻って、２２２において、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）は、受信したチェーン上の合意文書７０４を審査し、それに応答して、取得要求を第２のエンティティ１０２（２）に関連付けられている記憶プログラム１２４（２）に送信する。例えば、取得要求は、チェーン上の合意文書７０４において同定された関連データオブジェクトのコンテンツへのアクセスを要求することができる。
【００５６】
図１１は、いくつかの実装形態による取得要求１１０２の例示的データ構造を示す。この例では、取得要求１１０２は、審査官プログラム１１０（２）がそのコンテンツを検証しようとしている各関連データオブジェクトについてオブジェクトＩＤ６０４を含む。
【００５７】
図２に戻り、２２４で、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）は、２２２において取得要求を受信し、それに応答して、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）に取得応答を送信する。例えば、取得応答は要求されたコンテンツを含む。
【００５８】
図１２は、いくつかの実装形態による取得応答１２０２の例示的データ構造を示す。この例では、取得応答１２０２は、それぞれの関連データオブジェクトごとにコンテンツ４１２を含み、いくつかの例では、取得応答１２０２は、コンテンツ４１２に対応するハッシュ値６０６も含むことができる。あるいは、他の例では、審査官プログラム１１０（２）は、コンテンツからハッシュ値を決定してもよい。
【００５９】
図２に戻って、２２６において、第２のエンティティ１０２（２）に関連する審査官プログラム１１０（２）は、取得応答を受信し、受信したコンテンツを審査し、そして第２のエンティティ１０２（２）に関連する管理プログラム１１４（２）に審査応答を送信する。例えば、審査官プログラム１１０（２）は、管理プログラムから受信したチェーン上合意文書に含まれるタイトル、オブジェクトＩＤ、及びハッシュ値から、取得応答で受信したコンテンツを使用して、関連データオブジェクトを再構築する。管理プログラムから受信したハッシュ値が取得応答で受信したコンテンツのハッシュ値と一致しない場合、審査官プログラムは、審査を終了し、不合格状態を示すことができる。この場合、試験官プログラムは、不合格状態を示す審査応答で管理プログラムに応答してもよい。一方、ハッシュ検証が成功した場合、すなわち管理プログラムからチェーン上合意文書で受信したハッシュ値が取得応答で受信したコンテンツのハッシュ値と一致する場合、審査官プログラムは検査が合格したことを示す審査応答を送信する。
【００６０】
さらに、いくつかの例では、２２６で審査応答を送信する前に、審査官プログラム１１０（２）は、チェーン上合意文書及び関連データオブジェクトの追加の審査を実行する。例えば、審査官プログラム１１０（２）は、合意文書の一部と関連データオブジェクトとを比較して、関連データオブジェクトが記載された合意をサポートすることを保証する。例えば、審査官プログラム１１０（２）は、関連データオブジェクトとしての法的ライセンス文書のスキャン画像に書かれた会社名が合意文書の会社名と同じであると決定することができる。さらに、審査官プログラム１１０は、関連データオブジェクトの作成または他の変更の証拠について関連データオブジェクトのコンテンツを審査することができる。さらに別の例として、審査官プログラム１１０は、関連するデータオブジェクトに含まれるまたはそうでなければ参照される、アイテム、人物、組織、または他のエンティティを、例えば、これらがホワイトリストやブラックリスト等と一致するか決定するためにチェックすることによって、審査することができる。例えば、審査官プログラム１１０は、犯罪者のマグショットなどを含むデータベースと比較するために顔画像を調べることができる。本明細書の開示の恩恵を受ける当業者にとって、他の多くの種類の審査技術及びプロセスは明らかであろう。
【００６１】
図１３は、いくつかの実装形態による審査応答１３０２の例示的なデータ構造を示す。この例では、審査応答１３０２は、審査が合格か不合格かを示すことができる結果１３０４を含む。さらに、他の例では、審査が合格または不合格である場合、審査応答は、審査が不合格となった理由などの審査結果に関する１または複数の理由を含むことができ、または、結果１３０４が検査に合格したことを示す場合、審査され、合格であると決定された様々なファクタをリストアップすることができる。
【００６２】
図２に戻ると、２２０で、審査に合格したという指示を受信することに応答して、第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）は、第２のエンティティ１０２（２）に関連づけられた第２のブロックチェーンノード１１６（２）に承認要求を送信する。一方、審査応答が不合格を示す場合、管理プログラム１１４（２）は、第２のエンティティ１０２（２）に関連付けられたユーザアプリケーション１０６（２）（図２には図示せず）に、通知を送信し、合意に問題があることを示す。審査に合格した場合、管理プログラム１１４（２）は、承認要求を作成し、承認要求を第２のブロックチェーンノード１１６（２）に送信して、ブロックチェーンプログラム１１８（２）が合意の承認をブロックチェーンネットワークへ送信することを要求する。
【００６３】
図１４は、いくつかの実装形態による承認要求１４０２の例示的なデータ構造を示す。この例では、承認要求１４０２は、審査が実行された特定の合意に対する合意ＩＤ４０４を含む。承認要求は、ブロックチェーンプログラム１１８が、ブロックチェーンネットワークのブロックチェーンプロトコルに従って指定された合意を承認することを要求する。
【００６４】
図２に戻り、２３０で、承認要求の受信に応答して、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、第１のエンティティ１０２に関連付けられた第１のブロックチェーンノード１１６（１）に承認を送信する。例えば、承認は、ブロックチェーンノード１１６（２）及び１１６（１）が参加するブロックチェーンネットワークが従うプロトコルに基づいて準備及び送信される。さらに、承認は、２１２において送信された提案を受信した可能性があるブロックチェーンネットワーク内の他の任意のブロックチェーンノードに送信さる。
【００６５】
図１５は、いくつかの実装形態による承認１５０２の例示的データ構造を示す。この例では、承認１５０２は、２１２で第１のエンティティから受信した提案において受信された提案ＩＤ８０４を含む。承認１５０２は、承認者の署名１５０４をさらに含む。２１２で送信された提案に関して上述した提案者の署名と同様であり、例えば、承認者の署名は、ブロックチェーンネットワークによって使用されるＲＳＡ署名または他の任意のタイプのデジタル署名などのデジタル署名であり、２１２で提案の一部として提供されたチェーン上合意文書の承認を示す。
【００６６】
図２に戻り、２３２において、第２のエンティティからの承認、及び２１２において提案を受信した可能性があるブロックチェーンネットワークに参加している他の任意のエンティティからの承認を受信したことに応答して、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）及び他のエンティティに、合意伝播を送信する。例えば、第１のブロックチェーンノード１１６（１）は、承認者の署名を検証し、どのエンティティのどのブロックチェーンノードが提案に対する承認を送ったかを記録する。第１のブロックチェーンノード１１６（１）はさらに、十分な数の承認がブロックチェーンネットワークから受信されたかどうかを判定する。必要とされる承認の数は特定の合意によって異なり、通常、合意に関与するすべての利害関係者と、もしあれば少なくとも１人の合意のスーパーバイザからの承認の受領を含む。第１のブロックチェーンノード１１６（１）が、受け取った承認の数が必要な承認の数以上であると判定したとき、第１のブロックチェーンノード１１６（１）は、合意伝播を生成してブロックチェーンネットワーク内すべてのブロックチェーンノード、すなわち、ブロックチェーンネットワーク内の別々の計算装置上で実行される各ブロックチェーンプログラム１１８に送信する。あるいは、いくつかの例では、合意伝播を他のブロックチェーンノード１１６に送信するために１または複数のプロキシが所定の場所に存在する場合、ブロックチェーンプログラム１１８は、他のブロックチェーンノード１１６に直接合意伝播を送信する必要はない。
【００６７】
図１６は、いくつかの実装形態による合意伝播１６０２の例示的データ構造を示す。この例では、合意伝播１６０２は、提案ＩＤ８０４、チェーン上の合意文書７０４、提案者の署名８０６、及び１または複数の承認者の署名１５０４を含み、合意の内容（コンテンツ）を示し、そして、合意が必要なエンティティよって確認されたことを示す。
【００６８】
図２に戻り、２３４において、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、合意伝播を受信し、新しいブロックをそれ自体のブロックチェーンに格納し、そしてそれに応答して、合意伝播確認応答を、第１のエンティティ１０２（１）に関連付けられている第１のブロックチェーンノード１１６（１）に送信する。例えば、合意伝播を受信すると、第２のブロックチェーンノード１１６（２）は、提案者の署名、承認者の署名を検証し、そして合意伝播における情報を、それぞれの第２のブロックチェーンノード１１６（２）によって管理されているブロックチェーン上の新しいブロックに格納する。したがって、ブロックチェーンネットワークに参加している各ブロックチェーンノードは、そのブロックチェーンノードによって管理されているブロックチェーンに新しいブロックを追加する。さらに、第２のブロックチェーンノード１１６（２）（及び他のブロックチェーンノード）（図２には示されていない）は、合意伝播確認を生成し、これを第１のエンティティ１０２（１）に関連する第１のブロックチェーンノード１１６（１）に送信する。
【００６９】
図１７は、いくつかの実装形態による合意伝播確認１７０２の例示的データ構造を示す。この例では、合意伝播確認１７０２は、提案ＩＤ８０４と、合意伝播の結果１７０４とを含み、これは、合意伝播がそれぞれのブロックチェーンノードによって受け入れられたことを示す。
【００７０】
図２に戻り、２３６において、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、ブロックチェーンネットワーク内の他のブロックチェーンノードから合意伝播確認を受信した後、合意伝播通知を、第１のエンティティ１０２（１）に関連付けられる管理プログラム１１４（１）に送信する。例えば、合意伝播通知は、管理プログラムに、合意がブロックチェーンネットワーク内のブロックチェーンに記録されたことを示す。
【００７１】
図１０は、いくつかの実装形態による合意伝播通知１８０２のデータ構造の一例を示す。この例では、合意伝播通知１８０２は、合意がブロックチェーンに成功裏に記録されたことを示す結果１８０４を含む。
【００７２】
図２に戻り、２３８において、合意伝播通知を受信したことに応答して、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、第１のエンティティ１０２（１）に関連付けられたユーザアプリケーション１０６（１）に、合意ステータス通知を送信する。例えば、管理プログラム１１４（１）は、ユーザアプリケーション１０６（１）に関連付けられるユーザに対して、合意が受け入れられ、ブロックチェーンネットワークによって管理されるブロックチェーンに成功裏に記録されたこと、さらに、合意に関連付けられる関連データが、合意に参加している他のエンティティによって検証されたことを、示す。
【００７３】
図１９は、いくつかの実装形態による合意ステータス通知１９０２の例示的データ構造を示す。この例では、合意ステータス通知１９０２は、合意ＩＤ４０４と、合意のステータスが完了であることを示すステータス１９０４とを含む。もちろん、合意がブロックチェーン上で受け入れらなかったまたは記録されなかった場合、ステータスは失敗を示し、第１のエンティティ１０２（１）に関連するユーザは、追加のステップを実行して失敗の原因を判断することができる。
【００７４】
上述したように、図３は、いくつかの実装形態による関連データの非同期検証のための例示的なプロセス３００を示すシーケンス図である。この例では、オペレーション２０２、２０４、２０８、２１０、２１２、及び２１４、ならびに関連するデータ構造は、図２に関して上で説明されたものと同じかまたはそれに類似している。しかしながら、この場合、データ転送は、オペレーション２０４の後に開始するのではなく、代わりに以下に説明されるように非同期的に実行される。
【００７５】
図３の例において、システム構成は、各エンティティに対して同じ参加者を含み、したがってシステム構成は同じである。しかしながら、図３の例示的なプロセス３００は、合意または他の取引の提案を、その合意または他の取引及び関連データの検査と非同期に、可能にする。これにより、提案エンティティ（すなわち、この例では第１のエンティティ１０２（１））は、関連するデータの検証を待つ必要なしに、合意が、合意候補として不変状態において、他のエンティティと共有されたことを直ちに保証する。図３の例のさらなる利点は、チェーン外記憶ノード（すなわち、記憶プログラム１２４のインスタンスを実行する計算装置）間のデータ転送が、同じ合意または複数の合意についての複数のオブジェクトのコンテンツ（内容）をまとめることなどによるバッチ方式で、または記憶ノードに最適な他の方法で、実行され得ることを含む。さらに、図３の例は、審査プロセスをより詳細にするまたはそうでなければより広範囲にすることができる。審査プロセスは、アイドル時間または低使用時間などに、バッチ処理として実行することもできる。
【００７６】
２０２において、第１のエンティティ１０２（１）に関連付けられたユーザアプリケーション１０６（１）は、図２及び図４に関して上述した例と同様に合意要求を発行する。合意要求は、関連データオブジェクトの記憶サイズなどにより、チェーン外に格納されることになる少なくとも１つの関連データオブジェクトを有する。
【００７７】
２０４において、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、第１のエンティティ１０２（１）に関連付けられた記憶プログラム１２４（１）にプット要求を発行することができる。したがって、プット要求に応答して、記憶プログラム１２４（１）は、そのコンテンツをチェーン外記憶装置に格納する。しかしながら、この例では、記憶プログラム１２４（１）は、第２のエンティティ１０２（２）へのデータ転送を直ちに開始するのではなく、そのコンテンツのデータ転送を延期し、他のエンティティへのデータ転送を開始するトリガまたは指示を待つ。
【００７８】
２０８において、第１のエンティティ１０２（１）に関連付けられた記憶プログラム１２４（１）は、管理プログラム１１４（１）にプット応答を発行する。例えば、記憶プログラム１２４（１）は、各関連データオブジェクト４０８の各コンテンツ４１２に関連付けられたオブジェクトＩＤを示すために管理プログラムにプット応答を送信する。プット応答は、オブジェクトＩＤに対応する関連データオブジェクト４０８のコンテンツ４１２から計算されたハッシュ値も含むことができる。
【００７９】
２１０で、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）に提案要求を発行する。例えば、プット応答２０８の受信に応答して、管理プログラム１１４（１）は提案要求を作成し、その提案要求を第１のブロックチェーンノード１１６（１）に送信する。
【００８０】
２１２で、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）が提案要求を受信し、それに応答して、第２のエンティティに関連付けられた第２のブロックチェーンノード１１６（２）に提案を送信する。エンティティ１０２（２）。例えば、提案要求の受信に応答して、第１のブロックチェーンノード１１６（１）は、提案を作成し、ブロックチェーンネットワーク内の他のブロックチェーンノードに送信する。
【００８１】
２１４で、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、提案を受信し、それに応答して、提案通知を第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）に送信する。例えば、提案通知は、上述の受信した提案８０２を単に含む。さらに、提案通知を送信する前に、第２のブロックチェーンノード１１６（２）は、提案が実際に第１のエンティティ１０２（１）からのものであることを保証するために、提案者のデジタル署名を検証する。管理プログラム１１４（２）は、提案通知２１４を受信する。しかしながら、この例では、第１のエンティティからのデータ転送の完了の指示を待つよりもむしろ、管理プログラムは受信した提案の事前審査を要求して処理を進める。
【００８２】
３０２で、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）からの２１４での提案通知の受信後、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）からの２１２で受信された提案に基づき、管理プログラム１１４（２）は、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）に、事前審査要求を送信する。例えば、事前審査要求は、例えば図７に関して上述したチェーン上の合意文書７０４を少なくとも含む。さらに、管理プログラム１１４（２）は、チェーン上の合意文書のコピーをローカルに格納する。
【００８３】
図２０は、いくつかの実装形態による事前審査要求２００２の例示的データ構造を示す。この例では、事前審査要求２００２は、提案８０２で受信されたチェーン上の合意文書７０４を含み、合意文書７０４は、合意ＩＤ４０４、合意宣言４０６、１または複数のデータオブジェクト情報セット７０６を含み、データオブジェクト情報セット７０６は、関連データオブジェクトごとに、タイトル７０８、オブジェクトＩＤ６０４、及びハッシュ値６０６を含む。
【００８４】
図３に戻り、３０４において、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）は、チェーン上の合意文書の事前審査を実行し、事前審査応答を第２のエンティティ１０２（２）に関連付けられている管理プログラム１１４（２）に送信する。例えば、審査官プログラム１１０（２）は、事前審査要求２００２を受信し、チェーン上の合意文書７０４の合意宣言のみを審査して、合意宣言が第２のエンティティ１０２（２）に対するものであり、合意に関するその他の前提条件に準拠していることを保証する。審査が成功裏に完了すると、審査官プログラム１１０（２）は、事前審査応答により応答し、これは図２及び図１３に関して上述した審査応答とほぼ同じであるが、しかし、結果が合意宣言に対するのみであり、完全な審査を示すような完全な審査応答ではないという点で異なる。
【００８５】
図２１は、いくつかの実装形態による事前審査応答２１０２の例示的なデータ構造を示す。この例では、事前審査応答２１０２は、結果２１０４を含み、これは事前審査が合格か不合格かのいずれかを示す。
【００８６】
図３に戻ると、３０６において、事前審査応答を受信したことに応答して、第２のエンティティ１０２（２）に関連する管理プログラム１１４（２）は、第２のエンティティ１０２（２）に関連する第２のブロックチェーンノード１１６（２）に確認要求を送信する。例えば、管理プログラム１１４は、関連データオブジェクトコンテンツの受信時のさらなる審査がなされるまで、合意が暫定的に受け入れられたことを示す確認要求を準備する。さらに、他の例では、事前審査ステップは、スキップされてもよく、プロセスは２１４から３０６に直接進んでもよい。
【００８７】
図２２は、いくつかの実装形態による確認要求２２０２の例示的データ構造を示す。この例では、確認要求２２０２は、合意に対する合意ＩＤ４０４を含む。この場合、確認要求は、合意提案が承認されていることを示すのではなく、第２のエンティティが提案の受信を承認することを示すのみである。
【００８８】
図３に戻って、３０８において、確認要求を受信することに応答して、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）に確認応答を送信し得る。例えば、確認応答は、図２に関して上で論じられた承認と同様であるが、しかし、合意提案の承認を意味するのではなく、むしろ提案が第２のエンティティによって受信されたことの確認だけを意味する。
【００８９】
図２３は、いくつかの実装形態による確認応答２３０２の例示的データ構造を示す。この例では、確認応答２３０２は提案ＩＤ８０４と確認者の署名２３０４を含む。２１２で送信された提案に関して上述した提案者の署名と同様に、確認者の署名２３０４は、ブロックチェーンネットワークによって使用されるＲＳＡ署名または他のタイプのデジタル署名などのデジタル署名であり、２１２での提案の一部として合意宣言の確認を示す。
【００９０】
図３に戻り、３１０で、第２のエンティティからの確認応答及び２１２で提案を受信した可能性があるブロックチェーンネットワークに参加している他の任意のエンティティからの確認応答の受信に応答して、第１のエンティティ１０２（１）に関連付けられる第１のブロックチェーンノード１１６（１）は、合意の状態が中間状態に遷移したと判定し、中間合意伝播を、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）及びブロックチェーンネットワークに参加している他のブロックチェーンノードに送信する。例えば、合意が中間状態にある場合、合意及び関連する関連データオブジェクトが合意及び関連データオブジェクトのさらなる審査に合格するという条件で、合意は合意の当事者であるエンティティによって条件付きで受け入れられる。
【００９１】
図２４は、いくつかの実装形態による中間合意伝播２４０２の例示的なデータ構造を示す。この例では、中間合意伝播２４０２は、提案ＩＤ８０４、チェーン上の合意文書７０４、提案者の署名８０６、及び１または複数の確認者の署名２３０４を含み、合意の内容（コンテンツ）を示し、そして、合意が参加エンティティよって条件付きで受け入れたことを示す。
【００９２】
図３に戻って、３１２において、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、中間合意伝播を受信し、新しいブロックをそれ自体のブロックチェーンに格納し、それに応答して、第１のエンティティ１０２（１）に関連するブロックチェーンノード１１６（１）に、中間合意伝播確認を送信する。例えば、中間合意伝播を受信すると、第２のブロックチェーンノード１１６（２）は、提案者の署名、確認者の署名を検証し、中間合意伝播における情報を、第２のブロックチェーンノード１１６（２）によって管理されているブロックチェーン上の新しいブロックに格納する。したがって、ブロックチェーンネットワークに参加している各ブロックチェーンノードは、そのブロックチェーンノードによって管理されているブロックチェーンに新しいブロックを追加する。さらに、第２のブロックチェーンノード１１６（２）（及び他のブロックチェーンノード）（図３には示されていない）は、中間合意伝播確認応答を生成し、これを第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）に送信する。
【００９３】
図２５は、いくつかの実装形態による中間合意伝播確認応答２５０２の例示的データ構造を示す図である。この例では、中間合意伝播確認応答２５０２は、提案ＩＤ８０４と、中間合意がそれぞれのブロックチェーンノードによって受け入れられたか拒否されたかを示す結果２５０４とを含む。
【００９４】
図３に戻り、３１４において、ブロックチェーンネットワーク内の他のブロックチェーンノードから中間合意伝播確認応答を受信した後、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、中間合意伝播通知を、第１のエンティティ１０２（１）に関連付けられる管理プログラム１１４（１）に送信する。例えば、中間合意伝播通知は、管理プログラム１１４（１）に、合意がブロックチェーンネットワーク内のブロックチェーンに記録されたことを示す。
【００９５】
図２６は、いくつかの実装形態による中間合意伝播通知２６０２の例示的データ構造を示す。この例では、合意伝播通知２６０２は、中間合意がブロックチェーンに成功裏に記録されたことを示す結果２６０４を含む。
【００９６】
図３に戻って、３１６において、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、第１のエンティティ１０２（１）に関連付けられたユーザアプリケーション１０６（１）に、中間合意ステータス通知を送信し得る。中間合意ステータス通知のデータ構造は、図１９に関して上述した合意ステータス通知と同じまたは類似していてよく、ステータス１９０４は「記録済み」などを示す。たとえば、この時点では、合意は完了していないが、現在は記録されているため、ブロックチェーンネットワークの観点からは不変である。したがって、合意は、データ転送が完了し、転送された関連データが審査されるか、そうでなければ合意を完了するための条件を満たすために検証されるまで、「保留」またはその他の条件付き状態にある。
【００９７】
３１８で、第１のエンティティ１０２（１）に関連付けられた記憶プログラム１２４（１）で、データ転送がトリガされるか、そうでなければ開始させられる。それに応じて、記憶プログラム１２４（１）は、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）への関連データの転送を開始する。３１８でデータ転送を開始するためのトリガのいくつかの例は、所定の処理データ転送を実行するための所定のスケジュールを含み、それらは、データ転送を実行するのに十分な帯域幅または他のリソースがあるという通知の受信、閾値数の合意がデータ転送を待っているという指示の受信、閾値数のデータオブジェクトが転送を待っているという指示の受信、上記の組み合わせ、または本明細書の開示の恩恵を受ける当業者には明らかであろう他の様々なトリガ条件である。さらに、いくつかの例では、データ転送はバッチ方式で実行されてもよく、その結果、異なる合意及び／または異なるブロックチェーンに対応するデータコンテンツなどのいくつかのデータコンテンツは、１つのチャンクにまとめられるか、そうでなければ同時にまとめてバッチ転送される。
【００９８】
３２０で、合意に参加しているエンティティのそれぞれの記憶プログラムへのデータ転送を完了する。
【００９９】
３２２において、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）は、転送完了通知を第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）に送信する。いくつかの例では、転送完了通知のデータ構造は、図９に関して上で論じられた転送完了通知９０２のデータ構造と同じまたは類似である。
【０１００】
３２４で、第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）は、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）に審査要求を送信する。いくつかの例では、審査要求のデータ構造は、図１０に関して上で論じられた審査要求１００２のデータ構造と同じまたは類似である。さらに、管理プログラム１１４（２）は、１以上のトリガ条件が満たされるまで、審査要求を送信するのを待ってもよい。それらは、例えば、効率的なバッチ処理のための審査の準備が整った閾値数のチェーン上の合意文書が存在すること、審査中に使用されるいくつかの外部リソースが利用可能になるのを待つこと、審査を実行する計算装置がアイドル状態になるのを待つことなどである。
【０１０１】
３２６において、審査要求を受信したことに応答して、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）は、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）に取得要求を送信する。いくつかの例では、取得要求のデータ構造は、図１１に関して上で論じられた取得要求１１０２のデータ構造と同じまたは類似である。
【０１０２】
３２８において、第２のエンティティ１０２（２）に関連付けられた記憶プログラム１２４（２）は、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）に取得応答を送信する。いくつかの例では、取得応答のデータ構造は、図１２に関して上で論じられた取得応答１２０２のデータ構造と同じまたは類似である。
【０１０３】
３３０において、取得応答を受信したことに応答して、審査官プログラム１１０（２）は、図２に関して上述した方法で審査を実行する。また、いくつかの例では、審査官プログラム１１０（２）は、図３のプロセス３００の非同期性により実質的に、より詳細な審査、及び／またはより長い時間にわたる審査、及び／またはより多くの外部リソースを使用する審査を実行することができる。審査の完了後、第２のエンティティ１０２（２）に関連付けられた審査官プログラム１１０（２）は、第２のエンティティ１０２（２）に関連付けられた管理プログラム１１４（２）に審査応答を送信する。いくつかの例では、審査応答のデータ構造は、図１３に関して上で論じられた審査応答１３０２のデータ構造と同じまたは類似でありる。
【０１０４】
３３２で、合意及び関連データが真さに合格したという指示を伴う審査応答を受信することに応答して、第２のエンティティ１０２（２）に関連する管理プログラム１１４（２）は、合意更新要求を第２のエンティティ１０２（２）に関連するブロックチェーンノード１１６（２）に送信する。合意更新要求は、合意の審査が成功した後にブロックチェーン上の中間合意を更新する要求を含む。
【０１０５】
図２７は、いくつかの実装形態による合意更新要求２７０２の例示的データ構造を示す。この例では、合意更新要求２７０２は、審査に合格した現在の中間合意を識別する合意ＩＤ４０４を含む。合意更新要求２７０２はさらに、審査に合格したことに基づいて第２のエンティティによって合意がなされたことを示す合意インジケータ２７０４を伴ってもよい。
【０１０６】
図３に戻り、３３４において、合意更新要求を受信したことに応答して、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）に、更新提案を送信する。例えば、更新提案は、図２及び１５に関して上述したように２３０で送信された承認と同様に、ブロックチェーンネットワーク内の他のブロックチェーンノードのいくつかまたはすべてに送信される。
【０１０７】
図２８は、いくつかの実装形態による更新提案２８０２の例示的データ構造を示す。この例では、更新提案２８０２は、中間合意としてブロックチェーン上に現在記録されている合意を識別するための合意ＩＤ４０４を含み、さらに新しい提案ＩＤ２８０４及び新しい提案者の署名２８０６を含んでもよい。したがって、この状況では、第２のエンティティが提案者になり、したがって、新しい提案ＩＤ２８０４及び新しい提案者の署名２８０６が含まれる。２１２で送信された提案に関して上述した提案者の署名と同様に、提案者の署名２８０６は、ブロックチェーンネットワークによって使用されるＲＳＡ署名または他のタイプのデジタル署名などのデジタル署名であり、第２のエンティティが合意に同意することの第２のエンティティからの認定（ａｕｔｈｏｒｉｚａｔｉｏｎ）を示す。さらに、更新提案２８０２は、ブロックチェーン上の合意ＩＤ４０４のレコードに適用することができる追加記録フィールド２８０８を含む。この例では、追加記録フィールド２８０８は、合意ラベル２８１０を含み、これは提案者（すなわち第２のエンティティ１０２（２））が合意に同意することを示す。
【０１０８】
図３を参照すると、３３６において、ブロックチェーンネットワーク上への合意更新要求の送信に応答して、少なくとも１つのブロックチェーンノードが合意ラベル２８１０におけるエンティティが合意更新要求に含まれる提案者の署名２８０６と一致することを検証し、合意更新要求を承認する。例えば、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、デジタル署名の検証を実行し、第２のエンティティ１０２（１）に関連付けられた第２のブロックチェーンノード１１６（２）及びブロックチェーンネットワーク内の他のブロックチェーンノードへ更新承認を送信する。例えば、更新承認は、ブロックチェーンノード１１６（２）及び１１６（１）が参加するブロックチェーンネットワークが従うプロトコルに基づいて準備及び送信される。さらに、更新承認は、３３４で送信された更新提案を受信した可能性があるブロックチェーンネットワーク内の他の任意のブロックチェーンノードに送信されてもよい。
【０１０９】
図２９は、いくつかの実装形態による更新承認２９０２の例示的データ構造を示す。この例では、更新承認２９０２は、３３４で第２のエンティティから受信した更新提案において受信した提案ＩＤ２８０４を含む。更新承認２９０２は、さらに、承認者の署名２９０４を含む。２１２で送信された提案に関連して上述した提案者の署名と同様に、承認者の署名は、ブロックチェーンネットワークによって使用されるＲＳＡ署名または他のタイプのデジタル署名などのデジタル署名であり、合意の承認を示す。
【０１１０】
図３に示すように、３３８において、第２のエンティティ１０２（２）に関連付けられた第２のブロックチェーンノード１１６（２）は、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）に更新伝播を送信する。例えば、第１のエンティティ及び／または３３４で更新提案を受信した可能性があるブロックチェーンネットワークに参加している他のエンティティからの承認の受信に応答して、第２のエンティティ１０２に関連付けられる第２のブロックチェーンノード１１６（２）は、第１のエンティティ１０２（１）に関連する第１のブロックチェーンノード１１６（１）及び他のエンティティに、更新伝播を送信する。例えば、第２のブロックチェーンノード１１６（２）は、承認者の署名を検証し、どのエンティティのどのブロックチェーンノードが更新提案のための更新承認を送信したかを記録する。第２のブロックチェーンノード１１６（２）はさらに、十分な数の更新承認がブロックチェーンネットワークから受信されたかどうかを判定する。必要とされる更新承認の数は特定の合意に依存するが、通常、合意に関与するすべての利害関係者から、及びもしあれば少なくとも１人の合意のスーパーバイザからの承認を受けることを含む。第２のブロックチェーンノード１１６（２）が、受信した更新承認の数が必要な承認数以上であると判定した場合、第２のブロックチェーンノード１１６（２）は、更新伝播を生成してブロックチェーンネットワークのすべてのブロックチェーンノード、すなわち、ブロックチェーンネットワーク内の別々の計算装置上で実行される各ブロックチェーンプログラム１１８へ送信する。あるいは、いくつかの例では、更新伝播を他のブロックチェーンノードに送るために適切な場所に１以上のプロキシがある場合、第２のブロックチェーンノード１１６（２）は、更新伝播を直接他のブロックチェーンノードに送る必要はない。
【０１１１】
図３０は、いくつかの実装形態による更新伝播３００２の例示的データ構造を示す。この例では、更新伝播３００２は、更新提案の提案ＩＤ２８０４、元の合意を識別する合意ＩＤ４０４、合意の第２のエンティティの認可を示す追加記録フィールド２８０８、更新提案の提案者の署名２８０６、１以上の承認者の署名２９０４を含む。
【０１１２】
図３に戻り、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、３３８で更新伝播を受信し、新しいブロックをそれ自体のブロックチェーンに格納し、そして、３４０で更新伝播確認応答を、第２のエンティティ１０２（２）に関連する第２のブロックチェーンノード１１６（２）に送信する。例えば、更新伝播を受信すると、第１のブロックチェーンノード１１６（１）は、提案者の署名、承認者の署名を検証し、更新伝播内の情報をブロックチェーンノード１１６（１）によって管理されるブロックチェーン上の新しいブロックに格納する。したがって、ブロックチェーンネットワークに参加している各ブロックチェーンノードは、そのブロックチェーンノードによって管理されているブロックチェーンに新しいブロックを追加する。
【０１１３】
さらに、上述のように、３４０において、更新伝播を受信した第１のブロックチェーンノード１１６（１）及び任意の他のブロックチェーンノード（図３には示されていない）は、更新伝播確認応答を生成し、これを第２のエンティティ１０２（２）に関連する第２のブロックチェーンノード１１６（２）に送信する。いくつかの例では、更新伝播確認応答のデータ構造は、図１７に関して上記で説明された合意伝播確認応答１７０２と同様であってよい。
【０１１４】
３４２で、３４０で更新伝播確認応答を受信したことに応答して、第２のブロックチェーンノード１１６（２）は、合意更新要求３３２が成功裏に処理されたという確約を提供するために、合意伝播通知を第２の管理プログラム１１４（２）に送信する。３４２における合意伝播通知は、図１８に関して上述した合意伝播通知１８０２と同様のデータ構造を有することができる。
【０１１５】
さらに、３４４で、第１のエンティティ１０２（１）に関連付けられた第１のブロックチェーンノード１１６（１）は、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）に、合意更新通知を送信する。図３１は、いくつかの実装形態による合意更新通知３１０２の例示的なデータ構造を示す。この例では、合意更新通知３１０２は、合意ＩＤ４０４及び合意ラベル２８１０を含み、これはどのエンティティが識別された合意に同意したかを示す。
【０１１６】
図３に戻ると、３４６で、合意更新通知に応答して、第１のエンティティ１０２（１）に関連付けられた管理プログラム１１４（１）は、合意更新ステータス通知を第１のエンティティ１０２に関連付けられたユーザアプリケーション１０６（１）に送信する。例えば、合意更新ステータス通知は、合意に同意したエンティティのリストを示し、さらに、合意のすべての利害関係者が合意に同意したかどうかを示す。
【０１１７】
図３２は、いくつかの実装形態による合意更新ステータス通知３２０２の例示的なデータ構造を示す。この例では、合意更新ステータス通知３２０２は、合意ＩＤ４０４と、合意に同意したエンティティのリスト３２０４とを含む。
【０１１８】
図３３及び３４は、いくつかの実装形態による例示的なプロセスを示すフロー図である。プロセスは、一連の動作を表す論理フロー図のブロックの集まりとして示されており、動作の一部または全部は、ハードウェア、ソフトウェア、またはそれらの組合せで実施することができる。ソフトウェアの文脈では、ブロックは、１または複数の計算機可読媒体に格納された計算機実行可能命令を表し、１または複数のプロセッサによって実行されると、列挙された動作を実行するようにプロセッサをプログラムする。一般に、計算機実行可能命令は、特定の機能を実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。ブロックが記載されている順序は、限定として解釈されるべきではない。説明されたブロックは任意の順序で及び／または並行して組み合わせて、プロセスまたは代替プロセスを実施することができ、すべてのブロックを実行する必要はない。説明のために、プロセスは、本明細書の例に記載されている環境、フレームワーク、及びシステムを参照して説明されているが、プロセスは、多種多様な他の環境、フレームワーク、及びシステムで実施され得る。
【０１１９】
図３３は、いくつかの実装形態による、チェーン外に格納された関連データを有するトランザクションを記録するための例示的なプロセス３３００を示すフロー図である。プロセス３３００は、エンティティの計算装置のうちの１つ、または他の適切な計算装置によって実行され得る。
【０１２０】
３３０２で、第１のブロックチェーンノードに関連付けられた第１の計算装置は、トランザクション要求、及び、トランザクション要求に関連付けられ、ブロックチェーン上に格納するための閾値サイズを超える、関連データを受信する。さらに、いくつかの例では、トランザクション要求及び関連データを受信すると、第１の計算装置は、関連付けられている関連データのサイズをブロックチェーン上の記憶用に指定された閾値データサイズと比較し、関連データのサイズが閾値サイズを超えているため、関連データをチェーン外に格納するように指定する。
【０１２１】
３３０４で、第１の計算装置は、関連データをチェーン外の格納場所に格納する。
【０１２２】
３３０６で、第１のブロックチェーンノードは、ブロックチェーン上のトランザクションの記録を提案するために、ブロックチェーンネットワーク内の１または複数の第２のブロックチェーンノードそれぞれに通信を送信し、通信は関連データのコンテンツ（内容）を表すハッシュ値を含む。
【０１２３】
３３０８で、第１の計算装置は、１または複数のブロックチェーンノードそれぞれに関連付けられた１または複数の第２の計算装置それぞれに、関連データを送信する。
【０１２４】
３３１０において、第２の計算装置のうちの少なくとも１つは、受信されたハッシュ値との比較に基づいて、受信された関連データの検証を実行する。  
【０１２５】
３３１２において、検証の結果に基づいて、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つから、デジタル署名を含み、ブロックチェーンへのトランザクションの記録を承認する通信を受信する。
【０１２６】
３３１４において、承認を有する少なくとも１つの通信に少なくとも部分的に基づいて、ハッシュ値と少なくとも１つの承認とを含むトランザクション情報をそれぞれのブロックチェーンノードに送信して、新しいブロックをブロックチェーンに追加する。
【０１２７】
図３４は、いくつかの実装形態による、チェーン外に格納された関連データを有するトランザクションを記録するための例示的なプロセス３４００を示すフロー図である。いくつかの例では、プロセス３４００の少なくとも一部は、第１の計算装置及び第１のブロックチェーンノード、または他の適切な計算装置によって実行され得る。
【０１２８】
３４０２で、第１のブロックチェーンノードに関連付けられた第１の計算装置は、トランザクション要求、及び、ブロックチェーン上に格納するための閾値サイズを超える、関連付けられた関連データを受信する。さらに、いくつかの例では、トランザクション要求及び関連付けられた関連データを受信すると、第１の計算装置は、関連データのサイズをブロックチェーン上の記憶用に指定された閾値データサイズと比較し、関連データのサイズが閾値サイズを超えているため、関連データをチェーン外に格納することを指定する。
【０１２９】
３４０４において、第１の計算装置は、関連データをチェーン外の格納場所に格納する。
【０１３０】
３４０６において、第１のブロックチェーンノードは、ブロックチェーン上にトランザクションを記録することを提案するために、ブロックチェーンネットワーク内の１または複数の第２のブロックチェーンノードそれぞれに通信を送信し、通信は関連データのコンテンツ（内容）を表すハッシュ値を含む。
【０１３１】
３４０８で、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つから、関連データの検証がなされるまで条件付きで受け入れられたとしてブロックチェーンノードへのトランザクションの記録を承認する通信を、受信する。
【０１３２】
３４１０で、承認を伴う少なくとも１つの通信に少なくとも部分的に基づいて、第１のブロックチェーンノードは、第２のブロックチェーンノードそれぞれに、ハッシュ値と少なくとも１つの承認を含むトランザクション情報を送信し、ブロックチェーンに新しいブロックを追加する。例えば、トランザクションは、トランザクション情報及びチェーン外の関連データの検証が実行されるまで完全には合意されていない中間または他の条件付きトランザクションとして、ブロックチェーンに記録される。
【０１３３】
３４１２で、第１の計算装置は、１または複数のブロックチェーンノードそれぞれに関連付けられた１または複数の第２の計算装置それぞれに、関連データを送信する。
【０１３４】
３４１４において、第２の計算装置のうちの少なくとも１つは、受信されたハッシュ値との比較に基づいて、受信された関連データの検証を実行する。  
【０１３５】
３４１６において、検証の結果に基づいて、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つから、ブロックチェーンへトランザクションを検証されたとして記録することを提案する通信を受信し、その通信はデジタル署名を含む。
【０１３６】
３４１８で、第１のブロックチェーンノードは、第２のブロックチェーンノードのうちの少なくとも１つに、ブロックチェーン上に検証されたトランザクションの記録を承認する通信を送信する。
【０１３７】
３４２０で、第１のブロックチェーンノードは、第２のブロックチェーンノードそれぞれから、ハッシュ値と少なくとも１つの承認とを含むトランザクション情報を受信して、ブロックチェーンに新しいブロックを追加する。
【０１３８】
本明細書に記載の例示的なプロセスは、説明の目的で提供されたプロセスの例にすぎない。本明細書の開示に照らせば、他の多数の変形が当業者には明らかであろう。さらに、本明細書の開示は、プロセスを実行するための適切なフレームワーク、アーキテクチャ、及び環境のいくつかの例を説明しているが、本明細書の実装形態は、説明した特定の例に限定されない。さらに、本開示は、説明され図面に示されるように、様々な例示的な実装形態を提供する。しかし、本開示は、本明細書で説明及び図示された実装形態に限定されず、知られるように、または当業者に知られるようになるように、他の実装形態に拡張することができる。
【０１３９】
図３５は、ユーザ計算装置１０４、審査官計算装置１０８、管理計算装置１１２、及び／またはブロックチェーンノード１１６、ならびに本明細書のいくつかの代替例で言及された他の計算装置に対応するなど、本明細書に記載のサービスのいくつかの機能を実装するために使用できる１または複数の例示的計算装置３５００の選択された構成要素を示す。計算装置３５００は、任意の方法で具現化することができる１または複数のサーバまたは他のタイプの計算装置を含むことができる。例えば、サーバの場合、プログラム、他の機能構成要素、及びデータは、単一のサーバ、サーバのクラスタ、サーバファームまたはデータセンタ、クラウドホスティング計算装置、仮想マシンホスティング計算装置等の上に実装することができ、また、他の計算機アーキテクチャを追加的にまたは代替的に使用することができる。
【０１４０】
さらに、図面は、単一の場所に存在するものとして計算装置３５００の機能構成要素及びデータを示しているが、これらの構成要素及びデータは、代替的に、任意の方法で異なる計算装置及び異なる場所にわたって分散することができる。その結果、機能は、１または複数の計算装置３５００によって実装することができ、上述のさまざまな機能は、さまざまな計算装置にわたってさまざまな方法で分散される。複数の計算装置３５００は、一緒にまたは別々に配置することができ、たとえば仮想サーバ、サーババンク、及び／またはサーバファームとして編成することができる。説明された機能は、単一の事業体または企業のサーバによって提供されてもよく、または複数の異なる事業体または企業のサーバ及び／またはサービスによって提供されてもよい。
【０１４１】
図示の例では、各計算装置３５００は、１または複数のプロセッサ３５０２、１または複数の計算機可読媒体３５０４、１または複数の通信インタフェース３５０６、及び１または複数の入出力（Ｉ／Ｏ）デバイス３５０８を含むことができる。各プロセッサ３５０２は、単一の処理ユニットまたは複数の処理ユニットであり得、単一または複数の演算ユニットまたは複数の処理コアを含み得る。プロセッサ３５０２は、１または複数のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、ステートマシン、論理回路、及び／または動作命令に基づいて信号を操作する任意の装置として実装することができる。例えば、プロセッサ３５０２は、本明細書に記載のアルゴリズム及びプロセスを実行するように特にプログラムまたは構成された任意の適切なタイプの１または複数のハードウェアプロセッサ及び／または論理回路とすることができる。プロセッサ３５０２は、計算機可読媒体３５０４に格納された計算機可読命令をフェッチして実行するように構成することができ、これは、プロセッサ３５０２を本明細書に記載の機能を実行するようにプログラムすることができる。  
【０１４２】
計算機可読媒体３５０４は、計算機可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意のタイプの技術で実施される揮発性及び不揮発性メモリ及び／または取り外し可能及び固定の媒体を含み得る。そのような計算機可読媒体３５０４は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、光学記憶装置、ソリッドステート記憶装置、磁気テープ、磁気ディスク記憶装置、ＲＡＩＤ記憶システム、ストレージアレイ、ネットワークアタッチトストレージ、ストレージエリアネットワーク、クラウドストレージ、または所望の情報を格納するために使用することができかつ計算装置によってアクセスすることができる任意の他の媒体を含み得るが、これらに限定されない。計算装置３５００の構成に応じて、計算機可読媒体３５０４は、ある種の計算機可読記憶媒体及び／または有形の非一時的媒体であり得、本明細書で言及されるときに非一時的計算機可読媒体は、エネルギ、搬送波信号、電磁波、及び信号自体などの媒体を除外する。
【０１４３】
計算機可読媒体３５０４は、プロセッサ３５０２によって実行可能な任意の数の機能構成要素を格納するために使用され得る。多くの実装形態では、これらの機能構成要素は、プロセッサ３５０２によって実行可能であり、実行されると、１以上のプロセッサ３５０２に  を実行する命令またはプログラムを含む。多くの実装形態では、これらの機能構成要素は、プロセッサ３５０２によって実行可能であり、実行されると、計算装置３５００に起因する動作を実行するように１または複数のプロセッサ３５０２を具体的に構成する命令またはプログラムを備える。計算機可読媒体３５０４に格納されている機能構成要素は、ユーザアプリケーション１０６、審査官プログラム１１０、管理プログラム１１４、ブロックチェーンプログラム１１８、記憶プログラム１２４を含むことができる。計算機可読媒体３５０４に格納された追加の機能構成要素は、計算装置３５００の様々な機能を制御及び管理するためのオペレーティングシステム３５１０を含み得る。
【０１４４】
さらに、計算機可読媒体３５０４は、本明細書で説明されている動作を実行するために使用されるデータを格納することができる。したがって、計算機可読媒体３５０４は、ブロックチェーン１２０を記憶することができる。さらに、計算機可読媒体は、関連データ１２６をチェーン外の場所に記憶するためのチェーン外記憶装置１２２を含むことができる。さらに、計算機可読媒体３５０４は、図３５に具体的には示されていない他の機能構成要素及びデータを格納または他の方法で維持することができる。これは、例えば、他のプログラム及びデータ３５１２であり、プログラムやドライバ、及び機能的構成要素によって使用されるかまたは生成されるデータなどを含む。さらに、計算装置３５００は、他の多くの論理構成要素、プログラム構成要素、及び物理構成要素を含むことができ、そのうちの上記のものは、本明細書の説明に関連する単なる例である。
【０１４５】
通信インタフェース３５０６は、ネットワーク１３０を介するなど、他の様々な装置との通信を可能にするための１または複数のインタフェース及びハードウェアコンポーネントを含むことができる。例えば、通信インタフェース３５０６は、本明細書の他の箇所でさらに列挙されているような、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク（例：Ｗｉ−Ｆｉ）、有線ネットワーク（例：光ファイバ及びイーサネット（登録商標））、ＢＬＵＥＴＯＯＴＨ（登録商標）やＢＬＵＥＴＯＯＴＨ  ｌｏｗ  ｅｎｅｒｇｙなどの近距離通信、の１または複数を介して通信を行うことができる。
【０１４６】
計算装置３５００は、様々な入出力（Ｉ／Ｏ）デバイス３５０８をさらに装備することができる。そのようなＩ／Ｏデバイス３５０８は、ディスプレイ、様々なユーザインターフェースコントロール（例えば、ボタン、ジョイスティック、キーボード、マウス、マウス、タッチスクリーンなど）、オーディオスピーカ、接続ポートなどを含むことができる。
【０１４７】
本明細書に記載の様々な命令、方法、及び技法は、計算機可読媒体に格納され、本明細書のプロセッサによって実行される計算機プログラム及びアプリケーションなどの計算機実行可能命令の一般的な文脈で考えることができる。一般に、プログラム及びアプリケーションという用語は互換的に使用されることがあり、特定のタスクを実行するためまたは特定のデータタイプを実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行可能コードなどを含む。これらのプログラム、アプリケーションなどは、ネイティブコードとして実行することができ、または仮想マシンまたは他のジャストインタイムコンパイル実行環境などでダウンロードして実行することができる。典型的には、プログラム及びアプリケーションの機能は、様々な実装形態において望まれるように組み合わせられまたは分散され得る。これらのプログラム、アプリケーション、及び技術の実装は、計算機記憶媒体に格納されるか、または何らかの形の通信媒体を介して送信され得る。
【０１４８】
本明細書の主題は、構造的特徴及び／または方法論的行為に特有の言語で説明されてきたが、添付の特許請求の範囲に定義された主題は必ずしも説明された特定の特徴または行為に限定されないことを理解されたい。そうではなく、特定の特徴及び行為は、特許請求の範囲を実施する例示的形態として開示されている。
【図１】
2020017256.tif 000003
【図２】
2020017256.tif 000004
【図３】
2020017256.tif 000005
【図４】
2020017256.tif 000006
【図５】
2020017256.tif 000007
【図６】
2020017256.tif 000008
【図７】
2020017256.tif 000009
【図８】
2020017256.tif 000010
【図９】
2020017256.tif 000011
【図１０】
2020017256.tif 000012
【図１１】
2020017256.tif 000013
【図１２】
2020017256.tif 000014
【図１３】
2020017256.tif 000015
【図１４】
2020017256.tif 000016
【図１５】
2020017256.tif 000017
【図１６】
2020017256.tif 000018
【図１７】
2020017256.tif 000019
【図１８】
2020017256.tif 000020
【図１９】
2020017256.tif 000021
【図２０】
2020017256.tif 000022
【図２１】
2020017256.tif 000023
【図２２】
2020017256.tif 000024
【図２３】
2020017256.tif 000025
【図２４】
2020017256.tif 000026
【図２５】
2020017256.tif 000027
【図２６】
2020017256.tif 000028
【図２７】
2020017256.tif 000029
【図２８】
2020017256.tif 000030
【図２９】
2020017256.tif 000031
【図３０】
2020017256.tif 000032
【図３１】
2020017256.tif 000033
【図３２】
2020017256.tif 000034
【図３３】
2020017256.tif 000035
【図３４】
2020017256.tif 000036
【図３５】
2020017256.tif 000037