EVM — определение масштаба

Что такое EVM?

Другими словами, виртуальная машина Ethereum — это вычислительный механизм и программная платформа, функционирующая как децентрализованный компьютер. Разработчики используют виртуальную машину Ethereum для создания DApps на базе Ethereum и совместимого с EVM языка программирования Solidity — от криптоприложений DeFi и EVM до игр и торговых площадок, таких как OpenSea.

Самое главное, что виртуальная машина Ethereum — это часть сети Ethereum, отвечающая за исполнение и развертывание смарт-контрактов. Именно здесь живут и дышат смарт-контракты и миллионы DApps, основанных на блокчейне Ethereum.

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

Чтобы еще больше прояснить концепцию EVM, следует вернуться к основам и вспомнить, как работают компьютерные программы. Все программы написаны на языке программирования, например Java или C++. Однако, поскольку процессоры не могут читать Java или C++, код компилируется и переводится в байткод.

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

По аналогии Apps и пишут смарт-контракты на языке программирования. Вмдобно другим программам, разработчики создают DApps и пишут смарт-контракты на языке программирования. или C++ язык для Ethereum называется Solidity. Код Solidity компилируется в байткод и распространяется на каждый компьютер (узел), работающий под управлением Geth в сети.

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

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

Назначение EVM

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

Основные идеи, лежащие в основе EVM:

  • хранит данные на блокчейне и выполняет код в смарт-контрактах в сети Ethereum.

  • запускать любые криптоконтракты, которые могут быть построены на блокчейне Ethereum, с помощью языка программирования Solidity, который компилируется в EVM для исполнения.

Как работает EVM?

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

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

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

Smart Contracts, Nodes and P2P

Каждый узел в сети Ethereum должен согласовывать свои действия со следующим узлом, чтобы выполнить одну и ту же инструкцию. Это делает виртуальную машину Ethereum Turing Complete, то есть она может выполнять логические шаги для вычислительной функции.

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

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

Опкоды

В настоящее время существует около 150 различных опкодов, которые может выполнять EVM. Так что же такое опкоды и почему они важны для понимания EVM?

Причина, по которой виртуальную машину Ethereum называют Turing Complete, во многом заключается в ее способности выполнять инструкции машинного уровня, известные как опкоды.

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

Каждому опкоду отводится один байт. Таким образом, может быть использовано не более 256 опкодов.

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

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

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

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

Gas

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

Каждому опкоду присваивается стоимость газа. Чем сложнее опкод, тем выше стоимость газа. В настоящее время начальная стоимость каждой операции составляет 21 000 газа.

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

Что еще более важно, плата за газ помогает предотвращать DDoS-атаки и обеспечивать безопасность сети. Поскольку развертывание сложных контрактов в масштабах сети потребовало бы длительных и дорогостоящих вычислений, злоумышленники получают денежный стимул к тому, чтобы не предпринимать никаких злонамеренных попыток. Атака просто будет слишком дорогостоящей.

Что происходит в деталях

96cffc7a048b7eb3c369b674df2cce40.png

Данный рисунок описывает весь процесс совершения сделки. По шагам:

  1. Первоначально мы имеем состояние мира t, а в некоторых блоках — транзакцию.

  2. EVM обрабатывает это выполнение и выдает мировое состояние t+1.

  3. Этот переход изменяет хранение некоторых счетов по транзакциям.

Блокчейн, совместимый с EVM

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

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

Простые примеры:

  • BSC

  • Polygon

  • Tron

Техническое задание

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

Заключение

Мы обсудили некоторые общие аспекты EVM. А также ответили на три больших вопроса: что, зачем и как. Цель этой статьи — дать вам просто введение в EVM. Следующие статьи будут более техническими, мы обсудим опкоды и то, как именно работает EVM внутри.

@FutureMarkt

© Habrahabr.ru