Ethereum Virtual Machine(EVM)は、Ethereumがスマートコントラクトのコードを実行するために使用する計算環境です。Ethereumのすべてのノードがそれぞれ独自のEVMのコピーを実行し、すべてのノードが同じトランザクションを同じ方法で処理するため、ネットワークはすべてのアカウント残高と各コントラクトの保存データという、単一の共有ステートについて合意できます。
免責事項:このガイドは教育目的のみを意図したものです。金融アドバイスや勧誘ではなく、英国の読者向けでもありません。Ethereum、EVM互換ネットワーク、およびそれらの上に構築されたアプリケーションにはリスクが伴い、すべてのユーザーに適しているわけではありません。
Ethereum Virtual Machineの役割
Ethereumのベースネットワークは、ネットワーク上の各アドレスが保有するデジタル資産(etherなどのアセット)を追跡します。また、スマートコントラクトと呼ばれるプログラムとそのデータも追跡します。EVMは、Ethereumの中でこれらのプログラムを実行する部分です。
トランザクションがスマートコントラクトを呼び出すと、各Ethereumノードはそのコントラクトのコードを自身のEVMに読み込み、トランザクションの入力値を使って実行し、その結果でステートを更新します。EVMは決定論的であるため、同じ入力からはどのノードでも常に同じ出力が得られます。そのため、互いを信頼しなくても、何千もの独立したノードが結果について合意できるのです。
EVMはしばしば「ワールドコンピューター」と表現されますが、実際には、すべてのステップにガスがかかり、誰もが結果を検証できる、低速な共有コンピューターに近いものです。Ethereumの設計は、特定の誰かが結果を支配しないことを保証する代わりに、速度を犠牲にしています。
EVMがコードを実行する仕組み
開発者は、通常SolidityやVyperといったプログラミング言語でスマートコントラクトを記述します。デプロイの前に、コンパイラがそのコードをバイトコードに変換します。バイトコードは、EVMが理解できる基本命令をコンパクトにまとめたリストです。
各命令はオペコードと呼ばれ、たとえば加算を行うADD、値をストレージに保存するSSTORE、別のコントラクトを呼び出すCALLなどがあります。EVMは、次のものを使ってオペコードを1つずつ処理します。
スタック:計算中の一時的な値を保持します。
メモリ:現在の呼び出し中にのみ必要なデータを保持し、呼び出しが終了すると消去されます。
ストレージ:トークン残高など、トランザクションをまたいでブロックチェーン上に保持されるデータを格納します。
Calldata:トランザクションとともに送信される入力値です。
ストレージは、すべてのノードがそのデータを無期限に保持しなければならないため、最もコストの高いリソースです。
EVMにガス(ネットワーク手数料)が必要な理由
あらゆるプログラムを実行できるコンピューターには、決して終了しないプログラムを与えることもできてしまいます。共有ネットワークでは、1つの無限ループがすべてのノードを停止させかねません。EVMは、ガス料金(ネットワーク手数料)によってこれを防いでいます。
すべてのオペコードにはガスコストがあります。ADDの3ガスのように固定のものもあれば、初めてストレージに書き込む場合の20,000ガス以上のように、処理内容によって変わるものもあります。送信者は、通常はウォレットを通じて、トランザクションごとにガスリミットを設定します。2025年12月のFusakaアップグレード以降、その上限は1トランザクションあたり16,777,216ガスです。このリミットを使い切るとEVMは実行を停止し、変更はすべて元に戻されますが、送信者は使用したガスの料金を支払うことになります。
各ブロックにも合計のガスリミットがあり、ネットワークが1ブロックあたりに処理できる計算量の上限となっています。Ethereumメインネットでは、このリミットは2025年初めの3,000万ガスから引き上げられ、2025年12月以降は6,000万ガスになっています。
ガスは作業量を測るものです。その作業に対してユーザーがいくら支払うかは、Ethereumの手数料マーケットによって決まります。手数料の価格設定の仕組みについては、Ethereumのガス料金を解説をご覧ください。
EVM互換性とは
EVM互換のブロックチェーンネットワークは、Ethereumと同じ命令セットを実行するため、Ethereum向けに書かれたコントラクトを、ほとんど、あるいはまったく変更せずにデプロイできます。Ethereumのウォレット、開発者ツール、アドレスも同じように機能します。同じ秘密鍵で管理される同じ0xアドレスが、すべてのEVMネットワークで使えるため、MetaMaskはサポートするすべてのEVMネットワークで1つのアドレスを表示します。
この共通規格のおかげで、暗号資産の多くがEVMチェーン上で動いています。
Arbitrum、OP Mainnet、Base、Linea、ZKsyncなどのEthereumレイヤー2ネットワークは、EVM互換の環境を実行し、Ethereumにセトルメントします。
BNB Smart Chain、Avalanche C-Chain、Polygon PoS、Sei、Monadなどのネットワークは、独自のバリデータとコンセンサスを運用しながら、実行にはEVMを使用しています。
Ethereumの動作と完全に一致するネットワーク(「EVM equivalent」)もあれば、ほとんどのコントラクトをサポートしつつ、特定のオペコード、ガスコスト、プリコンパイルが異なるネットワークもあります。コントラクトをEVMチェーン間で移行する開発者は、それぞれのチェーンでテストを行う必要があります。
EVMを使用しないブロックチェーン
すべてのスマートコントラクトプラットフォームがEVMを使用しているわけではありません。たとえばSolanaは、主にRustで書かれたプログラムを独自のランタイムで実行し、多数のトランザクションを並列処理できるように設計されています。Sui、Aptos、Cardanoなどの他のネットワークも、独自のバーチャルマシンと言語を使用しています。これらのネットワーク向けに構築されたアプリはEVMチェーン上では動作せず、トークンを移動するにはブリッジが必要です。
2026年のEVMの変化
Ethereumのコア開発者は、ネットワークアップグレードを通じてEVMを変更します。最近の変更や今後予定されている変更は、1ブロックあたりでより多くの計算を実行することに重点を置いています。
ガスリミットの引き上げ。バリデータは2025年中にブロックのガスリミットを3,000万ガスから6,000万ガスに引き上げ、各ブロックに収まるトランザクションを増やしました。Glamsterdamではさらなる引き上げに向けた予定経路が追加され、Sepoliaテストネットではすでに2億ガスで稼働しています。
Glamsterdam。次のアップグレードには、ブロックごとのアクセスリスト(EIP-7928)が含まれます。これは、ブロックがどのアカウントとストレージに触れるかを事前にノードに伝え、トランザクションを並列処理できるようにするもので、あわせてガスコストの再設定も行われます。2026年10月29日時点で、Sepoliaテストネットで稼働しています。Ethereum Foundationの発表によると、Ethereumのコア開発者は、ガス価格設定の変更の1つを検討するため、10月26日に予定していたHoodiテストネットでの有効化を延期しており、メインネットの日程は決まっていません。
ウォレットがEVMネットワーク間で機能する仕組み
Ethereum向けに構築されたセルフカストディ型ウォレットなら、Ethereum、そのレイヤー2、EVM対応のレイヤー1のいずれでも、同じ0xアドレスと秘密鍵を持つ同じアカウントを使えます。ネットワークごとに新しいアカウントを作成する必要はありません。これは、EVM互換ネットワークが共通のアカウント形式を採用しているためです。ネットワークを切り替えるために、ウォレットが必要とするのは各ネットワークの接続情報、つまりチェーンIDと、ウォレットが接続するノードのアドレスであるRPCエンドポイントだけです。MetaMaskをはじめ、多くのセルフカストディ型ウォレットは、BitcoinやSolanaなどEVM以外のネットワークにも対応しており、各ネットワークの形式に合わせたアドレスをそれぞれ管理することで、1つのアプリで利用できます。
EVMネットワークに関するよくある質問
いいえ。EVMはそれ自体がブロックチェーンではなく、各Ethereumノード内で動作する実行環境です。Ethereumのブロックチェーンはブロックとトランザクションの記録であり、EVMはそれらのトランザクションに含まれるスマートコントラクトのコードを処理する役割を担います。
EVM互換ネットワークでは、Ethereum向けに作成されたスマートコントラクトを、同じ命令セット、アドレス形式、開発者ツールを使って実行できます。通常、スマートコントラクトやEthereumウォレットは、これらのネットワーク間で変更をほとんど、あるいはまったく加えずに動作します。
EVMは、オペコードと呼ばれる基本的な命令で構成されたバイトコードを実行します。開発者は通常、SolidityやVyperでコントラクトを記述し、デプロイ前にバイトコードへコンパイルします。
いいえ。Solanaは独自のランタイムと、主にRustで書かれたプログラムを使用しています。Solana上で動作するEVM環境を提供するプロジェクトもありますが、SolanaのメインネットはEVM互換ではありません。
EVMの各オペレーションではガス(ネットワーク手数料)が消費されるため、処理に手間がかかるトランザクションほど、より多くのガスを消費します。単純なETH送金に必要なガスは21,000ですが、ストレージへの新しいデータの書き込みや複数のコントラクトの呼び出しには、はるかに多くのガスが必要です。そのガスがネットワーク手数料としていくらになるかは、ブロックスペースの需要によって変わります。詳しくはEthereumのガス代についてをご覧ください。