fbpx

Разбираемся, что такое EVM — Виртуальная Машина Ethereum. Поймет даже новичок!

14.09.2022
8 мин
573
3
Что такое EVM.

Сегодня в рубрике «ПростоКрипта» разбираем Что такое EVM.

Вы наверняка замечали, что ERC-20 и BEP-20 адреса идентичны, или задумывались о том, как же работают DEX биржи, а возможно думали о том, как происходит создание ERC-20 токенов. Все это возможно благодаря Ethereum Virtual Machine или сокращенно EVM.

Машина состояний

Если начать с определения EVM, будет мало что понятно, поэтому начнем издалека. К определению EVM придём чуть позже, когда разберёмся с основными понятиями. После этого обязательно перейдём к юзкейсам и примерам.

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

У блокчейна Ethereum есть нативная криптовалюта (ETH), которая следует тем же правилам. Но в отличие от того же Биткоина у Ethereum есть более сложный и продвинутый функционал: смарт контракты. Для описания такого функционала нужна более сложная аналогия, чем просто распределённый реестр. Ethereum — это распределенная state machine. У этого понятия нет адекватного перевода. Используют понятия «конечный автомат» и «машина состояний». Прийдется разбираться в этом самостоятельно, желательно на каких-то простых примерах.

Конечный автомат — это модель вычислений, основанная на гипотетической машине состояний. В один момент времени только одно состояние может быть активным. Следовательно, для выполнения каких-либо действий машина должна менять свое состояние.

Конечные автоматы используются для организации и представления потока выполнения чего-либо. Это особенно полезно при реализации ИИ в играх. Например, для написания «мозга» врага: каждое состояние представляет собой какое-то действие (напасть, уклониться и т. д.).

Для написания «мозга» врага: каждое состояние представляет собой какое-то действие (напасть, уклониться и т. д.).
Описание состояний автомата.

Конечный автомат можно представить в виде графа, вершины которого являются состояниями, а ребра — переходы между ними. Каждое ребро имеет метку, информирующую о том, когда должен произойти переход. На изображении выше видно, что автомат сменит состояние «wander» на состояние «attack» при условии, что игрок находится рядом.

Реализация конечного автомата начинается с выявления его состояний и переходов между ними. Представьте себе конечный автомат, описывающий действия муравья, несущего листья в муравейник:

действия муравья, несущего листья в муравейник
Описание состояний интеллекта муравья.

Отправной точкой является состояние «find leaf», которое остается активным до тех пор, пока муравей не найдет лист. Когда это произойдет, то состояние сменится на «go home». Это же состояние останется активным, пока наш муравей не доберется до муравейника. После этого состояние вновь меняется на «find leaf».

Если состояние «find leaf» активно, но курсор мыши находится рядом с муравьем, то состояние меняется на «run away». Как только муравей будет в достаточно безопасном расстоянии от курсора мыши, состояние вновь сменится на «find leaf».

Надеемся, что стало немного понятнее, так что попробуем теперь вернуться к Ethereum и EVM.

Что такое EVM?

Ethereum — это структура данных, которая включает в себя не только информацию об аккаунтах и их балансах, но и целую «машину состояний». Они меняются от блока к блоку по определенным предустановленным правилам и могут выполнять определенный код, в зависимости от заданных условий. Правила изменения состояний от блока к блоку и определяются EVM.

Скачивая фильм через BitTorrent, происходит передача фильма с компьютеров, на которых он уже есть, на ваш компьютер. Это и есть децентрализация, преимущество для пользователей в том, что фильм можно получить бесплатно. Порой даже мощной государственной организации сложно «уронить» децентрализованную сеть, поскольку для этого нужно, чтобы не осталось ни одного активного пользователя сети.

Централизованные и децентрализованные сети -как это выглядит
Централизованная, дистрибутивная и децентрализованная сети.

Одним из способов масштабировать децентрализованную сеть — это использование виртуальных машин. Они запускаются в любой операционной системе, на разном оборудовании и из любой географической точки. Виртуальные машины работают между кодом и машиной, которая исполняет этот код.

Виртуальная машина запускается на физической и работает как обычная, с жестким диском и оперативной памятью, но действует как программа. Любой может запустить виртуальную машину на своём компьютере или ноутбуке, которая будет портативной платформой для работы в децентрализованной сети. EVM используется для того, что бы смарт-контракты, в сети Ethereum, могли исполниться.

Мы подошли к моменту, когда можно в лёгкой форме сформулировать понятие Ethereum Virtual Machine (EVM):

Etehreum Virtual Machine (EVM) — это программная среда (framework), которая позволяет разработчикам, при помощи смарт контрактов, создавать децентрализованные приложения (DApps) на базе блокчейна Ethereum.

Смарт контракты

Чтобы лучше понять что такое EVM, нужно пробежаться по смарт контрактам, поскольку это основной инструмент в этом фреймворке.

Смарт контракты — это самоисполняемые строки кода, которые позволяют сторонам взаимодействовать между собой без участия третей стороны. Грубо говоря, смарт контракт — это список определенных команд, которые исполняются, когда достигаются определенные условия on-chain или off-chain. Например, в смарт-контракте есть условие: Если внести 1 BTC — взамен отдать 20,000$. Когда кто-то внесёт 1 Биткоин, взамен смарт контракт ему выдаст 20,000$, поскольку условие было соблюдено.

Как устроены и работают смарт контракты
Работа смарт-контрактов.

Тот факт, что код смарт контракта нельзя заменить или изменить, позволяет считать их безопасным способом взаимодействия. Всегда есть ожидаемый результат на выходе и эта встроенная безопасность записана в блокчейне Ethereum. Каждое исполнение контракта дает команду изменить состояние в EVM. При этом поддерживаются правильные балансы Ethereum аккаунтов, data storage контрактов, транзакции на уровне аккаунтов и контрактов. Все эти действия меняют «состояние» сети и все эти правила прописаны в Ethereum State Machine.

Смарт контракты написаны на языке программирования Solidity. EVM не может напрямую исполнять Solidity, поэтому код должен быть скомпилирован на более низком уровне. Это называется Opcodes.

O‍pcodes — язык EVM

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

Opcodes помогают EVM выполнять определенные задачи смарт контрактов или транзакций.
evm-opcodes.

Opcodes помогают EVM выполнять определенные задачи смарт контрактов или транзакций. Существует около 150 opcodes, которые может исполнять EVM. Они позволяют выполнять операции вроде арифметических, остановки, регистрацию, дублирования, отправки, памяти, сравнения, обмена, получение информации о блоках, окружении и т.д.

Для большей эффективности EVM преобразовывает свой байткод в opcode, где каждый opcode — это один байт в байткоде. Каждая операция opcode требует определенного количества газа, чтобы EVM продолжал работу.

Юзкейсы EVM

В основном с EVM разобрались. Теперь на практических примерах посмотрим как можно это использовать.

  • ERC-20 токены. Один из самых простых примеров применения смарт контрактов — управлять созданием и обменом ERC-20 токенов. Многие приложения и протоколы используют токены, чтобы вознаграждать пользователей за активности, которые важны для проекта. Без EVM это было бы невозможно.
  • DEX биржи. Децентрализованные биржи деплоят смарт контракты, которые позволяют пользователям обменивать ERC-20 токены. Эти смарт контракты называются Автоматические маркет мейкеры или АММ, поскольку позволяют пользователям предоставлять ликвидность в пулы, без контроля со стороны третьих сторон. Так работают биржи, вроде Uniswap или SushiSwap.
  • ERC-721 токены (NFT). Специальные смарт-контракты используются для минтинга NFT, которые являются токенами с уникальными характеристиками в рамках блокчейна. У нас есть отдельное видео «Что такое NFT?».

EVM блокчейны

Отдельно нужно затронуть EVM совместимые блокчейны. Взаимодействие между блокчейнами или интероперабельность — одна из главных проблем, которую пытаются решить в блокчейн индустрии. Ведь никакой масс адопшн не возможен, пока блокчейны не научатся взаимодействовать друг с другом. EVM — один из важнейших шагов на пути к решению этого вопроса.

Ethereum первым внедрил поддержку смарт контрактов и до сих пор является стандартом для остальных сетей. Но в связи с ростом количества пользователей и приложений, Ethereum столкнулся с проблемой масштабирования. Низкая пропускная способность и высокие комиссии возможно будут устранены с приходом Ethereum 2.0, а пока эти проблемы пытаются решить другие блокчейны.

Большинство из них open-source и в большинстве — форки Ethereum, но с более эффективным механизмом консенсуса. Вместо того чтобы разрабатывать новые методы использования смарт контрактов, разработчики просто скопировали часть кода Ethereum. Этот подход стал более эффективным в сравнении с разработкой с нуля по времени, передачи знаний и что самое важное интероперабельности. Затем были созданы кросс-чейн мосты, что позволило пользователям переправлять средства между EVM совместимыми сетями. Рассмотрим пару примеров.

  • Binance Smart Chain (BNB Chain). Имеет почти полное сходство с Ethereum с разницей лишь в алгоритме консенсуса (Proof of Staked Authority (PoSA)  vs. PoW). В этом смысле сохраняется: подход к архитектуре смарт-контрактов, формализация адресов, отсюда: dApps и токены — совместимы двунаправленно. 

    Проще говоря: если отправим USDT в сети Ethereum на BEP-20 адрес и держатель имеет адрес в MetaMask, то он получит платёж. Для этого ему нужно будет просто добавить новую сеть себе в кошелек.
  • Fantom. Смарт контракты на Fantom используют Solidity, следовательно Fantom совместим с EVM и DApps разработанные на Ethereum могут мигрировать на Fantom без проблем. Lachesis (алгоритм консенсуса Fantom) позволяет деплоймент в мейннет, использует EVM и совместим с Ethereum. Но если Ethereum — это децентрализованный компьютер, Fantom — это сеть, в которую можно подключить потенциально бесконечное количество децентрализованных компьютеров. По токенам также двунаправленная совместимость.
  • Avalanche. В модели Avalanche каждая цепочка — отдельное представление виртуальной машины. Они поддерживают разные виртуальные машины вроде EVM или WASM, что позволяет цепочкам использовать функциональность друг друга. Каждая из подобных виртуальных машин, запущеных на кастомном блокчейне, называется subnet, со своими валидаторами. Мост между Avalanche и Ethereum позволяет трансфер токенов ERC-20 и ERC-721 токенов.
  • Tron. Также является EVM совместимым блокчейном, но есть ряд существенных отличий. Начиная с адресов: в Ethereum и подобных блокчейнах адреса начинаются с 0x.. в Tron с T.. Адрес EVM — 20 байт, в Tron Virtual Machine — 21 байт. Также в TVM используется концепция Bandwidth. В отличие от газового механизма EVM в Ethereum, операции транзакций или смарт-контрактов на TVM бесплатны, токены не расходуются. Технически, исполняемая вычислительная мощность на TVM не ограничена общим количеством токенов.
  • Layer 2 блокчейны. Отдельным разделом идут блокчейны второго уровня вроде Polygon, Arbitrum или Optimism. Тут также работает двунаправленная совместимость передачи, но на уровне Layer 2.
  • Aurora, Velas и т.д. Aurora это вообще EVM, реализованная в видео смарт-контракта на протоколе Near. Velas — почти то же самое, но для связки Solana/Ethereum.

Итоги

Давайте подводить итоги. Возможно после этой статьи у вас стало больше вопросов, чем ответов. Но это не так уж и плохо, по крайней мере вы теперь знаете о чем бы вы хотели узнать в наших следующих статьях. Если подытожить все вышесказанное, то можно описать Ethereum Virtual Machine (EVM) — как децентрализованный фреймворк на базе блокчейна Ethereum, который позволяет использовать смарт контракты для создания токенов, создания и работы dApps, а также для взаимодействия Ethereum c другими блокчейн сетями.

Как вам статья?

3
0

статьи на эту же тему

Что такое NYM? Простыми словами для...
avatar Иван Павловский
05.08.2022
Что такое Polygon (MATIC)? Простыми словами...
avatar Иван Павловский
19.07.2022
Разбираемся как устроены...
avatar Дмитрий Юрченко
29.05.2022