Ethereum Explained: The EVM

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

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

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

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

Прежде чем вы приступите к изучению того, «что такое виртуальная машина Ethereum» или EVM, вам понадобятся некоторые сведения о таких понятиях, как машины, полные по Тьюрингу, и виртуальные машины.

Вам также необходимо понимать, как работают децентрализованные экосистемы. Биткойн был первым, кто представил децентрализованную экосистему. Через несколько лет после запуска Биткойна разработчики начали проникаться идеей «интернет-машин» или виртуальных машин, управляющих миром.

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

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

Читая желтую газету Ethereum или сталкиваясь с различными описаниями Ethereum в Интернете, вы можете задаться вопросом: «Что такое виртуальная машина Ethereum?»

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

Виртуальные машины

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

Другими словами, виртуальные машины приближаются к вычислительной мощности физических машин, использующих виртуальную архитектуру. Они могут работать на разных типах ОС и аппаратных средств, что делает их идеальным движком для децентрализованной экосистемы.
Через виртуальную машину можно использовать ресурсы участников сети независимо от местоположения или географии для создания, обработки и выполнения того, что они хотят. В этом смысле EVM действует как глобальный процессор или компьютер, который предоставляет разработчикам свои накопленные вычислительные мощности. Разработчики, в свою очередь, используют этот ресурс для создания смарт-контрактов и децентрализованных приложений или dApps.

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

Что такое полнота по Тьюрингу?

Отвечая на вопрос «Что такое виртуальная машина Ethereum?», вы столкнетесь с такими терминами, как полнота по Тьюрингу. EVM является полным по Тьюрингу. Что именно это значит? Идея принадлежит известному ученому-компьютерщику Алану Тьюрингу. Он разработал идеи о том, что может делать гипотетический компьютер или мыслящая машина. Он утверждал, что компьютеры не думают и не обрабатывают мысли, как люди, а руководствуются набором правил обработки данных для решения проблем.

Как мыслят машины Тьюринга

Машина Тьюринга, однажды названная Тьюрингом а-машиной (от «автомат»), представляет собой гипотетическую машину, воплощающую его концепцию нечеловеческого или машинного мышления. Мыслительный процесс осуществляется посредством алгоритмов. В статье Тьюринга он упомянул, что такая машина должна будет обрабатывать катушку с лентой с рядом символов или функций, которые можно перемещать вперед и назад. Можно также представить себе головку чтения/записи, которая будет перемещаться между этими функциями. Следовательно, машина могла бы обрабатывать символ или изменять его. Такая машина могла направить свое внимание только на одно «состояние» за раз. (Понятие «отслеживание состояния» полезно для понимания EVM).
Для такой ленты не предлагается ограничение. Он гипотетически бесконечен и ограничен только физическими ограничениями. Лента соответствует памяти компьютера. Следовательно, память можно бесконечно увеличивать, добавляя длину катушки с лентой. Таким образом, когда компьютер должен следовать набору инструкций, данные, применяемые к таким инструкциям, ограничены только физическими ограничениями.

Эти идеи имеют основополагающее значение для понимания «Что такое виртуальная машина Ethereum?», поскольку они включают в себя основные принципы ее концепции и архитектуры. Из в значительной степени «физической» идеи Тьюринга о машинной обработке другие вывели виртуальный аналог, по сути, с теми же принципами работы.

JavaScript в эфире

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

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

Теперь, когда у вас есть общее представление о том, что такое полная по Тьюрингу машина, и обзор того, как работают виртуальные машины, мы приблизились к пониманию того, «что такое виртуальная машина Ethereum» или, в частности, EVM. 

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

Если вы более продвинутый разработчик и уже понимаете, как работает Ethereum, вы найдете этот обзор важным, поскольку сеть переходит на Ethereum 2.0, а это означает, что она перейдет от виртуальной машины Ethereum (EVM) к eWASM на Ethereum 2.0.

Возможности виртуальной машины Ethereum

Если вы знакомы с Биткойном и уже используете его, вы почувствуете, насколько это просто. Хотя биткойн децентрализован, он в основном имеет дело с транзакциями на своей виртуальной машине. Он также ограничен тем, что является децентрализованным распределенным реестром.

Распределенный конечный автомат

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

Его состояние машины меняется с каждым блоком, поскольку машина переходит с каждым набором программ, которые она запускает, в соответствии с определенными фиксированными правилами. Что определяет эти конкретные изменения состояния на основе правил? Это виртуальная машина Ethereum.

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

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

Смарт-контракты

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

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

Виртуальная машина Ethereum детерминирована

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

Виртуальная машина Ethereum изолирована

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

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

Виртуальная машина Ethereum невозможна

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

Экономика EVM

EVM создает экономику. С помощью газовых стимулов он способствует одноранговой полноте по Тьюрингу, используя ресурсы мира для запуска программ. Благодаря этому он соответствует своему видению «мирового компьютера». Насколько важна EVM для протокола? Это позволяет любому, кто присоединяется к сети, выполнять свой код без доверия, при этом результат любого выполнения гарантируется с помощью полностью детерминированных (см. выше, в разделе о функциях EVM) смарт-контрактов.

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

Начиная

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

EVM и децентрализованные приложения

Поняв «Что такое виртуальная машина Ethereum», вы на пути к тому, чтобы стать частью этой замечательной экономики, где вы можете быть не только пассивным участником, но и творцом. Разработчики могут использовать свой творческий потенциал, создавая dApp, которые создают ценность и решают проблемы разными способами. Используя мощь этого мирового компьютера, вы можете создавать множество вещей, таких как рынки, события, экономики обмена файлами, новые финансовые инфраструктуры и новые способы взаимодействия без доверия. Вы также можете создавать децентрализованные версии различных бизнес-моделей. Возможности безграничны.

An interactive reference to Ethereum Virtual Machine Opcodes

EVM Deep Dives: The Path to Shadowy Super Coder - Part 1

Digging deep into the EVM mechanics during contract function calls

https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy

EVM Deep Dives: The Path to Shadowy Super Coder - Part 2

EVM Deep Dives: The Path to Shadowy Super Coder - Part 3

Demystifying Storage Slot Packing - Key Knowledge for the EVM Hackers

https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy-3ea

EVM puzzles

A collection of EVM puzzles. Each puzzle consists on sending a successful transaction to a contract. The bytecode of the contract is provided, and you need to fill the transaction data that won't revert the execution.

https://github.com/fvictorio/evm-puzzles

Поддержите блог, перечислив небольшие чаевые

Если у вас нет кошелька MetaMask, вы можете получить его здесь
Made on
Tilda