Чтобы еще больше прояснить концепцию EVM, следует вернуться к основам и вспомнить, как работают компьютерные программы. Все программное обеспечение написано на языке программирования, например Java или C++. Однако, поскольку процессоры не могут читать Java или C++, код компилируется и переводится в формат bytecode
Ethereum не является процессором - это распределенная всемирная сеть, в которой 100 процессоров одновременно работают с EVM. Однако EVM функционирует как виртуальный процессор или виртуальная "машина", запущенная внутри программы Go Ethereum, или "Geth".
Подобно другим программам, разработчики создают DApps и пишут смарт-контракты на языке программирования. Вместо Java или C++ язык для Ethereum называется Solidity. Код Solidity компилируется в байткод и распространяется на каждый компьютер (узел), работающий под управлением Geth в сети.
При развертывании смарт-контракта каждый узел получает его копию, выполняет его байткод и отдает код тому, кто вызвал развертывание, что приводит к "изменению состояния". Это означает, что текущее состояние блокчейна было изменено, что может быть сделано только при консенсусе всех узлов.
Поэтому EVM часто называют "распределенной машиной состояний". Она отслеживает состояние блокчейна по мере его трансформации при каждой транзакции.