Возможно, вы слышали об Эфире (ETH), второй по величине криптовалюте по объему рынка. И если в разговоре вы используете термины ETH и Ethereum как взаимозаменяемые, вы определенно не одиноки.

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

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

Что представляет собой Ethereum Virtual Machine?

Ethereum Virtual Machine – это программная платформа, которую разработчики могут использовать для создания децентрализованных приложений (dApps) на Ethereum. На этой виртуальной машине хранятся все счета и смарт-контракты Ethereum.

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

В этой статье мы рассмотрим основы EVM и принцип ее работы.

Каково назначение Ethereum Virtual Machine?

Цель EVM – определить, каким будет общее состояние Ethereum для каждого блока в блокчейне.

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

Этот второй уровень называют «распределенными стейт-машинами» (англ. Distributed state machine, где слово «state» переводится как «состояние»). На самом простом уровне стейт Ethereum – это большая база данных, в которой хранятся все счета и балансы ETH.

В то же время стейт Ethereum – это и состояние машины, способное изменяться с каждым новым блоком в соответствии с набором предопределенных правил, которые могут выполнять любой машинный код. Конкретные правила, определяющие, как машина будет менять состояние во время каждого нового блока, определяются Ethereum Virtual Machine.

Введение в смарт-контракты

Смарт-контракты – это программы, которые выполняются на блокчейне Ethereum. Контракт представляет собой набор данных и кода, который находится по адресу на Ethereum.

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

Затем пользовательские учетные записи имеют возможность взаимодействовать со смарт-контрактом. Это включает в себя отправку транзакций, которые выполняют определенные функции, заданные контрактом. Смарт-контракты имеют несколько общих характеристик: они обеспечивают выполнение заранее определенных правил через свой код, их нельзя удалить, а транзакции с ними нельзя отменить.

Как Газ связан с производительностью EVM?

Каждое действие, выполняемое в Ethereum, представляет собой транзакцию в ETH. Транзакции требуют оплаты. В Ethereum плата за транзакции называется Газом, то есть «топливом», которое питает децентрализованные приложения.

В периоды высокой активности сети, когда происходит много транзакций, плата за Газ обычно возрастает. Иногда простая транзакция может стоить 10 или 20 долларов США в ETH.

Как хранятся данные в Ethereum?

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

В Ethereum существует два различных типа данных – постоянные данные и эфемерные данные.

Постоянные данные

Транзакции – это тип постоянных данных. Как только транзакция подтверждается, она записывается в древовидной структуре данных и никогда не изменяется.

Эфемерные данные

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

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

Преимущества Ethereum Virtual Machine

  • EVM позволяет любому человеку создать свой собственный dApp. Существует бесконечное множество потенциальных вариантов использования такого программного обеспечения, и технология не ограничивается определенной группой людей или теми, у кого много денег или связей.
  • Существует множество потенциальных преимуществ смарт-контрактов. Недавний пример – NFT. Создавая NFT, каждый может создавать цифровое искусство и продавать его на децентрализованном рынке. Это демократизирует доступ к рынку искусства в виртуальной форме, чего раньше не было.

Недостатки Ethereum Virtual Machine

  • Сеть EVM не является полностью децентрализованной. Подавляющее большинство узлов Ethereum размещено на централизованных облачных серверах, таких как Amazon Web Services. Если владельцы таких сервисов решат, что Ethereum им по какой-то причине не нравится, узлы могут быть легко отключены, что приведет к повреждению или разрушению сети. Такое уже случалось, например, с некоторыми приложениями для социальных сетей.
  • EVM требует определенных технических знаний. Те, кто не умеет программировать, не смогут многого добиться с EVM. Более удобные интерфейсы все еще находятся в процессе разработки. Хорошим примером являются NFT – существуют программы с графическим интерфейсом пользователя (GUI), которые позволяют практически любому человеку создавать NFT и использовать соответствующие торговые площадки.
  • Высокая плата за Газ в периоды перегруженности сети. Это может стать большим минусом для пользователей Ethereum. Хотя те, кто отправляет крупные транзакции, могут пострадать не так сильно, все, кто пытается отправить более мелкие транзакции, могут на некоторое время лишиться возможности пользоваться сетью. В частности, это создает проблемы для децентрализованных приложений. Когда множество пользователей взаимодействуют со смарт-контрактами dApps и создают большое количество транзакций, все может замедлиться или даже перестать работать, когда плата за Газ станет слишком высокой.

Подведем итог

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