Skip to main content

EVM とは

注:この文書は英語の原文からの自動翻訳です。

EVM とは

EVM(Ethereum Virtual Machine)とは、Ethereum と数多くの他のブロックチェーンを動かす計算エンジンです。それは スマートコントラクト — ブロックチェーン上に保存される自己強制的なプログラム — を実行するソフトウェア環境です。開発者が Solidity(または別の EVM 互換言語)でスマートコントラクトを書き、それをコンパイルしてチェーンにデプロイすると、そのコードを実際に実行するのが EVM です。

EVM 互換ネットワーク上のすべてのノードは、同じルールを持つ同じ仮想マシンを実行します。これが、スマートコントラクトを決定論的にしているものです。同じ入力と状態が与えられれば、すべてのノードが同じ出力を生成します。曖昧さはなく、「自分のマシンでは動く」という問題もありません。EVM は、ネットワークのすべての参加者がすべての計算の結果について合意することを保証します。

要約: EVM は、Ethereum と EVM 互換チェーン上のスマートコントラクトのための標準化された実行エンジンです。それはコードがどのように動作し、状態がどのように保存され、ガスがどのように消費されるかを定義し、すべてのノードにわたって同一に動作する共通のランタイムを作り出します。

EVM の仕組み

バイトコードの実行

スマートコントラクトは、人間が読めるソースコードとしてオンチェーンに保存されるわけではありません。デプロイの前に、ソースコード(通常は Solidity で書かれます)は バイトコード — EVM が理解する低水準の命令セット — にコンパイルされます。各命令は オペコード です。「二つの数を加える」「値をメモリに保存する」「ストレージからデータを読み込む」「トークンを移転する」のような基本的な操作です。

取引がスマートコントラクトをトリガーすると、ネットワーク上のすべての検証ノードは次を行います。

  1. コントラクトのバイトコードをブロックチェーンの状態から読み込む。
  2. EVM の仕様に従ってオペコードを逐次実行する。
  3. 実行結果に基づいてブロックチェーンの状態を更新する。
  4. 実行された各オペコードに対してガスを請求する。

すべてのノードが同じルールで同じバイトコードを実行するため、すべてが同じ結果に到達します。この決定論的な実行が、オンチェーンでのトラストレスな計算の基盤です。

ガス

すべてのオペコードには ガスコスト — その命令を実行するために必要な計算労力を表す測定単位 — があります。ガスは二つの目的を果たします。

  • リソースの計量 — ガスは無限ループを防ぎ、すべての計算が限られた量のネットワークリソースを消費することを保証します。永久に実行しようとするコントラクトは、ガス上限を使い果たしてリバートします。
  • 手数料のメカニズム — ユーザーは、取引を実行するバリデータに報いるために、ガス代(チェーンのネイティブトークンで建てられる)を支払います。より複雑な操作はより多くのガスを消費します。

ガスコストは EVM の仕様によって定義され、すべての EVM 互換チェーンにわたって同じです(ただし、ネイティブトークンでのガスの価格はネットワークによって異なります)。

状態とストレージ

EVM はグローバルな状態 — アドレス(ユーザーアカウントとコントラクトアカウントの両方)からその現在の残高、コード、ストレージへのマッピング — を維持します。スマートコントラクトのストレージはキーバリューストアとして組織されており、各コントラクトは永続的なデータを読み書きできる独自の 256 ビットのアドレス空間を持っています。

ストレージの操作(永続的な状態への書き込みと読み込み)は、ガスの面で EVM の最も高価な操作の一つです。それらはすべてのノードが永久に保存しなければならないデータに影響するためです。

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

EVM は スタックマシン です。名前付きのレジスタではなく、計算中の中間値を保持するために後入れ先出しのスタックを使用します。オペコードはスタックに値をプッシュし、最上位の要素を操作し、結果をプッシュバックします。この設計は単純でよく仕様化されていますが、ほとんどの従来の CPU や一部の新しいブロックチェーン仮想マシン(Solana の SBF/eBPF など)が使用するレジスタベースのアーキテクチャとは異なります。

EVM がなぜ重要か

エコシステムになった標準

EVM の重要性は、Ethereum 自体をはるかに超えて広がります。EVM の仕様はオープンでよく文書化されているため、多くの他のブロックチェーンがそれを採用してきました。EVM をネイティブに実行するか、EVM 互換の実行レイヤーを実装するかのいずれかです。これは共有されたエコシステムを作り出しました。

何が共有されるか 実務上それが何を意味するか
スマートコントラクト言語 開発者は Solidity を一度書けば、任意の EVM チェーンにデプロイできる
開発ツール Hardhat、Foundry、Remix、その他のツールがすべての EVM チェーンで動作する
ウォレットの互換性 MetaMask やその他の EVM ウォレットは、新しいネットワークを追加するだけで動作する
トークン標準 ERC-20(代替可能なトークン)、ERC-721(NFT)、その他の標準がチェーンを越えて移植可能
監査とセキュリティ セキュリティ監査人、形式検証ツール、ベストプラクティスが EVM チェーンを越えて移転する
開発者の知識 Solidity と EVM を知る開発者は、Ethereum、Polygon、Avalanche、BNB Chain、Arbitrum、Base、その他数十のネットワークで働ける

この移植性こそが、EVM 互換性が、開発者とアプリケーションを素早く引き付けたい新しいブロックチェーンにとってのデフォルトの選択肢になった理由です。ゼロから一つを構築するよりも、既存のエコシステムに参加するほうが安く速いのです。

マルチチェーンのデプロイ

プロジェクト — AI 関連のクリプトプロジェクトを含む — にとって、EVM 互換性は、Ethereum 上にデプロイされたスマートコントラクトが、最小限の変更で Polygon、Avalanche の C-Chain、Arbitrum、Base、BNB Smart Chain 上にデプロイできることを意味します。これにより次が可能になります。

  • マルチチェーンの存在感 — プロジェクトは、異なるユーザー基盤にリーチするために、同じトークンコントラクトとコアロジックを複数のチェーンにデプロイできます。
  • チェーンの移行 — プロジェクトがより低い手数料や高いスループットを持つチェーンに移行する必要がある場合、EVM 互換性が移行コストを削減します。
  • 構成可能性 — 任意の EVM チェーン上で、コントラクトは同じインターフェースと標準を使用して互いにやり取りでき、DeFi の構成可能性、トークン統合、共有インフラを可能にします。

制限

EVM は、計算集約的なワークロードのためではなく、汎用のスマートコントラクト実行のために設計されました。主な制限は次のとおりです。

  • ネイティブな浮動小数点なし — EVM は 256 ビット整数のみを使用します。浮動小数点演算(ほとんどの AI/ML 計算に不可欠)はエミュレートしなければならず、これは極めてガスのかかるものです。
  • ガスの制約 — ブロックのガス上限が、ブロックあたりの総計算量を制限します。複雑な操作(AI 推論のための行列乗算など)は、EVM の実行内では法外に高価です。
  • 逐次実行 — EVM はブロック内で取引を逐次処理します。現代の CPU がパフォーマンスのために使用する並列実行は、ネイティブにはサポートされていません(ただし一部の新しい EVM 互換チェーンは並列 EVM 実行を試みています)。
  • ストレージのコスト — 大量のデータをオンチェーンに保存することは高価です。AI モデル、データセット、中間計算は、オンチェーンの保存にはあまりにも大きすぎます。

これらの制限が、AI 関連のクリプトプロジェクトが通常、AI ワークロードをオフチェーンで実行し、オンチェーンの EVM コントラクトを調整、支払い、ガバナンス、結果の記録のためだけに使用する理由を説明しています。

DecAIHub のプロジェクトカードでどこに現れるか

DecAIHub のプロジェクトカード では、EVM は次の箇所に現れます。

  • Type — EVM は、プロジェクトが EVM 互換チェーン上で運用されていることを示します。これは、プロジェクトが Solidity ベースのスマートコントラクトと標準的な Ethereum のツールを使用していることを読み手に伝えます。
  • Main chain — 具体的な EVM 互換チェーンが記載されます(Ethereum、Polygon、Avalanche、Arbitrum、Base、BNB Smart Chain など)。これらはすべて EVM の実行を共有します。
  • Token standard — EVM 互換チェーンは Ethereum のトークン標準を使用します。ERC-20(代替可能なトークン)、ERC-721(NFT)、ERC-1155(マルチトークン)が最も一般的です。これらの標準は EVM エコシステムに固有のものです。
  • スマートコントラクト — プロジェクトのスマートコントラクトがブロックエクスプローラーで検証されていれば、読み手はそれを精査できます。EVM コントラクトは Solidity(または Vyper)で書かれ、EVM バイトコードにコンパイルされます。

Type: EVM の分類は、プロジェクトのツールとエコシステムについての有用な文脈を提供しますが、それ自体は、プロジェクトの AI の品質やトークンの必要性について何も語りません。

EVM 互換性だけでは証明できないこと

  • EVM 互換性は AI 能力を証明しません。 EVM はスマートコントラクトを実行し、AI モデルは GPU 上で動作します。プロジェクトが EVM チェーン上にあることは、本物の AI コンポーネント を持っているかどうかについて何も語りません。
  • EVM チェーン上へのデプロイは、プロジェクトを唯一無二にしません。 同じコントラクトは数十の EVM 互換チェーンにデプロイできます。デプロイの選択はインフラに関する決定であり、差別化要因ではありません。
  • 検証されたスマートコントラクトは、オフチェーンコンポーネントが機能することを証明しません。 プロジェクトは、クリーンで監査されたオンチェーンのコードを持ちながら、その背後に機能する AI パイプラインを一切持たないこともあり得ます。オンチェーンとオフチェーンのコンポーネントは別々に評価しなければなりません。
  • EVM エコシステムのツールは、エビデンスの必要性を減らしません。 MetaMask のサポート、ブロックエクスプローラーへの掲載、ERC-20 トークンを持つことは標準的なインフラであり、技術、革新、品質のエビデンスではありません。
  • EVM の実行は AI の実行ではありません。 ニューラルネットワーク を EVM 内で実行することは、些細でないモデルにとっては法外に高価です。プロジェクトが EVM チェーン上で「オンチェーン AI」と述べるとき、何がオンチェーンで動作し、何がオフチェーンで動作するのかを正確に確認してください。

混同しないでください

  • Ethereum — Ethereum は特定のブロックチェーンネットワークです。EVM は Ethereum(および多くの他のチェーン)が使用する仮想マシンです。「EVM」は実行エンジンを指し、「Ethereum」はネットワーク、そのバリデータ、その状態を指します。
  • non-EVM ブロックチェーン — Solana、Cosmos チェーン、Bittensor のようなブロックチェーンは、異なる仮想マシン(SVM、CosmWasm、カスタムランタイム)を使用します。それらは EVM 互換ではなく、Solidity のコントラクトと EVM のツールはネイティブには動作しません。
  • スマートコントラクト — スマートコントラクトは EVM 上で動作するプログラムです。EVM はエンジンであり、スマートコントラクトはそれが実行するコードです。スマートコントラクトは non-EVM チェーン上にも存在し、異なる言語とランタイムを使用します。
  • Solidity — Solidity は EVM スマートコントラクトのための最も人気のあるプログラミング言語ですが、EVM 自体ではありません。Vyper はもう一つの EVM 互換言語です。EVM は、どのソース言語が生成したかに関係なく、コンパイルされたバイトコードを実行します。

よくある質問

「EVM 互換」とは何を意味しますか?

ブロックチェーンが、Ethereum と同じオペコードセットと実行ルールを使用して EVM バイトコード — Solidity スマートコントラクトのコンパイルされた形態 — を実行できるなら、それは EVM 互換です。実務上、これは開発者が同じコントラクトを複数の EVM 互換チェーンにデプロイし、同じツール(Hardhat、Foundry、MetaMask)を使用し、同じトークン標準(ERC-20、ERC-721)に依拠できることを意味します。EVM 互換チェーンの例には、Polygon、Avalanche C-Chain、BNB Smart Chain、Arbitrum、Base が含まれます。

AI モデルは EVM 内で実行できますか?

理論上は、あらゆる計算は EVM オペコードとして表現できます。実務上は、些細でない AI モデルを EVM 内で実行することは法外に高価です。EVM はネイティブな浮動小数点サポートを欠き、ブロックあたりの厳格なガス上限を持ち、複雑な操作に高いガスコストを請求します。小さなニューラルネットワークでさえ、単一の順伝播はガスにおいて、実用的なアプリケーションが正当化できるよりも桁違いに多くのコストがかかります。これが、AI 関連のクリプトプロジェクトがモデルをオフチェーンで実行し、EVM を調整、支払い、検証のロジックのためだけに使用する理由です。

なぜこれほど多くのブロックチェーンが EVM を採用するのですか?

ネットワーク効果です。Ethereum は最初の主要なスマートコントラクトプラットフォームであり、その開発者エコシステム — Solidity の知識、ツール、監査の専門知識、ウォレットサポート、トークン標準 — は何年もかけて成長しました。EVM を採用する新しいブロックチェーンは、このエコシステム全体に即座にアクセスできます。開発者は新しい言語を学ぶ必要がなく、プロジェクトは既存のコントラクトをデプロイでき、ユーザーはおなじみのウォレットで接続できます。ゼロから競合するエコシステムを構築することは、はるかに高価で不確実です。EVM 互換性は、採用への実用的な近道です。

EVM 互換と EVM 同等の違いは何ですか?

EVM 互換は、チェーンが EVM バイトコードを実行でき、同じオペコードをサポートすることを意味しますが、振る舞いに些細な違い(例えば、ガスコスト、プリコンパイル、エッジケースのオペコードの振る舞い)があるかもしれません。EVM 同等は、チェーンがオペコードのレベルで Ethereum の EVM の振る舞いを再現すること — すべての操作が Ethereum 上でそうであるのと同じ結果を生成すること — を意味します。EVM 同等性はより強い主張です。それは、正確な EVM の振る舞いに依存する複雑なコントラクトやツールでさえ、変更なしで動作するはずであることを意味します。例えば Polygon zkEVM は EVM 同等性を目指しています。

外部リンク

  • Ethereum.org — Ethereum Virtual Machine — EVM のアーキテクチャ、オペコード、実行モデルを説明する Ethereum Foundation の公式ドキュメント。
  • Ethereum Yellow Paper — 完全な EVM オペコードセットと実行セマンティクスを含む、Ethereum プロトコルの形式的な仕様。
  • EVM Codes — ガスコスト、説明、バイトコード実行をテストするためのプレイグラウンドを備えた EVM オペコードのインタラクティブなリファレンス。

関連ページ