(57)【要約】  本発明は、１つ以上の信頼されていないワーカコンピュータシステムへの計算タスクの分散を伴う分散処理システムに関する。信頼されていないワーカコンピュータシステムが要求コンピュータシステムのために算出を実行するとき、要求コンピュータシステム（又は、他の検証コンピュータシステム）は、タスクが正しく完了されたことを要求コンピュータシステムが暗号的に検証することを可能にする情報を提供される。算出を完了した後、ワーカコンピュータシステムは、プルーフ及びＩ／Ｏデータを含む情報を要求元に提供する。要求コンピュータシステムシステムは、公開検証鍵パラメータのセット、プルーフ、及びＩ／Ｏデータを使用して、信頼されていないワーカコンピュータシステムにより実行された計算が正しいことを検証し得る。いくつかの例において、ワーカにより実行される算出は、ブロックチェーントランザクションに検証に関連づけられる。例えば、信頼されていないワーカコンピュータシステムにより実行される計算の検証は、ブロックチェーンノード上のトランザクションの立証の一部として生じてもよい。
2021502747.tif 000002
【特許請求の範囲】
【請求項１】
提供されたタスクの結果を提供するよう競争することが可能な独立したコンピュータシステムのセットにタスクを提供するステップであり、前記タスクは実行すべき計算を指定する、ステップと、
検証コンピュータシステムにおいて、前記計算が前記独立したコンピュータシステムのセット内のワーカコンピュータシステムにより正しく実行されることを検証するステップであり、前記計算は、少なくとも
評価鍵を生成し、
前記評価鍵を前記ワーカコンピュータシステムに提供し、
前記ワーカコンピュータシステムからプルーフを受信し、前記プルーフは前記評価鍵に少なくとも部分的に基づき、
検証鍵を生成し、
前記プルーフ及び前記検証鍵を使用して前記計算が正しいことを検証すること
により、乗算ゲートのセットを有する回路に基づく、ステップと、
を含む、コンピュータにより実現される方法。
【請求項２】
前記検証鍵は、前記乗算ゲートへの入力及び前記乗算ゲートの出力に基づく、請求項１に記載のコンピュータにより実現される方法。
【請求項３】
前記プルーフは、前記乗算ゲートの中間出力のセットに少なくとも部分的に基づく、請求項１又は２に記載のコンピュータにより実現される方法。
【請求項４】
前記プルーフは、公開評価鍵に少なくとも部分的に基づく、請求項１乃至３のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項５】
前記プルーフ及び前記検証鍵は、異なる群を生成する第１の生成元及び第２の生成元に少なくとも部分的に基づく、請求項１乃至４のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項６】
前記プルーフの要素が前記評価鍵の要素と矛盾しないことを検証するステップ、をさらに含む請求項１乃至５のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項７】
前記プルーフの要素が整合係数を使用して構築されていることを検証するステップ、をさらに含む請求項１乃至６のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項８】
前記プルーフの項に対する可除性要件を検証するステップ、をさらに含む請求項１乃至７のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項９】
前記ワーカコンピュータシステムは、前記回路の入力及び出力値に対応するＩ／Ｏ値のセットを提供する、請求項１乃至８のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１０】
前記回路は、前記乗算ゲートへのその寄与をモデル化された１つ以上の加算ゲートを含む、請求項１乃至９のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１１】
前記計算は、ビットコイントランザクション立証の一部である、請求項１乃至１０のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１２】
前記計算が正しいことを検証することは、少なくとも、
前記プルーフ、前記検証鍵、及びＩ／Ｏ値のセットを検証コンピュータシステムに提供し、
前記計算が正しいとの指標を前記検証コンピュータシステムから受信すること
により達成される、請求項１乃至１１のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１３】
前記検証コンピュータシステムはブロックチェーンノードである、請求項１乃至１２のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１４】
システムであって、
プロセッサと、
前記プロセッサにより実行された結果として当該システムに請求項１乃至１３のうちいずれか１項に記載のコンピュータにより実現される方法を実行させる実行可能命令を含むメモリと、
を含むシステム。
【請求項１５】
コンピュータシステムのプロセッサにより実行された結果として前記コンピュータシステムに請求項１乃至１３のうちいずれか１項に記載のコンピュータにより実現される方法を少なくとも実行させる実行可能命令を記憶した非一時的コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に分散コンピューティングシステムの動作に関し、より詳細には、第三者コンピュータシステムに分散され、第三者コンピュータシステムにより実行されるコンピューティングタスクの正しい完了を暗号的に検証する方法及びシステムに関する。本発明のいくつかの実施形態は、ブロックチェーンシステムにおける使用に特に適し得るが、これに限定されない。
【背景技術】
【０００２】
本文献において、用語「ブロックチェーン」は、電子的なコンピュータベースの分散台帳のいくつかのタイプのうち任意のものを指す。これらには、コンセンサスベースのブロックチェーン及びトランザクションチェーン技術、許可あり（permissioned）及び許可なし（unpermissioned）台帳、共有台帳、及びこれらの変形が含まれる。ブロックチェーン技術の最も広く知られている適用はビットコイン（登録商標）台帳であるが、他のブロックチェーン実装が提案され、開発されている。本開示では、簡便さ及び例示の目的でビットコインの例が参照されることがあるが、本発明は、ビットコインブロックチェーンでの使用に限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。例えば、本発明は、どんな制約がトランザクション内に符号化可能かに関してビットコインと同様の制限を有する他のブロックチェーン実装において有用であり得る。
【０００３】
ブロックチェーンはピアツーピアの電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実装され、同様に、ブロックはトランザクション及び他の情報から構成される。例えば、ビットコインでは、各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも１つの入力及び少なくとも１つの出力を含む。いくつかの実施形態において、「デジタル資産」は、使用する権利に関連づけられたバイナリデータを指す。デジタル資産の例は、ビットコイン、イーサ（ether）、及びライトコイン（Litecoin）を含む。いくつかの実装において、デジタル資産の制御の移転は、デジタル資産の少なくとも一部を第１のエンティティから第２のエンティティに再関連づけすることにより実行できる。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的でイミュータブルなレコードを作成する。トランザクションは、その入力及び出力に埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションの出力に如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【０００４】
一般に、トランザクションがブロックチェーンに書き込まれる前に、トランザクションは「立証される（validated）」。ネットワークノード（マイナー）が、ワークを実行して各トランザクションが有効であることを確保し、無効なトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なる有効性の標準を有することができる。ブロックチェーンにおける有効性がコンセンサスベースであるため、トランザクションは、トランザクションが有効であるとノードの過半数が同意した場合、有効と考えられる。ノードにインストールされたソフトウェアクライアントは、部分的には未使用トランザクション（unspent  transaction、ＵＴＸＯ）ロック及びアンロックスクリプト（locking  and  unlocking  script）を実行することにより、ＵＴＸＯを参照するトランザクションに対してこの立証作業を実行する。ロック及びアンロックスクリプトの実行がＴＲＵＥの評価であり、適用可能な場合における他の立証条件が満たされる場合、トランザクションはノードにより立証される。立証されたトランザクションは他のネットワークノードに伝搬され、すると、マイナーノードは該トランザクションをブロックチェーンに含めることを選択することができる。ゆえに、トランザクションがブロックチェーンに書き込まれるためには、それは、ｉ）トランザクションを受信した第１のノードにより立証され、トランザクションが立証された場合、ノードはそれをネットワーク内の他のノードに中継する、ｉｉ）マイナーにより構築された新しいブロックに追加される、ｉｉｉ）マイニングされる、すなわち過去のトランザクションの公開台帳に追加される、がなされなければならない。トランザクションは、十分な数のブロックがブロックチェーンに追加されてトランザクションを事実上不可逆にしたとき、確認されたと考えられる。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用に対して最も広く知られているが、デジタル起業家は、新しいシステムを実現するために、ビットコインが基礎とする暗号セキュリティシステムとブロックチェーンに記憶できるデータとの双方の使用を探求し始めている。ブロックチェーンが暗号通貨の領域に限定されない自動化されたタスク及び処理に使用できる場合、かなり有利であろう。このようなソリューションは、その適用においてより多目的であると同時に、ブロックチェーンの利点（例えば、イベントの永続的な改ざん防止のレコード、分散処理等）を利用することができる。
【０００６】
現在の研究の１つの分野は、「スマートコントラクト」の実装のためのブロックチェーンの使用である。スマートコントラクトは、マシン読取可能フォーマットで記憶された契約又は同意の条件の実行及び／又は確認を自動化する、コンピュータにより実現されるシステムである。自然言語で書かれる従来の契約と異なり、スマートコントラクトは、結果を生成するためにコンピュータシステムにより処理できるターム及び条件のマシン読取可能記述であり、これは次いで、これら結果に依存してアクションを実行させることができる。
【０００７】
ブロックチェーン関連の関心のある別の分野は、ブロックチェーンを介して実世界のエンティティの移転を表現するための「トークン」（又は「カラードコイン（coloured  coins）」）の使用である。潜在的に機密又は秘密のアイテムは、認識可能な意味又は値を有さないトークンにより表現できる。ゆえに、トークンは、実世界のアイテムがブロックチェーンから参照されることを可能にする識別子として機能する。
【０００８】
実施形態において、スマートコントラクトは、作成者又は何らかの他の特定のエンティティがスマートコントラクトの強制及び／又は実行を課されないという意味で「スマート」である。すなわち、特定のエンティティとの対話はスマートコントラクト内の特定のステップで符号化できるが、スマートコントラクトはその他の方法で自動的に実行及び自己強制可能である。それは、マシン読取可能及び実行可能である。いくつかの例において、自動実行は、任意のエンティティがＵＴＸＯをアンロックでき、そのようにするインセンティブ（例えば、報酬）を有することを指す。このような例において、ＵＴＸＯをアンロックできる「任意のエンティティ」は、何らかの秘密の知識を証明するよう求められることなくアンロックスクリプトを作成することができるエンティティを指すことに留意する。換言すれば、アンロックトランザクションは、データのソースが暗号秘密（例えば、秘密非対称鍵、対称鍵等）へのアクセスを有することを検証することなく、立証可能である。さらに、このような例において、自己強制は、ブロックチェーンネットワークの立証ノードが制約に従ってアンロックトランザクションを強制させられることを指す。いくつかの例において、ＵＴＸＯの「アンロック（unlocking）」は、ＵＴＸＯを参照して有効として実行するアンロックトランザクションを作成することを指す。これは、トランザクションの「消費（spending）」と時に呼ばれることがある。
【０００９】
ブロックチェーントランザクション出力は、ロックスクリプトと、ビットコインなどのデジタル資産の所有権に関する情報を含む。ロックスクリプトは、動きの妨げ（encumbrance）と呼ばれることもあり、出力をアンロックするために満たされる必要がある条件を指定することによりデジタル資産を「ロックする」。例えば、ロックスクリプトは、関連づけられたデジタル資産をアンロックするためにアンロックスクリプト内に特定のデータが提供されることを要する場合がある。ロックスクリプトは、ビットコインにおいて「scriptPubKey」としても知られている。デジタル資産をアンロックするためにデータを提供するようパーティに要求する手法は、データのハッシュをロックスクリプト内部に埋め込むことを含む。しかし、これは、ロックスクリプトが作成されたときにデータが未決定である（例えば、分からず、固定されていない）場合に問題を提示する。
【発明の概要】
【００１０】
したがって、これらの態様の１つ以上において分散コンピューティングシステムを改善する方法及びシステムを提供することが望ましい。このような改善されたソリューションが次に考案されている。ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法が提供される。
【００１１】
したがって、コンピュータにより実現される方法を提供することが望ましく、当該コンピュータにより実現される方法は、提供されたタスクの結果を提供するよう競争することが可能な独立したコンピュータシステムのセットにタスクを提供するステップであり、タスクは実行すべき計算を指定する、ステップと、検証コンピュータシステムにおいて、計算が独立したコンピュータシステムのセット内のワーカ（worker）コンピュータシステムにより正しく実行されることを検証する（verifying）ステップであり、計算は、少なくとも、評価鍵（evaluation  key）を生成し、評価鍵をワーカコンピュータシステムに提供し、ワーカコンピュータシステムからプルーフ（proof）を受信することであってプルーフは評価鍵に少なくとも部分的に基づき、検証鍵（verification  key）を生成し、プルーフ及び検証鍵を使用して計算が正しいことを検証することにより、乗算ゲートのセットを有する回路に基づく、ステップと、を含む。
【００１２】
検証鍵は、乗算ゲートのセットへの入力及び乗算ゲートのセットの出力のうち１つ以上に基づいてもよい。一実施形態において、検証鍵は公開検証鍵であり、公開検証鍵はコンピュータシステムにより公開されてもよい。
【００１３】
プルーフは、乗算ゲートの中間出力のセットに少なくとも部分的に基づいてもよい。一実施形態において、中間出力のセットは回路の最終出力を除外する。
【００１４】
証拠は、公開評価鍵に少なくとも部分的に基づいてもよい。
【００１５】
プルーフ及び検証鍵は、異なる群（groups）を生成する第１の生成元（generator）及び第２の生成元に少なくとも部分的に基づいてもよい。
【００１６】
好ましくは、当該方法は、プルーフの要素が評価鍵の要素と矛盾しない（consistent）ことを検証するステップをさらに含んでもよい。一実施形態において、評価鍵は以下のように決定されてもよく、ｉは回路の内部ワイヤへのインデックスを表現し、ｄｅｇ（ｔ）は多項式ｔ（ｘ）の次数（degree）であり、ｄｅｇ（ｔ）は回路内の乗算ゲートの数に等しい。
【数１】
2021502747.tif 000003
【００１７】
好ましくは、当該方法は、プルーフの要素が整合係数（matching  coefficient）を使用して構築されていることを検証するステップをさらに含んでもよい。一実施形態において、整合係数は、以下のようにＶｍｉｄ（ｓ）Ｐ、Ｗｍｉｄ（ｓ）Ｑ、及びＹｍｉｄ（ｓ）Ｐについて確認される。
【数２】
2021502747.tif 000004
【００１８】
好ましくは、当該方法は、プルーフの項に対する可除性（divisibility）要件を検証するステップをさらに含んでもよい。一実施形態において、検証エンティティは、以下を確認することにより可除性要件が満たされることを確認する。
【数３】
2021502747.tif 000005
【００１９】
ワーカコンピュータシステムは、回路の入力及び出力値に対応するＩ／Ｏ値のセットを提供し得る。一実施形態において、Ｉ／Ｏデータは、ワーカコンピュータシステムにより評価される関数の入力及び出力である。
【００２０】
回路は、乗算ゲートへのその寄与（contributions）をモデル化された１つ以上の加算ゲートを含んでもよい。一実施形態において、回路は乗算及び加算ゲートのセットとして見なすことができ、これにおいて、回路はｄ個の乗算ゲートに接続されたｍ個のワイヤを含み、加算ゲートは乗算ゲートへのそれらの寄与をモデル化される。
【００２１】
計算は、ビットコイントランザクション立証の一部でもよく、あるいは、さらなる実施形態において、計算は、ブロックチェーントランザクション立証の一部でもよい。
【００２２】
計算が正しいことを検証することは、少なくとも、プルーフ、検証鍵、及びＩ／Ｏ値のセットを検証コンピュータシステムに提供し、検証コンピュータシステムから計算が正しいとの指標を受信することにより達成されてもよい。一実施形態において、指標は、検証コンピュータシステムに関連づけられた鍵で生成されたデジタル署名などの、計算が正しいことの暗号的に検証可能な指標でもよい。
【００２３】
検証コンピュータシステムは、ブロックチェーンノード又はビットコインノードでもよい。
【００２４】
さらに、プロセッサと、実行可能命令を含むメモリと、を含むシステムであって、実行可能命令はプロセッサによる実行の結果として、請求される方法のうちいずれかを当該システムに実行させる、システムを提供することが望ましい。
【００２５】
さらに、コンピュータシステムの１つ以上のプロセッサによる実行の結果として、請求される方法のうちいずれかをコンピュータシステムに少なくとも実行させる実行可能命令を記憶した非一時的コンピュータ読取可能記憶媒体を提供することが望ましい。
【図面の簡単な説明】
【００２６】
本発明のこれら及び他の態様が、本明細書に記載した実施形態から明らかであり、それらを参照して明らかにされるであろう。次に、本発明の一実施形態が、単なる例として、添付の図面を参照して説明される。
【図１】種々の実施形態が実現され得るブロックチェーン環境を示す。
【図２】一実施形態による、クライアントコンピュータシステム及びワーカコンピュータシステムにより実行された場合にプルーフπ及び検証鍵ＶＫを使用してワーカにより実行されたワークをクライアントが検証することを可能にする処理の一例を示すスイム図である。
【図３】一実施形態による算術関数を表現する回路の一例を示す。
【図４】一実施形態による、クライアントコンピュータシステムにより実行された場合に検証鍵ＶＫを決定する処理の一例を示すフローチャートである。
【図５】一実施形態による、クライアントコンピュータシステムにより実行された場合にプルーフπを使用してワーカコンピュータシステムにより実行された計算を検証する処理の一例を示すフローチャートである。
【図６】種々の実施形態が実現され得るコンピューティング環境を示す。
【発明を実施するための形態】
【００２７】
分散コンピューティング環境において、単一のタスクは複数のサブタスクに分割されることがあり、該サブタスクは、実行のために複数のコンピュータシステム間で分散されることがある。複数のコンピュータシステムの各々は、サブタスクのうち１つ以上を実行し得る。種々の例において、個々のコンピュータシステムにより生成された結果は、元の単一のタスクに対する結果を生成するために協調コンピュータシステムにより蓄積され、集約される。したがって、多くの実施形態において、協調コンピュータシステムは、サブタスクの各々が正しく実行され、それにより元の単一タスクに対して生成された結果が正しいと決定することに関心を有する。これは、サブタスクが分散された個々のコンピュータシステムが協調コンピュータシステムにより完全に信頼されていない場合、特に問題になる。本文献に記載のシステム及び方法により、検証コンピュータシステムは、他のコンピュータシステムが信頼されていないコンピュータシステムの可能性があるとしても、他のコンピュータシステムにより実行されたワーク（work）を暗号的に検証することができる。これは、協調コンピュータシステムが、必ずしも信頼されてはいないより広範なコンピュータシステムのセットにワークを分散させることを可能にし、なぜならば、生成されるワークは、分散されたサブタスクを再現することなく暗号的に検証できるからである。
【００２８】
本文献は、種々の例を用いて、信頼されていないワーカコンピュータシステムのワークが検証され得る処理について説明する。いくつかの実施形態において、ワーカコンピュータシステムに分散されるワークは、論理回路の一部として見なすことができ、その回路の一部又は全部に関連づけられたワークの検証は、検証者（verifier）が論理回路に関連する他のサブタスクを進めることを可能にする。いくつかの実装において、サブタスクの性能及び検証に関連する情報は、ブロックチェーンを使用して交換される。しかしながら、本明細書に記載の方法は、検証エンティティが１つ以上の信頼されていないコンピュータシステムにより実行されたワークを確認するよう要求される任意の分散コンピューティング環境に適用可能である。
【００２９】
本文献では、以下の表記が用いられることがある。数学的な群は、二重打ちの
【数４】
2021502747.tif 000006
の文字、例えば、
【数５】
2021502747.tif 000007
を用いて表現されることがあり、群の生成元は、スクリプト文字、例えば、
【数６】
2021502747.tif 000008
により示されることがある。例えば、群
【数７】
2021502747.tif 000009
を所与として、
【数８】
2021502747.tif 000010
の場合、
【数９】
2021502747.tif 000011
ことが示され得る。
【００３０】
二重打ちの
【数１０】
2021502747.tif 000012
の文字は、体（fields）を表現するために使用されることがある。例えば、
【数１１】
2021502747.tif 000013
は、特性ｐの有限体を表現するために使用されることがあり、
【数１２】
2021502747.tif 000014
は、
【数１３】
2021502747.tif 000015
の次数ｋの拡張体をあらわすために使用されることがあり、ｋは非ゼロの整数である。非ゼロの要素からなるサブセット
【数１４】
2021502747.tif 000016
は、
【数１５】
2021502747.tif 000017
として書かれることもある。別の例において、素数ｐについて、
【数１６】
2021502747.tif 000018
である。Ｅが有限体
【数１７】
2021502747.tif 000019
上の楕円曲線である別の例において、
【数１８】
2021502747.tif 000020
の位数ｒのアーベル部分群は、
【数１９】
2021502747.tif 000021
として書かれることもある。集合Ｘからランダムにサンプリングされる要素ｘは、
【数２０】
2021502747.tif 000022
として表現されることがある。表記の
【数２１】
2021502747.tif 000023
は、効率的な計算可能な双線形写像を表現するために使用されることがあり、
【数２２】
2021502747.tif 000024
は、同じ素数位数（prime  order）ｒの巡回群である。
【数２３】
2021502747.tif 000025
は加法群であり、
【数２４】
2021502747.tif 000026
は乗法群である。算術演算はｒを法として実行される。
【００３１】
本文献は、二次算術プログラム（Quadratic  Arithmetic  Program）（「ＱＡＰ」）を使用する１つ以上の実施形態について説明する。種々の実施形態において、一般的な計算は、素数位数ｒの体
【数２５】
2021502747.tif 000027
上で、多項式演算のセットへ符号化される。一例において、ＱＡＰは、
【数２６】
2021502747.tif 000028
を含み、次数ｄｅｇ（ｖｉ），ｄｅｇ（ｗｉ），ｄｅｇ（ｙｉ）＜ｄｅｇ（ｔ）＝ｄの、
【数２７】
2021502747.tif 000029
の多項式を有する。前の例を参照すると、ＱＡＰは、Ｑのサイズがｍである（ｍは内部ワイヤの数を表す）こと、及びＱの次数がｔの次数ｄであることを列挙することにより記述されてもよく、ｄは乗算ゲートの数である。別の例において、
【数２８】
2021502747.tif 000030
をＱＡＰとする。タプル（ａ０，．．．，ａｍ）は、ｔが
【数２９】
2021502747.tif 000031
を割り切る場合、Ｑの解である。多項式｛ｖｉ｝ｍｉ＝０は各乗算ゲートへの左入力を符号化し、多項式｛ｗｉ｝ｍｉ＝０は各乗算ゲートへの右入力を符号化し、多項式｛ｙｉ｝ｍｉ＝０は出力を符号化する。
【００３２】
まず、本開示の一実施形態によるブロックチェーンに関連づけられた例示的なブロックチェーンネットワーク１００を示す図１を参照する。実施形態において、例示的なブロックチェーンネットワーク１００は、ピアツーピア分散電子デバイスとして実現されたブロックチェーンノードを含み、該電子デバイスは各々、ノード１０２のオペレータ間で少なくとも部分的に同意されたブロックチェーンプロトコルに従うオペレーションを実行するソフトウェア及び／又はハードウェアのインスタンスを実行する。いくつかの例において、「ノード」は、ブロックチェーンネットワーク間で分散されたピアツーピア電子デバイスを指す。ブロックチェーンプロトコルの一例がビットコインプロトコルである。
【００３３】
いくつかの実施形態において、ノード１０２は、（例えば、データセンター内のサーバにより、クライアントコンピューティングデバイス（例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン等）により、計算リソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスにより、又は図６のコンピューティングデバイス６００などの任意の適切な電子クライアントデバイスにより）任意の適切なコンピューティングデバイスから構成できる。いくつかの実施形態において、ノード１０２は、トランザクション１０４などの提案されたトランザクションを表すデータメッセージ又はオブジェクトを受け取るための入力を有する。ノードは、いくつかの実施形態において、それらが維持する情報について、例えばトランザクション１０４の状態の情報についてクエリ可能である。
【００３４】
図１に示すように、ノード１０２のいくつかは、ノード１０２のうち１つ以上の他のノードに通信上結合される。このような通信結合は、有線又は無線通信のうち１つ以上を含むことができる。実施形態において、ノード１０２は各々、ブロックチェーン内の全てのトランザクションの「台帳」の少なくとも一部を維持する。このようにして、台帳は分散台帳となる。台帳に影響するノードにより処理されたトランザクションは、他のノードのうち１つ以上により検証可能であり、それにより、台帳の完全性が維持される。
【００３５】
どのノード１０２がどの他のノードと通信することができるかに関しては、メッセージが、ブロックチェーンプロトコルが転送すべきことを示すメッセージであると想定して、ノード間で渡されるメッセージが例示的なブロックチェーンネットワーク１００（又はその何らかの重要な部分）の全体に伝搬することができるように、例示的なブロックチェーンネットワーク１００内のノードの各々がノード１０２のうち１つ以上の他のノードと通信できることで十分である。１つのこのようなメッセージは、ノード１０２Ａなどのノード１０２のうち１つによる提案されたトランザクションの公開であり得、これは次いで、パス１０６などのパスに沿って伝搬する。別のこのようなメッセージは、ブロックチェーンに含めるように提案された新しいブロックの公開であり得る。
【００３６】
一実施形態において、ノード１０２のうち少なくともいくつかは、暗号問題を解くなどの複雑な計算を実行するマイナーノードである。暗号問題を解くマイナーノードは、ブロックチェーンに対する新しいブロックを作成し、この新しいブロックをノード１０２のうち他のノードにブロードキャストする。ノード１０２のうち他のノードは、マイナーノードのワークを検証し、検証すると、ブロックをブロックチェーンに（例えば、それをブロックチェーンの分散台帳に追加することにより）受け入れる。いくつかの例において、ブロックはトランザクションのグループであり、しばしば、タイムスタンプと前のブロックの「フィンガープリント」（例えばハッシュ）でマークされる。このようにして、各ブロックは前のブロックにリンクされた状態になり得、それにより、ブロックチェーン内のブロックをリンクする「チェーン」を作成する。実施形態では、有効なブロックは、ノード１０２の合意によりブロックチェーンに追加される。また、いくつかの例において、ブロックチェーンは、立証されたブロックのリストを含む。
【００３７】
一実施形態において、ノード１０２のうち少なくともいくつかは、本開示に記載されるように、トランザクションを立証する立証ノードとして動作する。いくつかの例において、トランザクションは、デジタル資産（例えば、複数のビットコイン）の所有権のプルーフと、デジタル資産の所有権／制御を受け入れる又は移転する条件とを提供するデータを含む。いくつかの例において、「アンロックトランザクション」は、前のトランザクションの未使用トランザクション出力（unspent  transaction  output、ＵＴＸＯ）により示されるデジタル資産の少なくとも一部を、ブロックチェーンアドレスに関連づけられたエンティティに再関連づけする（例えば、所有権又は制御を移転する）ブロックチェーントランザクションを指す。いくつかの例において、「前のトランザクション」は、アンロックトランザクションにより参照されているＵＴＸＯを含むブロックチェーントランザクションを指す。いくつかの実施形態において、トランザクションは、所有権／制御が移転され（「アンロックされ」）得る前に満たされなければならない条件でトランザクションの動きを妨げる（encumbers）「ロックスクリプト」を含む。
【００３８】
いくつかの実施形態において、ブロックチェーンアドレスは、デジタル資産の少なくとも一部の制御が移転又は再関連づけされるエンティティに関連づけられた英数字の文字列である。いくつかの実施形態で実現されるいくつかのブロックチェーンプロトコルにおいて、エンティティに関連づけられた公開鍵とブロックチェーンアドレスとの間に１対１の対応がある。いくつかの実施形態において、トランザクションの立証は、ロックスクリプト及び／又はアンロックスクリプトで指定された１つ以上の条件を立証することを含む。トランザクション１０４の成功裏の立証において、立証ノードはトランザクション１０４をブロックチェーンに追加し、それをノード１０２に分散させる。
【００３９】
図２は、一実施形態による、クライアントコンピュータシステム及びワーカコンピュータシステムにより実行された場合にプルーフπ及び検証鍵ＶＫを使用してワーカにより実行されたワークをクライアントが検証することを可能にする処理の一例を示すスイム図である。処理２００の一部又は全部（又は記載された任意の他のプロセス、又はこれらの処理の変形及び／又は組み合わせ）は、実行可能命令及び／又は他のデータで構成された１つ以上のコンピュータシステムの制御下で実行でき、１つ以上のプロセッサ上で集合的に実行する実行可能命令として実現されてもよい。実行可能命令及び／又は他のデータは、非一時的コンピュータ読取可能記憶媒体に記憶できる（例えば、磁気、光、又はフラッシュ媒体に永続的に記憶されたコンピュータプログラム）。
【００４０】
例えば、処理２００の一部又は全部は、１つ以上のコンピューティングデバイスにより（例えば、データセンター内のサーバにより、クライアントコンピューティングデバイスにより、計算リソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスにより、又は図６のコンピューティングデバイス６００などの任意の適切な電子クライアントデバイスにより）実行できる。
【００４１】
種々の実施形態において、クライアントコンピュータシステムは、ワーカコンピュータシステムにより実行されるべき計算をサブミットする。ワーカコンピュータシステムは、クライアントコンピュータシステムにより完全に信頼されていなくてもよく、したがって、ワーカコンピュータシステムは、クライアントコンピュータシステム又は別の信頼された検証コンピュータシステムが、ワーカコンピュータシステムにより実行された算出が正しいことを検証することを可能にする情報を提供する。多くの例において、クライアントは、ワーカコンピュータシステムを完全に信頼せず、したがって、クライアントコンピュータシステムを満足させるために、ワーカコンピュータシステムは、計算が正しく実行されたことをクライアントコンピュータシステムが証明することを可能にする情報をサブミットする。いくつかの実施形態において、ワーカコンピュータシステムにより行われるワークの検証は、クライアントコンピュータシステムにより信頼された検証コンピュータシステムにより行われる。
【００４２】
種々の実施形態において、公開検証鍵パラメータＶＫ、プルーフπ、及びＩ／Ｏデータが、信頼されていないワーカコンピュータシステムにより提供される正しい計算の主張された（alleged）プルーフを検証するために使用される。種々の実施形態において、検証コンピュータシステムは、クライアントコンピュータシステム及び信頼されていないワーカコンピュータシステムから検証処理で使用される材料を収集し、クライアントコンピュータシステムの代わりに検証を実行する。一実施形態において、信頼されていないワーカコンピュータシステムにより実行される計算の検証はトランザクションの立証の間に生じ、したがって、検証コンピュータシステムは、任意のビットコインノード又はブロックチェーンノードでもよい。
【００４３】
処理はブロック２０２で始まり、クライアントコンピュータシステムが、ワーカコンピュータシステムにより評価されるべき関数を識別する。ブロック２０４において、クライアントコンピュータシステムが、ワーカコンピュータシステムにサブミットされる関数のための評価鍵ＥＫを構築する。ブロック２０６において、クライアントコンピュータシステムが、ワーカコンピュータシステムにより実行されたワークを検証するために使用できる検証鍵ＶＫを生成する。ブロック２０８において、クライアントコンピュータシステムが、関数及び評価鍵ＥＫをワーカコンピュータシステムにサブミットする。
【００４４】
一実施形態において、公開評価鍵ＥＫの構築は以下のように達成される。
【数３０】
2021502747.tif 000032
【００４５】
上記実施形態において、ｉは回路の内部ワイヤへのインデックスを表現し、ｄｅｇ（ｔ）は多項式ｔ（ｘ）の次数であり、ｄｅｇ（ｔ）は回路内の乗算ゲートの数に等しい。図３に示す回路では、公開評価鍵ＥＫは以下のとおりである。
【数３１】
2021502747.tif 000033
【００４６】
ブロック２１０において、ワーカコンピュータシステムが、クライアントコンピュータシステムから評価鍵ＥＫ及び実行されるべき関数を記述した情報を受信する。ワーカコンピュータシステムは、クライアントコンピュータシステムにより要求された関数を評価し、ワーカコンピュータシステムにより実行された算出を検証するために使用可能なプルーフπを構築する（２１２）。ブロック２１４において、ワーカコンピュータシステムが、プルーフπ及び算出のＩ／Ｏデータをクライアントコンピュータシステムに提供する。一実施形態において、Ｉ／Ｏデータは、ワーカコンピュータシステムにより評価される関数の入力及び出力である。
【００４７】
ブロック２１６において、クライアントコンピュータシステムが、ワーカコンピュータシステムからＩ／Ｏデータ及びプルーフπを受信する。ブロック２１８において、クライアントコンピュータシステムが、ＶＫ、π、及びＩ／Ｏデータからの要素を使用して、ワーカコンピュータシステムにより実行された計算を検証する。
【００４８】
２０２〜２１８で実行される動作のうち１つ以上が、並列を含む種々の順序及び組み合わせで実行されてもよいことに留意する。
【００４９】
開示の実施形態を説明する文脈において、別段規定されない限り、「命令」が援助なしには通常実行しない動作（例えば、データの伝送、算出等）を実行する実行可能命令（コード、アプリケーション、エージェントなどとも呼ばれる）に関する表現の使用は、命令がマシンにより実行され、それにより指定された動作をマシンに実行させることを示すことに留意する。
【００５０】
Gennaro,  R.ら（2013）による「Quadratic  Span  Programs  and  Succinct  NIZKs  without  PCPs」と題された論文では、二次算術プログラムに基づく検証可能な計算のプロトコルについて述べている。プロトコルでは、回路は入力としてｎ個の要素を取り込み、合計でＮ＝ｎ＋ｎ’個のＩＯ要素（又は、Ｉ／Ｏデータ）のため、ｎ’個の要素の出力を生成する。回路は乗算及び加算ゲートのセットとして見なすことができ、これにおいて、回路はｄ個の乗算ゲートに接続されたｍ個のワイヤを含み、加算ゲートは乗算ゲートへのそれらの寄与をモデル化される。
【００５１】
入力／出力ワイヤ上の割り当て（ａ１，ａ２，．．．，ａＮ）が有効であることを証明する検証エンティティでは、多項式ｐ（ｘ）が根（ｘ１，ｘ２，．．．ｘｄ）を有する、すなわちｐ（ｘｉ）ｉ＝１．．．ｄ＝０であるように、内部ワイヤ上の割り当てに対応する係数（ａＮ＋１，．．．ａｍ）が存在することを証明すれば十分である。多項式ｐ（ｘ）は、ゲート式及びワイヤ値を符号化する。したがって、多項式ｈ（ｘ）が存在し、ｐ（ｘ）＝ｈ（ｘ）・ｔ（ｘ）であり、ここで、
【数３２】
2021502747.tif 000034
である。
【００５２】
【数３３】
2021502747.tif 000035
の場合、ｔが
【数３４】
2021502747.tif 000036
を割り切ることを証明するために、証明者（prover）は、未知の点ｓにおいて商の多項式
【数３５】
2021502747.tif 000037
を計算し、双線形写像を使用してｐ（ｓ）＝ｔ（ｓ）・ｈ（ｓ）であることをチェックする。種々の例において、ワーカコンピュータシステムが入力（ａ１，ａ２，．．．，ａｎ）を正しく組み込むこと、及びワーカコンピュータシステムがクライアントの評価鍵ＥＫを使用してプルーフを生成することを確保するために、さらなる検証が実行される。
【００５３】
【数３６】
2021502747.tif 000038
が、選択された根値の集合である場合、多項式
【数３７】
2021502747.tif 000039
は、ラグランジュ多項式の総和、すなわち、
【数３８】
2021502747.tif 000040
として表すことができる。
【００５４】
生成元
【数３９】
2021502747.tif 000041
について、ランダムな
【数４０】
2021502747.tif 000042
を使用して生成される検証鍵ＶＫは、次のとおりである。
【数４１】
2021502747.tif 000043
【００５５】
プルーフは、以下の要素を含む。
【数４２】
2021502747.tif 000044
【００５６】
ＶＫ、π、及び（ａ１，ａ２，．．．，ａＮ）である一実施形態において、検証コンピュータシステムは、ｔ（ｘ）がｐ（ｘ）を割り切り、ゆえに（ｘＮ＋１，．．．，ｘｍ）＝ｆ（ｘ０，．．．，ｘＮ）であることを以下のように検証する。最初、検証コンピュータシステムは、以下を確認することにより３つのα項をチェックする。
【数４３】
2021502747.tif 000045
【００５７】
ここで、
【数４４】
2021502747.tif 000046
である。次いで、検証コンピュータシステムは、以下を確認することにより項βをチェックする。
【数４５】
2021502747.tif 000047
【００５８】
さらに、以下を確認することにより可除性要件が満たされることを確認する。
【数４６】
2021502747.tif 000048
【００５９】
図３は、一実施形態による算術関数を表現する回路の一例を示す。図３に示す回路は、関数３０２、すなわち、
ｆ（ａ１，ａ２，ａ３，ａ４）＝ａ１＋ａ２ａ３（ａ３＋ａ４）
を表す。
【００６０】
回路では、各ワイヤ値は、素体位数体（prime  field  order  field）
【数４７】
2021502747.tif 000049
からのものであり、全ての演算は上記体上で実行される。多項式は、その評価の観点で３つの乗算ゲート３０４、３０８、及び３１２において定義される。加算ゲート３０６及び３１０は、乗算ゲートへのそれらの寄与をモデル化される。回路は、出力値３１４を生成する。
【００６１】
入力値ａ１，ａ２，ａ３，ａ４が回路に割り当てられると、ワーカコンピュータシステムは対応する出力値を決定する。例えば、入力
【数４８】
2021502747.tif 000050
に対して、ワーカは、回路を評価して、各乗算ゲート３０４、３０８、３１２の出力値に対応する集合（ａ５，ａ６，ａ７）を得る（
【数４９】
2021502747.tif 000051
である）。１に設定されたダミー入力ワイヤａ０が回路に追加される。回路内の各乗算ゲート３０４、３０８、及び３１２に対して、区別可能な根値
【数５０】
2021502747.tif 000052
が選択される。ゆえに、図３の回路では、３つの値をランダムに選択し、
【数５１】
2021502747.tif 000053
であり、ターゲット多項式ｔ（ｘ）を
ｔ（ｘ）＝（ｘ−ｘ５）（ｘ−ｘ６）（ｘ−ｘ７）
に設定する。
【００６２】
一実施形態において、多項式｛ｖｉ（ｘ）｝は乗算ゲートの左入力を表現し、多項式｛ｗｉ（ｘ）｝は乗算ゲートの右入力を表現し、多項式｛ｙｉ（ｘ）｝は回路の出力値を表現する。図３に示す例示的な回路では、多項式｛ｖｉ（ｘ）｝、｛ｗｉ（ｘ）｝、｛ｙｉ（ｘ）｝の陽的な式は次のとおりである。
【数５２】
2021502747.tif 000054
【００６３】
一実施形態において、Ｐ及びＱは、
【数５３】
2021502747.tif 000055
の生成元であり、それにより、
【数５４】
2021502747.tif 000056
である。さらに、非対称ペアリング、すなわち、
【数５５】
2021502747.tif 000057
を考え、
【数５６】
2021502747.tif 000058
は
【数５７】
2021502747.tif 000059
の（位数ｒの）部分群としてとられる。鍵生成手順は、ランダムな要素、すなわち、
【数５８】
2021502747.tif 000060
を含む。
【００６４】
図３に示す例では、公開検証鍵ＶＫは以下のように決定され得る。
【数５９】
2021502747.tif 000061
【００６５】
一実施形態において、公開検証鍵は、各々が異なる構成要素を表すサブシーケンスを有するビットシーケンスとして実現されるが、構成要素を公開検証鍵に符号化する異なる方法が、本開示の範囲内であると考えられる。
【００６６】
プルーフπは、以下の要素を含む。
【数６０】
2021502747.tif 000062
【００６７】
ここで、（ｈ０，ｈ１，ｈ２，ｈ３）はワーカにより評価された多項式ｈ（ｘ）の係数であり、ｈ（ｘ）＝ｈ０＋ｈ１ｘ＋ｈ２ｘ２＋ｈ３ｘ３である。一実施形態において、プルーフは、各々がプルーフの異なる構成要素を表すサブシーケンスを有するビットシーケンスとして実現されるが、構成要素をプルーフに符号化する異なる方法が、本開示の範囲内であると考えられる。要素の集合χは、公開評価鍵ＥＫに属する。
【数６１】
2021502747.tif 000063
【００６８】
一実施形態において、以下の式は、主張されたプルーフπを検証するために使用される。検証鍵ＶＫ、プルーフπ、ＩＯ値ａｉ＝｛ａ０，ａ１，ａ２，ａ３，ａ４，ａ７｝を所与として、検証アルゴリズムは、ｒｖＶｍｉｄ（ｓ）Ｐ、ｒｗＷｍｉｄ（ｓ）Ｑ、及びｒｙＹｍｉｄ（ｓ）Ｐが評価鍵ＥＫからの要素を使用して構築されていることを最初チェックする。すなわち、プロトコルは、以下の式（１）〜（３）を最初検証する。
【数６２】
2021502747.tif 000064
【００６９】
次に、検証コンピュータシステムは、同じ係数ａｍｉｄ＝｛ａ５，ａ６｝がＶｍｉｄ（ｓ）Ｐ、Ｗｍｉｄ（ｓ）Ｑ、及びＹｍｉｄ（ｓ）Ｐにおいて使用されているかをチェックする。一実施形態において、検証コンピュータシステムは、以下の式（４）を検証することによりこれを達成する。
【数６３】
2021502747.tif 000065
【００７０】
さらに、検証コンピュータシステムは、コミットメント（commitments）からの項を組み合わせてプルーフ項ｈ（ｘ）に対する可除性チェックを行う。すなわち、検証コンピュータシステムは、
【数６４】
2021502747.tif 000066
であることを、以下の
【数６５】
2021502747.tif 000067
を確認することにより証明する。
【００７１】
図４は、一実施形態による、クライアントコンピュータシステムにより実行された場合に検証鍵ＶＫを決定する処理の一例を示すフローチャートである。処理４００の一部又は全部（又は記載された任意の他のプロセス、又はこれらの処理の変形及び／又は組み合わせ）は、実行可能命令及び／又は他のデータで構成された１つ以上のコンピュータシステムの制御下で実行でき、１つ以上のプロセッサ上で集合的に実行する実行可能命令として実現されてもよい。実行可能命令及び／又は他のデータは、非一時的コンピュータ読取可能記憶媒体に記憶できる（例えば、磁気、光、又はフラッシュ媒体に永続的に記憶されたコンピュータプログラム）。
【００７２】
例えば、処理４００の一部又は全部は、１つ以上のコンピューティングデバイスにより（例えば、データセンター内のサーバにより、クライアントコンピューティングデバイスにより、計算リソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスにより、又は図６のコンピューティングデバイス６００などの任意の適切な電子クライアントデバイスにより）実行できる。
【００７３】
種々の実施形態において、クライアントコンピュータシステムは、ワーカコンピュータシステムにより実行されるべき計算をサブミットする。ワーカコンピュータシステムは、クライアントコンピュータシステムにより完全に信頼されていなくてもよく、したがって、ワーカコンピュータシステムは、クライアントコンピュータシステム又は別の信頼された検証コンピュータシステムが、ワーカコンピュータシステムにより実行された算出が正しいことを検証することを可能にする情報を提供する。多くの例において、クライアントは、ワーカコンピュータシステムを完全に信頼せず、したがって、クライアントコンピュータシステムを満足させるために、ワーカコンピュータシステムは、ワーカコンピュータシステムにより実行された計算が正しかったことをクライアントコンピュータシステムが証明することを可能にする情報をクライアントコンピュータシステムに提供する。種々の実施形態において、公開検証鍵パラメータＶＫ、プルーフπ、及びＩ／Ｏデータが、ワーカコンピュータシステムにより提供される正しい計算の主張されたプルーフを検証するために使用される。フローチャート４００は、検証鍵ＶＫを生成する処理を示す。
【００７４】
一実施形態において、ブロック４０２において、クライアントコンピュータシステムが、信頼されていないワーカコンピュータシステムにより実行されるべき関数Ｆを識別する。関数Ｆは、ｎ個の値を入力として取る。クライアントコンピュータシステムは、関数に対応する回路のモデルを生成し、この回路は、乗算ゲート及び加算ゲートのセットから構成される。ブロック４０４において、クライアントコンピュータシステムが、回路内の乗算ゲートを識別する。
【００７５】
一実施形態において、ブロック４０６において、クライアントコンピュータシステムが、回路内の各乗算ゲートの出力に対応する根値をランダムに選択する。ｍ個の乗算ゲートを有する回路では、クライアントコンピュータシステムはｍ個の根値（ｘｎ＋１．．．ｘｎ＋ｍ）を選択する。
【００７６】
一実施形態において、ブロック４０８において、クライアントコンピュータシステムが、選択された根値（ｘｎ＋１．．．ｘｎ＋ｍ）を使用して回路に対応するターゲット多項式ｔ（ｘ）＝（ｘ−ｘｎ）（ｘ−ｘｎ＋１）．．．（ｘ−ｘｎ＋ｍ）を決定する。ブロック４１０において、クライアントコンピュータシステムが、乗算ゲートの左入力｛ｖｉ（ｘ）｝、乗算ゲートの右入力｛ｗｉ（ｘ）｝、及び乗算ゲートの出力値｛ｙｉ（ｘ）｝を決定する。
【００７７】
一実施形態において、ブロック４１２において、クライアントコンピュータシステムが、ｒｙ＝ｒｖ・ｒｗであるように素数位数ｒの体からの退化（degeneration）のためのランダム要素ｒｖ，ｒｗ，ｓ，αｖ，αｗ，αｙ，β，γを選択する。
【００７８】
一実施形態において、ブロック４１４において、クライアントコンピュータシステムが、公開検証鍵ＶＫを決定する。Ｐ及びＱを
【数６６】
2021502747.tif 000068
の生成元とし、それにより、
【数６７】
2021502747.tif 000069
であるようにする。（ｉ）非対称ペアリング、すなわち、
【数６８】
2021502747.tif 000070
を考え、（ｉｉ）
【数６９】
2021502747.tif 000071
は
【数７０】
2021502747.tif 000072
の（位数ｒの）部分群としてとられることに留意されたい。生成元
【数７１】
2021502747.tif 000073
を所与として、ランダムな
【数７２】
2021502747.tif 000074
を使用して生成される検証鍵ＶＫは以下のとおりである。
【数７３】
2021502747.tif 000075
【００７９】
２０２〜２１４で実行される動作のうち１つ以上が、並列を含む種々の順序及び組み合わせで実行されてもよいことに留意する。
【００８０】
開示の実施形態を説明する文脈において、別段規定されない限り、「命令」が援助なしには通常実行しない動作（例えば、データの伝送、算出等）を実行する実行可能命令（コード、アプリケーション、エージェントなどとも呼ばれる）に関する表現の使用は、命令がマシンにより実行され、それにより指定された動作をマシンに実行させることを示すことに留意する。
【００８１】
図５は、一実施形態による、クライアントコンピュータシステムにより実行された場合にプルーフπを使用してワーカコンピュータシステムにより実行された計算を検証する処理の一例を示すフローチャートである。処理５００の一部又は全部（又は記載された任意の他のプロセス、又はこれらの処理の変形及び／又は組み合わせ）は、実行可能命令及び／又は他のデータで構成された１つ以上のコンピュータシステムの制御下で実行でき、１つ以上のプロセッサ上で集合的に実行する実行可能命令として実現されてもよい。実行可能命令及び／又は他のデータは、非一時的コンピュータ読取可能記憶媒体に記憶できる（例えば、磁気、光、又はフラッシュ媒体に永続的に記憶されたコンピュータプログラム）。
【００８２】
例えば、処理５００の一部又は全部は、１つ以上のコンピューティングデバイスにより（例えば、データセンター内のサーバにより、クライアントコンピューティングデバイスにより、計算リソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスにより、又は図６のコンピューティングデバイス６００などの任意の適切な電子クライアントデバイスにより）実行できる。
【００８３】
種々の実施形態において、クライアントコンピュータシステムは、ワーカコンピュータシステムにより実行されるべき計算をサブミットする。ワーカコンピュータシステムは、クライアントコンピュータシステムにより完全に信頼されていなくてもよく、したがって、ワーカコンピュータシステムは、クライアントコンピュータシステム又は別の信頼された検証コンピュータシステムが、ワーカコンピュータシステムにより実行された算出が正しいことを検証することを可能にする情報を提供する。多くの例において、クライアントは、ワーカコンピュータシステムを完全に信頼せず、したがって、クライアントコンピュータシステムを満足させるために、ワーカコンピュータシステムは、ワーカコンピュータシステムにより実行された計算が正しかったことをクライアントコンピュータシステムが証明することを可能にする情報をクライアントコンピュータシステムに提供する。種々の実施形態において、公開検証鍵パラメータＶＫ、プルーフπ、及びＩ／Ｏデータが、ワーカコンピュータシステムにより提供される正しい計算の主張されたプルーフを検証するために使用される。フローチャート５００は、ワーカコンピュータシステムにより提供されるプルーフπを使用して、ワーカコンピュータシステムにより実行された算出を検証する処理を示す。
【００８４】
一実施形態において、ブロック５０２において、クライアントコンピュータシステムが、ワーカコンピュータシステムからプルーフπ及びＩ／Ｏデータを受信する。プルーフは以下を含む。
【数７４】
2021502747.tif 000076
【００８５】
一実施形態において、ブロック５０４において、クライアントコンピュータシステムは、ワーカコンピュータシステムにより実行されたワークが正しいことを確認する処理を開始する。クライアントコンピュータシステムは、ｒｖＶｍｉｄ（ｓ）Ｐ、ｒｗＷｍｉｄ（ｓ）Ｑ、及びｒｙＹｍｉｄ（ｓ）Ｐが評価鍵ＥＫからの要素を使用して構築されていることを以下のように確認する。
【数７５】
2021502747.tif 000077
【００８６】
ここで、
【数７６】
2021502747.tif 000078
である。
【００８７】
ブロック５０６において、クライアントコンピュータシステムが、整合係数がＶｍｉｄ（ｓ）Ｐ、Ｗｍｉｄ（ｓ）Ｑ、及びＹｍｉｄ（ｓ）Ｐに使用されていることを以下のように確認する。
【数７７】
2021502747.tif 000079
【００８８】
ブロック５０８において、クライアントコンピュータシステムが、以下のように、コミットメントからの項を組み合わせてプルーフ項ｈ（ｘ）に対する可除性チェックを実行する。
【数７８】
2021502747.tif 000080
【００８９】
ここで、
【数７９】
2021502747.tif 000081
である。
【００９０】
上記のチェックが成功した場合、クライアントコンピュータシステムは、ワーカコンピュータシステムにより実行された算出が正しいと決定し、ワークコンピュータシステムにより提供された結果は、クライアントコンピュータシステムにより信頼できる。
【００９１】
５０２〜５０８で実行される動作のうち１つ以上が、並列を含む種々の順序及び組み合わせで実行されてもよいことに留意する。
【００９２】
開示の実施形態を説明する文脈において、別段規定されない限り、「命令」が援助なしには通常実行しない動作（例えば、データの伝送、算出等）を実行する実行可能命令（コード、アプリケーション、エージェントなどとも呼ばれる）に関する表現の使用は、命令がマシンにより実行され、それにより指定された動作をマシンに実行させることを示すことに留意する。
【００９３】
本文献は、ブロックチェーンの能力を強化及び拡張するシステム及び方法について説明する。種々の実施形態により、ユーザは、パブリックブロックチェーンを通じて権利を安全に列挙及び交換し、ほぼ完全な匿名のデジタルトランザクションを統合することができる。種々の実施形態が、（ｉ）共通参照文字列（common  reference  string、ＣＲＳ）及びワーカのプルーフ（π）の記憶問題、（ｉｉ）アンロックスクリプトとＣＲＳ、及びアンロックスクリプトとπの間の相互作用、に対するソリューション提供するために使用されてもよい。
【００９４】
種々の実施形態が、スマートコントラクトの安全でコンパクトな表現を提供するために使用されてもよい。スマートコントラクトは、ＸＭＬ派生のＦｐＭＬなどの特殊な言語を使用するフォーマット規則に従い得る。種々の実施形態が、コントラクト実行を信頼されていないパーティ（parties）にアウトソーシングするため、あるいはコントラクト実行の正しさをパブリックに検証するために使用されてもよい。コントラクトの立証は、コードの再実行を意味しない場合がある。計算は、ネットワーク内のあらゆるノードにより複製されはしない場合がある。いくつかの実施形態において、正当な実行のプルーフは、パブリックブロックチェーンに記憶され、立証目的で使用される。
【００９５】
図６は、本開示の少なくとも１つの実施形態を実施するために使用され得るコンピューティングデバイス６００の例示的な簡略ブロック図である。種々の実施形態において、コンピューティングデバイス６００は、上で例示及び説明されたシステムのうち任意のものを実現するために使用されてもよい。例えば、コンピューティングデバイス６００は、データサーバ、ウェブサーバ、ポータブルコンピューティングデバイス、パーソナルコンピュータ、又は任意の電子コンピューティングデバイスとしての使用に対して構成されてもよい。図６に示すように、コンピューティングデバイス６００は、実施形態において、バスサブシステム６０４を介して複数の周辺サブシステムと通信し、かつ動作上結合される１つ以上のプロセッサ６０２を含むことができる。いくつかの実施形態において、これらの周辺サブシステムは、メモリサブシステム６０８及びファイル／ディスクストレージサブシステム６１０含むストレージサブシステム６０６と、１つ以上のユーザインターフェース入力デバイス６１２と、１つ以上のユーザインターフェース出力デバイス６１４と、ネットワークインターフェースサブシステム６１６を含む。このようなストレージサブシステム６０６は、情報の一時的又は長期的な記憶のために使用できる。
【００９６】
いくつかの実施形態において、バスサブシステム６０４は、コンピューティングデバイス６００の種々のコンポーネント及びサブシステムが意図されたとおり互いに通信することを可能にする機構を提供する。バスサブシステム６０４は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用する。いくつかの実施形態において、ネットワークインターフェースサブシステム６１６は、他のコンピューティングデバイス及びネットワークへのインターフェースを提供する。ネットワークインターフェースサブシステム６１６は、いくつかの実施形態において、他のシステムからデータを受信し、コンピューティングデバイス６００から他のシステムにデータを送信するためのインターフェースとして機能する。いくつかの実施形態において、バスサブシステム６０４は、詳細、検索語等のようなデータを通信するために利用される。
【００９７】
いくつかの実施形態において、ユーザインターフェース入力デバイス６１２は、キーボードなどの１つ以上のユーザ入力デバイス；一体型マウス、トラックボール、タッチパッド、又はグラフィックスタブレットなどのポインティングデバイス；スキャナ；バーコードスキャナ；ディスプレイに組み込まれたタッチスクリーン；音声認識システム、マイクロフォンなどのオーディオ入力デバイス；及び他タイプの入力デバイスを含む。一般に、用語「入力デバイス」の使用は、情報をコンピューティングデバイス６００に入力する全ての可能なタイプのデバイス及び機構を含むことが意図される。いくつかの実施形態において、１つ以上のユーザインターフェース出力デバイス６１４は、表示サブシステム、プリンタ、又はオーディオ出力デバイスなどの非視覚的ディスプレイ等を含む。いくつかの実施形態において、表示サブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイなどのフラットパネルデバイス、又は投影若しくは他の表示装置を含む。一般に、用語「出力デバイス」の使用は、コンピューティングデバイス６００から情報を出力する全ての可能なタイプのデバイス及び機構を含むことが意図される。１つ以上のユーザインターフェース出力デバイス６１４が使用されて、例えば、ユーザインターフェースを提示し、説明された処理及びその変形を実行するアプリケーションとのユーザ対話を、そのような対話が適切であり得るときに容易にしてもよい。
【００９８】
いくつかの実施形態において、ストレージサブシステム６０６は、本開示の少なくとも１つの実施形態の機能性を提供する基本プログラミング及びデータ構造を記憶するコンピュータ読取可能記憶媒体を提供する。アプリケーション（プログラム、コードモジュール、命令）は、いくつかの実施形態において１つ以上のプロセッサにより実行されたとき、本開示の１つ以上の実施形態の機能性を提供し、いくつかの実施形態においてストレージサブシステム６０６に記憶される。これらのアプリケーションモジュール又は命令は、１つ以上のプロセッサ６０２により実行できる。種々の実施形態において、ストレージサブシステム６０６は、本開示に従って使用されるデータを記憶するリポジトリをさらに提供する。いくつかの実施形態において、ストレージサブシステム６０６は、メモリサブシステム６０８及びファイル／ディスクストレージサブシステム６１０を含む。
【００９９】
実施形態において、メモリサブシステム６０８は、複数のメモリ、例えばプログラム実行中の命令及びデータの記憶のためのメインランダムアクセスメモリ（ＲＡＭ）６１８及び／又は固定命令を記憶可能な読取専用メモリ（ＲＯＭ）６２０を含む。いくつかの実施形態において、ファイル／ディスクストレージサブシステム６１０は、プログラム及びデータファイルのための非一時的な永続的（不揮発性）ストレージを提供し、ハードディスクドライブ、関連する取り外し可能媒体と共にフロッピーディスクドライブ、コンパクトディスク読取専用メモリ（ＣＤ‐ＲＯＭ）ドライブ、光学ドライブ、取り外し可能媒体カートリッジ、又は他の同様の記憶媒体を含むことができる。
【０１００】
いくつかの実施形態において、コンピューティングデバイス６００は、少なくとも１つのローカルクロック６２４を含む。ローカルクロック６２４は、いくつかの実施形態において、特定の開始日から発生したティック（ticks）数を表すカウンタであり、いくつかの実施形態において、コンピューティングデバイス６００内に一体的に配置される。種々の実施形態において、ローカルクロック６２４は、特定のクロックパルスにおいてコンピューティングデバイス６００のためのプロセッサ及びそれに含まれるサブシステム内でデータ転送を同期させるために使用され、コンピューティングデバイス６００とデータセンター内の他のシステムとの間の同期動作を協調させるために使用されてもよい。別の実施形態において、ローカルクロックは、プログラム可能な間隔のタイマである。
【０１０１】
コンピューティングデバイス６００は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション、又は以下に説明される任意の他のデバイスを含む、様々なタイプのうち任意のものとすることができる。さらに、コンピューティングデバイス６００は、いくつかの実施形態において、１つ以上のポート（例えばＵＳＢ、ヘッドフォンジャック、ライトニングコネクタ等）を通じてコンピューティングデバイス６００に接続できる別のデバイスを含むことができる。実施形態において、このようなデバイスは、光ファイバコネクタを受け入れるポートを含む。したがって、いくつかの実施形態において、このデバイスは、光信号を、処理のために、デバイスをコンピューティングデバイス６００に接続するポートを通して伝送される電気信号に変換する。コンピュータ及びネットワークの絶えず変化する性質に起因して、図６に示されるコンピューティングデバイス６００の説明は、デバイスの好適な実施形態を例示する目的で特定の例としてのみ意図される。図６に示すシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
【０１０２】
したがって、明細書及び図面は、限定的でなく例示的な意味で解釈されるべきである。しかしながら、特許請求の範囲に記載された発明の範囲から逸脱することなく、これらに対して様々な修正及び変更がなされ得ることが明らかであろう。同様に、他の変形が本開示の範囲内である。ゆえに、開示された手法は種々の修正及び代替の構成が可能だが、そのうち特定の例示的な実施形態が図面に示され、上記で詳細に説明されている。しかしながら、発明を開示された特定の形式又は形態に限定する意図はなく、逆に、別記の特許請求の範囲に定義される発明の範囲内に入るすべての修正、代替的な構成、及び同等物をカバーする意図があることを理解されたい。
【０１０３】
開示の実施形態を説明する文脈における（特に、下記の特許請求の範囲の文脈における）用語「一の」（“a”、“an”）及びその（“the”）並びに同様の指示物の使用は、別段示されない限り、又は文脈により明らかに矛盾しない限り、単数及び複数の双方をカバーするものと解釈されるべきである。用語「含む」、「有する」、「含める」、及び「包含する」は、別段記されない限り、オープンエンド用語（すなわち、「含むが限定されない」を意味する）と解釈されるべきである。用語「接続される」は、変更されずに物理的接続を参照するとき、介在する何かがあるとしても、部分的又は全体的に内部に含まれる、取り付けられる、又は一緒に結合されると解釈されるべきである。本開示における値の範囲の記載は、別段示されない限り、該範囲内に入る各別個の値を個々に参照する簡略化された方法として機能することを意図するに過ぎず、各別個の値はそれが個々に記載されているかのように本明細書に組み込まれる。用語「セット」（例えば、「アイテムのセット」）又は「サブセット」の使用は、別段記されない限り、又は文脈により矛盾しない限り、１つ以上のメンバを含む空でない集合と解釈されるべきである。さらに、別段記されない限り、又は文脈により矛盾しない限り、対応するセットの用語「サブセット」は、必ずしも対応するセットの適切なサブセットを示すものではないが、サブセット及び対応するセットは等しい場合がある。
【０１０４】
形式「Ａ、Ｂ、及びＣのうち少なくとも１つ」又は「Ａ、Ｂ、及びＣのうち少なくとも１つ」のフレーズなどの結合的言語は、特に別段示されない限り、又は別段文脈により明らかに矛盾しない限り、さもなければ一般に使用される文脈で理解され、項目、用語等がＡ又はＢ又はＣのいずれか、あるいはＡ及びＢ及びＣのセットのうち任意の空でないサブセットであり得ることを示す。例えば、３つのメンバを有するセットの例示的な例において、結合的フレーズ「Ａ、Ｂ、及びＣのうち少なくとも１つ」及び「Ａ、Ｂ、及びＣのうち少なくとも１つ」は、以下のセット、すなわち、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝のうち任意のものを参照する。ゆえに、そのような結合的言語は、一般に、特定の実施形態がＡの少なくとも１つ、Ｂの少なくとも１つ、及びＣの少なくとも１つが各々存在することを必要とするよう暗に示すことを意図しない。
【０１０５】
説明された処理の動作は、別段示されない限り、又は別段文脈により明らかに矛盾しない限り、任意の適切な順序で実行できる。説明された処理（又はその変形及び／又は組み合わせ）は、実行可能命令で構成された１つ以上のコンピュータシステムの制御下で実行でき、ハードウェア又はそれらの組み合わせにより、１つ以上のプロセッサ上で集合的に実行するコード（例えば、実行可能命令、１つ以上のコンピュータプログラム、又は１つ以上のアプリケーション）として実現できる。いくつかの実施形態において、コードは、例えば、１つ以上のプロセッサにより実行可能な複数の命令を含むコンピュータプログラムの形式でコンピュータ読取可能記憶媒体に記憶できる。いくつかの実施形態において、コンピュータ読取可能記憶媒体は非一時的である。
【０１０６】
提供されるいずれか又はすべての例、又は例示的言語（例えば、「などの」）の使用は、本発明の実施形態をより良く明らかにすることを意図するに過ぎず、別段請求されない限り、発明の範囲に制限を課すものではない。本明細書中の言語は、任意の請求されていない要素を発明の実施に対して不可欠なものとして示していると解釈されるべきではない。
【０１０７】
本開示の実施形態は、発明を実施するために発明者に知られる最良の形態を含め、説明されている。これらの実施形態の変形が、上述の説明を読んだ当業者に明らかになるであろう。発明者は、当業者がそのような変形を適宜採用することを予期しており、発明者は、本開示の実施形態が具体的に説明された以外の方法で実施されることを意図している。したがって、本開示の範囲は、適用法により許容される本明細書と別記の特許請求の範囲に記載された対象事項のすべての修正及び同等物を含む。さらに、上述の要素の、そのすべての可能な変形における任意の組み合わせは、別段示されない限り、又は別段文脈により明らかに矛盾しない限り、本開示の範囲に包含される。
【０１０８】
引用された刊行物、特許出願、及び特許を含む全ての参考文献は、各参考文献が参照により援用されるよう個々及び具体的に示され、かつその全体を明示されているのと同程度、本明細書で参照により援用される。
【０１０９】
上述の実施形態は、発明を限定するのでなく例示しており、当業者は、別記の特許請求の範囲により定義される発明の範囲から逸脱することなく多くの代替的な実施形態を設計可能であることに留意されたい。特許請求の範囲においては、括弧内に付されたいかなる参照符号も、特許請求の範囲を限定するものと解釈されてはならない。語「含んでいる」及び「含む」などは、任意の請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含める、又は、から構成される」ことを意味し、「含んでいる」は、「含めている、又は、から構成されている」ことを意味する。要素の単数の参照は、そのような要素の複数の参照を除外するものではなく、その逆もまた同様である。発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現できる。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のうちいくつかは、１つの同じアイテムのハードウェアにより具現化できる。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが利するように使用できないことを示すものではない。
【０１１０】
［要約］
本開示において説明及び示唆される手法は、公開検証鍵パラメータＶＫ及びＩ／Ｏデータを使用して第三者により提供されるプルーフπを検証することにより、計算の分野、具体的には第三者コンピュータシステムにより実行される計算の正しさを確認する分野を改善する。さらに、本開示において説明及び示唆される手法は、信頼されていない第三者コンピュータシステムのネットワークにわたり計算を分散可能にすることにより、コンピューティングシステムの機能を改善する。さらに、本開示において説明及び示唆される手法は、必然的にコンピュータ技術に根ざし、コントラクトを論理回路としてモデル化することにより、デジタルコントラクトの性能の検証で特に生じる問題を克服する。
【図１】
2021502747.tif 000082
【図２】
2021502747.tif 000083
【図３】
2021502747.tif 000084
【図４】
2021502747.tif 000085
【図５】
2021502747.tif 000086
【図６】
2021502747.tif 000087
【国際調査報告】
2021502747.tif 000088
2021502747.tif 000089