Введение в виртуальную машину Ethereum (EVM)

Введение в виртуальную машину Ethereum (EVM)

6 апреля 2022 г.

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


[Не взаимозаменяемые токены (NFT)] (https://hackernoon.com/tagged/nfts), платформы децентрализованных финансов (DeFi), игры с блокчейном — все они работают на смарт-контрактах. Однако сами смарт-контракты могут работать только потому, что существует виртуальная машина Ethereum (EVM).


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


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


Что такое виртуальная машина Ethereum (EVM)?


Чтобы понять виртуальную машину Ethereum, мы должны сначала изучить две концепции: «виртуальные машины» и «полнота по Тьюрингу».


Виртуальные машины


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


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


Если вы играли в игры для Android на ПК с помощью эмулятора, то виртуальная машина может быть вам знакома. Хотя эмуляторы и виртуальные машины существенно различаются, они оба приблизительно соответствуют мощности оборудования и могут выполнять код в «песочнице».


Полнота по Тьюрингу


Британский математик Алан Тьюринг разработал первую машину Тьюринга — предшественницу современного компьютера. Полная по Тьюрингу машина может обрабатывать любые вычисления, какими бы сложными они ни были, при условии, что у нее достаточно времени и ресурсов.


Теперь давайте свяжем эти идеи вместе и определим виртуальную машину Ethereum:


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


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


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


Биткойн функционирует в первую очередь как «распределенный реестр», в котором указаны правила передачи стоимости. Помимо обработки передачи стоимости, Ethereum (через EVM) позволяет развертывать смарт-контракты. В результате Ethereum описывается как «распределенный конечный автомат».


«Состояние» относится к информации о системе в любой момент времени. В Ethereum состояние относится к адресам, остаткам на счетах и ​​коду смарт-контракта, существующим в определенный момент. Каждая транзакция вызывает изменение состояния Ethereum (переход состояния), которое отражается во всей сети.


[Источник изображения]


Как работает виртуальная машина Ethereum?


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


Коды операций


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


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


Например, вы можете создать смарт-контракт с помощью кода операции «СОЗДАТЬ» или остановить работающий контракт с помощью кода операции «СТОП». Вы можете проверить [здесь] (https://www.ethervm.io/) подробный обзор кодов операций в Ethereum.


Газ


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


Ранее мы упоминали «коды операций» — специальные инструкции, которые можно использовать для выполнения различных операций в EVM. Газ — это просто количество вычислительных ресурсов, необходимых для выполнения конкретной операции.


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


Газ служит еще одной цели: предотвращению выполнения вредоносных действий, таких как распределенные атаки типа «отказ в обслуживании» (DDoS). Хотя EVM может выполнять практически любые вычисления, трудно предсказать время выполнения каждой операции.


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


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


Обзор некоторых операций EVM и платы за газ. [источник изображения]


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


Смарт-контракты — это фрагменты кода, которые выполняются после выполнения предопределенного набора параметров. Смарт-контракт использует условное программирование (если y, то x) для выполнения операций.


Смарт-контракты неизменны, автономны и прозрачны. Сочетание этих функций делает смарт-контракты особенно привлекательными, [хотя они не лишены недостатков] (https://businesstechguides.co/smart-contracts-limitations).


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


Некоторые смарт-контракты используются для создания и обмена токенами в блокчейне. Токены ERC-20, например, имеют смарт-контракт, определяющий их наименование, создание, обмен, общее предложение и другие атрибуты.


[Источник изображения]


Транзакции


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


Не каждая транзакция в Ethereum связана с передачей стоимости; некоторые могут передавать произвольные данные. Результат транзакции в дальнейшем зависит от получателя.


Обычная внешняя учетная запись (EOA) просто получит отправленный эфир. Однако контрактная учетная запись может выполнять код после успешной транзакции. И, как объяснялось ранее, транзакции приводят к «функции перехода состояния», то есть к изменению состояния Ethereum.


Диаграмма, объясняющая транзакции в Ethereum.JPG [Источник изображения]


Эти элементы, обсуждаемые в этом разделе, составляют ядро ​​инфраструктуры EVM.


Возможности виртуальной машины Ethereum


Детерминированный


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


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


Изолировано


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


Более того, смарт-контракты работают в изолированных средах внутри EVM. Таким образом, ошибки или взломы, влияющие на конкретный смарт-контракт, не наносят вреда базовому протоколу.


Терминируемый


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


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


Почему важна виртуальная машина Ethereum (EVM)?


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


Вот подробный обзор функций EVM:


1. Предоставление среды выполнения для смарт-контрактов


Без EVM развертывание смарт-контракта было бы бесполезным. EVM обеспечивает безопасную изолированную среду для выполнения кода смарт-контракта.


2. Функционирование как децентрализованная вычислительная единица


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


3. Отслеживание изменений состояния


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


Операции, такие как отправка эфира, выполнение кода или создание контракта, вызывают изменения в состоянии. И задача EVM — обновить состояние сети Ethereum, чтобы отразить эти изменения.


Последние мысли


Виртуальная машина Ethereum лежит в основе работы Ethereum. Без EVM Ethereum не может стать «Интернет-компьютером, поддерживающим децентрализованные приложения, доступные пользователям по всему миру.


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


Фото на обложке от Choong Deng Xiang на Unsplash.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE