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

Виртуализация и её типы Изучение

В статье основное внимание уделяется обсуждению виртуальной машины Ethereum и принципам ее работы.

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

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

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

Назначение EVM

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

  • Это компьютер, который хранит данные в блокчейне, подобно биткойнам, но также выполняет код в смарт-контрактах в сети Ethereum.
  • Машина предназначена для запуска любого типа крипто-контракта, который может быть построен на блокчейне Ethereum. Он делает это с помощью языка программирования Solidity, который компилируется в EVM для выполнения.
  • Целью написания кода в сети Ethereum является создание смарт-контрактов и программ, которые автоматически выполняют действия при выполнении определенных условий. Если условия или условия не выполняются, система также может выполнить их в функции «выход».
  • Например, если учетная запись была взломана, хакер не может украсть деньги из системы, потому что у него нет на это бюджета или полномочий.

Как работает EVM?

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

  • В Ethereum есть нечто, называемое смарт-контрактом. Эти контракты содержат некоторый компьютерный код, облегчающий обмен деньгами и информацией.
  • Эти контракты предопределены создателем смарт-контракта, чтобы гарантировать, что определенный результат произойдет в зависимости от того, что произойдет или не произойдет.
  • Виртуальная машина Ethereum предоставляет полную среду Тьюринга для выполнения сценариев и смарт-контрактов. Это означает, что все, что может быть реализовано с помощью компьютера, может быть запущено на EVM.
Читайте также:  Как использовать команду Linux Stty?

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

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

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

Виртуальная машина Ethereum (EVM) состоит из двух частей:

  • EVM (часть, которая запускает исходный код Solidity):EVM написан на C++ и использует LLVM в качестве компилятора. Это полнофункциональная виртуальная машина со всеми функциями, которые вы хотели бы иметь в виртуальной машине смарт-контрактов общего назначения, такими как поддержка нескольких языков программирования, функции безопасности, среды выполнения и многое другое. Это также позволяет вам писать собственный байт-код EVM.
  • Uncles: это небольшие фрагменты смарт-контрактов или данных, хранящихся в блокчейне. Это полезная функция, поскольку она позволяет вам хранить метаданные о вашей программе. Сборка EVM: это байт-код EVM, который вы можете использовать в качестве языка программирования.

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

  • Actions: это основные операции, которые можно выполнять с активами, хранящимися в памяти (а не в блокчейне), такие как умножение, сложение и так далее.
  • Balance: это количество эфира, которое есть у пользователя в любое время. Итак, если есть баланс в 100 эфиров и потрачено 10 эфиров, баланс будет 90 эфиров. Обратите внимание, что на самом деле это не переменная, это просто часть памяти, где EVM хранит данные. Это означает, что когда кто-то пытается изменить или прочитать его, он вернет выполнение с ошибкой.
  • Block: это неизменяемое хранилище для всех действий и транзакций, связанных с Эфириумом, за время его существования, вплоть до этого блока, в частности. Этих блоков может быть только 65 000, так что это не изменится.
  • Blockhash: это хэш рассматриваемого блока. Таким образом, если вы просматриваете данные, хранящиеся в блокчейне под другим именем, это будет хэш хранящихся там данных.
  • Block Number: это число, указывающее, к какому блоку принадлежит данный конкретный блок-хеш. Он всегда начинается с нуля и увеличивается каждый раз, когда в цепочку добавляется новый блок. Обратите внимание, что блоки имеют связанные с ними временные метки, поэтому вы можете определить, сколько времени прошло между двумя блоками.
  • Code: это код, выполняемый в EVM, который определяет, какое действие будет выполнено, когда произойдет ввод (например, перевод денег).
  • CodeHash: это хэш самого кода. Если посмотреть на контракт на Etherscan, вы увидите CodeHash. Когда функции выполняются на EVM, это число изменяется, потому что сам код изменяется в зависимости от ввода.
  • CodeSize: Это фактический размер кода в байтах.
  • GasLimit: это часть EVM, которая позволяет пользователям указывать, сколько газа они готовы потратить, чтобы что-то выполнить. Если это число равно нулю, то ничего не произойдет (такое случается редко).
Читайте также:  Начало работы с iOS-разработкой

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

  • Газ — это мера вычислительной мощности. Он определяет, сколько времени требуется для выполнения каждой транзакции и контракта.
  • Поскольку в системе уже так много кода, она использует ограниченное количество газа для запуска всего этого кода. Он устанавливает лимит газа по умолчанию на 250 000 единиц газа.
  • Как правило, чем сложнее ваша транзакция, тем больше газа требуется для ее выполнения.

Преимущества EVM

  • Выполнение ненадежного кода без риска для данных. Можно выполнить ненадежный код без риска для данных. EVM гарантирует, что его вычисления не повлияют ни на что другое, происходящее в системе или с личными файлами.
  • Можно запускать сложные смарт-контракты: в EVM можно запускать сложные смарт-контракты, не беспокоясь о том, как они взаимодействуют друг с другом. Их можно написать один раз, а затем запустить на нескольких платформах, что позволяет создать единый контракт, работающий в нескольких вычислительных средах.
  • Детерминированная обработка: смарт-контракты, написанные на EVM, имеют доступ ко всем состояниям Ethereum в любой момент времени, что позволяет выполнять обработку детерминированным образом и дает больше гарантий относительно их правильности. Например, нельзя создать бесконечный цикл в EVM, дважды вызвав одну и ту же функцию. Он прекратит выполнение и вернет конечное значение.
  • Распределенный консенсус. Одним из потенциальных применений Ethereum является обеспечение распределенного консенсуса, когда каждый запускает одну и ту же программу, но со своих компьютеров.
  • Устойчивость к сбоям: это сложный процесс, потому что сеть должна быть в состоянии прийти к консенсусу в любой момент времени. Таким образом, система становится более устойчивой к сбоям отдельных узлов, и вы можете обновлять несколько узлов одновременно, не беспокоясь о том, что они могут в конечном итоге не согласиться друг с другом из-за того, как был написан код.
  • Простота написания контрактов с отслеживанием состояния:с точки зрения разработчика, EVM предназначен для написания смарт-контрактов, а также для создания DApp (децентрализованных приложений), которые представляют собой программы, работающие в распределенных сетях таким образом, что все они видят одну и ту же версию. Кроме того, это невероятно упрощает написание контрактов с отслеживанием состояния, которым требуется доступ к какому-либо постоянному хранилищу.
Читайте также:  7 лучших Java IDE для разработчиков в 2022 году

Недостатки EVM

  • Высокая стоимость хранения данных: во- первых, это газ, который вам нужно использовать для оплаты комиссии за запуск смарт-контракта, а во-вторых, высокая стоимость хранения данных в блокчейне, которая может занимать более 3 ТБ.
  • Высокая стоимость газа: в Ethereum для выполнения всех транзакций требуется комиссия. Эти сборы называются «газом» и оплачиваются токенами ETH. Газ оценивается на момент исполнения и зависит от сложности исполнения сделки. Чем сложнее вычисление транзакции, тем выше будет стоимость газа.
  • Высокая цена на газ во время перегрузки сети: в периоды высокой перегрузки сети из-за того, что многие транзакции помещаются в блокчейн, цены на газ растут, потому что может пройти меньше транзакций (то же количество вычислительной мощности должно обслуживать больше транзакций)..
  • Требуются технические знания: для написания смарт-контрактов и использования EVM требуются технические знания. Это полная по Тьюрингу система, которая позволяет программистам писать сценарии на любом языке программирования, который они пожелают. Это может быть отлично или катастрофически, в зависимости от намерения написанного кода. Языки программирования не являются хорошими или плохими по своей природе; все зависит от того, кто их использует и с какой целью. Недостатком этой технологии является то, что она может создать множество сложных проблем, потому что чем больше возможностей, тем больше ответственности для автора кода.
Оцените статью
bestprogrammer.ru
Добавить комментарий