Solidity University

Ethereum Virtual Machine

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

Код контрактов, как правило написан на высокоуровневом языке Solidity, который компилируется с помощью EVM в байт-код. Дальше байт-код отправляется в блокчейн для исполнения. В качестве платы за использования мощности во время деплоя и работы смарт контракта взымается gas.

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

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

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

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

EVM-совместимые блокчейны

EVM-совместимые блокчейны

EVM совместимые блокчейны - это блокчейны, которые используют EVM в качестве среды исполнения смарт контрактов. Разработчики могут использовать язык программирования Solidity и другие существующие инструменты и библиотеки для создания и деплоя контрактов на этих блокчейнах.

Некоторые из наиболее популярных EVM совместимых блокчейнов:

  1. Binance Smart Chain (BSC) - BSC был создан компанией Binance для обеспечения более быстрой и дешевой транзакционной сети для пользователей Binance. Бинанс смарт чейн использует EVM в качестве среды исполнения смарт контрактов.
  2. Polygon (MATIC) - блокчейн, который предназначен для обеспечения более быстрой и масштабируемой сети для приложений на Ethereum.
  3. Ethereum Classic (ETC) - это блокчейн, который создан путем разделения Ethereum на две разные цепочки. ETC использует EVM для смарт контрактов, но имеет отличия от Ethereum в том, что он не использует концепцию хардфорка.
  4. Avalanche (AVAX) - блокчейн, который также использует EVM и обеспечивает высокую производительность благодаря применению новых технологий консенсуса.
  5. Harmony (ONE) - это блокчейн хармони предназначен для обеспечения высокой скорости и эффективности транзакций тоже не обошелся без использования езереум виртуал машин.

В целом, использование EVM в совместимых блокчейнах упрощает процесс разработки и развертывания смарт-контрактов.

Как работает Ethereum Virtual Machine?

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

Принцип работы EVM
Источник диаграммы: https://ethereum.org/ru/developers/docs/evm/

1. Стековая архитектура

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

2. Газ

Ethereum Virtual Machine использует концепцию газа для управления выполнением смарт контрактов. Gas - это единица измерения, которая определяет количество работы, которое может быть выполнено во время выполнения умного контракта.
Каждая операция в контракте имеет определенную стоимость газа, которую необходимо покрыть. Если смарт контракт исчерпает свой лимит газа, он автоматически прерывается и все изменения, сделанные во время выполнения контракта, откатываются.

3. Байт-код

Контракты под Ethereum пишутся на Solidity - языке программирования, который компилируется в байт-код EVM. Байт-код - это набор инструкций, который EVM может понимать и выполнять.
Каждая операция транслируется в соответствующую байт-кодовую инструкцию (ADD, AND, XOR, SUB, и т. д.), которую EVM может выполнить.

4. Хранилище

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

5. Шифрование

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

6. Низкий уровень абстракции

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

7. Шифрование

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

Итог

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

Так же можем порекомендовать к просмотру видео про EVM от Incrypted:

Информация об авторе
Nick Newermin

Nick Newermin

Привет! Меня зовут Николай, я занимаюсь web3 разработкой уже более пяти лет, веду канал "Блокчейн Разработчик" и создаю образовательную онлайн платформу Solidity University. #Web3ForEveryone

Solidity University

Подпишись и получи бесплатный доступ к нашим курсам и обучающим материалам

Solidity University

Отлично! Вы успешно зарегистрировались.

С возвращением! Вы успешно вошли в систему.

Вы успешно подписались на Solidity University.

Успех! Проверьте вашу электронную почту для входа по магической ссылке.

Успех! Ваши платежные данные обновлены.

Ваши платежные данные не были обновлены.