
ハードコア解説:ゼロ知識証明(ZK)がなぜ重要なのか?
TechFlow厳選深潮セレクト

ハードコア解説:ゼロ知識証明(ZK)がなぜ重要なのか?
ZKの将来性は明るく、これまで不可能だったことを現実にできる。
著者:Glaze & Fundamental Labs 研究チーム
このリサーチレポートが気に入ったら、いいねやブックマークをして、関心のある友人に共有してください。私たちにとって大きな助けになります。
TL;DR
ZKの将来性は明るく、これまで不可能だったことを現実にできるようになります。近年、ZK分野ではパフォーマンスの強化、アップグレード性、信頼できる初期化の不要といった画期的な進展が見られ、これらの改善によりZKは応用段階へと押し進められています。そのため、新しいZK証明システムを評価する際には、以下の観点から検討できます。
1件および10件の取引に対する証明時間
1件および10件の取引に対する検証時間
1件および10件の取引をまとめた後の証明サイズ
信頼できる初期化(Trusted Setup)
参照文字列の長さ
CRSサポート
SRSサポート
再帰的証明のサポート
量子コンピュータへの耐性
セキュリティがどの暗号学的仮定に基づいているか
ZKEVMはZKRUの次のマイルストーンであり、ZKEVMには3つの段階がある:
コンセンサスレベル
バイトコードレベル
言語レベル
ZKRUはまだ応用段階に入ったばかりで、エコシステムは未成熟です。開発者たちはZKの潜在能力を完全には引き出していません。人々は依然としてこうした先端理論から絶えずインスピレーションを得ており、注目すべき方向性は以下の通りです。
高TPSと低手数料を最大限活用するアプリケーション
Layer2間の通信プロトコル/アプリケーション
流動性の集約
開発ツール/フレームワーク
クラウドベースの開発ツール
ユニークな機能を持つ跨Layer2・Layer1アプリケーション
異なるZKVM
ZKブリッジ
他のチェーン上でのZKの応用
再帰機能を持つLayer2
DAOおよびコミュニティガバナンスにおけるZKの応用
商用化されたZKアルゴリズム
チップとクラウドコンピューティング
ZKの応用は主にRollupとプライバシーの二点に集中しています。プライバシーよりもRollupの方が将来性があります。プライバシーは一定程度、ブロックチェーンのオープンな精神に反します。また、規制上の問題が生じる可能性もあります。Web2時代において、私たちはプライバシー重視のアプリケーションがトップに立つことはありませんでした。すべてのアプリケーションのプライバシー保護レベルは向上し続けていますが、トップアプリはプライバシーではなく、最も使いやすいアプリです。プライバシーには代償があり、多くの場合、ユーザーが最も気にする使いやすさを犠牲にしています。
ZKプライバシープロジェクトを評価する際には、以下の点が重要です。
ZKはあくまで技術であるため、製品力とチームに注目すべき
ZKは複雑な技術であり、開発スピードを遅らせる可能性がある
ZKはDAOガバナンスと身元認証に有利
ZKは機関のブロックチェーン導入に不可欠な技術
直感的理解
ゼロ知識証明(Zero Knowledge Proof)とは何かを一言で説明すると:「証明者(Prover)が検証者(Verifier)に対してある命題が真であることを納得させつつ、命題が真であること以外の情報を一切与えない」というものです。
ZKは匿名性のために設計されています。例えば、自分の身分証明書番号が有効であることを証明できるが、検証者はその番号自体を知ることができないという状況を想像してみてください。情報収集が過剰になっている現代社会において、これは非常に重要な意味を持ちます。
もう少し具体的な例を見てみましょう。小明と小紅が数独を解いています。小紅は小明に数独の答えを見つけたことを証明したいのですが、小明がまだ答えを見つけていないため、答えを直接教えたくありません。どうやってこのような証明を設計すればよいでしょうか?

数独の解答をカードに書き、各カードに数字を1つずつ記入し、正解通りに並べて裏向きにします。小明はランダムに1行、1列または1ブロックを選択できます。小紅は小明が選んだカードを取り出し、シャッフルして表向きにします。これらが1~9までの重複しない数字であれば、小明は小紅がその部分の数独を解けていることを理解しますが、運が良かっただけかもしれません。この手順を繰り返し、毎回正しい結果が出れば、小紅が偶然正解しているとは考えにくくなり、本当に答えを知っていると判断できます。このようにして、小明は小紅が数独を解けていることを確認できますが、それでもなお、答えそのものは知ることができません。

まだ疑問がある場合は、この動画をご覧ください。UCLAのコンピュータ科学教授が5つの難易度レベルでZKについて解説しています。
代表的なゼロ知識証明のアプローチ
ゼロ知識証明の流派について紹介する前に、よく耳にするZK-SNARKは一種のアルゴリズムではなく、むしろ一つのアプローチであることに注意が必要です。ZK-STARKは特定のゼロ知識証明アルゴリズムの名前です。
我々が最もよく知っているのはおそらくZK-SNARKでしょう。SNARKは「succinct non-interactive arguments of knowledge」の略称です。SNARKの最大の特徴は「N」すなわち非インタラクティブ性にあります。
簡潔性(Succinct):検証に必要な計算量は、証明対象のプログラムを再度実行するよりもはるかに小さい。
非インタラクティブ性(Non-interactive):証明者と検証者の間でラウンドごとのやり取りは不要。最初にのみ信頼できる初期化(Trust Setup)を行えばよく、その後は他の検証者も参加可能。
アーギュメント(Argument):証明者が極めて強力な計算能力を持っていれば、偽の証明を作成できる可能性がある。しかし、そのようなケースでは、主流の公開鍵暗号方式も安全ではなくなる。
知識(Knowledge):証明者は他人が知らない秘密を知っていなければ、証明を作成できない。
ZK-SNARKの最大の問題点は、信頼できる初期化(Trusted Setup)が必要であることです。信頼できる初期化によって参照文字列(Reference String)が生成されます。もしRSが漏洩すると、誰でも偽の証明を作成できてしまいます。さらに、複数人による信頼できる初期化の設計も非常に困難です。また、RSは特定のプログラム専用であり、別のプログラムには別の信頼できる初期化が必要です。そのため、ZK-SNARKは汎用計算には適用できません。さらに、RSはアップグレードできません。プログラムをアップグレードした場合、信頼できる初期化を再実行しなければなりません。
これらの問題を解決するために、研究者たちは2つの方向性を見つけました。
Transparent Setup:信頼できる初期化により共通参照文字列(Common Reference String)が生成される。CRSは公開され、秘匿性は必要ない。Fractal、Halo、ZK-STARK、SuperSonicなどがこの路線を採用している。ただし、この方法では証明サイズが大きくなり、kB単位になる。ブロックチェーンではストレージコストが高いため、問題となる。
Universal Setup:信頼できる初期化により構造化参照文字列(Structured Reference String)が生成されるが、これは秘匿性が必要。SRSにより、同じ初期化を異なるプログラムに利用でき、汎用計算の証明が可能になる。Marlink、SuperSonic-RSA、Plonkなどがこの路線を採用している。
業界では以下のようなアルゴリズムが広く採用されています。
Groth16:Zcashが当初使用していたアルゴリズム。証明生成が高速で、証明サイズが小さいことから、ゼロ知識証明のベンチマーク的存在。ただし、信頼できる初期化が必要であり、一度の初期化は一つのプログラムにしか使えない。ツールチェーンは最も整備されている。
Sonic:Universal Setupに対応。SRSのサイズはプログラムサイズに比例。証明サイズは固定だが、検証に多くの計算資源が必要。Sonicにより、汎用計算のゼロ知識証明が可能になった。
Fractal:再帰(Recursion)をサポート。ただし、証明サイズが大きい。
Halo:再帰をサポートするが、証明時間が非線形のため簡潔性(Succinct)を満たしていない。Halo2は現在主流の証明システム。
SuperSonic:最初の実用的な、適用可能なTransparent ZK-SNARK。
Marlin:プログラムのアップグレードが可能。性能はSonicとGroth16の中間。
Plonk:プログラムのアップグレードが可能。参加者が順次信頼できる初期化に加わることで、多数参加型の初期化が容易になる。Plonkは多項式コミットメントではなく、Kate commitments を使用している(ZK-SNARKでは、まず計算問題を多項式問題に変換する)。多くの現代的なゼロ知識証明システムはPlonkに基づいて構築されており、優れたツールチェーンを持っている。
いくつかのアルゴリズムを詳しく調べたいなら、Groth16、Halo、Plonkが最適な選択肢です。
CRSはTransparent Setup方式で生成される共通参照文字列。SRSはUniversal Setup方式で生成される構造化参照文字列。証明サイズはLayer1上でどれだけのストレージを占有するかを決定し、証明・検証時間は計算資源の消費を決定します。

出典:Comparing General Purpose zk-SNARKs
下図はゼロ知識証明アルゴリズムのベンチマークで、この実験に基づく。

出典:Comparing General Purpose zk-SNARKs
他にもっと詳しいベンチマークやアルゴリズム比較は以下をご覧ください。
Benchmarking Zero-Knowledge proofs with isekai | by Guillaume Drevon | Sikoba Network | Medium
Community Proposal: A Benchmarking Framework for (Zero-Knowledge) Proof Systems (zkproof.org)
以上より、新しいZKアルゴリズムを評価する際に意識すべき指標は以下の通りです。
1件および10件の取引に対する証明時間
1件および10件の取引に対する検証時間
1件および10件の取引をまとめた後の証明サイズ
信頼できる初期化
参照文字列の長さ
CRSサポート
SRSサポート
再帰的証明のサポート
量子コンピュータへの耐性
セキュリティがどの暗号学的仮定に基づいているか
ZKはここ数年で研究室から出て、徐々に実用化の段階に入っています。ZKの主な応用分野はRollupとプライバシーの2つです。ZKはプライバシー製品の変革に明らかな影響を与えます。ZKのおかげで、検証者が追加情報を得ることなく検証が可能になるからです。RollupはZKの2大特性「簡潔性(Succinct)」と「再帰性(Recursion)」に依存しています。簡潔性により、検証者は大量の計算リソースを節約できます。検証者はプログラム全体を再実行する必要がなくなるのです。再帰性はストレージスペースの節約に貢献します。再帰により、ブロックチェーンは固定サイズを維持できます。これにより分散化が促進され、どんなハードウェア環境でもノードを動作させられるようになります。

ZKアプリケーションの開発プロセス
独立してZKアプリケーションを開発するのは非常に複雑で、以下のスキルが必要です。
アルゴリズム、基礎算術、最適化スキル:開発者は有限体演算、多項式コミットメント、楕円曲線などの問題を解決するためにこれらの技術が必要です。
ZK証明システム(ZK-SNARKs、Plonkishなど)と信頼できる初期化の知識:開発者は適切なZK証明システムを選択し、カスタマイズする必要があります。
回路プログラミングスキル:開発者はMerkle TreeやHashなどの一般的な暗号アルゴリズムを回路として記述する必要があります。
アプリケーションおよび暗号プロトコルの開発
効果的な開発ツールは開発プロセスを加速し、複雑さを軽減できます。例えば、Circomのようなツールは、基盤の代数処理や証明システムを処理してくれるため、開発者はそれらを無視し、回路プログラミングとアプリケーション開発に集中できます。
Rollupの仕組み
Rollupのアイデアはシンプルです。オンチェーンの計算は高コストであるため、Rollupは計算を安全にオフチェーンに移動し、オンチェーンには結果のみを保存することを目指しています。
ハッシュツリーのステートルートはRollupコントラクト内に保存されます。RollupスマートコントラクトはLayer2からの情報に基づいてステートルートを更新します。

出典:An Incomplete Guide to Rollups (vitalik.ca)

出典:An Incomplete Guide to Rollups (vitalik.ca)
ZK Rollup(ZKRU)はゼロ知識証明を使って、Layer2から提出された新しいステートルートが正しいことを保証します。検証者はこの証明を検証するだけで、新規ステートルートの正当性を確認できます。つまり、検証者はLayer2から提出された取引を一つずつ再実行する必要がなくなり、検証作業が大幅に削減され、TPSが向上します。この計算量の削減こそが、ゼロ知識証明の「簡潔性」の体現です。ゼロ知識証明の簡潔性、完全性、健全性に依拠することで、ZKRUは安全にTPSを向上させることができます。(完全性Completeness:証明が有効であれば、検証者は必ず証明者の主張を信じる。真は偽にならない;健全性Soundness:誤った主張からは有効な証明が生成できない。偽は真にならない。)
ZKRUは全体的にOptimistic Rollup(OPRU)よりも優れています。OPRUはTPSがやや劣り、不正報告(Fraud Proof)に依存しているため、出金期間も長くなります。それならば、ZKRUが全面的に普及すれば、ZKRUがOPRUを圧倒してしまうのでしょうか?また、OPRUの生態系が大きく先行しているわけでもありません。OPRU側も黙ってはおらず、自社のソリューションにZKを統合してTPSを向上させたり、本来の出金期間の長さを解消しようと試みています。例えば、状態変更にZKを適用することで、不正報告にかかる時間を短縮しています。
役割
Rollupの枠組みの中で、3つの主要な役割があります。
ユーザー:ユーザーはLayer2に取引を提出し、Layer1からLayer2へ資産を入金します。
Rollupノード:RollupノードはLayer2ネットワークの正常稼働を維持します。証明の生成、取引の実行、取引の集約、不正報告への参加などを担当します。
Layer1:Layer1はLayer2の安全性を保証し、合意形成を担います。現在のほとんどのLayer1はイーサリアムです。

出典:Understanding rollup economics from first principles
経済モデル
経済モデルにおいて最も重要なのはコストと収益です。Layer2の場合、支出は主に以下の通りです。
証明生成の計算コスト
ステート遷移の計算コスト
Layer1の取引手数料
Layer1のデータストレージコスト
このうち、Layer1のデータストレージコストが最も高額です。以下の図はデータの流れを示しています。まず、ユーザーが取引をRollupノードに送信します。Rollupは複数の取引を集約し、証明を生成してLayer1に保存します。

出典:Understanding rollup economics from first principles
以下の図は、RollupがLayer1で支出するものと収益を示しています。

出典:L2Fees.info on 3/28/2022
Layer2の主な収益源は手数料とMEVです。手数料はネットワーク状況に依存し、MEVはユーザーの取引内容に依存します。Layer2は独自のトークンを発行し、それをRollupノードに報酬として付与することもあります。
代表的なZKRU
以下の図は
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














