Foresight Ventures: WASM – двигун нової ери

Початківець1/1/2024, 2:25:51 AM
У цій статті розглядаються деякі зв’язки та випадки використання між Wasm і блокчейном: смарт-контракти, міжланцюгові взаємодії, позаланцюгові обчислення та конфіденційність даних.
https://gimg.gateimg.com/learn/1b10a30083ba3b1f1efbcb447852753755509867.jpg

TL; DR

WebAssembly (Wasm) — це портативний, високопродуктивний формат бінарних інструкцій, який можна запускати у веб-браузерах. Він розроблений як універсальна мета компіляції, яку можна використовувати з кількома мовами програмування та запускати на різних платформах.

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

Існує кілька взаємозв'язків і сценаріїв застосування між Wasm і блокчейном:

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

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

1. Що таке веб-складання?

WebAssembly — це ефективний і легкий стандарт набору інструкцій, розроблений Консорціумом всесвітньої павутини (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 потрібно скомпілювати лише один раз для миттєвого виконання підключи та відтвори.

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

Краса WASM полягає в його здатності працювати будь-де без необхідності завантажувати чи встановлювати, оскільки він у двійковому форматі. Лише одним клацанням миші веб-програми можна запускати негайно, коли це необхідно. Це навіть безпечніше, ніж безпосереднє завантаження та запуск бінарних файлів, оскільки браузери мають вбудовані механізми безпеки, які запобігають заподіянню шкоди системі виконаним кодом. Крім того, ділитися веб-додатками просто – посилання можна розміщувати будь-де у вигляді рядків, які можна натиснути.

2. Навіщо нам потрібна веб-складання?

2.1 Web2

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

Спочатку JavaScript був простою мовою сценаріїв, спрямованою на надання інтерактивності легким гіпертекстовим документам у веб-додатках. Його дизайн був легким для вивчення та написання, і він не надавав пріоритету швидкості виконання. Протягом багатьох років значні покращення продуктивності аналізу JavaScript у браузерах призвели до значного підвищення продуктивності.

Завдяки прискореній швидкості виконання JavaScript спектр речей, які можна робити в браузерах, значно розширився. Нові API запровадили такі функції, як інтерактивна графіка, потокове відео, офлайн-перегляд тощо. Крім того, все більше додатків, які раніше були обмежені настільними середовищами, увійшли в Інтернет. Тепер ви можете легко редагувати документи та надсилати електронні листи у своєму браузері. Однак у деяких областях продуктивність 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

ВАСМ В.М

У 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! для Rust або Ask! для AssemblyScript.

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

2.5 Стилус(Арбітрум)

Проект 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 Gear(Polkadot)

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

Раніше вартість запуску блокчейну була високою, але Gear дозволяє розробникам dApp зосередитися на своїх проектах замість того, щоб будувати та керувати цілим блокчейном з нуля.

Основним двигуном протоколу Gear є модуль смарт-контрактів. У випадку Gear будь-який смарт-контракт — це програма WebAssembly, скомпільована різними мовами, такими як Rust, C і C++. Для розробників з-за меж криптосвіту бар’єр входу низький, оскільки вони можуть створювати смарт-контракти у звичному середовищі. Розробникам легше експериментувати з мовами програмування смарт-контрактів.

Архітектура смарт-контракту Gear використовує модель актора під капотом і забезпечує такі функції:

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

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

2.7 CosmWasm(Космос)

CosmWasm — це сучасна та потужна платформа смарт-контрактів на основі Wasm, яку можна легко інтегрувати з Cosmos-SDK. Це демонструє одну з головних переваг CosmWasm: контракти, написані за допомогою CosmWasm, тісно інтегровані з IBC (Inter-Blockchain Communication), що дозволяє розробникам і користувачам увійти в багатоланцюгове майбутнє. Наразі підтримується лише 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 ЗК-ВАСМ

Окрім віртуальної машини wasm, нещодавно з’явилася технологія під назвою ZKWASM. Винахідник, Delphinus Labs, розмістив код для ZK-WASM на GitHub. ZKWASM дозволяє розробникам перевіряти правильність виконаних обчислень без їх повторного виконання. Використовуючи ZKWASM, розробники можуть гнучко створювати додатки з нульовим знанням (ZKP), використовуючи різні мови програмування. Ці програми можуть безперешкодно працювати у веб-браузерах.

ZKWASM походить від ZKSNARK, який є комбінацією SNARG і доказів нульового знання. Давайте пояснимо це далі. Як правило, щоб використовувати ZKSNARK, вам потрібно написати програму на мові арифметичних схем або на дружній до схеми мові, як-от Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates тощо. Це створює перешкоду для існуючих програм, що ускладнює для них використання можливостей ZKSNARK. Однак є інший спосіб, який полягає в тому, щоб використовувати ZKSNARK не на рівні вихідного коду, а на рівні байт-коду віртуальної машини, а потім реалізувати віртуальну машину, яка підтримує ZKSNARK. Delphinus Labs застосувала останній підхід, включивши всю віртуальну машину WASM у схему ZKSNARK. У результаті існуючі програми WASM можуть працювати безпосередньо на ZKWASM без будь-яких змін. Тому постачальники хмарних послуг можуть довести будь-якому користувачеві, що результати обчислень обчислюються чесно, і не розголошуватимуть жодної приватної інформації.

ZKWASM надає різні варіанти використання, наприклад, увімкнення перевірки в ланцюжку операцій, які виконуються в браузері. Це дозволяє здійснювати веб-взаємодії, які можна перевірити на блокчейні. Інші випадки використання включають служби Oracle, обчислення поза ланцюгом, автоматизацію, подолання розриву між Web2 і Web3, створення доказів для машинного навчання та обробки даних і навіть ігрові та соціальні програми. Зі збільшенням впровадження zkWASM розширює можливості Web3 та інтегрує розробників Web2 у цей трансформаційний ландшафт.

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

3. Висновок

Продуктивність Інтернету та майбутнє рівня виконання платформи смарт-контрактів є багатообіцяючими. Мало того, що 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. Якщо не зазначено вище, копіювання, розповсюдження або плагіат перекладених статей заборонено.

Foresight Ventures: WASM – двигун нової ери

Початківець1/1/2024, 2:25:51 AM
У цій статті розглядаються деякі зв’язки та випадки використання між Wasm і блокчейном: смарт-контракти, міжланцюгові взаємодії, позаланцюгові обчислення та конфіденційність даних.

TL; DR

WebAssembly (Wasm) — це портативний, високопродуктивний формат бінарних інструкцій, який можна запускати у веб-браузерах. Він розроблений як універсальна мета компіляції, яку можна використовувати з кількома мовами програмування та запускати на різних платформах.

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

Існує кілька взаємозв'язків і сценаріїв застосування між Wasm і блокчейном:

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

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

1. Що таке веб-складання?

WebAssembly — це ефективний і легкий стандарт набору інструкцій, розроблений Консорціумом всесвітньої павутини (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 потрібно скомпілювати лише один раз для миттєвого виконання підключи та відтвори.

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

Краса WASM полягає в його здатності працювати будь-де без необхідності завантажувати чи встановлювати, оскільки він у двійковому форматі. Лише одним клацанням миші веб-програми можна запускати негайно, коли це необхідно. Це навіть безпечніше, ніж безпосереднє завантаження та запуск бінарних файлів, оскільки браузери мають вбудовані механізми безпеки, які запобігають заподіянню шкоди системі виконаним кодом. Крім того, ділитися веб-додатками просто – посилання можна розміщувати будь-де у вигляді рядків, які можна натиснути.

2. Навіщо нам потрібна веб-складання?

2.1 Web2

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

Спочатку JavaScript був простою мовою сценаріїв, спрямованою на надання інтерактивності легким гіпертекстовим документам у веб-додатках. Його дизайн був легким для вивчення та написання, і він не надавав пріоритету швидкості виконання. Протягом багатьох років значні покращення продуктивності аналізу JavaScript у браузерах призвели до значного підвищення продуктивності.

Завдяки прискореній швидкості виконання JavaScript спектр речей, які можна робити в браузерах, значно розширився. Нові API запровадили такі функції, як інтерактивна графіка, потокове відео, офлайн-перегляд тощо. Крім того, все більше додатків, які раніше були обмежені настільними середовищами, увійшли в Інтернет. Тепер ви можете легко редагувати документи та надсилати електронні листи у своєму браузері. Однак у деяких областях продуктивність 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

ВАСМ В.М

У 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! для Rust або Ask! для AssemblyScript.

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

2.5 Стилус(Арбітрум)

Проект 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 Gear(Polkadot)

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

Раніше вартість запуску блокчейну була високою, але Gear дозволяє розробникам dApp зосередитися на своїх проектах замість того, щоб будувати та керувати цілим блокчейном з нуля.

Основним двигуном протоколу Gear є модуль смарт-контрактів. У випадку Gear будь-який смарт-контракт — це програма WebAssembly, скомпільована різними мовами, такими як Rust, C і C++. Для розробників з-за меж криптосвіту бар’єр входу низький, оскільки вони можуть створювати смарт-контракти у звичному середовищі. Розробникам легше експериментувати з мовами програмування смарт-контрактів.

Архітектура смарт-контракту Gear використовує модель актора під капотом і забезпечує такі функції:

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

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

2.7 CosmWasm(Космос)

CosmWasm — це сучасна та потужна платформа смарт-контрактів на основі Wasm, яку можна легко інтегрувати з Cosmos-SDK. Це демонструє одну з головних переваг CosmWasm: контракти, написані за допомогою CosmWasm, тісно інтегровані з IBC (Inter-Blockchain Communication), що дозволяє розробникам і користувачам увійти в багатоланцюгове майбутнє. Наразі підтримується лише 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 ЗК-ВАСМ

Окрім віртуальної машини wasm, нещодавно з’явилася технологія під назвою ZKWASM. Винахідник, Delphinus Labs, розмістив код для ZK-WASM на GitHub. ZKWASM дозволяє розробникам перевіряти правильність виконаних обчислень без їх повторного виконання. Використовуючи ZKWASM, розробники можуть гнучко створювати додатки з нульовим знанням (ZKP), використовуючи різні мови програмування. Ці програми можуть безперешкодно працювати у веб-браузерах.

ZKWASM походить від ZKSNARK, який є комбінацією SNARG і доказів нульового знання. Давайте пояснимо це далі. Як правило, щоб використовувати ZKSNARK, вам потрібно написати програму на мові арифметичних схем або на дружній до схеми мові, як-от Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates тощо. Це створює перешкоду для існуючих програм, що ускладнює для них використання можливостей ZKSNARK. Однак є інший спосіб, який полягає в тому, щоб використовувати ZKSNARK не на рівні вихідного коду, а на рівні байт-коду віртуальної машини, а потім реалізувати віртуальну машину, яка підтримує ZKSNARK. Delphinus Labs застосувала останній підхід, включивши всю віртуальну машину WASM у схему ZKSNARK. У результаті існуючі програми WASM можуть працювати безпосередньо на ZKWASM без будь-яких змін. Тому постачальники хмарних послуг можуть довести будь-якому користувачеві, що результати обчислень обчислюються чесно, і не розголошуватимуть жодної приватної інформації.

ZKWASM надає різні варіанти використання, наприклад, увімкнення перевірки в ланцюжку операцій, які виконуються в браузері. Це дозволяє здійснювати веб-взаємодії, які можна перевірити на блокчейні. Інші випадки використання включають служби Oracle, обчислення поза ланцюгом, автоматизацію, подолання розриву між Web2 і Web3, створення доказів для машинного навчання та обробки даних і навіть ігрові та соціальні програми. Зі збільшенням впровадження zkWASM розширює можливості Web3 та інтегрує розробників Web2 у цей трансформаційний ландшафт.

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

3. Висновок

Продуктивність Інтернету та майбутнє рівня виконання платформи смарт-контрактів є багатообіцяючими. Мало того, що 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. Якщо не зазначено вище, копіювання, розповсюдження або плагіат перекладених статей заборонено.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!