イーサリアム
イーサリアムはプログラム可能なブロックチェーンであり、ユーザーが任意の独自性のある複雑な処理を作成することができる。
EVM
EVMはスマートコントラクトのランタイム環境として既往するイーサリアムの実行エンジンである。
- 全ノードがEVMを保持している。
- イーサリアムの状態を変更できる。
- コンセンサスを達成する
EVM設計目標
EVMの設計目標は以下の通り
- シンプルさ
- 完全な決定性:同じ入力に対して、常に同じ出力を生成する(決定的!)。
- 計算ステップからガス手数料を正確に見積もることができる
- スペース最適化:計算量、メモリ、ストレージなどが可能な限り最小化されている
- ネイティブな処理に対応:暗号処理に用いられらる特定の処理をいくつかのネイティブ処理に対応している。
- 簡便なセキュリティ:EVM上の処理にはガスコストがかかるため、無限ループなどの悪意のある処理を実行することが難しい。
EVMとスマートコントラクトの仕組み
EVMは、
- イーサリアムネットワークに参加している全ノードがEVMを保持している。
- 各ノードのEVMで全トランザクションを実行し、最終状態をローカルに保持する。
- コントラクトコードとデータをブロックチェーンに書き込み、コントラクトコードとトランザクションの命令をそれぞれ実行する。
つまり、EVMはイーサリアムのスマートコントラクトのランタイムとして機能し、コードの安全な実行を保証している。
コードやトランザクションのデジタル署名による検証もEVM上で行われる。
→ EVMを通じて命令の実行が成功したときのみイーサリアムの状態を変更することができる。
サンドボックス
EVMをメインネットワークから切り離すと、独立したテスト環境として使用可能。