イーサリアム仮想マシン (Ethereum Virtual Machine (EVM))
要約: イーサリアム仮想マシン(EVM) は、イーサリアム上の各スマートコントラクトに動作環境を提供する「チューリング完全」な仮想マシンです。
イーサリアム仮想マシン(EVM)は、イーサリアム上の各スマートコントラクトに動作環境を提供する「チューリング完全」な仮想マシンです。開発者がデプロイしたコードが、ネットワークのすべてのノードでまったく同じように、意図したとおりに実行されることを保証します。
重要な理由
開発者はSolidityやVyperなどの言語でスマートコントラクトを書き、EVMが実行するバイトコードにコンパイルします。すべてのフルノードは同じ入力で同じバイトコードを実行し、同じ結果に到達しなければなりません。こうしてネットワークは、単一のサーバーを信頼することなく、残高やコントラクトの状態について合意します。「チューリング完全」とは、EVMが原理上どのようなプログラムでも実行できることを意味します。実際には、すべての操作にガスがかかり、すべてのトランザクションにガスリミットがあるため、プログラムが無限にループしてネットワークを詰まらせることはできません。他の多くのブロックチェーンもEVM互換であり、同じ種類のバイトコードを実行し、同じ0x形式のアドレスを使用します。これは開発者がコードを再利用するのに役立ちますが、取引所で入金や出金をする際に正しいネットワークの選択を求められるのもこのためです。
具体例
ある開発者がSolidityでトークンコントラクトを書き、コンパイルしてバイトコードをイーサリアムにデプロイします。その後、ユーザーがコントラクトの送付用の関数を呼び出すと、各ノードのEVMが同じコードを実行し、送り手の残高を確認して双方の残高を更新します。コードでエラーが発生したり、ガスが不足したりした場合、EVMは変更を元に戻します。