【いーぶいえむ】

Ethereum Virtual Machine(EVM) とは?

最終更新:
💡 共通のルールでコントラクトを動かす仮想マシン

Ethereumでスマートコントラクトのバイトコードを実行する仮想マシン。同じ状態・取引・実行条件から同じ結果を計算し、ネットワークの状態を更新するルールを担う。

📌 このページのポイント
EVM:共通のルールでコードを実行 Solidityなど コントラクトのコード 変換 バイトコード 取引 呼ぶ処理・引数など 現在の状態 残高・保存データなど EVM 命令を実行 gasで計算量を管理 共通の実行ルール ブロックの条件 新しい状態 同じ状態・取引・ 実行条件なら 同じ計算結果
正常終了時の状態更新を簡略化した図。gasの上限などで失敗する場合もあります。EVMの実行と、取引の順序・確定を決める合意は別の役割です。
ひよこ ひよこ
EVMって仮想マシンなの?パソコンの中にもう1台コンピュータがあるみたいな?
ペンギン先生 ペンギン先生
ソフトウェアで命令を実行する、という点では近いね。EVMはスマートコントラクト用の仮想マシンで、Ethereumの実行クライアントに組み込まれているんだ。
ひよこ ひよこ
なんで複数のノードで同じ計算をするの?
ペンギン先生 ペンギン先生
取引による状態の変化を、それぞれで検証できるようにするためだよ。同じ元の状態、取引、実行ルールやブロックの条件をそろえると、同じ結果になる。ただしライトノードのように、すべてを再実行しない仕組みもあるよ。
ひよこ ひよこ
スマートコントラクトはどうやってEVMで動くの?
ペンギン先生 ペンギン先生
Solidityなどで書いたコードを、EVM用のバイトコードに変換して使うよ。実行にはgasという計算量の単位があり、取引ごとに上限を設ける。gasの量と、ETHで払う手数料は区別しよう。
ひよこ ひよこ
計算が終わらなかったら?
ペンギン先生 ペンギン先生
実行中にgasが尽きると失敗し、その実行による状態変更は取り消されるけれど、手数料はかかるよ。上限があるので、無限ループを際限なく計算し続けることはないんだ。
ひよこ ひよこ
EVM互換ってよく聞くけど、あれは何?
ペンギン先生 ペンギン先生
EVM向けのコントラクトや開発ツールを使える実行環境のことだよ。Polygonなどにもある。ただし取引を確定する仕組みや手数料などはチェーンごとに違う。EVMだけでネットワーク全体の安全性や性能が決まるわけではないよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「EVM」って出てきたら「スマートコントラクトを動かすブロックチェーン上の仮想コンピュータ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Ethereum Virtual Machine」 = Ethereum仮想マシン
💬 Virtual Machineは「仮想マシン」。Ethereumの実行用の命令をソフトウェアで処理する仕組みを指すよ。

参考資料

← 用語集にもどる