zkEVMの性能はどこが優れているのか?開発者はどのように選択すべきか?
原文作者: Jarrod Watts
编译:BlockBeats
イーサリアムのスケーリング戦争において、Optimistic rollupsはそのEVMの高度な互換性により、ArbitrumとOptimismが開発者の採用において先天的な優位性を持っています。L1からL2へのシームレスなコード移植と豊富な開発ツールは、開発者を迅速に引き付け、プラットフォーム上でアプリケーションを展開・作成することができます。
それに対して、ZK系は少し難しいです。技術的に固有の特性により、ZK rollupsは独自の仮想マシンをカスタマイズする必要があり、これはプロジェクトチームがEVMからのコードを「説明」するためにより多くの作業を行う必要があることを意味します。現在、Taiko、Polygon、Linea、Scroll、ZkSync Eraを含む複数のZK rollupsプロジェクトが独自のzkEVM実装を発表しています。
スケーリングの聖杯として、zkEVMは開発者のコントラクト展開体験に重要な影響を与えます。数多くのZK rollupsプロジェクトの中で、開発者はどのように選択すべきでしょうか?
この記事は、Jarrod Wattsが発表したツイートのまとめを翻訳したもので、彼はPolygonの開発者関係エンジニアであり、現在人気のZK rollupsプロジェクトにスマートコントラクト(1つのSolidityスマートコントラクトと1つのNFTコントラクト)を展開し、Taiko、Polygon、Linea、Scroll、ZkSync EraなどのプロジェクトのzkEVM性能を実測し、それぞれの長所と短所、L2からL1への入金時間を比較し、二層コントラクトを展開したい開発者に実測ガイドを提供しています。
以下はBlockBeatsからの原文の翻訳です:
ZK-EVMとは何か、そしてなぜそれが必要なのか?
ZK-EVMとは何かを解釈する前に、なぜZK-EVMが必要なのかを見てみましょう。
ZK Rollupsはイーサリアムにスケーラビリティと高性能をもたらしますが、その裏には、ZK RollupsソリューションがEVM(イーサリアム仮想マシン)と互換性がないという問題があります。これは、ZK Rollupsソリューションが転送、鋳造、または破棄などの限られた操作しか実行できず、ユーザーのためにウォレットなどのツールを開発する必要があることを意味します。
したがって、EVMと互換性のあるZK Rollupsが必要です。そのために、多くの企業が独自のZK-EVMを開発しています。
ZK-EVM、すなわちゼロ知識EVMは、ゼロ知識証明と互換性のあるイーサリアム仮想マシンの実装です。
ZK-EVMの主な機能は、イーサリアムL2(第2層)上の取引をバッチ処理し、そのバッチ取引の「有効性証明」をイーサリアムL1に返すことです。通常、zkEVMはイーサリアムメインネットのすべてを行うことができます。SolidityまたはVyperで書かれた人間が読めるコードをバイトコードにコンパイルし、スマートコントラクトを実行し、ブロックチェーンの状態を更新します。
EVM互換のZK Rollupsを構築する難しさは、イーサリアムの初期設計がZKフレンドリーでないことにあります。これは、ゼロ知識証明が計算に大量のリソースを必要とすることを意味します。
その中で、特定のEVMオペコードは特に「ZKフレンドリーでない」ため、各社が最終的に設計したZK-EVM製品はEVM互換性において異なります。
オペコード、バイトコード、EVMとはそれぞれ何か?
ここで、オペコード(opcodes)、バイトコード、EVMとはそれぞれ何かを説明します。
まず、EVMはイーサリアム上のスマートコントラクトの実行環境です。イーサリアムは「マシン状態」をトライ木構造で保存し、ブロック内の取引を実行するたびにその構造が変化します。
EVMは決定論的であり、特定の状態で一連の命令を実行すると、同じ新しい状態が生成されます。
イーサリアム開発者ドキュメントによれば、古い有効状態(S)+一連の新しい有効取引(T)に対して、イーサリアムは新しい有効出力状態S'を生成します。
これをチェスのようなゲームと考えることができます。イーサリアムはボードのようなもので、異なるゲーム状態が存在します。イーサリアムにおけるこの状態の可能性は無限です。ボードゲームには特定の移動ルール(イーサリアム上の取引に相当)があり、どの種類の駒がどのような操作を行うかにも特定の制限があります。ゲームプレイヤーは行動を起こし(イーサリアム上のユーザーが取引を提出することに相当)、ゲーム(イーサリアム)はルールを定めて実行し、各ターン(ブロック時間に相当)の後に新しいボード(イーサリアム全体)状態を生成します。
イーサリアムまたは任意のEVM互換のブロックチェーン開発には、Solidityを使用してスマートコントラクトを記述する必要があります。Solidityは高級言語であり、人間が読めることを目的としているため、開発者はコードの記述に集中でき、レジスタ、メモリアドレス、呼び出しスタックなどの抽象的なレイヤーに煩わされることはありません。
しかし、EVMはSolidityを直接読み取ることができません。代わりに、EVMは「バイトコード」(bytecode)しか理解できず、これはバイナリで機械が読み取れる低レベルのコードです。
EVMにおいて、「バイトコード」(bytecode)は一連のEVM「オペコード」(opcodes)を表し、オペコードはプログラムの低レベルの可読命令であり、EVM内で実行可能な特定の操作を表します。
Solidityのような高級言語はEVM内で直接実行できないため、スマートコントラクトコードを人間が読めるSolidity言語からオペコード、バイトコードに変換し、EVMが実行できるようにする方法が必要です。これがコンパイラの役割です。
Remix IDEコンパイラを使用してSolidityコードをコンパイルすると、そのスマートコントラクトが変換された特定のオペコードを確認でき、そこから生成されたバイトコードを確認できます。
以下はオペコードです:
以下は上記のオペコードに対応するバイトコードです。
バイトコードをオペコードに変換することで、バイトコードに含まれる実行命令を知ることができます。
EVM内の特定のオペコードに対するZK証明の難しさにより、市場には異なる互換性のZK-EVMが登場しています。その中には、ZK-EVMとEVMオペコードセットが完全に等価なものもあれば、一部のEVMオペコードが部分的に変更されたもの、さらに全く異なるバイトコードを持つものもあります。
異なるタイプのZK-EVM
イーサリアムの設計が最初からZKフレンドリーでないため、理論的には、イーサリアムの設計に近いほど、ZK証明を生成するのが難しく、時間がかかります。2022年8月、イーサリアムの創設者Vitalikは、「Vitalikが異なるタイプのZK-EVMの未来を解説」というブログを発表し、異なるZK-EVMを分類しました。
この文では、VitalikはEVM互換性とZK証明生成時間(性能)の2つの次元に基づいて各種ZK-EVMを分類し、4種類(半)を示しました。現在市場に出ているすべてのZK-EVM製品はこの中に含まれます。
第一のタイプのZK-EVMはイーサリアムと完全に等価であり、イーサリアムシステムのいかなる部分も変更しません。証明の生成が容易です。このシステムでは、ZK証明の生成に長い時間(数時間)がかかります。TaikoはこのタイプのZK-EVMに属します。
第二のタイプはEVMと完全に等価ですが、ZK証明の生成時間を短縮するために、チェーン状態の保存方法など、いくつかの異なる内部表現を変更しています。現在、市場にはこのタイプのZK-EVMは存在しませんが、Polygon、Linea、Scrollはこの方向に向かっています。
2.5. タイプ2とタイプ3の間には、タイプ2.5も存在します。このタイプはEVMと完全に等価ですが、特定の操作のGasコストを増加させ、「最悪の場合の証明時間を大幅に短縮」します。現在、市場にはこのタイプのZK-EVMは存在しませんが、Kakarotという新しいZK-EVMプロジェクトがこの方向に向かっています。
タイプ3はEVMとほぼ等価ですが、証明時間を短縮し、EVMの開発を簡素化するために、等価性の精度にいくつかの妥協をしています。現在、Polygon、Linea、Scrollはこのタイプに属します。
タイプ4はZK-EVMの高級言語に相当し、このタイプのZK-EVMはスマートコントラクトのソースコードをZK-SNARKフレンドリーな言語にコンパイルします。これにより、より迅速な証明時間がもたらされますが、互換性や制限などの欠点も引き起こされます。現在、zkSync Eraはこのタイプに属します。
有効性証明をイーサリアムL1に返すのにかかる時間は、ユーザーが資金をL1に戻すのにかかる時間です。証明の生成に数時間かかる場合、そのユーザーはその数時間の間、資金をL1にブリッジすることができません。
実践:Taiko、Polygon、Linea、Scroll、ZkSync Eraの開発評価
理論的な知識の復習が終わったので、以下は実践部分です。
Taiko、Polygon、Linea、Scroll、ZkSync EraにそれぞれSolidityスマートコントラクトとNFTコントラクトを展開し、各ZK-EVMの性能と存在する欠陥をテストしました。著者は利用可能な開発者リソースを提供し、主に開発者体験とL2からL1へのブリッジ時間の2つの次元から評価しました。
Taiko ZK-EVM
Taikoはタイプ1のZK-EVMに属し、現在テストネット段階にあります。Taikoはイーサリアムのすべての動作を正確に処理できます。使用するハッシュ関数、ガス価格、暗号アルゴリズムなどは同じです。
操作プロセス:簡単なSolidityスマートコントラクトを展開し、ThirdWebプロキシを使用して簡単なNFTコレクションを展開しました。
タイプ1のZK-EVMの欠点は、すべてがイーサリアムと完全に同じである場合(内部でも)、証明の生成に長い時間がかかることです。これは、ユーザーがETHをTaiko L2からイーサリアムL1にブリッジするのに数時間の処理時間が必要であることを意味します(以下のように)。
Linea ZK-EVM
Lineaはタイプ3のZK-EVMに属し、現在すべてのオペコードまたはプリコンパイルを証明することはできません。イーサリアムとは異なるチェーン内部状態を表し、異なるハッシュ関数を使用しています。
展開されたバイトコードはイーサリアムと同じです。
今回の展開プロセスはほぼシームレスで、2つのスマートコントラクトを簡単に展開し、相互作用することができました。これはイーサリアムの動作と同じであり、既存のツールやウォレットを使用してスマートコントラクトを展開し、相互作用し、NFTを鋳造することができます。
この記事を書いている時点で、Lineaはまだブリッジのフロントエンドインターフェースを立ち上げていません。したがって、ブリッジのスマートコントラクト関数を直接呼び出す必要があります。
Lineaのドキュメントによれば、ETHのL2からL1へのブリッジは通常約15分かかりますが、今回の操作ケースでは数時間かかりました。
Polygon ZK-EVM
Polygon ZK-EVMはタイプ3のZK-EVMに属し、今年の3月末以来メインネットが稼働しています。
Polygon zkEVMは公式ドキュメントでEVMとzkEVMの間の現在のすべての違いを列挙しています。
Polygon zkEVM上でのバイトコードの展開はイーサリアムと同じであり、スマートコントラクトを展開し、相互作用することが非常に簡単です。Vitalikは「Polygon zkEVMは独自の設計を持っており、彼らはzkASMと呼ばれる内部言語を使用してZK検証を行っています」と述べています。
Polygonのエンジニアリングチームは、証明生成と出金時間の改善に加えて、今後できるだけ早く残りのプリコンパイルを完成させることを目指しており、Vitalikの図表のタイプ2になることを目指しています。
今回の展開ケースでは、zkEVMメインネットのブリッジは非常にスムーズでした。L2からL1へのブリッジプロセスは約1時間かかりました。
Scroll
Scrollはタイプ3のZK-EVMに属し、現在テストネット段階にあります。Scrollも公式ドキュメントでZK-EVMとイーサリアムEVMの間の違いを列挙しています。
他の3型ZK-EVMと同様に、今回の展開プロセスはほぼシームレスで、SolidityスマートコントラクトとNFTコレクションを簡単に展開し、相互作用しました。L2からL1への資金のブリッジには「10分から数時間」がかかると予想されています。
ZkSync Era
ZkSync Eraはタイプ4のZK-EVMに属します。他のZK-EVMとは完全に異なり、ZkSync EraのzkEVM上で展開されたスマートコントラクトのバイトコードはイーサリアムとは異なります。
これにより、ZkSync Eraはアカウント抽象(Account abstraction)のネイティブサポートという独自の機能を提供し、異なる開発者体験をもたらします。通常、多くの暗号ウォレットは標準アドレスであり、資金を送受信し、スマートコントラクトと相互作用することができます。アカウント抽象を使用すると、暗号ウォレットはカスタマイズされ、より複雑な方法で設計され、より広範な機能を提供できます。さらに、このzkEVMは開発者がSolidityなどの同じ高級言語を使用することを許可します。
ZkSync EraのZK-EVMはEVMと大きく異なりますが、ZkSync Eraは開発者のベストプラクティスと注意事項の完全なセットを提供しています。さらに、開発者はZkSync Eraに特化して構築するために、開発プロセスにいくつかの小さな調整を行う必要があります。
例えば、以下の例では、カスタムzkSync拡張を使用してHardhat環境をインストールおよび構成し、Era ZK-EVMにデプロイ可能なバイトコードを生成する必要があります。
コンパイルにより、イーサリアムとは完全に異なる新しいバイトコードが生成され、上記のZK-EVMが生成したバイトコードとは完全に異なります。
注目すべきは、ThirdWebが現在zkSync Eraに対応していることで、開発者にとってより便利な展開体験を提供しています。
この操作では、合計で2つのスマートコントラクトを展開し、それらと相互作用し、資産をL2からL1に戻しました。現在、安全上の理由から、ZkSync EraメインネットからイーサリアムL1への出金には24時間の遅延があります。
Kakarot ZkEvm
もう一つの2.5タイプのZK-EVMを実現するプロジェクトはKakarot ZkEvmであり、このプロジェクトは今年6月にVitalik ButerinやStarkWareを含む複数の機関から資金を調達し、Kakarotは2023年後半にテストネットをリリースする予定です。
関連記事:
《Kakarotの詳細:Vitalikに支持され投資されたzkEVMプロジェクト》
結論
エンドユーザーにとって、誰が競争に勝つかは重要ではありません。EVM互換のZKソリューションの進展は、業界全体にとって大きな勝利です。各プロジェクトにとって、競争というよりは、業界全体の進歩を促進するための異なる方法を探求することです。Vitalikは「多証明者理論」を提唱しており、その基本前提は、異なるRollupが協力してイーサリアムの全体的なセキュリティを強化できるというものです。
結局のところ、皆がイーサリアムの成功を望んでいます。L2のスケーリング変革は、Vitalikがイーサリアムが経験すべき3つの技術的変革の1つと考えています。今後の展開に注目しましょう。