スマートコントラクト VM(仮想マシン)
EVM・Move VM・SVM・WASM・zkVM の 5 つのスマートコントラクト実行環境を実行モデル・言語対応・セキュリティモデルの観点から比較。各 VM の設計思想と適合チェーンを整理する。
article technology ja EVM・Move VM・SVM・WASM・zkVM の 5 つのスマートコントラクト実行環境を実行モデル・言語対応・セキュリティモデルの観点から比較。各 VM の設計思想と適合チェーンを整理する。スマートコントラクト VM(仮想マシン)
スマートコントラクトは「チェーン上で自律的に動作するプログラム」であり、それを実行する仮想マシン(VM)の設計がセキュリティ・パフォーマンス・開発体験を決定づける。現在の主要 VM は EVM(最大シェア)・Move VM(リソース指向)・SVM(並列実行)・WASM(汎用性)・zkVM(証明可能計算)の 5 系統に分類できる。情報カットオフ ~2025-08、confidence: medium 固定(2026-06 時点での外部再検証は未実施)。
EVM — Ethereum Virtual Machine
**EVM(Ethereum Virtual Machine)**は 2015 年の Ethereum 創設以来、スマートコントラクトの事実上の標準となったスタックベースの 256 ビット VM である。
アーキテクチャ: スタックマシン型で、オペランドは 256 ビット整数スタックに積まれる。メモリはバイト配列・ストレージは 256 ビットキー/値マップとして抽象化される。各オペコードには固定または動的な gas コストが割り当てられており、ループの無限実行を防ぐと同時に計算資源の価格付けとして機能する。
gas モデル: ユーザーが gasLimit(最大消費量)と gasPrice(単価、EIP-1559 以降は baseFee + priorityFee)を指定する。実行中に gas が枯渇すると OutOfGas でリバートされ、消費済み gas は返還されない。これがコスト見積もりの難しさと最適化圧力を生む。
EVM 互換チェーン: Polygon PoS・BNB Chain・Avalanche C-Chain・Arbitrum・Optimism(OP Stack)・zkSync Era・Linea 等が EVM 互換を採用しており、同一 Solidity コードを再コンパイルなしでデプロイ可能な生態系を形成している。
| 特性 | 内容 |
|---|---|
| 実行モデル | スタックマシン(256 ビット) |
| gas | オペコード単位のコスト制限 |
| 主要言語 | Solidity、Vyper |
| 代表チェーン | Ethereum、Polygon、BNB Chain、Arbitrum、OP Stack |
Move VM — リソース指向型 VM
Move VMは Facebook(現 Meta)の Diem プロジェクトから派生した VM であり、現在は Aptos・Sui の 2 大 Move 系 L1 で採用されている。Move 言語の「リソース型」概念を直接 VM レベルで実装する点が最大の特徴だ。
リソース型(Resource Types): Move ではトークンや NFT などの価値あるオブジェクトを「リソース」として型システムに組み込む。リソースは**線形型(Linear Type)**の制約を持ち、コピー不可・暗黙廃棄不可・所有権が明確に追跡される。これにより「誤ってトークンをゼロにするコード」や「二重使用(double-spend)」のようなバグをコンパイル時に検出できる。
Aptos と Sui の差異: Aptos は Move をグローバルストレージモデル(アカウント中心)で実装し、HotStuff 系 BFT で高スループットを狙う。Sui は Move を「オブジェクト中心」に拡張(Sui Move)し、オブジェクト所有関係グラフに基づく楽観的並列実行を実現している。
セキュリティ上の利点: EVM における整数オーバーフロー・reentrancy・サプライチェーン攻撃(外部コントラクト呼び出し)などの脆弱性クラスの多くを、型システムと所有権モデルで構造的に排除できる。
SVM — Sealevel 並列実行
**SVM(Solana Virtual Machine)は Solana が独自に開発した VM で、トランザクションの並列実行(Parallel Execution)**を設計の中心に置く。
Sealevel: SVM のランタイムは「Sealevel」と呼ばれ、各トランザクションがアクセスするアカウント(ストレージ)をあらかじめ宣言させる仕組みを持つ。重複しないアカウントを操作するトランザクションは GPU・マルチコアで並列実行でき、理論上は数万 TPS(Transactions Per Second)を達成できる。
アカウントモデル: Solana ではプログラム(スマートコントラクト)とデータ(アカウント)を分離して管理する。プログラムは不変の「実行コード」アカウントで、ユーザーのデータアカウントを操作する構造だ。これが EVM のアカウントモデル(コードとストレージを同一コントラクトに持つ)とは大きく異なる。
BPF(Berkeley Packet Filter): SVM のバイトコードは eBPF 派生の BPF 命令セットを使用し、LLVM バックエンドで Rust や C から直接コンパイルできる。gas に相当する概念は「compute units」と呼ばれる。
WASM — WebAssembly ベース VM
**WASM(WebAssembly)**はブラウザ向けの高速・安全なバイナリ命令フォーマットとして W3C が標準化したが、スマートコントラクト VM としても採用が広がっている。
CosmWasm: Cosmos エコシステムで標準的に使われるスマートコントラクト環境。Rust で書かれたコントラクトを WASM にコンパイルし、Cosmos SDK チェーン(Osmosis・Stargaze 等)にデプロイする。メッセージパッシング型の実行モデルを採用し、reentrancy を構造的に防ぐ。
ink!(Substrate/Polkadot): Parity Technologies が開発した Substrate ベースの WASM スマートコントラクト環境。Rust の #[ink::contract] マクロでコントラクトを記述し、Substrate パレット pallet-contracts で動作する。
WASM の汎用性: EVM 専用オペコードに縛られず、多様な言語(Rust・C++・AssemblyScript 等)からコンパイル可能で、ツールチェーンの再利用性が高い。ただし EVM ほどの生態系の厚みはまだない。
zkVM — 証明可能計算 VM
**zkVM(Zero-Knowledge Virtual Machine)**はプログラム実行の正しさをゼロ知識証明(ZKP)で証明できる仮想マシンであり、ZK Rollup の証明生成やオフチェーン計算の検証に使われる。
RISC Zero: RISC-V 命令セットアーキテクチャ(ISA)のプログラム実行を STARK 証明で証明する汎用 zkVM。Rust や C++ で書かれた任意のプログラムをゼロ知識で実行証明できる。2024〜2025 年にかけてスループット改善(GPU による証明生成加速)が進んだ。
SP1(Succinct): PLONK/FRI ハイブリッドの再帰 SNARK を使用する Rust ネイティブ zkVM。Ethereum の Helios ライトクライアントを zkVM で実装した事例が注目された。
zkVM の意義: EVM をゼロ知識証明で実行証明する「zkEVM」(Starknet の カイロ VM、Polygon zkEVM 等)と、汎用 RISC-V/WASM ベースの zkVM は概念的に異なる。汎用 zkVM はオフチェーン計算の信頼性検証(コプロセッサパターン)や L2 の有効性証明に活用され、スマートコントラクトの表現力を大きく拡張する。
実行モデル比較
| VM | ベース | 並列性 | 主用途 |
|---|---|---|---|
| EVM | スタックマシン | シングルスレッド | Ethereum・互換 L2 |
| Move VM | レジスタ + 所有権 | 部分並列(Sui) | Aptos・Sui |
| SVM | BPF | 高並列(Sealevel) | Solana |
| WASM | スタックマシン | チェーン依存 | Cosmos・Substrate |
| zkVM | RISC-V/その他 | オフチェーン並列証明 | ZK Rollup・コプロセッサ |
スマートコントラクト言語の詳細は tech-221、開発フレームワークは tech-222 を参照のこと。
Backlinks
- has_parts Developer Tooling & Workflow(開発ツール・ワークフロー)
- related スマートコントラクト言語
- related スマートコントラクト開発フレームワーク
- related アカウント抽象化(Account Abstraction)