chitgar
chitgar

A person who does not recognize the existence of the Almighty has neither honor nor dignity.

Экосистема смарт-контрактов WASM

Руководство для автостопщиков по экосистеме смарт-контрактов WASM
материал после конференции WASM 2022

Введение

Смарт-контракты — это то, что позволяет другим людям создавать собственные варианты использования поверх блокчейна.

Чтобы блокчейн поддерживал смарт-контракты, он должен иметь среду исполнения смарт-контрактов или виртуальную машину смарт-контрактов. Возможно, самой популярной средой является виртуальная машина Ethereum (EVM), впервые представленная блокчейном Ethereum, а затем принятая многими различными сетями, которые хотят использовать огромную экосистему, которую Ethereum смог создать. Однако есть и другие виртуальные машины со смарт-контрактами, которые не являются EVM, и большинство из них основаны на WebAssembly (WASM).

EVM против WASM

EVM — это конечный автомат на основе стека, который интерпретирует код операции EVM в вычислительные инструкции, которые могут выполняться поверх блокчейна. Он был сделан основателем Polkadot доктором Гэвином Вудом. Разработчики могут использовать контрактно-ориентированный язык, такой как Solidity или Vyper, для написания приложений, которые могут компилироваться в байт-код EVM. EVM имеет глубину 1024 элемента, и каждый элемент представляет собой 256-битное слово.

Ограничение в 1024 элемента означает, что для смарт-контрактов EVM существует неотъемлемое ограничение сложности. Кроме того, поскольку все операции являются 256-разрядными, это также означает, что все не-256-разрядные процессоры (то есть все) будут иметь значительные накладные расходы при выполнении этих операций. Кроме того, языковые возможности также являются проблемой, поскольку байт-код EVM создается с нуля, поэтому, если какой-либо другой язык будет нацелен на EVM, им придется создавать компилятор с нуля, что очень затрудняет расширяемость. Не говоря уже о необычном синтаксисе контрактно-ориентированного языка, из-за которого входной барьер довольно высок. В целом, ограничения EVM усложняют разработчикам Solidity dApp создание сложного варианта использования.

С более продвинутыми вариантами использования смарт-контракты требуют большей сложности, и EVM демонстрирует свои ограничения. Вот тут-то и появляется смарт-контракт на основе WASM.

WASM технически представляет собой двоичный формат инструкций, который может работать на виртуальных машинах на основе стека, которые реализуют такие инструкции, как V8. Но для широкой публики и в этом контексте, когда мы говорим WASM, мы имеем в виду общую виртуальную машину, которая может выполнять инструкции WASM. Сам WASM является распространенным стандартом для выполнения операций собственного уровня из среды браузера. Разработку ведут лидеры отрасли, такие как Google, Microsoft, Mozilla, Apple и другие. Благодаря возможностям WASM вы можете запускать любую ресурсоемкую работу, например игры, из браузера с производительностью, близкой к исходной.

Подобно EVM, WASM также представляет собой виртуальную машину на основе стека, которая работает через байт-код. Программирование в WASM означает использование языка более высокого уровня, который может компилироваться в байт-код WASM, который может работать только в изолированной программной среде WASM (VM). Другими словами, WASM может идеально подойти для виртуальной машины со смарт-контрактом. И многие популярные блокчейны разделяют это мнение, поскольку мы наблюдаем увеличение числа высокопроизводительных сетей, использующих пользовательские виртуальные машины, которые либо вдохновлены WASM, либо непосредственно используют WASM.

Основными преимуществами WASM перед EVM являются:

  • Собственные 32/64-битные операции
  • Расширенная языковая поддержка
  • Легче расширять экосистему
  • Высокая производительность и совместимость

Их может быть больше, но это основные причины, по которым экосистема блокчейна переходит на WASM, включая eWASM, WASM-реализацию EVM.

Итак, мы знаем, что смарт-контракты на основе WASM технически превосходят EVM, но почему EVM по-прежнему лидирует, когда дело доходит до разработки dApp? Почему так много сетей все еще используют EVM?

Простой ответ — из-за его экосистемы разработчиков. За этим стоит так много инструментов, примеров, материалов и сообществ, Solidity является языком шлюза для многих новых разработчиков dApp, и, поскольку большинство блокчейнов с высокой ликвидностью поддерживают EVM, новым проектам трудно их игнорировать.

Итак, давайте посмотрим, как другим блокчейн-сетям, использующим альтернативную виртуальную машину, удается управлять своей экосистемой, несмотря на EVM?

Другие платформы смарт-контрактов

SOLANA

Solana хорошо известна своей почти мгновенной завершенностью и производительностью смарт-контрактов. Интересно, что они называют свои смарт-контракты «сетевыми программами», которые можно написать на C++ и Rust. И технически Solana не работает в WASM. Вместо этого они используют байт-код Berkeley Packet Filter в качестве своей виртуальной машины. Однако контрактный язык будет использовать LLVM (тот же компилятор, который нацелен на WASM) для компиляции своей программы, и очень легко перекомпилировать код с минимальными изменениями в WASM.

Основную документацию можно найти в официальной документации Solana (https://docs.solana.com/), откуда все новые разработчики должны начать работу. Однако другие учебные материалы, которые поддерживаются или утверждаются основной командой, отсутствуют.

Хотя их клиентский API, @solana/web3.js, выглядит тусклым из-за того, как работает связь с программами в сети, их самая сильная сторона заключается в их универсальном инструменте, называемом инструментом командной строки Solana.

Из одного инструмента CLI пользователи могут использовать следующие функции:

  • Раздача крана
  • Управление аккаунтом
  • Развернуть программу по цепочке
  • Создание транзакций
  • Управление узлом
  • Ставка
  • Утилита подписи

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

NEAR

Near известен своими осколками паслена (nightshade shards) и высокопроизводительной виртуальной машиной смарт-контракта WASM. Но еще одна причина, по которой он известен среди разработчиков, вероятно, связана с его сложной экосистемой для разработчиков. Вы можете писать смарт-контракты Near с помощью Rust и AssemblyScript (вариант TypeScript).

Как и у Solana, у Near также есть единый сайт документов, который можно найти по адресу https://docs.near.org/. Начинающим разработчикам эта документация понадобится только для разработки клиентской стороны и смарт-контрактов, а также ссылка на управление/разработку узла.

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

У Near также есть собственный клиентский API JavaScript, который называется near-api-js. Разработчики могут использовать этот API для создания любых RPC для узла, таких как вызов смарт-контрактов, выполнение транзакций и многое другое.

Возможно, самый большой инструмент, который есть у Near, — это Near CLI, который представляет собой инструмент командной строки Node.js, который использует почти API-JS в задней части для взаимодействия с блочной цепочкой Near.

Ближний CLI может делать следующее:

  • Управление аккаунтом
  • Развертывание смарт-контрактов
  • Взаимодействие со смарт-контрактами
  • Создание транзакций
  • Управление валидаторами
  • Репозиторий Scaffold dApp (контракты и интерфейс)

CosmWasm

Экосистема Cosmos очень похожа на экосистему Polkadot в том смысле, что у нее есть основной SDK для создания модульной цепочки блоков с учетом совместимости. CosmWasm — это модуль для Cosmos SDK, который добавляет функциональные возможности смарт-контрактов в экосистему Cosmos. Одна известная сеть, которая использует это, — Terra. В настоящее время CosmWasm официально поддерживает только смарт-контракты Rust, но поскольку основной модуль создан с использованием Go, мы можем представить себе расширенную языковую поддержку в будущем.

Поскольку CosmWasm является модулем Cosmos SDK, существует основной документ разработчика CosmWasm и несколько меньших документов, которые поддерживаются проектами экосистемы Cosmos, в которых используется модуль CosmWasm.

Например, Terra Academy (https://academy.terra.money) является основным источником для обучения практической разработке с использованием Rust и разработки смарт-контракта с CosmWasm. А основной документ Terra содержит только ссылку разработчика на смарт-контракт CosmWasm.

Большую часть документации для разработчиков можно найти на главной странице документа CosmWasm (https://docs.cosmwasm.com). Однако CosmWasm не является независимой цепочкой блоков, большинство новых разработчиков начинают свой путь с документов, которые поддерживаются проектами, использующими модуль CosmWasm, а затем в конечном итоге обратятся к основному документу за подробностями.

CosmWasm имеет собственный JavaScript API, называемый CosmJs, и terra.js, который предназначен для взаимодействия со смарт-контрактами WASM в сети Terra.

В отличие от других сетей, CosmWasm не имеет специального универсального инструмента CLI, вместо этого он использует груз для компиляции смарт-контракта Rust и интерфейс командной строки Go, называемый wasmd, для развертывания и взаимодействия с ним с терминала. Однако для настройки среды разработчика CosmWasm необходимо выполнить множество ручных настроек и предварительных условий. Вот почему у Terra есть универсальный инструмент командной строки под названием Terrain. Terrain может делать следующее:

  • Управление аккаунтом
  • Управление сетью
  • Репозиторий Scaffold dApp (контракты и интерфейс)
  • Тестирование
  • Разверните смарт-контракт
  • Взаимодействие с контрактами
  • Фреймворк клиентского скрипта

Polkadot/Субстрат

Экосистема Polkadot также имеет интересную структуру, поскольку сама сеть Polkadot не поддерживает смарт-контракты. Вместо этого блокчейны, созданные с помощью Substrate (эквивалент Polkadot SDK), могут реализовывать модуль среды выполнения, называемый Contract Pallet. Этот поддон позволит любым блокчейнам, которые его реализуют, выполнять смарт-контракты WASM. В настоящее время он поддерживает чернила (eDSL Rust), и есть работы по поддержке eDSL AssemblyScript.

Документация по контрактам Substrate WASM довольно запутана и разбросана вместо единого источника, поскольку Substrate рассматривает набор контрактов, язык контрактов WASM (чернила) и API JavaScript как отдельный проект.

Разработчики узлов субстрата могут узнать о паллете контрактов в официальном документе разработчика субстрата https://docs.substrate.io/v3/runtime/smart-contracts/ и в их мастерской https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/.

Новые разработчики, желающие использовать экосистему Polkadot, могут начать с официальной документации Polkadot https://wiki.polkadot.network/docs/build-smart-contracts.

Но, в конечном счете, им придется прочитать подробные инструкции по разработке из официального чернильного документа (https://ink.substrate.io/) или из документов разработчика отдельных парачейнов, таких как тот, который предоставляет Astar Network.https://docs.astar.network/wasm-smart-contracts/smart-contract-development).

Возможно, наиболее полной и зрелой документацией разработчика смарт-контрактов WASM для экосистемы Polkadot/Substrate может быть OpenBrush, поддерживаемая SuperColony. Для общей разработки контрактов WASM с чернилами это лучший источник.

Polkadot/Substrate также имеет JavaScript API под названием @polkadot/api, который также имеет собственную документацию. Поскольку API смарт-контрактов является частью пакета API Polkadot, документация хранится здесь и поддерживается командой Polkadot.js.

Как видите, нет единой документации по разработке смарт-контрактов WASM в экосистеме Polkadot/Substrate, как в других проектах, а также потому, что рассматривается палитра контрактов, языковой компилятор и API JavaScript для взаимодействия с контрактом. как отдельные проекты документы хранятся отдельно без единого источника, где новые разработчики могут сразу все увидеть.

Что касается инструмента CLI, у Polkadot/Substrate нет универсального инструмента или стандартной среды разработки для создания смарт-контрактов, таких как Terrain, Near CLI или Solana CLI. Вместо этого инструменты разделены на инструмент управления узлами субстрата и инструмент языкового компилятора. Хотя существовал инструмент под названием Redspot, который упрощает настройку узла и процесс управления учетными записями для разработчиков смарт-контрактов, этот инструмент больше не поддерживается.

Интерфейс командной строки субстрата обеспечивает:

  • Управление аккаунтом
  • Утилита подписанта
  • Управление узлом
  • Управление сетью

А интерфейс командной строки компилятора контрактов на чернила (также известный как грузовой контракт) обеспечивает:

  • Контракт на строительство
  • Развернуть контракт
  • Запуск модульных тестов
  • Взаимодействие со смарт-контрактом
  • Расшифровать данные контракта

Экосистема с первого взгляда

Теперь, когда мы изучили, что может предоставить контрактная экосистема WASM, давайте сравним и сопоставим эти сети.

Как видите, для единой сети блокчейнов гораздо проще обеспечить единую среду разработки и документацию, что позволяет новым разработчикам легко понять все с первого взгляда. С другой стороны, блокчейн-фреймворкам и цепочкам уровня 0, таким как Cosmos и Polkadot/Substrate, сложно создать единую среду разработки и инструменты CLI, поскольку это может привести к предвзятости в определенных сетях. Вот почему для блокчейна, построенного на основе этой структуры, естественно предоставлять документацию и инструменты, как это делает Terra. Хотя CosmWasm гораздо более унифицирован, чем то, как его обрабатывает Substrate, поскольку CosmWasm рассматривает язык, контрактный модуль и API JavaScript как часть единого проекта, а не разделяет все, как Substrate.

Давайте теперь посмотрим на поддержку инструмента.

Понятно, что такие блокчейны, как Near и Solana, предоставляют разработчикам более интегрированные универсальные инструменты, в то время как экосистема Cosmos с CosmWasm предоставляет только базовые функции и опирается на проекты своей экосистемы, такие как Terra, для создания полностью интегрированной среды наряду с существующими инструментами. С другой стороны, инструменты командной строки Substrate очень разбросаны, поскольку разработчик должен сначала настроить локальный узел контракта в качестве цели развертывания и хотя у нас есть грузовой контракт, экосистема Substrate ожидает увидеть больше языков смарт-контрактов, таких как ask, имеющих инструмент CLI, созданный специально для одного языка, затруднит его внедрение в будущем.

Делаем WASM снова шикарным

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

Вот где мы вступаем. Astar Network стремится продвигать экосистему Substrate WASM для всех будущих dApp, которые хотят использовать функциональную совместимость Astar Network.

Для этого мы в Astar Network сосредоточимся на унификации документации для разработчиков, которые начинают свой путь разработчика с Astar Network, на повышении уровня образования разработчиков, инкубации и предоставлении грантов для новых и инновационных приложений WASM dApp и, что наиболее важно, на создании Swanky CLI.

Swanky CLI — это универсальный CLI-инструмент для разработчиков контрактов Substrate WASM, в котором больше всего нуждается наша экосистема.

Этот инструмент все еще находится в стадии активной разработки, но мы планируем поддерживать различные функции, такие как:

  • Юнит-тестирование
  • Контрактное взаимодействие
  • Развертывание
  • Управление аккаунтом
  • Настройка узла разработчика

К концу июня и в дальнейшем мы добавим:

  • Интеграционные тесты
  • Формирование шаблонов как для интерфейсных приложений, так и для контрактов и многое другое

Поскольку кодовая база создана с учетом модульности, Swanky добавит поддержку нескольких языков смарт-контрактов по мере того, как к расширению экосистемы будет присоединяться все больше проектов. Мы рады быть частью будущего смарт-контрактов.

И это конец руководства автостопщика по экосистеме разработчиков смарт-контрактов WASM.

Спасибо.

Оригинал по ссылке.

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论