Rust Contracts & WebAssembly. Спикер: Николай Вольф
Ведущий разработчик Parity Technologies Николай Вольф расскажет о преимуществах использования WebAssembly и Rust, а также о синергии данных решений в сочетании с Блокчейн.
WebAssembly
WebAssembly часто воспринимают как Game changer для Web
Game changer позволяет решать задачи, которые не решались или решались неэффективно на других платформах, в данном случае для Web.
Стоит также отметить, что в Web разработке всегда существовала потребность в детерминированных вычислениях, которые одинаково выполняются во всех браузерах. Требования, предъявляемые к WebAssembly (подобным вычислениям) аналогичны и в Блокчейн - программы, содержащие такие вычисления должны выполняться быстро и занимать мало места. По данной причине, можно утверждать что, WebAssembly это Game changer не только для Web, но и для Блокчейн.
WebAssembly уже используется в Parity Technologies в следующих проектах:
- Polkadot
Polkadot позволит обеспечить консенсус между различными Блокчейн в рамках единого, большого консенсуса, что упростит взаимодействие. Данный «над консенсус» будет реализован как программа на WebAssembly и спецификация консенсуса будет полагаться на спецификацию WebAssembly.
- Частные сети
На сегодняшний день уже можно активировать виртуальную машину WebAssembly, запустить приватную сеть и стать первопроходцем в применении данной технологии
Kovan
Kovan - публичная тестовая сеть, которая поддерживается только нодами Parity
- eWasm
eWasm - WebAssembly на Ethereum
- Ключевые преимущества WebAssembly
- Компактный байткод - использование бинарного формата
- Детерминизм - если не считать операции с дробными числами, то существует определенность на всех этапах проведения операций и это значит, что следуя спецификации результат детерминирован
- Перспективный таргет, поддерживаемый крупными игроками - WebAssembly это не инициатива одного игрока, это коллаборация таких крупных игроков как Microsoft, Google, Apple, Adobe, Mozilla и т.п., что обеспечит WebAssembly поддержкой экспертизы высокого уровня
- Harvard architecture - архитектура при которой код и данные не пересекаются
- Формально WebAssembly - это стековая машина (Стековая машина - минимальная машина, которую можно трансформировать в другие машины на target платформе)
- Поддержка бэкендом с большими наработками по оптимизации (llvm) - llvm - это бекэнд компилятор, который используется во многих современных языках для производства кода. llvm позволяет производить высокооптимизированный код для WebAssembly
Теперь ответим на важный вопрос
Рассмотрим варианты:
- С
С довольно простой язык, на нем сложно выразить абстракции высокого уровня. Также язык небезопасен при использовании памяти
- С++
С++ улучшенная версия С, но также язык небезопасен при использовании памяти, допускает неопределенное поведение
- Haskell
Функциональный язык, но большинство современных Блокчейн систем работают с глобальным изменяемым состоянием, что плохо сочетается с функциональным подходом Haskell.
Улучшая Haskell - получаем Rust
Rust
Rust это уникальное сочетание высокоуровневых абстракций, которые можно найти в таких языках как Haskell, Scala, C#, Swift. Rust взял лучшее из данных языков, и именно то, что ложиться на основы Rust.
Преимущества Rust
Учитывая вышеописанное, приходим к выводу
WebAssembly и Rust базируются на одних и тех же принципах, что говорит о том, что их целесообразно использовать в связке.