秘密の数字sを設定する;
2つの大きな素数pとqを選択し、それらの積nを計算します。素数pとqを設定し、得られたnを計算します;
v=s^2 mod nを計算します。ここで、vは証明の一部として検証者に送信されますが、それだけでは検証者や他の観察者がsを推測するには不十分です。
ランダムに整数rを選択し、x=r^2 mod nを計算して検証者に送信します。この値xはその後の検証プロセスに使用されますが、同様にsは公開されません。ランダムな整数rを設定し、計算によって得られたx。
もしa=1の場合、証明者はg=rs mod nを計算して送信します。検証者が送信するランダムビットaに応じて、証明者はgを計算します。
最後に、バリデーターは受け取ったgに基づいてxがg^2 mod nに等しいかどうかを検証します。等式が成立する場合、バリデーターはこの証明を受け入れます。a=0のとき、バリデーターはg^2 mod nを計算し、右側でxを検証します; a=1のとき、バリデーターはg^2 mod nを計算し、右側でxvを検証します。
ここで、検証者が計算して得られたx=g^2 mod nを見てみると、証明者が成功裏に検証プロセスを通過したことが示され、同時に彼の秘密の数字sが漏洩することはありませんでした。ここで、aは0または1のいずれかしか取れないため、2つの可能性しかありません。証明者が運に頼って検証を通過する確率)がaが0のとき(で1/2となります。しかし、検証者はその後、証明者にn回挑戦し、証明者は関連する数字を絶えず変更し、検証者に提出し、常に成功裏に検証プロセスを通過します。こうして証明者が運に頼って検証を通過する確率は)1/2(^n)が0に無限に近づき、証明者が確かにある秘密の数字sを知っているという結論が証明されます。この例は、zk-SNARKsシステムの完全性、信頼性、そして零知識性を証明しています。
zk-SNARKs技術のブロックチェーン分野における応用と発展傾向
zk-SNARKs技術のブロックチェーン分野における発展と応用の概説
サマリー
zk-SNARKs(ZKP)技術は、ブロックチェーン分野において分散型台帳技術に次ぐ最も重要な革新の一つと広く見なされており、現在のベンチャーキャピタルの重点分野でもあります。本稿では、ZKPの約40年にわたる発展の歴史と最新の研究成果を体系的に振り返ります。
この記事では、まずZKPの基本概念と歴史的背景を紹介し、回路ベースのZKP技術、zkSNARK、Ben-Sassonモデル、Pinocchio、Bulletproofs、Ligeroなどの設計、応用、最適化方法について重点的に分析しています。計算環境に関しては、ZKVMとZKEVMが取引処理能力を向上させ、プライバシーを保護し、検証効率を高める方法を探ります。また、ZK RollupがLayer 2拡張ソリューションとしての作業メカニズムと最適化方法、さらにハードウェアアクセラレーション、ハイブリッドソリューション、専用ZK EVMの最新の進展についても説明しています。
最後に、記事はZKCoprocessor、ZKML、ZKThreads、ZK Sharding、ZK StateChannelsなどの新興概念を展望し、これらがブロックチェーンのスケーラビリティ、相互運用性、プライバシー保護における潜在能力について探討しました。
これらの最先端技術と発展動向の包括的な分析を通じて、本論文はZKP技術の理解と応用に対する体系的な視点を提供し、ブロックチェーンシステムの効率と安全性を向上させる上での巨大な潜在能力を示し、将来の投資決定に重要な参考を提供します。
目次
前書き
ゼロ知識証明の基礎知識
概要
ゼロ知識証明の例
非対話型のゼロ知識証明
背景
NIZKの提案
フィアット・シャミール変換
イェンス・グロスと彼の研究
その他の研究
回路ベースのゼロ知識証明
背景
回路モデルの基本概念と特徴
ゼロ知識証明における回路設計と応用
潜在的な落とし穴と課題
第四に、ゼロ知識証明モデル
背景
よくあるアルゴリズムモデル
線形PCPと離散対数問題に基づくスキーム
一般人が証明するためのスキーム
ゼロ知識(PCP)確率主義に基づく検証可能な証明
CPC(に基づく一般的な証明構造)のセットアップフェーズを分類する
ゼロ知識仮想マシンの概要と開発
背景
既存のZKVMの分類
フロントエンドとバックエンドのパラダイム
ZKVMのメリットとデメリット
六、zk-SNARKsイーサリアム仮想マシンの概説と発展
背景
ZKEVMのしくみ
ZKEVMの実装プロセス
ZKEVMの特徴
ゼロ知識レイヤー2ネットワークソリューションの概要と開発
背景
ZK Rollupの作業メカニズム
ZK Rollupの欠点と最適化
ゼロ知識証明の今後の展開方向
コンピューティング環境の開発を加速する
ZKMLの提案・開発
ZKP拡張技術の開発
ZKPの相互運用性の開発
まとめ
イントロダクション
Web3時代の到来に伴い、ブロックチェーンアプリケーション(DApps)は急速に発展しており、毎日のように新しいアプリが登場しています。近年、ブロックチェーンプラットフォームは毎日数百万ユーザーの活動を支え、数十億件の取引を処理しています。これらの取引から生成される膨大なデータには、ユーザーの身元、取引額、アカウントアドレス、残高などの敏感な個人情報が含まれることがよくあります。ブロックチェーンのオープン性と透明性を考慮すると、保存されているデータはすべての人に見えるため、さまざまなセキュリティとプライバシーの問題が引き起こされています。
現在、これらの課題に対処するためにいくつかの暗号技術が存在します。これには、同型暗号、リング署名、安全なマルチパーティ計算、そして零知識証明が含まれます。同型暗号は、暗号文を解読せずに演算を実行できるため、アカウントの残高や取引金額の安全性を保護するのに役立ちますが、アカウントアドレスの安全性は保護できません。リング署名は、署名者の身元を隠すことができる特別なデジタル署名の形式を提供し、これによりアカウントアドレスの安全性を保護しますが、アカウントの残高や取引金額を保護することはできません。安全なマルチパーティ計算は、複数の参加者間で計算タスクを分配することを可能にし、他の参加者のデータを知ることなく、アカウントの残高や取引金額の安全性を有効に保護しますが、同様にアカウントアドレスの安全性を保護することはできません。さらに、同型暗号、リング署名、安全なマルチパーティ計算は、取引金額、アカウントアドレス、アカウントの残高を漏らすことなく、ブロックチェーン環境において証明者が十分な取引金額を持っているかどうかを検証するために使用することはできません。
零知識証明は、仲介データを明らかにすることなく、特定の命題の正当性を検証することを可能にする、より包括的なソリューションです。この検証プロトコルは、複雑な公開鍵インフラストラクチャを必要とせず、悪意のあるユーザーが追加の有用な情報を得る機会を与えることなく、繰り返し実施できます。ZKPを通じて、検証者はプライベートな取引データを漏らすことなく、証明者が十分な取引額を持っているかどうかを検証できます。検証プロセスには、証明者が主張する取引額を含む証明を生成し、その証明を検証者に渡すことが含まれます。検証者はその証明に対して事前定義された計算を行い、最終的な計算結果を出力して、証明者の主張を受け入れるかどうかの結論を導きます。証明者の主張が受け入れられた場合、彼らは十分な取引額を持っていることを意味します。上記の検証プロセスは、偽造なしでブロックチェーンに記録できます。
ZKPこの特性は、ブロックチェーン取引および暗号通貨アプリケーションにおいて中心的な役割を果たし、特にプライバシー保護やネットワーク拡張の面で重要であり、学術研究の焦点となるだけでなく、分散型台帳技術(、特にビットコイン)が成功裏に実施されて以来、最も重要な技術革新の一つと広く見なされています。同時に、業界の応用とリスク投資の重点分野でもあります。
このように、ZKPに基づく多くのネットワークプロジェクトが次々と登場しています。例えば、ZkSync、StarkNet、Mina、Filecoin、Aleoなどです。これらのプロジェクトの進展に伴い、ZKPのアルゴリズム革新が次々と生まれ、報告によればほぼ毎週新しいアルゴリズムが登場しています。また、ZKP技術に関連するハードウェア開発も急速に進展しており、ZKPに最適化されたチップが含まれています。例えば、Ingonyama、Irreducible、Cysicなどのプロジェクトは大規模な資金調達を完了しており、これらの進展はZKP技術の急速な進歩を示すだけでなく、汎用ハードウェアからGPU、FPGA、ASICなどの専用ハードウェアへの移行を反映しています。
これらの進展は、zk-SNARKs技術が暗号学分野の重要な突破であるだけでなく、特にプライバシー保護と処理能力の向上において、より広範なブロックチェーン技術の応用(を実現するための重要な推進力であることを示しています。
したがって、私たちは将来の投資決定をより良く支援するために、零知识证明)ZKP(に関する知識を体系的に整理することに決めました。そのため、私たちはZKPに関連する重要な学術論文)を関連性と引用回数に基づいてレビューし、ランキングしました(。また、私たちはこの分野のリーディングプロジェクトの資料とホワイトペーパー)を資金調達規模に基づいて詳細に分析し、ランキングしました(。これらの包括的な資料収集と分析は、本稿の執筆に堅実な基盤を提供しました。
1. ゼロ知識証明の基礎知識
) 1. 概要
1985年、Goldwasser、Micali、Rackoffは論文の中で初めて零知識証明###ZKP(と対話型知識証明)IZK(の概念を提案しました。この論文は零知識証明の基礎的な作品であり、後続の学術研究に影響を与える多くの概念を定義しました。例えば、知識は「計算不可能な出力」と定義されており、知識は出力でなければならず、計算不可能であることを意味します。これは単純な関数ではなく、複雑な関数でなければならないということです。計算不可能は通常NP問題として理解され、解の正しさを多項式時間内で検証できる問題を指します。多項式時間とは、アルゴリズムの実行時間が入力の大きさの多項式関数で表されることを意味します。これは計算機科学においてアルゴリズムの効率と実行可能性を測る重要な基準です。NP問題の解決過程は複雑であるため、計算不可能と見なされますが、その検証過程は比較的簡単であるため、零知識証明の検証に非常に適しています。
NP問題のクラシックな例は旅行商問題で、これは一連の都市を訪れ、出発点に戻る最短経路を見つけることです。最短経路を見つけることは難しいかもしれませんが、特定の経路が最短であるかどうかを検証することは比較的簡単です。なぜなら、特定の経路の総距離を検証することは多項式時間内に完了できるからです。
Goldwasserらはその論文で「知識の複雑さ」という概念を導入し、インタラクティブ証明システムにおいて、証明者が検証者に漏らす知識の量を定量化しました。彼らはまた、インタラクティブ証明システム)IPS(を提案し、その中で証明者)Prover(と検証者)Verifier(が複数回のやり取りを通じてある命題の真実性を証明します。
以上のように、Goldwasserらがまとめた零知识证明の定義は、特定のインタラクティブな証明であり、その中で検証者は証明の過程で文の真偽以外の追加情報を得ることがない。また、3つの基本的な特性を提案している。
完備性)completeness(:もし証明が真実であれば、誠実な証明者は誠実な検証者にこの事実を納得させることができる;
信頼性)サウンドネス(: もし証明者が声明の内容を知らなければ、彼は無視できる確率で検証者を欺くことしかできない;
ゼロ知識)zero-knowledge(: 証明プロセスが完了した後、検証者は「証明者がこの知識を持っている」という情報だけを得て、追加の内容は得られません。
) 2. ゼロ知識証明の例
零知識証明およびその属性をより良く理解するために、以下は証明者が特定の秘密情報を持っているかどうかを検証するための例であり、この例は設定、挑戦、応答の3つの段階に分かれています。
ステップ 1: ###Setup(を設定する
このステップでは、証明者の目標は、特定の秘密の数字sを知っていることを証明する証拠を作成することですが、sを直接表示することはありません。
秘密の数字sを設定する; 2つの大きな素数pとqを選択し、それらの積nを計算します。素数pとqを設定し、得られたnを計算します; v=s^2 mod nを計算します。ここで、vは証明の一部として検証者に送信されますが、それだけでは検証者や他の観察者がsを推測するには不十分です。 ランダムに整数rを選択し、x=r^2 mod nを計算して検証者に送信します。この値xはその後の検証プロセスに使用されますが、同様にsは公開されません。ランダムな整数rを設定し、計算によって得られたx。
ステップ2:チャレンジ)Challenge(
検証者はランダムに位置a)を選択し、0または1(のいずれかにすることができます。そして、それを証明者に送信します。この"チャレンジ"は、証明者が次に取るべきステップを決定します。
ステップ 3: )Response(に応答する
検証者が発行したa値に基づいて、証明者が応答します:
もしa=0の場合、証明者はg=r)を送信します。ここでrは彼が以前にランダムに選択した数(です。
もしa=1の場合、証明者はg=rs mod nを計算して送信します。検証者が送信するランダムビットaに応じて、証明者はgを計算します。
最後に、バリデーターは受け取ったgに基づいてxがg^2 mod nに等しいかどうかを検証します。等式が成立する場合、バリデーターはこの証明を受け入れます。a=0のとき、バリデーターはg^2 mod nを計算し、右側でxを検証します; a=1のとき、バリデーターはg^2 mod nを計算し、右側でxvを検証します。
ここで、検証者が計算して得られたx=g^2 mod nを見てみると、証明者が成功裏に検証プロセスを通過したことが示され、同時に彼の秘密の数字sが漏洩することはありませんでした。ここで、aは0または1のいずれかしか取れないため、2つの可能性しかありません。証明者が運に頼って検証を通過する確率)がaが0のとき(で1/2となります。しかし、検証者はその後、証明者にn回挑戦し、証明者は関連する数字を絶えず変更し、検証者に提出し、常に成功裏に検証プロセスを通過します。こうして証明者が運に頼って検証を通過する確率は)1/2(^n)が0に無限に近づき、証明者が確かにある秘密の数字sを知っているという結論が証明されます。この例は、zk-SNARKsシステムの完全性、信頼性、そして零知識性を証明しています。
次に、非対話型のゼロ知識証明
( 1. バックグラウンド
zk-SNARKs)ZKP###は、従来の概念では通常、インタラクティブでオンラインのプロトコル形式です。例えば、Sigmaプロトコルは認証を完了するために通常3から5ラウンドのインタラクションを必要とします。しかし、即時取引や投票などのシナリオでは、複数ラウンドのインタラクションを行う機会がないことが多く、特にブロックチェーン技術の応用においては、オフライン検証機能が非常に重要になります。
( 2. NIZKのご提案
1988年、Blum、Feldman、Micaliは、非対話型のゼロ知識)NIZK###証明の概念を初めて提案し、証明者が複数回の相互作用なしで(Prover)ことを証明しました