Введение в виртуальную машину Ethereum (EVM): движок, на котором работает каждый смарт-контракт.
Я помню, как впервые комиссия за газ съела половину моей транзакции. Это было в 2021 году, я пытался создать что-то на OpenSea, и сеть запросила 87 долларов только за обработку. В тот момент я понял, что на самом деле не понимаю, что происходит «под капотом». Почему это стоило так дорого? Куда уходили деньги? Что на самом деле выполняло мою транзакцию? Ответ на все три вопроса был один и тот же: виртуальная машина Ethereum.
Большинство криптоэнтузиастов слышали термин "EVM". Но гораздо меньше людей могут рассказать, что он собой представляет. Это важно, потому что EVM определяет практически всё в сети Ethereum и на более чем 390 блокчейнах, которые позаимствовали его дизайн. В настоящее время в сетях EVM сосредоточено более 190 миллиардов долларов в DeFi. Если вы когда-либо использовали MetaMask, обменивали токены или нажимали кнопку в децентрализованном приложении (dapp), то EVM выполнял работу за экраном. Узлы выполняют смарт-контракты во всех этих блокчейнах, и именно EVM обеспечивает выполнение каждого из этих вызовов.
Давайте разберемся по пунктам. Не в учебниках, а в настоящем варианте.
Что такое виртуальная машина Ethereum и почему она важна?
Хорошо, начнём с самого простого варианта. Знаете приложения-калькуляторы? Набираешь 2 + 2, получаешь 4. Скучно. А теперь представьте, что этот калькулятор работает одновременно на 10 000 телефонах. Каждый телефон получает один и тот же ответ. Если один телефон пытается сказать "2 + 2 = 5", остальные 9999 мгновенно это отклоняют. Никто не контролирует калькулятор, никто не может его выключить, и никто не может его подстроить. В принципе, то же самое делает EVM, только вместо домашних заданий по математике он запускает смарт-контракты, которые перемещают реальные деньги.
Специалисты по компьютерам называют это конечным автоматом. Ethereum хранит огромный массив данных: кому принадлежат какие монеты, какие смарт-контракты существуют, сколько эфира находится на каждом адресе, какую информацию хранит каждый контракт. Всё это — «состояние». Вы отправляете транзакцию. EVM обрабатывает её, сравнивая с текущим состоянием. В результате получается новое состояние. Старое состояние плюс транзакция равно новому состоянию. Формула на бумаге: Y(S, T) = S'. Готово.
Самое удивительное — это избыточность. Ваша транзакция не попадает на один сервер в Вирджинии. Она проходит через тысячи узлов по всей сети Ethereum. Каждый из них выполняет вычисления самостоятельно. Они сравнивают результаты. Совпадение? Отлично, новое состояние заносится в блокчейн. Несовпадение? Неправильная версия отбрасывается. Я всегда представляю себе тысячи бухгалтеров, заполняющих одну и ту же налоговую декларацию. Один из них вводит другую цифру, все останавливаются и находят ошибку.
И вот что отличает его от обычного программного обеспечения. Никто не управляет EVM. За ним не стоит никакая компания. Нет службы поддержки. Нет администратора, который мог бы незаметно отменить сделку в 2 часа ночи. Код является открытым исходным кодом, работает одинаково на каждом узле, и доверие возникает благодаря огромному количеству соглашений, а не от какой-то авторитетной фигуры, говорящей: «Доверьтесь мне».

Как работает EVM: от Solidity до выполнения.
Позвольте мне подробно рассказать о жизненном цикле смарт-контракта, потому что, когда вы увидите всю цепочку событий, EVM станет гораздо понятнее.
Первый шаг: вы пишете код. Solidity — это язык программирования, который выбирают примерно 90% разработчиков EVM. Он заимствует синтаксис из JavaScript: фигурные скобки, функции, переменные, всё как обычно. Существует и Vyper (ближе к Python, намеренно проще), но Solidity управляет всем процессом. Вот в чём загвоздка для новичков: каждая строка кода требует реальных затрат на выполнение. Нет песочницы. Нет возможности отменить изменения. Вы развертываете контракт с ошибкой, и эта ошибка остаётся необратимой, если вы заранее не создали механизм обновления. Я усвоил это на собственном горьком опыте, наблюдая, как мой друг-разработчик не спал ночами из-за неправильно поставленной десятичной запятой.
Шаг второй: ваш код Solidity компилируется в байт-код. Представьте байт-код как машинный язык EVM. Вы пишете код, который может прочитать человек. Компилятор превращает его в шестнадцатеричный код, который EVM действительно понимает. Внутри этого шестнадцатеричного кода находятся коды операций, примерно 150 штук. ADD выполняет сложение. SSTORE сохраняет данные навсегда. CALL позволяет одному контракту взаимодействовать с другим. Один код операции, одна крошечная задача. Ваш контракт объединяет тысячи таких задач.
Третий шаг — вот где начинается самое интересное. Кто-то вызывает ваш контракт. Каждый узел в сети перехватывает транзакцию, загружает ваш байт-код и начинает последовательно обрабатывать коды операций. Процессор работает в стековом режиме: представьте себе стопку тарелок, к которой можно прикоснуться только верхней. Поместите число. Поместите другое число. Выполните операцию сложения (ADD). Оба числа извлекаются из верхней части стопки, суммируются, результат возвращается на место. Максимальная глубина — 1024 элемента, каждый шириной 256 бит.
Каждый узел делает это самостоятельно. Один и тот же байт-код, одни и те же входные данные, одно и то же начальное состояние. Один и тот же ответ каждый раз. Именно эта предсказуемость и обеспечивает работу консенсуса в блокчейне. Если бы EVM могла выдавать разные результаты на разных машинах, весь карточный домик рухнул бы.
Архитектура EVM: стек, память и хранилище.
EVM обрабатывает данные на трех уровнях. Эта часть важна, поскольку она напрямую влияет на стоимость ваших транзакций.
Стек — это рабочая лошадка. Все вычисления происходят здесь. Добавление, удаление, операция, повтор. Это быстро, дешево (около 3 единиц газа на операцию), и он исчезает после завершения выполнения. Большинство опкодов работают непосредственно со стеком.
Память похожа на блокнот. Вы можете читать и записывать данные в любую её позицию, что делает её более гибкой, чем стек, для таких вещей, как строки или большие массивы. Но память также исчезает после завершения транзакции. С точки зрения стоимости, она находится посередине: дороже, чем стек, но намного дешевле, чем хранилище. Она увеличивается по мере необходимости, а стоимость газа возрастает квадратично с увеличением объёма выделяемой памяти.
Затем идет хранилище . Это самый дорогой вариант, и на то есть веские причины. Хранилище является постоянным. Когда ваш смарт-контракт записывает, что Алиса владеет 500 токенами, эти данные записываются в дерево состояний Ethereum и остаются там. Каждый узел в сети хранит их. Навсегда. Новая запись в хранилище стоит 20 000 газа. Обновление стоит 5 000 газа. Для сравнения, простой перевод эфира стоит 21 000 газа в общей сложности. Таким образом, одна запись в хранилище почти так же дорога, как и вся базовая транзакция.
| Слой данных | Как долго это длится | Стоимость газа | Для чего это нужно |
|---|---|---|---|
| Куча | Исчез после казни | ~3 газа за операцию | Математика, логика, сравнения |
| Память | Исчезло после совершения сделки | 3 газа + стоимость расширения | Временные данные, аргументы функции |
| Хранилище | Постоянный | 5000-20000 газа на запись | Остатки токенов, записи о владении, настройки |
Если вы когда-либо задавались вопросом, почему развертывание смарт-контракта стоит так дорого, вот ответ. При развертывании весь байт-код и начальные данные контракта записываются в хранилище. Это означает выполнение множества операций, каждая из которых превышает 20 000 операций с использованием газа.
Если это звучит знакомо, так и должно быть. Обычные компьютеры работают точно так же. Регистры ЦП быстрые, но крошечные, как стек. Оперативная память больше, но медленнее, как память. Жесткие диски хранят все данные, но требуют больше всего времени на запись, как хранилище. Разработчики Ethereum специально сделали это таким образом. Они хотят, чтобы вы почувствовали финансовые трудности, связанные с хранением данных в блокчейне навсегда, поэтому вы храните только то, что действительно необходимо.
Комиссия за газ в EVM: как Ethereum рассчитывает стоимость вычислений.
Мне нужно поговорить о газе, потому что это одновременно самая умная и самая раздражающая часть EVM.
EVM является Тьюринг-полной. Проще говоря: она может выполнять любые вычисления, которые вы ей поручите. Включая бесконечные циклы. Представьте, что кто-то запускает контракт с циклом while(true) и без каких-либо затрат на его выполнение. Все узлы зависают. Блокчейн замерзает. Игра окончена.
Газ предотвращает это. У каждого кода операции есть своя цена. ADD стоит 3 газа. SSTORE стоит 5000 или 20000 газа. При отправке транзакции вы устанавливаете бюджет газа. Вычисления завершаются с превышением бюджета? Вам возвращается то, что вы не использовали. Достигнут лимит? Все откатывается, но вы все равно платите за израсходованный газ. Бесконечные циклы съедают бюджет и приводят к завершению работы.
Из вашего кошелька уходит сумма использованного газа, умноженная на цену газа. Использованный газ зависит от того, что именно вы совершаете в транзакции. Цена газа колеблется в зависимости от загруженности сети, измеряемой в gwei (одна миллиардная часть эфира). Много людей торгуют? Цена газа растет. Тихое воскресенье? Цена газа падает.
И вот тут начинается самое интересное. Помните мои 87 долларов в 2021 году? Тогда газ обычно стоил 100-200 gwei. Лето DeFi и бум NFT заставили сеть работать на полную мощность. Перенесемся в начало 2026 года, и средняя цена газа будет около 3 gwei. Базовый перевод ETH обойдется примерно в 0,30–0,67 доллара. Это падение на 96% по сравнению с 2021 годом.
| Год | Средняя комиссия за транзакцию | Диапазон цен на газ | Что стало причиной? |
|---|---|---|---|
| 2021 | ~24 доллара | 100-200 гвей | NFT-мания, DeFi-фарминг с выплатой дивидендов |
| 2022 | 5-15 долларов | 30-80 гвей | Обвал рынка, снижение активности |
| 2023 | 2-8 долларов | 15-40 гвей | Завершение медвежьего рынка |
| 2024 | 0,50–2 доллара | 5-15 гвей | Обновление Dencun, EIP-4844 |
| 1 квартал 2026 г. | 0,30–0,67 долл. | ~3 гвей | Миграция L2, транзакции BLOB-объектов |
Что изменилось? Две вещи. Во-первых, обновление Dencun в марте 2024 года представило EIP-4844, которое создало хранилище «blob» для роллапов. До появления blobs сети второго уровня должны были отправлять свои данные в виде calldata в основную сеть Ethereum, что было дорого. Blobs являются временными и намного дешевле, что снижает затраты на отправку данных на втором уровне примерно на 95%. Во-вторых, большая часть активности просто переместилась в сети второго уровня. Когда ваш обмен Uniswap работает на Arbitrum вместо основной сети, базовый уровень остается свободным от перегрузки.
В сетях второго уровня обмен данными может стоить меньше цента. Arbitrum, Base и Optimism используют EVM, поэтому ваш код на Solidity работает аналогично. Вы просто платите небольшую часть за газ.

Совместимость с EVM: почему более 390 блокчейнов скопировали концепцию Ethereum.
Именно здесь история с EVM перестает быть просто интересной и приобретает подлинное значение для всей отрасли.
Когда запустилась BNB Chain, Binance не изобрела новую виртуальную машину. Они взяли EVM и немного её доработали. Polygon поступила так же. Avalanche, Fantom, Cronos, Harmony, Gnosis Chain: та же история. Даже специализированные роллапы второго уровня, такие как Arbitrum и Optimism, работают на EVM изначально. В результате получилась экосистема из более чем 390 EVM-совместимых блокчейнов, хотя только около 40-50 из них демонстрируют значительную ежедневную активность.
Почему стоит копировать Ethereum вместо того, чтобы создавать его с нуля? Три причины, и все они практичны.
Во-первых, разработчики. В мире насчитывается более 20 000 разработчиков Solidity. Запустите цепочку EVM, и каждый из них сможет выпускать код в первый же день, не изучая новый язык. Solana использует Rust. Aptos и Sui используют Move. Этим цепочкам приходилось создавать свои пулы разработчиков с нуля. Цепочка EVM полностью решает эту проблему.
Во-вторых, бесплатные инструменты. MetaMask, Hardhat, Foundry, Ethers.js, OpenZeppelin, Etherscan. Весь набор инструментов Ethereum работает на любой цепочке EVM без каких-либо изменений. Тот же кошелек. Та же тестовая среда. Тот же обозреватель блоков. Это экономит годы работы.
Во-третьих, DeFi развивается вместе с EVM. Uniswap, Aave, Curve, SushiSwap — все они работают на пяти или более блокчейнах EVM. Контракты копируются и вставляются из Ethereum в Polygon, затем в Arbitrum и, наконец, в BNB Chain. Тот же код, тот же аудит, та же модель безопасности. Мосты соединяют ликвидность. EVM — это связующее звено.
Но копирование EVM означает копирование и его проблем. По одной транзакции за раз. 256-битные слова на 64-битных процессорах, что добавляет накладные расходы. Газовая система, которая работает, но усложняет работу более новых виртуальных машин. SVM от Solana выполняет транзакции параллельно. MoveVM имеет ресурсную модель, которая устраняет целые категории ошибок. FuelVM заимствует идеи из современного проектирования процессоров.
Догнали ли их по темпам внедрения EVM? Нет. Даже близко нет. Более совершенные технологии на бумаге не превосходят сетевые эффекты в реальном мире. У EVM больше разработчиков, больше действующих протоколов, больше проверенных шаблонов кода и больше всего «шрамов» от взломов и выживания. В криптовалюте, где одна ошибка может стоить девятизначную сумму, «шрамы» значат больше, чем бенчмарки.
Состояние Ethereum и как EVM поддерживает консенсус
Эта часть становится более технической, но она важна. В ней объясняется, почему узлам Ethereum требуется реальное оборудование и почему сохранение данных в блокчейне обходится в целое состояние.
Ethereum хранит огромную справочную таблицу. Передайте ей любой адрес, и она выдаст баланс эфира, nonce (количество транзакций), а для адресов контрактов — полный байт-код плюс все сохраненные данные. Миллионы адресов. Сотни гигабайт. Таково состояние Ethereum.
Всё это хранится в дереве Меркла-Патриции. Вкратце: это дерево, где каждая ветвь получает свой собственный хеш, и все хеши объединяются в один корневой хеш наверху. Этот корневой хеш находится в заголовке каждого блока. Перемещение 0,001 ETH между двумя кошельками полностью меняет корневой хеш. Валидаторы проверяют блоки, выполняя каждую транзакцию, вычисляя результирующий корневой хеш и сравнивая его. Одинаковый хеш? Блок действителен. Разный хеш? Блок отклоняется.
Запуск узла означает необходимость постоянного обновления всего дерева состояний с каждым блоком. Это, собственно, самая большая проблема масштабирования Ethereum. Сама виртуальная машина достаточно быстрая. Состояние постоянно растет. Каждое сохранение (SSTORE) добавляет новый лист в дерево состояний. Каждый новый контракт добавляет все больше данных. Деревья Verkle могут это исправить. Команда Ethereum разрабатывает их уже несколько лет. Они позволят узлам проверять блоки, не сохраняя полное состояние. Если Verkle будет реализован, запуск узла станет намного дешевле, и больше людей смогут присоединиться к набору валидаторов.
Реализация EVM: одна спецификация, множество клиентов
Большинство людей не осознают этого: «EVM» — это спецификация, а не программа. Это документ, в котором говорится: «при заданных входных данных выдайте заданные выходные данные». Любой может создать свою собственную версию на любом языке программирования, если она соответствует спецификации.
Geth — это крупнейший разработчик. Он написан на Go и работает на большинстве узлов Ethereum. Но есть и другие: Nethermind (C#), Besu (Java, разработан для корпоративного использования), Erigon (Go, оптимизирован для работы с диском) и Reth (Rust, разработан Paradigm). Разработчики, входящие в основной проект, действительно хотят такого разнообразия. Почему? Если 95% узлов работают на Geth, и Geth выдает критическую ошибку, то вся сеть окажется в бе1де. Если ошибка затрагивает пять клиентов, то она коснется только 20% узлов. Остальные будут работать как ни в чем не бывало.
Сети второго уровня добавляют свои особенности. Компания Arbitrum создала модифицированную версию, названную Arbitrum VM. Оптимизм стремится к «эквивалентности EVM», то есть к идентичному поведению байт за байтом. zkSync Era идет еще дальше. Он компилирует байт-код EVM в формат, работающий с доказательствами с нулевым разглашением. Совершенно другой путь выполнения под капотом. Но для разработчика Solidity? Он все равно выглядит так же. Тот факт, что радикально разные архитектуры представляют разработчикам одно и то же, честно говоря, является одним из самых недооцененных аспектов EVM.
Как разработчику, вам, по большей части, всё равно, какой клиент обрабатывает ваш контракт. Вы пишете на Solidity, компилируете в байт-код, развертываете. Спецификация гарантирует одинаковый результат везде.
Разработка смарт-контрактов на EVM: с чем на самом деле сталкиваются разработчики.
Веб-разработчиков, пытающихся создавать приложения для EVM, ждет неприятный сюрприз. Ошибки обходятся в реальные деньги. Вы не можете исправить ошибки в рабочей среде. Выпустите неисправный контракт, и он останется неисправным, если вы не спланировали его заранее.
Solidity используется более чем в 90% контрактов EVM. Инструментарий стал хорошим. Hardhat предоставляет JavaScript/TypeScript с плагинами. Foundry использует Rust, работает быстрее и позволяет писать тесты непосредственно на Solidity. Оба сервиса запускают локальную EVM, позволяя тестировать без затрат на газ. Я бы выбрал Foundry для любого нового проекта. Как только ваш набор тестов превысит сто, разница в скорости станет очевидной.
Стандарты токенов поддерживают организованность экосистемы. ERC-20 охватывает взаимозаменяемые токены, такие как USDT, LINK, UNI. ERC-721 предназначен для NFT. ERC-1155 обрабатывает контракты с несколькими токенами. ERC-4626 обеспечивает хранилище доходности. Все они работают одинаково на любой блокчейн-платформе EVM. Напишите свой контракт один раз, разверните его на Ethereum, Arbitrum, Base, Polygon. Один и тот же код, одно и то же поведение.
Безопасность? Сложная. Атаки с использованием механизма реентрантности за эти годы унесли сотни миллионов долларов. Взлом DAO в 2016 году разделил Ethereum на две части из-за ошибки реентрантности, которая позволила злоумышленнику зацикливать вывод средств и украсть 60 миллионов долларов. Переполнения целочисленных значений были настоящей проблемой до тех пор, пока в Solidity 0.8 в 2021 году не были добавлены проверки по умолчанию. Ошибки контроля доступа по-прежнему встречаются в проверенном коде от профессиональных команд. Такие инструменты, как Slither, Mythril и Certora, выявляют некоторые ошибки, но ничто не заменит надлежащего аудита. И даже аудиты что-то упускают. Такова реальность.
Сегодня базовый токен ERC-20 стоит 5-20 долларов в основной сети. Полноценный протокол DeFi? Возможно, несколько сотен долларов. В сетях второго уровня? Копейки. Неудивительно, что 65% новых контрактов в 2025 году были запущены на втором уровне.
Экосистема EVM в 2026 году: доминирование второго уровня и что нас ждет дальше.
Три года назад сети второго уровня (Layer 2) имели TVL (общий объем транзакций) в 4 миллиарда долларов. Сейчас он превышает 50 миллиардов. Только у Arbitrum этот показатель составляет 16,6 миллиарда долларов. Базовый уровень — 10 миллиардов долларов. Оптимистический уровень — 6 миллиардов долларов. Этот сдвиг произошел потому, что комиссии за транзакции второго уровня упали почти до нуля. Свопы по большинству роллапов стали стоить менее одного цента. Даже комиссии основной сети упали ниже доллара. Раньше говорили, что Ethereum слишком дорог, и всем следует использовать Solana. Сейчас эта позиция уже не так актуальна, как раньше.
Абстракция учетных записей (ERC-4337) незаметно изменила правила игры в 2025 и 2026 годах. Умные кошельки позволяют пользователям оплачивать газ в стейблкоинах, объединять несколько действий в одну транзакцию и восстанавливать учетные записи без использования сид-фраз. Если вы когда-либо видели, как ваш друг в ярости бросает криптовалюту, потому что MetaMask заставил его подтвердить два всплывающих окна для одного обмена, вы понимаете, почему это важно. Разрыв между криптокошельком и обычным банковским приложением сокращается.
Что дальше? Я слежу за несколькими вещами. EOF (EVM Object Format) очищает байт-код, поэтому проверка становится дешевле, а инструменты работают лучше. Исследования параллельного выполнения могут позволить EVM обрабатывать независимые транзакции одновременно, а не по одной. Пока ещё рано, но если это сработает, пропускная способность резко возрастёт без каких-либо изменений для разработчиков. И деревья Веркла всё ближе к выпуску.
Однако конкуренция реальна. SVM от Solana обеспечивает более высокую пропускную способность. MoveVM внедрила шаблоны, предотвращающие целые категории ошибок. Но посмотрите на цифры. Экосистема EVM содержит более 190 миллиардов долларов в DeFi TVL. Ежемесячный объем DEX превышает 400 миллиардов долларов. Более 20 000 разработчиков используют её в своих проектах. Почти 11 лет тестирования в реальных условиях. Новые виртуальные машины выигрывают в бенчмарках. EVM побеждает во всем, что действительно имеет значение, когда на кону реальные деньги.