
Автор: Kernel Ventures Turbo Guo
Редактор(и): Kernel Ventures Роуз, Kernel Ventures Менді, Kernel Ventures Джошуа
TLDR: Співпроцесор ZK — це рішення для dApps для використання обчислювальних ресурсів поза мережею. У цій статті розглядаються існуючі рішення, різні застосування та майбутній розвиток співпроцесорів. Основні теми, які розглядаються, такі:
ZkVM від RISC Zero — це рішення співпроцесора ZK, яке дозволяє контрактам on-chain, які викликають zkVM поза ланцюгом, запускати певний код Rust і повертати результати в ланцюг, водночас надаючи zkp для перевірки правильності обчислень у ланцюзі.
Існують різні рішення для співпроцесорів ZK. Крім zkVM, користувачі також можуть писати індивідуальні схеми ZK для своїх програм або використовувати готові фреймворки для написання схем, таким чином дозволяючи контрактам використовувати обчислювальні ресурси поза мережею.
Співпроцесор ZK може відігравати важливу роль у DeFi, наприклад, розвантажувати обчислення AMM поза ланцюгом, щоб фіксувати значення, подібне до MEV, або забезпечувати складну та інтенсивну логіку для AMM. Співпроцесор ZK також може полегшити обчислення процентної ставки в режимі реального часу для протоколів кредитування, роблячи розрахунки маржі прозорими, серед іншого. zkAMM має два підходи до реалізації: один використовує zkVM, а інший — zkOracle.
Співпроцесор ZK також має інші потенційні випадки використання, наприклад гаманці, які використовують його для перевірки ідентифікації поза мережею. Це може забезпечити більш складні обчислення для онлайн-ігор і зменшити газ, необхідний для управління DAO, серед інших програм.
Ландшафт для співпроцесорів ZK все ще залишається невизначеним, але порівняно з користувачами, які пишуть власні схеми, використання рішення для інтерфейсу ресурсів поза мережею є більш зручним для користувача. Однак питання про те, які постачальники обчислювальних послуг інтегровані за це «інтерфейсне» рішення, будь то традиційні хмарні постачальники чи децентралізовані мережі спільного використання ресурсів, є ще однією важливою темою для обговорення.
1. Призначення та застосування співпроцесорів ZK

Джерело: Kernel Ventures
Суть співпроцесора ZK полягає в тому, щоб перенести обчислення в ланцюжку за межі ланцюга, використовуючи ZK-докази для забезпечення надійності обчислень поза ланцюгом, дозволяючи смарт-контрактам легко обробляти великий обсяг обчислень, одночасно перевіряючи надійність обчислень. Це схоже на ідею zkRollups, але Rollups використовують сторонні обчислювальні ресурси на рівні протоколу ланцюжка, тоді як співпроцесори ZK використовуються dApps для використання ресурсів поза мережею.
Використовуючи RISC Zero як приклад для пояснення одного рішення співпроцесорів ZK, RISC Zero розробив архітектуру співпроцесора Bonsai ZK, ядром якої є zkVM RISC Zero. Розробники можуть генерувати zkp на zkVM для «коректного виконання певного коду Rust». У zkVM конкретний процес впровадження ZK співпроцесора:
Розробники надсилають запит до контракту ретрансляції Bonsai, тобто на запуск необхідної програми розробника в zkVM.
Контракт ретрансляції надсилає запит до пулу запитів поза мережею.
Bonsai виконує запит у zkVM поза мережею, виконує масштабні обчислення, а потім генерує квитанцію.
Ці докази, також відомі як «квитанції», Bonsai публікує назад у ланцюжок через договір ретрансляції.

Джерело: RISC Zero
У Bonsai перевірена програма називається гостьовою програмою, а квитанція використовується для підтвердження того, що гостьову програму було виконано правильно. Квитанція містить журнал і печатку. Зокрема, журнал містить загальнодоступний вихід програми zkVM, тоді як печатка використовується для підтвердження дійсності квитанції, тобто для підтвердження того, що гостьову програму було виконано правильно. Сама печатка є zkSTARK, згенерованим прувером. Перевірка квитанції гарантує, що журнал створено з використанням правильної схеми тощо.
Bonsai спрощує для розробників процес компіляції коду Rust у байт-код zkVM, завантаження програм, виконання їх у віртуальній машині та отримання зворотного зв’язку, дозволяючи розробникам більше зосереджуватися на логічному дизайні. Це дає змогу не лише частковій логіці контракту, але й усій логіці контракту працювати поза мережею. RISC Zero також використовує продовження, розбиваючи створення великого доказу на менші частини, уможливлюючи створення доказу для великих програм без споживання зайвої пам’яті. Окрім RISC Zero, існують інші проекти, такі як IronMill, =nil; Foundation і Marlin, які пропонують подібні загальні рішення.
2. Застосування ZK співпроцесорів в DeFi
2.1 AMM - Bonsai як співпроцесор
zkUniswap — це AMM, який використовує обчислювальні ресурси поза мережею. Його основною функцією є розвантаження частини обчислень свопу поза ланцюгом за допомогою Bonsai. Користувачі ініціюють запит обміну в ланцюжку. Контракт ретрансляції Bonsai отримує запит, ініціює обчислення поза ланцюгом і після завершення повертає результат обчислення та підтвердження до функції зворотного виклику EVM. Якщо доказ успішно перевірено, виконується обмін.
Однак обмін не завершується за один раз. Процеси запиту та виконання знаходяться в різних транзакціях, що несе певні ризики. Тобто між поданням запиту і завершенням свопу стан пулу може змінитися. Оскільки перевірка базується на стані пулу на момент подання запиту, якщо запит все ще очікує на розгляд, а стан пулу змінюється, перевірка буде недійсною. Це важливий момент при проектуванні та безпеці таких систем.
Щоб вирішити цю проблему, розробники створили замок басейну. Коли користувач ініціює запит, усі операції, окрім врегулювання свопу, тимчасово блокуються, доки обчислення поза мережею успішно не запустять своп у ланцюжку або час очікування свопу не закінчиться (ліміт часу буде встановлено заздалегідь). З обмеженням часу, навіть якщо є проблеми з реле або zkp, пул не буде заблоковано на невизначений термін. Конкретний ліміт часу може становити кілька хвилин.
zkUniswap має унікальний дизайн для захоплення MEV, оскільки розробники прагнуть отримати переваги протоколу від MEV. Теоретично, zkAMM також мають MEV, оскільки перша особа, яка подає своп, може заблокувати його та випередити інших, що призведе до газових війн, а будівельники все ще можуть визначати пріоритетність послідовності транзакцій. Однак zkUniswap отримує прибуток від MEV за допомогою методу, відомого як поступовий голландський аукціон зі змінною ставкою (VRGDA). Цей підхід дозволяє zkUniswap отримувати значення MEV для протоколу.
Концепція zkUniswap досить цікава. Це передбачає зниження ціни заблокованих активів на аукціоні, і якщо заблоковані активи швидко продаються, протокол розпізнає високий попит і автоматично підвищує ціну. Якщо продаж заблокованих активів сповільнюється, протокол знижує ціну. Цей інноваційний підхід потенційно може стати новим джерелом доходу. По суті, протокол запроваджує унікальний механізм пріоритетності транзакцій, і конкуренція за ціноутворення приносить користь проекту безпосередньо через цей механізм.
2.2 AMM - zkOracle як співпроцесор
Окрім використання zkVM, деякі запропонували використовувати zkOracle для використання позаланцюжкових обчислювальних ресурсів, варто зазначити, що zkOracle є оракулом введення/виведення (введення та виведення), який обробляє як введення, так і вихід. Загалом існує два типи оракулів: один є оракулом введення, а інший – оракулом виводу. Вхідний оракул обробляє (обчислює) дані поза ланцюгом і розміщує їх у ланцюзі, тоді як вихідний оракул обробляє (обчислює) дані в ланцюзі та надає їх поза ланцюгом. Оракул вводу/виводу (zkOracle) спочатку виконує вихід, а потім введення, дозволяючи ланцюжку використовувати обчислювальні ресурси поза ланцюгом.
З одного боку, zkOracle використовує дані в ланцюжку як джерело даних, а з іншого боку, він використовує ZK, щоб гарантувати, що обчислення вузлів Oracle є чесними, таким чином досягаючи функції співпроцесора. Таким чином, основні обчислення AMM можна розмістити в zkOracle, забезпечуючи традиційну функціональність AMM, а також забезпечуючи більш складні та інтенсивні операції за допомогою zkOracle.

Джерело: github fewwwww/zkAMM
2.3 Розрахунок кредитної ставки, розрахунок маржі та інші програми
За винятком методу реалізації, з додаванням співпроцесорів ZK можна досягти багатьох функціональних можливостей. Наприклад, протоколи кредитування можуть коригувати процентні ставки відповідно до параметрів у реальному часі замість попередньо визначених умов. Наприклад, підвищення процентної ставки для залучення пропозиції, коли попит на запозичення великий, і зниження процентної ставки, коли попит зменшується. Це вимагає, щоб протокол кредитування отримував велику кількість даних у ланцюжку в режимі реального часу, попередньо обробляв дані та обчислював параметри поза ланцюгом (за винятком випадків, коли вартість у ланцюзі надзвичайно низька).
Складні обчислення, такі як визначення маржинальних залишків, нереалізованих прибутків/збитків тощо, також можуть використовувати для виконання співпроцесори. Перевага використання співпроцесорів полягає в тому, що вони роблять ці програми більш прозорими та доступними для перевірки. Логіка маржинального механізму більше не є секретною чорною скринькою. Незважаючи на те, що обчислення проводяться поза мережею, користувачі можуть повністю довіряти правильності їх виконання. Цей підхід також застосовний до розрахунків опціонів.
3. Інші області застосування співпроцесорів ZK
3.1 Гаманець - використання Bonsai як співпроцесора
Гаманець Bonfire використовує zkVM, щоб розвантажити обчислення перевірки особи поза мережею. Мета цього гаманця — дозволити користувачам створювати гаманці, використовуючи біометричну інформацію (відбитки пальців) або зашифрований апаратний ключ yubikey. Зокрема, Bonfire Wallet використовує WebAuthn, загальний стандарт веб-автентифікації, щоб дозволити користувачам завершувати веб-підтвердження особи безпосередньо за допомогою пристроїв без пароля. Тож у Bonfire Wallet користувачі генерують відкритий ключ за допомогою WebAuthn (не в мережі, а для WebAuthn), а потім використовують його для створення гаманця. Кожен гаманець Burner має контракт у ланцюжку, який містить відкритий ключ WebAuthn. Договір має підтвердити підпис користувача WebAuthn. Але ці обчислення є великими, тому Bonsai використовується для розвантаження цих обчислень поза ланцюгом через гостьову програму zkVM для перевірки підпису поза ланцюгом і створення zkp для перевірки в ланцюжку.

Джерело: Bonfire Wallet
3.2 Отримання даних у мережі – схеми ZK, написані користувачами
Axiom — це програма, яка не використовує zkVM, але використовує інше рішення співпроцесора. Давайте спочатку познайомимося з метою Axiom. Він використовує співпроцесори ZK, щоб надати контрактам доступ до історичної інформації в ланцюжку. Насправді дозволити контрактам читати історичні дані досить складно, оскільки розумні контракти зазвичай отримують дані в ланцюжку в реальному часі, що може бути дуже дорогим. Контрактам важко отримати доступ до цінних даних у ланцюжку, таких як історичні залишки на рахунках або записи транзакцій.

Джерело: демонстрація Axiom
Вузли Axiom отримують доступ до необхідних даних у ланцюзі та виконують вказані обчислення поза ланцюгом, а потім генерують підтвердження з нульовим знанням для обчислення, доводячи, що результат правильно обчислено на основі дійсних даних у ланцюзі. Цей доказ перевіряється в ланцюжку, що гарантує, що контракт може довіряти цьому результату.
Щоб створити zkp для обчислень поза ланцюгом, необхідно скомпілювати програми в схеми ZK. Раніше ми також згадували використання для цього zkVM, але Axiom припустила, що для цього існує багато рішень, і необхідно збалансувати продуктивність, гнучкість і досвід розробки:
Налаштовані схеми: якщо розробники налаштовують схеми для своїх програм, продуктивність, безумовно, буде найкращою, але для розробки потрібен час;
eDSL/DSL: розробники все ще пишуть свої схеми, але є деякі додаткові фреймворки, які допомагають розробникам вирішити проблеми, пов’язані з zk, таким чином збалансовуючи продуктивність і досвід розробки.
zkVM: розробники безпосередньо запускають ZK на існуючій віртуальній машині, що дуже зручно, але Axiom вважає це неефективним.
Тому Axiom вибрала другий варіант і надає користувачам набір оптимізованих модулів ZK, що дозволяє їм створювати власні схеми.
Проекти, подібні до Axiom, включають Herodotus, який має на меті стати проміжним програмним забезпеченням для обміну повідомленнями між мережами. Оскільки обробка інформації відбувається поза ланцюгом, доцільно дозволити різним ланцюгам отримувати оброблені дані. Інший проект, Space and Time, використовує подібну архітектуру для реалізації індексації даних.
3.3 Ігри в мережі, управління DAO та інші програми
На додаток до вищезазначеного, ігри в ланцюжку, управління DAO також можуть використовувати співпроцесори ZK. RISC Zero вважає, що будь-які обчислення, які вимагають понад 250 тис. газу, були б дешевшими за допомогою співпроцесора ZK, але як це обчислюється, ще належить дослідити далі. Управління DAO також може використовувати співпроцесори ZK, оскільки в ньому беруть участь кілька людей і кілька контрактів, що вимагає великих обчислень. RISC Zero стверджує, що використання Bonsai може зменшити плату за газ на 50%. Багато проектів ZKML, такі як Modulus Labs і Giza, використовують те саме рішення, що й співпроцесори ZK, але концепція співпроцесорів ZK є ширшою.
Варто зазначити, що існують деякі допоміжні проекти в галузі співпроцесорів ZK, наприклад ezkl, який надає компілятори для схем ZK, набори інструментів для розгортання ZK та інструменти для розвантаження обчислень у ланцюзі поза ланцюгом.
4. Перспективи на майбутнє
Співпроцесори забезпечують додатки в ланцюжку зовнішніми обчислювальними ресурсами, подібними до «хмари», пропонуючи економічно ефективні обчислення з великою кількістю обчислень, тоді як обробка в ланцюжку зосереджується на основних обчисленнях. На практиці zkVM також може працювати в хмарі. По суті, співпроцесори ZK — це архітектурний підхід, який переносить обчислення в ланцюжку за межі ланцюга з необмеженим джерелом обчислювальних ресурсів поза ланцюгом.
По суті, обчислювальні ресурси поза мережею можуть надаватися традиційними хмарними провайдерами, навіть децентралізованим спільним використанням обчислювальних ресурсів і локальними пристроями. Кожен з цих трьох напрямків має свої особливості. Традиційні хмарні провайдери можуть надати відносно зрілі рішення для автономних обчислень, «надійність» майбутніх децентралізованих обчислювальних ресурсів може бути сильнішою, а локальні обчислення також мають великий потенціал. Але наразі багато проектів співпроцесорів ZK знаходяться на стадії постачальників послуг із закритим вихідним кодом, оскільки екосистема для цих послуг не повністю сформована, а спеціалізація послуг між різними проектами ще належить визначити. Два можливі сценарії майбутнього:
Кожна частина співпроцесора ZK має велику кількість проектів, які конкурують між собою.
Один проект із відмінним досвідом обслуговування може домінувати на ринку.
З точки зору розробника, під час використання співпроцесорів ZK вони можуть взаємодіяти лише з одним проектом «інтерфейсу». Це схоже на причину, чому Amazon Web Services займає значну частку ринку, оскільки розробники, як правило, звикають до певного методу розгортання. Однак питання про те, які постачальники обчислювальних послуг (традиційні хмарні компанії, децентралізований спільний доступ до ресурсів) інтегровані в цей проект «інтерфейсу» обчислювальних ресурсів поза мережею, є іншою темою, яку варто обговорити.
Kernel Ventures — це крипто-венчурний фонд, який керується дослідницькою спільнотою та розробниками, який має понад 70 інвестицій на ранній стадії, зосереджуючись на інфраструктурі, проміжному програмному забезпеченні, dApps, особливо ZK, Rollup, DEX, модульному блокчейні та вертикалях, які залучать наступний мільярд користувачів у криптовалюту такі як абстракція облікового запису, доступність даних, масштабованість тощо. Протягом останніх семи років ми взяли на себе зобов’язання підтримувати зростання основних спільнот розробників та університетських блокчейн-асоціацій у всьому світі.
ДОВІДКА:
Посібник із співпроцесорів ZK для масштабованості: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability
Визначення zkOracle для Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131
zkUniswap: перший у своєму роді zkAMM: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839
Що таке співпроцесор ZK?:https://blog.axiom.xyz/what-is-a-zk-coprocessor/
Короткий вступ до співпроцесорів: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA
Найновіші програми, створені на основі Hyper Oracle (бонус: речі, які ви можете створити зараз): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ
Гаманець Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp