Виртуальная машина: зачем Эфириуму нужна EVM

Lion_Ascendant

Доктор эйфоретических наук
ПроТестер
Регистрация
9 Апр 2021
Сообщения
419
Реакции
355
Screenshot 2024-05-09 at 19-59-16 Виртуальная машина зачем Эфириуму нужна EVM.png

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

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

До появления Биткоина сторонники криптографии уже писали о технологии смарт-контрактов. В работах Ника Сабо из 90-х годов можно найти довольно хорошо разработанную "теорию умных контрактов". Смарт-контракт - это компьютерный алгоритм, который выполняется автоматически при достижении заранее запрограммированных условий. Другими словами, смарт-контракт может функционировать без участия человека. Это, помимо очевидного преимущества в виде автоматизации процесса, способно исключить лишние посреднические органы, такие как арбитры и контролеры.

Но на практике даже появление Биткоина не позволило широко воплотить идею. Только с появлением нового проекта смарт-контракты получили свое полное воплощение. Почему так? Что позволило Эфириуму стать главной платформой для реализации умных контрактов?

Ответ простой – Ethereum Virtual Machine, сокращенно EVM.

Почему Эфириум

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

Однако проблема заключается в том, что блокчейн Биткоина не был разработан специально для смарт-контрактов, поэтому их функциональность там значительно уступает блокчейнам, в архитектуру которых изначально была встроена полноценная реализация подобного функционала. Например, Биткоин не сохраняет свое текущее состояние в каждый момент времени. Вместо этого он просто фиксирует, кто владеет чем, и кто передал что кому. Это позволяет хранить, отправлять и получать монеты с помощью UTXO (непотраченного выхода транзакции), в котором выбор возможных условий для транзакции ограничен. Однако это означает, что смарт-контракт не может обращаться к текущему состоянию блокчейна или изменять его, что существенно снижает его возможности. В Ethereum же это возможно благодаря EVM – вычислительной среде, специально созданной для работы со смарт-контрактами.

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

Что такое EVM

В официальной документации Ethereum EVM дано такое определение:

«Глобальный виртуальный компьютер, состояние которого сохраняет и согласовывает каждый участник сети Эфириума. Любой участник может запросить выполнение произвольного кода на EVM и выполнение этого кода меняет состояние EVM».

EVM отвечает за то, что код будет выполняться на всех виртуальных машинах децентрализовано, но при этом единообразно по заранее заданным условиям. К слову о выполнении кода: EVM – это полная, по Тьюрингу, машина. Что значит: она теоретически способна выполнять любые вычисления.

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

Пару слов о создателях: EVM – совместное детище Виталка Бутерина и Гэвина Вуда (Gavin Wood). Основные идеи, лежащие в основе EVM, можно прочесть в технической документации Гэвина Вуда. Вуд разработал язык программирования смарт-контрактов Solidity. И, кстати, после работы над Эфириумом Вуд переключился в 2016 году на собственный проект – Polkadot.

Состояния EVM

Логика состояний – ключевая для описания механизма работы EVM. Документация определяет проект Ethereum как распределенную систему состояний. Состояние – это крупная структура данных, содержащая не только все аккаунты и балансы, но также состояние машины, которая способна выполнять произвольный код и меняться от блока к блоку в соответствии с заранее определенным набором правил. Конкретные правила изменения состояния от блока к блоку, собственно, и определяются виртуальной машиной Эфириума.

По большому счету, EVM можно описать как математическую функцию, генерирующую определенный выход (output) при заданном вводе (input). Формально это описывается следующим образом:

Y(S, T) = S’, где S – это старое действительное состояние, T – набор действительных транзакций, а Y — функция перехода между состояниями, дающая новое выходное состояние S’. EVM поддерживает два варианта транзакций: вызовы сообщений и создание контракта.

Функция перехода состояния EVM позволяет Эфириуму от блока к блоку обновляться до нового действительного состояния в ответ на входные данные смарт-контракта. То есть благодаря EVM Эфириум – это не просто децентрализованная система записей, регистрирующая операции с криптовалютой. Но платформа, на которой можно разворачивать компьютерные программы, способные взаимодействовать с состоянием Эфириума. Изменения состояния позволяют разработчикам создавать при помощи смарт-контрактов собственные валюты, NFT, децентрализованные приложения (dApp) или автономные организации (DAO).

Какие языки понимает EVM

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

И это при том, что существует несколько языков программирования, на которых разрешается писать смарт-контракты для EVM. Самые популярные – это Solidity и Vyper. Но как код, написанный программистами на разных языках, становится понятным для виртуальной машины?

Единство и ясность обеспечивается благодаря байткодам – низкоуровневым инструкциям, с которыми EVM умеет работать. Смарт-контракт, написанный на Solidity или Vyper (или другом поддерживаемом высокоуровневом языке) преобразуется при компиляции в набор байткодов. Каждый шаг инструкции в байт-коде представляет собой операцию, называемую опкодом. Именно в виде таких кодов смарт-контракт и выполняется.

Иными словами, смарт-контракт – это совокупность машинных инструкций (опкодов), которые могут представлять собой стандартные машинные операции, к примеру, XOR (Исключающее «или»), AND (оператор «и»), ADD (сложение), MUL (умножение). А могут – специализированные для блокчейна инструкции, к примеру: ADDRESS (получить адрес текущего аккаунта), BALANCE (получить баланс выбранного аккаунта), BLOCKHASH (Получить хеш блока).

Газовый вопрос

Ключевой переменной для выполнения смарт-контракта является газ – аналог комиссии в Эфириуме. Газ измеряется в Gwei, которая равна 0.000000001 ETH. Он нужен для того, чтобы EVM смогла до конца обработать все действия, инициируемые смарт-контрактом. Чем этих действий больше и чем они сложнее – тем выше плата за газ. В перечне опкодов для EVM можно посмотреть, сколько газа необходимо ради выполнения каждой операции. Однако важно понимать: не все операции имеют стабильную цену в газе – очень часто на плату влияет загруженность сети Эфириума.

По мере выполнения кода газ потребляется в соответствии со стоимостью комиссионных для выполняемых операций и загрузки сети. Если в какой-то момент газ заканчивается, возникает исключение «закончился газ» (OOG – Out of Gas) и выполнение контракта немедленно останавливается, а транзакции отменяются. В этом случае никакие изменения в состоянии Ethereum не применяются, за исключением списания газа для оплаты ресурсов, которые были использованы на выполнение кода до точки остановки.

Поэтому менеджмент газа – крайне важный этап в разработке смарт-контракта. Ошибки на этом фронте могут привести к тому, что контракт не исполнится, а заложенный на его исполнение газ будет сожжен вникуда.

Обобщающие тезисы
  • Смарт-контракт — это программа, работающая на блокчейне Эфириума. Она представляет собой набор кода и данных, который находится по определенному адресу в блокчейне Ethereum.
  • Задача EVM – исполнить код смарт-контракта в сети и обеспечить изменение состояния Ethereum.
  • EVM поддерживает ряд языков программирования, самые популярные из которых – Solidity и Vyper.
  • Выполнение смарт-контракта требует уплаты газа. Чем сложнее контракт – тем больше газа потребляет. Также плата за газ зависит от загруженности сети Эфириума.

Подытожим

Виртуальная машина Эфириума – EVM, основополагающее решение проекта, благодаря которому обеспечивается выполнения смарт-контрактов в сети. Этим Эфириум отличается от предшественников на рынке криптовалют, а его популярность и эффективность (как и эффективность решения EVM) успела пройти проверку временем.

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

Как работает EVM:
  • Исполнение кода: EVM исполняет код смарт-контрактов, используя механизм транзакций. Она может обрабатывать два типа транзакций: создание контракта и вызовы сообщений.
  • Состояние системы: Состояние EVM включает в себя все аккаунты, балансы и состояние машины, которое изменяется от блока к блоку.
  • Тьюринг-полнота: EVM является тьюринг-полной системой, что означает, что она теоретически способна выполнить любые вычисления.
  • Языки программирования: Смарт-контракты для EVM могут быть написаны на различных языках, таких как Solidity и Vyper, которые затем компилируются в байткод для исполнения EVM.
  • Газ: Для выполнения операций смарт-контрактов требуется газ, который измеряется в Gwei и служит аналогом комиссии. Стоимость газа зависит от сложности операций и загруженности сети.

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

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