QRコードをスキャンしてダウンロードしてください。
BTC $66,880.19 -5.97%
ETH $1,867.76 -6.46%
BNB $653.25 -5.46%
XRP $1.22 -5.36%
SOL $74.73 -7.71%
TRX $0.3323 -3.10%
DOGE $0.0931 -7.36%
ADA $0.2132 -7.20%
BCH $269.76 -7.32%
LINK $8.40 -6.75%
HYPE $70.45 -4.95%
AAVE $74.09 -7.04%
SUI $0.8144 -6.72%
XLM $0.2273 -5.04%
ZEC $625.79 +14.82%
BTC $66,880.19 -5.97%
ETH $1,867.76 -6.46%
BNB $653.25 -5.46%
XRP $1.22 -5.36%
SOL $74.73 -7.71%
TRX $0.3323 -3.10%
DOGE $0.0931 -7.36%
ADA $0.2132 -7.20%
BCH $269.76 -7.32%
LINK $8.40 -6.75%
HYPE $70.45 -4.95%
AAVE $74.09 -7.04%
SUI $0.8144 -6.72%
XLM $0.2273 -5.04%
ZEC $625.79 +14.82%

深く解析する zkEVM:動作原理、構築の難易度、重要性、そして開発の進捗など

Summary: 異なるzkEVMプロジェクトは、EVMの実行とゼロ知識証明計算を組み合わせるために異なるアプローチを採用しており、それぞれのアプローチには独自のトレードオフがあります。
錬金術
2022-12-05 16:05:23
コレクション
異なるzkEVMプロジェクトは、EVMの実行とゼロ知識証明計算を組み合わせるために異なるアプローチを採用しており、それぞれのアプローチには独自のトレードオフがあります。

原文标题:《zkEVM 知識問答 --Alchemy

原文來源: Alchemy

ゼロ知識イーサリアム仮想マシン(zkEVM)は、プログラムの正確性を検証するためにゼロ知識証明を生成する仮想マシンです。zkEVMは、ゼロ知識技術をサポートする方法でスマートコントラクトを実行することを目的としています。

zkEVMは、イーサリアムの第2層拡張ソリューションの一部であるゼロ知識(ZK)ロールアップの一部であり、計算と状態ストレージをチェーン外に移動することでスループットを向上させます。ZKロールアップは、イーサリアムにトランザクションデータを提出し、チェーン外トランザクションバッチの有効性を検証するゼロ知識証明を提供します。

初期のZKロールアップは、スマートコントラクトを実行する能力が不足しており、単純なトークン交換や支払いに制限されていました。しかし、EVM互換のゼロ知識仮想マシンの導入により、ZKロールアップはイーサリアムのdAppをサポートし始めました。

この記事では、zkEVMの動作原理、重要性、および存在するzkEVMの種類について探ります。

zkEVMとは何ですか?

zkEVMは、ゼロ知識証明計算をサポートするEVM互換の仮想マシンです。通常の仮想マシンとは異なり、zkEVMはプログラム実行の正確性を証明し、操作中に使用される入力と出力の有効性を含みます。

この定義をさらに分解して、理解しやすくしましょう:

EVM互換性

EVM(イーサリアム仮想マシン)は、イーサリアムネットワーク上にデプロイされたスマートコントラクトを実行するためのランタイム環境です。EVMは「世界コンピュータ」として機能し、イーサリアムブロックチェーン上で動作する分散型アプリケーション(dApps)に力を提供します。

仮想マシンがEVM環境で実行されるように作成されたプログラムを実行できる場合、それは「EVM互換」と見なされます。このような仮想マシンは、Solidityやイーサリアム開発で使用される他の高級言語で書かれたスマートコントラクトを実行できます。zkEVMはEVM互換であり、イーサリアムスマートコントラクトを実行するために基盤となるロジックを大幅に変更する必要がありません。

ゼロ知識技術のサポート

EVMはゼロ知識証明をサポートするように設計されていなかったため、EVM互換でゼロ知識に優しい仮想マシンを構築することが困難でした。しかし、研究の進展により、EVM計算をゼロ知識証明にラップすることがある程度可能になりました。

異なるzkEVMプロジェクトは、EVM実行とゼロ知識証明計算を組み合わせるために異なるアプローチを採用しています。各アプローチには独自のトレードオフがあり、ガイドの後半で探ります。

zkEVMはどのように機能しますか?

EVMと同様に、zkEVMはプログラム操作を介して状態間を変換する仮想マシンです。しかし、zkEVMはさらに進んで、計算の各部分の正確性を証明するために証明を生成します。本質的に、zkEVMは実行ステップ(前述の通り)がルールに従っていることを証明するメカニズムを使用します。

zkEVMの動作原理(およびそれが異なる理由)を理解するために、EVMの現在の動作原理を振り返りましょう。

EVMの動作原理

イーサリアム仮想マシンは状態機械であり、いくつかの入力に応じて古い状態から新しい状態に移動します。各スマートコントラクトの実行は、EVMの状態の変化(「状態遷移」と呼ばれる)を引き起こします。以下は、スマートコントラクトトランザクション中に発生することの高レベルの概要です:

  1. コントラクトのバイトコード(ソースコードからコンパイルされたもの)がEVMのストレージからロードされ、EVM上のピアツーピアノードによって実行されます。ノードは同じトランザクション入力を使用し、これにより各ノードが同じ結果に達することが保証されます(そうでなければ合意に達することができません)。

  2. EVMのオペコード(バイトコードに含まれる)は、EVM状態の異なる部分(メモリ、ストレージ、スタック)と相互作用します。オペコードは、状態ストレージから値を読み取り(取得)新しい値をEVMのストレージに書き込む(送信)読み書き操作を実行します。

  3. EVMのオペコードは、新しい値を返す前に、状態ストレージから取得した値に対して計算を実行します。この更新により、EVMは新しい状態に遷移します(したがって、トランザクションは「状態遷移」と呼ばれます)。この新しい状態は、他のノードによって複製され、別のトランザクションが実行されるまで保持されます。

image.png

イーサリアム仮想マシン(EVM)内でプログラムがどのように実行されるかを示す図。[出典]

zkEVMの動作原理

zkEVMは、計算の各要素を検証するためにゼロ知識証明を生成します:

1. バイトコードアクセス:適切なプログラムコードが正しいアドレスから正しくロードされましたか?

2. 読み書き操作:プログラムは計算の前にスタック/メモリ/ストレージから正しい値を取得しましたか?プログラムは実行を完了した後、正しい出力値をスタック/メモリ/ストレージに書き込みましたか?

3. 計算:オペコードは正しく実行されましたか(すなわち、一つずつ、ステップを飛ばさずに)?

zkEVMのアーキテクチャ

zkEVMは、実行環境、証明回路、および検証者コントラクトの3つの部分に分かれています。各コンポーネントは、zkEVMのプログラム実行、証明生成、および証明検証に寄与します。

1. 実行環境

その名の通り、実行環境はzkEVM内でプログラム(スマートコントラクト)を実行する場所です。zkEVMの実行環境の機能はEVMと非常に似ています:それは初期状態と現在のトランザクションを受け取り、新しい(最終的な)状態を出力します。

2. 証明回路

証明回路は、実行環境で計算されたトランザクションの有効性を検証するためにゼロ知識証明を生成します。前の状態、トランザクション入力、および後の状態情報を入力として使用して、証明生成プロセスを完了します。その後、証明者はその特定の状態遷移の有効性を示す簡潔な証明を取得します。

image.png

zkEVMがプログラムの有効性証明を生成する方法を示す図。[出典]

  1. 検証者コントラクト

ZKロールアップは、有効性証明をL1チェーン(イーサリアム)にデプロイされたスマートコントラクトに提出して検証します。入力(前の状態とトランザクション情報)と出力(最終状態)も検証者コントラクトに提出されます。その後、検証者は提供された証明に基づいて計算を実行し、提出された出力が入力に基づいて正しく計算されたことを確認します。

zkEVMオペコードとは何ですか?

zkEVMオペコードは、EVM互換のZKロールアップ内でプログラムを実行するための低レベルのマシン命令です。EVMと同様に、高級言語で書かれたコントラクトは、VMが解釈できる低レベル言語(バイトコード)にコンパイルする必要があります。このバイトコードは、VM内でプログラムをデプロイする際に使用されるオペコードを指定します。

zkEVMオペコードが必要なのは、通常のEVMオペコードがゼロ知識証明回路内での使用効率が非常に低いためです。通常、zkEVMのオペコードを作成するには2つの方法があります:

ネイティブEVMオペコードのためにZK回路を構築する

ZK証明計算のために新しい言語を作成する

ネイティブEVMオペコードのためにゼロ知識回路を構築する

この方法では、すべてのEVM命令セットを算術回路に実装する必要があります------これは複雑で時間のかかる作業です。利点は、開発者が既存のブロックチェーン開発ツールを使用してスマートコントラクトを作成したり、既存のイーサリアムコントラクトをZKロールアップに移植したりする際に、大幅な変更を行う必要がないことです。

ZK証明計算のために新しい言語を作成する

この方法では、有効性証明をサポートすることを目的とした新しい言語を構築し、カスタムオペコードを開発する必要があります。開発者は新しい言語で直接コントラクトを書くか、SolidityソースコードをカスタムzkEVMオペコードにコンパイルする必要があります。

この方法は通常、最初の方法よりも実装が容易ですが、欠点もあります。たとえば、開発者は既存のイーサリアムインフラストラクチャやリソースにアクセスできない可能性があります。

image.png

EVM互換性に基づいて分類されたゼロ知識仮想マシン。[出典]

zkEVMの構築が困難な理由は何ですか?

EVMは構築時にzk-proof計算を考慮していなかったため、証明回路に対してフレンドリーでない特性を持っています。以下は、zkEVMの構築を困難にする4つの要因の簡単な概要です:

特別なオペコード

スタックベースのアーキテクチャ

ストレージオーバーヘッド

証明コスト

1. 特別なオペコード

通常のVMとは異なり、EVMはプログラムを実行するために特別なオペコード(CALL、DELEGATECALL)やエラーハンドリング(REVERT、INVALID)などの他の操作を使用します。これにより、EVMオペコードのための検証回路を設計するプロセスが複雑になります。

2. スタックベースのアーキテクチャ

EVMはスタックベースのアーキテクチャを使用しており、レジスタベースの構造よりも簡単ですが、計算証明の難易度を上げます。これが、著名なゼロ知識VM(例えば、ZkSyncのzkEVMやStarkWareのStarkNet)がレジスタベースのモデルを使用している理由です。

3. ストレージオーバーヘッド

EVMのストレージレイアウトは、Keccakハッシュ関数とMerkle Patricia Trieに依存しており、どちらも高い証明オーバーヘッドを持っています。一部のzkVM(例えばZkSync)は、KECCAK256関数を置き換えることでこの問題を回避しようとしていますが、これにより既存のイーサリアムツールやインフラストラクチャとの互換性が損なわれる可能性があります。

4. 証明コスト

上記の問題が解決されても、証明生成プロセスに対処する必要があります。ゼロ知識証明を生成するには、専用のハードウェアと大量の時間、金銭、労力が必要です。

このリストは完全ではありませんが、EVM互換のzkEVMの構築を妨げるいくつかの問題を提起しています。それにもかかわらず、ゼロ知識技術のいくつかのブレークスルーにより、これらの問題を緩和することが可能になり、zkEVMソリューションへの関心が再燃しています。

zkEVMが重要な理由は何ですか?

機能的なzkEVMを構築することは、EVM互換のZKロールアッププロジェクトの開発を促進します。これにはいくつかの利点があります:

安全なスケーラビリティ

コスト削減

より迅速な確定性と資本効率

ネットワーク効果

1. 安全なスケーラビリティ

プロトコルルールに従って、すべての検証ノードはイーサリアム仮想マシンで実行されたすべての計算を再実行する必要があります。このアプローチは安全性を確保しますが、イーサリアムネットワークは約15-20のトランザクションしか管理できないというスケーラビリティの制限があります。

EVM互換のZKロールアップは、ネットワークの安全性を損なうことなくイーサリアムのスループットの問題を解決できます。他の拡張プロトコルと同様に、ZKロールアップはイーサリアムのコンセンサスプロトコルルールの負担を受けず、実行速度を最適化できます。一部の推定によれば、ZKロールアップは1秒あたり約2000件のトランザクションを処理でき、イーサリアムの高額な手数料を発生させることなく実行できます。

しかし、ZKロールアップは他の拡張プロジェクトと比較してより高い安全保障を持っています。彼らは有効性証明を使用してチェーン外計算の正確性を検証します。これは、L2で実行されるスマートコントラクトのトランザクションが、ノードが操作を再実行することなくL1(イーサリアム)で信頼性を持って検証できることを意味します。これにより、安全性を損なうことなくイーサリアムの処理速度を大幅に向上させることができます。

2. コスト削減

ロールアップは、トランザクションデータをCALLDATAとしてイーサリアムに書き込むことで、イーサリアムメインネットから安全性を得ます。しかし、楽観的ロールアップとゼロ知識ロールアップの違いは、イーサリアム上にどれだけのデータを公開する必要があるかです。

楽観的ロールアップはチェーン外トランザクションの有効性証明を提供しないため、トランザクションに関連するすべてのデータ(署名やトランザクションパラメータを含む)をチェーン上に公開する必要があります。すべてのデータをチェーン上に置かないと、挑戦者は無効なロールアップトランザクションに対して詐欺証明を構築できません。

対照的に、ZKロールアップは、有効性証明が状態遷移の信頼性を保証しているため、イーサリアムに最小限のデータを公開できます。zkEVMは、トランザクション入力を省略し、最終的な状態変更のみを公開することで、CALLDATAの要件をさらに削減できます。

3. より迅速な確定性と資本効率

より良い安全性に加えて、ZKロールアップは楽観的ロールアップと比較してもう一つの利点があります:より迅速な最終確定性です。ブロックチェーンにおける確定性は、トランザクションが不可逆的になるために必要な時間です。ネットワーク参加者がその有効性を証明する客観的な証拠を持っている場合にのみ、トランザクションは最終的に確定します。

ZKロールアップを使用すると、zkEVMで実行されるトランザクションは、イーサリアムに公開された後、通常は即座に完了します。各トランザクションバッチには即時に検証可能な有効性証明が付随しているため、イーサリアムメインチェーンは迅速に状態更新を適用できます。

楽観的ロールアップは、証明なしでVMトランザクションを公開するため、トランザクションが最終確定するまでに質疑期間を経る必要があります。挑戦期間は1-2週間であり、この期間中、誰でもトランザクションがイーサリアムに提出された後にそれに挑戦できます。

遅い最終確定性はユーザー体験に多くの影響を与えます。たとえば、遅延期間が満了する前に、ユーザーはロールアップから資産を引き出すことができません。流動性提供者は問題を解決するかもしれませんが、引き出しが高価値の資産やNFTを含む場合、無効になる可能性があります。

zkEVMは上記の問題を抱えていません。より迅速な最終確定性は、特にL1とL2の間で資産をシームレスに移動する必要があるNFTトレーダー、DeFi投資家、アービトラージトレーダーなどの高度なユーザーに非常に適しています。

4. ネットワーク効果

EVM互換のzkVMを構築する最も重要な理由は、イーサリアムのネットワーク効果を利用することです。世界最大のスマートコントラクトプラットフォームであるイーサリアムは、開発者やプロジェクトに価値を提供する大規模なエコシステムを持っています。

たとえば、開発者は実戦でテストされ、監査されたコードベース、広範なツール、ドキュメントなどにアクセスできます。イーサリアムインフラストラクチャと互換性のない新しいzkVMを作成すると、プロジェクトや開発チームはイーサリアムのネットワーク効果を活用できなくなります。

zkEVMにはどのような種類がありますか?

現在のzkEVMプロジェクトは、ネイティブEVMオペコードをサポートするzkVMと、カスタムEVMオペコードを使用するzkVMの2つの大きなカテゴリに分かれています。以下では、異なるzkEVMプロトコルを比較し、それらがどのように機能するかを説明します:

Polygon zkEVM

Polygon Hermezは、EVM互換性をサポートするために設計されたゼロ知識仮想マシンを持つPolygon ZKロールアップです。これを実現するために、EVMバイトコードは「マイクロオペコード」にコンパイルされ、uVMで実行されます------SNARKとSTARK証明を使用してプログラム実行の正確性を検証する仮想マシンです。

この2つの証明タイプを組み合わせる決定は戦略的に重要です。STARK(スケーラブルな透明な知識証明)証明の生成速度は速いですが、SNARK(簡潔な非対話型知識証明)証明は小さく、イーサリアム上での検証コストが低くなります。

Polygon Hermez zkEVMは、STARK証明回路を使用して状態遷移の有効性証明を生成します。STARK証明は、STARK証明の正確性を検証し(「証明の証明」として考える)、イーサリアムに提出されます。

zkSync zkEVM

zkSyncは、Matter Labsによって開発されたEVM互換のZKロールアップであり、独自のzkEVMによってサポートされています。zkSyncは、イーサリアムとの互換性を実現するために以下の戦略を使用します:

  1. Solidityで書かれたコントラクトコードをYulという中間言語にコンパイルし、異なる仮想マシンのバイトコードにコンパイルできます。

  2. Yulバイトコード(LLVMフレームワークを使用)を再コンパイルして、zkSyncのzkEVM用に特別に設計されたカスタムで回路互換のバイトコードセットを生成します。

Polygon Hermezと同様に、zkSync zkEVMはバイトコードレベルではなく言語レベルでEVM互換性を実現しています。たとえば、zkSyncのzkEVMは、従来の乗算および加算オペコード(ADDMOD、SMOD、MULMOD)をサポートしていません。

Scroll zkEVM

Scrollは、開発中の新しいゼロ知識EVM実装です。Scrollチームは、各EVMオペコードのためにゼロ知識回路を設計する計画です。これにより、開発者はイーサリアムネイティブのスマートコントラクトEVMをScroll上にデプロイでき、基盤となるEVMバイトコードを変更する必要がありません。

さらに、Scroll zkEVMは「暗号累積器(cryptographic accumulator)」を使用してストレージの正確性を検証します。これは、コントラクトバイトコードが指定されたアドレスから正しくロードされたことを証明するために使用されます。

また、バイトコードと実行トレースをリンクする回路も提供します。実行トレースは、どのVM命令が実行されたか、および実行順序を指定するシーケンスです。証明者は、計算が元のバイトコードと一致することを検証するために、証明生成中に実行トレースを提出します。

Applied ZKP zkEVM

Applied ZKPは、イーサリアム財団によって資金提供されたプロジェクトで、EVM互換のZKロールアップを開発し、イーサリアムブロックに有効性証明を生成するメカニズムを提供することを目的としています。最後の部分は重要であり、ブロックと有効性証明をペアリングすることで、ノードがブロックを再実行する必要を排除します。

Applied ZKPの革新は、計算とストレージの分離です。状態証明とEVM証明の2種類の有効性証明を使用します:

状態証明

ストレージ、メモリ、スタックに関与する操作が正しく発生したかどうかを確認します。状態証明は本質的に、読み書き操作の正確性を検証します。

EVM証明

計算が正しいタイミングで正確なオペコードを呼び出したかどうかを確認します。EVM証明は計算自体を検証し、状態証明が各オペコードに対して正しい操作を実行したことを確認します。

Applied ZKP zkEVMは、バスマッピングを使用して状態証明とEVM証明をリンクします。さらに、イーサリアムブロックが有効と見なされる前に、これらの2つの証明が検証される必要があります。

私たちはzkEVMの開発進捗のどの位置にいますか?

zkSyncを除いて、ほとんどのゼロ知識EVMはまだ開発中です。しかし、ゼロ知識技術の進展により、機能的なzkEVMの展望はこれまで以上に明るいものとなっています。

warnning リスク警告
app_icon
ChainCatcher Building the Web3 world with innovations.