banner
Центр новостей
Обширный опыт продаж и производства

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

Sep 10, 2023

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

Эфир (ETH), вторая по величине криптовалюта с точки зрения рыночной капитализации, популярен среди криптовалютных инвесторов из-за своего собственного токена ETH. Тем не менее, его родной язык программирования Solidity и виртуальная машина Ethereum (EVM) играют важную роль в том, что он получает одобрение со стороны сообщества разработчиков. Фактически, блокчейн Ethereum продолжает привлекать разработчиков децентрализованных приложений (DApp) благодаря своей гибкости, широкому спектру доступных инструментов для разработчиков и большой базе пользователей платформы.

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

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

Сеть Ethereum, задуманная в 2013 году программистом Виталиком Бутериным, обязана своим феноменальным успехом в качестве предпочтительного блокчейна для разработчиков DApp виртуальной машине Ethereum (EVM), которая была разработана Гэвином Вудом во время его работы в Ethereum. Написанный на C++ и использующий компилятор проекта LLVM, EVM представляет собой специальный конечный автомат, который работает непрерывно и чьи неизменяемые операции определяют состояние каждого блока в блокчейне Ethereum.

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

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

Работая как стековая машина, которая передает временные значения в и из стека, EVM имеет глубину 1024 элемента, каждый из которых представляет собой 256-битное слово. Он также поддерживает временную память в виде массива байтов, который изменяется между двумя транзакциями в блокчейне Ethereum. Скомпилированные коды смарт-контрактов выполняются EVM в виде набора из 140 стандартных кодов операций, в то время как другие стековые операции, специфичные для блокчейна, также реализуются им.

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

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

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