Что такое виртуальная машина 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.

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

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

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

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

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

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

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

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

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

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

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

Недостатки EVM

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

Adblock
detector