🌐 Релиз EOSIO 2: улучшенная производительность, повышенная безопасность и новые инструменты для разработки

in #blockchain5 years ago

EOSIO 2 создавался в первую очередь с учётом интересов разработчиков. Мы поставили себе цель: сделать создание продуктов на базе EOSIO быстрее, проще и безопаснее. Мы считаем, что самым значимым узким местом в разработке на блокчейне является скорость, с которой он может выполнять смарт-контракты.

EOSIO был первым ПО на базе блокчейна, которое использовало для повышения производительности движок WebAssembly (WASM), однако со временем мы переросли существующие WASM общего назначения и поняли, что можем расти и дальше.

Наше решение: создать свой собственный движок с нуля с учётом особенностей блокчейна. EOS VM, наш специализированный блокчейн-движок WASM, выполняет тесты EOS Mechanics WASM CPU в 16 раз быстрее, чем Binaryen, выпущенный с EOSIO 1.0.

Кроме того, мы стремились преодолеть входной барьер для новых разработчиков – тех, кто собирается на #eosiohackathon или впервые пробует EOSIO. Как правило, настройка среды разработки на блокчейне представляет собой многоэтапный процесс, который может занять несколько часов или даже дней. Вот почему мы создали EOSIO Quickstart Web IDE, инструмент, позволяющий новым разработчикам переходить от начального этапа к полной готовности к работе за считанные минуты.

Наконец, любого разработчика, пытающегося привлечь новых пользователей в блокчейн-приложения, преследует одна и та же критическая проблема: защита закрытых и открытых ключей, а также риски, возникающие в случае её неправильного воплощения. С этим релизом поддержки WebAuthn в EOSIO разработчики могут начать тестировать в своих приложениях на EOSIO подписание транзакций с помощью WebAuthn, обеспечивая высокий уровень безопасности закрытых ключей, которого на сегодняшний день нет ни в одном блокчейне.

Далее мы приводим объяснение сути четырёх основных компонентов, включенных в релиз-кандидат EOSIO 2.0:

  • EOS VM: высокопроизводительный движок WebAssembly (WASM), заточенный под блокчейн-приложения, который способствует более эффективному использованию системных ресурсов при обработке смарт-контрактов и значительному повышению производительности.
  • EOSIO Quickstart Web IDE: новая мощная автономная интегрированная среда разработки на основе веб-интерфейса для создания смарт-контрактов EOSIO и связанных с ними веб-приложений. Она настраиватеся за считанные минуты, запускается в любом браузере и снижает входной барьер для новых разработчиков на блокчейне EOSIO.
  • Поддержка WebAuthn: широко распространенный безопасный стандарт аутентификации, позволяющий подписывать транзакции без расширений браузера или дополнительного программного обеспечения.
  • Поддержка производства блоков с мультиподписью и весовым порогом: безопасный способ использования производителями блоков разных ключей для подписи блоков на основном и резервном оборудовании для производства.

EOS VM

Мы разработали новый специализированный движок WebAssembly (WASM) под названием EOS VM, чтобы удовлетворить растущие потребности безопасного детерминированного выполнения в блокчейнах EOSIO. И хотя интерпретаторы Binaryen и WABT хорошо подходят для своих целей, они всё же имеют проблемы с неограниченным распределением памяти, длительным временем загрузки и переполнением стека, а также им не хватает песочницы на этапе выполнения. В совокупности эти проблемы снижают общую производительность и надёжность.

В качестве первоначального решения WASM в июне 2018 года с EOSIO 1.0 был выпущен интерпретатор Binaryen, а в сентябре того же года его заменили на поддержку WABT в EOSIO 1.3, обеспечившую двукратное увеличение производительности. EOSIO 2 несёт в себе релиз нового движка WASM под названием EOS VM, состоящего из трёх компонентов, каждый из которых имеет собственные функции и предлагает конкретные улучшения производительности.

Трио мощных компонентов для выполнения WebAssembly в блокчейне

EOS VM Interpreter – это интерпретатор WebAssembly, обеспечивающий чрезвычайно быстрый анализ/загрузку, а также детерминированное и эффективное выполнение с привязкой ко времени. Разработка интерпретатора с нуля позволила нам освободить место для будущей поддержки отладки в смарт-контрактах.

Компилятор EOS VM Just In Time (JIT) – это компилятор WebAssembly, который берёт WASM и на лету генерирует нативный код. Такая архитектура обеспечивает очень быстрое выполнение смарт-контрактов WASM и даёт значительные преимущества в производительности по сравнению с такими интерпретаторами, как WABT, Binaryen и EOS VM Interpreter. Скорость этого решения JIT позволяет нам использовать его в блокчейне без длительного времени компиляции блоков, присущего другим решениям.

Оптимизированный компилятор EOS VM является третьим компонентом EOS VM, использующим специализированную среду компилятора (LLVM) с архитектурой многопроходной компиляции. Получаемый из оптимизированного компилятора нативный код часто на порядок быстрее, чем тот же код, выполняемый в WABT, Binaryen, интерпретаторе EOS VM и EOS VM JIT. Самое главное, всё это работает даже быстрее, чем существующий движок WAVM, но в отличие от WAVM его можно безопасно использовать на блокчейне, задействуя наш многоуровневый дизайн.

Непревзойдённо быстрое выполнение

Наш сравнительный анализ различных компонентов показал следующие улучшения производительности в наших тестировочных средах:

  1. Тесты EOS Mechanics были получены из созданных сообществом EOSIO тестов и были выполнены на экземплярах AWS z1d.metal.
  2. Тесты повторного воспроизведения сравнивали время, которое требуется системе EOSIO для одного и того же воспроизведения на указанных движках WASM, и выполнялись на экземплярах AWS z1d.metal.

Вышеуказанные тесты производительности показывают относительные преимущества различных компонентов VM EOS. EOSIO 2 использует EOS VM JIT в качестве основного компилятора для выполнения большинства смарт-контрактов, тогда как оптимизированный компилятор EOS VM пытается скомпилировать те же смарт-контракты в фоновом режиме и развернуть их для чрезвычайно быстрого последующего выполнения в блокчейне. Такая многоуровневая архитектура позволяет EOSIO 2 использовать как быстрый запуск, так и оптимизированную компиляцию кода смарт-контракта.

EOS VM и её компоненты также легко настраиваются, поэтому разработчики могут реализовывать отдельные аспекты определенным образом в соответствии с желаемой функциональностью. Узнайте больше в репозитории EOS VM на GitHub.

Значительные улучшения в сетевом коде

Мы добавили в net_plugin поддержку многопоточности. Почти вся обработка в net_plugin, включая ретрансляцию блоков, обработку транзакций, упаковку/распаковку блоков/транзакций и другие процессы, теперь производится выделенными потоками, отделёнными от основного потока приложения. Изолировав эти процессы, мы добились значительных улучшений в производительности обработки транзакций и блоков в сетях EOSIO с несколькими производителями. Более подробная информация доступна в примечаниях к релизу EOSIO 2.0.0-rc1.

EOSIO Quickstart Web IDE

Опять же, все усовершенствования в EOSIO 2 были сделаны с учётом интересов разработчиков, и этот новый инструмент значительно упростит начало работы, совместное использование и командную работу над проектами на EOSIO.

Настройка среды разработки для EOSIO в настоящее время представляет собой многоэтапный процесс, выполняемый локально на компьютере разработчика, что может быть довольно сложно для тех, кто только начинает осваиваться в экосистеме. Сейчас на альфа-стадии находится EOSIO Quickstart Web IDE, который должен устранить этот входной барьер. Работая в облаке, он позволяет новым разработчикам настраивать смарт-контракты и среду разработки веб-приложений, а также полностью интегрированную персональную тестовую сеть с одним узлом, за счёт чего они могут перейти от старта к созданию приложения за считанные минуты.

EOSIO Quickstart Web IDE делает EOSIO гораздо более доступным для новых блокчейн-разработчиков, упрощая процесс и позволяя легко и быстро приступить к освоению EOSIO. Разработчики могут начать свой путь с демонстрационных приложений, беспрепятственно внося изменения и наблюдая все обновления в режиме реального времени, а также коммитить код в git репозитории прямо из браузера.

Мы с нетерпением ждём отзывов от сообщества, поскольку сейчас разработчики только начинают испытывать EOSIO Quickstart Web IDE.

Поддержка WebAuthn EOSIO

WebAuthn – это надёжный стандарт аутентификации пользователей, поддерживаемый консорциумом World Wide Web (W3C), альянсом Fast Identity Online (FIDO), а также Google, Mozilla, Microsoft, Yubico и другими. WebAuthn позволяет вам использовать аппаратное устройство для аутентификации и подписания транзакций в браузере без расширений или другого программного обеспечения, установленного на вашем устройстве.

WebAuthn создает пары криптографических ключей на таких устройствах, как YubiKey, и предоставляет удалённому серверу исключительно открытый ключ и только по безопасному каналу с проверенной подлинностью. Управляя всеми учётными данными аутентификации только внутри аппаратных устройств, WebAuthn, как показала практика, существенно снижает риски для целых классов атак, таких как фишинг. Поскольку наличие аппаратного устройства необходимо, а пароли не хранятся на центральном сервере, реализация аутентификации на основе WebAuthn может даже помочь предотвратить утечку критических данных, такую как кража паролей.

С момента релиза поддержки WebAuthn разработчики могут начать тестирование подписания транзакций с его помощью в своих приложениях на EOSIO. Поддержка WebAuthn EOSIO – это шаг к безопасному подписанию транзакций без необходимости отслеживать закрытые ключи или другую информацию об аккаунте. Мы продолжаем исследовать механизмы, которые обечпечат поддержку участников как на уровне сообщества, так и на уровне предприятий, которые хотят адаптировать свои приложения для интеграции с WebAuthn. Мы призываем разработчиков приложений присоединиться к первой волне испытателей, тестирующих частные приложения на этой технологии!

Производство блоков с мультиподписью и весовым порогом

Производители блоков должны иметь возможность обеспечить легкодоступность своей основной службы – поддержки работы блокчейна. Распространенным подходом к достижению этой цели является избыточная инфраструктура, которая эффективно поддерживает производство блоков в случае сбоя оборудования или проблем с сетью. Производство блоков с мультиподписью и весовым порогом является первой из многих функций, которые призваны предоставить производителям блоков легкодоступное комплексное решение.

Текущие правила консенсуса требуют ровно одного криптографического ключа подписи блока на каждого производителя блока. Этот ключ, хранится ли он на диске, загружается с помощью ПО или защищается аппаратным кошельком, представляет собой единую точку отказа деятельности производителя блока. Если этот ключ утерян или же доступ к аппаратному модулю, в котором он находится, временно невозможен, у производителя блоков не остается иного выбора, кроме как сбрасывать блоки, что влияет на пропускную способность всей сети.

Чтобы повысить безопасность и масштабируемость всего процесса, производство блоков с мультиподписью и весовым порогом добавляет уровень разрешений, позволяющий использовать сразу несколько ключей подписи блоков в гибкой схеме, которая обеспечит существование избыточной инфраструктуры подписи блоков без распространения каких-либо конфиденциальных данных. Узнайте больше о производстве блоков с мультиподписью и весовым порогом на GitHub.

Оставайтесь на связи

Мы продолжаем регулярно добавлять новые функции в пакет ПО EOSIO, чтобы обеспечить разработчикам доступ к высокопроизводительным усовершенствованиям, безопасным средствам подписания транзакций и надёжным протоколам аутентификации. Участие сообщества всегда приветствуется, так как обратная связь даёт представление о конкретных потребностях разработчиков. Если вы хотите оставить отзыв о релиз-кандидате EOSIO 2 и начать более тесно сотрудничать с нашей командой, напишите нам письмо на [email protected].


Переведено @blockchained

Оригинал поста: ЗДЕСЬ


Если вам нравится то, что мы делаем - поддержите блокпродюсера blockchained в сети EOS

Развивайте сеть EOS вместе с нами - делегируйте свой голос proxy: dposproxyeos


Телеграм чат: https://t.me/EOS_RU


Загрузите десктопное приложение с открытым исходным кодом RuDex


Вы можете торговать токенами EOS на RuDEX

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.028
BTC 56681.24
ETH 3016.79
USDT 1.00
SBD 2.28