- Регистрация
- 9 Апр 2021
- Сообщения
- 419
- Реакции
- 356
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) успела пройти проверку временем.
Подписывайтесь на
У Вас недостаточно прав для просмотра ссылки. Войдите или зарегистрируйтесь.