Search
Write a publication
Pull to refresh

Что привносит Ethereum 2.0. EWASM

Original author: Colin Schwarz

В данной статье я рассмотрю важнейшие особенности EWASM(Ethereum Web Assembly) которая приходит на смену EVM(Ethereum Virtual Machine).

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

Вот определение из Википедии:

“Виртуальная машина (VM, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница); также спецификация некоторой вычислительной среды (например: «виртуальная машина языка программирования C)”.

EVM это еще и стековая машина. Память в виртуальной машине на основе стека организована и доступна как стек. Я не буду подробно останавливаться на механике работы EVM, отмечу лишь что EVM хранит данные в RAM и ROM, используя для записи GAS. Виртуальное ROM — это неизменяемый байт-код EVM, язык понятный для EVM. Однако, основной код для программирования в среде Ethereum — это Solidity и для его компиляции в понятный EM байт-код используется компилятор solc.

Для чего же нужна eWASM в среде Ethereum.

eWASm является одним из краеугольных аспектов всего обновления Ethereum 2.0. Она представляет из себя ничто иное, как ограниченное подмножество WebAssembly, открытый набор инструкций, разрабатываемый и поддерживаемый Mozilla, Google, Microsoft и Apple. Различия между eWASM и WASM можно представить следующим образом: eWASM = WASM — недетерминизм (с плавающей запятой) + измерение + методы EEI (используемые для взаимодействия с Ethereum).

Самым существенным результатом перехода на eWASM становится значительное увеличение скорости работы и эффективность. Растет пропускная способность сети, увеличивая таким образом количество транзакций в каждом блоке. Это в свою очередь позволяет решить одну из фундаментальных проблем сети в настоящий момент — Масштаби́руемость.

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

Важным преимуществом eWASM является также устранение необходимости в прекомпеляции байт-кода. Предварительно скомпилированные контракты в EVM — это специальные биты байт-кода. Если вызов выполняется для предварительно скомпилированного контракта, EVM выполнит предварительно определенный собственный код и вернет результаты. Предварительные компиляции относятся к определенному протоколу для общих операций, таких как подписи и хэши, и помогают пользователям сэкономить на расходах на GAS, которые без них были бы намного выше. Предварительные компиляции необходимы, потому что без них различные сложные криптографические вычисления в сети Ethereum повлекли бы за собой чрезмерно высокую стоимость GAS. Необходимость в прекомпиляции обоснована также тем фактом, что при выполнении некоторых операций количество газа, требующегося на их выполнение может превышать предел блока(на момент написания статьи он составлял 12,000,00 единиц), а это означает, что эти операции были бы невыполнимы в ином случае. Главным недостатком прекомпиляций является то, что введение новых прекомпиляций в сеть обычно требует консенсусного хард-форка. Хард-форки часто вызывают споры и обычно трудно реализуемы. Ewasm достаточно эффективна при вычислениях, поэтому большинство текущих прекомпиляций можно исключить и заменить контрактами Ewasm. Эти смарт-контракты можно просто переписать и повторно развернуть без необходимости хард-форка.

И, наконец, совместимость. Планируется что eWASM будет поддерживать множество других языков, а значит и получит большой набор инструментов, в отличие от EVM. Если судить по активному аккаунту разработчиков в Github, то уже добавлена поддержка C/C++, RUST и JavaScript. Также eWASM получает поддержку известных и популярных движков JavaScript(Например Google V8 и Mozilla SpiderMonkey). Но, пожалуй, самым главным аспектом совместимости eWASM является тот факт, что она полностью соответствует стандартам WWW, а, значит, light-client Ethereum 2.0 будет эффективно поддерживается в современных браузерах.

Используемые материалы:

  1. Solidity Bytecode and Opcode Basics (Bernard Peh)

  2. Виртуальная машина — ссылка на статью в Википедии

  3. Стек — ссылка на статью в Википедии

  4. Ethereum Virtual Machine Explained

  5. Ethereum EVM illustrated

  6. Ethereum 2.0

  7. EWASM Github

  8. eWASM docs

  9. SOLC-js

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.