EVM(Ethereum Virtual Machine)

Ethereumネットワーク上でスマートコントラクトを実行するための仮想マシン。多くのブロックチェーンがEVM互換の実行環境を採用している。

EVMとは

EVM(Ethereum Virtual Machine)とは、Ethereumネットワーク上でスマートコントラクトを実行するための仮想マシンのこと。

Solidityなどの高級言語で書かれたスマートコントラクトは、EVMバイトコードにコンパイルされ、ブロックチェーン上にデプロイされる。トランザクションが発生すると、ネットワーク上のすべてのノードが同じバイトコードを同じ入力で実行し、同じ結果を得る。この決定論的な実行が、分散環境での合意形成を可能にしている。

特徴

サンドボックス環境

EVMはホストマシンのファイルシステムやネットワークから完全に隔離された環境で動作する。コントラクトがアクセスできるのは、ブロックチェーンの状態(ストレージ、残高、他のコントラクト)のみ。

ガス

EVMでの命令実行にはガスと呼ばれるコストが発生する。各オペコード(加算、ストレージ書き込みなど)にガスコストが定められており、トランザクション送信者がガス代をETHで支払う。これにより無限ループのような計算資源の濫用を防いでいる。

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

EVMはスタックマシンとして設計されている。256ビット幅のスタックを持ち、PUSH、POP、ADD、STOREといったオペコードを逐次実行する。スタックの最大深度は1,024。

EVM互換チェーン

Ethereumと同じEVM仕様を採用することで、Ethereum向けに書かれたスマートコントラクトやツールをそのまま利用できるブロックチェーンが多数存在する。

EVM互換であることにより、開発者はSolidityやethers.js、Foundryといった既存のツールチェーンをチェーンをまたいで使い回せる。

EVMと非EVMチェーン

すべてのブロックチェーンがEVMを採用しているわけではない。

非EVMチェーンはEVMの設計上の制約(スタックマシン、256ビット固定幅など)を回避できる一方、Ethereumエコシステムのツールやコントラクト資産を直接利用できないというトレードオフがある。