Zenith EVMとは?
Zenith EVMは、Zenithが運営するリファレンスEVM環境です。高性能なEthereumの実行クライアントであるReth上に構築されており、標準的なEthereum RPCインターフェースを公開しています。これにより、開発者はZenith EVMをEthereum互換チェーンとまったく同様に操作でき、Solidity、Hardhat、Foundry、MetaMaskなどの既存ツールを使用してスマートコントラクトをデプロイし、既存のEVMアプリケーションを変更なし、または最小限の変更でそのまま移行することができます。
Zenith EVMは、Cantonサブネットおよびネイティブなアプリケーションとアトミックに合成可能です。ユーザーはラップされたEVMペイロードを含むネイティブなCanton トランザクションを送信でき、クロスチェーンのアトミック操作が可能になります。たとえば、Cantonネイティブ資産とZenith EVM上に存在するEVMネイティブ資産の間のアトミックスワップを実行し、トランザクションの両レッグが正常に実行された後、ユーザーにファイナリティが確認されます。
相互運用性はCantonを超えて広がります。Zenith EVMは、ChainlinkやLayerZeroなどの相互運用性ソリューションを通じて、より広いEthereumエコシステムに接続される予定です。
技術概要
Zenith EVMは、高性能でモジュール式のEthereumの実行クライアントであるReth上に構築されています。これにより、Zenith EVMは実行レイヤーにおいて完全にEthereumと同等です。
- 同一のEVMランタイムを実行します。
- 完全に互換性のあるEthereum RPCインターフェースを公開します。
- Ethereum mainnetと同じライブラリおよびスマートコントラクト標準をサポートします。
アトミック合成可能性
Zenith EVMとCantonの間のアトミック合成可能性は、ZenithがDamlに実装したexternal_call()プリミティブによって実現されています。この関数により、DamlコントラクトはEVM実行環境を決定論的に呼び出すことができます。
これは、ネイティブなEVM実行の結果をCantonに確認し、DamlコントラクトでEVMのステートルートを検証するために使用されます。
external_call()プリミティブはCantonのネイティブな二段階検証プロセスに従い、追加の信頼前提を導入しません。
- サブミッターは解釈中に関数を実行し、その結果(およびオプションでそのハッシュ+メタデータ)をトランザクションビューの一部として含めます。
- 各バリデーターは同じ
external_call()をローカルで再実行します。 - いずれかのバリデーターが異なる出力を得た場合、検証は失敗し、既存のDamlプリミティブと同じ決定論ルールが適用されます。
ファイナリティ
CantonとZenith EVMアプリケーションにまたがるトランザクションのファイナリティまでの時間は、Canton内のみのトランザクションとほぼ同じになります。Zenith EVMが追加するレイテンシは数百ミリ秒の範囲でほとんど気にならない程度です。
Zenith EVM上での構築方法
Zenith EVMはフードの下でRethを使用しているため、開発者体験はEthereum上での構築と実質的に同一です。ほとんどの場合、必要な変更は標準的なEthereumノードの代わりにZenith EVMエンドポイントを指すようにRPC設定を更新するだけです。
RPC設定
Zenith EVMはバニラのEthereumのRPCエンドポイントを公開しています。ツールを接続するには、既存のRPC URLをご利用の環境向けに提供されたZenith EVMのRPCエンドポイントに置き換えてください。ワークフローの他の部分はすべてそのままです。
ツール
すべての標準的なEthereumの開発ツールはZenith EVMですぐに使用できます。
- Foundry:通常通りコントラクトをコンパイル、テスト、デプロイします。
- Hardhat:Zenith EVMのネットワーク設定を追加し、通常通りデプロイします。
- MetaMask:提供されたRPC URLとチェーンIDを使用してZenith EVMをカスタムネットワークとして追加します。
開発者の観点から見ると、Zenith EVMはEthereumのように動作しながら、Canton環境内でのアトミック合成可能性と決済を実現します。
スマートコントラクトのデプロイ
コントラクトのデプロイはEthereum上と同様に機能します。
Solidityでコントラクトを記述し、お好みのツールチェーンでコンパイルして、Zenith EVMのRPCエンドポイントを使用してZenith EVMにデプロイします。既存のコントラクトは、EthereumまたはEVM互換チェーンから変更なし、または最小限の変更でそのまま移行できます。
Canton と Zenith EVM 間のトランザクションフロー
前述のとおり、Zenith は Canton に EVM 互換の実行環境を拡張し、Canton サブネットとネイティブに組み合わせ可能です。すべての EVM アクティビティは Canton を経由してルーティングされ、Canton MainNet 上で決済されます。
以下では、Canton と Zenith EVM にまたがるトランザクションのハイレベルなフローについて説明します。
1. Canton を介したトランザクション送信
ユーザーは Canton を通じてネイティブトランザクションを送信します。Zenith EVM との連携が必要な場合、Canton トランザクションには以下が含まれます。
- 署名済みでラップされた EVM トランザクションペイロード。
- 対応する Daml オペレーション。
2. Daml から EVM への呼び出し
Zenith EVM を含む各 Zenith 環境は、Canton 上に独自の Daml コントラクトを持ちます。
Daml コントラクトがトランザクションを処理する際、以下を行います。
- 受信リクエストを登録する。
external_call()関数を呼び出す。- EVM ペイロードをローカルで稼働している EVM 環境に転送する。
external_call() プリミティブにより、Daml コントラクトは決定論的にローカルで稼働するサービスを呼び出し、同一のアトミックトランザクション内で結果を受け取ることができます。
3. ネイティブ EVM 実行
Canton 参加者は二重の役割を担います。
- Canton ドメインのノードとして。
- Zenith EVM のシーケンサー/オペレーターとして。
EVM トランザクションは Reth ベースの EVM ランタイム上でネイティブに実行されます。
実行の保証には以下が含まれます。
- 逐次的なシングルスレッド EVM セマンティクス(Ethereum と一貫性あり)。
- 競合するトランザクションの拒否によるステートの競合なし。
- 新しい EVM ステートルートを生成するステート遷移。
4. 再実行による決定論的トランザクション検証
external_call() は Canton のネイティブな二段階検証モデルに従います。
- 送信者はインタープリテーション中に関数を実行し、その結果をトランザクションビューに含めます。
- 同一ドメイン内の他のすべての Canton 参加者が、同じ呼び出しをローカルで再実行します。
- いずれかのバリデーターが異なる出力を得た場合、検証は失敗します。
これにより、Canton の既存の実行モデルと一貫した、決定論的なクロス環境実行が保証されます。
5. 決済とファイナリティ
EVM 実行が成功した後:
- EVM トランザクションの出力が Daml コントラクトに返されます。
- 新しい EVM ステートルートが Canton にポストされます。
Canton レッグと EVM レッグはいずれも同一トランザクションの実行ツリーの一部であるため:
- 実行はアトミックです:両方のレッグが成功するか、トランザクション全体が失敗するかのいずれかです。
- ファイナリティはユーザーに確認されます。
Canton 上のコンポーザブルな EVM アプリケーション
Zenith は Canton にネイティブ EVM 実行をもたらし、開発者が Canton ネイティブコントラクトおよびサブネットとアトミックにコンポーザブルな Solidity アプリケーションをデプロイできるようにします。
Solidity、Foundry、Hardhat、MetaMask などの使い慣れた Ethereum ツールを使用しながら、Canton のプライバシーモデルと決済保証の恩恵を受けることができます。Zenith EVM 環境にデプロイされたアプリケーションは、Ethereum と同等の実行セマンティクスを維持し、ステートルートは Canton MainNet 上で決済されます。
これにより、以下を含む新たな設計の可能性が開かれます:
- EVM ベースの DeFi アプリケーションが、規制された Canton ネイティブ資産と直接コンポーズする。
- Canton 参加者によって運営されるエンタープライズグレードの許可型 EVM 環境。
- Daml と EVM をまたいでアトミックに実行されるクロスドメイントランザクション。
スマートコントラクトの構築、既存の EVM アプリケーションの移行、またはクロス環境コンポーザビリティの探求をお考えであれば、技術的なガイダンス、インテグレーションサポート、アーキテクチャに関するディスカッションを喜んでご支援いたします。
お問い合わせいただき、コラボレーションや Zenith が Canton 上でお客様のアプリケーションをどのようにサポートできるかをご検討ください。