Azure Ethereum: поддержка Web Assembly для написания Smart Contracts. Часть 3

Andrii Ryzhenko
4 min readAug 16, 2018

--

Статья является продолжением серии о возможностях Azure для Ethereum. Если подвести итоги двух первый частей:

  • в облаке Azure можно запустить блокчейн в один клик из подготовленного шаблона.
  • кроме блокчейна в поставку можно включить обвязку в виде: REST API для интеграции, мониторинг, балансер нагрузки, шину передачи и синхронизации данных, интеграция с Active Directry, доступ к веб-интерфейсу, iOS- и Android-приложениям, синхронизация с внешним хранилищем (например, SQL) и еще много чего.
  • Специально для частных и тестовых сетей было реализовано использование Proof of Authority, позволяющее избежать ненужного майнинга и упростить вопросы безопасности.

Так же в последнем релизе Azure была заявлена поддержка Web Assembly для написания Smart Contracts.

На это небольшое дополнение никто не обратил особого внимания — просто перевели абзац из англоязычных новостей.

Но на самой деле это принципиальный тренд для будущего Ethereum.

Многие “визионеры” помешались на хибстерах — островитянах, собравших 4 млрд. — команде EOS. Аналитики и эксперты присваивают EOS явное технологическое лидерство.

Что же выделяет EOS перед Ethereum? Если отойти от идеологии и консенсуса, то технически наиболее критичными являются два пункта:

  • скорость и стоимость транзакций (включая смарт контракты и операции с токенами)
  • поддержка более системных языков, в первую очередь С\С++ для написание Smart Contracts

По первому пункту нужно признать, что масштабирование — это самое слабое месте Ethereum и над этим интенсивно работают, но результаты будут не скоро — это действительно не радует…

написание смарт контракта

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

Напоминаем, что умный контракт Эфириума состоит из двух частей:

byte code и интерфейса ABI (Application Binary Interface).

Byte code — это скомпилированный код, которым может быть выполнен на ноде блокчейн, если он не противоречит интерфейсу.

Проблема заключалась в том, что byte code нужно было обязательно писать на Solidity. На первый взгляд, простой и понятный язык программирования, до тех пор пока не нужно реализовать более сложную логику. Кстати, можете сами создать простой контракт на базе статьи:

Создаем работающую КриптоЦерковь с нуля за 15 минут. Пошаговая инструкция

Но для создания более сложных приложений возникает потребность использовать более системные языки программирования.

Для этого компания Parity в составе Energy Web Foundation проводит экспериментальную разработку по интеграции web-assembly с EVM (Ethereum Virtual Mashine).

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.

По сути код пишется на С++, а потом компилируется на Web-assembly, переносится на веб-сервер и запускается уже в броузере.

Конечно, это еще довольно сырая технология (экспериментальная, как пишут на сайте Парити), но возможность использовать C, C++ является одним из ключевых преимуществ заявленных в частности в EOS, гонка с которым критична для Эфириума.

Справедливости ради в EOS мультиязычность обеспечивается тоже за счет Wasm.

Отличие том, что Ethereum это полностью рабочая сеть и сообщество не спешит переводить на сырую технологию, хотя работы ведутся.

Для команды EOS — это критичная инновация, которая важнее потенциальных рисков безопасности и стабильности (субъективное мнение автора).

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

Например, только недавно исправили проблему в Hello World:

Или недавно была найдена критичная уязвимость, позволявшая

Выводы

  • Решение от Azure для приватного Ethereum — это конкурентный продукт, позволяющий максимально быстро запускать приложения с блокчейн интеграцией. Использование Proof of Athority идеально подходит для приватных или тестовых сетей.
  • использование web-assembly позволит запускать программный код контрактов, написанный на C\C++ и Rust, что потенциально поможет конкурировать с EOS.
  • Смарт контракты на С++ принесут существенный прирост производительности и оптимизируют логику (например напишут нормальный random), но будут иметь место серьезные риски безопасности.

Понравилось? Спасибо! Жми Лайк или share — это позволит большему количеству людей прочитать статью!

Адептам EOS, просьба держать себя в руках и сохранять правила дискуссии. Писать в формате: я не согласен с тем то, так как …

Что еще посмотреть от автора :

Azure Blockchain Workbench — это почти революция: блокчейн SaaS + интегрируемый продукт из коробки — Часть 1

Рынок лимонов на ICO или как мошенники могут погубить индустрию. Ч1.

Создаем работающую КриптоЦерковь с нуля за 15 минут. Пошаговая инструкция

--

--

Andrii Ryzhenko

Business Developer & Technology Director. Partnership with tech companies to build cross-stack solutions. Additionally provide lead software developers teams