(57)【特許請求の範囲】
【請求項１】
監査可能で不変なデータをブロックチェーンへ提示する方法であって、
処理サーバの受信装置によって、複数のブロックを含むブロックチェーンを受信するステップであって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各トランザクション値は少なくともトランザクションハッシュを含む、ステップと、
前記処理サーバの前記受信装置によって、前記ブロックチェーン内のブロックに含まれた特定のトランザクションハッシュに関連付けられたデータファイルを受信するステップであって、前記データファイルは１以上の変数を含む、ステップと、
前記処理サーバのデータ修正モジュールによって、前記データファイルに含まれる前記１以上の変数の少なくとも１つを修正するステップと、
前記処理サーバのハッシュ化モジュールによって、１以上のハッシュ化アルゴリズムを前記修正されたデータファイルに適用することによって、新たなハッシュ値を生成するステップと、
前記処理サーバの生成モジュールによって、少なくとも前記生成された新たなハッシュ値と前記特定のトランザクションハッシュとに基づいて、新たなトランザクション値を生成するステップと、
前記処理サーバの署名モジュールによって、前記生成された新たなトランザクション値をデジタルに署名するステップと、
前記処理サーバの送信装置によって、前記署名された新たなトランザクション値を電子的に送信するステップと、を含み、
前記新たなトランザクション値は、前記処理サーバの前記ハッシュ化モジュールによって、少なくとも前記生成された新たなハッシュ値と前記特定のトランザクションハッシュとをハッシュ化することによって生成される、方法。
【請求項２】
請求項１に記載の方法において、前記新たなトランザクション値は、前記ブロックチェーンに関連付けられた実行可能スクリプトに関連付けられた参照識別子にも基づいて生成される、方法。
【請求項３】
請求項２に記載の方法において、前記実行可能スクリプトは、前記修正されたデータファイルを実行することと、決定論的応答を出力することとを実行するよう構成される、方法。
【請求項４】
請求項１に記載の方法において、前記処理サーバのデータベースに、キーと値との複数の対（key-value pairs）を格納することであって、前記キーと値との複数の対は、少なくとも、前記特定のトランザクションハッシュをキーとして含み前記受信されたデータファイルを値として含む第１のものを含む、ことと、
前記処理サーバの問い合わせモジュールによって、前記データベース上でクエリを実行して、前記生成された新たなハッシュ値をキーとして含み前記修正されたデータファイルを値として含む新たなキーと値との対を挿入することとを更に含む、方法。
【請求項５】
ブロックチェーンへ提示された決定論的(deterministic)データを監査及び検証する方法であって、
処理サーバの受信装置によって、複数のブロックを含むブロックチェーンを受信するステップであって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各ブロックヘッダは少なくともタイムスタンプを含み、各トランザクション値は少なくともトランザクションハッシュを含む、ステップと、
前記処理サーバの問い合わせモジュールによって前記ブロックチェーン上で第１のクエリを実行して、第１のトランザクション値を識別するステップであって、前記第１のクエリを実行して前記第１のトランザクション値を識別するときに、前記第１のトランザクション値は実行可能スクリプトに関連付けられる、ステップと、
前記処理サーバのプロセッサによって、複数の所定の入力値を入力として用いて、前記実行可能スクリプトを実行して、少なくとも１つの出力変数を出力として受信するステップと、
前記処理サーバのハッシュ化モジュールによって、前記複数の所定の入力値と前記少なくとも１つの出力変数とをハッシュ化することによってハッシュ値を生成するステップと、
前記処理サーバの生成モジュールによって、少なくとも前記生成されたハッシュ値と前記第１のトランザクション値に含まれた前記トランザクションハッシュとに基づいて、新たなトランザクション値を生成するステップと、
前記処理サーバの検証モジュールによって、前記ブロックチェーン内のブロックに含まれた第２のトランザクション値を検証するステップであって、前記第２のトランザクション値は前記生成された新たなトランザクション値に対応する、ステップと、
を含み、
前記新たなトランザクション値は、前記処理サーバの前記ハッシュ化モジュールによって、少なくとも前記生成されたハッシュ値と前記第１のトランザクション値に含まれた前記トランザクションハッシュとをハッシュ化することによって生成され、
前記第２のトランザクション値を検証することは、
前記処理サーバの前記問い合わせモジュールによって前記ブロックチェーン上で第２のクエリを実行して、前記第２のトランザクション値を識別することと、
前記処理サーバの前記検証モジュールによって、前記第２のトランザクション値は前記生成された新たなトランザクション値と等しいことを検証することと、を含む方法。
【請求項６】
請求項５に記載の方法において、前記第２のトランザクション値を検証することは、
前記処理サーバの前記問い合わせモジュールによって前記ブロックチェーン上で第２のクエリを実行して、前記第２のトランザクション値を識別することを含む方法。
【請求項７】
請求項６に記載の方法において、
前記処理サーバのメモリに公開鍵を格納するステップを更に含む、方法。
【請求項８】
監査可能で不変なデータをブロックチェーンへ提示するシステムであって、
処理サーバの受信装置であって、
複数のブロックを含むブロックチェーンであって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各トランザクション値は少なくともトランザクションハッシュを含む、ブロックチェーンと、
前記ブロックチェーン内のブロックに含まれた特定のトランザクションハッシュに関連付けられたデータファイルであって、前記データファイルは１以上の変数を含む、データファイルと
を受信するよう構成された受信装置と、
前記データファイルに含まれる前記１以上の変数の少なくとも１つを修正するよう構成された、前記処理サーバのデータ修正モジュールと、
１以上のハッシュ化アルゴリズムを前記修正されたデータファイルに適用することによって、新たなハッシュ値を生成するよう構成された、前記処理サーバのハッシュ化モジュールと、
少なくとも前記生成された新たなハッシュ値と前記特定のトランザクションハッシュとに基づいて、新たなトランザクション値を生成するよう構成された、前記処理サーバの生成モジュールと、
前記生成された新たなトランザクション値をデジタルに署名するよう構成された、前記処理サーバの署名モジュールと、
前記署名された新たなトランザクション値を電子的に送信するよう構成された、前記処理サーバの送信装置と、
を含み、
前記新たなトランザクション値は、前記処理サーバの前記ハッシュ化モジュールによって、少なくとも前記生成された新たなハッシュ値と前記特定のトランザクションハッシュとをハッシュ化することによって生成される、システム。
【請求項９】
請求項８に記載のシステムにおいて、前記新たなトランザクション値は、前記ブロックチェーンに関連付けられた実行可能スクリプトに関連付けられた参照識別子にも基づいて生成される、システム。
【請求項１０】
請求項９に記載のシステムにおいて、前記実行可能スクリプトは、前記修正されたデータファイルを実行することと、決定論的応答を出力することとを実行するよう構成される、システム。
【請求項１１】
請求項８に記載のシステムにおいて、
キーと値との複数の対（key-value pairs）を格納するよう構成された、前記処理サーバのデータベースであって、前記キーと値との複数の対は、少なくとも、前記特定のトランザクションハッシュをキーとして含み前記受信されたデータファイルを値として含む第１のものを含む、データベースと、
前記データベース上でクエリを実行して、前記生成された新たなハッシュ値をキーとして含み前記修正されたデータファイルを値として含む新たなキーと値との対を挿入するよう構成される、前記処理サーバの問い合わせモジュールと、を更に含むシステム。
【請求項１２】
ブロックチェーンへ提示された決定論的(deterministic)データを監査及び検証するシステムであって、
複数のブロックを含むブロックチェーンを受信するよう構成された、処理サーバの受信装置であって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各ブロックヘッダは少なくともタイムスタンプを含み、各トランザクション値は少なくともトランザクションハッシュを含む、受信装置と、
前記ブロックチェーン上で第１のクエリを実行して、第１のトランザクション値を識別するよう構成された、前記処理サーバの問い合わせモジュールであって、前記第１のクエリを実行して前記第１のトランザクション値を識別するときに、前記第１のトランザクション値は実行可能スクリプトに関連付けられる、問い合わせモジュールと、
複数の所定の入力値を入力として用いて、前記実行可能スクリプトを実行して、少なくとも１つの出力変数を出力として受信するよう構成された、前記処理サーバのプロセッサと、
前記複数の所定の入力値と前記少なくとも１つの出力変数とをハッシュ化することによってハッシュ値を生成するよう構成された、前記処理サーバのハッシュ化モジュールと、
少なくとも前記生成されたハッシュ値と前記第１のトランザクション値に含まれた前記トランザクションハッシュとに基づいて、新たなトランザクション値を生成するよう構成された、前記処理サーバの生成モジュールと、
前記ブロックチェーン内のブロックに含まれた第２のトランザクション値を検証するよう構成された、前記処理サーバの検証モジュールであって、前記第２のトランザクション値は前記生成された新たなトランザクション値に対応する、検証モジュールと、
を含み、
前記新たなトランザクション値は、前記処理サーバの前記ハッシュ化モジュールによって、少なくとも前記生成されたハッシュ値と前記第１のトランザクション値に含まれた前記トランザクションハッシュとをハッシュ化することによって生成され、
前記第２のトランザクション値を検証することは、
前記処理サーバの前記問い合わせモジュールによって前記ブロックチェーン上で第２のクエリを実行して、前記第２のトランザクション値を識別することと、
前記処理サーバの前記検証モジュールによって、前記第２のトランザクション値は前記生成された新たなトランザクション値と等しいことを検証することと、を含むシステム。
【請求項１３】
請求項１２に記載のシステムにおいて、前記第２のトランザクション値を検証することは、
前記処理サーバの前記問い合わせモジュールによって前記ブロックチェーン上で第２のクエリを実行して、前記第２のトランザクション値を識別することを含むシステム。
【請求項１４】
請求項１３に記載のシステムにおいて、
公開鍵を格納するよう構成された、前記処理サーバのメモリを更に含む、システム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本願は、米国特許出願第15/392,108号（2016年12月28日出願）の優先権を主張する。上記出願の開示全体は参照によってここに取り込まれる。
【技術分野】
【０００２】
本開示は、入力値を含むブロックチェーンへ不変のデータを提示することに関連する。スマートコントラクトへの入力の結果は決定論的(deterministic)であり、関連付けられたトランザクションの実行の確認及び監査を可能にする。
【背景技術】
【０００３】
技術が進歩して一層洗練されるにつれて、事業体、個人及び他のエンティティはしばしば、自身がどのようにビジネスを行って他人と理解し合うかの方法を模索する。コンピューティング技術が劇的に展望を変えた１つの要素は、２つのエンティティの間でトランザクションを実行することである。トランザクションは任意の種類の理由（双方向の支払、商品又は役務の購入、データ交換、財産の取得、契約の考慮等）で、２つのエンティティの間で生じる。多くの場合、コンピューティング技術はプラットフォームを提供してよい。ここでは、エンティティはトランザクション及びそれに関連付けられたデータを証明又は検証してよいし、それに関連する通信を実行してよい。例えば、コンピューティング装置を介した送金は、物理的な配送よりもかなり迅速に実行されうる。
【０００４】
しかし、コンピューティング装置及び電子的な通信は時として損なわれ、エンティティ及びその財産を危険にさらす。そのような通信を安全にするために多くの方法（例えば安全な通信チャネル及びプロトコル、並びに、データメッセージの暗号化）が開発されてきた。類似的に、データ格納を安全に行うための方法が開発されてきた。そのような方法の１つは、ブロックチェーンを使用することである。ここでは、チェーンは分散されており、そこに格納されるデータは不変である。これによって、特定の時刻でのデータの信頼できる証明書（例えば特定の契約条件の合意）が提供される。
【０００５】
しかし、ブロックチェーンは合意やトランザクションの計画又は開始に関連する他のデータを格納するには有用であるものの、ブロックチェーンは現在、そのようなトランザクションの実行を確認し監査する能力を欠いている。すなわち、この目的でどのようにブロックチェーンを用いるかについての技術的課題がある。したがって、ブロックチェーンを用いたトランザクションに関連付けられた動作の実行の監査及び確認を提供する技術的解決手段が必要とされている。
【発明の概要】
【０００６】
本開示は、監査可能で不変のデータをブロックチェーンへ提示することと、その監査及び検証とについてのシステム及び方法の開示を提供する。スマートコントラクトへの入力は、ブロックチェーンに格納される。スマートコントラクトの出力は、スマートコントラクトの種類と関連付けられた入力とに基づいて、決定論的である。結果として、スマートコントラクトに関連する実行を検証したいエンティティは、実行を監査及び検証するために使用する予期される出力を生成可能であってよい。更に、そのような実行に関連付けられたデータをブロックチェーンに提示することによって、更なる実行は監査及び検証されてよい。これによって、２以上のエンティティの間のトランザクションの全体的な実行に対する正確な捕捉と監査と確認とが可能である。
【０００７】
監査可能で不変なデータをブロックチェーンへ提示する方法は、
処理サーバの受信装置によって、複数のブロックを含むブロックチェーンを受信するステップであって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各トランザクション値は少なくともトランザクションハッシュを含む、ステップと、
前記処理サーバの前記受信装置によって、前記ブロックチェーン内のブロックに含まれた特定のトランザクションハッシュに関連付けられたデータファイルを受信するステップであって、前記データファイルは１以上の変数を含む、ステップと、
前記処理サーバのデータ修正モジュールによって、前記データファイルに含まれる前記１以上の変数の少なくとも１つを修正するステップと、
前記処理サーバのハッシュ化モジュールによって、１以上のハッシュ化アルゴリズムを前記修正されたデータファイルに適用することによって、新たなハッシュ値を生成するステップと、
前記処理サーバの生成モジュールによって少なくとも前記生成された新たなハッシュ値と前記特定のトランザクションハッシュとに基づいて、新たなトランザクション値を生成するステップと、
前記処理サーバの署名モジュールによって、前記生成された新たなトランザクション値をデジタルに署名するステップと、
前記処理サーバの送信装置によって、前記署名された新たなトランザクション値を電子的に送信するステップと、を含む。
【０００８】
ブロックチェーンへ提示された決定論的(deterministic)データを監査及び検証する方法は、
処理サーバの受信装置によって、複数のブロックを含むブロックチェーンを受信するステップであって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各ブロックヘッダは少なくともタイムスタンプを含み、各トランザクション値は少なくともトランザクションハッシュを含む、ステップと、
前記処理サーバの問い合わせモジュールによって前記ブロックチェーン上で第１のクエリを実行して、第１のトランザクション値を識別するステップであって、前記第１のトランザクション値は実行可能スクリプトに関連付けられる、ステップと、
前記処理サーバのプロセッサによって、複数の所定の入力値を用いて、前記実行可能スクリプトを実行して、少なくとも１つの出力変数を受信するステップと、
前記処理サーバのハッシュ化モジュールによって、前記複数の所定の入力値と前記少なくとも１つの出力変数とに基づいて、ハッシュ値を生成するステップと、
前記処理サーバの生成モジュールによって、少なくとも前記生成されたハッシュ値と前記第１のトランザクション値に含まれた前記トランザクションハッシュとに基づいて、新たなトランザクション値を生成するステップと、
前記処理サーバの検証モジュールによって、前記ブロックチェーン内のブロックに含まれた第２のトランザクション値を検証するステップであって、前記第２のトランザクション値は前記生成された新たなトランザクション値に対応する、ステップと、
を含む。
【０００９】
監査可能で不変なデータをブロックチェーンへ提示するシステムは、
処理サーバの受信装置であって、
複数のブロックを含むブロックチェーンであって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各トランザクション値は少なくともトランザクションハッシュを含む、ブロックチェーンと、
前記ブロックチェーン内のブロックに含まれた特定のトランザクションハッシュに関連付けられたデータファイルであって、前記データファイルは１以上の変数を含む、データファイルと
を受信するよう構成された受信装置と、
前記データファイルに含まれる前記１以上の変数の少なくとも１つを修正するよう構成された、前記処理サーバのデータ修正モジュールと、
１以上のハッシュ化アルゴリズムを前記修正されたデータファイルに適用することによって、新たなハッシュ値を生成するよう構成された、前記処理サーバのハッシュ化モジュールと、
少なくとも前記生成された新たなハッシュ値と前記特定のトランザクションハッシュとに基づいて、新たなトランザクション値を生成するよう構成された、前記処理サーバの生成モジュールと、
前記生成された新たなトランザクション値をデジタルに署名するよう構成された、前記処理サーバの署名モジュールと、
前記署名された新たなトランザクション値を電子的に送信するよう構成された、前記処理サーバの送信装置と、
を含む。
【００１０】
ブロックチェーンへ提示された決定論的(deterministic)データを監査及び検証するシステムは、
複数のブロックを含むブロックチェーンを受信するよう構成された、処理サーバの受信装置であって、各ブロックはブロックヘッダと１以上のトランザクション値とを少なくとも含み、各ブロックヘッダは少なくともタイムスタンプを含み、各トランザクション値は少なくともトランザクションハッシュを含む、受信装置と、
前記ブロックチェーン上で第１のクエリを実行して、第１のトランザクション値を識別するよう構成された、前記処理サーバの問い合わせモジュールであって、前記第１のトランザクション値は実行可能スクリプトに関連付けられる、問い合わせモジュールと、
複数の所定の入力値を用いて、前記実行可能スクリプトを実行して、少なくとも１つの出力変数を受信するよう構成された、前記処理サーバのプロセッサと、
前記複数の所定の入力値と前記少なくとも１つの出力変数とに基づいて、ハッシュ値を生成するよう構成された、前記処理サーバのハッシュ化モジュールと、
少なくとも前記生成されたハッシュ値と前記第１のトランザクション値に含まれた前記トランザクションハッシュとに基づいて、新たなトランザクション値を生成するよう構成された、前記処理サーバの生成モジュールと、
前記ブロックチェーン内のブロックに含まれた第２のトランザクション値を検証するよう構成された、前記処理サーバの検証モジュールであって、前記第２のトランザクション値は前記生成された新たなトランザクション値に対応する、検証モジュールと、
を含む。
【図面の簡単な説明】
【００１１】
本開示の範囲は、添付の図面と共に解釈されると、例示的な実施形態についての下記の詳細な記載から最も良く理解される。図面には次の図が含まれる。
【００１２】
【図１】図１は、本開示の実施形態による、トランザクションに関連する不変のデータをブロックチェーンに提示することと、その監査及び検証とについての高いレベルのシステム構造を示す機能ブロック図である。
【図２】図２は、図１のシステムの処理サーバを示す機能ブロック図である。そのシステムは、例示的実施形態による、スマートコントラクトへの不変な入力を用いて、ブロックチェーンにおけるトランザクションデータを提示、監査、及び検証するものである。
【図３】図３は、例示的実施形態による図１のシステムにおいて、ブロックチェーンへのデータ提示と、それに関連付けられたスマートコントラクトに関連する実行の監査及び検証とについての処理を示すフローチャートである。
【図４】図４は、例示的実施形態による、監査可能で不変なデータをブロックチェーンへ提示する例示的方法を示すフローチャートである。
【図５】図５は、例示的実施形態による、ブロックチェーンへ提示される決定論的データの監査及び検証のための例示的方法を示すフローチャートである。
【図６】図６は、例示的実施形態による、コンピュータシステム構造を示す機能ブロック図である。
【００１３】
本開示の更なる応用分野は、下記の詳細な説明から自明である。例示的実施形態の詳細な説明は、例示目的のみを意図しており、本開示の範囲を必要的に制限することを意図しない。
【発明を実施するための形態】
【００１４】
用語解説
ブロックチェーン：ブロックチェーンを基礎とした通貨の全てのトランザクションの公共台帳（public  ledger）である。１以上のコンピュータ装置は、ブロックチェーンネットワークを含んでよく、これはブロックチェーンにおけるブロックの一部としてトランザクションを処理及び記録するよう構成されてよい。一旦ブロックが完成すると、当該ブロックはブロックチェーンへ追加され、したがってトランザクション記録が更新される。多くの実施形態では、ブロックチェーンは時系列順のトランザクションの台帳であってよいし、ブロックチェーンネットワークによる使用に適した他の順番で提示されてもよい。いくつかの実施形態では、ブロックチェーンで記録されたトランザクションは、宛先アドレスと通貨金額とを含んでよい。これによりブロックチェーンは、どれほどの通貨が特定のアドレスへ帰属するかを記録する。いくつかの実施形態では、トランザクションは金融的であってもそうでなくてもよいし、追加情報又は異なる情報（例えばソースアドレス、タイムスタンプ等）を含んでよい。いくつかの実施形態では、ブロックチェーンは追加的に又は代替的に、ほぼ任意の種別のデータ（これは改ざん又は改訂に対して強化された継続的に増加するデータレコードの一覧を維持する分散データベースに配置されるもの又は配置される必要のあるものである）をトランザクションの形態として含んでよい。あるいはブロックチェーンは、プルーフオブワーク及び／又はそれに関連付けられた任意の他の適切な検証技術によってブロックチェーンネットワークによって確認及び有効化されてよい。いくつかの実施形態では、所定のトランザクションについてのデータは更に、トランザクションデータに付加されたトランザクションの直接的な一部ではない追加のデータを含んでよい。いくつかの実施形態では、そのようなデータをブロックチェーンに含めることは、トランザクションを構成してよい。そのような実施形態では、ブロックチェーンは特敵のデジタル通貨、仮想通貨、不換通貨又は他の種別の通貨に直接的に関連付けられなくてよい。
【００１５】
スマートコントラクト：トランザクションについての交渉又は実行を支援、検証又は実施するコンピュータプロトコルである。スマートコントラクトはコンピューティング装置の実行可能スクリプト又は他の種別として整形されてよい。このため、スマートコントラクトが適切なプロセッサによって実行されると、１以上の所定の動作が実行される。多くの場合、スマートコントラクトは（例えば、スマートコントラクトの条件の肯定的実行又は否定的実行（例えば違反）に関連付けられた動作を実行するよう構成されることによって、）従来の契約の条件を手本としてよい。例えばスマートコントラクトは部品の購入についての取引に関連付けられてよい。このときスマートコントラクトは(i)購入者が部品を受領する場合に供給者への支払を開始すること、又は、(ii)供給者が所定の日付までに部品を供給しないときに購入者に通知すること、を実行するよう構成される。
【００１６】
不変なスマートコントラクト入力についての、監査及び検証システム
図１は、スマートコントラクトへの不変の入力をブロックチェーンに格納するシステム１００と、それに関連付けられた実行を、スマートコントラクトの決定論的出力に基づいて監査及び検証することとを示す。
【００１７】
システム１００は処理サーバ１０２を含んでよい。下記で詳述される処理サーバ１０２は、ブロックチェーンへの提示のためのデータの生成に関連する、本開示の動作（及びその監査及び検証）を実行するよう特別に構成されてよく、これらの機能を実行するようプログラムされると、それを特定用途コンピュータとする。処理サーバ１０２は、エンティティと他のエンティティとの間の電子的トランザクションに参加するよう構成されたエンティティのためのコンピューティングシステム又はコンピューティングシステムの一部であってよい。例えば処理サーバ１０２は、電子的トランザクションに参加する第２のエンティティのための第三者システム１０４と電子的通信を交換してよい。本開示のように、処理サーバ１０２と第三者システム１０４とによって実行される機能の各々はまた、対応するコンピューティング装置によって実行されてよい。
【００１８】
システム１００はまた、ブロックチェーンネットワーク１０６を含んでよい。これはブロックチェーンに関連付けられてよく、それに対して本開示のデータが提示されてよい。ブロックチェーンネットワーク１０６は複数のブロックチェーンノード１０８（例えば図１に記載のブロックチェーンノード１０８ａ及び１０８ｂ）を含んでよい。明確性のために２つだけが例示されるが、より多くの数、数十、数百、数千又はそれ以上の数が用いられてよいことが考慮されてよい。ブロックチェーンノード１０８は、当業者にとって自明な方法及びシステムを用いて、トランザクションへの追加のために新たなブロックを生成及び検証するよう構成されてよい。いくつかの実施形態では、処理サーバ１０２及び／又は第三者システム１０４は、ブロックチェーンネットワーク１０６のブロックチェーンノード１０８として動作するよう構成されてよい。例えば処理サーバ１０２は、本開示の機能に加えて、新たなブロックを生成し、ブロックを検証し、新たな検証済みブロックをブロックチェーンに追加するよう構成されてよい。
【００１９】
処理サーバ１０２に関連付けられたエンティティ（「第１のエンティティ」とも称される）は、提案された電子的トランザクションに関し、第三者システム１０４に関連付けられたエンティティ（「第２のエンティティ」とも称される）と通信してよい。いくつかの実施形態では、追加のエンティティがトランザクションに関わってよい。そのような実施では、追加のエンティティは第三者システム１０４に関連付けられてよい。ここでは、それによって実行される機能は、本開示の第三者システム１０４によって実行される機能と同一であってよい。提案された電子的トランザクションは任意のトランザクションであってよい。このとき、関わったエンティティの少なくとも１つは、動作（この実行は、他のエンティティによって検証されてよい）を実行するよう期待される。電子的トランザクションは例えば、商品又は役務の購入、データ交換、実行契約等を含んでよい。例えば、一例では、トランザクションはサービス契約であってよい。このとき第１のエンティティは、オフィスの修復につき、1000ドルの頭金の支払に同意してよい。第２のエンティティは、所定の時刻までにオフィスを修理することに同意してよい。仕事が完了すると、第１のエンティティは9000ドルを支払ってよい。
【００２０】
第１のエンティティ及び第２のエンティティは、トランザクションに関連付けられた条件に同意してよい。これは「入力」として本開示で称されてよい。例えば上記の例では、入力は1000ドルの頭金と、頭金の支払期限と、修復の期限と、9000ドルの最終支払と、最終支払の期限とを含んでよい。処理サーバ１０２及び／又は第三者システム１０４とは、同意された入力を、トランザクションのトランザクション値（これは関連付けられたブロックチェーンに追加される）として、ブロックチェーンノード１０８に電子的に送信するよう構成されてよい。トランザクション値は、下記で詳述されるように、トランザクション入力を示すハッシュ値であってよい。結果として、同意された入力はブロックチェーンに格納され、ブロックチェーンの種類によって不変である。このとき、ブロックチェーンのブロックのヘッダに格納されたハッシュ値は、そこに格納されたデータの不変性を確実にしてよい。いくつかの実施形態では、ブロックチェーンは、入力と入力の同意との両方に関連付けられた不変のデータを格納するために一方又は双方のエンティティによって使用されてよい。例えば第１のエンティティ及び／又は第２のエンティティは受付フレームを使用してよい。これはトランザクションハッシュに含まれて、条件の受付を示す。受付フレームについての追加情報は、米国特許出願第14/938,213号にて発見可能である。これの名称は、「Method and System for Validation of Hashed Data via Acceptance Frames」（発明者：Steven C. Davis）であり、その開示全体を参照によりここに取り込む。
【００２１】
第１及び第２のエンティティの間のトランザクションについてのトランザクション値は、入力の各々を含んでよいし、いくつかの実施形態では、入力を示す単一のトランザクションハッシュを含んでよい。例えばトランザクションハッシュは、１以上のハッシュアルゴリズムを入力に適用することによって（例えば入力を所定の方法で組み合わせる（例えば各入力を分割装置を用いて単一の文字列に組み合わせることや、入力をデータファイルに格納ること等）ことによって、又は、入力のマークル木を生成して、マークル木のルートを用いることによって）生成されてよい。ハッシュ値が生成される実施形態では、処理サーバ１０２はキーと値（バリュー）との対をキーバリューデータベースに格納されるよう構成されてよい（下記の通り）。ここでは、ハッシュ値はキーと値との対であってよく、対応する値は、キーの生成に使用される入力である。このような実施形態では、第三者システム１０４は、同一のハッシュ化アルゴリズムと自身のキーとバリューとの対のためのデータ整形とを用いてトランザクションハッシュを生成してよい。これはしたがって、ブロックチェーンに提示されるトランザクションハッシュが、同意された入力につき性格であることを検証する。
【００２２】
一旦トランザクションがブロックチェーンに提示されると、関わったエンティティは、トランザクションにつき任意の実行が施行されたときにブロックチェーンを更新してよい。例示的実施形態では、第１のエンティティと第２のエンティティとの間のトランザクションの実行に関連する動作を実行するためにスマートコントラクトが使用されてよい。例えばスマートコントラクトはブロックチェーントランザクションについての更新を生成するよう構成されてよいし、エンティティ（これの実行は、動作が完了した次である）にメッセージを送信してよいし、トランザクションを無効にして、非実行のための任意の動作等を開始してよい。例えば上記の例では、第１のエンティティが支払期限までに1000ドルの頭金を支払わないとき（例えば期限後に、ブロックチェーンが支払を示すように更新されなかった場合）、スマートコントラクトは不払いについて第２のエンティティに通知して、支払が1000ドルに達しなかったときは第１のエンティティによってなされた任意の支払を返金してよい。
【００２３】
そのような実施形態では、トランザクション値はスマートコントラクト又はそれへの参照子を含んでよい。あるいはスマートコントラクト又は関連付けられた参照子は、トランザクションハッシュ（これは時としてトランザクション値を含む）の生成に使用されてよい。参照子は例えば、スマートコントラクト自体のハッシュ値（これは例えば、スマートコントラクトのハッシュ化によって生成されてよいし、スマートコントラクトを値として含むキーとバリューとの対においてキーとして生成されてよい）であってよい。いくつかの実施形態では、１つのスマートコントラクトは複数の異なるトランザクションに使用されてよい。このとき各トランザクション値は関連付けられた参照子を含み又は組み入れてよい。そのような実施形態では、スマートコントラクトは入力値としてトランザクション入力を用いて実行されてよく、プログラムされた機能を適宜実行してよい。例えばスマートコントラクトは複数の役務トランザクションにつき使用されてよい。このとき上記の例では、スマートコントラクトは1000ドルを受領し、頭金の支払期限を入力地として受領してよい。このとき、スマートコントラクトの実行は、特定の支払期限までに、特定された1000ドルの頭金の支払があったかを（例えば処理サーバ１０２又はブロックチェーンノード１０８によって）確認する。
【００２４】
第１のエンティティ（又は例えばトランザクションに基づいて次に実行する任意の関連エンティティ）は、トランザクションの一部として、要求された動作を実行してよい。例えば上記の例では、第１のエンティティは、頭金の支払期限より前に1000ドルを払ってよい。処理サーバ１０２は、動作の実行に続いて、トランザクションについての新たなトランザクション値を生成してよい。新たなトランザクションは、実行に基づき、トランザクションに対する修正済み入力を含んでよい。例えば入力は、頭金の証明として役立つ追加の入力（例えばトランザクションの確認番号、トランザクションの受領書、等）を含んでよい。これはまた、スマートコントラクトによって提供されてよい。例えばスマートコントラクトは、適切な方法を用いて支払を検証してよく、トランザクション値に含めるための参照番号（又は、例えば、適用可能なら、そこに含まれるトランザクションハッシュ）を出力してよい。
【００２５】
一旦トランザクション値が生成されると、処理サーバ１０２は、適切な方法を用いて、新たなトランザクション値をデジタルに署名してよい。例えば処理サーバ１０２は、キーペアの秘密鍵を保持してよい。これは、適切な署名アルゴリズムを用いて新たなトランザクション値をデジタルに署名するときに称されてよい。これは、第三者システム１０４に知られてよい。そのような実施形態では、第三者システム１０４は、キーペアから対応する公開鍵のコピー（複製）の提供を受けてよい。処理サーバ１０２は、デジタルに署名された新たなトランザクション値をブロックチェーンノード１０８に、ブロックチェーンへの提示のために、電子的に送信してよい。
【００２６】
更新済みトランザクションがブロックチェーンに合うと、第三者システム１０４はトランザクション値を検索して、処理サーバ１０２がトランザクションの一部としてその動作を実行したことを検証するよう構成されてよい。トランザクション値がデジタルに署名される実施形態では、検証は、例えば処理サーバ１０２から第三者システム１０４に供給された公開鍵を用いた、デジタル署名の検証を含んでよい。検証はまた、トランザクション値が予期される値であることの検証を含んでよい。
【００２７】
例示的実施形態では、スマートコントラクトは決定論的契約であってよい。このため、動作実行に応じた、スマートコントラクトからの出力は、動作実行に先立って判定されてよい。例えば上記の例では、第１のエンティティが、特定の支払期限までに1000ドルを払うか、違反するかが判定される。そのような実施形態では、本開示の入力は、「決定論的入力」として称されてよい。このため、スマートコントラクトからの出力は、適宜判定されてよい。これらの実施形態では、第三者システム１０４はトランザクションについての決定論的入力と第１のエンティティによって実行される予期される動作とを知っていることに基づいて、推測された新たなトランザクション値を生成するよう構成されてよい。例えば上記の実施形態では、もし1000ドルの頭金が支払期限までに支払われるなら、第三者システム１０４は、決定論的な入力（これは元のトランザクション値で用いられる）を与えられたスマートコントラクトからの出力を用いて、推測された新たなトランザクション値を生成してよい。
【００２８】
第三者システム１０４は予測された新たなトランザクション値を用いて、予期され推測されたトランザクション値と、トランザクション値から検索されたトランザクション値とを比較することによって、第１のエンティティの実行を検証及び監査してよい。したがって、トランザクションに関わるエンティティは、トランザクション内の他の１以上のエンティティが、要求された自身の機能を実行していることを検証するよう構成されてよい。ブロックチェーンを使用してトランザクション値を格納することはまた、実行される動作の証明が不変であることを確実にし、トランザクションに関わるエンティティの一部での共謀又は詐欺を防止し、また、監査可能で容易にアクセス可能な、完全なトランザクション実行記録として役立つ。標準的な実施形態では、ブロックチェーンに追加される各ブロックはタイムスタンプを付与されるので、トランザクション値はトランザクションの条件と、実行される任意の動作とを反映し、そのような動作が実行されたら、実行を監査するのに適切な十分なデータを提供する。
【００２９】
いくつかの実施形態では、処理サーバ１０２はトランザクション入力の生成及び／又は格納のテンプレートを用いるよう構成されてよい。テンプレートは、特定のスマートコントラクトの使用のために必要なデータフィールドを特定するために用いられてよく、正確な処理及びデータ一貫性を確実にする。例えば上記の例では、テンプレートは提供される必要のある基準（例えば３つの支払期限と、２つの支払金額）と、どのようにそのデータが整形される必要があるかと、トランザクションの入力に関する他のデータとを特定してよい。いくつかの実施形態では、テンプレートは、トランザクション値として役立つ（あるいは、トランザクションについてのトランザクション値を生成するようハッシュ化される）データファイルを生成するよう用いられてよい。他の実施形態では、テンプレートは、トランザクション値によって参照されてよいし、トランザクション値において参照されてよい。例えばテンプレートは、それに関連付けられた参照識別子（例えばテンプレートのハッシュ値、キーと値との対におけるキー（テンプレートは値を含む）等）を有してよい。これは、トランザクション値（これは例えばトランザクション入力である、又は、トランザクションハッシュの生成において使用される）に含まれてよい。
【００３０】
第１のエンティティ、第２のエンティティ、及び、トランザクションに関わった任意の他のエンティティは、トランザクションに規定された動作を実行し続けてよい。このとき、ブロックチェーンは各エンティティによって適宜更新され、トランザクション値はそれぞれのエンティティによってデジタルに署名される。ブロックチェーンを継続的に更新することは、トランザクションの実行が方法の各ステップで監査可能であることを確実にする。このときブロックチェーンの不変性は、実行の監査及び検証が正確であり且つ詐欺から保護されるということを提供する。決定論的入力を有するスマートコントラクトの使用は、詐欺が実行され得ないことと、動作の結果が予期されて一層早くより正確な検証となることと、いずれのエンティティもトランザクション履歴を改ざんできず任意の詐欺的動作を庇うことができないこととを確実にする。結果として、本開示の方法及びシステムは、従来のシステムよりも良い正確性、効率性及び信頼性を提供する技術的解決手段を提供する。
【００３１】
処理サーバ
図２は、システム１００の処理サーバ１０２の実施形態を示す。当業者にとって、図２に示す処理サーバ１０２の実施形態が、例示目的のみで提供されることと、本開示の機能を実行するのに適した、処理サーバ１０２の全ての可能な構成を徹底的に示したものでないことは自明である。例えば図６に示され下記で一層詳細に説明されるコンピュータシステム６００が、処理サーバ１０２の適切な構成であってよい。いくつかの実施形態では、図１に記載された本開示のシステム１００内の第三者システム１０４は、図２に記載された本開示の処理サーバ１０２の構成要素を用いて実装されてよい。
【００３２】
処理サーバ１０２は受信装置２０２を含んでよい。受信装置２０２は１以上のネットワークプロトコルを介して１以上のネットワーク上でデータを受信するよう構成されてよい。いくつかの実施形態では、受信装置２０２は第三者システム１０４ブロックチェーンネットワーク１０６とブロックチェーンノード１０８と他のシステム及びエンティティから、１以上の通信手段（例えば近距離通信、Bluetooth、インターネット、ローカルエリアネットワーク等）を介してデータを受信するよう構成されてよい。いくつかの実施形態では、受信装置２０２は複数の装置（例えば、異なるネットワーク上でデータを受信する異なる受信装置（例えばローカルエリアネットワークでデータを受信する第１の受信装置と、インターネット上でデータを受信する第２の受信装置））を含んでよい。受信装置２０２は送信される電子的なデータ信号を受信してよい。このとき、受信装置２０２によるデータ信号の受信によって、データはデータ信号上に重ねられ、復号、解析（パース）、読取り、又は取得されてよい。いくつかの実施形態では、受信装置２０２は、受信されたデータ信号を解析して、そこに重ねられたデータを取得するための解析モジュールを含んでよい。例えば受信装置２０２は、受信されたデータ信号を受信し、処理装置によって実行される機能のための利用可能な入力へと変換して本開示の方法及びシステムを実行するよう構成される解析プログラムを含んでよい。
【００３３】
いくつかの実施形態では、受信装置２０２は、ブロックチェーンネットワーク１０６及び／又はブロックチェーンノード１０８によって電子的に送信されたデータ信号（これはブロックチェーンデータに重畳され又はエンコードされてよい）ブロックチェーンは複数のブロックを含み、当該複数のブロックの各々は少なくともヘッダと１以上のトランザクション値とを含む。ブロックヘッダは少なくともタイムスタンプと、ブロックチェーン内の以前のブロックへの参照子とを含んでよい。いくつかの実施形態では、参照子は先行するブロックのブロックヘッダのハッシュであってよい。いくつかの実施形態では、ブロックヘッダはまた、ブロックに含まれたトランザクション値につき生成されたマークル木のマークルルートを含んでよい。本開示の方法及びシステムでは、１以上のトランザクション値の各々は、トランザクションハッシュを含んでよい。これは、関連トランザクションについての少なくとも入力のハッシュであってよい。受信装置２０２はまた、第三者システム１０４によって電子的に送信されたデータ信号（これは例えば決定論的入力又はそれに関連付けられたデータに重畳され又はエンコードされる）（例えばテンプレート参照子、スマートコントラクト参照子、又は実行データ等）を受信するよう構成されてよい。
【００３４】
処理サーバ１０２はまた通信モジュール２０４を含んでよい。通信モジュール２０４は、本開示の機能を実行する際に使用するために、モジュール、エンジン、データベース、メモリ、及び処理サーバ１０２の他の構成要素の間でデータを転送するよう構成されてよい。通信モジュール２０４は１以上の通信種別を含んでよく、コンピューティング装置内での通信のために様々な通信方法を使用してよい。例えば通信モジュール２０４はバス、接続ピンコネクタ、ケーブル等を含んでよい。いくつかの実施形態では、通信モジュール２０４はまた、処理サーバ１０２の内部構成要素と処理サーバ１０２の外部構成要素（例えば外部で接続されたデータベース、表示装置、入力装置等）との間で通信するよう構成されてよい。処理サーバ１０２はまた、処理装置を含んでよい。処理装置は本開示の処理サーバ１０２の機能（例えばスマートコントラクトを実行するよう構成されたプロセッサ）を、関連付けられた実行可能スクリプトの実行によって、実行するよう構成されてよい。このことは、当業者にとって自明である。いくつかの実施形態では、処理装置は、処理装置の１以上の機能を実行するよう特別に構成された複数のエンジン及び／又はモジュール（例えば問い合わせモジュール２０８、ハッシュ化モジュール２１０、生成モジュール２１２、データ修正モジュール２１４、署名モジュール２１６、検証モジュール２１８等）を含んでよい。本開示のように、「モジュール」との用語は、入力を受信し、当該入力を使用して１以上の処理を実行し、且つ出力を提供するよう特別にプログラムされたソフトウェア又はハードウェアであってよい。様々なモジュールによって実行される入力、出力及び処理は、本開示に基づいて、当業者にとって自明である。
【００３５】
処理サーバ１０２はまた、メモリ２０６を含んでよい。メモリ２０６は、本開示の機能を実行するときに処理サーバ１０２が使用するためのデータ（例えば公開鍵、秘密鍵、対称鍵等）を格納するよう構成されてよい。メモリ２０６は、データ整形方法及びスキーマを用いてデータを格納するよう構成されてよく、また、任意の適切な種類のメモリ（例えば読み取り専用メモリ、ランダムアクセスメモリ等）であってよい。メモリ２０６は例えば暗号鍵及びアルゴリズム、通信プロトコル及び基準、データ整形基準及びプロトコル、モジュール用プログラムコード及び処理装置のアプリケーションプログラム、並びに、本開示の機能を実行する際に処理サーバ１０２によって使用される適切な他のデータを含んでよい。このことは、本開示を読む当業者にとって自明である。いくつかの実施形態では、メモリ２０６は、構造照会言語を使用するリレーショナルデータベースを含んでよく、記憶された構造化データセットを記憶、識別、修正、更新、アクセス等してよい。
【００３６】
メモリ２０６はブロックチェーン（これは例えば、上記のように、ブロックチェーンネットワーク１０６から受信されてよい）を格納するよう構成されてよい。メモリ２０６はまた、キーと値とデータベースを格納するよう構成されてよい。これは複数のキーと値との対を含んでよい。そのような実施形態では、キーと値との対は対（このときハッシュ値はキーとして使用され、ハッシュ値を生成するために使用されるデータは対応する値である）を含んでよい。これは、決定論的入力とデータテンプレートとスマートコントラクトと本開示の機能を実行する際に使用される他のデータとを格納するために使用されてよい。メモリ２０６はまた、キーの対の秘密鍵と公開鍵とを格納するよう構成されてよい。これは、トランザクション値をデジタルに署名することと、デジタル署名の検証とにおいて使用するために構成されてよい。
【００３７】
処理サーバ１０２はまた問い合わせモジュール２０８を含んでよい。問い合わせモジュール２０８はデータベース上のクエリを実行して情報に関連する他の動作を識別且つ実行するよう構成されてよい。問い合わせモジュール２０８は１以上のデータ値又はクエリ列を受信してよく、それに基づいて、示されたデータベース（例えばメモリ２０６）上でクエリ列を実行して、そこに格納された情報を識別、修正、挿入、更新等してよい。問い合わせモジュール２０８は、識別された情報を、必要に応じて処理サーバ１０２の適切なエンジン又はモジュールへ出力してよい。問い合わせモジュール２０８は例えば、メモリ２０６上でクエリを実行してよく、トランザクション値をデジタルに署名する際にしようする秘密鍵を識別し、ブロックチェーンを用いて追跡される新たなトランザクションにつき新たなキーと値との対を追加し、トランザクションの実行の検証において使用するために実行用のスマートコントラクトを識別等してよい。
【００３８】
処理サーバ１０２はまたハッシュ化モジュール２１０を含んでよい。ハッシュ化モジュール２１０は、ハッシュ値の生成のために、処理サーバ１０２についてのデータをハッシュ化するよう構成されてよい。ハッシュ化モジュール２１０は、入力値としてハッシュ化されたデータを受信してよいし、１以上のハッシュ化アルゴリズムをそこへ適用することによってハッシュ値を生成してよいし、処理サーバ１０２の他のモジュール又はエンジンへ、結果的に生成されたハッシュ値を出力してよい。いくつかの実施形態では、入力は、１以上の暗号化アルゴリズム又はその標示を含んでよい。他の実施形態では、ハッシュ化モジュール２１０は、使用されるハッシュ化アルゴリズムを（例えばメモリ２０６において）識別するよう構成されてよい。ハッシュ化モジュール２１０は例えば、トランザクション値のハッシュ値とテンプレートとスマートコントラクトと他のデータとを、１以上のハッシュ化アルゴリズムをそれに適用することによって、生成するよう構成されてよい。いくつかの実施形態では、生成されたハッシュ値はブロックチェーンへの格納のために使用されてよく、メモリ２０６に格納されたキーと値との対におけるキーとして役立つ。生成されたハッシュ値はブロックチェーンデータに基づいた実行の検証のために使用されてもよい。
【００３９】
処理サーバ１０２はまた生成モジュール２１２を含んでよい。生成モジュール２１２は、本開示の処理サーバ１０２の機能を実行するのに適切なデータを生成するよう構成されてよい。生成モジュール２１２は入力値として命令（これはデータを生成するために使用される）を受信してよいし、処理サーバ１０２の１以上のエンジン又はモジュールへ出力される生成済みデータを受信してよい。いくつかの実施形態では、生成モジュール２１２に入力される命令は、そこで使用されるデータによって付随されてよい。例えば生成モジュール２１２は、例えば決定論的入力に基づいて、トランザクションについてのトランザクション値を生成するよう構成されてよい。いくつかの実施形態では、トランザクション値はまた、実行データに基づいて生成されてよい。いくつかの実施形態では、生成モジュール２１２はトランザクション値のデジタル署名において使用するために、キーの対を生成するよう構成されてよい。いくつかの実施形態では、生成モジュール２１２はデータファイルを生成するよう構成されてよい。これは例えば、所定の形式（テンプレートにおいて詳細になる）を用いて、決定論的入力を含んでよいし、ブロックチェーンに格納されるトランザクション値として使用するためにハッシュ化されてよい。
【００４０】
処理サーバ１０２はまたデータ修正モジュール２１４を含んでよい。データ修正モジュール２１４は、本開示の処理サーバ１０２の機能を実行するのにしようするデータ及び／又はデータファイルを修正するよう構成されてよい。データ修正モジュール２１４は入力値として命令（これは処理サーバ１０２に格納されるデータを修正するために又は処理サーバ１０２によって受信されるデータを修正するために称されてよい）を受信してよいし、処理サーバ１０２の１以上のエンジン又はモジュールへ出力される修正済みデータを受信してよい。例えばデータ修正モジュール２１４はデータファイルを修正する（例えば決定論的入力を格納する）よう構成されてよく、（例えば入力を受信、入力を追加、入力値を変更すること等によって）１以上の入力を変更し、トランザクションの実行を反映し、又は、トランザクションの実行を推測する。
【００４１】
処理サーバ１０２はまた署名モジュール２１６を含んでよい。署名モジュール２１６は、本開示の処理サーバ１０２の機能の一部として、データをデジタルに署名するよう構成されてよい。署名モジュール２１６は、入力として、デジタルに署名されるデータを受信してよいし、データをデジタルに署名してよいし、デジタルに署名されたデータ又は少なくともデジタル署名を、処理サーバ１０２の他のモジュール又はエンジンに出力してよい。署名モジュール２１６は、公開鍵と１以上の署名アルゴリズムとを用いて、データをデジタルに署名するよう構成されてよい。いくつかの実施形態では、署名モジュール２１６への入力は、秘密鍵及び／又は署名アルゴリズム（これはデジタル署名を生成するときに使用される）を含んでよい。他の実施形態では、署名モジュール２１６は秘密鍵と署名アルゴリズムとを（例えばメモリ２０６において、問い合わせモジュール２０８へ提出される命令によって）識別するよう構成されてよい。一例では、署名モジュール２１６は、例えば関連付けられたエンティティによる実行に続いて、トランザクション値（これはトランザクションの決定論的入力によって生成される）をデジタルに署名するよう構成されてよい。
【００４２】
処理サーバ１０２はまた検証モジュール２１８を含んでよい。検証モジュール２１８は、処理サーバ１０２についてのデータを検証するよう構成されてよい。検証モジュール２１８は、入力として、検証されるデータを受信してよいし、データを検証してよいし、検証結果（例えば肯定的検証又は否定的検証を示す）を、処理サーバ１０２の他のモジュール又はエンジンに出力してよい。例えば検証モジュール２１８は公開鍵（これは例えばメモリ２０６に格納されそこから読み取られる）を用いて、トランザクション値（ブロックチェーンのブロックから読み取られる）でのデジタル署名を検証するよう構成されてよいし、（例えば推測されたトランザクション値（これは生成モジュール２１２によって生成される）とブロックチェーンから読み取られたトランザクション値とを比較することによって、）トランザクション値を検証するよう構成されてよい。
【００４３】
処理サーバ１０２はまた、送信装置２２０を含んでよい。送信装置２２０は１以上のネットワークプロトコルを介して１以上のネットワーク上でデータを送信するよう構成されてよい。いくつかの実施形態では、送信装置２２０は第三者システム１０４、ブロックチェーンネットワーク１０６、ブロックチェーンノード１０８、及び他のエンティティへ、１以上の通信手段（例えば近距離通信、Bluetooth、無線周波数、インターネット、ローカルエリアネットワーク等）を介してデータを送信するよう構成されてよい。いくつかの実施形態では、送信装置２２０は複数装置（例えば、異なるネットワーク上でデータを送信するための異なる送信装置（例えばローカルエリアネットワーク上でデータを送信する第１の送信装置と、インターネット上でデータを送信する第２の送信装置））を含んでよい。送信装置２２０は、重畳されたデータであって受信コンピューティング装置によって解析されるデータを有するデータ信号を電子的に送信してよい。いくつかの実施形態では、送信装置２２０は、データを重畳しエンコードし、又はデータを送信に適したデータ信号へ整形する１以上のモジュールを含んでよい。
【００４４】
送信装置２２０は、ブロックチェーンネットワーク１０６に関連付けられたブロックチェーンノード１０８にデータ信号（これはブロックチェーンへの提示のために、トランザクション値に重畳され又はエンコードされてよい）を電子的に送信するよう構成されてよい。いくつかの実施形態では、例えば決定論的入力とスマートコントラクト参照子とテンプレート参照子と公開鍵と本開示の機能を実行する際に使用するために交換される他のデータとの交換のために、送信装置２２０は第三者システム１０４へデータ信号を電子的に送信してよい。
【００４５】
不変で監査可能なデータをブロックチェーンに提示する処理
図３はシステム１００内のブロックチェーンへトランザクション実行に関連するデータを提示する処理を示す。ここではデータは不変であり、また、第三者システム１０４及び他のエンティティによって独立して検証可能である。
【００４６】
ステップ３０２にて処理サーバ１０２は（例えばそれに関連付けられた第１のエンティティを介して）、第２のエンティティと（例えばそれに関連付けられた第三者システム１０４を介して）、トランザクションについての条件に同意してよい。トランザクションの条件は、トランザクションについての決定論的入力として使用されてよい。例えば上記の例では、条件は、頭金の金額と、全額支払の金額と、頭金の支払期限と、購入される役務の支払期限と、全額支払の支払期限とを含んでよい。一実施形態では、トランザクション条件の各々は決定論的であってよい。ステップ３０４にて第三者システム１０４は（例えば受信装置２０２を介して）、同意されたトランザクション条件を受信してよい。いくつかの実施形態では、トランザクション条件はブロックチェーンを介して（例えば受付フレームの使用を通して）受信されてよい。
【００４７】
ステップ３０６にて第三者システム１０４は（例えばハッシュ化モジュール２１０及び／又は生成モジュール２１２を介して）、少なくとも決定論的入力に基づいて、トランザクションについてのトランザクション値を生成してよい。例えば一例では、決定論的入力の各々を含むデータファイルが生成されてよい。これは、トランザクション値を生成するようハッシュ化されてよい。いくつかの実施形態では、トランザクション値はまた、スマートコントラクト及び／又はテンプレートへの参照子を含んでよい（あるいは参照子に基づいてよい）。ステップ３０８にて第三者システム１０４は、検証されるブロックチェーンに提示されるブロックに含めるために、トランザクション値を（例えば送信装置２２０を介して）ブロックチェーンノード１０８（これはブロックチェーンネットワーク１０６に関連付けられる）へ電子的に送信してよい。
【００４８】
ステップ３１０にて、処理サーバ１０２の受信装置２０２は、トランザクション値を含むブロックチェーン内の新規追加ブロックの受信により、トランザクション値を検索してよい。ステップ３１２にて処理サーバ１０２は（例えばそれに関連付けられた第１のエンティティを介して）、トランザクション内で次の動作を実行してよい。上記の例では、次の動作は、支払期限より前に1000ドルの頭金を支払うことであってよい。動作実行の一部としてステップ３１４では処理サーバ１０２のプロセッサはトランザクションに関連付けられたスマートコントラクト（これは例えば決定論的入力に含まれる参照子によって識別される）を実行してよい。いくつかの実施形態では、スマートコントラクトは、動作実行が充足されると、ブロックチェーンネットワーク１０６によって自動的に実行されてよい（例えばスマートコントラクトは第２のエンティティへの1000ドルの支払を検出してよい）。スマートコントラクトの実行の一部として、トランザクションについての決定論的入力は、例えばフラグ変更によって、参照子の補足によって、又は、支払についての確認番号の補足等によって、修正されてよい。
【００４９】
ステップ３１６では、処理サーバ１０２のハッシュ化モジュール２１０は、１以上のハッシュ化アルゴリズムを、トランザクションについての更新済み決定論的入力に適用することによって、トランザクションについての新たなトランザクション値を生成してよい。いくつかの実施形態では、新たなトランザクション値の生成はまた、第１のエンティティに関連付けられた（及び、例えば、処理サーバ１０２のメモリ２０６に格納された）秘密鍵と適切なアルゴリズムとの使用による、（処理サーバ１０２の署名モジュール２１６による）トランザクション値のデジタル署名を含んでよい。ステップ３１８にて処理サーバ１０２の送信装置２２０は、検証されブロックチェーンに提示されるブロックに含めるために、新たに生成されたトランザクション値を、ブロックチェーンネットワーク１０６に関連付けられたブロックチェーンノード１０８へ電子的に送信してよい。
【００５０】
ステップ３２０では、第三者システム１０４はトランザクションについての第１のエンティティによる次の動作の実行についての予期される出力を、例えば関連付けられたスマートコントラクト（例えばそのプロセッサ）の実行によって、決定論的入力と第１のエンティティによる動作の推測とを用いて、判定してよい。いくつかの実施形態においてステップ３２０の実行は、ステップ３１４での処理サーバ１０２により実行されるような、決定論的入力に対する修正を含んでよい。ステップ３２２にて第三者システム１０４は（例えばハッシュ化モジュール２１０及び／又は生成モジュール２１２を介して）、次の動作の実行についての予期される出力に基づいて、トランザクションについての予期されるトランザクション値を生成してよい。
【００５１】
ステップ３２４にて第三者システム１０４は（例えば受信装置２０２を介して）、ブロックチェーンに提示された新たなトランザクション値を検索してよい。いくつかの実施形態においてステップ３２０及び３２２は、ステップ３２４の後に、又はステップ３２４と並行して実行されてよい。ステップ３２６にて第三者システム１０４は（例えば検証モジュール２１８を介して）、新たなトランザクションを、それを予期されるトランザクション値と比較することによって、検証してよい。トランザクション値がデジタルに署名される実施形態では、検証はまた、デジタル署名の検証を含んでよい。これは、第１のエンティティに関連付けられた公開鍵を用いて検証されてよい。トランザクション値の検証はしたがって、トランザクションの次の動作が実行されたことを確実にしてよい。このときブロックチェーンのトランザクション値は、動作の不変の証明であり、監査において使用するのに適している。
【００５２】
監査可能で不変なデータをブロックチェーンへ提示する例示的方法
図４は監査可能で不変なデータであってトランザクション実行に関連するデータをブロックチェーンへ提示する方法４００を示す。
【００５３】
ステップ４０２にて複数のブロックを含むブロックチェーンは、処理サーバ（例えば処理サーバ１０２）の受信装置（例えば受信装置２０２）によって受信されてよい。各ブロックは、少なくとも、ブロックヘッダと１以上のトランザクション値とを含む。各トランザクション値は少なくともトランザクションハッシュを含む。ステップ４０４にて、ブロックチェーン内のブロックに含まれた特定のトランザクションに関連付けられたデータファイルは、処理サーバの受信装置によって受信されてよい。このときデータファイルは１以上の変数を含む。
【００５４】
ステップ４０６にてデータファイルに含まれる１以上の変数のうち少なくとも１つは、処理サーバのデータ修正モジュール（例えばデータ修正モジュール２１４）によって修正されてよい。ステップ４０８にて、新たなハッシュ値は、処理サーバのハッシュ化モジュール（例えばハッシュ化モジュール２１０）によって、１以上のハッシュ化アルゴリズムを修正済みデータファイルに適用することによって、生成されてよい。
【００５５】
ステップ４１０にて新たなトランザクションは、処理サーバの生成モジュール（例えば生成モジュール２１２）によって、生成済みの新たなハッシュ値と特定のトランザクションハッシュとに基づいて、生成されてよい。ステップ４１２にて、生成された新たなトランザクション値は、処理サーバの署名モジュール（例えば署名モジュール２１６）によってデジタルに署名されてよい。ステップ４１４にて、署名済みの新たなトランザクション値は、処理サーバの送信装置（例えば送信装置２２０）によって電子的に送信されてよい。
【００５６】
一実施形態では、新たなトランザクション値は更に、ブロックチェーンに関連付けられた実行可能スクリプトに関連付けられた参照識別子に基づいてよい。更なる実施形態では、実行可能スクリプトは、修正済みデータファイルを実行して、決定論的応答を出力するよう構成されてよい。いくつかの実施形態では、新たなトランザクション値を生成することは、処理サーバのハッシュ化モジュールによって、少なくとも生成済みの新たなハッシュ値と特定のトランザクションハッシュとをハッシュ化することを含んでよい。一実施形態では、方法４００は、処理サーバのデータベース（例えばメモリ２０６）にキーと値との複数の対を格納することを含んでよい。キーと値との複数の対は、特定のトランザクションハッシュをキーとして含み受信されたデータファイルを値として含む第１のものを少なくとも含む。方法４００は、処理サーバの問い合わせモジュール（例えば問い合わせモジュール２０８）によって、データベース上でクエリを実行して、生成された新たなハッシュ値をキーとして含み修正されたデータファイルを値として含む新たなキーと値との対を挿入することを含んでよい。
【００５７】
ブロックチェーンへ提示された決定論的データを監査及び検証する例示的方法
図５は、ブロックチェーンへ提示されたデータを、決定論的入力に基づいて監査及び検証する方法５００を示す。
【００５８】
ステップ５０２にて複数のブロックを含むブロックチェーンは、処理サーバ（例えば処理サーバ１０２）の受信装置（例えば受信装置２０２）によって受信されてよい。各ブロックは、少なくとも、ブロックヘッダと１以上のトランザクション値とを含む。各ブロックヘッダは少なくともタイムスタンプを含み、各トランザクション値は少なくともトランザクションハッシュを含む。ステップ５０４にて第１のクエリは、処理サーバの問い合わせモジュール（例えば問い合わせモジュール２０８）によってブロックチェーン上で実行されてよく、第１のトランザクション値を識別してよい。第１のトランザクション値は実行可能スクリプトに関連付けられる。
【００５９】
ステップ５０６にて実行可能スクリプトは処理サーバのプロセッサによって、複数の所定の入力値を用いて、実行されてよく、少なくとも１つの出力変数を受信する。ステップ５０８にて、ハッシュ値は、処理サーバのハッシュ化モジュール（例えばハッシュ化モジュール２１０）によって、少なくとも複数の所定の入力値と少なくとも１つの出力変数とに基づいて、生成されてよい。
【００６０】
ステップ５１０にて新たなトランザクション値は、処理サーバの生成モジュール（例えば生成モジュール２１２）によって、少なくとも生成済みのハッシュ値と第１のトランザクションに含まれるトランザクションハッシュとに基づいて、生成されてよい。ステップ５１２にてブロックチェーン内のブロックに含まれる第２のトランザクション値は、処理サーバの検証モジュール（例えば検証モジュール２１８）によって検証されてよい。このとき第２のトランザクション値は生成済みの新たなトランザクション値に対応する。
【００６１】
一実施形態では、第２のトランザクションを検証することは、処理サーバの問い合わせモジュールによって、ブロックチェーン上で第２のクエリを実行して第２のトランザクション値を識別することと、処理サーバの検証モジュールによって、第２のトランザクション値が生成済みの新たなトランザクション値に等しいことを検証することとを含んでよい。いくつかの実施形態では、新たなトランザクション値を生成することは、処理サーバのハッシュ化モジュールによって、少なくとも生成済みの新たなハッシュ値と第１のトランザクション値に含まれたトランザクションハッシュとをハッシュ化することを含む。
【００６２】
一実施形態では、第２のトランザクション値を検証することは、処理サーバの問い合わせモジュールによって、ブロックチェーン上で第２のクエリを実行して第２のトランザクション値を識別することと、処理サーバの検証モジュールによって、含まれたトランザクションハッシュをデジタルに署名するために使用されるデジタル署名を検証することとを含んでよい。更なる実施形態では、方法５００は更に、処理サーバのメモリ（例えばメモリ２０６）に公開鍵を格納することを含む。デジタル署名の検証は、格納済みの公開鍵を用いる。
【００６３】
コンピュータシステムアーキテクチャ
図６は、コンピュータシステム６００を示す。そこには、本開示の実施形態又はその一部が、コンピュータ読取り可能なコードとして実装されてよい。例えば図１の処理サーバ１０２は、ハードウェア、ソフトウェア、ファームウェア、格納された命令を有する非一時的なコンピュータ読取り可能な媒体、又はこれらの組合せを用いてシステム６００内に実装されてよく、１以上のコンピュータシステム又は他の処理システムにおいて実装されてよい。ハードウェア、ソフトウェア及びこれらの任意の組合せは、図３乃至５の方法を実装するために使用されるモジュール及びコンポーネントを実現してよい。
【００６４】
プログラマブルロジックが使用される場合、そのようなロジックは、実行可能なソフトウェアコードで構成された商業的に利用可能な処理プラットフォーム上で実行され、特定用途装置又は特別目的装置となっててよい（例えばプログラマブルロジックアレイ、特定用途向け集積回路等）。当業者は、開示された事項についての実施形態が、様々なコンピュータシステム構成で実行可能であることを理解する。当該システム構成は、マルチコアのマルチプロセッサシステムと、ミニコンピュータと、メインフレームコンピュータと、分散された機能でリンクされ又はクラスタ化されたコンピュータと、任意の装置へ仮想的に実装可能な汎用（pervasive）又はミニチュアのコンピュータとを含む。例えば少なくとも１つのプロセッサ装置及びメモリが、上記実施形態を実装するために使用されてよい。
【００６５】
本開示のプロセッサユニット又は装置は、単一のプロセッサ、複数のプロセッサ、又はこれらの組合せであってよい。プロセッサ装置は、１以上のプロセッサ「コア」を有してよい。本開示の「コンピュータプログラム媒体」、「非一時的なコンピュータ読取り可能な媒体」及び「コンピュータ使用可能な媒体」との用語は、概して、有形の媒体（例えば取外し可能なストレージユニット６１８、取外し可能なストレージユニット６２２及びハードディスクドライブ６１２にインストールされたハードディスク等）を指すために使用される。
【００６６】
本開示の様々な実施形態は、この例示的なコンピュータシステム６００に関して記述される。本開示を読んだ後、当業者にとって、他のコンピュータシステム及び／又はコンピュータアーキテクチャを用いて本開示をどのように実装するかは自明である。動作はシーケンシャルな処理として開示されるが、いくつかの動作は実際には、並行して、同時に及び／又は分散環境で、実行されてよい。このとき、プログラムコードは、単一プロセッサの又はマルチプロセッサのマシンによってアクセスするために、ローカルに又はリモートに格納された状態である。更に、いくつかの実施形態では、動作の順番は、開示される事項の趣旨を逸脱することなく再配置可能である。
【００６７】
プロセッサ装置６０４は、本開示の機能を実行するよう特別に構成された特定用途又は汎用プロセッサ装置であってよい。プロセッサ装置６０４は、通信インフラストラクチャ６０６（例えばバス、メッセージキュー、ネットワーク、マルチコアメッセージパススキーム等）へ接続されてよい。ネットワークは、本開示の機能を実行するのに適した任意のネットワークであってよく、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ネットワーク（例えばＷｉｆｉ）、モバイル通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数（ＲＦ）又はこれらの任意の組合せを含んでよい。他の適切なネットワークタイプ及び構成は、当業者にとって自明である。コンピュータシステム６００はまた、メインメモリ６０８（例えばランダムアクセスメモリ、読み取り専用メモリ等）を含んでよく、また、補助記憶装置６１０を含んでよい。補助記憶装置６１０は、ハードディスクドライブ６１２と取外し可能なストレージドライブ６１４（例えばフロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等）とを含んでよい。
【００６８】
取外し可能なストレージドライブ６１４は、周知の方法で、取外し可能なストレージユニット６１８から読み取りを行ってもよいし、そこへ書き込みを行ってもよい。取外し可能なストレージユニット６１８は、取外し可能なストレージドライブ６１４によって読み取られ又は書き込まれることができる、取外し可能なストレージ媒体を含んでよい。例えばもし取外し可能なストレージドライブ６１４がフロッピーディスクドライブ又はユニバーサルシリアルバスポートであれば、取外し可能なストレージユニット６１８はそれぞれ、フロッピーディスク又はポータブルフラッシュドライブであってよい。一実施形態では、取外し可能なストレージユニット６１８は非一時的な読取り可能記録媒体であってよい。
【００６９】
いくつかの実施形態では、補助記憶装置６１０は代替手段を含み、コンピュータプログラム又は他の命令がコンピュータシステム６００（例えば取外し可能なストレージユニット６２２及びインタフェース６２０）にロードされることを可能にしてよい。そのような手段の例は、（例えばビデオゲームシステムで見られる）プログラムカートリッジ及びカートリッジインタフェース、取外し可能なメモリチップ（例えばＥＥＰＲＯＭ、ＰＲＯＭ等）、関連ソケット、他の取外し可能なストレージユニット６２２及びインタフェース６２０を含んでよい。このことは当業者にとって自明である。
【００７０】
コンピュータシステム６００に（例えばメインメモリ６０８に及び／又は補助記憶装置６１０に）格納されたデータは、任意のタイプの適切なコンピュータ読取り可能な媒体（例えば光ストレージ（コンパクトディスク、デジタル多目的ディスク、Blu-rayディスク等）又は磁気テープストレージ（例えばハードディスクドライブ））上に格納されてよい。データは任意のタイプの適切なデータベース構成（例えばリレーショナルデータベース、構造化照会言語（ＳＱＬ）データベース、分散データベース、オブジェクトデータベース等）で構成されてよい。適切な構成及びストレージタイプは、当業者にとって自明である。
【００７１】
コンピュータシステム６００はまた、通信インタフェース６２４を含んでよい。通信インタフェース６２４は、ソフトウェア及びデータが、コンピュータシステム６００と外部装置との間で送信されることを可能にしてよい。例示的な通信インタフェース６２４は、モデム、ネットワークインタフェース（例えばイーサネットカード）、通信ポート、ＰＣＭＣＩＡスロット及びカード等を含んでよい。通信インタフェース６２４を介して転送されるソフトウェア及びデータは信号形式であってよい。当該信号形式は、電子の、電磁気の、光の、又は当業者にとって自明な他の信号のものであってよい。信号は、通信パス６２６を介して伝わる。当該通信パス６２６は信号を伝送するよう構成され、電線、ケーブル、光ファイバ、電話線、携帯電話リンク、無線周波数リンク等を用いて実装されてよい。
【００７２】
コンピュータシステム６００は表示インタフェース６０２を更に含んでよい。表示インタフェース６０２は、データが、コンピュータシステム６００と外部ディスプレイ６３０との間で転送されることを可能にするよう構成されてよい。例示的な表示インタフェース６０２は、高精細度マルチメディアインタフェース（ＨＤＭＩ）、デジタルビジュアルインタフェース（ＤＶＩ）、ビデオグラフィックスアレイ（ＶＧＡ）等を含んでよい。ディスプレイ６３０は任意の適切なタイプのディスプレイであってよく、コンピュータシステム６００の表示インタフェース６０２を介して転送されるデータを表示する。ディスプレイ６３０は、ブラウン管（ＣＲＴ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイ、静電容量方式タッチディスプレイ、薄膜トランジスタ（ＴＦＴ）ディスプレイ等を含む。
【００７３】
コンピュータプログラム媒体及びコンピュータ使用可能な媒体は、メモリ（例えばメインメモリ６０８及び補助記憶装置６１０）を指してよく、半導体メモリ（ＤＲＡＭ等）であってよい。これらのコンピュータプログラム製品は、コンピュータシステム６００へソフトウェアを提供するための手段であってよい。コンピュータプログラム（例えばコンピュータ制御ロジック）は、メインメモリ６０８及び／又は補助記憶装置６１０に格納されてよい。コンピュータプログラムはまた、通信インタフェース６２４を介して受信されてよい。そのようなコンピュータプログラムは、実行されると、コンピュータシステム６００が本開示の方法を実行することを可能にしてよい。特に、コンピュータプログラムは、実行されると、プロセッサ装置６０４が図３乃至５に示される本開示の方法を実行することを可能にしてよい。したがって、そのようなコンピュータプログラムはコンピュータシステム６００のコントローラを示す。本開示はソフトウェアを使用して実装される。当該ソフトウェアは、取外し可能なストレージドライブ６１４、インタフェース６２０、及びハードディスクドライブ６１２又は通信インタフェース６２４を用いて、コンピュータプログラム製品に格納されてコンピュータシステム６００へロードされてよい。
【００７４】
プロセッサ装置６０４は、コンピュータシステム６００の機能を実行するよう構成される１以上のモジュール又はエンジンを含んでよい。各モジュール又はエンジンは、ハードウェアを用いて実装されてよく、いくつかの実施形態ではソフトウェア（例えばこれは、メインメモリ６０８又は補助記憶装置６１０に格納されるプログラムコード又はプログラムに対応する）を用いてよい。そのような実施形態では、プログラムコードは、コンピュータシステム８００のハードウェアによる実行前に、プロセッサ装置６０４によって（例えばモジュール又はエンジンをコンパイルすることによって）コンパイルされてよい。例えばプログラムコードは、低レベルの言語へと解釈されるプログラミング言語で記述されたソースコード（例えばアセンブリ言語又は機械コード）であってよい。これは、プロセッサ装置６０４及び／又はコンピュータシステム６００の任意の追加のハードウェア構成要素によって実行するためのものである。コンパイル処理は、語彙解析と、前処理と、解析と、意味解析と、文法指向の翻訳と、コード生成と、コード最適化と、コンピュータシステム６００の制御のためにプログラムコードを低レベルの言語へ解釈して本開示の機能を実行するのに適した任意の他の技術との使用を含んでよい。そのような処理によってコンピュータシステム６００が、上記の機能を実行するために一意にプログラムされた特別構成コンピュータシステム６００になることは当業者にとって自明である。
【００７５】
本開示に一貫する技術は、とりわけ、ブロックチェーン上の監査可能で不変のデータを提示及び検証するシステム及び方法を提供する。本開示のシステム及び方法の様々な例示的実施形態が上述されるが、それらは限定目的でなく例示目的のみで示されることを理解されたい。それは徹底したものでなく、本開示を、開示された形態そのものへ限定しない。上記の教示に照らして修正例及び変形例が可能である。広がり又は範囲を逸脱すること無く、本開示の実装から修正例及び変形例が得られてよい。
【図１】
0006946435.tif 000002
【図２】
0006946435.tif 000003
【図３】
0006946435.tif 000004
【図４】
0006946435.tif 000005
【図５】
0006946435.tif 000006
【図６】
0006946435.tif 000007