(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-05
(45)【発行日】2024-08-14
(54)【発明の名称】変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム
(51)【国際特許分類】
H04L 9/32 20060101AFI20240806BHJP
G06F 21/64 20130101ALI20240806BHJP
G06Q 20/06 20120101ALI20240806BHJP
【FI】
H04L9/32 200Z
G06F21/64
G06Q20/06 300
【外国語出願】
(21)【出願番号】P 2023014319
(22)【出願日】2023-02-02
(62)【分割の表示】P 2020524541の分割
【原出願日】2018-10-29
【審査請求日】2023-02-02
(32)【優先日】2017-11-09
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2017-11-30
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2018-02-02
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2018-04-10
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2018-04-20
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コヴァチ,アレグザンドラ
(72)【発明者】
【氏名】マデオ,シモーネ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
【審査官】中里 裕正
(56)【参考文献】
【文献】国際公開第2016/155804(WO,A1)
【文献】国際公開第2017/187396(WO,A1)
【文献】国際公開第2017/187398(WO,A1)
【文献】国際公開第2017/187399(WO,A1)
【文献】CAMPANELLI, M. et al.,Zero-Knowledge Contingent Payments Revisited: Attacks and Payments for Services,Cryptology ePrint Archive,Paper 2017/566,[online],2017年11月01日,pp.1-28,<URL:https://eprint.iacr.org/archieve/2017/566/20171101:190916>
【文献】MAXWELL, G.,The first successful Zero-Knowledge Contingent Payment,Bitcoin Core,[online],2016年02月26日,<URL:https://bitcoincore.org/en/2016/02/26/zero-knowledge-contingent-payments-announcement/>
【文献】KUMARESAN, R. and BENTOV, I.,How to Use Bitcoin to Incentivize Correct Computations,CCS '14: Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security,2014年11月,pp.30-41
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/64
G06Q 20/06
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
コンピュータ実施される検証方法であって:
デジタル資産の指示と、前記デジタル資産の制御を移転するための条件のセットを符号化するロッキングスクリプトを含むトランザクションのトランザクション出力を生成するステップであって、前記条件のセットの満足は、検証鍵及びプルーフに少なくとも部分的に基づいて決定されるステップと;
前記トランザクションのトランザクション入力を生成するステップであって、前記トランザクション入力は、前記プルーフを含むアンロッキングスクリプトを含む、ステップと;
前記ロッキングスクリプト及び前記アンロッキングスクリプトに少なくとも部分的に基づいて、前記条件のセットが満たされていることを確認するステップと;
前記条件のセットの満足を確認したことに応答して、前記デジタル資産の制御を移転するステップと;
を含む、方法。
【請求項2】
前記検証鍵は、有限フィールドの複数の第1要素を含み、前記プルーフは、前記有限フィールドの複数の第2要素を含む、
請求項1に記載の方法。
【請求項3】
前記有限フィールドの要素は、楕円曲線上の点である、
請求項
2に記載の方法。
【請求項4】
前記有限フィールドの要素は、圧縮形式で符号化される、
請求項2
又は3に記載の方法。
【請求項5】
クライアントは、前記検証鍵と、前記クライアントに関連付けられる第1デジタル証明書を用いて前記トランザクション入力を符号化し、作業者は、前記プルーフと、前記作業者に関連付けられる第2デジタル証明書を用いて前記トランザクション入力を符号化する、
請求項1乃至
4のいずれかに記載の方法。
【請求項6】
前記ロッキングスクリプトは、前記条件のセットのうちのある条件が前記アンロッキングスクリプトによって満たされていないことを条件に、前記デジタル資産の供給者のために前記デジタル資産を取り戻す命令を含む、
請求項1乃至
5のいずれかに記載の方法。
【請求項7】
前記アンロッキングスクリプトはリディームスクリプトを更に含み、前記検証鍵及び前記リディームスクリプトは、前記条件のセットを満たし、
前記ロッキングスクリプトは、前記条件のセットのうち、前記リディームスクリプトのハッシュが所定の値に一致する条件を符号化する、
請求項1乃至
6のいずれかに記載の方法。
【請求項8】
前記リディームスクリプトは、520バイト以下のサイズである、
請求項
7に記載の方法。
【請求項9】
前記アンロッキングスクリプトは、前記検証鍵の1つ以上の要素を含む、
請求項
7又は
8に記載の方法。
【請求項10】
前記リディームスクリプトは、前記検証鍵の残りの要素のうちの少なくとも一部を含む、
請求項
9に記載の方法。
【請求項11】
前記アンロッキングスクリプト及び前記リディームスクリプトは集合的に、前記検証鍵を含む、
請求項
10に記載の方法。
【請求項12】
前記トランザクションは、ビットコインベースのプロトコルに従うP2SHトランザクションである、
請求項
6乃至
11のいずれかに記載の方法。
【請求項13】
前記トランザクションは、ブロックチェーンベースのプロトコルに従う標準のトランザクションである、
請求項1乃至
12のいずれかに記載の方法。
【請求項14】
前記ロッキングスクリプト及びアンロッキングスクリプトは、スタックベースのスクリプト言語で符号化される、
請求項1乃至
13のいずれかに記載の方法。
【請求項15】
前記条件のセットは、双線形制約を含む、
請求項1乃至
14のいずれかに記載の方法。
【請求項16】
システムにおいて、
プロセッサと;
前記プロセッサによって実行された結果として、当該システムに、請求項1乃至
15のいずれかに記載の方法を実行させる実行可能命令を含むメモリと;
を備える、システム。
【請求項17】
コンピュータシステムのプロセッサによって実行された結果として、前記コンピュータシステムに、請求項1乃至
15のいずれかに記載の方法を少なくとも実行させる実行可能命令を格納している非一時的コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ブロックチェーン技術に関し、より具体的には、ロッキングスクリプトを利用して検証鍵を変更から保護し、正当性のプルーフ(proof of correctness)の有効性を確かめることにより、ブロックチェーンにおけるゼロ知識プロトコルの実行を可能にすることに関する。本発明は更に、暗号技術及び数学技術を利用して、ブロックチェーンネットワーク上で行われる電子転送に関してセキュリティを実施する。本発明は、スマートコントラクトの生成及び実行における使用に特に適しているが、これらに限定されない。
【背景技術】
【0002】
本明細書において、「ブロックチェーン」という用語は、いくつかのタイプの電子的なコンピュータベースの分散台帳のいずれかを指してよい。これらは、コンセンサスベースのブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され、開発されている。便宜性及び例示の目的のために、ビットコインが、本明細書で説明される技術の有益な用途として参照され得るが、ビットコインは、本開示で説明される技術が適用され得る多くの用途の1つに過ぎない。しかしながら、本発明は、ビットコインブロックチェーンでの使用に限定されず、非商業的用途を含む代替的なブロックチェーン実装及びプロトコルも本発明の範囲内に含まれることに留意されたい。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータベースの非集中型の分散システムとして実装されるピアツーピア電子台帳であり、ブロックはトランザクション及び他の情報により構成され得る。いくつかの例において、「ブロックチェーントランザクション」は、データ及び条件のセットを含むフィールド値の構造化されたコレクションを符号化する入力メッセージを指し、この場合、条件のセットを満たすことは、フィールドのセットがブロックチェーンデータ構造に書き込まれるための前提条件である。例えばビットコインでは、各トランザクションは、ブロックチェーンシステムの参加者間のデジタル資産の制御の移転を符号化し、少なくとも1つの入力及び少なくとも1つの出力を含む、データ構造である。いくつかの実施形態において、「デジタル資産」は、使用権に関連付けられるバイナリデータを指す。デジタル資産の例は、ビットコイン、イーサ、ライトコインを含む。いくつかの実装において、デジタル資産の制御を移転することは、デジタル資産の少なくとも一部を第1エンティティから第2エンティティに再関連付けすることによって実行され得る。ブロックチェーンの各ブロックは、ブロックが一緒にチェーン化されることになり、その始めからブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不能なレコードを作成するように、以前のブロックのハッシュを含んでよい。
【0004】
いくつかの例において、「スタックベースのスクリプト言語」は、様々なスタックベース又はスタック指向の実行モデル及びオペレーションをサポートするプログラミング言語を指す。すなわち、スタックベースのスクリプト言語は、スタックを利用してもよい。スタックでは、値をスタックの先頭(top)にプッシュすることができ、あるいはスタックの先頭からポップすることができる。スタックに対して実行される様々なオペレーションの結果、1つ以上の値を、スタックの先頭へプッシュすること又はスタックの先頭からポップすることになり得る。例えばOP_EQUALオペレーションは、スタックから上位2つのアイテムをポップし、それらを比較し、結果(例えば等しい場合は1、等しくない場合は0)をスタックの先頭にプッシュする。OP_PICKのようにスタックに対して実行される他のオペレーションは、スタックの先頭以外の位置からアイテムを選択することを可能にすることがある。本実施形態のいくつかで用いられるいくつかのスクリプト言語では、少なくとも2つのスタック、すなわち、メインスタックと代替スタックが存在し得る。スクリプト言語のいくつかのオペレーションは、あるスタックの先頭から別のスタックの先頭にアイテムを移動させることができる。例えばOP_TOALTSTACKは、メインスタックの先頭から代替スタックの先頭に値を移動させる。スタックベースのスクリプト言語は、場合によっては、厳密な後入れ先出し(LIFO)方式のオペレーションのみに限定されないことに留意されたい。例えばスタックベースのスクリプト言語は、スタック内のn番目のアイテムを先頭にコピー又は移動させるオペレーション(例えばそれぞれ、ビットコインにおけるOP_PICK及びOP_ROLL)をサポートしてもよい。スタックベースのスクリプト言語で書かれたスクリプトは、ベクトル、リスト又はスタックのような任意の適切なデータ構造を使用して実装することができる論理スタック上にプッシュされ得る。
【0005】
トランザクションがブロックチェーンに書き込まれるためには、「検証(validate)」されなければならない。ネットワークノード(マイニングノード)は、各トランザクションが有効であることを保証するための作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なる有効性の標準を有することができる。ブロックチェーンの有効性はコンセンサスベースであるので、トランザクションが有効であることに大多数のノードが同意した場合、トランザクションは有効であるとみなされる。ノードにインストールされているソフトウェアクライアントは、UTXOのロッキングスクリプト及びアンロッキングスクリプトを実行することにより、部分的にUTXOを参照するトランザクションに対するこの検証作業を実行する。ロッキングスクリプト及びアンロッキングスクリプトの実行がTRUEに評価され、適用可能である場合に他の検証条件が満たされる場合、トランザクションはノードによって検証される。検証されたトランザクションは、他のネットワークノードに伝搬され、そこで、マイニングノードは、トランザクションをブロックチェーンに含めるように選択することができる。したがって、トランザクションがブロックチェーンに書き込まれるためには、i)トランザクションは、該トランザクションを受け取った最初のノードによって検証されなければならず、トランザクションが検証された場合、ノードはトランザクションをネットワーク内の他のノードに中継し;ii)トランザクションは、マイニングノードによって構築された新しいブロックに追加されなければならず;iii)マイニングされなければならない、すなわち、過去のトランザクションの公開台帳に追加されなければならない。トランザクションを実質的に不可逆にするために、十分な数のブロックがブロックチェーンに追加されると、トランザクションは確認されたとみなされる。
【0006】
ブロックチェーン技術は、暗号通貨実装の使用について最も広く知られているが、デジタル起業家達は、新たなシステムを実装するために、ビットコインが基づいている暗号セキュリティシステムと、ブロックチェーン上に格納することができるデータとの双方の使用を探求し始めている。暗号通貨の領域に限定されない自動化タスク及びプロセスにブロックチェーンを使用することができれば非常に有利であろう。そのようなソリューションは、それらの用途はより多方面にわたるが、ブロックチェーンの利点(例えば永続性、イベントの改ざん防止レコード、分散処理等)を利用することができるであろう。
【0007】
本開示は、1つ以上のブロックチェーンベースのコンピュータプログラムの技術的側面を説明する。ブロックチェーンベースのコンピュータプログラムは、ブロックチェーントランザクション内に記録される機械読取可能で実行可能なプログラムであってよい。ブロックチェーンベースのコンピュータプログラムは、結果を生成するために入力を処理することができ、次いで、それらの結果に依存してアクションを実行させることができるルールを含んでよい。現在の研究の1つの分野は、「スマートコントラクト」の実装のためのブロックチェーンベースのコンピュータプログラムの使用である。自然言語で書かれる伝統的な契約とは異なり、スマートコントラクトは、機械読み取り可能な契約又は合意の条件の実行を自動化するように設計されるコンピュータプログラムであってよい。
【0008】
ブロックチェーンに関連する関心のある別の領域は、ブロックチェーンを介して実世界のエンティティを表し、転送するための「トークン」(又は「カラードコイン」)の使用である。潜在的に機密又は秘密のアイテムを、識別可能な意味又は値を有しないトークンによって表すことができる。したがって、トークンは、実世界のアイテムがブロックチェーンから参照されることを可能にする識別子として機能する。
【0009】
実施形態において、特定のエンティティとの対話を、スマートコントラクトの特定のステップで符号化することができるが、スマートコントラクトは、そうでなければ、自動的に実行され、自己強制される可能性がある。それは、機械読み取り可能かつ実行可能である。いくつかの例では、自動実行は、UTXOの移転を可能にするために成功裏に実行されるスマートコントラクトの実行を指す。なお、このような例では、UTXOの移転送を可能にする「エンティティ」は、何らかの秘密の知識を証明することを必要とされることなく、アンロッキングスクリプトを作成することができるエンティティを指すことに留意されたい。言い換えると、データのソース(例えばアンロッキングトランザクションを作成したエンティティ)が暗号秘密(例えば秘密の非対称鍵、対称鍵等)へのアクセスを有することを確かめることなく、アンロッキングトランザクションを検証することができる。また、このような例では、自己強制とは、制約に応じてアンロッキングトランザクションを強制させているブロックチェーンネットワークの検証ノードを指す。いくつかの例では、UTXOを「アンロック」すること(UTXOの「消費(spending)」としても知られる)は、技術的な意味で使用されており、UTXOを参照して、有効として実行するアンロッキングトランザクションを作成することを指す。
【0010】
ブロックチェーントランザクションの出力は、ロッキングスクリプトと、ビットコイン等のデジタル資産の所有権に関する情報を含む。ロッキングスクリプトは、障害(encumbrance)とも呼ばれることがあり、UTXOを移転するために満足する必要がある条件を指定することにより、デジタル資産を「ロック」する。例えばロッキングスクリプトは、関連するデジタル資産をアンロックするために、特定のデータがアンロッキングスクリプトで提供されることを必要とする可能性がある。ロッキングスクリプトは、ビットコインでは「scriptPubKey」としても知られる。デジタル資産をアンロックするためにデータの提供を当事者に要求する技術は、ロッキングスクリプト内部にデータのハッシュを埋め込むことを伴う。
【発明の概要】
【発明が解決しようとする課題】
【0011】
したがって、これらの態様の1つ以上において、ブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。そのような改善されたソリューションが現在では考案されている。したがって、本発明によれば、添付の特許請求の範囲において定義される方法が提供される。
【0012】
このような改善されたソリューションが、現在では考案されている。
【課題を解決するための手段】
【0013】
したがって、本発明によれば、添付の特許請求の範囲で定義されるようなシステム及び方法が提供される。
【0014】
本発明によると、ブロックチェーンネットワークのノードのためのコンピュータ実施方法が提供されてよく、該コンピュータ実施方法は:デジタル資産の指示(indication)と、デジタル資産の制御を移転するための条件のセットを符号化するロッキングスクリプト(locking script)を含むトランザクションのトランザクション出力を生成するステップであって、条件のセットの満足は、検証鍵及びプルーフ(proof)に少なくとも部分的に基づいて決定されるステップと;トランザクションのトランザクション入力を生成するステップであって、トランザクション入力は、トランザクション出力に関連付けられる識別子と、プルーフを含むアンロッキングスクリプト(unlocking script)とを含む、ステップと;ロッキングスクリプト及びアンロッキングスクリプトに基づいて、条件のセットが満たされていることを確認するステップと;条件のセットの満足を確認したことに応答して、デジタル資産の制御を移転するステップと;を含む。
【0015】
検証鍵は、有限フィールド(finite field)の複数の第1要素を含んでよく、プルーフは、有限フィールドの複数の第2要素を含む。
【0016】
フィールドの要素は、楕円曲線上の点であってよい。
【0017】
有限フィールドの要素は、圧縮形式で符号化されてよい。
【0018】
好ましくは、方法は、クライアントが、検証鍵と、クライアントに関連付けられる第1デジタル証明書を用いてトランザクション入力を符号化することと、作業者(worker)が、プルーフと、作業者に関連付けられる第2デジタル証明書を用いてトランザクション入力を符号化することとを含んでよい。
【0019】
ロッキングスクリプトは、条件のセットがアンロッキングスクリプトによって満たされていないことを条件に、デジタル資産の供給者のためにデジタル資産を取り戻す(reclaim)命令を含んでよい。
【0020】
ロッキングスクリプトはリディームスクリプト(redeem script)を更に含んでよく、検証鍵及びリディームスクリプトは、条件のセットの少なくともサブセットの満足を決定するのに十分な情報を符号化し;ロッキングスクリプトは、条件のセットのうちの1つとして、リディームスクリプトのハッシュが所定の値に一致することを符号化する。
【0021】
リディームスクリプトは、所定の最大サイズ以下、例えば520バイト以下であってよい。
【0022】
アンロッキングスクリプトは、検証鍵の1つ以上の要素を含んでよく、リディームスクリプトは、検証鍵の残りの要素の少なくともいくつかを含んでよい。アンロッキングスクリプト及びリディームスクリプトは、集合的に検証鍵を含んでよい。
【0023】
トランザクションのロッキングスクリプト、アンロッキングスクリプト及びリディームスクリプトは、ビットコインベースのプロトコルのPay-to-Script-Hashトランザクション又はその変形に従ってよい。
【0024】
トランザクションは、ビットコインプロトコルのようなブロックチェーンベースのプロトコルの標準トランザクションに従ってよい。
【0025】
ロッキングスクリプト及びアンロッキングスクリプトのようなスクリプトは、スタックベースのスクリプト言語のコマンド及びデータで符号化されてよく、コマンド及びデータは、後入れ先出し順でスタック上に配置される。
【0026】
条件のセットは、1つ以上の双線形制約(bilinear constraints)を含んでよい。
【0027】
また、プロセッサと、該プロセッサによる実行の結果として、システムに、特許請求に係る方法のいずれかを実行させる実行可能命令を含むメモリとを備えるシステムを提供することが望ましい。
【0028】
また、コンピュータシステムの1つ以上のプロセッサによる実行の結果として、コンピュータシステムに、特許請求に係る方法のいずれかを少なくとも実行させる実行可能命令を格納している非一時的コンピュータ読取可能記憶媒体を提供することが望ましい。
【0029】
本発明は、検証方法/システムとして、かつ/又はブロックチェーンを介したデジタル資産の交換又は移転を制御するための制御方法/システムとして説明することができる。いくつかの実施形態において、デジタル資産は、暗号通貨のトークン又は部分である。以下で説明されるように、本発明は、ブロックチェーンネットワーク又はプラットフォームを介してオペレーションを実行する新たな改善された有利な方法のためのセキュアな方法/システムとしても説明することができる。
【図面の簡単な説明】
【0030】
本発明のこれら及び他の態様は、本明細書で説明される実施形態から明らかになり、実施形態に関連して解明されるであろう。本発明の実施形態は、次に単なる例示として、添付の図面に関連して説明される:
【0031】
【
図1】様々な実施形態を実装することができるブロックチェーン環境を示す図である。
【
図2】様々な実施形態に従ってプロトコルを実装するために利用され得るコンピューティング環境を示す図である。
【
図3】検証可能な計算の実行に適した環境の図である。
【
図4】楕円曲線上の点が、一実施形態に従ってロッキングスクリプト又はアンロッキングスクリプトのようなブロックチェーンスクリプトと共に使用するのに適した圧縮及び非圧縮エンコーディングを使用して表される、例示的な図を示す図である。
【
図5】クライアントが、プルーフの妥当性確認に使用される検証鍵を供給する図である。
【
図6】作業者が、プルーフの妥当性確認に使用される検証鍵を供給する図である。
【
図7】一実施形態によるリディームスクリプトを生成するためのプロセス700の図である。
【
図8】本開示の少なくとも1つの実施形態を実施するために使用され得るコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【0032】
まず、本開示の一実施形態によるブロックチェーンに関連付けられる例示のブロックチェーンネットワーク100示す
図1を参照する。本実施形態では、例示のブロックチェーンネットワーク100は、ピアツーピア分散電子デバイスとして実装されるブロックチェーンノードを含み、その各々が、少なくとも部分的にノード102のオペレータ間で合意されるブロックチェーンプロトコルに従うオペレーションを実行するソフトウェア及び/又はハードウェアのインスタンスを実行する。いくつかの例において、「ノード」は、ブロックチェーンネットワークの間で分散されるピアツーピア電子デバイスを指す。ブロックチェーンプロトコルの一例がビットコインプロトコルである。
【0033】
いくつかの実施形態において、ノード102は、(例えばデータセンター内のサーバによって、クライアントコンピューティングデバイス(例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン等)によって、コンピューティングリソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスによって、あるいは
図8のコンピューティングデバイス800のような任意の適切な電子クライアントデバイスによって)任意の適切なコンピューティングデバイスから構成され得る。いくつかの実施形態において、ノード102は、トランザクション104のように提案されたトランザクションを表すデータメッセージ又はオブジェクトを受け取るための入力を有する。ノードは、いくつかの実施形態では、ノードが維持する情報について、例えばトランザクション104の状態の情報についてクエリ可能である。
【0034】
図1に示されるように、ノード102のいくつかは、ノード102のうちの1つ以上の他のノードに通信可能に結合される。このような通信結合は、有線又は無線通信のうちの1つ以上を含むことができる。実施形態において、ノード102は各々、ブロックチェーン内のすべてのトランザクションの「台帳」の少なくとも一部を維持する。このようにして、台帳は分散台帳となる。台帳に影響を与えるノードによって処理されるトランザクションは、台帳の完全性が維持されるように、他のノードのうちの1つ以上によって検証可能である。
【0035】
どのノード102が他のどのノードと通信することができるかに関しては、メッセージが、ブロックチェーンプロトコルが転送すべきことを示すメッセージであると想定して、ノード間で渡されるメッセージが例示のブロックチェーンネットワーク100全体(又はその何らかの重要な部分)に伝搬することができるように、例示のブロックチェーンネットワーク100内のノードの各々が、ノード102のうちの1つ以上の他のノードと通信することができることで十分である。1つのそのようなメッセージは、ノード102のうちの1つ、例えばノード102Aによる、提案されたトランザクションの公開であってよく、これは、次いでパス106のようなパスに沿って伝搬するであろう。別のそのようなメッセージは、ブロックチェーンに含めるために提案された新たなブロックの公開であってよい。
【0036】
一実施形態において、ノード102のうちの少なくともいくつかは、暗号問題を解決することのように複雑な計算を実行するマイニングノードである。暗号問題を解決するマイニングノードは、ブロックチェーンのための新たなブロックを作成し、その新たなブロックをノード102のうちの他のノードにブロードキャストする。ノード102のうちの他のノードは、マイニングノードの作業を確認し、確認時に、(例えばブロックチェーンの分散台帳にブロックを追加することによって)ブロックをブロックチェーン内に受け入れる。いくつかの例では、ブロックはトランザクションのグループであり、しばしば、タイムスタンプと前のブロックの「フィンガープリント」(例えばハッシュ)でマークされる。このようにして、各ブロックは前のブロックにリンクされるようになってよく、それによりブロックチェーン内のブロックをリンクする「チェーン」が生成される。実施形態において、有効なブロックは、ノード102の合意によってブロックチェーンに追加される。また、いくつかの例では、ブロックチェーンは、検証されたブロックのリストを含む。
【0037】
一実施形態において、ノード102のうちの少なくともいくつかは、本開示で説明されるように、トランザクションを検証する検証ノードとして動作する。いくつかの例では、トランザクションは、デジタル資産(例えば複数のビットコイン)の所有権のプルーフと、デジタル資産の所有権/制御を受け入れる又は移転するための条件を提供するデータを含む。いくつかの例において、「アンロッキングトランザクション」は、前のトランザクションのUTXOによって示されるデジタル資産の少なくとも一部を、ブロックチェーンアドレスに関連付けられるエンティティに再関連付けする(例えば所有権又は制御を移転する)ブロックチェーントランザクションを指す。いくつかの例において、「前のトランザクション」は、アンロッキングトランザクションによって参照されているUTXOを含むブロックチェーントランザクションを指す。いくつかの実施形態では、トランザクションは、所有権又は制御が移転され得る(「アンロックされる」)前に満たさなければならない条件で該トランザクションを妨げる「ロッキングスクリプト」を含む。
【0038】
いくつかの実施形態では、ブロックチェーンアドレスは、デジタル資産の少なくとも一部の制御が移転/再関連付けされているエンティティに関連付けられる英数字の文字列である。いくつかの実施形態で実装されるいくつかのブロックチェーンプロトコルでは、エンティティに関連付けられる公開鍵とブロックチェーンアドレスとの間に1対1の対応が存在する。いくつかの実施形態において、トランザクションの検証は、ロッキングスクリプト及び/又はアンロッキングスクリプトで指定された1つ以上の条件の検証を含む。トランザクション104の検証が成功すると、検証ノードはトランザクション104をブロックチェーンに追加し、それをノード102に分配する。
【0039】
本明細書で説明されるシステム及び方法は、ロッキングスクリプトが、検証鍵VKを変更から保護することを可能にし、プルーフπの有効性を確認し、それにより、トランザクション検証中にブロックチェーンにおけるゼロ知識プロトコルの実行を可能にすることに関する。
【0040】
検証可能な計算は、計算のプルーフの生成を可能にする技術である。実施形態では、このような技術をクライアントによって利用して、入力xに対する関数fの評価を、本明細書で作業者と呼ばれる別のコンピューティングエンティティにアウトソースする。場合によって、クライアントは計算上制限されており、クライアントは関数の評価を実行することが実行不可能となる(例えばクライアントが利用可能な計算リソースを使用する計算の期待されるランタイムは、最大許容しきい値を超える)が、そうである必要はなく、クライアントは、一般に言うと、計算ランタイムや計算コスト(例えば関数の評価を実行する計算リソースを割り当てるための経済的コスト)等の任意の適切な基準に基づいて、入力xに対する関数fの評価を委任してよい。
【0041】
作業者は、一実施形態において、本開示の他の箇所でより詳細に説明されるブロックチェーンノードのような任意の適切なコンピューティングエンティティである。一実施形態では、作業者(例えばブロックチェーンノード)は、入力xに対して関数fを評価し、上述のクライアント及び/又はブロックチェーンネットワークの他のノードのような他のコンピューティングエンティティによって確かめることができる出力yと出力yの正当性(correctness)のプルーフπを生成する。プルーフは、引数とも呼ばれることがあるが、実際の計算よりも速く確かめることができ、したがって、上述の作業者によって生成された出力の正当性を決定するために、入力xに対して関数fを再計算する代わりに、プルーフの正当性を確かめることによって、計算オーバーヘッドを低減することができる(例えば電力オーバーヘッドと、電源投入及び実行する計算リソースに関連付けられるコストを低減する)。ゼロ知識検証可能計算では、作業者は、該作業者が特定の特性を有する入力を知っているという証明書をクライアントに提供する。
【0042】
知識のゼロ知識証明(zero-knowledge proof of knowledge)の有効な変形は、zk-SNARK(Succcinct Non-interactive ARgument of Knowledge)である。一実施形態では、全てのペアリングベースのzk-SNARKsは、作業者が一般的なグループオペレーションを使用して複数のグループ要素を計算し、検証者が複数のペアリング積方程式を使用してプルーフをチェックするプロセスを含む。一実施形態では、線形対話型証明は有限のフィールドにわたって機能し、作業者及び検証者のメッセージは、フィールド要素のベクトルを決定するために使用可能な情報を含むか、符号化するか又は他の方法で含む。
【0043】
一実施形態において、本明細書で説明されるシステム及び方法は、ブロックチェーンのマイニングノードが、計算(例えば入力xに対する関数fの評価)を1回実行し、出力の正当性を確かめるために使用できるプルーフを生成することを可能にし、ここで、プルーフの正当性を評価することは、関数を評価することよりも計算コストが低い。このコンテキストでは、オペレーション及びタスクのコスト(すなわち、どのくらい高価か)は、オペレーション又はタスクを実行する計算の複雑さを指し得る。一実施形態では、計算の複雑さは、ソートアルゴリズムを実行する平均計算コスト又は最悪ケースの計算コストを指す-例えばヒープソートアルゴリズム及びクイックソートアルゴリズムは両方ともo(n logn)の平均計算コストを有するが、クイックソートは、o(n2)の最悪ケースの計算コストを有し、一方、ヒープソートは、o(n logn)の最悪ケースの計算コストを有する。一実施形態では、入力xにおける関数fを評価する平均計算コスト及び/又は最悪ケースの計算コストは、プルーフの正当性を評価するコストよりも悪い。したがって、本明細書で説明されるシステム及び方法の使用は非常に有利であり、例えばより計算コストの高いコントラクトを実行することを可能にし得る。なぜなら、そのようなコントラクトは、そのようなコンタクトはブロックチェーンを比例的に検証するために必要な時間を増加させないからである。更なる利点は、検証者システムの電力消費の低減を含んでよく、それにより、検証者コンピュータシステムの効率を改善し、プルーフの正当性を評価する際に、そのような検証者コンピュータシステムを実行することに関連付けられるエネルギーコストを低減することができる。現在、スマートコントラクトはすべてのノードにおいて実行されて、検証されなければならない-この制約はスマートコントラクトの複雑さを制限する。本明細書で説明される方法及びシステムを使用して、正当性のプルーフを生成するためにコントラクトを一度実行することによってブロックチェーンの効率を改善し、作業者によって提供される正当性のプルーフ及びクライアントによって提供される検証鍵に基づいて、ブロックチェーンのすべてのノードがコントラクトの有効性を確かめることができるシステムを実装することができる。このようにして、ブロックチェーンのノードによって集合的に実行することができ、かつ/又は計算コストがより高いスマートコントラクトの計算を可能にするスマートコントラクトのスループットを増加させることによって、ブロックチェーンの効率が改善される。
【0044】
一実施形態では、検証鍵Vk又はその一部は、ゼロ知識プロトコルのセットアップ段階で生成され、かつプルーフπとともに使用される、公開パラメータ及び入力/出力データから抽出でき、作業者によって提供される正当性計算の主張されたプルーフ(alleged proof)を確かめる。例えば上記及び下記でより詳細に説明されるように、ロッキングスクリプトを許容するシステム及び方法は、検証鍵Vkを変更から保護し、プルーフπの有効性をチェックし、トランザクション検証中にブロックチェーン上でゼロ知識プロトコルの実行を可能にする。したがって、本開示は、計算の確認において使用される要素を格納するためにブロックチェーンスクリプト(例えばビットコインベースのネットワークにおいて)を使用して検証段階を実行するシステム及び方法を開示する。
【0045】
図2は、様々な実施形態に従って、プロトコルを実装するために利用され得るコンピューティング環境200を示している。プロトコルは、正当性のプルーフを格納し、「correct-by-construction」暗号手法とスマートコントラクトを組み合わせるために、ブロックチェーン技術を用いて実装されてよい。一実施形態では、公的な検証可能な計算スキームは、3つ段階、すなわちセットアップ段階、計算段階及び検証段階を含む。
【0046】
セットアップ段階は、計算タスクの実行をアウトソースするためにプロセスの一部として実行され得る。クライアントは、以下で言及されるように、計算タスクの実行を作業者に委任する顧客又はクライアントコンピュータシステムのようなエンティティを指してよく、これは、異なるコンピュータシステムであってもよい。クライアントは、一般的に言うと、これらに限定されないが、計算リソース、計算リソースの欠如、タスクを実行するためにクライアントコンピュータシステムを利用することに関連付けられる経済的コスト、タスクを実行するためにクライアントコンピュータシステムを利用することに関連付けられるエネルギーコスト(例えば電力のためにバッテリに依存するモバイルデバイス又はラップトップは、作業者を利用して計算集約的タスクを実行し、それにより、電力を節約し、バッテリ駆動型デバイスの使用を延長し得る)等の様々な理由により、計算タスクの実行を委任してよい。
【0047】
一実施形態において、セットアップ段階は、クライアント、顧客、組織の従業員又は他の任意の適切なエンティティが、正確な意味を有する正式な言語でコントラクトを書くことを含む。コントラクトは、C又はJava(登録商標)のような高水準プログラミング言語で書かれてもよい。一般的に言うと、コントラクトは、コンピュータシステムによって操作できるフォーマットに変換される又は変換することができる任意の言語又はシンタックスで表現され得る。一実施形態では、限定された目的で、ドメイン固有の言語がタイプセーフティを提供してよく、制限された表現度が利用されてよい。生成されるソースコードは、コントラクトの正確な説明であってよい。
【0048】
コンパイラ202は、コンピュータシステムの1つ以上のプロセッサによって実行されると、システムにソースコード206を入力として取らせ、回路を生成する実行可能なコードを含む、任意のハードウェア、ソフトウェア又はそれらの組合せであってよい。コンパイラ202は、バイナリコードのような機械読取可能フォーマットにコンパイルされた命令に基づいて命令を実行又は実施するコンピュータプログラムを指してよい。コンパイラ202が図示されているが、インタプリタ、アセンブラ及び他の適切なソフトウェア及び/又はハードウェアコンポーネントを利用してソースコードを回路に変換してもよいことに留意されたい。一実施形態では、回路は、フィールドFから値を運び、論理及び/又は算術ゲートに接続するワイヤを備える算術回路である。一実施形態では、回路Cは、システムによって使用されて、元の回路Cの完全な説明を提供する多項式のセットを含む二次プログラムQ 208を生成する。
【0049】
一実施形態において、コンパイラ202は、これらに限定されないが、プリプロセッサ命令、スタティックイニシャライザ、グローバル及びローカル関数、ブロックスコープ変数、アレイ、データ構造、ポインタ、関数呼び出し、関数演算子(例えばファンクタ)、条件及びループ、算術及びビットワイズのブール演算子を含む、C又はJava(登録商標)といったプログラミング言語の実質的なサブセットを認識することができる。しかし、一実施形態において、コンパイラ202は、プログラミング言語の規格によるコマンドのセット全体はサポートしない(これは、場合によっては、再帰的アルゴリズムを禁止することのように、特定のタイプのアルゴリズムがスマートコントラクトで実行されることを防止するよう意図されることがある)。一実施形態において、コンパイラは、ソースコードの表現を算術ゲート言語に拡張し、算術回路を生成する。回路の実装は、過去に、「ZERO-Knowledge Contingent Payments Revisited: Attacks and Payments for Services」においてCampanelli,M.等(2017)により、「Circuits of Basic Functions Suitable For MPC and FHE」において、Tillich,S.及びSmart,Bにより考えられている。算術回路は、コンパイラ202又は他の任意の適切なハードウェア、ソフトウェア又はそれらの組合せ(例えば
図2に図示されていないソフトウェアモジュール)によって、二次算術問題(QAP:Quadratic Arithmetic Problem)を構築するために利用されてよい。二次プログラム(quadratic program)は、一実施形態に従って、クライアント(例えば鍵生成及び検証)及び作業者(例えば計算及びプルーフ生成)のための暗号ルーチンのセットにコンパイルされる。いくつかの実施形態では、英国特許出願第1718505.9号に記載されるような算術回路最適化技術が、作業者がスマートコントラクトの結果を決定するために必要なリソースを減らすために利用されてよい。
【0050】
一実施形態では、鍵生成器204は、コンピュータシステムの1つ以上のプロセッサによって実行されると、システムに、二次プログラムを形成する評価鍵及び検証鍵を生成させる実行可能コードを含むハードウェア、ソフトウェア又はそれらの組合せである。二次プログラムとしての計算を符号化するための技術は、Gennaro,R.等(2013)による「Quadratic Span Programs and Succinct NIZKs without PCPs」において考えられている。一実施形態では、二次算術問題(QAP) Qは、フィールドF上の回路Cを符号化し、m+1多項式のセットを含む:
V={vk(x)},W={wk(x)},Y={yk(x)}
ここで、0≦k≦mである。ターゲット多項式t(x)も定義される。Fのn個の要素を入力として取り、n'個の要素を出力とする関数fとし、N=n+n'を所与すると、Qは、{c
1,...,c
N}∈F
Nがfの入力と出力のグループの有効な割り当てであり、係数のリスト{c
N+1,...,c
m}が存在する場合、t(x)がp(x)を除算するように、fを計算する:
【数1】
【0051】
したがって、実施形態においてh(x)・t(x)=p(x)のような何らかの多項式h(x)が存在しなければならない。Qのサイズはmであり、その次数(degree)はt(x)の次数である。
【0052】
一実施形態では、算術回路のQAPを構築することは、回路内の各乗算ゲートgに対して、任意のルートr
g∈Fをピックし、
【数2】
となるようにターゲット多項式を定義することを含む。一実施形態では、インデックスk∈{1...m}は、回路の各入力及び乗算ゲートからの各出力に関連付けられる。Vにおける多項式は、各ゲートへの左入力を符号化し、Wは各ゲートへの右入力を符号化し、Yは出力を符号化する。例えばk番目のワイヤがゲートgへの左入力の場合、v
k(r
g)=1であり、そうでなければv
k(r
g)=0である。したがって、特定のゲートg及びそのルートr
gについて、前述の式を次のように簡略化することができる:
【数3】
ゲートの出力値は、その入力の積に等しい。可分性チェックは、p(r
g)=0となるように、t(x)の各ゲートgとルートr
gに対して1つずつ、deg(t(x))分離チェック(separate checks)に分解される。加算ゲートと乗算定数ゲート(multiplication-by-constant gates)はQAPのサイズ又は次数に寄与しない。
【0053】
一実施形態では、QAPは、フィールドFp上で定義され、ここで、pは、大きい素数(large prime)である。一実施形態では、Fp上のQAPが、加算及び乗算モジュロpに関して表すことができる任意の関数を効率的に計算することが望ましい。算術分割ゲートは、[0,2k-1]内であることが知られている算術ワイヤa∈Fpをk個のバイナリ出力ワイヤに変換するよう設計されることがある。したがって、ブール関数は、算術ゲートを用いて表現できることになる。例えばNAND(a,b)=1-abである。各埋め込みブールゲートには1つの乗算のみかかる。さらに、分割(split)のような新しいゲートは、スタンドアロンとして定義でき、他のゲートとともに構成できる。[0,2k-1]内にあることが知られている入力a∈Fpを所与として、分割ゲートは、ΣkΣ2i-1ai=aのようなaの2進数a1,...,akを保持する、k個のワイヤを出力し、各aiは0又は1のいずれかである。
【0054】
最終的に、すべての証明者及び検証者によって使用される公開パラメータは、セットアップ段階の一部としてシステムによって生成される。評価鍵EK及び検証鍵VKは、クライアントによって選択された秘密値を使用して導出されることに留意されたい。鍵生成器204は、鍵生成アルゴリズムに関連して二次算術プログラム(QAP)を利用して、評価鍵EK210及び検証鍵VK212を生成することができる。
【0055】
一実施形態では、計算タスクを実行することは、作業者による入力216に対する関数の計算(すなわち、f(x)を評価するプロセス)を含む。実施形態において、作業者は、クライアントが計算タスクを委任することができる任意の適切なコンピュータシステムである。入力216は、一実施形態では、作業者に関連付けられる秘密鍵を使用して生成されたデジタル署名のような、作業者の身元を証明する情報を含む。一実施形態では、作業者は、クライアントが、成功した計算に対して(例えばデジタル資産の移転により)報酬を支払うコンピュータシステムである。クライアントは、一実施形態において、入力x及び評価鍵EKを作業者に提供し、作業者は、計算ルーチンに対して評価モジュール214を使用して、出力yを計算し(すなわち、y=f(x)であり、入力はxであり、関数はfである)、評価鍵EK210を使用して、正当性のプルーフ218を生成する。評価モジュールは、一実施形態では、コンピュータシステムの1つ以上のプロセッサによって実行されると、コンピュータシステムに、QAP208の内部回路ワイヤの値を評価させ、QAPの出力yを生成させる命令を含むハードウェア及び/又はソフトウェアである。
【0056】
一実施形態では、二次プログラムの各多項式vk(x)∈Fは、双線形グループ内の要素gvk(s)にマッピングされ、ここで、sは、クライアントによって選択された秘密値であり、gは、グループの生成器であり、Fは、gの離散対数のフィールドである。一実施形態では、所与の入力に対して、作業者は回路を評価して、二次プログラムの係数ciに対応する内部回路ワイヤの出力及び値を得る。したがって、作業者は、v(s)=Σk∈{m}ck・vk(s)を評価してgv(s)を取得し;w(s)及びy(s)を計算し;h(x)=p(x)/t(x)=Σdhi・xiを計算し;評価鍵内のhi及びgs(i)項を使用してgh(s)を計算する。一実施形態では、正当性のプルーフ218は、(gv(s)、gw(s)、gy(s)、gh(s))を含み、検証者は双線形マップを使用して、p(s)=h(s)・t(s)をチェックする。一実施形態では、プルーフπは、後に使用するためにブロックチェーン222上に格納されるか、あるいは証明者がこれらの各々と別々に対話することを必要とせずに、複数の当事者によって確認され得る。一実施形態では、正当性のプルーフの回路ストレージの評価は、トランザクションのロッキングスクリプトによって妨げられているデジタル資産をアンロックするために実行され得る。
【0057】
一実施形態では、プルーフπはブロックチェーンネットワークにブロードキャストされ、検証者220はプルーフを検証するために使用される。一実施形態では、検証者220は、ブロックチェーン上のノードのような任意の適切な計算エンティティである。場合によって、評価鍵EK及び検証鍵VKを生成する同じコンピューティングエンティティもプルーフを確かめることに更に留意されたい。一実施形態では、ブロックチェーンのノードは、検証鍵VKとプルーフπを使用して支払いトランザクションを検証することができ、確認が成功した場合にコントラクトを検証することができる。プロトコルの1つの要件は、検証鍵VKを知っているとしても、作業者は不正確なプルーフを提供できないことである。したがって、このプロトコルでは、共通参照文字列(CRS:common reference string)は、少なくとも評価鍵EK及び検証鍵VKを公開するクライアント又は信頼できる第三者によって生成される。一実施形態では、公開された検証鍵VKは、任意の計算エンティティによって計算を確認するために使用され得る。
【0058】
本明細書で説明される技術を使用して、クライアントは、ブロックチェーントランザクションの受信者の身元等のトランザクションデータを部分的に難読化することができる。一実施形態では、アンロッキングスクリプトは、受信者のアドレス及び受信者の公開鍵を公開しない。しかしながら、場合によっては、トランザクションの値(例えば転送されるデジタル資産の量)が、ブロックチェーンネットワークのノードに対して可視であることがある。一実施形態では、上述及び下述される暗号技術は、クライアントによって、ロッキングスクリプトを二次算術プログラムへ変換し、作業者が算術プログラムを解いてプルーフを生成するために利用される。
【0059】
一般的に言うと、クライアントは、カウンターパーティ又は作業者に支払うために、P2PK及びP2PKHのような標準トランザクション(例えばビットコインベースのブロックチェーンネットワークで定義される標準トランザクション)を使用することができる。例えば一実施形態では、クライアントは、P2PKロッキングスクリプトを算術回路に変換し、回路から導出されたパズルを含む支払いトランザクションをブロードキャストする。カウンターパーティ又は作業者は、回路を受け取り、適切な入力(例えばクライアントと作業者との間の共有秘密又は作業者の秘密鍵を使用して生成されたデジタル署名等、作業者の身元を証明する情報)を提供し、回路を実行して正当性のプルーフπを生成する。一実施形態では、プルーフは、デジタル資産をアンロックするために使用され、さらに、カウンターパーティ又は作業者を識別する情報(例えばカウンターパーティ又は作業者に関連付けられる公開鍵及び/又はデジタル署名)が、難読化されたフォーマットでブロックチェーンに記録されない場合があり得る。
【0060】
実施形態において、検証鍵及び対応するプルーフは、上述及び/又は下述される技術に従って生成される。したがって、検証者は、該検証者が、複数の楕円曲線乗算(例えば各公開入力変数に対して1つ)と5つのペアチェックを計算し、そのうちの1つが追加のペアリング乗算を含むように、検証鍵V
Kとプルーフπを与えられる:
【数4】
【0061】
検証鍵V
K、プルーフπ及び(a
1,a
2,...,a
N)を所与とすると、t(x)がp(x)を分割すること、したがって、(x
N+1,...,x
m)=f(x
0,...,x
N)を確かめるために、検証者は、以下に従って進む。最初に、3つのα項:
【数5】
のすべてをチェックする。ここで、
【数6】
【数7】
及び
【数8】
である。次いで、検証者は、項β:
【数9】
及び
【数10】
をチェックする。最終的に、検証者は、可分性要件をチェックする:
【数11】
ここで、
【数12】
【数13】
【数14】
及び
【数15】
である。
【0062】
したがって、上述のセクションからの表記及び本開示で記載される例を検討すると、検証は、一実施形態に従って、以下の要素のペアチェックのセットを含む:
【数16】
【0063】
図3は、検証可能な計算の性能を調整するための
図300を示している。クライアント302、作業者304及び検証者306は、ブロックチェーンネットワークのノードであってよい。クライアント302は、任意の適切なコンピュータシステムであってよく、コンピュータシステムの1つ以上のプロセッサによって実行されると、コンピュータシステムにスマートコントラクト308を受け取らせる実行可能コードを含んでよい。一実施形態では、スマートコントラクト308は、C、C++又はJava(登録商標)のようなソースコードのような高水準プログラミング言語で符号化される。一実施形態では、コンパイラ、インタプリタ及び/又はアセンブラのようなソフトウェアを利用して、スマートコントラクト308を、フィールド
【数17】
からの値を担持し、加算及び乗算ゲートに接続する「ワイヤ」からなる算術回路310に変換し得る。算術回路は、物理的ワイヤによって接続される一連の物理ゲート(例えば7400シリーズのゲート、フリップフロップ、バッファ、デコーダ、マルチプレクサ等のトランジスタ-トランジスタ論理(TTL)集積回路を使用する)を含む物理回路によって実装することができる論理回路を指してよいことに留意されたい。
【0064】
一実施形態において、クライアント302は、算術回路310及び該回路への入力312を作業者304に提供する。回路310を使用して、元の回路の完全な説明を提供する多項式のセットを含む二次プログラムQを生成してもよい。いずれの場合も、作業者304は、入力312において回路C又は二次プログラムQを実行して、1つ以上の出力314を生成してよい。いくつかの実施形態では、作業者(すなわち、証明者)は、入力ワイヤに割り当てられた値がxのそれらであり、中間値が、C内の各ゲートの正しいオペレーションに対応し、出力ワイヤに割り当てられた値がyであるように、回路ワイヤへの値の割り当てである{C,x,y}についての有効なトランスクリプトを出力として取得することが期待され;請求された出力が正しくない(すなわち、y≠P(x))である場合には{C,x,y}についての有効なトランスクリプトが存在しない。実施形態において、作業者は、回路ワイヤの値のサブセットを提供することが期待され、回路ワイヤの値の選択されたサブセットは、作業者に事前には知られていない。
【0065】
実施形態において、出力y、内部回路ワイヤの値(又はそのサブセット)及び評価鍵EKは、正当性のプルーフ316を生成するために使用される。プルーフπは、ブロックチェーン上に格納されることができ、作業者304が複数の当事者と別個に対話することを必要とせずに、それらの複数の当事者によって検証されることができる。このようにして、検証者306は、公開検証鍵VKとプルーフπを使用して支払いトランザクションを検証することができ、それによりコントラクトを検証することができる。場合によっては、クライアント302は、検証に失敗した場合、支払いトランザクションによって妨げられているデジタル資産を取り戻してよい。場合によっては、検証者306及びクライアント302は同じコンピュータシステムである。
【0066】
図4は、本開示の実施形態の
図400を示す。具体的には、
図4は、ビットコインベースのロッキング及びアンロッキングスクリプトのようなブロックチェーンベースのスクリプトでの使用に適した様々なフォーマットで符号化される楕円曲線402上の点を示す。
【0067】
様々な実施形態において、楕円曲線点は、トランザクションに関連して実行されるロッキング及びアンロッキングスクリプトで符号化され得る。ビットコインベースのシステムでは、これらのスクリプトをスタックベースのスクリプト言語で書いてよい。例えば検証鍵V
Kは、
【数18】
を含んでよく、プルーフπは、要素のセット{π
1,...,π
8}を含んでよく、ここで、
【数19】
及びπ
jは、有限フィールド
【数20】
にわたる楕円曲線上の点である。
【0068】
図4は、楕円曲線402上の点が、ロッキングスクリプト又はアンロッキングスクリプトのようなブロックチェーンスクリプトでの使用に適した、圧縮(P
C)又は非圧縮(P
U)符号化のいずれかを使用して表される例示的な
図400を示している。
【0069】
一実施形態では、
【数21】
を楕円曲線上の点としてよい。P≠0の場合、点がそのアフィン座標で表される。非圧縮符号化404では、点Pは、非圧縮符号化(例えば後述するパラメータ「C」のようなプレフィックス406)及び2つのフィールド要素(x座標408及びy座標410)を示す情報によって表され、圧縮符号化では、点は、そのx座標と、y座標を一意に識別するための追加ビットによってのみ表される。したがって、実施形態において、P
U=C||C||Yであり、ここで、
C=0x04
X=FieldElements2OctetString(x)
Y=FieldElements2OctetString(y)
であり、二重管演算子(double-pipe operator)「||」は、連結演算を指し、FieldElements2OctetString()関数は、フィールド(有限フィールド)の要素を、正確に8ビットを含むオクテット列に変換するために使用され得る。圧縮符号化に関して、P
C=C||Xであり、ここで、
【数22】
である。
【0070】
一実施形態において、非圧縮符号化404は、楕円曲線上の点のx座標408及びy座標410のような有限フィールドの点P(すなわち、
【数23】
)を含む。非圧縮符号化404は更に、符号化が非圧縮符号化であることを決定するために使用可能な情報(例えばx座標408及びy座標410に先頭に付加/添えられたプレフィックス406値)を含む。反対に、圧縮符号化412は、(例えば上述のような)有限フィールドの点Pの符号化及び符号化が圧縮符号化であることを決定するために使用可能な情報を含む。例えば圧縮符号化412Aは、プレフィックス414及び点Pのx座標408を符号化し、対応するy座標は、プレフィックス414に少なくとも部分的に基づいて決定可能である。例えばプレフィックス414はy座標が偶数であることを示す。反対に、第2圧縮符号化412Bは、異なるプレフィックス416及び点Pのx座標408を符号化し、奇数のy座標を決定するために使用される。
【0071】
一般的に言うと、非圧縮点PUは、PUが非圧縮楕円曲線点であること、点のx座標及び点のy座標を決定するために使用可能な情報を符号化する任意の適切なフォーマットで表されてよいことに留意されたい。同様に、圧縮点PCは、PCが圧縮楕円曲線点であることを決定するために使用可能な情報と、点のx座標及びy座標を決定するために使用可能な圧縮された情報を符号化する、任意の適切なフォーマットで表現されてよい。
【0072】
一例として、ビットコインベースのシステムにおけるsecp256k1楕円曲線の点の表現を考える。非圧縮点が表現される実施形態では、非圧縮楕円曲線Pの符号化ビット列における第1オクテットは、0x04であり、点のX座標及び点のY座標に対応する2つの256ビットの数字が続く(すなわち、P=C||X||Y)。一例として、DER(Distinguished Encoding Rules)符号化フォーマットが使用されるが、他の適切な符号化フォーマット、例えば基本符号化規則(BER:Basic Encoding Rules)及び正規符号化規則(CER:Canonical Encoding Rules)も本開示の範囲内で考えられる。
【0073】
一実施形態では、楕円曲線点の長さを含む1バイトのスクリプトオペコードが、実際の点に連結される(例えば長さは、実際の点の先頭に連結される)。例えば
x=0xe3b01684a8a8b66f8e44203db5869b4dcb74a0afc905ae9197ed74a8d6cecdcc
y=0x6424d186a23687532c8b20911defc2f42c93749b3736857912c6abe2dc3f01d1
の場合、圧縮スクリプトPC及び非圧縮スクリプトPUは、一実施形態ではそれぞれ以下の通りである:
スクリプトPC:0x21||0x03e3b01684a8a8b66f8e44203db5869b4dcb74a0afc905ae9197ed74a8d6cecdcc
スクリプトPU0x41||0x04e3b01684a8a8b66f8e44203db5869b4dcb74a0afc905ae9197ed74a8d6cecdcc6424d1 86a23687532c8b20911defc2f42c93749b3736857912c6abe2dc3f01d1
【0074】
一実施形態では、クライアントは、スマートコントラクトの当事者であり、コントラクトの実行のためにブロックチェーンを利用することを決定する。決定の一環として、クライアントは、プルーフπを公開する当事者(例えば作業者)に、クライアントによって管理するデジタル資産を移転するために、ブロックチェーンへの支払移行をポストする。上述のもののような検証者コンピュータシステムは、検証ルーチンを実行して、プルーフπが正しいことを決定することができる。
【0075】
プロトコルに従って、クライアントは、プルーフの製作及び生成のための共通参照文字列を生成してよい。いくつかの実施態様において、共通参照文字列は、信頼される当事者(例えば第三者)によって生成される。信頼される第三者が共通参照文字列を生成してよいが、プロトコルに対する信頼された第三者の導入はオプションであり、プロトコルはクライアントと作業者を必要とし、追加の第三者なしで実行されてもよいことに注意されたい。
【0076】
プロトコルを続けると、計算の検証はトランザクションの検証段階の一部として行われる。ビットコインベースのネットワーク等の一実施形態では、クライアント又は作業者は、ロッキングスクリプト及び/又はアンロッキングスクリプトの一部として
【数24】
を提供するように制約される。この制約は、様々な方法で達成され得る。例えば実施形態において、作業者は、そのアンロッキングスクリプトのうちの1つに
【数25】
を含む直列化されたアンロッキングトランザクションの注入を通して、検証鍵V
Kを提供する。第2の例として、クライアントは、ロッキングスクリプトが
【数26】
及び妥当性確認段階で利用される方程式を含むトランザクションをブロードキャストし、検証鍵V
Kを含むSIGHASH_NONE | SIGHASH_ANYONECANPAYで署名されたトランザクション入力を作成する。クライアントは、{π
1,...,π
8}を追加し、署名し、ブロードキャストする作業者にこの入力を渡す。更に別の例として、作業者は、固定長スクリプトハッシュ(例えば20バイトのスクリプトハッシュ)を、実行のために支払うトランザクションのロッキングスクリプト内で使用することによって、検証鍵V
Kを提供する。もちろん、これらは、ロッキングスクリプト、アンロッキングスクリプト又はブロックチェーンプロトコルに従ってトランザクションの検証の一部として実行される任意の他の適切なスクリプト又はオペレーションの一部として、
【数27】
がどのように提供されるかについての説明的例に過ぎない。一実施形態では、作業者は、アンロッキングスクリプトの一部として{π
1,...,π
8}を提供し、プルーフπは、それが出力スクリプトで設定された条件を満たす場合に許可される。
【0077】
ビットコインベースのシステムのようなブロックチェーンベースのシステムは、一実施形態では、スクリプト(例えばビットコインベースのシステムはスクリプトをサポートする)のようなスクリプト言語に従って、オペレーション(オペコード及びコマンドとも呼ばれる)の実行をサポートする。一実施形態では、トランザクションは、ロッキング(出力)スクリプト及びアンロッキング(入力)スクリプトを含み、標準タイプのリストの1つとして識別可能である。例えばビットコインベースのシステムでは、5つの標準タイプ:すなわち、Pay-to-Public-Key(P2PK)、Pay-to-Public-Key-Hash(P2PKH)、マルチ署名、Pay-to-Script-Hash(P2SH)及びOP_RETURNがある。
【0078】
本明細書で説明されるように、提案されるzkプロトコルを実行する際に、共通参照文字列、プルーフπ及び/又はそれらの部分のような情報は、ブロックチェーン上に格納される。さらに、検証プロセスの一部として、システムが、トランザクション検証プロセスにおいてスタック上でプッシュされた特定のエレメントを抽出し、上述のように検証段階からペアリングをチェックする場合もある。
【0079】
トランザクションは、それらの入力及び出力に組み込まれるスクリプトとして知られる小さなプログラムを含んでよく、そのようなスクリプトは、トランザクションの出力にどのように誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。一実施形態では、プロトコルは、トランザクションが標準トランザクションであるか非標準トランザクションであるかを決定する、トランザクションに対する様々な技術的ルール及び構文ベースの制限を含む。一実施形態では、実行スタック上にプッシュされる要素のサイズ及び入力スクリプトの合計サイズに対する制限が存在する。例えばビットコインベースのシステムでは、実行スタック上にプッシュされるすべての要素は520バイトに制限され、各入力スクリプトは1650バイトに制限される。一実施形態では、スクリプト実行後、スタックは正確に1つの非偽要素(non-false element)を含む。入力スクリプトは、OP_PUSHDATA以外のいずれのOPコード(リディームスクリプト部分を除く)も含むことができない。一実施形態では、ビットコインベースのシステムは、546サトシ(satoshi)の最小出力値を必要とするが、異なるブロックチェーンシステムは、出力値として含まれるべきデジタル資産の異なる量及び/又は単位(例えばトランザクションのマイニングノードへの最小支払い)を定義してもよいことに留意されたい。一実施形態では、最小出力値はゼロである(すなわち、デジタル資産の必要な転送はない)。これらのルールを逸脱したトランザクションは非標準と見なされる。
【0080】
検証段階の一部として、検証者(例えばクライアント)は検証鍵V
K及びプルーフの要素を抽出し、それらをペアリングチェックに使用する。一実施形態では、検証チェックは、制約のセットを満たす双線形マッピングを含む。例として、例えば以下のように:すなわち、
e(3,4+5)=2
3*9=2
27
e(3,4)*e(3,5)=2
3*42
3*5=2
122
15=2
27
のように、形式の制約:
【数28】
を満たす双線形マッピングe(x,y)=2
xyを考える。
【0081】
上述のこのようなペアリングは、例示的な目的のためであることに留意されたい-このようなマッピングは、暗号システムでの適用には逐語的には有用ではない可能性があるが、双線形制約を確認するプロセスは、双線形マップが楕円曲線上に拡張される場合と同じままであることに留意されたい。やはり、説明のために、ビットコインスクリプトを検証段階における共通参照文字列(例えば検証鍵V
K)及びプルーフπから、情報をどのように抽出して使用するかに関する例が以下に示される:
【表1】
【0082】
上記で提供された例は単に、ペアチェックの例を例示するために使用され、
図2に関連して、上述したもののような追加の制約を含んでもよいことに留意されたい。
【0083】
プルーフπの検証に関連して使用するための検証鍵V
Kを提供するための様々な技術が存在する。
図5は、クライアント510が、プルーフπの妥当性確認に使用される検証鍵V
Kを供給する例示的な
図500である。一実施形態では、クライアントは、トランザクション出力502を生成し、このトランザクションは、出力値504(例えばコントラクト実行のための作業者へのデジタル資産の支払い)と、制約のセットを満たす双線形マッピングを含む検証チェックを実行するロッキングスクリプト508を含むか、あるいは他の方法で関連付けられる。一実施形態では、ロッキングスクリプトは、クライアントのデジタル署名に少なくとも部分的に基づいて検証鍵V
Kの完全性を確かめる。場合によっては、ロッキングスクリプトは、妥当性確認に失敗した場合、クライアントが、トランザクションに関連して、上述のように、デジタル資産を取り戻すことができることを指定してよい。このようなトランザクションは、ブロックチェーンネットワークのノード(例えば作業者)によってマイニングされるブロックチェーンネットワークに送信されてよい。いくつかのブロックチェーンシステムでは、トランザクションは、ロッキングスクリプトに関連して、ロッキングスクリプトのサイズ(例えばバイト単位で)を示すパラメータを符号化する。ロッキングスクリプトのサイズは、
図5に関連して示されるように、ロッキングスクリプトサイズ506と呼ばれることがある。
【0084】
一例として、ロッキングスクリプトは、以下に基づいて記述されてよい:
【表2】
【0085】
上記で提供された例は、ロッキングスクリプトを説明するものであり、必ずしも逐語的に、ロッキングスクリプト508自体を説明するものではないことに留意されたい。例えば角括弧内に記述されているいくつかのフィールド-例えばクライアントの公開鍵を参照し得る「<PubKey Client>」-は、逐語的にはロッキングスクリプト508に含まれない。同様に、括弧内のいくつかのフィールドは、数学的計算に基づいてよい-例えば上述の「OP_(i+1)」は、逐語的にはロッキングスクリプトでは含まれなくてよく、むしろ、数学的計算に少なくとも部分的に基づいて決定されるオペコード又はコマンドを指す-この場合、「i」は、プルーフπの要素の数を指し、したがって、プルーフπ={π1,...,π8}の例では、
「OP_(i+1)」は、ロッキングスクリプトにおいて、スタックベースのスクリプト言語で「OP_7」として表現されてもよい。上記の二重スラッシュ「//」の後のテキストはコメントを指し、実行可能コードに対応しないことに更に留意されたい。例えば「//ペアリングを確認する」は、実行可能コードにマップされず、コメントの後に続くテキストがペアリングの検証を行うために利用されることを人間に示すものにすぎない。
【0086】
やはり、上述のトランザクション出力502は単なる例示であり、そのような変形が存在し得ること-トランザクションは、任意の適切な測定単位における任意の適切な支払額を含んでよいこと、そして、例えば上述のロッキングスクリプトの一部又は全部の機能性を利用するような、種々のロッキングスクリプトが存在して得ることに留意されたい。一般的に言うと、ロッキングスクリプト508は、ペアリングチェックのセットを実行する任意の適切なコマンドのセットであってよい。一実施形態では、ロッキングスクリプト508は、クライアントに関連付けられる少なくとも非対称公開鍵を使用する、検証鍵VKの完全性チェックを含む。一実施形態では、ロッキングスクリプトは、妥当性確認に失敗した場合、クライアントがデジタル資産を取り戻すことを可能にする。一実施形態では、ロッキングスクリプト508は、閾値期間(例えば上述したような「<n days>」に対応する値)の後にトランザクションを無効としてマークするための命令を含む。
【0087】
クライアント510は、本開示の他の箇所に記載されるようなクライアントであってよいが、上述のトランザクション502を参照するトランザクション入力512を生成してよく、それをカウンターパーティ(例えば有効なプルーフπを計算するとされる作業者)に伝送する。一実施形態では、トランザクション入力512は、トランザクション出力502に関連付けられる識別子514、トランザクション出力502に関連付けられるトランザクション出力インデックス516(例えば場合によっては、インデックスはゼロベースである)、アンロッキングスクリプト520、アンロッキングスクリプトサイズ518と呼ばれ得るアンロッキングスクリプトのサイズ(例えばバイト単位)を示すパラメータ、シーケンス番号522及びそれらの任意の適切な組合せを符号化してよい。例えばいくつかの実施形態では、アンロッキングスクリプトのサイズは、トランザクション入力512において明示的に符号化されず、他の方法で(例えばアンロッキングスクリプトの終了を示す特定の終了シーケンスの検出を通して)導出可能である。一実施形態において、アンロッキングスクリプト518は、検証鍵VK524と、クライアントに関連付けられるデジタル署名526を含む。場合によっては、アンロッキングスクリプト518は、検証プロセスの実行を制御する分岐情報(branching information)の指示のような追加情報を含む。
【0088】
一例として、アンロッキングスクリプトは、以下に基づいて説明されてよい:
【数29】
【0089】
上記で提供される例は、アンロッキングスクリプトの説明であり、必ずしも逐語的にアンロッキングスクリプトそれ自体ではないことに留意されたい。例えば角括弧内に記述された上記のいくつかのフィールドは、逐語的にはアンロッキングスクリプト518に含まれない。アンロッキングスクリプトの説明である上記の例に戻ると、アンロッキングスクリプト518は、検証鍵VK524の要素の順序付けられた又は順序付けられていないシーケンス、クライアントに関連付けられるデジタル署名526及び分岐情報を含んでよい。一実施形態において、デジタル署名526はハッシュ型フラグを含む。一実施形態にいおいて、ハッシュフラグは、ビットコインベースのシステムに従ってSIGHASH_NONE | SIGHASH_ANYONECANPAYである。アンロッキングスクリプト518は、トランザクションを検証するためにロッキングスクリプトとともに使用可能な実行制御情報を含んでもよい。例えば上述の例では、「1」は、スクリプトがアンロッキングスクリプトの制御ステートメントの最初の分岐(例えばOP_ELSE分岐の代わりにOP_IF分岐)に入るべきであることを示す。
【0090】
一実施形態では、作業者528は、プルーフπ530を計算し、それを作業者に関連付けられるデジタル署名532とともにアンロッキングスクリプト518に付加し、トランザクションを(例えばブロックチェーンネットワークのクライアント及び/又は1つ以上のノードに)ブロードキャストする。
【0091】
一例として、プルーフと作業者のデジタル署名を有するアンロッキングスクリプトは、以下に基づいて説明されてよい:
【数30】
【0092】
したがって、一実施形態では、すぐ上の説明によるアンロッキングスクリプトは、ロッキングスクリプトによって出力に課された条件を満たすことができ、デジタル資産(例えば出力値によって示されるような)を使うことを可能にすることができる。
【0093】
プルーフπの妥当性確認に関連して使用するための検証鍵V
Kを提供するための様々な技術が存在する。
図6は、プルーフπの妥当性確認に使用される検証鍵V
Kを作業者が供給する例示的な
図600である。トランザクション出力602は、ビットコインベースのシステムに従ってよく、出力値604、ロッキングスクリプト606(任意に、いくつかのシステムにおいて)及びロッキングスクリプト608を含んでよい。一実施形態では、トランザクションは、ビットコインベースのシステムに従うPay-to-Script-Hash(P2SH)トランザクションである。一実施形態では、トランザクション出力612は、ビットコインベースのシステムに従い、上記で
図5に関連して説明したように、トランザクションID 614、出力インデックス616、アンロッキングスクリプトサイズ620、アンロッキングスクリプト618及びシーケンス番号622を含む。
図6で説明されるトランザクションの構造は、
図5で説明されるものに従ってよいが、
図6は、特に、P2SHトランザクションに従ってロッキングスクリプト608及びアンロッキングスクリプト618を含んでよいことに留意されたい。クライアント610は、検証鍵V
K及びリディームスクリプト628を生成し、それらを作業者624に提供してよい。
【0094】
一実施形態では、ブロックチェーンシステムは、様々なタイプのトランザクションをサポートする。一実施形態では、サポートされるトランザクション(例えば標準トランザクション)は、ビットコインベースのシステムに従うPay-to-Script-Hash(P2SH)トランザクションのようなスクリプトハッシュベースのトランザクションである。一般的に言うと、スクリプトハッシュベースのトランザクションは、任意のトランザクションを指し、この場合、ロッキングスクリプトの有効性を検証することは、指定のハッシュ値に一致するスクリプトを提供することを含む。例えばビットコインベースのP2SHトランザクションでは、アンロッキングスクリプト620は、リディームスクリプト628を含み、ロッキングスクリプト608は、アンロッキングスクリプトによって供給されるリディームスクリプトのハッシュが、指定の値と一致する少なくとも1つの条件を含む。例えばビットコインベースのシステムでは、ロッキングスクリプトは以下に基づいて記述され得る:
OP_HASH160 <20-byte hash of redeem script> OP_EQUAL
【0095】
場合によって、作業者624は、検証段階で使用される検証鍵VK626を提供する。検証段階をチェックするアンロック条件を、一実施形態では、リディームスクリプトに格納することができる。一実施形態では、P2SHトランザクションのロッキングスクリプトは、リディームスクリプトのハッシュを含み、場合によっては、リディームスクリプトは、秘密に保持され(例えば作業者によって暗号化される)、出力値の転送を引き起こす指示があるときのみ明らかにされる。
【0096】
一実施形態では、クライアント610は、リディームスクリプトを識別することによってP2SH未使用トランザクション出力を作成し、それにハッシュ(例えばHASH160)を適用する。UTXOを転送するために、クライアントは、リディームスクリプトを含むか、かつ/又は他の方法で参照する入力スクリプト(これはUTXOを参照する)を作成する。ブロックチェーンベースのシステムは、リディームスクリプトに含まれ得るデータのタイプ又は量に関する制限を有することがあるが、一実施形態では、リディームスクリプトは任意のデータを格納するのに適していることに留意されたい。例えばビットコインベースのシステムに関連して、スタックに公開できるデータのサイズに対する制限が存在する可能性がある(例えばPUSHDATAオペレーションは520バイトのデータに限定される)。一実施形態では、リディームスクリプトは、
図4に関連して説明したように、圧縮点P
Cと非圧縮点P
Uを含む。したがって、一実施形態では、ビットコインベースのプロトコルに従ってリディームスクリプトに格納することができる楕円曲線点の最大数は、15個の圧縮点(例えば15個の点×34バイト/点=510バイト)又は7つの非圧縮点(7つの点×66バイト/点=462バイト)である。一実施形態では、アンロッキングスクリプト618は、プルーフ630と、リディームスクリプト628と、ロッキングスクリプト608内に符号化された条件のセットを満たすように一緒に使用され得るコマンド(例えばオペコード)とを含む。
【0097】
図7は、一実施形態によるリディームスクリプトを生成するためのプロセス700の説明図である。一実施形態では、プロセス700は、ハードウェア、ソフトウェア又はそれらの組合せを使用して実装される。プロセスを実行するための適切なシステムは、
図6の説明に関連してP2SHアンロッキングスクリプトを供給する作業者を含む。
【0098】
一実施形態では、システムは、検証鍵VKが十分なカーディナリティ(cardinality)のものであると判断する。一実施形態では、システムは、検証鍵の各要素と、一連の制約をチェックするためのスクリプトとを含む、リディームスクリプトのサイズを決定し702、ここで、リディームスクリプト及びプルーフπは、対応するロッキングスクリプトをアンロックするのに十分である。システムは、このようなリディームスクリプトのサイズが所定の閾値を超えるかどうかを決定してよい704。所定の閾値は、ブロックチェーンプロトコルによって課されるサイズ制限に基づいてよい-例えばブロックチェーンプロトコルは、リディームスクリプトが520バイト以下のサイズであることを要求することがある。リディームスクリプトが十分なサイズである場合、システムは、リディームスクリプト及びアンロッキングスクリプトを生成し706、この場合、リディームスクリプトは、検証鍵と、制約のセットをチェックするためのスクリプトを含み、アンロッキングスクリプトは、プルーフπを含み、リディームスクリプト及びアンロッキングスクリプトは、一緒に、支払いトランザクションを検証するのに十分なコマンドのセットを含む。
【0099】
例えば検証鍵V
Kのカーディナリティが16より小さい場合、下記のとおりであってよい:
【表3】
ここで、リディームスクリプト及びアンロッキングスクリプトは、ロッキングスクリプトをアンロックするのに十分である。
【0100】
リディームスクリプトが所定の閾値を超える場合、システムは、リディームスクリプトに先行するアンロッキングスクリプトの一部に検証鍵VKの1つ以上の要素を格納するアンロッキングスクリプトを生成し708、これにより、リディームスクリプトの合計サイズが閾値内になり、検証鍵の要素と上述の制約条件とともにリディームスクリプトを生成する710。一実施形態では、検証鍵V
Kの1つ以上の要素は、アンロッキングスクリプト内の他の場所で符号化されてもよい。例えばV
Kのカーディナリティが15を超える場合、下記のとおりであってよい:
【表4】
ここで、リディームスクリプト及びアンロッキングスクリプトは、ロッキングスクリプトをアンロックするのに十分である。
【0101】
したがって、ロッキングスクリプトにおいて妥当性確認段階で必要な工程を符号化することにより、トランザクションの妥当性確認はzk-protocolの妥当性段階と同等のプロセスとなるはずである。一実施形態において、OP_VERIFYPROOFオペコードは、以下のように使用され得る:
【表5】
【0102】
アンロッキングスクリプト及びロッキングスクリプトは、任意の適切な方法で実装されてよい。アンロッキングスクリプトは、該アンロッキングスクリプトが<π
1>..<π
8>及び検証鍵V
Kを符号化する任意の適切な方法で実装される。同様に、ロッキングスクリプトは、π
i及び
【数31】
が抽出され、ペアリングコールが行われる、任意の適切な方法で実装されてよい。一実施形態では、上述のOP_PAIRINGは、方程式y
2=x
3+3によって定義されるbn128曲線のような効率的な双線形マッピングを有する楕円曲線をサポートするオペコードである。
【0103】
図8は、本開示の少なくとも1つの実施形態を実施するために使用することができるコンピューティングデバイス800の例示的な簡略化されたブロック図である。様々な実施形態において、コンピューティングデバイス800を使用して、上記で図示及び説明されたシステムのいずれかを実装することができる。例えばコンピューティングデバイス800は、データサーバ、ウェブサーバ、ポータブルコンピューティングデバイス、パーソナルコンピュータ又は任意の電子コンピューティングデバイスとして使用するために構成され得る。
図8に図示されるように、コンピューティングデバイス800は、実施形態において、バスサブシステム804を介して複数の周辺サブシステムと通信し、動作可能に結合される1つ以上のプロセッサ802を含むことができる。いくつかの実施形態において、これらの周辺サブシステムは、メモリサブシステム808及びファイル/ディスクストレージサブシステム810を含むストレージサブシステム806と、1つ以上のユーザインタフェース入力デバイス812と、1つ以上のユーザインタフェース出力デバイス814と、ネットワークインタフェースサブシステム816を含む。このようなストレージサブシステム806は、情報の一時的又は長期的な記憶のために使用され得る。
【0104】
いくつかの実施形態において、バスサブシステム804は、コンピューティングデバイス800の様々な構成要素及びサブシステムが、意図されるとおりに互いに通信することを可能にする機構を提供する。バスサブシステム804は、単一のバスとして概略的に示されているが、バスサブシステムの代替の実施形態は、複数のバスを利用する。いくつかの実施形態では、ネットワークインタフェースサブシステム816は、他のコンピューティングデバイス及びネットワークへのインタフェースを提供する。ネットワークインタフェースサブシステム816は、いくつかの実施形態では、コンピューティングデバイス800からデータを受け取り、他のシステムにデータを送信するためのインタフェースとして機能する。いくつかの実施態様において、バスサブシステム804は、詳細、検索語等のようなデータを通信するために利用される。
【0105】
いくつかの実施形態において、ユーザインタフェース入力デバイス812は、キーボード等の1つ以上のユーザ入力デバイス;一体型マウス、トラックボール、タッチパッド又はグラフィックスタブレット等のポインティングデバイス;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;音声認識システム、マイクロフォン等のオーディオ入力デバイス;及び他のタイプの入力デバイスを含む。一般に、「入力デバイス」という用語の使用は、情報をコンピューティングデバイス800に入力するためのあらゆる可能なタイプのデバイス及び機構を含むように意図される。いくつかの実施形態において、1つ以上のユーザインタフェース出力デバイス814は、ディスプレイサブシステム、プリンタ又はオーディオ出力デバイス等の非視覚的ディスプレイ等を含む。いくつかの実施形態において、ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)や発光ダイオード(LED)ディスプレイ、投影装置等のフラットパネルデバイス又は他のディスプレイデバイスを含む。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス800からの情報を出力するためのあらゆる可能なタイプのデバイス及び機構を含むように意図される。1つ以上のユーザインタフェース出力デバイス814を使用して、例えばユーザインタフェースを提示し、そのような対話が適切であり得るときに、説明されたプロセス及びその変形を実行するアプリケーションとのユーザ対話を容易にすることができる。
【0106】
いくつかの実施形態において、ストレージサブシステム806は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構成体を記憶するためのコンピュータ読取可能記憶媒体を提供する。アプリケーション(プログラム、コードモジュール、命令)は、いくつかの実施形態において1つ以上のプロセッサによって実行されるとき、本開示の1つ以上の実施形態の機能を提供し、実施形態においては、ストレージサブシステム806に記憶される。これらのアプリケーションモジュール又は命令を、1つ以上のプロセッサ802によって実行することができる。様々な実施形態において、ストレージサブシステム806は更に、本開示に従って使用されるデータを記憶するためのリポジトリを提供する。いくつかの実施形態では、ストレージサブシステム806は、メモリサブシステム808及びファイル/ディスクストレージサブシステム810を含む。
【0107】
実施形態において、メモリサブシステム808は、複数のメモリ、例えばプログラム実行中の命令及びデータの格納のためのメインランダムアクセスメモリ(RAM)818及び/又は固定命令を格納することができる読取専用メモリ(ROM)820を含む。いくつかの実施形態において、ファイル/ディスクストレージサブシステム810は、プログラムファイル及びデータファイルのための非一時的な永続的(不揮発性)ストレージを提供し、ハードディスクドライブ、関連する取り外し可能媒体と共にフロッピーディスクドライブ、コンパクトディスク読取専用メモリ(CD-ROM)ドライブ、光学ドライブ、取り外し可能媒体カートリッジ又は他の同様の記憶媒体を含むことができる。
【0108】
いくつかの実施形態において、コンピューティングデバイス800は、少なくとも1つのローカルクロック824を含む。ローカルクロック824は、いくつかの実施形態では、特定の開始日から発生したティック(ticks)の数を表すカウンタであり、いくつかの実施形態では、コンピューティングデバイス800内に一体的に配置される。様々な実施形態では、ローカルクロック824は、特定のクロックパルスにおいてコンピューティングデバイス800のためのプロセッサ及びそこに含まれるサブシステム内でデータ転送を同期させるために使用され、コンピューティングデバイス800と、データセンター内の他のシステムとの間の同期オペレーションを調整するために使用され得る。別の実施形態では、ローカルクロックは、プログラム可能な間隔のタイマである。
【0109】
コンピューティングデバイス800は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション又は以下に説明される任意の他のデバイスを含む、様々なタイプのいずれかとすることができる。加えて、コンピューティングデバイス800は、いくつかの実施形態では、1つ以上のポート(例えばUSB、ヘッドフォンジャック、ライトニングコネクタ等)を通してコンピューティングデバイス800に接続することができる別のデバイスを含むことができる。実施形態において、このようなデバイスは、光ファイバコネクタを受け入れるポートを含む。したがって、いくつかの実施形態において、このデバイスは、光信号を、処理のためにデバイスをコンピューティングデバイス800に接続するポートを通して伝送される電気信号に変換する。コンピュータ及びネットワークの絶えず変化する性質のために、
図8に示されるコンピューティングデバイス800の説明は、デバイスの好ましい実施形態を説明する目的のための特定の例としてのみ意図されている。
図8に示されるシステムよりも多くの又は少ない構成要素を有する多くの他の構成も可能である。
【0110】
上述の実施形態は、本発明を限定するものではなく、例示するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替の実施形態を設計することができることに留意されたい。請求項において、括弧内に付したすべての引用符号は、請求項を限定するものと解釈されるべきではない。「備えた(comprising)」及び「備える(comprises)」等の用語は、いずれかの請求項又は明細書全体に列挙されるもの以外の要素又はステップの存在を除外するものではない。本明細書において、「備える」は「含む又はから構成される」を意味し、「備えた」又は「含む又はから構成された」を意味する。要素の単数形参照は、そのような要素の複数形参照を除外するものではなく、その逆もまた同様である。本発明は、いくつかの別個の要素を含むハードウェアによって及び適切にプログラムされたコンピュータによって実装されてよい。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のいくつかが、1つの同じハードウェアアイテムによって具体化されてよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せを有利に利用することができないことを示すものではない。
【0111】
本明細書において引用された刊行物、特許出願及び特許を含むすべての文献は、それにより、参照によって組み込まれるように各文献を個々に具体的に示し、本明細書においてその全体を述べたものと同じ限度で、参照によって本明細書に組み込まれる。