Polygonの社員の証言:Polygon zkEVMとzkSync zkEVMの違い
原文タイトル:《A comparison of zkEVMs》
著者:Daniel Lubarov
編訳:Kxp,BlockBeats
「zkEVM 戦争」が激化する中、さまざまな zkEVM の利点についての公の議論が行われています。しかし、いくつかの誤った情報も存在するため、Polygon zkEVM および他のプロジェクトとの比較に関する事実を明らかにしたいと思います。
Polygon の社員として、私は偏見を持っていますが、公正な比較を心がけます。主に Polygon の zkEVM と zkSync Era に焦点を当てています。なぜなら、これらはすでに生産環境で使用されており、他の zkEVM プロジェクトについてはあまり詳しくないからです。
zkSync の zkEVM と証明器は、10万行以上のコードで構成されています。正確な要約を提供するよう努めますので、もし不正確な点があればお知らせください。修正いたします。
EVM 互換性
Polygon zkEVM は EVM バイトコードを直接実行します。Vitalik の分類によれば、これはタイプ 3 の zkEVM です。すぐにタイプ 2 になる予定ですが、現在は4つのプリコンパイルが不足しています。Scroll もタイプ 2 zkEVM への移行に取り組んでいます。
対照的に、zkSync Era は異なるバイトコード形式を使用し、Solidity をサポートするコンパイラを提供しています。これにより、Solidity をサポートするが EVM バイトコード自体はサポートしないタイプ 4 の zkEVM となります。例えば、Hardhat のようなツールは直接使用できませんが、zkSync のプラグインを使用することは可能です。
zkSync は、彼らの zkVM がより未来的であり、Solidity 以外の言語との相性が良いと考えています。しかし、彼らの VM は EVM の多くの性能特性を引き継いでいるようで、例えば 256 ビットのワードサイズなどがあります。Miden のような zkVM は、Solidity に特化せずに汎用計算のために設計されているため、より未来的である可能性があります。
性能
性能は常に Polygon の重点であり、私たちの zkEVM は非常に効率的です。CPU 上で私たちの証明器を実行するコストは、1 トランザクションあたり約 0.000084 ドルです。
zkSync の zkEVM に関する作業ベンチマークは見つかりませんでしたが、私たちの非常に異なる ZK 技術の選択により、大きな性能差が存在するのではないかと疑っています。
ドメイン選択
複数の代替案を調査した結果、私たちは「ゴルディロックスフィールド」と呼ばれる、2^64 - 2^32 + 1 の二次巨大素数フィールドを選択しました。その小さなサイズと美しい二進数構造により、非常に迅速なドメイン操作が可能で、乗算は現代の CPU で 2 サイクル未満で行えます。
zkSync は、alt-bn128 曲線に基づく SNARK を使用するより伝統的なアプローチを採用しています。基礎ドメインのサイズは約 254 ビットで、ドメイン乗算は CPU 上で約 80 サイクルを要します。
この巨大な差の影響を感じるために、Celer の SHA2 ベンチマークを見てみましょう。そこで、私たちの STARK 証明器は、楕円曲線に基づく証明器よりも 5 倍から 50 倍速いです。
alt-bn128 の利点は、EVM がネイティブにサポートしているため、Ethereum に証明を提出するのが簡単であることです。Polygon では、最終的な集約証明を alt-bn128 の fflonk 証明で「ラップ」しています。私たちのアプローチはより多くの作業を必要としますが、信じられないほどの性能向上のためにはそれだけの価値があると考えています。
算術化
違いはこれだけではありません。私たちの zkEVM は STARKs に基づいて構築されていますが、現代的な変化を持っています。CPU 用の主 STARK があり(各サイクルに 1 行)、算術、ハッシュなどのための他の STARK もあります。これらのテーブルは接続可能で、RapidUp で説明したように機能します。これは物理 CPU に似ており、レンダリング、Crypto、ML 推論などの集中的な操作を加速するために協調プロセッサを持つことがよくあります。
Keccak を例に挙げます。EVM アプリケーションで広く使用されているため、私たちはそれ専用の STARK を設計し、ここで記録した新しい技術をいくつか使用しました。このようなカスタム算術化の設計には多くの作業が必要ですが、報酬をもたらし、毎秒数百の Keccak 配列を証明できるようになりました。
zkSync は、私が「より伝統的な方法」と呼ぶアプローチを採用しています。彼らは PLONK ベースの証明器を使用していますが、カスタムゲートをサポートしているにもかかわらず、彼らの zkEVM ではあまり使用されていません。ほとんどの計算は、SelectorOptimizedWidth4MainGateWithDNext という名前の汎用ゲートを使用して行われています。これはバニラ PLONK ゲートよりもわずかに強力なようですが、依然として mul-adds のような単純な操作に制限されています。
称賛に値するのは、zkSync が私たちと同様にルックアップパラメータを使用していることで、これは Keccak のような効率を向上させるためのより現代的な技術です。しかし、カスタム算術化がないため、256 ビット数学、Keccak などの効率は大幅に低下します。
安全性
Polygon は安全性を非常に重視しており、私たちの zkEVM は二回の独立監査を受けています:一回は Spearbit によるもので、もう一回は Hexens によるものです。両方のレポートはここで公開されています。また、検証デプロイメントの説明も公開しています。
私たちは、zkSync の zkEVM が公開監査を受けているかどうかは知りません。zkSync のウェブサイトにはブリッジ契約の監査がリストされていますが、zkEVM 自体の監査はありません。
監査に加えて、両プロジェクトにはさまざまな「セキュリティバックアップ」があり、代替のセキュリティ層を提供していますが、これは非常に深い話題であり、ここでは詳しく説明しません。
L1データ
Polygon zkEVM はすべての取引データを L1 に公開します。Twitter ではこれに関する混乱があり、Gas 費用については Edu の記事を参照してください。現在、平均取引サイズは約 120 バイトで、したがって各取引の Gas 費用は約 120*16=1920Gas です。
zkSync は状態の差異を公開します。悪意のあるシリアライザーは取引データを隠す可能性がありますが、zkSync は現在の状態のトライがあれば安全性が確保できると考えています。これは議論の余地があるようで、通常は取引データが利用可能であることが期待されており、特定のアプリケーションはこれに依存しています。
修正されたデータを確認すると、私たちの zkEVM と zkSync の各取引の Gas 費用は基本的に同じであることがわかります。これらの数字は、各チェーン上で発生する取引の種類の混合によって時間とともに変化する可能性がありますが、現時点では状態の差異は Gas 費用を節約していません。両システムは L1 に約 120 バイトの各取引データを送信しています。
ここでいくつかの最適化を計画していますが、状態の差異は使用しません。取引自体は圧縮可能で、Gas 費用を削減しながら取引データの可用性を確保できます。ご期待ください!