Найти тему

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

В данной статье я рассмотрю важнейшие особенности 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).

-2

Самым существенным результатом перехода на 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 будет эффективно поддерживается в современных браузерах.

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