出典: HashKey Capital
最初のレベルのタイトル
1. ゼロ知識証明の歴史
現代のゼロ知識証明システムは、Goldwasser、Micali、Rackoff が共同で発表した論文「The Knowledge Complexity of Interactive Proof Systems (GMR85)」に由来しており、この論文は 1985 年に提案され、1989 年に発表されました。この論文では、ステートメントが正しいことを証明するために、対話型システムで K ラウンドの対話後にどれだけの知識を交換する必要があるかを主に説明します。交換される知識をゼロにすることができれば、それをゼロ知識証明と呼びます。証明者(prover)は無制限のリソースを持ち、検証者(verifer)は限られたリソースしか持たないと仮定します。インタラクティブ システムの問題は、証明が完全に数学的に証明可能ではなく、確率は小さい (1/2^n) とはいえ、確率的に正しいということです。
したがって、対話型システムは完全ではなく、ほぼ完成したものに過ぎないが、これをもとに誕生した非対話型システム(NP)は完全なものであり、ゼロ知識証明システムとしては最適の選択肢となる。
初期のゼロ知識証明システムは効率性や使いやすさに欠けていたため、常に理論レベルに留まっており、本格的に普及し始めたのはここ 10 年ほどです。が最前線に来ており、非常に重要な方向性となっています。特に、汎用、非対話型、証明サイズが制限されたゼロ知識証明プロトコルの開発は、探求の最も重要な方向性の 1 つです。
基本的に、ゼロ知識証明は、証明の速度、検証の速度、証明ボリュームのサイズの間のトレードオフであり、理想的なプロトコルは、証明が速く、検証が速く、証明ボリュームが小さいことです。
ゼロ知識証明の最も重要な進歩は、Groth の 2010 年の論文「ショート ペアリングベースの非対話型ゼロ知識引数」です。これは、ZKP の最も重要な zk-SNARK グループの理論的先駆者でもあります。
ゼロ知識証明の応用における最も重要な進歩は、2015 年に Z-cash で使用されたゼロ知識証明システムであり、取引と金額のプライバシーの保護を実現し、その後、zk-SNARK とスマートの組み合わせに発展しました。契約が締結され、zk-SNARK はより広範なアプリケーション シナリオに参入しました。
この期間における重要な学術的業績には次のようなものがあります。
2013 年の Pinocchio (PGHR13): Pinocchio: Nearly Practical Verifiable Computation (証明と検証の時間を該当範囲まで圧縮する) は、Zcash で使用される基本プロトコルでもあります。
Groth16: 2016 年のペアリングベースの非対話型引数のサイズについて。証明のサイズを簡素化し、検証効率を向上させるもので、現在最も広く使用されている ZK 基本アルゴリズムです。
Bulletproofs (BBBPWM17) Bulletproofs: Short Proofs for Confidential Transactions and More は 2017 年に、信頼できる設定を必要としない非常に短い非インタラクティブなゼロ知識証明である Bulletproof アルゴリズムを提案し、6 か月後に Monero に適用されます。理論を応用に結び付けるのが非常に速い。
2018 年、zk-STARKs (BBHR18) スケーラブル、透過的、ポスト量子安全な計算整合性により、信頼できる設定を必要としない ZK-STARK アルゴリズム プロトコルが提案されました。これは、ZK 開発のもう 1 つの注目すべき方向です。これに基づいて、StarkWare 、最も重要な ZK プロジェクトが誕生しました。
最初のレベルのタイトル
2. ゼロ知識証明の応用の簡単な紹介
ゼロ知識証明の最も広く使用されている 2 つの用途は、プライバシー保護と容量拡張です。初期の頃、個人取引の開始や Zcash や Monero などのいくつかの有名なプロジェクトにより、個人取引は非常に重要なカテゴリーになりましたが、業界が期待するほど個人取引の必要性が顕著ではなかったため、これは代表的なプロジェクトの種類は減速し始め、ゆっくりと第二層、第三層の陣営に入る(歴史の舞台から降りるわけではない)。アプリケーションレベルでは、容量拡張の必要性が限界まで高まっており、2020年にイーサリアム2.0(コンセンサスレイヤーに改名)がロールアップ中心のルートに変わる中、ZKシリーズは正式に業界の注目を集め、が焦点となっている。
プライベート トランザクション: SNARK を使用した Zcash、Tornado、Bulletproof を使用した Monero、Dash など、プライベート トランザクションを実装したプロジェクトが多数あります。厳密に言えば、Dash は ZKP を使用しているのではなく、単純で粗雑な通貨混合システムを使用しています。これは住所のみを隠すことができますが、金額は隠すことができませんが、ここでは省略します。
画像の説明
Source: Demystifying the Role of zk-SNARKs in Zcash
システム セットアップ フェーズでは、KeyGen 関数を使用して証明キー (暗号証明多項式) と検証キーが生成されます。
CPA 段階の ECIES 暗号化方式 (楕円曲線統合暗号化方式) は、公開鍵と秘密鍵の生成に使用されます。
MintingCoins フェーズでは、生成された新しいコインの数。パブリックアドレスとコインのコミットメント
注ぐフェーズでは、zk-SNARK プルーフが生成され、そのプルーフが注ぐトランザクション ブックに追加されます。
検証フェーズでは、検証者はMintとPourの取引量が正しいかどうかを検証します。
受信フェーズでは、受信者がコインを受信します。受け取ったコインを使用したい場合は、引き続き Pouring を呼び出して zk-SNARK 検証を形成し、上記の手順 4 ~ 6 を繰り返してトランザクションを完了します。
Zcash にはゼロ知識の使用に依然として制限があります。つまり、Zcash は UTXO に基づいているため、一部のトランザクション情報はシールドされるだけで、実際には隠蔽されません。ビットコインの設計に基づいた別個のネットワークのため、拡張する(他のアプリケーションと組み合わせる)ことが困難です。シールド(つまりプライベートトランザクション)の使用率は10%未満であり、プライベートトランザクションがうまく拡大できていないことがわかります。 (2202年から)
Tornado が使用する単一の大きな混合プールはより一般的で、イーサリアムのような「実績のある」ネットワークに基づいています。 Torndao は本質的に zk-SNARK を使用した通貨混合プールであり、信頼できる設定は Groth 16 論文に基づいています。 Tornado Cash が提供できる機能は次のとおりです。
入金したコインのみ出金可能
コインを2回引き出すことはできません
認証プロセスは通貨の無効化通知(Nullifier)にバインドされており、同じ認証でも異なるNullifierを持つハッシュは出金できません。
セキュリティは126ビットセキュリティを備えており、構成によって劣化することはありません
Vitalik氏は、容量拡張に比べてプライバシーの確保は比較的容易であり、何らかの拡張プロトコルが確立できれば基本的にプライバシーは問題にならないと述べた。
拡張: ZK の拡張は、Mina などの第 1 層ネットワークで実行することも、第 2 層ネットワーク (zk-roll up) で実行することもできます。ZK ロールアップのアイデアは、最初に次のように考えられます。 Vitalik の 2018 年の投稿、大量 tx 検証による潜在的に ~500 tx/秒までのオンチェーン スケーリング。
画像の説明
Source: Polygon
ZK ロールアップの長所と短所:
利点: 経済の影響を受けるOPとは異なり、低コスト、トランザクションを遅らせる必要がなく、プライバシーを保護でき、ファイナリティを迅速に達成できます。
画像の説明
出典: イーサリアムの調査
画像の説明
Source: Starkware
現在市場で最も競争力の高い ZKrollup プロジェクトには、Starkware の StarkNet、Matterlabs の zkSync および Aztec の Aztec connect、Polygon の Hermez および Miden、Loopring、Scroll などがあります。
基本的に技術的なルートは、SNARK (およびその改良版) と STARK の選択、および EVM (互換性または同等のものを含む) のサポートにあります。
Aztec は、汎用化された SNARK プロトコル - Plonk プロトコルを開発しました。運用中の Aztec3 は EVM をサポートする可能性がありますが、プライバシーは EVM 互換性より優先されます。
Starnet は、信頼できる設定を必要としない zkp である zk-STARK を使用していますが、現在 EVM をサポートしておらず、独自のコンパイラと開発言語を持っています
zkSync も plonk を使用し、EVM をサポートします。 zkSync 2.0 は EVM と互換性があり、独自の zkEVM を備えています
EVM 互換の ZK ロールアップである Scroll チームは、イーサリアム財団の zkEVM プロジェクトへの重要な貢献者でもあります。
EVM の互換性の問題について簡単に説明します。
最初のレベルのタイトル
3. ZK SNARK実装の基本原則
Goldwasser、Micali、Rackoff は、ゼロ知識証明には 3 つの特性があると提案しました。
完全性: 合理的な証人がいるすべての陳述は検証者によって検証可能
健全性: 不当な証人のみが存在するすべての陳述は、検証者によって検証されるべきではありません。
ゼロ知識: 検証プロセスはゼロ知識です。
現在のブロックチェーン アプリケーションの多くは SNARK から始まるため、ZKP を理解するには zk-SNARK から始めます。まずはzk-SNARKを見てみましょう。
zk-SNARK の意味: ゼロ知識証明 (zh-SNARK) は、ゼロ知識の簡潔な非対話型の知識の議論です。
ゼロ知識: 証明プロセスはゼロ知識であり、冗長な情報は公開されません。
簡潔: 検証サイズが小さい
非対話型: 非対話型プロセス
引数: 計算は信頼できる、つまり、限られた計算能力を持つ認証者は証明を偽造できず、無制限の計算能力を持つ証明者は証明を偽造できる
知識の知識: 証明者は有効な情報を知らなければパラメータと証明を構築できません。
証明者にとって、証拠 (マークル ツリー ノードを決定するためのハッシュ関数やパスの入力などの証人) を知らずにパラメータと証明のセットを構築することは不可能です。 」
画像の説明
Source: https://learnblockchain.cn/article/3220
手順は次のとおりです。
1. 問題を回路に変換する
2. 回路を R1CS の形に平坦化します。
3. R1CS を QAP (二次演算プログラム) 形式に変換します。
4. 信頼できるセットアップを確立し、PK (証明キー)、VK (検証キー) を含むランダム パラメータを生成します。
5. zk-SNARKのプルーフ生成と検証
次の記事では、zk-SNARK の原理と応用の研究を開始し、いくつかの事例を使用して ZK-SNARK の開発を確認し、zk-STARK との関係を探ります。
Reference:
https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477
https://blog.polygon.technology/zkverse-why-zero-knowledge-rollups-need-a-new-consensus-mechanism/
https://blog.decentriq.com/zk-snarks-primer-part-one/
