IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7587606メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法
<>
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図1
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図2
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図3
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図4
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図5
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図6
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図7
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図8
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図9
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図10
  • 特許-メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-12
(45)【発行日】2024-11-20
(54)【発明の名称】メディエータコンピュータシステムを使用してコンピュータプログラムの正しい実行を確保するシステム及び方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20241113BHJP
   H04L 9/32 20060101ALI20241113BHJP
【FI】
H04L9/08 A
H04L9/32 200Z
【請求項の数】 14
【外国語出願】
(21)【出願番号】P 2023001009
(22)【出願日】2023-01-06
(62)【分割の表示】P 2020524628の分割
【原出願日】2018-10-30
(65)【公開番号】P2023036963
(43)【公開日】2023-03-14
【審査請求日】2023-01-06
(31)【優先権主張番号】1718505.9
(32)【優先日】2017-11-09
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1719998.5
(32)【優先日】2017-11-30
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1720768.9
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1720946.1
(32)【優先日】2017-12-15
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1805948.5
(32)【優先日】2018-04-10
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1806444.4
(32)【優先日】2018-04-20
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コヴァチ,アレグザンドラ
(72)【発明者】
【氏名】マデオ,シモーネ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
【審査官】青木 重徳
(56)【参考文献】
【文献】特表2017-515252(JP,A)
【文献】米国特許出願公開第2017/0091750(US,A1)
【文献】米国特許第07197639(US,B1)
【文献】FLUECKIGER S; ET AL,INHIBITION OF ONCOGENIC MAPK SIGNALING IN MELANOMA TRIGGERS SOX2-DEPENDENT ADAPTIVE 以下備考,EUROPEAN JOURNAL OF CANCER,NL,ELSEVIER,2016年06月09日,VOL:61,PAGE(S):S206,http://dx.doi.org/10.1016/S0959-8049(16)61726-4,DRUG RESISTANCE PROGRAMS
【文献】STEVEN GOLDFEDER; ET AL,ESCROW PROTOCOLS FOR CRYPTOCURRENCIES: HOW TO BUY PHYSICAL GOODS USING BITCOIN,ICIAP: INTERNATIONAL CONFERENCE ON IMAGE ANALYSIS AND PROCESSING, 17TH INTERNATIONAL CONFERENCE,SPRINGER,2017年04月03日,VOL:10322,PAGE(S):1-18,http://dx.doi.org/10.1007/978-3-319-70972-7_18
【文献】MATTEO CAMPANELLI; ET AL,ZERO-KNOWLEDGE CONTINGENT PAYMENTS REVISITED: ATTACKS AND PAYMENTS FOR SERVICES,INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH,2017年06月09日,VOL:20171101:190916,PAGE(S):1-28,http://eprint.iacr.org/2017/566.pdf
【文献】Alexandra Covaci et al.,NECTAR: Non-Interactive Smart Contract Protocol using Blockchain Technology,2018 ACM/IEEE 1st International Workshop on Emerging Trends in Software Engineering for Blockchain,米国,IEEE,2018年05月27日,p. 17-24
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
H04L 9/32
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法であって、
クライアントコンピュータシステムにおいて、
メディエータコンピュータシステムに関連づけられた公開鍵下で秘密値を暗号化するステップと、
前記暗号化された秘密値をワーカコンピュータシステムに提供するステップであり、前記暗号化された秘密値は、前記ワーカコンピュータシステム及び前記メディエータコンピュータシステムにより、第1のプログラムを集合的に実行するために使用可能である、ステップと、
第2のプログラムをブロックチェーンデータ構造で利用可能にさせるステップであり、前記第2のプログラムの実行は入力を有する、ステップと、
前記ワーカコンピュータシステムにおいて、
前記暗号化された秘密値を取得するステップと、
実行のために前記第2のプログラムを取得するステップと、
前記第2のプログラムの実行のための入力値を決定するステップと、
前記入力値に従って前記第2のプログラムを実行して出力及び正しい実行のプルーフを生成するステップと、
前記出力及び前記プルーフをブロックチェーンデータ構造で利用可能にさせるステップと、
前記クライアントコンピュータシステムにおいて、
前記出力及びプルーフが利用可能にされたことを検出するステップと、
前記プルーフに少なくとも部分的に基づいて、前記入力値が有効であると決定するステップと、
前記入力値が有効であるとの決定に応答して、前記秘密値を前記ワーカコンピュータシステムに提供するステップであり、前記ワーカコンピュータシステムは少なくとも前記秘密値を使用して前記第1のプログラムを実行可能である、ステップと、
を含む方法。
【請求項2】
前記クライアントコンピュータシステムにおいて、
前記秘密値に少なくとも部分的に基づいて暗号ハッシュ出力を生成するステップと、
前記暗号化された値及び前記暗号ハッシュ出力が双方とも前記秘密値に少なくとも部分的に基づいて決定されることの証拠を生成するステップと、
前記暗号ハッシュ出力及び前記証拠を前記ワーカコンピュータシステムに提供するステップと、
前記ワーカコンピュータシステムにおいて、
前記証拠を使用して前記暗号化された秘密値及び前記暗号ハッシュ出力が同じ値に少なくとも部分的に基づくかどうかを決定するステップと、
をさらに含む請求項1に記載の方法。
【請求項3】
前記証拠はゼロ知識証明であり、前記ゼロ知識証明の正しさは前記ワーカコンピュータシステムにより計算的に検証可能である、請求項2に記載の方法。
【請求項4】
前記入力値は第1の入力値であり、当該方法は、前記クライアントコンピュータシステムにおいて、前記第1の入力値が誤っているとの決定に応答して、
前記第1の入力値に少なくとも部分的に基づいて第2の入力値を算出するステップと、
前記第2の入力値を前記ワーカコンピュータシステムに提供するステップと、
前記ワーカコンピュータシステムが前記第2の入力値を使用して第3のプログラムを実行したとの決定に応答して、前記秘密値を前記ワーカコンピュータシステムに提供するステップと、
をさらに含む、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
前記第2の入力値を算出することは、ハミング距離を算出することを含む、請求項4に記載の方法。
【請求項6】
前記クライアントコンピュータシステムにおいて、
第2の証拠を取得するステップであり、前記第2の証拠は、前記ワーカコンピュータシステムとデータソースとの間の通信のセットを含み、前記通信のセットは、前記入力値が有効であるかどうかを決定するために使用可能であり、前記第2の証拠は、前記データソースによりデジタル署名される、ステップと、
前記データソースに関連づけられた少なくとも公開鍵を使用して前記第2の証拠の真正性を検証するステップと、
前記通信のセットに少なくとも部分的に基づいて前記入力が有効であるかどうかを決定するステップと、
をさらに含む、請求項1乃至5のうちいずれか1項に記載の方法。
【請求項7】
前記第2のプログラムを前記ブロックチェーンデータ構造で利用可能にさせるステップは、前記クライアントコンピュータシステムにおいて、前記ブロックチェーンデータ構造に対してブロックチェーントランザクションをマイニングさせるステップを含み、前記ブロックチェーントランザクションは、
前記第2のプログラムを決定するために使用可能な情報と、
デジタル資産の動きを妨げるロックスクリプトであり、前記ロックスクリプト及びアンロックスクリプトを集合的に実行することは、前記デジタル資産に対する動きの妨げを解除し、前記ロックスクリプト及び前記アンロックスクリプトを集合的に実行することは、2つのデジタル署名が
当該コンピュータにより実現される方法を実行するコンピューティングエンティティに関連づけられたデジタル署名、
前記ワーカコンピュータシステムに関連づけられたデジタル署名、及び
前記メディエータコンピュータシステムに関連づけられたデジタル署名
を含むデジタル署名のセットのものであることを検証することを含む、ロックスクリプトと、
を含む、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
前記第1のプログラムの実行は、前記ワーカコンピュータシステムにデジタル資産の制御を移転する、請求項1乃至7のうちいずれか1項に記載の方法。
【請求項9】
前記クライアントコンピュータシステムにおいて、
前記ワーカコンピュータシステムが時間閾内に前記第2の入力値を使用して前記第3のプログラムを実行するのに失敗したとの決定に応答して、前記ブロックチェーンデータ構造に対して第4のプログラムを利用可能にさせるステップであり、前記第4のプログラムは、デジタル資産の制御を得るために使用可能である、ステップ
をさらに含む請求項4に記載の方法。
【請求項10】
前記時間閾は、前記第4のプログラムの部分を含むブロックチェーントランザクションが前記ブロックチェーンデータ構造に対してマイニングされ得る最も早い時間を符号化する、請求項9に記載の方法。
【請求項11】
前記クライアントコンピュータシステムにおいて、
デジタル署名を生成するステップと、
アンロックスクリプトに前記デジタル署名を符号化するステップであり、前記アンロックスクリプトは、前記ワーカコンピュータシステムに関連づけられた称されたデジタル署名をさらに符号化し、前記第4のプログラムは、ロックスクリプト及び前記アンロックスクリプトを含み、前記ブロックチェーンデータ構造に関連づけられたブロックチェーンネットワークの1つ以上のノードによる前記第4のプログラムの実行は、前記デジタル署名及び前記称されたデジタル署名が双方とも有効であると決定することを含む、ステップと、
をさらに含む、請求項9又は10に記載の方法。
【請求項12】
前記第1のプログラムは、ロックスクリプト及びアンロックスクリプトを含み、前記アンロックスクリプトは、前記ワーカコンピュータシステムに関連づけられた称された秘密値及び称されたデジタル署名を符号化し、
前記ブロックチェーンデータ構造に関連づけられたブロックチェーンネットワークの1つ以上のノードによる前記第1のプログラムの実行は、前記称された秘密値及び前記称されたデジタル署名が双方とも有効であると決定することを含む、
請求項に記載の方法。
【請求項13】
前記ロックスクリプトは前記暗号ハッシュ出力を含み、前記称された秘密値が有効であると決定することは、
前記称された秘密値を使用して暗号ハッシュアルゴリズムの出力を計算することと、
前記出力と前記暗号ハッシュ出力とが整合すると決定することと、
を含む、請求項12に記載の方法。
【請求項14】
ネットワークであって、クライアントコンピュータシステム及びワーカコンピュータシステムを含み、各システムは、
プロセッサと、
実行可能命令を含むメモリと、を含み、
各プロセッサによる実行の結果として、前記実行可能命令は各システムに請求項1乃至13のうちいずれか1項に記載のコンピュータにより実現される方法を実行させる、ネットワーク。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、分散コンピューティング環境におけるコンピュータプログラムの正しい実行を確保することに関し、より詳細には、第1のコンピューティングエンティティが第2のコンピューティングエンティティにプログラムの実行を委任するところの、プログラムの正しい実行を確保するプロトコルに関する。本発明は、ブロックチェーンネットワークにおける使用に特に適するが、これに限定されない。
【背景技術】
【0002】
本文献において、用語「ブロックチェーン」は、電子的なコンピュータベースの分散台帳のいくつかのタイプのうち任意のものを指し得る。これらには、コンセンサスベースのブロックチェーン及びトランザクションチェーン技術、許可あり(permissioned)及び許可なし(un-permissioned)台帳、共有台帳、及びこれらの変形が含まれる。ブロックチェーン技術の最も広く知られている適用はビットコイン(登録商標)台帳であるが、他のブロックチェーン実装が提案され、開発されている。簡便さ及び例示の目的で、本開示に記載される技術の有用な一用途としてビットコインが参照されることがあるが、ビットコインは、本開示に記載される技術が適用され得る多くの用途のうちの1つに過ぎない。しかしながら、本発明はビットコインブロックチェーンでの使用に限定されず、非商業用途を含む代替的なブロックチェーンの実装及びプロトコルもまた本発明の範囲内に入ることに留意されたい。
【0003】
ブロックチェーンはピアツーピアの電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実装され、同様に、ブロックはトランザクション及び他の情報から構成され得る。いくつかの例において、「ブロックチェーントランザクション」は、データと条件のセットとを含むフィールド値の構造化されたコレクションを符号化する入力メッセージを指し、条件のセットの履行は、フィールドのセットがブロックチェーンデータ構造に書き込まれるための前提条件である。例えば、ビットコインでは、各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。いくつかの実施形態において、「デジタル資産」は、使用する権利に関連づけられたバイナリデータを指す。デジタル資産の例は、ビットコイン、イーサ(ether)、及びライトコイン(Litecoin)を含む。いくつかの実装において、デジタル資産の制御の移転は、デジタル資産の少なくとも一部を第1のエンティティから第2のエンティティに再関連づけすることにより実行できる。ブロックチェーンの各ブロックは前のブロックのハッシュを含み得、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。トランザクションは、その入力及び出力に埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションの出力に如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【0004】
トランザクションがブロックチェーンに書き込まれるためには、それは「立証され(validated)」なければならない。ネットワークノード(マイニングノード)が、ワークを実行して各トランザクションが有効であることを確保し、無効なトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なる有効性の標準を有することができる。ブロックチェーンにおける有効性がコンセンサスベースであるため、トランザクションは、トランザクションが有効であるとノードの過半数が同意した場合、有効と考えられる。ノードにインストールされたソフトウェアクライアントは、部分的には未使用トランザクション出力(unspent transaction output、UTXO)ロック及びアンロックスクリプト(locking and unlocking script)を実行することにより、UTXOを参照するトランザクションに対してこの立証作業を実行する。ロック及びアンロックスクリプトの実行がTRUEの評価であり、適用可能な場合における他の立証条件が満たされる場合、トランザクションはノードにより立証される。立証されたトランザクションは他のネットワークノードに伝搬され、すると、マイニングノードは該トランザクションをブロックチェーンに含めることを選択することができる。ゆえに、トランザクションがブロックチェーンに書き込まれるためには、それは、i)トランザクションを受信した第1のノードにより立証され、トランザクションが立証された場合、ノードはそれをネットワーク内の他のノードに中継する、ii)マイニングノードにより構築された新しいブロックに追加される、iii)マイニングされる、すなわち過去のトランザクションの公開台帳に追加される、がなされなければならない。
【0005】
ブロックチェーン技術は、暗号通貨実装の使用に対して最も広く知られているが、デジタル起業家は、新しいシステムを実現するために、ビットコインが基礎とする暗号セキュリティシステムとブロックチェーンに記憶できるデータとの双方の使用を探求し始めている。ブロックチェーンが暗号通貨の領域に限定されない自動化されたタスク及び処理に使用できる場合、かなり有利であろう。このようなソリューションは、その適用においてより多目的であると同時に、ブロックチェーンの利点(例えば、イベントの永続的な改ざん防止のレコード、分散処理等)を利用することができる。
【0006】
本開示は、1つ以上のブロックチェーンベースのコンピュータプログラムの技術的態様について説明する。ブロックチェーンベースのコンピュータプログラムは、ブロックチェーントランザクションに記録されたマシン読取可能及び実行可能なプログラムでもよい。ブロックチェーンベースのコンピュータプログラムは、入力を処理して結果を生成することができるルールを含んでもよく、これは次いで、これら結果に依存してアクションを実行させることができる。現在の研究の1つの分野は、「スマートコントラクト」の実装のためのブロックチェーンベースのコンピュータプログラムの使用である。自然言語で書かれる従来の契約と異なり、スマートコントラクトは、マシン読取可能な契約又は同意の条件の実行を自動化するように設計されたコンピュータプログラムであり得る。
【0007】
ブロックチェーン関連の関心のある別の分野は、ブロックチェーンを介して実世界のエンティティを表現及び移転するための「トークン」(又は「カラードコイン(coloured coins)」)の使用である。潜在的に機密又は秘密のアイテムは、認識可能な意味又は値を有さないトークンにより表現できる。ゆえに、トークンは、実世界のアイテムがブロックチェーン上で参照されることを可能にする識別子として機能する。
【発明の概要】
【0008】
したがって、これらの態様の1つ以上においてブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。このような改善されたソリューションが次に考案されている。ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法が提供される。
【0009】
本発明によれば、ブロックチェーンネットワークのノードのための、コンピュータにより実現される方法が提供され得る。当該コンピュータにより実現される方法は、メディエータ(mediator)コンピュータシステムに関連づけられた公開鍵下で秘密値を暗号化するステップと、暗号化された秘密値をワーカ(worker)コンピュータシステムに提供するステップであり、暗号化された秘密値は、ワーカコンピュータシステム及びメディエータコンピュータシステムにより、第1のプログラムを集合的に実行するために使用可能である、ステップと、ブロックチェーンデータ構造上で第2のプログラムを利用可能にさせるステップであり、第2のプログラムの実行は入力を有する、ステップと、ブロックチェーンデータ構造が、第2のプログラムの正しい実行のプルーフ(proof of correct execution)と、入力値であり、プルーフを生成するための第2のプログラムの実行は、第2のプログラムへの入力として入力値を使用することに少なくとも部分的に基づく、入力値と、を反映していると決定するステップと、入力値が有効であるとの決定に応答して、秘密値をワーカコンピュータシステムに提供するステップであり、ワーカコンピュータシステムは、少なくとも秘密値を使用して第1のプログラムを実行可能である、ステップと、を含む。
【0010】
好ましくは、当該方法は、秘密値に少なくとも部分的に基づいて暗号ハッシュ出力を生成するステップと、暗号化された値と暗号ハッシュ出力とが双方とも秘密値に少なくとも部分的に基づいて決定されることの証拠(attestation)を生成するステップと、暗号ハッシュ出力及び証拠をワーカコンピュータシステムに提供するステップであり、ワーカコンピュータシステムは、証拠を使用して、暗号化された秘密値と暗号ハッシュ出力とが同じ値に少なくとも部分的に基づくかどうかを決定するよう動作可能である、ステップと、を含んでもよい。
【0011】
証拠は、ゼロ知識証明でもよく、ゼロ知識証明の正しさは、ワーカコンピュータシステムにより計算的に検証可能であり得る。計算的な検証は、完全性及び/又は真正性(authenticity)の保証を提供するための暗号演算の使用を含んでもよい。
【0012】
好ましくは、入力値は第1の入力値でもよく、当該方法は、第1の入力値が誤っているとの決定に応答して、第1の入力値に少なくとも部分的に基づいて第2の入力値を算出するステップと、第2の入力値をワーカコンピュータシステムに提供するステップと、ワーカコンピュータシステムが第2の入力値を使用して第3のプログラムを実行したとの決定に応答して、秘密値をワーカコンピュータシステムに提供するステップと、を含んでもよい。
【0013】
好ましくは、第2の入力値を算出するステップは、重み付きハミング距離を算出するステップを含んでもよい。
【0014】
好ましくは、当該方法は、第2の証拠を取得するステップであり、第2の証拠は、ワーカコンピュータシステムとデータソースとの間の通信のセットを含み、通信のセットは、入力値が有効であるかどうかを決定するために使用可能であり、第2の証拠は、データソースによりデジタル署名される、ステップと、データソースに関連づけられた少なくとも1つの公開鍵を使用して第2の証拠の真正性を検証するステップと、通信のセットに少なくとも部分的に基づいて入力が有効であるかどうかを決定するステップと、を含んでもよい。
【0015】
いくつかの場合、ブロックチェーンデータ構造上で第2のプログラムを利用可能にさせるステップは、ブロックチェーンデータ構造に対してブロックチェーントランザクションをマイニングさせるステップを含み、ブロックチェーントランザクションは、第2のプログラムを決定するために使用可能な情報と、ロックスクリプトとを含む。ロックスクリプトは、デジタル資産の動きを妨げる(encumber)ことができ、ロックスクリプトと対応するロックスクリプトとを集合的に実行することは、デジタル資産に対する動きの妨げ(encumbrance)を解除し、ロックスクリプトと対応するアンロックスクリプトとを集合的に実行することは、少なくとも2つのデジタル署名がデジタル署名のセットのものであることを検証することを含む。デジタル署名のセットは、本明細書に記載のコンピュータにより実現される方法を実行するコンピューティングエンティティに関連づけられた第1のデジタル署名と、ワーカコンピュータシステムに関連づけられた第2のデジタル署名と、メディエータコンピュータシステムに関連づけられた第3のデジタル署名とを含んでもよい。デジタル署名のセットの署名のうち少なくとも過半数の検証は、動きの妨げを解除するためにロックスクリプト及びアンロックスクリプトを集合的に実行することの一部として実行されてもよい。
【0016】
第1のプログラムの実行は、デジタル資産の制御をワーカコンピュータシステムに移転し得る。
【0017】
好ましくは、当該方法は、ワーカコンピュータシステムが時間閾内に第2の入力値を使用して第3のプログラムを実行するのに失敗したとの決定に応答して、第4のプログラムをブロックチェーンデータ構造に対して利用可能にさせるステップであり、第4のプログラムはデジタル資産の制御を得るために使用可能である、ステップ、をさらに含んでもよい。
【0018】
時間閾は、第4のプログラムの一部を含むブロックチェーントランザクションがブロックチェーンデータ構造に対してマイニングされ得る最も早い時間を符号化してもよい。
【0019】
好ましくは、当該方法は、デジタル署名を生成するステップと、アンロックスクリプトにデジタル署名を符号化するステップと、を含んでもよい。アンロックスクリプトは、ワーカコンピュータシステムに関連づけられた称された(purported)デジタル署名をさらに符号化してもよく、第4のアプリケーションは、ロックスクリプト及びアンロックスクリプトを含み、ブロックチェーンデータ構造に関連づけられたブロックチェーンネットワークの1つ以上のノードによる第4のプログラムの実行は、デジタル署名及び称されたデジタル署名が双方とも有効であると決定することを含む。
【0020】
第1のアプリケーションは、ロックスクリプト及びアンロックスクリプトを含んでもよく、アンロックスクリプトは、ワーカコンピュータシステムに関連づけられた称された秘密値及び称されたデジタル署名を符号化する。ブロックチェーンデータ構造に関連づけられたブロックチェーンネットワークの1つ以上のノードによる第1のアプリケーションの実行は、称された秘密値及び称されたデジタル署名が双方とも有効であることを決定することを含んでもよい。
【0021】
ロックスクリプトは、暗号ハッシュ出力を含んでもよい。称された秘密が有効であると決定することは、称された秘密値を使用して暗号ハッシュアルゴリズムの出力を計算し、出力と暗号ハッシュ出力とが整合する(match)と決定することを含んでもよい。
【0022】
さらに、プロセッサと、実行可能命令を含むメモリと、を含むシステムであって、実行可能命令はプロセッサによる実行の結果として、請求される方法のうちいずれかを当該システムに実行させる、システムを提供することが望ましい。
【0023】
さらに、コンピュータシステムの1つ以上のプロセッサによる実行の結果として、請求される方法のうちいずれかをコンピュータシステムに少なくとも実行させる実行可能命令を記憶した非一時的コンピュータ読取可能記憶媒体を提供することが望ましい。
【0024】
追加的又は代替的に、本発明は、改善されたブロックチェーンプログラミングツール又は支援を提供し得る。これは、分散された検証可能な計算を容易又は可能にする改善された、効率的な、最適化された構成を提供し得る。
【図面の簡単な説明】
【0025】
本発明のこれら及び他の態様が、本明細書に記載した実施形態から明らかであり、それらを参照して明らかにされるであろう。次に、本発明の一実施形態が、単なる例として、添付の図面を参照して説明される。
図1】少なくとも1つの実施形態による、プログラムの正しい実行を検証する環境を示す。
図2】種々の実施形態による、プロトコルを実装するために利用され得るコンピューティング環境を示す。
図3】検証可能な計算の実行に適した環境の図を示す。
図4】分散コンピューティング環境においてプログラムの正しい実行を強制するためにプロトコルが実装され得る環境の図を示す。
図5】分散コンピューティング環境においてプログラムの正しい実行を強制するためのブロックチェーンベースのプロトコルに従ったトランザクションレコードの一例を示す。
図6】プロトコルに従ったプログラムの実行を要求する処理の例示図である。
図7】プロトコルに従ったプログラムの正しい実行を検証する処理の例示図である。
図8】プロトコルに従ったプログラムの実行の要求を満たす処理の例示図である。
図9】プロトコルに従った訂正ルーチンを実行する処理の例示図である
図10】プロトコルに従った紛争を調停する処理の例示図である。
図11】本開示の少なくとも1つの実施形態を実施するために使用可能なコンピューティングデバイスを示す。
【発明を実施するための形態】
【0026】
種々の実施形態において、本明細書に記載されるシステム及び方法は、複数のエンティティが分散コンピューティング環境のノードを制御し得る分散コンピューティング環境において、コンピュータプログラムの正しい実行を確保するために利用される。そのような分散環境では、コンピューティングエンティティがタスクの実行を別のエンティティに委任することが困難な可能性があり、少なくともなぜならば、2つのエンティティは、実行エンティティがタスクを実際に実行し、かつタスクを正しく実行したという保証を委任エンティティが提供される、信頼関係を欠いているためである。本開示によるプロトコルは、プログラムの正しい実行の暗号的に検証可能な保証を提供するために利用され得、第1のコンピューティングエンティティがプログラムの実行を第2のコンピューティングエンティティに委任する。したがって、このようなプロトコルの使用は、プログラムが正しく実行されたという暗号的に検証可能な保証を提供しながら、プログラムを実行するためにシステム全体にわたり利用可能なコンピューティングリソースをより効率的に利用することにより、コンピューティングシステム(例えば、分散コンピューティング環境)の効率を改善するために利用され得る。
【0027】
図1は、本明細書に記載されるシステム及び方法がプログラムの正しい実行を強制及び/又は確保するために利用され得る環境を示す。いくつかの実施形態において、第1のコンピュータシステム(例えば、クライアント102)は、プログラム108の実行を第2のコンピュータシステム(例えば、証明者(prover)104)に委任する。証明者104は、プログラムを実行し、(例えば、さらなるコンピュータシステムから受信され得る、入力のための正しい値を使用して)証明者104がプログラムを正しく実行したことの証拠となる(attests)正しい実行のプルーフ110をクライアント102に提供し得る。いくつかの場合、プロトコルに従って、証明者がプログラム108を正しく実行したかどうかを決定するために、第3のコンピュータシステム(例えば、メディエータ106)が利用され得る。本明細書に記載される技術は、分散コンピューティング環境において実施されてもよく、ブロックチェーンネットワークと関連して利用されてもよい。
【0028】
クライアント102は、計算タスクの実行を証明者104に委任するコンピュータシステムを指し得、証明者104は、異なるコンピュータシステムであり得る。証明者104は、一般的に言えば、プログラム108などの任意の適切なフォーマットで符号化され得る計算タスクを実行することができる任意の適切なコンピュータシステムであり得る。クライアント102は、プログラムを実行することができる複数のコンピュータシステムの中から証明者104を選択し得る。証明者104は、クライアント102がコントロールを有さず、一般的に言えば、クライアント102との信頼関係を有するよう求められないコンピュータシステムでもよく、クライアント102は、本明細書に記載のプロトコルの外で、証明者104が特定の方法で動作を実行する(例えば、クライアント102により指定された入力のセットに従ってプログラムを実行する)さらなる保証を何ら必要としない。
【0029】
プログラム108は計算タスクを指し得、図2に関連して説明される手法を使用して生成され得る。プログラム108は、例えば、図2に関連して説明されるような2次プログラムQでもよい。一般的に言えば、プログラム108は、命令のセットに関連して1つ以上の出力を決定するために使用される1つ以上の入力を有し得る。入力及び/又は出力は、入力及び/又は出力が正しい値を有するとの計算的に検証可能な証拠である、証明者104により生成される証拠である正しい実行のプルーフ110を生成するために利用されてもよい。一実施形態において、証拠はゼロ知識証明である。
【0030】
メディエータ106は、クライアント102及び/又は証明者104との信頼関係を有し及び/又は確立するコンピュータシステムであり得る。この文脈において、信頼関係は、メディエータがクライアント102及び/又は証明者104により、クライアント102と証明者104との間に生じ得る紛争を調停する適切な構成要素であると決定されることを指し得る。例えば、信頼関係は、クライアント又は証明者のうちいずれか1つと協同して、1つ以上の訂正プログラムを実行する能力をメディエータに付与する意思を意味してもよい。
【0031】
いくつかの実施形態において、プロトコルは、ブロックチェーントランザクションを通じてプログラムの実行及び立証を可能にする。本明細書でさらに詳細に説明されるように、ゼロ知識プロトコルは、これらに限られないが作成段階、計算段階、及び検証段階を含む段階のセットを有し得る。作成段階において、ゼロ知識証明の生成及び検証に使用可能な公開パラメータの計算が実行される。実行段階において、プログラムが1つ以上の入力に基づいて実行され得、1つ以上の入力は、信頼された機関、ウェブサイトなどの、ブロックチェーンの外部のソースから得られるデータを含んでもよい。証明者は、プログラムの実行の一部として外部のデータソースからデータを取得してもよい。検証段階において、入力は、ゼロ知識証明検証に従って実行される検証関数のパラメータのうち1つ以上を表し得る。いくつかの場合、プログラムを実行するために使用される入力が正しいことを確保するプロトコルを有することが望ましい。換言すれば、プログラムを実行するときに正しく挙動し、かつ正確な入力を提供するよう証明者を制約することが望ましい場合がある。
【0032】
図2は、種々の実施形態による、プロトコルを実装するために利用され得るコンピューティング環境200を示す。プロトコルは、ブロックチェーン技術を使用してプルーフオブコレクトネス(proof-of-correctness)を記憶し、「構築による正しさ(correct-by-construction)」の暗号アプローチをスマートコントラクトと組み合わせるように実装されてもよい。一実施形態において、パブリックな検証可能な計算スキームは、3つの段階、すなわちセットアップ段階、計算段階、及び検証段階を含む。
【0033】
セットアップ段階は、計算タスクの実行をアウトソーシングする処理の一部として実行され得る。クライアントは、以下で言及されるように、計算タスクの実行を証明者に委任する顧客又はクライアントコンピュータシステムなどのエンティティを指し得、証明者は、異なるコンピュータシステムであり得る。クライアントは、一般的に言えば、これらに限られないが限られたコンピューティングリソース、コンピューティングリソースの欠如、タスクを実行するためにクライアントコンピュータシステムを利用することに関連づけられた財務コスト、タスクを実行するためにクライアントコンピュータシステムを利用することに関連づけられたエネルギーコスト(例えば、電力のためにバッテリに依存するモバイルデバイス又はラップトップは、証明者を利用して計算集約的タスクを実行し、それにより、電力を節約し、バッテリ駆動型デバイスの使用を延長し得る)等を含む様々な理由で、計算タスクの実行を委任し得る。
【0034】
一実施形態において、セットアップ段階は、クライアント、顧客、組織の従業員、又は他の任意の適切なエンティティが正確なセマンティクスを有するフォーマルな言語でコントラクトを書くことを含む。コントラクトは、C又はJava(登録商標)などの高水準プログラミング言語で書かれてもよい。一般的に言えば、コントラクトは、コンピュータシステムにより操作できるフォーマットに変換されるか又は変換可能な任意の言語又はシンタックスで表され得る。一実施形態において、限られた目的でドメイン固有言語が型の安全性を提供してもよく、制限された表現度が利用されてもよい。生成されるソースコードは、コントラクトの正確な記述であり得る。
【0035】
コンパイラ202は、コンピュータシステムの1つ以上のプロセッサにより実行された場合にシステムにソースコード206を入力として取らせ、回路を生成する実行可能コードを含む、任意のハードウェア、ソフトウェア、又はこれらの組み合わせでもよい。コンパイラ202は、バイナリコードなどのマシン読取可能フォーマットにコンパイルされた命令に基づいて命令を実行又は実施するコンピュータプログラムを指し得る。コンパイラ202が図示されているが、インタプリタ、アセンブラ、及び他の適切なソフトウェア及び/又はハードウェアコンポーネントを利用してソースコードを回路に変換してもよいことに留意されたい。一実施形態において、回路は、体(field)Fからの値を運び、かつ論理及び/又は算術ゲートに接続するワイヤを備える算術回路である。一実施形態において、回路Cは、元の回路Cの完全な記述を提供する多項式のセットを含む二次プログラムQ208を生成するためにシステムにより使用される。
【0036】
一実施形態において、コンパイラ202は、これらに限られないがプリプロセッサディレクティブ、スタティックイニシャライザ、グローバル及びローカル関数、ブロックスコープの変数、配列、データ構造、ポインタ、関数呼び出し、関数演算子(例えば、ファンクタ)、条件及びループ、並びに算術及びビット単位ブール演算子を含む、C又はJavaなどのプログラミング言語の実質的なサブセットを認識することができる。一実施形態において、コンパイラ202は、プログラミング言語の標準によるコマンドのセット全体はサポートしない(これは、いくつかの場合、再帰的アルゴリズムを禁止することのように、特定のタイプのアルゴリズムがスマートコントラクトで実行されることを防止することが意図され得る)。一実施形態において、コンパイラは、ソースコードの表現を算術ゲート言語に拡張して算術回路を生成する。回路の実装は、過去にCampanelli, M.ら(2017)により「ZERO-Knowledge Contingent Payments Revisited: Attacks and Payments for Services」において、並びにTillich, S.及びSmart, Bにより「Circuits of Basic Functions Suitable For MPC and FHE」において考えられている。算術回路は、コンパイラ202又は他の任意の適切なハードウェア、ソフトウェア、又はこれらの組み合わせ(例えば、図2に示されていないソフトウェアモジュール)により、二次算術問題(Quadratic Arithmetic Problem、QAP)を構築するために利用されてもよい。二次プログラム(quadratic program)は、一実施形態によれば、クライアント(例えば、鍵生成及び検証)及び証明者(例えば、計算及びプルーフ生成)のための暗号ルーチンのセットへコンパイルされる。
【0037】
一実施形態において、鍵生成器(generator)204は、コンピュータシステムの1つ以上のプロセッサにより実行された場合にシステムに二次プログラムを形成する評価鍵(evaluation key)及び検証鍵(verification key)を生成させる実行可能コードを含むハードウェア、ソフトウェア、又はこれらの組み合わせである。計算を二次プログラムとして符号化する手法は、Gennaro, R.ら(2013)による「Quadratic Span Programs and Succinct NIZKs without PCPs」において考えられている。一実施形態において、二次算術問題(QAP)Qは、体F上で回路Cを符号化し、m+1個の多項式のセット、すなわち、
V={v(x)},W={w(x)},Y={y(x)}
を含み、0≦k≦mである。ターゲット多項式t(x)がさらに定義される。Fのn個の要素を入力としてとりn’個の要素を出力する関数fを所与とし、N=n+n'では、Qは、{c,...,c}∈Fがfの入力及び出力の群(group)の有効な割り当てである場合、及びt(x)がp(x)を割り切る、すなわち、
【数1】
であるような係数のリスト{cN+1,...,c}が存在する場合、fを計算する。したがって、一実施形態において、h(x)・t(x)=p(x)であるような何らかの多項式h(x)が存在しなければならない。Qのサイズはmであり、その次数(degree)はt(x)の次数である。
【0038】
一実施形態において、算術回路のためのQAPの構築は、回路内の各乗算ゲートgについて任意の根r∈Fを選び、ターゲット多項式を
【数2】
であるように定義することを含む。一実施形態において、インデックスk∈{1...m}が回路の各入力に、及び乗算ゲートからの各出力に関連づけられる。Vの多項式は各ゲートへの左入力を符号化し、Wは各ゲートへの右入力を符号化し、Yは出力を符号化する。例えば、k番目のワイヤがゲートgへの左入力である場合、v(r)=1であり、そうでない場合、v(r)=0である。したがって、特定のゲートgとその根rについて、前の式は以下のように簡略化できる。
【数3】
【0039】
ゲートの出力値は、その入力の積に等しい。可除性(divisibility)チェックは、p(r)=0であるように、t(x)の各ゲートg及び根rごとに1つずつ、deg(t(x))の別個のチェックに分解する。加算ゲートと定数乗算(multiplication-by-constant)ゲートは、QAPのサイズ又は次数に寄与しない。
【0040】
一実施形態において、QAPは体Fp上で定義され、pは大きい素数である。一実施形態において、Fp上のQAPは、pを法とする加算及び乗算の観点で表すことができる任意の関数を効率的に計算することが望ましい。算術スプリットゲートは、[0,2k-1]であることが知られている算術ワイヤa∈Fpを、k個の2進出力ワイヤに翻訳するように設計され得る。したがって、ブール関数は算術ゲートを使用して表せることになる。例えば、NAND(a,b)=1-abである。各々の埋め込みブールゲートは、ただ1つの乗算しかコストがかからない。さらに、スプリットなどの新しいゲートは、スタンドアロンとして定義され、他のゲートと構成されることが可能である。[0,2k-1]であることが知られている入力a∈Fを所与として、スプリットゲートは、Σi-1=aであり各aが0又は1のいずれかであるようなaの2進数字a,...,aを保持するk個のワイヤを出力する。
【0041】
最後、全ての証明者及び検証者(verifier)により使用される公開パラメータが、セットアップ段階の一部としてシステムにより生成される。評価鍵Eと検証鍵Vは、クライアントにより選択された秘密値を使用して導出されることに留意されたい。鍵生成器204は、鍵生成アルゴリズムに関連して二次算術プログラム(QAP)を利用して、評価鍵E210及び検証鍵V212を生成し得る。
【0042】
一実施形態において、計算タスクの実行は、証明者による入力216に対する関数の計算(すなわち、f(x)を評価する処理)を含む。一実施形態において、証明者は、クライアントが計算タスクを委任し得る任意の適切なコンピュータシステムである。入力216は、一実施形態において、証明者に関連づけられた秘密鍵を使用して生成されたデジタル署名などの、証明者のアイデンティティの証拠となる情報を含む。一実施形態において、証明者は、計算タスクを成功裏に完了する見返りにデジタル資産を移転することにクライアントが同意するコンピュータシステムである。クライアントは、一実施形態において、入力x及び評価鍵EKを証明者に提供し、証明者は、出力yを計算するための計算ルーチン(すなわち、y=f(x)であり、入力はxで、関数はfである)に対して評価モジュール214を使用し、評価鍵210を使用してプルーフオブコレクトネス218を生成する。評価モジュールは、一実施形態において、コンピュータシステムの1つ以上のプロセッサにより実行された場合にコンピュータシステムにQAP208の内部回路ワイヤの値を評価させ、QAPの出力yを生成させる命令を含むハードウェア及び/又はソフトウェアである。
【0043】
一実施形態において、二次プログラムの各多項式v(x)∈Fは、双線形群内の要素gvk(s)に写像され(mapped)、sは、クライアントにより選択される秘密値であり、gは、群の生成元であり、Fは、gの離散対数の体ある。一実施形態において、所与の入力に対して、証明者は、回路を評価して、二次プログラムの係数cに対応する出力及び内部回路ワイヤの値を取得する。したがって、証明者は、v(s)=Σk∈{m}・v(s)を評価してgv(s)を求め、w(s)及びy(s)を計算し、h(x)=p(x)/t(x)=Σ・xを計算し、評価鍵の中のh及びgs(i)項を使用してgh(s)を計算することができる。一実施形態において、プルーフオブコレクトネス218は、(gv(s),gw(s),gy(s),gh(s))を含み、検証者は、双線形写像を使用してp(s)=h(s)・t(s)であることをチェックする。一実施形態において、プルーフπは、後の使用のためにブロックチェーンネットワーク222上に記憶され、あるいは複数のパーティにより、これらの各々と別個に対話するよう証明者に要求することなく検証可能である。一実施形態において、プルーフオブコレクトネスの回路記憶の評価は、トランザクションのロックスクリプトにより動きを妨げられたリソース(例えば、デジタル資産)をアンロックするために実行され得る。
【0044】
実施形態において、図2に示される例示的なブロックチェーンネットワーク222は、ピアツーピア分散電子デバイスとして実現されたブロックチェーンノードを含み、該電子デバイスは各々、ノードのオペレータ間で少なくとも部分的に同意されたブロックチェーンプロトコルに従う動作を実行するソフトウェア及び/又はハードウェアのインスタンスを実行する。いくつかの例において、「ノード」は、ブロックチェーンネットワーク間で分散されたピアツーピア電子デバイスを指す。ブロックチェーンプロトコルの一例がビットコインプロトコルである。
【0045】
一実施形態において、ノードのうち少なくともいくつかは、暗号問題を解くなどの複雑な計算を実行するマイニングノードである。暗号問題を解くマイニングノードは、ブロックチェーンに対する新しいブロックを作成し、この新しいブロックをノードのうち他のノードにブロードキャストする。ノードのうち他のノードは、マイニングノードのワーク(work)を検証し、検証すると、ブロックをブロックチェーンに(例えば、それをブロックチェーンの分散台帳に追加することにより)受け入れる。いくつかの例において、ブロックはトランザクションのグループであり、しばしば、タイムスタンプと前のブロックの「フィンガープリント」(例えばハッシュ)でマークされる。このようにして、各ブロックは前のブロックにリンクされた状態になり得、ブロックチェーン内のブロックをリンクする「チェーン」を作成する。実施形態では、有効なブロックは、ノードの合意によりブロックチェーンに追加される。また、いくつかの例において、ブロックチェーンは、立証されたブロックのリストを含む。
【0046】
一実施形態において、プルーフπはブロックチェーンネットワーク222にブロードキャストされ、プルーフを検証するために検証者220が使用される。一実施形態において、検証者220は、ブロックチェーン上のノードなどの任意の適切なコンピューティングエンティティである。さらに、いくつかの場合、評価鍵E及び検証鍵Vを生成する同じコンピューティングエンティティがプルーフも検証することに留意されたい。一実施形態において、ブロックチェーンのノードは、検証鍵V及びプルーフπを使用してデジタル資産の制御を移転するトランザクションを立証し、ゆえに、検証が成功した場合にコントラクトを立証することができる。プロトコルの1つの要件は、証明者が、検証鍵Vを知っているときでも誤ったプルーフを提供できないことである。ゆえに、このプロトコルでは、共通参照文字列(common reference string、CRS)は、クライアントにより、又は少なくとも評価鍵E及び検証鍵Vを公開する信頼された第三者により生成される。一実施形態において、公開された検証鍵Vは、計算を検証するために任意のコンピューティングエンティティにより使用できる。
【0047】
一般的に言えば、クライアントは、相手方(counterparty)又は証明者に支払うためにP2PK(pay‐to‐public‐key)及びP2PKH(pay‐to‐public‐key‐hash)などの標準トランザクション(例えば、ビットコインベースのブロックチェーンネットワークで定義された標準トランザクション)を使用することができる。例えば、一実施形態において、クライアントは、P2PKロックスクリプトを算術回路に変換し、回路から導出されたパズルを含むトランザクションをブロードキャストする。相手方又は証明者は、回路を受信し、適切な入力(例えば、クライアントと証明者との間で共有された秘密、又は証明者の秘密鍵を使用して生成されたデジタル署名などの、証明者のアイデンティティの証拠となる情報)を提供し、回路を実行してプルーフオブコレクトネスπを生成する。一実施形態において、プルーフはデジタル資産をアンロックするために使用され、さらに、相手方又は証明者を識別する情報(例えば、相手方又は証明者に関連づけられた公開鍵及び/又はデジタル署名)が難読化されていないフォーマットでブロックチェーンに記録されない場合があり得る。
【0048】
一実施形態において、検証鍵及び対応するプルーフは、上記及び/又は以下に記載される手法に従って生成される。したがって、検証者は検証鍵V及び証明π、すなわち、
【数4】
を与えられ、それにより、検証者は複数の楕円曲線乗算(例えば、公開入力変数ごとに1つずつ)及び5つのペアチェックを計算し、そのうち1つはさらなるペアリング乗算を含む。
【0049】
検証鍵V、プルーフπ、及び(a,a,...,a)を所与として、t(x)がp(x)を割り切り、ゆえに(xN+1,...,x)=f(x,...,x)であることを検証するために、検証者は以下のように進める。最初、それは3つのα項を全てチェックする。
【数5】
ここで、
【数6】
である。次いで、検証者は項βをチェックする。
【数7】
最後、検証者は可除性要件をチェックする。
【数8】
ここで、
【数9】
である。
【0050】
したがって、上述のセクション及び本開示に記載される例からの表記を考えると、検証は、一実施形態によれば以下の要素のペアチェックのセットを含む。
【数10】
【0051】
図3は、検証可能な計算の実行を協調させる図300を示す。クライアント302、証明者304、及び検証者306は、ブロックチェーンネットワークのノードであり得る。クライアント302は、任意の適切なコンピュータシステムであってもよく、コンピュータシステムの1つ以上のプロセッサにより実行された場合にコンピュータシステムにスマートコントラクト308を受け取らせる実行可能コードを含んでもよい。一実施形態において、スマートコントラクト308は、C、C++、又はJavaなどのソースコードとして高水準プログラミング言語で符号化される。一実施形態において、コンパイラ、インタプリタ、及び/又はアセンブラなどのソフトウェアを利用して、スマートコントラクト308を算術回路310に変形してもよく、算術回路310は、体
【数11】
からの値を運び、かつ加算及び乗算ゲートに接続する「ワイヤ」からなる。算術回路は、物理ワイヤにより接続された一連の物理ゲート(例えば、7400シリーズのゲート、フリップフロップ、バッファ、デコーダ、マルチプレクサ等のトランジスタトランジスタ論理(TTL)集積回路を使用する)を含む物理回路により実装できる論理回路を指し得ることに留意されたい。図3の文脈及び他の場所で、スマートコントラクト308の実行が説明されているが、スマートコントラクトの使用は、算術回路に変形可能なソースコードの1つの非限定的な例に過ぎない。一実施形態において、クライアント302は(例えば、単独で、又は他のエンティティと関連して)、動作のセットにより定義されたタスクを実行するソースコードを決定し、タスクの実行は証明者304に委任される。一般的に言えば、検証者306は、証明者304により生成されたプルーフオブコレクトネスの有効性を検証することなどにより、証明者304がタスクを正しく実行したと決定することに関連づけられたタスクを実行し得る。
【0052】
一実施形態において、クライアント302は証明者304に算術回路310を提供し、証明者304は回路への入力312を取得する。入力データのソースは、ブロックチェーン上に記憶されたデータでもよく、あるいは算術回路310に指定された特定のデータフィードとの対話の結果として外部から取得されてもよい。入力データは、ローカルネットワーク、内部ネットワーク、インターネットなどのパブリックネットワーク、ワイドエリアネットワーク、無線ネットワーク、モバイルネットワーク、衛星ネットワーク、複数のネットワークノードを有する分散コンピューティングシステムなどのネットワーク318を介して、データプロバイダ320及び/又は信頼されたエンティティ322などのデータフィードから取得されてもよい。いくつかの場合、入力312は、実世界の状態及びイベントに関するデータなどのデータでもよい。回路310は、元の回路の完全な記述を提供する多項式のセットを含む二次プログラムQを生成するために使用され得る。いずれの場合も、証明者304は、入力312に対して回路C又は2次プログラムQを実行して、1つ以上の出力された中間出力及び1つの最終出力を生成し得る。いくつかの実施形態において、証明者は、入力ワイヤに割り当てられた値がxのものであり、中間値がC内の各ゲートの正しい演算に対応し、かつ出力ワイヤに割り当てられた値がyであるような、回路ワイヤへの値の割り当てである{C,x,y}の有効なトランスクリプトを出力として取得することが期待される。主張された出力が正しくない(すなわち、y≠P(x)である)場合、{C,x,y}の有効なトランスクリプトは存在しない。一実施形態において、証明者は、回路ワイヤの値のサブセットを提供することが期待され、回路ワイヤの値の選択されたサブセットは、証明者に先験的には(a priori)知られていない。
【0053】
一実施形態において、証明者304は、以下の方法でデータプロバイダ320から外部データを取得する。証明者304及びデータプロバイダ320が、暗号で保護された通信セッションを確立する。証明者304が、暗号で保護された通信セッションを介して要求を行う。データプロバイダが、要求に応答してデータを提供する。証明者がデータを受信し、データの受信に応答して、パーティ(parties)間の通信の証拠を要求する。データプロバイダが、暗号で保護された通信セッション中の証明者とデータプロバイダとの間の暗号的に検証可能なプルーフオブコミュニケーション(proof-of-communications)πCommunicationsを計算し、データプロバイダの秘密鍵で証拠にデジタル署名する。証明者が、プルーフオブコミュニケーションを受信する。一般的に言えば、プルーフオブコミュニケーションは、クライアントとサーバとの間で(例えば、証明者304とデータプロバイダ320との間で)1つ以上の通信が生じたことの暗号的に検証可能な証拠である。一実施形態において、証拠は、クライアントとサーバとの間の通信の内容を検証するために使用できるが、いくつかの場合、通信の一部が、編集された情報を情報の難読化(例えば、暗号化又はハッシュされたフォーマットの情報)で置き換えることなどにより編集され(例えば、その開示が法的制限の対象である情報)、あるいは所定のデフォルト値で置き換えられる場合があることに留意されたい。一実施形態において、証拠は、マークル木のルート値に少なくとも部分的に基づいて決定される。一実施形態において、証拠(例えば、プルーフオブコミュニケーション)は、データプロバイダ320にとってアクセス可能な暗号秘密鍵を使用してデジタル署名される。認証局(certificate authority)などのエンティティが、暗号公開鍵が上記秘密鍵に対応することを証明するデジタル証明書を発行してもよい。本開示の範囲において、プルーフオブコミュニケーションは表記πCommunicationsを使用して一般に参照されるが、正しい実行のプルーフはπProver、又はより簡潔にはπとして参照され得ることに留意されたい。データプロバイダ320からデータを取得するための、及び/又はデータプロバイダ320から取得されたデータの完全性及び/又は真正性を検証するための手法は、英国特許出願第1720946.1号に記載の手法に従って実行されてもよい。
【0054】
一実施形態において、信頼されたエンティティ322又は信頼された機関は、(例えば、現在又は将来に)入力データへのアクセスを有することが期待されるコンピューティングシステムなどのエンティティであり得る。データフィードの公開鍵は、アンロックスクリプト内の署名及びメッセージを固定値でなく鍵との数学的関係を有するように制約するロックスクリプトに埋め込むことができる。このようにして、ロックは、データのいかなる修正も検出され、緩和及び/又は無効化などの是正措置が取られ得るように構成される。未決定のデータが、デジタル資産をロックするために使用されてもよく、ロックスクリプトが構成されたときにロックノードにまだ知られていないデータであり得る。このデータは、まだ確立されていないデータ(例えば、将来作成されることが期待されるがまだ作成されていないデータ)、又は別のノードに知られているがロックノードにはまだ利用可能ではないデータでもよい。しかしながら、データは、信頼されたエンティティ322から(現在又は将来に)利用可能であることが期待されるデータである。ロックスクリプトは、決定されたデータソース(例えば、信頼されたエンティティ322)のための公開鍵を含み、ロックスクリプトを実行する立証ノードに、a)決定されたデータソースのための公開鍵に基づいて、及びアンロックスクリプトで定義されたデータに基づいて、修正された公開鍵を生成すること、及びb)修正された公開鍵に基づいてアンロックスクリプト内の署名を評価することにより、ロックスクリプトで提供されるデータのソースを検証させる命令を含み得る。本明細書に記載される種々の手法に従う信頼されたエンティティ322を利用する手法は、英国特許出願第1705749.8号に関連して記載されるものに従ってもよい。
【0055】
実施形態において、出力y、内部回路ワイヤの値(又はそのサブセット)、及び評価鍵Eは、プルーフオブコレクトネス316を生成するために使用される。プルーフπは、ブロックチェーン上に記憶され、複数のパーティと別個に対話するよう証明者304に要求することなく複数のパーティにより検証されることが可能である。このようにして、検証者306は、公開検証鍵V及びプルーフπを使用してブロードキャストされたトランザクションを立証し、それによりコントラクトを立証することができる。いくつかの場合、クライアント302は、検証が失敗した場合、ブロードキャストされたトランザクションにより動きを妨げられたデジタル資産を回収してもよい。いくつかの場合、検証者306及びクライアント302は、同じコンピュータシステムである。
【0056】
一実施形態において、図4は、プログラムの実行を安全化するプロトコルの図400を示し、プログラム(例えば、スマートコントラクト)の入力データが立証される。一実施形態において、プロトコルは、プログラムの誤った実行により引き起こされる潜在的な損害(damage)の自動的な補償(compensation)を提供する。クライアント402、証明者404、及びメディエータ406は、本開示の他の箇所に記載されているものに従ってもよい。
【0057】
他の場所で論じられているように、図4に示されるクライアント402などのクライアントは、エンティティにより制御されるコンピュータシステムを指し得、クライアントコンピュータシステム及び/又はクライアントエンティティは、コントラクトに対する当事者(party)である。例えば、クライアント402は、ビットコインなどのデジタル資産と交換でトークンを購入する注文を出すエンティティに関連づけられてもよく、該デジタル資産は、トークンの発行者又は所有者に移転される。トークンは、スマートコントラクトでもよい。
【0058】
証明者404は、他の箇所で説明されているように、ネットワークを監視して、スマートコントラクトなどのプログラムを埋め込み又は参照するトランザクションを見つけるコンピュータシステムであり得る。例えば、証明者404は、ブロックチェーンネットワークのノードでもよい。証明者は、ワーカ又はワーカコンピュータシステムとも呼ばれ得る。
【0059】
メディエータ406は、クライアント402及び/又は証明者404との信頼関係を有し及び/又は確立するメディエータコンピュータシステムであり得る。この文脈において、信頼関係は、メディエータがクライアント402及び/又は証明者404により、クライアント402と証明者404との間に生じ得る紛争(disputes)を調停する(mediate)ための適切な構成要素であると決定されることを指し得る。例えば、信頼関係は、クライアント又は証明者のうちいずれか1つと協同して、スマートコントラクトの実行に関連づけられたデジタル資産をアンロックする能力をメディエータに付与する意思を意味してもよい。例えば、メディエータは、プログラム(例えば、スマートコントラクト)の誤った実行から生じる可能性のある損害の自動的な補償を提供するために使用されてもよい。
【0060】
クライアント402は、ランダム又は疑似ランダムに生成され得る秘密値を決定することができる。秘密値は、証明者404により投稿された(posted)保証金預託(security deposit)が返却されることを許容できるとクライアント402が決定するまで、証明者404に平文で提供されるべきではない値を指し得る。いくつかの場合、保証金預託は、証明者404がプログラムの正しい実行に関するプロトコルに従うためのインセンティブとして機能することに留意されたい。証明者404は、プロトコルが守られない場合に、保証金預託トランザクションにより動きを妨げられた資産の制御を失うリスクを負う。したがって、クライアント402は、証明者404がプロトコルに従って証明者の責任の全てを果たしたとクライアント402が決定したことに応答して、証明者404に秘密値を明らかにする場合があり得る。
【0061】
秘密値を決定した後、クライアント402は秘密値を暗号化し、それにより、暗号化された秘密を生成することができる。秘密値は、暗号文を生成するために、メディエータ406に関連づけられた公開鍵を使用して暗号化されてもよい。一実施形態において、メディエータ406は、クライアント402及び証明者404により共同で選択される。一実施形態において、メディエータ406は、図1に関連して説明したブロックチェーンネットワークのノードである。一実施形態において、秘密値は、クライアント402及びメディエータ406の双方に知られている対称鍵下で暗号化される。クライアント402は、SHA‐256暗号ハッシュアルゴリズムなどの暗号ハッシュアルゴリズムへの入力として秘密値を使用してハッシュ出力を生成計算することができる。さらに、クライアント402は、暗号文及びハッシュ出力が双方とも同じ秘密値を符号化することの証拠を生成してもよい。一実施形態において、証拠はゼロ知識証明である。クライアント402は、プロトコルの一部として暗号文、ハッシュ出力、及び証拠を証明者404に送信することができる。
【0062】
証明者404は、保証金預託トランザクションをブロックチェーンネットワークに投稿することができ、保証金預託トランザクションは、証明者404のデジタル資産の動きを妨げ、証明者404がプロトコルに従って挙動することを確保するために使用される。証明者404がプロトコルに従わない場合、証明者404は、保証金預託トランザクションにより動きを妨げられた資産を喪失するリスクを負う。一実施形態において、保証金預託トランザクションは、証明者404により作成され、値Dのビットコインの前のトランザクションを引き換え(redeems)、2つの方法で引き換えられ得る。第1に、証明者404の秘密値及びデジタル署名を公開する(publishing)ことによってであり(預託回復(recover deposit)トランザクションと呼ばれる)、あるいは第2に、クライアント402及び証明者404の双方による、同じトランザクションに対するデジタル署名の生成によってである(補償トランザクションと呼ばれる)。保証金預託トランザクションは、証明者404に属するDのビットコイン(又は、他の適切なデジタル資産)のUTXOを有する、前のトランザクションを参照することができる。保証金預託トランザクションは、証明者404のデジタル署名などの1つ以上の入力を含んでもよい。保証金トランザクションにより動きを妨げられるデジタル資産のタイプ及び/又は額は、クライアント402及び証明者404により相互に同意されてもよく、あるいはクライアント402により指定されてもよく、誤った入力データを使用したプログラムの実行により引き起こされ得る最大の損害に少なくとも部分的に基づいて選択されてもよい。
【0063】
一実施形態において、クライアント402と相手方は、プログラム(例えば、スマートコントラクト)の実行に対するタームに同意する。相手方は、出力の1つがプログラム(例えば、スマートコントラクトスクリプト)によりロックされるロックトランザクションを作成することができ、それをクライアント402に送信する。相手方は、プログラム(例えば、スマートコントラクト)の発行者と呼ばれることもある。この時点では、入力の値がロックトランザクションの出力の値に等しくないため、ロックトランザクションはまだ有効でないことに留意されたい。クライアント402がロックトランザクションを受信すると、クライアント402は、ロックトランザクションに入力を追加し、同意されたデジタル資産、及びさらにプログラム(例えば、スマートコントラクト)の実行のために証明者404に支払われるべき手数料、並びに証明者404への手数料の値と以下の3つの署名すなわちクライアント402からの署名、証明者404からの署名、及びメディエータ406からの署名のうち2つが提供されたときに手数料に対する動きの妨げを解除するマルチ署名アンロックスクリプトとを有する出力を発行者に移転するために、クライアント402により制御されるUTXOをアンロックする。クライアント402は、証明者404が保証金預託トランザクションを投稿したことの検出に応答して、ロックトランザクションをブロックチェーンネットワークにブロードキャストすることができる。
【0064】
証明者404は、外部データを収集し、コントラクト実行に必要なゼロ知識証明を計算することができる。外部データを収集する手法は、データソースとの通信を公証する(notarizing)ことを含んでもよい。通信の公証に対する一アプローチが、Hajjeh及びM. Badraにより、「TLS Sign」において考えられている。これは、TLSSignOnOffと呼ばれる新しいサブプロトコルを定義しており、クライアント(ゼロ知識プロトコルの文脈で説明されるクライアントとは異なるエンティティであり得る)とサーバは、これらがいつ署名されたデータの送信を開始又は停止するかをピアに通知する。停止メッセージの後、サーバは、会話のハッシュを収集し、それに署名する。暗号で保護された通信セッションのレコードデータを公証するための種々の他のアプローチ(例えば、セッションのレコードを保存し、記録された会話の真正性及び/又は完全性の暗号的に検証可能なプルーフを用いて会話に署名すること)が使用可能であり、例えば、R. Housley及びM. Brownの「Transport Layer Security (TLS) Evidence Extensions」により、及びH. Ritzdorf、K. Wust、A. Gervais、G. Felley、及びS. Capkunの「TLS-N: Non-repudiation over TLS Enabling Ubiquitous Content Signing for Disintermediation」により記載される手法などであり、これらは、クライアントが要求を行ったときに開始するエビデンスウィンドウを定義しており、当事者のうち1つがエビデンスウィンドウを閉じたとき、メッセージのハッシュとエビデンスの生成のタイムスタンプがサーバにより署名され、任意で機密レコードが秘匿される。外部データを収集する手法は、外部データの収集(Gathering external data)に記載されたものに従ってもよく、英国特許出願第1705749.8号に関連して信頼されたデータソースを利用してもよい。証明者404は、アンロックトランザクションをブロックチェーンネットワークにブロードキャストすることができる。
【0065】
証明者404がアンロックトランザクションをブロードキャストした後、検証者コンピュータシステムが、検証処理を実行して、正しい実行のプルーフが有効かどうかを決定することができる。いくつかの実施形態において、検証者は、クライアント402とは異なるがそのような必要はないコンピューティングエンティティであり、クライアントが検証処理を実行してもよい。一実施形態において、検証処理は、正しい実行のプルーフの有効性(例えば、出力が回路への1つ以上の入力に少なくとも部分的に基づいて回路から生成されたこと)を検証することと、さらに、証明者404による回路へのデータ入力が正しい入力であったことを検証することとの双方を含む。例えば、検証は、外部データを提供する信頼されたデータソースからの公証された会話(例えば、当事者が遅延の保険をかけてあるフライト情報、作物保険に関して物価指数の代わりに天候のデータフィードを使用する金融デリバティブ契約のための天候データ)に基づいて、プログラムへの入力の値が期待された値であるかどうかをチェックすることを含んでもよい。
【0066】
クライアント402(又は、より一般的には検証処理を実行する任意の適切なシステム)が、入力データが正しくないと決定した場合、証明者404は、正しい入力値に基づいて生成された第1の出力と、アンロックトランザクションにおいて証明者404によりブロードキャストされた誤った入力値に基づいて生成された第2の出力との間の差を反映する損害dを計算することができる。例えば、スマートコントラクト(例えば、プログラム)が、当事者に特定のフライトの遅延の保険をかけてもよく、プログラムの実行が、特定の日の特定の商用フライトのフライト情報などの外部データを使用して、特定のフライトが遅延したかどうかを決定することを含んでもよい。フライトが遅延した場合、プログラムの当事者は、資産の移転を受けることができる(例えば、遅延に対する旅行保険を提供するスマートコントラクト)。種々の拡張、修正、及び代替的な実施形態もまた、本明細書において考えられる。例えば、資産の移転は、遅延が特定の理由によること(例えば、天候関連の遅延/取消)、遅延が少なくとも一定の期間であるという要件(例えば、3時間を超える遅延のみが保険をかけられる)、及び遅延の期間に依存して変わる移転(例えば、より長い遅延はより大きい金額の保険をかけられる)などの、さらなる基準に少なくとも部分的に基づいてもよい。第2の例として、プログラムへの入力が通貨間の為替レートに対応する場合、損害dは、正しい通貨為替レート(例えば、信頼されたソースにより公証された通信セッション内に符号化されたレートに基づく)と証明者404がプログラムを実行するために使用した通貨為替レートとに基づいて、クライアント402が受け取るべき金額の差を測定することができる。一実施形態において、証明者404は、損害dの計算を、図4に示される証明者404とは異なる別のワーカなどの、別のコンピュータシステムに委任する。いくつかの場合、システムが、証明者404による損害の計算を要求してもよいことに留意されたい。一実施形態において、損害額のゼロ知識証明を生成して損害額の証拠を提供してもよく、これは異なる回路(例えば、プログラム)の出力に対応し得る。
【0067】
システム(例えば、クライアント402)が損害の値を算出し、あるいはその他の方法で(例えば、別の証明者から算出の結果を受け取ることにより)決定すると、システムは、算出された損害値を証明者404に利用可能にさせることができる。一実施形態において、算出された損害値と、損害値の有効性の証拠となるゼロ知識証明が、損害値及び/又はこのプルーフをブロックチェーンネットワークにブロードキャストすることにより証明者404に利用可能にされ、これは、ブロックチェーンの他のノードが損害値が正しいかどうかを決定することを可能にし得る。一実施形態において、損害値及び/又はプルーフは、ブロックチェーンの外部の証明者404に利用可能にされる。例えば、システムは、任意の適切な方法でメッセージを証明者404に送信することができ、メッセージは損害値及び/又はプルーフを含む。いくつかの実施形態において、システムは、損害値が非ゼロである場合及びその場合に限り、損害を証明者404に提供する。
【0068】
いくつかの実施形態において、証明者404は、損害値を受信し、あるいはその他の方法で取得する。損害値がゼロである場合、証明者404は、損害値が受信されていないのと同じ又は同様の方法で進むことができる。例えば、証明者404は、特定のプログラム(例えば、スマートコントラクト)の実行に関連づけられた損害がゼロであることを示すメッセージを受信し、補償ルーチンが実行される必要がないと決定してもよい。一実施形態において、証明者404は、クライアント402が秘密値を提供するのを待機する。秘密値は、ブロックチェーントランザクションにより動きを妨げられたデジタル資産を引き換えるために使用可能であり得る。例えば、ブロックチェーントランザクションは、ロックスクリプト及びアンロックスクリプトを含み得、これらは、集合的に実行されたときに、正しい秘密値がアンロックスクリプト内に提供されたことを検証し、デジタル資産に対する動きの妨げを解除する。
【0069】
しかしながら、証明者404が非ゼロである損害値を受信した場合、証明者404は、プロトコルに従って1つ以上の動作を実行することができる。一実施形態において、証明者404は、損害値と、損害値に関する対応するゼロ知識証明とを受信する。証明者404は、このプルーフを検証することができる。プルーフが検証された場合、証明者404は、証明者404が受信した損害値の値に同意するか否かについて決定を行うことができる。一実施形態において、証明者404は、損害を算出するプログラムを実行すること、プログラムの実行を別のコンピューティングエンティティに委任すること(例えば、証明者404は、それにより、異なる証明者によるプログラムの実行のためのクライアントになる)などにより、損害値を決定するための任意の適切な動作のセットを実行する。
【0070】
証明者404により決定された損害値が、証明者404に提供された損害値と整合する場合、証明者404は、損害値が正しいと決定し、補償としてクライアント402に対して損害値dに等しい資産の制御の移転をもたらす1つ以上のステップを実行することができる。一実施形態において、証明者404は、クライアント402に関連づけられたアドレスに対する損害値dに等しい資産の制御の移転を含むトランザクションをブロックチェーンネットワークにブロードキャストする。しかしながら、証明者404が損害に対して異なる値を決定した場合(又は、ゼロ知識証明が検証しない場合)、証明者404は、メディエータ406に、会話(conversation)のタイムスタンプ付きトランスクリプトを提供してもよい。メディエータは、トランスクリプトを利用して、クライアント402又は証明者404により算出された損害値が正しいかどうかを決定することができる。
【0071】
証明者404は、種々の時間に、及び種々のエンティティから秘密値を受信することができる。例えば、秘密値は、証明者404がプログラム(例えば、スマートコントラクト)を正しく実行したこと、及びプログラムの出力を生成するために使用された1つ以上の入力がブロックチェーンの外部にあるデータ(例えば、ブロックチェーンネットワークに記憶されたデータのみを使用しては、その正しさ及び/又は値が計算的に検証できないデータ)に基づいて期待値と整合することの正しいワークのプルーフを検証すると、クライアント402により証明者404に提供されてもよい。クライアント402は、損害値dを算出し、デジタル資産の移転をその金額の証明者404からの補償として受け取ると、秘密値を証明者404に提供することができる。証明者404は、クライアント402が証明者404に提供した損害値dが誤っている、損害値d’に等しいデジタル資産の移転がクライアント402に対して行われた、及びこれらの組み合わせであるとメディエータが決定したことに応答して、メディエータ406から秘密値を受信することができる。
【0072】
秘密値を受信すると、証明者404は、保証金預託で動きを妨げられたデジタル資産を回復するためのブロックチェーントランザクションを生成することができる。証明者404は、秘密値及び証明者404のデジタル署名を符号化したアンロックスクリプトを含むブロックチェーントランザクションを生成してもよい。デジタル資産の動きを妨げる対応するロックスクリプトは、秘密値のハッシュをロックスクリプトで符号化された出力値と比較することによりアンロックスクリプトが正しい秘密値を符号化していることを検証し、さらに、証明者404に関連づけられた公開鍵を使用してロックスクリプトのデジタル署名を検証する命令を含むことができる。したがって、ロックスクリプト及びアンロックスクリプトは、実行された場合、保証金預託トランザクションのロックスクリプトにより動きを妨げられたデジタル資産の制御を移転するプログラムを集合的に形成することができる。いくつかの実施形態において、デジタル資産を回復するためのブロックチェーントランザクションは、預託回復トランザクションが期間t内にブロックチェーンネットワークにブロードキャストされ(例えば、マイニングされ)なければならないように、時間制限されてもよい。一実施形態において、この制限は、ロックスクリプト内に符号化される。いくつかの実施形態において、制限は、プログラム的に符号化されないが、時間tの後に異なるトランザクション(例えば、補償トランザクション)がクライアント402のために保証金預託トランザクションにより動きを妨げられたデジタル資産を請求することを可能にすることにより、強制される。
【0073】
例えば、一実施形態において、クライアント402は、プログラム(例えば、スマートコントラクト)を実行するために証明者404により使用された入力値が、(例えば、公証された通信セッションを介して)信頼されたソースから得られた情報に基づいて期待された入力値でないと決定し、算出された損害値dを示すメッセージを証明者404に送信する。証明者404が、少なくともdの補償値に対応するデジタル資産を移転しない場合、クライアント402は、保証金預託のデジタル資産を請求するためのブロックチェーントランザクションを投稿するのに時間tまで待機することができる。補償トランザクションは、クライアント402及び証明者404の双方のデジタル署名を符号化してもよく、補償トランザクションが時間tの前にブロックチェーンネットワークに対してマイニングできないように時間ロックされてもよい。補償トランザクションは、クライアント402が保証金預託トランザクションにより動きを妨げられたデジタル資産を制御することを可能にするアンロックスクリプトを含んでもよい。一実施形態において、補償トランザクションのボディは、通信の開始時に証明者により署名され、これは、プロトコルの開始又は開始前であり得る。
【0074】
図5は、ボブ(Bob)により操作される第1のクライアントコンピュータシステムと、アリス(Alice)により操作される第2のクライアントコンピュータシステムとにより生成されるトランザクションレコードの一例を示す。ボブはトークンの発行者と呼ばれることがあり、アリスはクライアントと呼ばれることがある。図解500は、プログラム(例えば、スマートコントラクト)の実行のためのロックトランザクションの作成を示す。ロックトランザクション502は、スマートコントラクトと引き換えに、ボブによりアクセス可能な暗号通貨ウォレット又はアドレスへのデジタル資産の移転を指示することができる。図示の例において、アリスは、ボブにより制御される秘密鍵に関連づけられた公開鍵のハッシュを指定することにより、pay‐to‐public‐key‐hashを利用する。他の例において、アリスは、pay‐to‐public‐key又はpay‐to‐script‐hashオペコードを利用して、ボブにデジタル資産を移転してもよい。第1のクライアントコンピュータシステムを使用し、ボブは、2つの入力及び2つの出力を有する、提供された契約のためのロックトランザクション502を準備する。図示の例において、ボブは、いくつかのサトシ(Satoshis)の値を有し得る、xの値を有する第1の入力504と、契約のタームを記述したメタデータを含む第1の出力508を生成する。第1の出力508は、ゼロの値(OP_RETURN)を有してもよい。図示の例において、ボブは、値x又はいくつかのサトシを同様に有する第2の入力506と、アリスが移転しなければならないデジタル資産を示すyの値及びpay‐to‐public‐key‐hash(「P2PKH」)を有する第2の出力510を生成する。ロックトランザクション502は、ボブにより操作される第1のクライアントコンピュータシステムから、アリスにより操作される第2のクライアントコンピュータシステムに送信され得る。
【0075】
一実施形態において、ノードのうち少なくともいくつかは、本開示に記載されるようにトランザクションを立証する立証ノードとして動作する。いくつかの例において、トランザクションは、デジタル資産(例えば、ビットコイン数)の所有権のプルーフとデジタル資産の所有権/制御を受け入れ又は移転するための条件とを提供するデータを含む。いくつかの例において、「アンロックトランザクション(unlocking transaction)」とは、前のトランザクションの未使用トランザクション出力(UTXO)により示されるデジタル資産の少なくとも一部を、ブロックチェーンアドレスに関連づけられたエンティティに再関連づける(例えば、所有権又は制御を移転する)ブロックチェーントランザクションを指す。いくつかの例において、「前のトランザクション」は、アンロックトランザクションにより参照されているUTXOを含むブロックチェーントランザクションを指す。いくつかの実施形態において、トランザクションは、所有権/制御が移転され(「アンロックされ」)得る前に満たさなければならない条件を有するトランザクションの動きを妨げる「ロックスクリプト(locking script)」を含む。
【0076】
ロックトランザクション502は、第2のクライアントコンピュータシステムを使用してアリスにより修正される。図5に示される例において、結果として生じる修正されたロックトランザクション512は、3つの入力及び出力を含む。第1の入力514は変更されず、xの値(いくつかのサトシ)を含む。第1の出力520は変更されず、契約のタームを記述したメタデータを保持する。第2の入力516は変更されず、xの値(いくつかのサトシ)を有する。ロックトランザクション502と同様に、第2の出力522は、yの値(アリスが制御を移転しなければならないデジタル資産に対応する)と、P2PKHを保持する。第2のクライアントコンピュータシステムを使用し、アリスは、第3の入力518と第3の出力524を追加する。第3の入力518は、アリスが契約のために制御を移転するデジタル資産とワーカに対する手数料とに対応するy+zの値を有する。第3の出力524は、ワーカに対する手数料に対応するzの値を有する。クライアントが契約実行のためのリソース(例えば、デジタル資産)を、取引当事者(transacting parties)(例えば、クライアントと証明者)の各々により制御される1つの鍵とメディエータにより制御される1つとを有する3つのマルチシグ(multisig)アドレスのうち2つに送るスキームにおいて、マルチパーティ署名(multi-party signature)機能が利用されてもよい。そのようにするために、クライアント(例えば、アリス)は、クライアント、証明者、及びメディエータの秘密鍵のためのマルチシグアドレスを作成する。一実施形態において、ロックトランザクションはタイムロックされ、アリスが時間ウィンドウt後に自身のリソース(例えば、デジタル資産)を回復することを可能にする。
【0077】
メディエータは、図4に関連して上述したメディエータコンピュータシステムでもよい。紛争がある(例えば、アリスが、プログラムの実行において証明者により使用された入力値に同意しない)場合、メディエータは、適宜クライアント又は証明者のいずれかと協同して、資金を引き換えることができる。例えば、クライアントが確立されたプロトコルに従わない場合、メディエータは証明者と協同して、証明者に対して第3の出力(例えば、手数料値z)下で動きを妨げられたデジタル資産の移転をさせる際に協働することができる。反対に、証明者がプロトコルに従わない場合、メディエータはクライアントと協同することができ、なぜならば、3つの署名のうち2つで、エスクローされた(escrowed)資金を引き換えるのに十分だからである。メディエータにパブリックに関連づけられた長続きするアドレスを含めるのではなく、さらなるプライバシーのために、当事者はブラインドアドレス(blinded address)を使用できることに留意されたい。データの正しさについてメディエータを説得するために、当事者は、プルーフオブコミュニケーションを含むトランスクリプトを提示することができる。いくつかの場合、メディエータのためのブラインドアドレスが使用され、スキームを内部に隠す。しかしながら、プロトコルの目標が透明性を提供する(例えば、ブロックチェーンネットワークのノードがトランザクションを検証することを可能にする)ことである場合、非ブラインドアドレスが一実施形態において利用されてもよい。
【0078】
いくつかの場合、プロトコルは安全であり、これは、メディエータがエスクローされた資金を一方的に引き換えることができないことを指し得る。いくつかの場合、プロトコルは楽観的であり、これは、メディエータが自発的に紛争を調停するという仮定を指し得る。いくつかの実施形態において、プロトコルは、取引当事者と並んで預託に対応する値Mを有する第4の入力を供給するようメディエータに要求し、メディエータは、ワーカ手数料の動きを妨げるエスクロートランザクションが引き換えられる場合及びその場合に限り、預託値Mを回復することができる。このようにして、メディエータが紛争の調停を拒絶することによりサービス拒否攻撃を引き起こす可能性は緩和され、なぜならば、メディエータは、ワーカ手数料が引き換えられるまで、預託値を回収する(reclaim)ことができないからである。
【0079】
図6は、本開示に記載されるプロトコルに従った処理のフローチャート600を示す。フローチャートは、図1図4、及び図12など、本開示の他の箇所に記載される実施形態に従って実現されてもよい。処理は、図7に関連して記載される処理を実現するのと同じシステムにより実現されてもよい。処理は、本開示の他の箇所に記載されるクライアントにより、又は任意の他の適切なコンピューティングエンティティにより実現されてもよい。適切なシステム(例えば、図4に関連して説明されるクライアント)は、1つ以上のプロセッサと、実行可能命令を含むメモリとを含み、該実行可能命令は、実行された場合に、1つ以上のプロセッサに図6に関連して説明される処理の少なくとも一部を実行させる。
【0080】
処理の一部として、システムは、適切な証明者及びメディエータを選択する(602)ことができる。一実施形態において、クライアントは、プログラム(例えば、スマートコントラクト)の実行を要求するプログラム実行プラットフォームを通してリクエストを発行する。リクエストは、プログラムの指標(例えば、プログラムの計算の複雑さ又は期待される実行時間、クライアントがプログラムの実行のために制御を移転する意思があるデジタル資産に対応する手数料などに関する情報)を含むことができる。プラットフォームの1つ以上の見込み(prospective)証明者は、該見込み証明者がプログラムを実行する意思があることを示す、要求への応答を提供し得る。一実施形態において、プラットフォームはフィードバックシステムを含み、見込み証明者は、プラットフォームにおける過去の実行に関連づけられた格付け有する。例えば、証明者は、過去のリクエストを正しく満たしたことに対してポジティブな格付けを、過去のリクエストを満たすのに失敗し又は誤って満たしたことに対してネガティブな格付けを受けてもよい。格付けは、見込み証明者がどれほどの頻度で誤った入力データを使用したか、訂正トランザクションをブロードキャストしたか、メディエータにより解決された紛争に関与したかなどの、さらなる情報を含んでもよい。一実施形態において、クライアントは、見込み証明者に関連づけられた格付けに少なくとも部分的に基づいて証明者を選択する(例えば、証明者は、全ての応答した証明者のうち最も高い格付けを有する)。
【0081】
一実施形態において、クライアントは秘密値xを決定する(604)。秘密値は、クライアントが証明者がプログラム(例えば、スマートコントラクト)を実行したと決定し、プログラムが正しく実行されたことを検証するまで、クライアントが証明者に明らかにしない値を指し得る。プログラムの正しい実行を検証することは、プログラムの実行を制御するために正しい入力データが使用されたかどうかを決定することを含んでもよい。
【0082】
システムは、メディエータコンピュータシステムに関連づけられた公開鍵を取得し、メディエータの公開鍵下で秘密値を暗号化し(606)、それにより、暗号化された秘密値EncMediator(x)を生成することができる。システムは、SHA‐256暗号ハッシュアルゴリズムなどの暗号ハッシュアルゴリズムへの入力として秘密値を使用して、出力y=H(x)を生成する(606)ことができる。一般的に言えば、この文脈で説明されるような暗号ハッシュ関数の代わりに、一方向関数などの原像計算困難性(pre-image resistant)関数が利用されてもよい。システムは、暗号化された秘密値EncMediator(x)と出力yとが同じ秘密を符号化することのゼロ知識証明をさらに生成する(608)ことができる。ゼロ知識証明は、共有された値へのアクセスを有さないコンピューティングエンティティにより計算的に検証可能であり得る(例えば、秘密値xへのアクセスを有さないコンピュータシステムが、依然として、EncMediator(x)と出力yとが同じ値から生成されていることを計算的に検証することができる)。
【0083】
前述のデータを生成した後、システムは、暗号化された秘密値、ハッシュ出力、及びゼロ知識証明を証明者に送信する(610)ことができる。この情報は、複数のデータパケットにわたり情報を提供することによって、証明者がアクセス可能な場所にデータを記憶してその場所への参照(例えば、ユニフォームリソース識別子)を提供することによってなどの任意の適切な方法で、証明者に利用可能にされてもよい。
【0084】
クライアントは、プログラムを証明者に利用可能にする(612)ことができる。プログラムは、証明者が実行することをクライアントが要求するプログラムを指し得る。このプログラムは、その実行がブロックチェーンネットワーク又は図3に関連して説明されたようなオフチェーンデータソースから取得可能であり得る入力データに依存するスマートコントラクトでもよい。一実施形態において、クライアントは、プログラムへの参照を符号化する資金供給(funding)トランザクションをブロードキャストすることにより、プログラムを証明者に利用可能にし、資金供給トランザクションは、例えば図5に関連して説明されたものに従う。資金供給トランザクション及び/又はプログラムは、証明者が保証金預託トランザクションをブロックチェーンネットワークにブロードキャストしたことの検出に応答して、クライアントによりブロードキャストされてもよい。証明者は、図8及び図9に従って説明される処理に従ってプログラムを実行することができる。
【0085】
図7は、本開示に記載されるプロトコルに従った処理のフローチャート700を示す。フローチャートは、図1図4、及び図12など、本開示の他の箇所に記載される実施形態に従って実現されてもよい。処理は、図6に関連して記載される処理を実現するのと同じシステムにより実現されてもよい。処理は、本開示の他の箇所に記載されるクライアントにより、又は任意の他の適切なコンピューティングエンティティにより実現されてもよい。適切なシステム(例えば、図4に関連して説明されるクライアント)は、1つ以上のプロセッサと、実行可能命令を含むメモリとを含み、該実行可能命令は、実行された場合に、1つ以上のプロセッサに図7に関連して説明される処理の少なくとも一部を実行させる。
【0086】
システムは、(例えば、図6に記載されるような)プログラムが実行されたことの指標を検出する(702)ことができる。いくつかの実施形態において、証明者が、プログラムの実行を示すアンロックトランザクションをブロードキャストする。指標は、プルーフオブコレクトネス、又はプログラムの正しい実行のプルーフを含み得る。指標は、証明者とデータプロバイダとの間のプルーフオブコミュニケーションをさらに含んでもよい。プログラムの実行は1つ以上の入力により制御されてもよく、その値はブロックチェーンネットワークの外部のデータに基づいて決定されてもよい。
【0087】
指標を検出すると、システムは、プログラムの実行を検証する(704)ことができる。いくつかの場合、システムは、検証ステップを、図3に関連して説明された検証者コンピュータシステムなどの別のコンピュータシステムに委任する。プログラムの実行を検証することは、プログラムが完了まで実行されて出力を生成されたことを検証すること、証明者により生成されたプルーフオブコレクトネスの有効性を検証すること、プログラムへの入力が正しい値を有することを検証することなどを含んでもよい。システムが、プログラム(例えば、スマートコントラクト)が正しく有効に実行されたと決定した場合、システムは、秘密値xを証明者に利用可能にする(712)ことができる。一般的に言えば、システムは、証明者がプロトコルに従って種々のステップ(例えば、プログラムの正しい実行)を実行したと判定すると、秘密値xを証明者に利用可能にすることができる。秘密値xは、保証金トランザクションにより動きを妨げられたデジタル資産を回収するために証明者により使用されてもよい。いくつかの場合、クライアントと証明者は、プログラムを実行するための手数料として証明者に対してデジタル資産を解除するマルチパーティ署名を協働的に生成する。
【0088】
システムが、プログラムが正しく実行されなかったと決定した場合、システムは、誤った実行は誤った入力値の使用に帰すると決定することができる。例えば、プログラムへの入力が、図3に関連して上述したようにデータフィードから得られた期待された入力値と異なる場合がある。システムは、訂正値を決定する(706)ことができ、これは、プログラムを実行するために使用された実際の入力値とデータフィードから得られる期待された入力値との差に基づいてもよい。一実施形態において、訂正値は、重み付けされたハミング距離、すなわち、
【数12】
を表すメトリックを通じて表すことができる。ここで、u及びvは、比較する文字列である。一実施形態において、訂正値は、スマートコントラクトの期待された実行と実際の実行との差、プログラム実行を検証するコストなどに基づいて、クライアントが被る損害の額を反映することができる。システムは、訂正値を証明者に対して送信し、あるいは他の方法で利用可能にする(708)ことができる。システムは、訂正値のゼロ知識証明をさらに生成し、利用可能にしてもよい。
【0089】
訂正値を証明者に送った後、システムは、訂正トランザクションが検出されたかどうかを決定する(710)ことができる。訂正トランザクションは、プログラムが誤って実行されたことの確認応答(acknowledgement)である、ブロックチェーンネットワークに対して証明者によりブロードキャストされるトランザクションを指し得、プログラムの誤った実行に対する訂正であり得る。例えば、いくつかの場合、訂正トランザクションは、プログラムの正しい実行下でシステムが受け取ったはずのものとプログラムの実際の誤った実行下でシステムが受け取ったものとの間の差に相当するデジタル資産の移転を含む。
【0090】
訂正トランザクションが検出された場合、システムは、秘密値xを証明者に対して提供し、あるいはその他の方法で利用可能にする(712)ことができる。訂正トランザクションがタイムアウト間隔t後に検出されない場合、異なるトランザクション(例えば、補償トランザクション)が、クライアントのために保証金預託トランザクションにより動きを妨げられたデジタル資産を請求するためにクライアントによりブロードキャストされてもよい。
【0091】
図8は、本開示に記載されるプロトコルに従った処理のフローチャート800を示す。フローチャートは、図1図4、及び図12など、本開示の他の箇所に記載される実施形態に従って実現されてもよい。処理は、図9に関連して記載される処理を実現するのと同じシステムにより実現されてもよい。処理は、本開示の他の箇所に記載される証明者により、又は任意の他の適切なコンピューティングエンティティにより実現されてもよい。適切なシステム(例えば、図4に関連して説明される証明者)は、1つ以上のプロセッサと、実行可能命令を含むメモリとを含み、該実行可能命令は、実行された場合に、1つ以上のプロセッサに図8に関連して説明される処理の少なくとも一部を実行させる。
【0092】
証明者は、暗号化された値と、ハッシュ出力と、暗号化された値及びハッシュ出力が同じ値から導出されることのゼロ知識証明とを受信し、あるいはその他の方法で取得する(802)ことができる。証明者は、このデータをクライアントから直接的に(例えば、クライアントにより証明者に送信されるメッセージを介して)、又は間接的に(例えば、クライアントがブロックチェーンネットワークにデータをブロードキャストすること、データ記憶場所にデータを記憶してその場所へのリンクを提供することにより)受信してもよい。証明者は、ゼロ知識証明を検証する(804)ことができる。
【0093】
証明者は、実行すべきプログラムを取得する(806)ことができる。プログラムへの参照は、本開示の他の箇所に記載されるように資金供給トランザクションに符号化されてもよい。さらに、システムは、プログラムの実行のための入力データを決定する(808)ことができる。例えば、入力データは、図3に関連して説明したように、ブロックチェーンネットワークから直接か又はネットワークを通じてデータフィードから取得されるデータでもよい。一実施形態において、証明者は、入力データに従ってプログラム(例えば、スマートコントラクト)を実行する(810)。システムは、プログラムの実行を完了すると、プログラム実行の出力とさらにプルーフオブコレクトネスを生成する(812)ことができる。出力及びプルーフは、アンロックトランザクションにおいて検証者コンピュータシステムに利用可能にされ(814)得る。検証者コンピュータシステムは、図4に関連して説明されたクライアントなどの、検証処理を実行する任意の適切なコンピュータシステムでもよい。
【0094】
図9は、本開示に記載されたプロトコルに従った処理のフローチャート900を示す。フローチャートは、図1図4、及び図12など、本開示の他の箇所に記載される実施形態に従って実現されてもよい。処理は、図8に関連して記載される処理を実現するのと同じシステムにより実現されてもよい。処理は、本開示の他の箇所に記載される証明者により、又は任意の他の適切なコンピューティングエンティティにより実現されてもよい。適切なシステム(例えば、図4に関連して説明される証明者)は、1つ以上のプロセッサと、実行可能命令を含むメモリとを含み、該実行可能命令は、実行された場合に、1つ以上のプロセッサに図9に関連して説明される処理の少なくとも一部を実行させる。
【0095】
証明者は、訂正値が受信されたかどうかを決定する(902)ことができる。証明者は、プロトコルに従って、訂正値が受信されるのを所定の期間待機し、期間内に何も受信されない場合、訂正値が受信されなかった及び/又は訂正値がゼロであることと、訂正トランザクションが必要とされないこととを暗黙的に決定することができる。訂正値は、クライアント又は任意の適切な検証者が証明者によるプログラムの誤った実行を決定したことに応答して、クライアントから受信されてもよい。
【0096】
訂正値が受信されなかった及び/又は訂正値がゼロであると証明者が決定した場合、証明者はその後、秘密値を受信する(910)。秘密値は、アンロックスクリプトを生成及び/又は実行するために使用可能であり得、該アンロックスクリプトは、保証金トランザクション預託のロックスクリプトと集合的に実行された場合、証明者が保証金預託トランザクションにより動きを妨げられたデジタル資産を回収することを可能にする。秘密値は、資金供給トランザクションのワーカ手数料を引き換えるためにさらに使用されてもよい。クライアントが、証明者に秘密値を提供することを拒絶する(すなわち、クライアントがプロトコルの制約に違反する)場合、証明者は、メディエータから秘密値を取得してもよいことに留意されたい。
【0097】
証明者が訂正値を受信した場合、証明者は、訂正値が正しく計算されているかどうかを決定する(904)ことができる。証明者は、訂正値の計算のゼロ知識証明を取得し、このプルーフを使用して計算が正しく又は誤って計算されたことを決定し、かつ/あるいは別個の計算を実行することができる。いくつかの場合、証明者は、クライアントの訂正値を正しく計算されているものとして常に受け入れる。システムが、訂正値が正しく計算されたこと及びその値が正しいことを決定した場合、証明者は、訂正値に少なくとも部分的に基づいて訂正トランザクションを生成する(914)ことができる。例えば、訂正トランザクションは、ブロックチェーンに対してマイニングされ、訂正値の額と同等のデジタル資産を移転するトランザクションでもよい。次いで、システムは、上記の方法で秘密値を受信するのを待機する(910)ことができる。
【0098】
しかしながら、証明者が、提供された訂正値に不同意である場合、システムは、異なる訂正値を(例えば、別個の計算に基づいて)決定する(906)ことができる。証明者は、暗号化された秘密値と、どの訂正値が正しいかに関する証明者及びクライアント間の紛争を調停するために使用可能なトランスクリプトとを、メディエータに提供する(908)ことができる。トランスクリプトは、訂正値と証明者及び/又はクライアントにより計算された対応するゼロ知識証明、訂正値を生成するために使用された1つ以上の入力値、及び/又はプルーフオブコミュニケーションなどの情報を含んでもよい。メディエータは、証明者により算出された異なる訂正値が正しいと決定し、暗号化された秘密値を解読し、秘密値を証明者に提供することができる。
【0099】
いくつかの場合、損害値を計算する方法は、クライアントと証明者との間でプロトコルの早期段階で、例えば、クライアントが計算を実行するために証明者を選択するときに同意される。一実施形態において、クライアントは、リクエストの一部として見込み証明者に、実行すべきプログラムとプログラムの誤った実行によりもたらされる損害を算出するために使用される式との双方を送信することができる。一実施形態において、証明者は、プログラムを実行することに同意するかどうかを決定する前に、損害値を算出する式の知識を有する。いくつかの場合、メディエータは、クライアント、証明者、又は双方から式を受信し、この式は、いずれか又は双方の当事者によりデジタル署名されてもよい。プロトコルは、メディエータがクライアント及び証明者の双方から同じ式を受け取り、式が異なる場合にプロトコルを終了することを要求してもよい。
【0100】
図10は、本開示に記載されるプロトコルに従った処理のフローチャート1000を示す。フローチャートは、図1図4、及び図12など、本開示の他の箇所に記載される実施形態に従って実現されてもよい。処理は、本開示の他の箇所に記載されるメディエータコンピュータシステムにより、又は任意の他の適切なコンピューティングエンティティにより実現されてもよい。適切なシステム(例えば、図4に関連して説明される証明者)は、1つ以上のプロセッサと、実行可能命令を含むメモリとを含み、該実行可能命令は、実行された場合に、1つ以上のプロセッサに図10に関連して説明される処理の少なくとも一部を実行させる。一実施形態において、メディエータコンピュータシステムとも呼ばれるメディエータは、紛争を解決するプロトコルのクライアント及び/又は証明者により利用される。紛争は、クライアントと証明者との間で、例えばステップの実行の失敗又はステップの正しい実行の失敗など、一方又は双方の当事者がプロトコルを守るのに失敗したときに生じる可能性がある。
【0101】
一実施形態において、証明者は、メディエータと紛争を開始し、メディエータは、証明者から、暗号化された秘密値とトランスクリプトを受信する(1002)。暗号化された秘密値は、メディエータの公開鍵下で暗号化されてもよく、メディエータは、対応する秘密鍵へのアクセスを有する。トランスクリプトは、紛争を裁定する(adjudicate)ために使用可能な情報を含むことができる。例えば、トランスクリプトは、特定の状態及び/又は値の証拠となるゼロ知識証明を含んでもよい。メディエータは、プルーフの正しさを検証することによってなど、任意の適切な方法でトランスクリプトを検証することができる。メディエータは、検証処理の一部又は全部のステップを、ブロックチェーンネットワークのノードなどの別のコンピューティングシステムに委任してもよい。メディエータが、証明者(例えば、証明者により主張された状態又は値の証拠となるプルーフの正しさ)に同意した場合、メディエータは、暗号化された秘密値を解読し(1006)、秘密値を証明者に提供することができる。さらに、メディエータは、証明者と協働して(1008)1つ以上のマルチパーティ署名を生成することができ、該マルチパーティ署名は、ロックトランザクションのワーカ手数料を引き換えるために使用可能なプログラムなどの、1つ以上のプログラムを実行するために使用され得る。しかしながら、メディエータが代わりに、クライアントに同意した場合、メディエータは、クライアントと協働して(1012)1つ以上のマルチパーティ署名を生成することができ、該マルチパーティ署名は、(例えば、プロトコルを守るのに失敗したことに対するペナルティとして)証明者により投稿されたデジタル資産を請求するプログラム、及び/又はロックトランザクションのワーカ手数料を回収するプログラムなどの、種々のプログラムを実行するために利用され得る。
【0102】
同様の方法で、クライアントは、メディエータに暗号化された秘密値及びトランスクリプトを提供することにより、メディエータと紛争解決ルーチンを開始することができる。トランスクリプトは、ゼロ知識証明などの情報を含んでもよい。メディエータは、暗号化された秘密値とトランスクリプトを受信し(1010)、上述の手法を適用することにより紛争を裁定することができる。
【0103】
図11は、本開示の少なくとも1つの実施形態を実施するために使用され得るコンピューティングデバイス1100の例示的な簡略ブロック図である。種々の実施形態において、コンピューティングデバイス1100は、上で例示及び説明されたシステムのうち任意のものを実現するために使用されてもよい。例えば、コンピューティングデバイス1100は、データサーバ、ウェブサーバ、ポータブルコンピューティングデバイス、パーソナルコンピュータ、又は任意の電子コンピューティングデバイスとしての使用に対して構成されてもよい。図11に示すように、コンピューティングデバイス1100は、実施形態において、バスサブシステム1104を介して複数の周辺サブシステムと通信するように構成され、かつ動作上結合される1つ以上のプロセッサ1102を含むことができる。いくつかの実施形態において、これらの周辺サブシステムは、メモリサブシステム1108及びファイル/ディスクストレージサブシステム1110含むストレージサブシステム1106と、1つ以上のユーザインターフェース入力デバイス1112と、1つ以上のユーザインターフェース出力デバイス1114と、ネットワークインターフェースサブシステム1116を含む。このようなストレージサブシステム1106は、情報の一時的又は長期的な記憶のために使用できる。
【0104】
いくつかの実施形態において、バスサブシステム1104は、コンピューティングデバイス1100の種々のコンポーネント及びサブシステムが意図されたとおり互いに通信することを可能にする機構を提供する。バスサブシステム1104は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用する。いくつかの実施形態において、ネットワークインターフェースサブシステム1116は、他のコンピューティングデバイス及びネットワークへのインターフェースを提供する。ネットワークインターフェースサブシステム1116は、いくつかの実施形態において、他のシステムからデータを受信し、コンピューティングデバイス1100から他のシステムにデータを送信するためのインターフェースとして機能する。いくつかの実施形態において、バスサブシステム1104は、詳細、検索語等のようなデータを通信するために利用される。
【0105】
いくつかの実施形態において、ユーザインターフェース入力デバイス1112は、キーボードなどの1つ以上のユーザ入力デバイス;一体型マウス、トラックボール、タッチパッド、又はグラフィックスタブレットなどのポインティングデバイス;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;音声認識システム、マイクロフォンなどのオーディオ入力デバイス;及び他タイプの入力デバイスを含む。一般に、用語「入力デバイス」の使用は、情報をコンピューティングデバイス1100に入力する全ての可能なタイプのデバイス及び機構を含むことが意図される。いくつかの実施形態において、1つ以上のユーザインターフェース出力デバイス1114は、表示サブシステム、プリンタ、又はオーディオ出力デバイスなどの非視覚的ディスプレイ等を含む。いくつかの実施形態において、表示サブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイなどのフラットパネルデバイス、又は投影若しくは他の表示装置を含む。一般に、用語「出力デバイス」の使用は、コンピューティングデバイス1100から情報を出力する全ての可能なタイプのデバイス及び機構を含むことが意図される。1つ以上のユーザインターフェース出力デバイス1114が使用されて、例えば、ユーザインターフェースを提示し、説明された処理及びその変形を実行するアプリケーションとのユーザ対話を、そのような対話が適切であり得るときに容易にしてもよい。
【0106】
いくつかの実施形態において、ストレージサブシステム1106は、本開示の少なくとも1つの実施形態の機能性を提供する基本プログラミング及びデータ構造を記憶するコンピュータ読取可能記憶媒体を提供する。アプリケーション(プログラム、コードモジュール、命令)は、いくつかの実施形態において1つ以上のプロセッサにより実行されたとき、本開示の1つ以上の実施形態の機能性を提供し、いくつかの実施形態においてストレージサブシステム1106に記憶される。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ1102により実行できる。種々の実施形態において、ストレージサブシステム1106は、本開示に従って使用されるデータを記憶するリポジトリをさらに提供する。いくつかの実施形態において、ストレージサブシステム1106は、メモリサブシステム1108及びファイル/ディスクストレージサブシステム1110を含む。
【0107】
実施形態において、メモリサブシステム1108は、複数のメモリ、例えばプログラム実行中の命令及びデータの記憶のためのメインランダムアクセスメモリ(RAM)1118及び/又は固定命令を記憶可能な読取専用メモリ(ROM)1120を含む。いくつかの実施形態において、ファイル/ディスクストレージサブシステム1110は、プログラム及びデータファイルのための非一時的な永続的(不揮発性)ストレージを提供し、ハードディスクドライブ、関連する取り外し可能媒体と共にフロッピーディスクドライブ、コンパクトディスク読取専用メモリ(CD‐ROM)ドライブ、光学ドライブ、取り外し可能媒体カートリッジ、又は他の同様の記憶媒体を含むことができる。
【0108】
いくつかの実施形態において、コンピューティングデバイス1100は、少なくとも1つのローカルクロック1124を含む。ローカルクロック1124は、いくつかの実施形態において、特定の開始日から発生したティック(ticks)数を表すカウンタであり、いくつかの実施形態において、コンピューティングデバイス1100内に一体的に配置される。種々の実施形態において、ローカルクロック1124は、特定のクロックパルスにおいてコンピューティングデバイス1100のためのプロセッサ及びそれに含まれるサブシステム内でデータ転送を同期させるために使用され、コンピューティングデバイス1100とデータセンター内の他のシステムとの間の同期動作を協調させるために使用されてもよい。別の実施形態において、ローカルクロックは、プログラム可能な間隔のタイマである。
【0109】
コンピューティングデバイス1100は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション、又は以下に説明される任意の他のデバイスを含む、様々なタイプのうち任意のものとすることができる。さらに、コンピューティングデバイス1100は、いくつかの実施形態において、1つ以上のポート(例えばUSB、ヘッドフォンジャック、ライトニングコネクタ等)を通じてコンピューティングデバイス1100に接続できる別のデバイスを含むことができる。実施形態において、このようなデバイスは、光ファイバコネクタを受け入れるように構成されたポートを含む。したがって、いくつかの実施形態において、このデバイスは、光信号を、処理のために、デバイスをコンピューティングデバイス1100に接続するポートを通して伝送される電気信号に変換するように構成される。コンピュータ及びネットワークの絶えず変化する性質に起因して、図11に示されるコンピューティングデバイス1100の説明は、デバイスの好適な実施形態を例示する目的で特定の例としてのみ意図される。図11に示すシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
【0110】
したがって、明細書及び図面は、限定的でなく例示的な意味で解釈されるべきである。しかしながら、特許請求の範囲に記載された発明の範囲から逸脱することなく、これらに対して様々な修正及び変更がなされ得ることが明らかであろう。同様に、他の変形が本開示の範囲内である。ゆえに、開示された手法は種々の修正及び代替の構成が可能だが、そのうち特定の例示的な実施形態が図面に示され、上記で詳細に説明されている。しかしながら、発明を開示された特定の形式又は形態に限定する意図はなく、逆に、別記の特許請求の範囲に定義される発明の範囲内に入るすべての修正、代替的な構成、及び同等物をカバーする意図があることを理解されたい。
【0111】
開示の実施形態を説明する文脈における(特に、下記の特許請求の範囲の文脈における)用語「一の」(“a”、“an”)及びその(“the”)並びに同様の指示物の使用は、別段示されない限り、又は文脈により明らかに矛盾しない限り、単数及び複数の双方をカバーするものと解釈されるべきである。用語「含む」、「有する」、「含める」、及び「包含する」は、別段記されない限り、オープンエンド用語(すなわち、「含むが限定されない」を意味する)と解釈されるべきである。用語「接続される」は、変更されずに物理的接続を参照するとき、介在する何かがあるとしても、部分的又は全体的に内部に含まれる、取り付けられる、又は一緒に結合されると解釈されるべきである。本開示における値の範囲の記載は、別段示されない限り、該範囲内に入る各別個の値を個々に参照する簡略化された方法として機能することを意図するに過ぎず、各別個の値はそれが個々に記載されているかのように本明細書に組み込まれる。用語「セット」(例えば、「アイテムのセット」)又は「サブセット」の使用は、別段記されない限り、又は文脈により矛盾しない限り、1つ以上のメンバを含む空でない集合と解釈されるべきである。さらに、別段記されない限り、又は文脈により矛盾しない限り、対応するセットの用語「サブセット」は、必ずしも対応するセットの適切なサブセットを示すものではないが、サブセット及び対応するセットは等しい場合がある。
【0112】
形式「A、B、及びCのうち少なくとも1つ」又は「A、B、及びCのうち少なくとも1つ」のフレーズなどの結合的言語は、特に別段示されない限り、又は別段文脈により明らかに矛盾しない限り、さもなければ一般に使用される文脈で理解され、項目、用語等がA又はB又はCのいずれか、あるいはA及びB及びCのセットのうち任意の空でないサブセットであり得ることを示す。例えば、3つのメンバを有するセットの例示的な例において、結合的フレーズ「A、B、及びCのうち少なくとも1つ」及び「A、B、及びCのうち少なくとも1つ」は、以下のセット、すなわち、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}のうち任意のものを参照する。ゆえに、そのような結合的言語は、一般に、特定の実施形態がAの少なくとも1つ、Bの少なくとも1つ、及びCの少なくとも1つが各々存在することを必要とするよう暗に示すことを意図しない。
【0113】
説明された処理の動作は、別段示されない限り、又は別段文脈により明らかに矛盾しない限り、任意の適切な順序で実行できる。説明された処理(又はその変形及び/又は組み合わせ)は、実行可能命令で構成された1つ以上のコンピュータシステムの制御下で実行でき、ハードウェア又はそれらの組み合わせにより、1つ以上のプロセッサ上で集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、又は1つ以上のアプリケーション)として実現できる。いくつかの実施形態において、コードは、例えば、1つ以上のプロセッサにより実行可能な複数の命令を含むコンピュータプログラムの形式でコンピュータ読取可能記憶媒体に記憶できる。いくつかの実施形態において、コンピュータ読取可能記憶媒体は非一時的である。
【0114】
提供されるいずれか又はすべての例、又は例示的言語(例えば、「などの」)の使用は、本発明の実施形態をより良く明らかにすることを意図するに過ぎず、別段請求されない限り、発明の範囲に制限を課すものではない。本明細書中の言語は、任意の請求されていない要素を発明の実施に対して不可欠なものとして示していると解釈されるべきではない。
【0115】
本開示の実施形態は、発明を実施するために発明者に知られる最良の形態を含め、説明されている。これらの実施形態の変形が、上述の説明を読んだ当業者に明らかになるであろう。発明者は、当業者がそのような変形を適宜採用することを予期しており、発明者は、本開示の実施形態が具体的に説明された以外の方法で実施されることを意図している。したがって、本開示の範囲は、適用法により許容される本明細書と別記の特許請求の範囲に記載された対象事項のすべての修正及び同等物を含む。さらに、上述の要素の、そのすべての可能な変形における任意の組み合わせは、別段示されない限り、又は別段文脈により明らかに矛盾しない限り、本開示の範囲に包含される。
【0116】
引用された刊行物、特許出願、及び特許を含む全ての参考文献は、各参考文献が参照により援用されるよう個々及び具体的に示され、かつその全体を明示されているのと同程度、本明細書で参照により援用される。
【0117】
上述の実施形態は、発明を限定するのでなく例示しており、当業者は、別記の特許請求の範囲により定義される発明の範囲から逸脱することなく多くの代替的な実施形態を設計可能であることに留意されたい。特許請求の範囲においては、括弧内に付されたいかなる参照符号も、特許請求の範囲を限定するものと解釈されてはならない。語「含んでいる」及び「含む」などは、任意の請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含める、又は、から構成される」ことを意味し、「含んでいる」は、「含めている、又は、から構成されている」ことを意味する。要素の単数の参照は、そのような要素の複数の参照を除外するものではなく、その逆もまた同様である。発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現できる。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のうちいくつかは、1つの同じアイテムのハードウェアにより具現化できる。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが利するように使用できないことを示すものではない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11