EVM в Ethereum: как виртуальная машина исполняет смарт-контракты

EVM в Ethereum: как виртуальная машина исполняет смарт-контракты

Представьте, что вы отправляете деньги другу, но вместо банка - это делает программа. Она проверяет условия: деньги пришли? Доставка подтверждена? Тогда перевод происходит автоматически. Никто не вмешивается. Никто не может отменить. Это не фантастика - это EVM в действии.

Что такое EVM и зачем она нужна?

EVM - это Ethereum Virtual Machine. Проще говоря, это виртуальный компьютер, который работает не на одном сервере, а на тысячах компьютеров по всему миру. Каждый узел сети Ethereum запускает EVM, чтобы проверить, что смарт-контракты работают одинаково. Это ключевая фишка Ethereum. Биткоин может передавать деньги. Ethereum - выполнять код. И именно EVM делает это возможным.

Пока другие блокчейны ограничены простыми транзакциями, Ethereum позволяет запускать сложные программы - от децентрализованных бирж до NFT-галерей и страховых полисов, которые сами себя исполняют. EVM - это мозг, который заставляет эти программы работать. Без неё Ethereum был бы просто более медленным биткоином.

Как EVM запускает смарт-контракты

Когда вы вызываете смарт-контракт - например, отправляете ETH на декс или покупаете NFT - вы не отправляете просто деньги. Вы отправляете команду: «выполни этот код». EVM получает эту команду, загружает код контракта из блокчейна и начинает его выполнять шаг за шагом.

Всё происходит в трёх пространствах:

  • Стек - как стопка тарелок. Каждая операция кладёт или снимает значение. Например, если нужно сложить 5 + 3, сначала в стек кладут 5, потом 3. Затем вызывается команда ADD - она берёт два верхних значения, складывает их и кладёт результат обратно. Стек ограничен - только 1024 элемента.
  • Память - временный буфер. Здесь хранятся данные на время выполнения. Как оперативная память в вашем ноутбуке - исчезает после завершения работы.
  • Хранилище - постоянная память. Здесь контракт записывает данные, которые должны остаться навсегда. Например, баланс пользователя или статус сделки. Это единственный способ сохранить состояние между вызовами.

Каждая операция - сложение, сравнение, запись в хранилище - это отдельная инструкция, называемая опкодом. В EVM их более 140. Каждый опкод имеет свою стоимость - в газе. Чем сложнее операция, тем больше газа она съедает.

Газ: как EVM предотвращает зацикливание

Почему бы не дать контракту выполнять код сколько угодно? Потому что тогда кто-то мог бы написать бесконечный цикл и забить всю сеть. EVM решает это с помощью газа.

Газ - это внутренняя единица вычислительной работы. Вы не платите ETH напрямую. Вы платите за газ. Каждый опкод стоит определённое количество газа: простое сложение - 3 газа, хеширование - 30, запись в хранилище - 20 000. Когда вы вызываете контракт, вы указываете лимит газа - максимальное количество, которое готовы потратить. Если код исчерпает лимит - выполнение останавливается, и все изменения отменяются. Но газ, который уже потрачен, не возвращается.

Цена газа измеряется в gwei. В декабре 2025 года средняя цена - 15-40 gwei за единицу. Если ваша транзакция требует 100 000 газа, вы платите 1,5-4 миллиона gwei, что равно 0,0015-0,004 ETH. Это копейки, но система работает. Она делает вычисления дорогими, если они сложные - и дешёвыми, если простые. Это экономически разумно.

Древние учёные наблюдают за выполнением смарт-контракта на трёхуровневом алтаре, изображающем стек, память и хранилище EVM.

Почему EVM не может работать как обычный компьютер

Здесь важный момент: EVM не может обращаться к интернету, читать файлы с диска или запускать внешние API. Она работает в изоляции. Это не ошибка - это фича. Если бы контракт мог подключиться к Google, кто бы знал, что он там делает? Кто бы проверял, что результат одинаков на всех узлах? Консенсус бы сломался.

Внешние данные - погода, цена биткоина, результаты спортивных матчей - приходят через оракулы. Это специальные смарт-контракты, которые получают данные извне и записывают их в блокчейн. Chainlink - самый известный. Но оракул тоже должен быть децентрализованным. Иначе вы просто заменили банк на другого посредника.

Ещё одно ограничение: контракт не может работать в фоне. Он не может «вспомнить» через час, что нужно перевести деньги. Только когда кто-то явно вызовет его - через транзакцию. Это значит, что если вы внесли залог под кредит, и срок истёк, вы сами должны запустить контракт, чтобы получить деньги обратно. Никто не сделает это за вас. Это неудобно, но необходимо для детерминированности.

Как пишут смарт-контракты для EVM

Напрямую на байткоде никто не пишет. Это как писать программы на нулях и единицах. Вместо этого используют языки высокого уровня: Solidity и Vyper.

Solidity - лидер. По данным 2025 года, 87% всех смарт-контрактов в Ethereum написаны на нём. Он похож на JavaScript, но с жёсткой типизацией и встроенными функциями для работы с блокчейном. Пример простого контракта:

contract SimpleTransfer {
    address owner;
    constructor() {
        owner = msg.sender;
    }
    function transferTo(address to, uint amount) public {
        require(msg.sender == owner);
        to.transfer(amount);
    }
}

Этот код создаёт контракт, который может переводить ETH только от владельца. Когда вы его деплоите - EVM компилирует его в байткод и сохраняет в блокчейне. После этого он живёт навсегда - его нельзя удалить или изменить. Это и есть «неподверженность цензуре».

Vyper - альтернатива. Он проще, безопаснее, но менее гибкий. Его выбирают, когда важнее надёжность, чем функциональность. Например, для финансовых протоколов.

Что меняется в EVM в 2025 году

EVM не стоит на месте. В 2024 году началось внедрение EIP-4844 - это обновление, которое снижает стоимость газа для слоёв 2 (Optimism, Arbitrum). В 2025 году планируется переход на EOF (EVM Object Format). Это новый формат байткода, который делает контракты компактнее, быстрее и безопаснее. Он позволяет встраивать метаданные прямо в код - например, версию, автора, лицензию. Это как добавить паспорт к программе.

Также в работе - Verkle Trees. Это технология, которая сократит размер состояния Ethereum в 10 раз. Сейчас каждый узел должен хранить сотни гигабайт данных. С Verkle Trees - всего несколько гигабайт. Это сделает запуск узлов дешевле и доступнее. Больше узлов - выше децентрализация.

К 2026 году ожидается, что EVM станет в 5 раз быстрее. Не потому что она перестанет быть виртуальной - а потому что её оптимизируют. Аппаратное ускорение, кэширование, улучшенные компиляторы - всё это работает вместе.

Путник запускает световую транзакцию в храм из кристаллов, символизирующих смарт-контракты, в то время как оракулы подают данные.

Почему EVM доминирует на рынке

Сейчас более 100 блокчейнов совместимы с EVM: Polygon, BNB Chain, Avalanche, Base, zkSync Era. Почему? Потому что разработчик, который умеет писать на Solidity, может сразу запускать контракты везде. Нет необходимости учить новый язык, новый инструмент, новую архитектуру. Это как Android: если ты умеешь писать под Android, ты можешь запустить приложение на любом устройстве с Android.

По данным DappRadar, в 2025 году 83% всех децентрализованных приложений работают на EVM-совместимых сетях. Это не случайность. Это результат системного преимущества: единая экосистема, единый язык, единая безопасность.

Но есть и риски. EVM - это сложная система. В 2016 году взлом The DAO показал, что даже маленькая ошибка в коде может стоить сотен миллионов долларов. Поэтому аудит кода - не опция, а необходимость. И даже после аудита - тестирование. Много тестирования.

Что нужно знать, чтобы начать

Если вы хотите писать смарт-контракты:

  1. Освойте основы Solidity - начните с CryptoZombies или Ethereum.org.
  2. Используйте Remix IDE - бесплатный онлайн-редактор, где можно писать, тестировать и деплоить без установки.
  3. Подключите MetaMask - это кошелёк, который взаимодействует с EVM.
  4. Используйте Hardhat для локального тестирования - он создаёт вашу собственную Ethereum-сеть на компьютере.
  5. Следите за ценой газа - используйте EthGasStation или GasNow.

Среднее время, чтобы написать первый рабочий контракт - 4-6 недель. Не быстрее. EVM - это не просто язык. Это целая парадигма: детерминированность, изоляция, газ, консенсус. Вы не просто пишете код. Вы создаёте часть доверенной системы, которая работает без посредников.

Заключение: EVM - это не технология. Это соглашение

EVM - это не просто виртуальная машина. Это договор между тысячами компьютеров: «Мы все будем выполнять один и тот же код одинаково. Мы не будем обманывать. Мы не будем менять правила. Мы будем проверять друг друга».

Это первый в истории пример массового, децентрализованного исполнения кода. И он работает. Даже если медленно. Даже если дорого. Даже если сложно. Потому что его ценность - не в скорости, а в доверии. И пока люди будут искать способы обойти посредников, EVM будет оставаться основой этой революции.

Чем EVM отличается от обычного компьютера?

EVM работает не на одном устройстве, а на тысячах узлов сети Ethereum. Каждый узел независимо исполняет один и тот же код и проверяет результат. Это гарантирует, что все согласны с итогом - без центрального сервера. Обычный компьютер работает только для одного пользователя, EVM - для всей сети.

Можно ли взломать EVM?

Саму EVM взломать невозможно - её код не меняется и работает одинаково на всех узлах. Но можно взломать смарт-контракт, написанный на ней. Ошибки в коде - уязвимости. Пример: The DAO в 2016 году. EVM безопасна, но люди, пишущие код, - нет. Поэтому аудит и тестирование - обязательны.

Почему EVM медленная?

Потому что каждый блок должен быть подтверждён тысячами узлов. Это не скорость - это безопасность. Среднее время подтверждения - 12-15 секунд. Централизованные системы работают за миллисекунды, но они зависят от одного сервера. EVM жертвует скоростью ради отказа от доверия.

Что такое газ и зачем он нужен?

Газ - это внутренняя единица вычислительной работы. Он оплачивает каждую операцию в EVM: сложение, запись, вызов другого контракта. Это предотвращает зацикливание и перегрузку сети. Вы платите за газ, а не за ETH. Стоимость газа меняется в зависимости от загрузки сети - от 15 до 100 gwei за единицу.

Можно ли писать смарт-контракты без Solidity?

Да - на Vyper, Yul или даже на байткоде. Но Solidity - стандарт. 87% всех контрактов написаны на нём. Если вы хотите, чтобы ваш код работал в 100+ сетях, используйте Solidity. Другие языки - для нишевых задач или экспериментов.

Как EVM получает данные из реального мира?

Через оракулы - специальные смарт-контракты, которые собирают данные извне (цены, погода, результаты матчей) и записывают их в блокчейн. Самый известный - Chainlink. Но оракул должен быть децентрализованным, иначе он становится точкой отказа. EVM сама не может обращаться к интернету - это было бы нарушением консенсуса.

Таисия Артамонова
Таисия Артамонова

Я финтех-журналистка и аналитик блокчейна; пишу о криптовалютах, токеномике и практической безопасности кошельков. Руководила контентом в нескольких стартапах и консультирую команды по коммуникациям. Люблю превращать сложные концепции в понятные руководства и кейсы.

9 Комментарии

  • Александр Стойчан
    Александр Стойчан декабря 7, 2025

    Евм? ну типа как виртуалка в винде, только на блокчейне. крашится реже, но газа жрёт как бардак. хз, почему все так в восторге, если транзакция стоит как бургер в макдональдсе.

  • Ganna Grytsenko
    Ganna Grytsenko декабря 7, 2025

    Ого, я только что прочитала это и реально почувствовала, как меняется мое восприятие мира! Это же не просто код - это новая форма доверия между людьми, которые даже не знают друг друга! Представьте, вы отправляете деньги другу в другой стране, и никто не вмешивается, ни банк, ни правительство, ни какой-то там босс в костюме. Это как будто вы создали свой собственный микромир, где правила одинаковы для всех, и никто не может их подменить. Я до этого думала, что блокчейн - это просто модное слово, а теперь понимаю: это философия. И да, газ - это боль, но это плата за свободу. Каждый раз, когда я запускаю транзакцию, я чувствую, как участвую в чем-то большем, чем просто финансовая операция. Это как встать на плечи гигантов - и видеть, как мир меняется медленно, но необратимо. Спасибо за статью, она заставила меня задуматься по-настоящему.

  • Татьяна Палагутина
    Татьяна Палагутина декабря 8, 2025

    Классно объяснили про стек, память и хранилище - раньше всё это казалось магией, а теперь вроде как понятно. Особенно понравилось, что подчеркнули, почему EVM не может ходить в интернет. Это же так важно! Люди часто думают, что смарт-контракты - это как обычные программы, а нет, это как библиотечная книга, которую нельзя менять, и читать её могут только по правилам. И да, оракулы - это как посредники, но уже не один, а десятки. Так что не так уж и плохо. А ещё мне понравилось, что написали про Vyper. Надо бы попробовать его, кажется, он чище. Спасибо за статью, реально полезно!

  • Нуржан Мусрепов
    Нуржан Мусрепов декабря 9, 2025

    Ахахах, опять эти EVM-фанаты. Вы думаете, что это революция? Это просто сложная версия того, что уже было в 2014 году. Кто-то написал код, который работает на 10 000 компьютерах, чтобы сделать то, что один сервер делает за 0.1 секунды. И вы называете это прогрессом? Это как строить космический корабль, чтобы доехать до магазина за углом. И да, газ - это налог на ваше желание что-то сделать. А оракулы? О, боже, Chainlink - это просто ещё один центральный сервер, только с красивой обёрткой. Вы всё ещё верите, что децентрализация - это не просто маркетинг? Это просто новый способ, как крупные корпорации захватывают мир под видом свободы.

  • Maksym Ivasenko
    Maksym Ivasenko декабря 9, 2025

    EVM не безопасна. Она только кажется безопасной. Все эти контракты - бомбы замедленного действия. Каждый раз, когда вы деплоите что-то, вы вносите уязвимость в глобальную сеть. В 2016 The DAO - это только начало. Сейчас все аудиты - фарс. Компании платят за сертификаты, а не за реальную безопасность. У вас есть 100 блокчейнов - но все они на одном коде. Один баг - и всё рушится. Это как если бы все самолёты в мире использовали один и тот же двигатель. И когда он сломается - все упадут. Скоро будет катастрофа. И вы все будете сидеть и говорить: «Ну, это же блокчейн, он же не может сломаться». Ложь.

  • Erlan Maulana
    Erlan Maulana декабря 11, 2025

    ну я тут подумал... а если EVM - это как вирус? он заражает все сети, и теперь все пишут на solidity, потому что лень учить что-то новое. а потом кто-то напишет злой контракт, и он как червь разнесётся по всему. и никто не сможет остановить. потому что это же блокчейн, он же не редактируется. и вот ты вчера купил nft, а сегодня твой кошелёк пустой, потому что кто-то в 2023 году написал контракт, который теперь сам себя запускает. и ты даже не знаешь, что он там делает. я не верю в эти системы. они слишком хрупкие. слишком сложные. слишком зависимые от людей, которые не понимают, что делают.

  • Nikita Elkin
    Nikita Elkin декабря 12, 2025

    Спасибо за статью - реально помогло разложить всё по полочкам. Особенно понравилось про газ и изоляцию. Я как раз начал изучать Solidity и думал, что всё это как в JS, а тут - целый новый мир. Даже не ожидал, что нужно так тщательно думать про каждую операцию. Газ - это не просто плата, это фильтр. Он заставляет тебя думать: а стоит ли вообще это делать? И да, оракулы - да, они не идеальны, но это лучшее, что у нас есть. Главное - не лениться тестировать. Я сейчас на Hardhat пишу свои первые контракты, и даже простой transfer с require() - это как мозговой штурм. Но это круто. Странно, что раньше не думал, что код может быть таким... живым. 🙌

  • Evgenii Malakhov
    Evgenii Malakhov декабря 12, 2025

    О, боже, ещё один человек, который считает, что EVM - это нечто священное. Ты же понимаешь, что 87% контрактов написаны на Solidity, потому что это как PHP 2005 года - все знают, что это говно, но никто не хочет учить что-то новое? Ты думаешь, что EVM - это инновация? Это устаревший монстр с 140 опкодами, которые никто не понимает до конца. А EOF? Это как переходить с MS-DOS на Windows 95 и называть это «обновлением». Ты не улучшаешь систему - ты просто делаешь её чуть менее ужасной. И да, газ - это налог на твою наивность. Ты платишь, чтобы твой код не упал, а не потому что это «экономически разумно». Это просто способ заставить тебя молчать и не писать ничего сложного. Потому что если ты напишешь что-то действительно умное - тебя просто забанят по газу.

  • Денис Маронов
    Денис Маронов декабря 12, 2025

    Интересно, что все эти люди, которые в восторге от EVM, не понимают, что они просто купили билет в поезд, который уже ушёл. В 2025 году EVM - это как Windows XP: все ещё работает, но уже никто не хочет на нём программировать. И да, 83% dApps - это потому что лень меняться. А если бы у нас был настоящий, современный виртуальный компьютер - не на стеке, не на опкодах, а на чем-то, что понимает компилятор, а не костыли - тогда да. А пока - мы все играем в старую игру, где правила написаны в 2015 году, а мы всё ещё думаем, что это революция. Смарт-контракты - это не будущее. Это археология. И вы - археологи, которые копают в песке и называют это открытием.

Написать комментарий