Что такое виртуальная машина Эфира (EVM)? Как она работает?
Что такое EVM?
Виртуальная машина Ethereum (EVM) — это программная платформа, которую разработчики могут использовать для создания децентрализованных приложений (DApps) на Ethereum.
EVM предлагает среду для создания и развертывания смарт-контрактов, а также dApps на языке программирования Solidity.
Виртуальная машина Ethereum, или EVM, служит «виртуальным компьютером» или программной платформой, используемой разработчиками для создания децентрализованных приложений .
Ethereum создал виртуальную среду, которая позволяет умным контрактам взаимодействовать друг с другом, которую он называет «Ethereum Virtual Machine». Это позволяет умным контрактам иметь большую функциональность без повышения сложности.
Глобальный суперкомпьютер? Так была описана виртуальная машина Эфира. Он принимает все транзакции, которые мог совершить ваш компьютер: отправлять и получать такие вещи, как наличные деньги, документы и контракты, и преобразовывать их в глобальном масштабе.
В этой статье Вы узнаете, что такое «виртуальная машина Эфира»и для чего она нужна.
Ключевые функции EVM |
|
Управление состоянием блокчейна Ethereum |
Выполнение смарт-контрактов |
Хранение данных |
Расчет платы за газ |
Блокчейн в начале: введение
Биткойн - это как базовая версия того, что может сделать блокчейн. У вас есть единица стоимости, Биткойн, и вы можете отправлять и получать BTC этой стоимости себе и другим пользователям.
Спустя время появился Ethereum и позволил людям создавать умные контракты и Dapps, используя технологию блокчейна.
Как только Ethereum позволил создавать умные контракты, следующим шагом было создание среды, в которой все эти умные контракты живут и взаимодействуют друг с другом. Вот где вступает в игру Виртуальная машина Эфира (EVM).
EVM лучше всего рассматривать как виртуальный компьютер в блокчейне, который превращает ваши идеи в код и запускает его в глобальной сети Ethereum.
Пример работы виртуальной машины Ethereum
Допустим, вы хотите создать способ для себя и своих друзей, живущих с вами в одной квартире покупать вещи для дома, в котором вы живете. По сути, вы создаете свой собственный умный контракт.
Есть ряд вещей, которые вы хотите, чтобы ваш умный контракт охватывал.
- Вы и ваши друзья должны создавать индивидуальные учетные записи.
- Все вы все согласны снимать часть этих денег с ваших индивидуальных счетов и ежемесячно вносить их на текущий счет.
- «Вы все согласны с тем, что никто не может снять деньги с этого счета, если все не согласятся.
- Все эти деньги могут быть сняты с этого счета только в том случае, если все из вас предоставят цифровую подпись.
Теперь все работает, но допустим, что вы хотите выделять определенное количество денег каждую неделю на покупку вещей для дома. Вы создаете отдельный умный контракт, который гласит:
- Тратим только 10$ в неделю на товары для дома.
- Покупаем только товары для дома в этом магазине.
- Убедитесь, что товары из этого магазина доставлены по этому адресу.
Тогда, к примеру, вы хотите купить телевизор, но некоторые из друзей хотят только внести определенную сумму денег на него. Здесь приходит еще один контракт. Этот контракт гласит:
- Человек А хочет потратить только 20 долларов
- Человек B готов потратить 40 долларов
- Человек С может потратить только 10 долларов
- Пользователь D может компенсировать разницу и приобрести телевизор, если выполнены вышеуказанные условия.
Можете ли вы увидеть, как все эти контракты зависят от созданных до этих контрактов? Это и есть виртуальная машина Ethereum. Среда, в которой все эти контракты живут, взаимодействуют и влияют друг на друга.
Это как служба обмена сообщениями для умных контрактов.
Как работает виртуальная машина Эфира?
EVM работает как стековая машина с глубиной 1024 элемента. Каждый элемент представляет собой 256-битное слово, которое было выбрано для простоты использования с 256-битной криптографией (например: Keccak-256 или подписи secp256k1).
Во время выполнения, EVM поддерживает временную память (в виде массива байтов с адресацией по словам), которая не сохраняется между транзакциями.
Контракты, содержат древовидное хранилище Merkle Patricia (в виде массива слов с адресацией по словам), связанное с рассматриваемой учетной записью и частью глобального состояния.
Скомпилированный байт-код смарт-контракта выполняется как ряд кодов операций EVM , которые выполняют стандартные операции стека, такие как XOR
, AND
, ADD
, SUB
и т. д.
EVM также реализует ряд операций стека, специфичных для блокчейна, таких как ADDRESS
, BALANCE
, BLOCKHASH
и т. д.
Какие цепочки совместимы с EVM?
- Ethereum
- BNB Chain
- Polygon PoS
- Avalanche
- Optimism
- Arbitrium
- Fantom
- Moonbean
- Klaytn
- Cronos
Реализация EVM
Все реализации EVM должны соответствовать спецификации, описанной в Ethereum Yellowpaper.
За всю свою историю Ethereum EVM претерпел несколько изменений, и существует несколько реализаций EVM на разных языках программирования.
Все клиенты Ethereum включают реализацию EVM. Кроме того, существует несколько автономных реализаций, в том числе:
- Py-EVM - Python
- евмон - С++
- ethereumjs-vm — JavaScript
- eEVM — С++
- Hyperledger Burrow - вперед
- хевм - Хаскель
Преимущество EVM?
Помимо того, что вы можете избежать подводных камней, от своих друзей, EVM может еще многое сделать:
- Вы можете создавать договоры, которые требуют выполнения нескольких условий: например, договоры страхования.
- Вы можете разрешить различным людям указывать свои собственные мини-контракты в более крупных контрактах. Представьте себе строителя, нанимающего подрядчиков для строительства дома. Он может заключить мини-контракты между своими сантехниками, штукатурами и электриками, которые платят каждому человеку только при соблюдении определенных условий.
- Вы можете создавать контракты, которые могут автоматически покупать или продавать вещи: скажем, вы работаете в сфере кондиционирования воздуха. Вы хотите покупать кондиционеры только тогда, когда температура поднимается выше определенной точки. Вы можете создать умный контракт, который может учитывать погоду и автоматически покупать нужную Вам вещь, когда это необходимо.
Язык виртуальной машины
Как и веб-сайт, на котором вы читаете эту статью, EVM построен на языке программирования.
Известные из них, которые уже существуют, это такие языки, как: Java, Python и Ruby.
У EVM есть свой, язык программирования, под называнием Solidity. Это язык, который позволяет людям создавать умные контракты, которые могут легко взаимодействовать с другими умными контрактами.
Вывод
Мы находимся только в начале становления, развития виртуальной машины. В будущем сложность, скорость и возможности виртуальной машины будут увеличиваться, так же как компьютеры с начала эры ПК стали быстрее и способны делать сложные вычислительные вещи.