Foresight Ventures: WASM - двигатель новой эры

НовичокJan 01, 2024
В этой статье рассматриваются некоторые взаимосвязи и варианты использования Wasm и блокчейна: смарт-контракты, межцепочечные взаимодействия, внецепочечные вычисления и конфиденциальность данных.
Foresight Ventures: WASM - двигатель новой эры

TL;DR

WebAssembly (Wasm) - это переносимый, высокопроизводительный формат двоичных инструкций, который может работать в веб-браузерах. Он разработан как универсальная цель компиляции, которую можно использовать с несколькими языками программирования и запускать на различных платформах.

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

Существует несколько взаимосвязей и сценариев применения между Wasm и blockchain:

  1. Смарт-контракты: Wasm может служить средой исполнения для смарт-контрактов, позволяя контрактам работать на разных платформах блокчейна. Высокая производительность и портативность Wasm обеспечивают более эффективное выполнение смарт-контрактов и кросс-платформенное использование.
  2. Межцепочечная совместимость: Wasm можно использовать для реализации межцепочечной совместимости. Компилируя логику разных блокчейнов в код Wasm, одна и та же логика может выполняться на разных блокчейнах, обеспечивая передачу данных и взаимодействие между цепочками.
  3. Вычисления вне цепочки: Wasm можно использовать для вычислений вне блокчейна и отправлять результаты вычислений в блокчейн. Это позволяет повысить эффективность и гибкость вычислений, сохраняя при этом безопасность и достоверность данных.
  4. Конфиденциальность данных: Wasm можно использовать для обеспечения защиты конфиденциальности данных в блокчейне. Компилируя логику обработки конфиденциальных данных в код Wasm и выполняя его на блокчейне, можно сохранить конфиденциальность данных, обеспечив при этом верифицируемость вычислений.

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

1. Что такое Web Assembly?

WebAssembly - это эффективный и легкий стандарт набора инструкций, разработанный World Wide Web Consortium (W3C). Его называют революционером в области веб-технологий и высокопроизводительных вычислений, поддерживающим кросс-браузерное исполнение. Это означает, что мы можем компилировать различные языки программирования, включая C/C++, Go, Rust и другие, в единый стандартный двоичный формат и использовать его в качестве замены JavaScript, запуская в веб-браузерах код с эффективностью, близкой к нативной.

WebAssembly, также известная как WASM, - это безопасная для памяти и независимая от платформы технология, которая может эффективно работать с различными архитектурами процессоров. Он предлагает несколько ключевых преимуществ:

  • Эффективность: WASM обладает полным набором языковых функций и представляет собой компактный и быстро загружаемый двоичный формат. Его цель - полностью использовать возможности аппаратного обеспечения для достижения производительности родного языка.
  • Безопасность: WASM работает в безопасной для памяти и "песочнице" среде выполнения, и его можно даже внедрить в существующие виртуальные машины JavaScript. В веб-среде WASM строго придерживается политики одноименного происхождения и политики безопасности браузера. Во время компиляции WASM ограничивает интерфейс, чтобы снизить риски безопасности. Большинство приложений WASM не могут получить доступ к Интернету (например, нет поддержки сокетов) и ограничиваются локальным доступом к базе данных. Многие проблемы безопасности возникают из-за несанкционированного доступа к памяти, которые можно устранить во время компиляции с помощью WASM.
  • Совместимость: WASM разработан для того, чтобы быть безверсионным, тестируемым и обратно совместимым в Интернете. Его можно вызвать с помощью JavaScript, войти в контекст JavaScript и получить доступ к функциям браузера, как к Web API. WASM может работать не только в веб-браузерах, но и в не-веб-средах, таких как Node.js, Deno, а также устройства IoT. В отличие от традиционных подходов, требующих многократной компиляции, WASM нужно скомпилировать только один раз для мгновенного выполнения "plug-and-play".

Кроме того, Web - это единственная настоящая универсальная платформа, которая позволяет получить доступ к Вашим приложениям на любом устройстве. Это также позволит Вам поддерживать единую кодовую базу, упростит обновления и обеспечит доступ всех пользователей к Вашим приложениям. WASM поддерживает 64-битные и 32-битные целочисленные операции, которые напрямую соответствуют инструкциям процессора. Устранив операции с плавающей точкой, можно легко добиться детерминированного поведения, что необходимо для алгоритмов консенсуса. Поддерживаемый проектом инфраструктуры компилятора LLVM, WASM может воспользоваться преимуществами более чем десятилетней оптимизации компилятора в LLVM. WASM постоянно разрабатывается такими крупными компаниями, как Google, Apple, Microsoft, Mozilla и Facebook, и поддерживается бэкендами браузеров, разработанных этими компаниями.

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

2. Зачем нам нужна веб-ассемблер?

2.1 Web2

Веб превратился из платформы для статичного контента и небольших скриптовых языков в мощную и популярную платформу, наполненную удивительными приложениями и возможностями, благодаря встроенной функциональности браузеров и интерактивности, которую обеспечивает Веб. Однако веб-приложения по-прежнему в основном управляются одним и тем же языком сценариев (JavaScript), который изначально не был предназначен для выполнения этих задач.

Изначально JavaScript был простым языком сценариев, призванным придать интерактивность легким гипертекстовым документам в веб-приложениях. Его дизайн был прост в изучении и написании, и он не ставил во главу угла скорость выполнения. За прошедшие годы значительное повышение производительности при разборе JavaScript браузерами привело к заметному увеличению производительности.

Благодаря ускоренной скорости выполнения JavaScript, спектр вещей, которые можно делать в браузерах, значительно расширился. В новых API появились такие функции, как интерактивная графика, потоковое видео, автономный просмотр и многое другое. Более того, все большее количество приложений, которые раньше были ограничены настольными средами, переходят в Web. Теперь Вы можете легко редактировать документы и отправлять электронные письма в браузере. Однако в некоторых областях производительность JavaScript остается проблемой. Подумайте о программных приложениях, которые Вы используете помимо браузеров: игры, редактирование видео, 3D-рендеринг или производство музыки. Эти приложения требуют обширных вычислений и высокой производительности. JavaScript с трудом справляется с этими высокопроизводительными требованиями.

Однако заменить JavaScript не представляется возможным, и для достижения этой цели могут потребоваться даже десятилетия, так как на нем держится весь Интернет. Более того, существует большое сообщество, постоянно совершенствующее JavaScript. Действительно, по сравнению с другими языками, JavaScript имеет некоторые недостатки в таких аспектах, как null и ==. Однако эти проблемы не настолько серьезны, чтобы требовать замены всей техники.

Итак, WebAssembly не заменит JavaScript, но это не значит, что WASM не будет использоваться в будущем. На самом деле, использование WASM будет становиться все более и более распространенным. Это связано с тем, что WASM может привнести в веб мощные вычислительные возможности, такие как обработка изображений или игры. С помощью WASM Вы можете создать веб-версию Photoshop, которая будет хорошо работать, или 3D-игру, которая будет работать в браузере со скоростью 60 кадров в секунду или даже с более высокой частотой кадров. Игры, в частности, представляют собой сложную задачу, поскольку они требуют одновременного выполнения обработки аудио и видео, а также координации физических эффектов и искусственного интеллекта. WASM способен эффективно запускать игры в браузере, что открывает возможности для переноса в браузер многих других приложений.

На рисунке выше показано сравнение рабочего процесса между JavaScript и WebAssembly (wasm). Можно заметить, что wasm гораздо лаконичнее, чем JavaScript.

2.2 Web3

WASM VM

В 2018 году экосистема Ethereum начала обсуждать использование ВМ WASM в качестве виртуальной машины для смарт-контрактов, поскольку считалось, что она обладает лучшей производительностью, чем EVM. Гэвин Вуд, изобретатель EVM, высказался о целесообразности замены его на WASM, а Виталик также заявил, что Ethereum 2.0 будет обновлен для поддержки контрактов WASM (eWASM), чтобы удовлетворить больше потребностей разработчиков. Сегодня разработка контрактов WASM уже приобрела форму.

2.3 Как устроен EVM? Почему это неэффективно?

Проблема размера архитектуры

Традиционные компьютеры имеют наборы инструкций, которые принимают на вход 32 или 64 бита. EVM, однако, отличается от других и уникален тем, что это 256-битный компьютер, созданный для более легкой работы с хэш-алгоритмом Ethereum, который производит явные 256-битные выходные данные.

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

Кроме того, если Вы захотите реализовать такой сложный алгоритм, как SHA256, используя базовые OPCODES EVM в Ethereum, Вам придется нелегко! Чтобы решить проблему высоких затрат газа при выполнении сложных программ через набор инструкций, Ethereum ввел концепцию прекомпиляции, которая компилирует программу в EVM и потребляет фиксированное количество газа. Примечательной предварительной компиляцией является хэш-алгоритм Ethereum, поскольку его реализация в виртуальной машине приведет к чрезвычайно дорогостоящим комиссионным сборам при вызове контрактов.

Раздутая предварительная компиляция

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

Что, если бы мы могли определить новую спецификацию и набор инструкций, которые не требуют предварительной компиляции этих сложных программ, а вместо этого эффективно достигают желаемых результатов с помощью базовых инструкций? Именно здесь в игру вступает WASM.

2.4 Сравнение EVM и WASM VM

  • Скорость: WASM стремится обеспечить более высокую скорость выполнения по сравнению с EVM. EVM может иметь проблемы с эффективностью при компиляции и выполнении смарт-контрактов, в то время как WASM повышает скорость загрузки и возможности обработки за счет прямого преобразования в скомпилированный код.
  • Предварительно скомпилированные контракты: EVM полагается на предварительно скомпилированные контракты для эффективного выполнения криптографических вычислений, но это может привести к риску жестких форков. WASM устраняет необходимость в предварительно скомпилированных контрактах, позволяя разработчикам создавать эффективные и быстрые смарт-контракты.
  • Затраты на транзакции: С более быстрой виртуальной машиной WASM пропускная способность транзакций значительно возрастает, что приводит к снижению затрат на развертывание контрактов и транзакций. Контракты WASM решают проблемы высоких комиссий за транзакции и перегруженности сети Ethereum.
  • Гибкость и совместимость: WASM расширяет спектр языков, доступных для разработки смарт-контрактов, поддерживая использование любого языка высокого уровня, который компилируется в WASM, например, Rust, C++ и JavaScript. Это означает, что разработчики могут писать смарт-контракты на предпочтительном для них языке, включая такие зрелые фреймворки, как ink! for Rust или Ask! for AssemblyScript.

Команда EWASM в настоящее время интегрирует WebAssembly в Ethereum, чтобы обеспечить более эффективный и упрощенный уровень выполнения, что делает Ethereum подходящей для использования в качестве полностью децентрализованной вычислительной платформы. WASM был принят в качестве стандарта многими другими проектами, включая Dfinity и EOS, которые используют его для улучшения своих слоев исполнения.

2.5 Стилус(Arbitrum)

Проект Stylus - это инициатива в сети Arbitrum Ethereum Layer 2, направленная на повышение производительности выполнения смарт-контрактов за счет внедрения виртуальной машины WebAssembly (WASM). Контракты могут выполняться быстрее, чем при использовании Solidity, при этом снижаются затраты на газ. Это облегчает создание высокопроизводительных смарт-контрактов в сети Arbitrum и в настоящее время поддерживает компиляцию на языках C, C++ и Rust.

Поддержка пользовательских прекомпиляций: Stylus также поддерживает пользовательские прекомпиляции, что позволяет разработчикам развертывать свои собственные прекомпиляции Rust или C++ в сети Arbitrum. Это может помочь внедрить новые криптографические алгоритмы или другие специфические функциональные возможности на цепочке, не дожидаясь обновлений на цепочке. Например, тензорные вычисления могут быть предварительно скомпилированы, чтобы снизить стоимость вычислений, что может быть полезно для машинного обучения на цепочке.

Совместимость с EVM: Stylus достигает интеграции с существующей экосистемой Ethereum благодаря совместимости с виртуальной машиной Ethereum (EVM). Это означает, что контракты Stylus могут взаимодействовать с существующими контрактами EVM и разделять то же глобальное состояние, что и EVM.

Реентерабельность: В отличие от Cosmos Wasm, Stylus Rust SDK вводит функцию реентерабельности и позволяет разработчикам включать ее вручную. Это позволяет контрактам более гибко взаимодействовать друг с другом, но разработчикам необходимо тщательно управлять состоянием, чтобы обеспечить безопасность.

Основываясь на процветающей экосистеме Arbitrum, интеграция Stylus - это, пожалуй, самая значимая интеграция WASM. Это также повышает конкурентоспособность Arbitrum среди полей zkRollup.

2.6 Передача(Polkadot)

Протокол Gear создает технологию, которая может быть развернута как Polkadot parachain, служащий инструментом для размещения смарт-контрактов. Подобно Polkadot, Gear также использует фреймворк Substrate, который упрощает процесс создания различных блокчейнов для конкретных приложений. Substrate обеспечивает функциональность "из коробки", позволяя людям сосредоточиться на создании собственных движков поверх протокола.

Раньше стоимость запуска блокчейна была высокой, но Gear позволяет разработчикам dApp сосредоточиться на своих проектах вместо того, чтобы создавать и эксплуатировать весь блокчейн с нуля.

Основным двигателем протокола Gear является модуль смарт-контрактов. В случае с Gear любой смарт-контракт - это программа на WebAssembly, скомпилированная на разных языках, таких как Rust, C и C++. Для разработчиков, не принадлежащих к миру криптовалют, барьер для входа в систему невысок, поскольку они могут создавать смарт-контракты в привычной среде. Разработчикам проще экспериментировать с языками программирования смарт-контрактов.

Архитектура смарт-контрактов Gear использует модель Actor Model под капотом и обеспечивает следующие функциональные возможности:

  • Постоянная память для неизменяемых программ
  • Асинхронная обработка сообщений
  • Минимальная, интуитивно понятная и достаточная поверхность API для контекста блокчейна
  • Модель акторного коммуникационного прокси между компонентами цепочки для повышения композитности и совместимости с параллельным выполнением кода и шардингом.

Каждая программа имеет фиксированный объем памяти, который Gear позволяет контролировать. Программа может читать и писать только в своей собственной памяти и не может получить доступ к пространству памяти других программ. Каждая программа имеет свое независимое пространство в памяти, а информация на узлах Gear может обрабатываться параллельно.

2.7 CosmWasm(Cosmos)

CosmWasm - это современная и мощная платформа смарт-контрактов на основе Wasm, которая легко интегрируется с Cosmos-SDK. Это демонстрирует одно из главных преимуществ CosmWasm: контракты, написанные с помощью CosmWasm, тесно интегрированы с IBC (межблокчейн-коммуникациями), что позволяет разработчикам и пользователям войти в многоцепочечное будущее. В настоящее время поддерживается только Rust.

Преимущества CosmWasm

  1. Безопасность: Повышение безопасности смарт-контрактов с помощью языка программирования Rust
  2. Межцепочечная совместимость: Поддерживает протокол IBC (Inter-Blockchain Communication) в экосистеме Cosmos.
  3. Производительность: Демонстрирует более высокую эффективность и более низкие затраты на транзакции в некоторых случаях по сравнению с традиционной виртуальной машиной Ethereum (EVM).
  4. Удобство для разработчиков: Функции безопасности типов и памяти языка Rust помогают уменьшить количество ошибок в смарт-контрактах определенного типа.

Проблемы и ограничения

  1. Кривая обучения: Rust может иметь более сложную кривую обучения по сравнению с более распространенными языками смарт-контрактов, такими как Solidity. Чтобы увеличить потенциал для широкого распространения, CosmWasm должен поддерживать компиляцию на большем количестве языков.
  2. Экосистема и инструментарий: Несмотря на рост, инструменты разработки и экосистема для CosmWasm все еще могут быть относительно ограниченными по сравнению со зрелыми платформами смарт-контрактов, такими как Ethereum.
  3. Доля рынка и осведомленность: В области платформ для смарт-контрактов CosmWasm может иметь более низкую осведомленность по сравнению с такими платформами, как Ethereum и Binance Smart Chain, что влияет на его способность привлекать разработчиков и пользователей.
  4. Проблемы с обслуживанием и обновлением: Несмотря на то, что CosmWasm предоставляет функцию обновления контрактов, обслуживание и управление обновлениями смарт-контрактов по-прежнему остается сложной задачей, требующей тщательного подхода, чтобы избежать уязвимостей в системе безопасности.
  5. Проблемы совместимости: Проекты, привыкшие к EVM или другим средам смарт-контрактов, могут столкнуться с проблемами совместимости при переходе на CosmWasm.

2.8 ZK-WASM

Помимо виртуальной машины wasm, существует также недавно появившаяся технология под названием ZKWASM. Изобретатель, компания Delphinus Labs, разместила код ZK-WASM в открытом доступе на GitHub. ZKWASM позволяет разработчикам проверять правильность выполненных вычислений, не выполняя их повторно. Используя ZKWASM, разработчики могут гибко создавать приложения с доказательством нулевого знания (ZKP), используя различные языки программирования. Эти приложения могут легко выполняться в веб-браузерах.

ZKWASM происходит от ZKSNARK, который представляет собой комбинацию SNARG и доказательств с нулевым знанием. Давайте объясним это дальше. Как правило, чтобы использовать ZKSNARK, Вам нужно написать программу на языке арифметических схем или на языке, дружественном к схемам, таком как Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates и т.д. Это создает барьер для существующих программ, затрудняя им использование возможностей ЗКСНАРК. Однако есть и другой способ, который заключается в том, чтобы использовать ЗКСНАРК не на уровне исходного кода, а на уровне байткода виртуальной машины, а затем реализовать виртуальную машину, поддерживающую ЗКСНАРК. Компания Delphinus Labs применила последний подход, включив всю виртуальную машину WASM в схему ZKSNARK. В результате существующие приложения WASM могут работать непосредственно на ZKWASM без каких-либо модификаций. Поэтому поставщики облачных услуг могут доказать любому пользователю, что результаты вычислений вычислены честно и не разглашают никакой частной информации.

ZKWASM предоставляет различные варианты использования, например, возможность проверки операций, выполняемых в браузере, на цепочке. Она позволяет осуществлять взаимодействие через Интернет, которое может быть проверено на блокчейне. Другие варианты использования включают оракловые сервисы, вычисления вне цепи, автоматизацию, преодоление разрыва между Web2 и Web3, генерацию доказательств для машинного обучения и обработки данных, и даже игровые и социальные приложения. С ростом числа пользователей zkWASM расширяет возможности Web3 и интегрирует разработчиков Web2 в этот трансформирующийся ландшафт.

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

3. Заключение

Производительность Web и будущее слоя исполнения платформы смарт-контрактов многообещающи. dApps не только будут иметь более высокую производительность, но интеграция WASM также облегчит разработку смарт-контрактов для тех, кто знаком с основными языками, такими как Rust и Go, без необходимости изучать тонкости solidity или других языков разработки блокчейна. По данным Evans Data Corporation, в мире насчитывается около 27 миллионов разработчиков, и это число неуклонно растет, ожидается, что к 2024 году оно увеличится до 28,7 миллионов. Однако количество разработчиков в области блокчейна все еще меньше 30 000, составляя лишь около одной тысячной от общего числа разработчиков. Хотя это число неуклонно растет, изучение новых языков смарт-контрактов все еще может быть препятствием для разработчиков, желающих войти в индустрию блокчейн.

Но все больше и больше блокчейнов начинают поддерживать Web Assembly в качестве байткода для скомпилированных смарт-контрактов. WASM привносит в блокчейн эффективность, совместимость и широкий спектр вариантов использования. Он также служит ключом, отпирающим дверь для разработчиков, снижая барьер для входа в разработку блокчейна. Только представьте, что в ближайшем будущем, когда разработчики Web 2.0 захотят попробовать свои силы в разработке блокчейна, они смогут использовать такие знакомые языки, как Python, C++ и JavaScript, для создания масштабных приложений на блокчейне, максимально повышая ценность децентрализованных сетей. Сначала снижайте барьер для создателей (разработчиков), затем снижайте барьер для пользователей и двигайтесь к массовому внедрению.

4. Указатель

https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21

https://wiki.polkadot.network/docs/learn-wasm

https://docs.arbitrum.io/stylus/stylus-gentle-introduction

https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c

https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8

https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf

https://github.com/DelphinusLab/zkWasm

Спасибо Мэгги и Синью Цзи (CMU) за их советы и рекомендации по работе над этой статьей.

Отказ от ответственности: Все статьи от Foresight Ventures не предназначены для инвестиционных консультаций. Инвестиции связаны с риском, поэтому, пожалуйста, оцените свою собственную толерантность к риску и принимайте инвестиционные решения с осторожностью.

Отказ от ответственности:

  1. Эта статья перепечатана из[Foresight Research]. Все авторские права принадлежат автору[Mike@ Foresight Ventures]. Если у Вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с командой Gate Learn, и они незамедлительно рассмотрят их.
  2. Предупреждение об ответственности: Мнения и взгляды, выраженные в этой статье, принадлежат исключительно автору и не являются инвестиционным советом.
  3. Перевод статьи на другие языки осуществляется командой Gate Learn. Если не указано, копирование, распространение или плагиат переведенных статей запрещены.
Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500
Tạo tài khoản