BTC $ 3443.24786519 (0.55 %)
XRP $ 0.3041756135 (0.27 %)
ETH $ 89.6826879496 (0.74 %)
XLM $ 0.1123201688 (-0.43 %)
USDT $ 1.009978891 (-0.34 %)
BCH $ 100.183486463 (-1.51 %)
EOS $ 1.9330554481 (3.92 %)
BSV $ 87.4696743374 (-1.43 %)
LTC $ 24.1471071176 (0.69 %)
TRX $ 0.0132003941 (-1.02 %)

Как Виртуальная машина Эфириума связана со смарт-контрактами?

09:00 23/10/2018

Введение

 

Эфириум — одна из наиболее популярных криптовалютных платформ и первая площадка, которая предложила смарт-контракты в том виде, в котором мы знаем их сегодня. В отличие от Биткоина, смарт-контракты на блокчейне Эфириум гораздо чаще используются во время проведения ICO. С тех пор как был предложен стандарт ERC20, смарт-контракты могут разрабатываться даже программистами без значительного опыта работы с Solidity. Независимо от провальных случаев (таких, как форк The DAO) внедрение смарт-контрактов на блокчейне Эфириум до сих пор используется.

 

Многие платформы пытаются следовать за Эфириумом. Список конкурентов включает в себя NEO, EOS, Hyperledger и другие известные проекты. Как бы там ни было, Эфириум предлагает решение, которое выделяет его на фоне других площадок, — независимую технологию под названием Виртуальная машина Эфириума (Ethereum Virtual Machine, EVM).

 

Учётные записи Эфириума

 

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

 

Первый тип учетной записи под названием «Аккаунт, управляемый извне» (Externally owned account, EOA) предназначен для управления участниками. Они рассматриваются как объекты с состоянием и обладают балансом. Второй тип учетной записи — «контрактный аккаунт». Официальные документы определяют его как объединение кода и информации, которое принадлежит конкретному адресу в блокчейне Эфириума.

 

У всех аккаунтов есть ряд одинаковых полей:

 

  — Nonce — в переводе с английского «число, используемое лишь однажды» (number used once). Оно используется для обозначения различных транзакций и обращений от контрактов для предупреждения ситуаций двойной траты.
  — Баланс — простое состояние счета по определенному адресу (указано в Wei).
  — Хеш кода контракта — это результат вычисления хеша смарт-контракта, хранимого в состоянии базы данных. У EOA эта часть отсутствует, поскольку он управляется участниками.
  — Хеш хранилища аккаунта — это хеш-значение, которое рассчитывается на основе данных, помещенных в долговременное хранилище. Отсутствует у EOA-аккаунтов.

  •  

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

 

  — Solidity — основной язык для Эфириума. Подавляющее большинство смарт-контрактов на блокчейне Эфириума создано при помощи Solidity. Он активно развивается, и помощь энтузиастов Эфириума всячески приветствуется.
  — Vyper — альтернативный язык высокого уровня, разработанный для написания смарт-контрактов. Он менее популярен, чем Solidity, тем не менее, поддерживается.
  — LLL — язык типа Лисп (Lisp Like Language). На момент написания статьи поддерживается слабо.
  — Serpent — язык, подобный Python. На момент написания статьи поддерживается слабо.
  — Mutan — устаревший язык, заброшенный в пользу Solidity. Не поддерживается.

  •  

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

 

Почему EVM называют «виртуальной»

 

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

 

Чтобы выполнять какие-либо действия, EVM принимает программный код, преобразует его в бинарный и реагирует соответствующим образом. У программы может быть два источника: транзакция и контракт. Любая транзакция может вызвать выполнение контракта при помощи сообщения. Любой контракт может вызвать другой контракт, если написан соответствующим образом. Код целевого контракта будет также выполнен после получения сообщения.

 

 

EVM как программа в компьютерной среде

 

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

 

Послесловие

 

Виртуальная машина Эфириума разработана настолько хорошо, что такие решения, как Cardano, Hyperledger, Quorum, Hedera и многие другие активно используют ее. Конечно, для написания смарт-контрактов можно применять и другие языки. Их список включает как привычные языки программирования (Go, C++, Java и т.д.), так и некоторые собственные наработки. О них мы поговорим в наших следующих статьях.

 
Нашли ошибку? Выделите её и нажмите Ctrl + Enter чтобы сообщить администратору.

Самые актуальные новости о криптовалютах и блокчейне. Прочтите первым!

Зачем мне это?

Загрузка...