こちらはゼロ知識証明の簡単で理解しやすい紹介です:
小学校にいると想像してください。先生は検証者であり、あなたは生徒として証明者です。2次方程式を解くための公式を理解していることを証明するにはどうすればよいでしょうか?そこで数学の試験が重要になります。
先生はランダムに関連する10の質問を出題し、もし本当にその概念を理解しているなら、全て解くことができるでしょう。この過程で、具体的な公式の内容を暗記したり書き留めたりする必要はありませんが、先生は簡単にあなたの知識レベルを確認できます。
実際に、これはタルタリアとカルダーノ(そう、それが名前です)が立方方程式の解を発見したのか競争するために使用した方法です。彼らはお互いに自分の数式の内容を明かしたくなかったが、問題解決を通じて、彼らは簡単に互いがこの知識を習得しているかどうかを検証し、決定することができました。詳細を明かすことなく。
ゼロ知識証明の目的は何ですか?その目的は、計算パワーを節約し、プロセス全体でのチェーン上のスペースを削減することです。さらに、プライバシー保護を提供し、ブロックチェーンの非信頼性の特性と暗号の原則と一致しています。
ブロックチェーンの分野では、「zk」という用語が使用されるか言及される際、通常、実際のゼロ知識証明を指すのではなく、しばしば正当性証明を指します。用語の混乱により、このテキストの一部では引き続きこれらの「誤用された」用語を使用します。
現在のブロックチェーンの景観において、zkはブロックチェーンのスケーラビリティ(真のzkではなく、むしろ有効性証明)およびプライバシー技術(真のzk)の最前線であり、最適なソリューションと見なされます。Tornado.cash、ZCash、zkSync、zk.money、Filecoin、およびMinaなどのプロジェクトで使用されています。
現在の技術的なソリューションは主に2つのカテゴリに分かれています:SNARKとSTARK。STARKでは、「S」はスケーラブルを意味し、証明された文は繰り返し構造を持っています。一方、SNARKは簡潔な証明を得るために事前処理された任意の回路をサポートしています。その中で、SNARKsの実用的な実装が主導的な位置を占めており、一方でSTARKsはStarkWareによって立ち上げられた製品で主に大規模に採用されています。以下はそれらの比較です。
Memeの観点から、STARKはSNARKよりも優れています(😊、Star Wars、Star Trek)。
もしSNARKがEthereum 2.0の未来であるなら、STARKはEthereum 3.0の未来となるでしょう。真剣に、STARKの利点は次の通りです:
ただし、STARKによって生成される証明は非常に大きいです。WASMによって課せられる制限など、特定の制限により、構築中に追加の操作が必要になる場合があります(ここではSNARKを参照しています)。最近、Mirは、Starkyを使用したAIRベースのSTARKの実用的な実装を提供しました。それはPlonky2の一部であり、Plonky2とStarkyの関係は非常に複雑です...)。個人的な意見としては、さまざまなテクニックを使用してサイズを最適化することは可能ですが、アルゴリズム自体の時間複雑性をさらに圧縮することは難しいと考えています。
これらのゼロ知識証明技術は、より強力なアプリケーションを構築するために合理的な方法で組み合わせることができます。たとえば、Polygon Hermezは、SNARKを使用してSTARKの正当性を検証し、証明を公開する際のガス料金を削減しています。
全体的に、SNARKとSTARKはどちらも優れたゼロ知識証明技術であり、それぞれに長所があり、合理的な組み合わせはさらなる可能性を秘めています。
先述のTornado.cashとzk.moneyは、ゼロ知識証明を使用した送金操作のみをサポートする類似のアプリケーションです。これらは汎用計算をサポートしていません。比較すると、これらのアプリケーションはビットコインの機能しか持っておらず、チューリング完全なイーサリアムよりもはるかに少なく、まして生態系の構築などはありません(ビットコイン上のスマートコントラクトはまだ繁栄する生態系を築いていません)。
zkVMは、ゼロ知識証明を使用して安全で検証可能、かつ信頼性のある特性を確保する仮想マシンです。単純に言えば、古い状態とプログラムを入力として受け取り、新しい状態を返します。これにより、すべてのアプリケーションにゼロ知識証明の特権が与えられます。
Miden’s presentation at ETH Amsterdam effectively summarized what zkVM is with a single slide.
zkVMの利点:
zkVMの欠点:
現在、zkVMには3つの主要なタイプがあり、それぞれの命令セットは次のとおりです: メインストリーム(WASM、RISC-V)、EVM(EVMバイトコード)、ZK-Optimized(CairoやzkSyncなどのゼロ知譆証明に最適化された新しい命令セット)。以下は、これらのタイプに基づいたMiden氏のETH Amsterdamでのプレゼンテーションに基づいた比較表です。
ゼロ知識証明の開発エコシステムで行われる多くのことは、一般的なzk DAppsの開発にCircomライブラリ(およびsnarkyjsなど)や他の新しく作成された言語(LeoやCairoなど)を使用できるようにすることに関して主に行われます。ただし、これはイーサリアム上のSolidityを使用するよりも直感的で簡単に学べるというわけではありません。
その上で、zkSync、Scrollなどのプロジェクト、またはPolygonの傘下にあるいくつかのプロジェクトは、zkEVMや他のzkVMソリューションの実験を行っています。
EVMはイーサリアムの仮想マシンであり、スマートコントラクトを実行するための実行環境のセットとしても理解できます。
これまでの間、さまざまなパブリック・ブロックチェーンは、EVMと互換性を持つように継続的に取り組んでおり、それによってイーサリアムの開発エコシステムに統合されています。このコンセプトは、EVM互換性、EVM等価性などの用語の派生につながっています。
zkEVMをさらに解釈しましょう。定義によれば、zkEVMは、EVMと互換性があり、ゼロ知識証明にも対応し、プログラム、操作、および入出力の完全な正確性を確保する仮想マシンです。
普遍的な計算を実現するために、zkEVMの開発には2つの主な課題があります:
異なる契約には異なる回路の生成が必要で、これらの回路はかなり‘複雑’です。
この側面は主にさまざまな最適化に依存しています。例えば、Aleo(直接的なZKタイプではないが...最適化の例として)は、並列証明計算のために分散クラスタを使用したり、加速のためのさまざまなハードウェア最適化を行ったりしています。
zkEVMはEVMの再構築だけでなく、ゼロ知識証明技術を使用してイーサリアムの全状態遷移の再構築が必要です。
EVMの元の設計はzkEVMの開発を予期しておらず、重大な困難をもたらしました。これにより、図で示されているように、2つのアプローチの学派が生まれました。
または、仮想マシン(VM)のアーキテクチャに応じて区別する場合、次の図(元の画像サマリーにはScroll Techへの大きな感謝!)のようにします。オペコードはEVMオペコードを指します。StarkWareセクションでは、SolidityコントラクトをCairoコントラクトに変換するためにWarpを使用したり、Cairoで直接コントラクトを記述したりしても、優れた開発体験と完全なツールセットを得ることができます。
開発者とユーザーレベルでは、これらのソリューションは私の意見では基本的に区別がつきません。しかし、インフラストラクチャの観点からは、右にあるソリューションほど、EVMの互換性が高くなります。Gethなどのインフラストラクチャとシームレスに統合できますが、開発の進捗は一般的に遅いです。
zkEVMの存在は、私の意見では、イーサリアムエコシステムを革新し、パッチを当てることで、イーサリアムおよびそのエコシステムの繁栄に貢献することです。一方、zkVMの存在は、必ずしもイーサリアムを強化するものではありませんが、より大きな想像力を提供しています。
StarkNetのCairo VMは私が想像していた完璧なzkVMでないかもしれませんが、EVMやzkEVM以上のことができます。これらの機能はEIP拡張のレベルを超えています。Cairo VMでは、機械学習モデルを実行することができ、StarkNet上で機械学習モデルプラットフォームが構築されています。
zkEVMと比較すると、zkVMを構築することはより簡単です(EVMの技術的負債を気にする必要がない)、柔軟性が高くなります(EVMの更新を気にする必要がない)、最適化が容易になります(回路と証明の最適化はzkEVMの構築よりもはるかに簡単で安価です)。
ただし、zkVMにはわずかながら潜在的に致命的な欠点があります。もしzkVMがSolidity言語レベルでEVMとの互換性を提供できない場合、EVMと同様の包括的で成熟したWeb3開発エコシステムを確立することは困難になるでしょう。
zkVMは、EVMの垂直最適化とEVMエコシステムの水平拡張を可能にする大きなトレンドになる可能性があり、EVMの制限から解放されます。
もしすべてのプログラミング言語のスマートコントラクトが実行される普遍的なzkVMがあり、Solidityだけでなく、Cairoだけでなく、Rust、C++、Goもセキュアに実行できるゼロ知識証明が可能になるなら、それは素晴らしいことではないでしょうか?(Stellarは試みましたが失敗しました)
As @kelvinfichtermentioned: Why zkEVM if zkMIPS? As@KyleSamaniEVMは機能ではなくバグと言及されました。なぜzkVMなのにzkEVMですか?
Winterfall、Distaff、Miden VM、および他のzkVMは、開発者向けの高いレベルを達成していません。NervosにはRISC-V VMがありますが、ゼロ知識証明技術を利用していません。
現在の状況での最適な解決策は、WASMまたはRISC-V zkVMを構築することです。Rust、Go、C++、そしてSolidityなどの言語をサポートできるとさらに良いでしょう(zkSyncは大きな貢献をすることができるようです)。もし普遍的なzkVMがあれば、zkEVMには大きな打撃となるでしょう。
Web3の開発者数はすべての開発者の約0.07%を占めています。これは、Solidity開発者の数が0.07%よりもさらに少ないことを意味し、契約を書くためにCairoを使用する開発者はさらに少なく、回路を書くためにLeoを使用する開発者はさらに少ないことを意味します。その結果、完璧なzkVMはほぼ100%の開発者を対象としており、ほぼすべてのプログラミング言語を使用して、ほぼすべての開発者が完璧なゼロ知識実行環境を取得できることを目指しています。
Web3や暗号通貨がいつか世界を支配するようになった場合、すべての開発者の100%を占めるのはEVMエコシステムではなく、むしろすべての開発者が徐々にWeb3や暗号通貨の開発者に移行していくと信じています。これが普遍的なzkVMの素晴らしさがあるところです。
ネイティブzkEVMはブロックチェーンの未来です。
Universal zkVMはWeb3の未来です。
こちらはゼロ知識証明の簡単で理解しやすい紹介です:
小学校にいると想像してください。先生は検証者であり、あなたは生徒として証明者です。2次方程式を解くための公式を理解していることを証明するにはどうすればよいでしょうか?そこで数学の試験が重要になります。
先生はランダムに関連する10の質問を出題し、もし本当にその概念を理解しているなら、全て解くことができるでしょう。この過程で、具体的な公式の内容を暗記したり書き留めたりする必要はありませんが、先生は簡単にあなたの知識レベルを確認できます。
実際に、これはタルタリアとカルダーノ(そう、それが名前です)が立方方程式の解を発見したのか競争するために使用した方法です。彼らはお互いに自分の数式の内容を明かしたくなかったが、問題解決を通じて、彼らは簡単に互いがこの知識を習得しているかどうかを検証し、決定することができました。詳細を明かすことなく。
ゼロ知識証明の目的は何ですか?その目的は、計算パワーを節約し、プロセス全体でのチェーン上のスペースを削減することです。さらに、プライバシー保護を提供し、ブロックチェーンの非信頼性の特性と暗号の原則と一致しています。
ブロックチェーンの分野では、「zk」という用語が使用されるか言及される際、通常、実際のゼロ知識証明を指すのではなく、しばしば正当性証明を指します。用語の混乱により、このテキストの一部では引き続きこれらの「誤用された」用語を使用します。
現在のブロックチェーンの景観において、zkはブロックチェーンのスケーラビリティ(真のzkではなく、むしろ有効性証明)およびプライバシー技術(真のzk)の最前線であり、最適なソリューションと見なされます。Tornado.cash、ZCash、zkSync、zk.money、Filecoin、およびMinaなどのプロジェクトで使用されています。
現在の技術的なソリューションは主に2つのカテゴリに分かれています:SNARKとSTARK。STARKでは、「S」はスケーラブルを意味し、証明された文は繰り返し構造を持っています。一方、SNARKは簡潔な証明を得るために事前処理された任意の回路をサポートしています。その中で、SNARKsの実用的な実装が主導的な位置を占めており、一方でSTARKsはStarkWareによって立ち上げられた製品で主に大規模に採用されています。以下はそれらの比較です。
Memeの観点から、STARKはSNARKよりも優れています(😊、Star Wars、Star Trek)。
もしSNARKがEthereum 2.0の未来であるなら、STARKはEthereum 3.0の未来となるでしょう。真剣に、STARKの利点は次の通りです:
ただし、STARKによって生成される証明は非常に大きいです。WASMによって課せられる制限など、特定の制限により、構築中に追加の操作が必要になる場合があります(ここではSNARKを参照しています)。最近、Mirは、Starkyを使用したAIRベースのSTARKの実用的な実装を提供しました。それはPlonky2の一部であり、Plonky2とStarkyの関係は非常に複雑です...)。個人的な意見としては、さまざまなテクニックを使用してサイズを最適化することは可能ですが、アルゴリズム自体の時間複雑性をさらに圧縮することは難しいと考えています。
これらのゼロ知識証明技術は、より強力なアプリケーションを構築するために合理的な方法で組み合わせることができます。たとえば、Polygon Hermezは、SNARKを使用してSTARKの正当性を検証し、証明を公開する際のガス料金を削減しています。
全体的に、SNARKとSTARKはどちらも優れたゼロ知識証明技術であり、それぞれに長所があり、合理的な組み合わせはさらなる可能性を秘めています。
先述のTornado.cashとzk.moneyは、ゼロ知識証明を使用した送金操作のみをサポートする類似のアプリケーションです。これらは汎用計算をサポートしていません。比較すると、これらのアプリケーションはビットコインの機能しか持っておらず、チューリング完全なイーサリアムよりもはるかに少なく、まして生態系の構築などはありません(ビットコイン上のスマートコントラクトはまだ繁栄する生態系を築いていません)。
zkVMは、ゼロ知識証明を使用して安全で検証可能、かつ信頼性のある特性を確保する仮想マシンです。単純に言えば、古い状態とプログラムを入力として受け取り、新しい状態を返します。これにより、すべてのアプリケーションにゼロ知識証明の特権が与えられます。
Miden’s presentation at ETH Amsterdam effectively summarized what zkVM is with a single slide.
zkVMの利点:
zkVMの欠点:
現在、zkVMには3つの主要なタイプがあり、それぞれの命令セットは次のとおりです: メインストリーム(WASM、RISC-V)、EVM(EVMバイトコード)、ZK-Optimized(CairoやzkSyncなどのゼロ知譆証明に最適化された新しい命令セット)。以下は、これらのタイプに基づいたMiden氏のETH Amsterdamでのプレゼンテーションに基づいた比較表です。
ゼロ知識証明の開発エコシステムで行われる多くのことは、一般的なzk DAppsの開発にCircomライブラリ(およびsnarkyjsなど)や他の新しく作成された言語(LeoやCairoなど)を使用できるようにすることに関して主に行われます。ただし、これはイーサリアム上のSolidityを使用するよりも直感的で簡単に学べるというわけではありません。
その上で、zkSync、Scrollなどのプロジェクト、またはPolygonの傘下にあるいくつかのプロジェクトは、zkEVMや他のzkVMソリューションの実験を行っています。
EVMはイーサリアムの仮想マシンであり、スマートコントラクトを実行するための実行環境のセットとしても理解できます。
これまでの間、さまざまなパブリック・ブロックチェーンは、EVMと互換性を持つように継続的に取り組んでおり、それによってイーサリアムの開発エコシステムに統合されています。このコンセプトは、EVM互換性、EVM等価性などの用語の派生につながっています。
zkEVMをさらに解釈しましょう。定義によれば、zkEVMは、EVMと互換性があり、ゼロ知識証明にも対応し、プログラム、操作、および入出力の完全な正確性を確保する仮想マシンです。
普遍的な計算を実現するために、zkEVMの開発には2つの主な課題があります:
異なる契約には異なる回路の生成が必要で、これらの回路はかなり‘複雑’です。
この側面は主にさまざまな最適化に依存しています。例えば、Aleo(直接的なZKタイプではないが...最適化の例として)は、並列証明計算のために分散クラスタを使用したり、加速のためのさまざまなハードウェア最適化を行ったりしています。
zkEVMはEVMの再構築だけでなく、ゼロ知識証明技術を使用してイーサリアムの全状態遷移の再構築が必要です。
EVMの元の設計はzkEVMの開発を予期しておらず、重大な困難をもたらしました。これにより、図で示されているように、2つのアプローチの学派が生まれました。
または、仮想マシン(VM)のアーキテクチャに応じて区別する場合、次の図(元の画像サマリーにはScroll Techへの大きな感謝!)のようにします。オペコードはEVMオペコードを指します。StarkWareセクションでは、SolidityコントラクトをCairoコントラクトに変換するためにWarpを使用したり、Cairoで直接コントラクトを記述したりしても、優れた開発体験と完全なツールセットを得ることができます。
開発者とユーザーレベルでは、これらのソリューションは私の意見では基本的に区別がつきません。しかし、インフラストラクチャの観点からは、右にあるソリューションほど、EVMの互換性が高くなります。Gethなどのインフラストラクチャとシームレスに統合できますが、開発の進捗は一般的に遅いです。
zkEVMの存在は、私の意見では、イーサリアムエコシステムを革新し、パッチを当てることで、イーサリアムおよびそのエコシステムの繁栄に貢献することです。一方、zkVMの存在は、必ずしもイーサリアムを強化するものではありませんが、より大きな想像力を提供しています。
StarkNetのCairo VMは私が想像していた完璧なzkVMでないかもしれませんが、EVMやzkEVM以上のことができます。これらの機能はEIP拡張のレベルを超えています。Cairo VMでは、機械学習モデルを実行することができ、StarkNet上で機械学習モデルプラットフォームが構築されています。
zkEVMと比較すると、zkVMを構築することはより簡単です(EVMの技術的負債を気にする必要がない)、柔軟性が高くなります(EVMの更新を気にする必要がない)、最適化が容易になります(回路と証明の最適化はzkEVMの構築よりもはるかに簡単で安価です)。
ただし、zkVMにはわずかながら潜在的に致命的な欠点があります。もしzkVMがSolidity言語レベルでEVMとの互換性を提供できない場合、EVMと同様の包括的で成熟したWeb3開発エコシステムを確立することは困難になるでしょう。
zkVMは、EVMの垂直最適化とEVMエコシステムの水平拡張を可能にする大きなトレンドになる可能性があり、EVMの制限から解放されます。
もしすべてのプログラミング言語のスマートコントラクトが実行される普遍的なzkVMがあり、Solidityだけでなく、Cairoだけでなく、Rust、C++、Goもセキュアに実行できるゼロ知識証明が可能になるなら、それは素晴らしいことではないでしょうか?(Stellarは試みましたが失敗しました)
As @kelvinfichtermentioned: Why zkEVM if zkMIPS? As@KyleSamaniEVMは機能ではなくバグと言及されました。なぜzkVMなのにzkEVMですか?
Winterfall、Distaff、Miden VM、および他のzkVMは、開発者向けの高いレベルを達成していません。NervosにはRISC-V VMがありますが、ゼロ知識証明技術を利用していません。
現在の状況での最適な解決策は、WASMまたはRISC-V zkVMを構築することです。Rust、Go、C++、そしてSolidityなどの言語をサポートできるとさらに良いでしょう(zkSyncは大きな貢献をすることができるようです)。もし普遍的なzkVMがあれば、zkEVMには大きな打撃となるでしょう。
Web3の開発者数はすべての開発者の約0.07%を占めています。これは、Solidity開発者の数が0.07%よりもさらに少ないことを意味し、契約を書くためにCairoを使用する開発者はさらに少なく、回路を書くためにLeoを使用する開発者はさらに少ないことを意味します。その結果、完璧なzkVMはほぼ100%の開発者を対象としており、ほぼすべてのプログラミング言語を使用して、ほぼすべての開発者が完璧なゼロ知識実行環境を取得できることを目指しています。
Web3や暗号通貨がいつか世界を支配するようになった場合、すべての開発者の100%を占めるのはEVMエコシステムではなく、むしろすべての開発者が徐々にWeb3や暗号通貨の開発者に移行していくと信じています。これが普遍的なzkVMの素晴らしさがあるところです。
ネイティブzkEVMはブロックチェーンの未来です。
Universal zkVMはWeb3の未来です。