
Автор: Kernel Ventures Turbo Guo
Рецензенти: 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, наприклад, гаманці можуть використовувати співпроцесор ZK для виконання перевірки особи поза мережею. Співпроцесор також може дозволити іграм у ланцюжку виконувати більш складні обчислення та зменшувати кількість газу, необхідного для управління DAO. чекати.
Шаблон співпроцесора ZK не визначено, але порівняно з користувачами, які пишуть власні схеми, зручніше використовувати проект як інтерфейс для виклику позаланцюжкових ресурсів. Але які постачальники обчислювальних послуг (традиційні постачальники хмар, традиційні постачальники хмар, і т. д.) пов’язані за проектом «інтерфейс»?
1. Значення та застосування ЗК співпроцесора

Джерело зображення: Kernel Ventures
Суть співпроцесора ZK полягає в тому, щоб перенести обчислення в ланцюжку за межі ланцюга та використовувати ZK для підтвердження надійності процесу розрахунку поза ланцюгом, дозволяючи смарт-контрактам легко обробляти великі обсяги обчислень і водночас дозволяючи контракти для перевірки достовірності розрахунків. Це схоже на ідею zkRollup, але Rollup — це рівень протоколу ланцюга, який використовує обчислювальні ресурси поза ланцюгом, тоді як співпроцесор ZK — це програма dApp, яка використовує ресурси поза ланцюгом.
RISC Zero використовується тут для пояснення реалізації співпроцесора ZK, але існує багато реалізацій співпроцесорів 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 отримує запит і ініціює обчислення поза ланцюжком. Після завершення обчислення Bonsai повертає результат обчислення та підтвердження функції зворотного виклику в EVM. Якщо доказ успішно перевірено, буде виконано обмін.
Однак процес обміну не виконується одразу в різних транзакціях, тобто статус пулу може змінитися після того, як запит буде завершено. Оскільки перевірка базується на стані пулу на момент надсилання запиту. Якщо статус пулу змінюється під час очікування запиту, перевірка не вдасться.
Щоб вирішити цю проблему, розробники створили замок басейну. Коли користувач ініціює запит, усі операції, окрім розрахункового свопу, блокуються, доки зовнішній ланцюжок успішно не запустить своп у ланцюзі або час очікування свопу не закінчиться (цей час буде попередньо встановлено). Якщо є обмеження за часом, навіть якщо є проблема з реле або zkp, пул не буде заблоковано назавжди. Конкретний ліміт часу може становити кілька хвилин.
zkUniswap має особливий дизайн для MEV, тобто розробники хочуть, щоб протокол фіксував значення MEV. Теоретично, zkAMMs також мають MEV, тому що перша особа, яка надіслала транзакцію, може її заблокувати, тож усі все одно змагатимуться за газ, а будівельники також можуть сортувати запитані транзакції. Але zkUniswap сам з’їсть дохід від MEV, використовуючи голландський аукціон зі змінною процентною ставкою (VRGDA).
zkUniswap виносить замок на аукціон за зниженою ціною, протокол дізнається, що попит на даний момент високий, і тоді він автоматично збільшить ціну, якщо швидкість продажу замка сповільниться. протокол знизить ціну. Це стане новим джерелом доходу. Рівнозначно, угода передбачає нову річ для визначення порядку транзакцій, і гроші від конкурентоспроможної ціни безпосередньо передаються стороні проекту через нову річ. Це дуже образно.
2.2 AMM - zkOracle як співпроцесор
На додаток до використання zkVM, деякі люди запропонували використовувати zkOracle для реалізації використання обчислювальних ресурсів поза мережею, а zkOracle є оракулом, який враховує як вхідні, так і вихідні дані. Зазвичай існує два типи оракулів: один — це вхідний оракул, а інший — вихідний оракул. Вхідний оракул сортує (обчислює) дані поза ланцюгом і поміщає їх у ланцюжок, а вихідний оракул сортує (обчислює) дані. дані в ланцюжку), а потім надаються в ланцюг. Оракул вводу/виводу (zkOracle) спочатку виконує вихід, а потім введення, дозволяючи ланцюжку використовувати позаланцюгові обчислювальні ресурси.
З одного боку, zkOracle використовує on-chain дані як джерело даних, з іншого боку, він використовує ZK, щоб гарантувати, що обчислення вузла oracle не є шахрайським і можуть реалізувати функцію співпроцесора. Таким чином, основні обчислення AMM можна розмістити в zkOracle. Реалізуючи традиційні функції AMM, zkOracle також можна використовувати для реалізації більш складних і ресурсозатратних операцій.

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

Джерело зображення: Гаманець Bonfire
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 та інші програми
Крім того, співпроцесори ZK можна використовувати для онлайн-ігор і управління DAO. RISC Zero вважає, що будь-які розрахунки, які вимагають понад 250 тис. газу, будуть дешевшими за допомогою співпроцесора ZK, але як це буде визначено, ще належить побачити. Управління DAO також може використовувати співпроцесор ZK, оскільки він включає кілька людей і кілька контрактів, що споживає обчислювальні ресурси. RISC Zero стверджує, що плата за газ може бути зменшена на 50% після використання Bonsai. ZKML, по суті, є ідеєю ZK співпроцесора, тому Modulus Labs і Giza також є проектами в цій галузі, але концепція ZK співпроцесора ширша.
Крім того, є деякі допоміжні проекти в області співпроцесорів ZK, такі як ezkl, який надає компілятори для створення схем ZK, набори інструментів для розгортання ZK, інструменти для переміщення обчислень у ланцюжку поза ланцюгом тощо.
4. Майбутні перспективи
Співпроцесор дозволяє додаткам у ланцюжку мати зовнішні обчислювальні ресурси, такі як «хмара», що забезпечує відносно дешеві великі обсяги обчислень, тоді як у ланцюжку обробляються лише необхідні обчислення. У реальних ситуаціях zkVM також може працювати в хмарі, це, по суті, архітектура, спосіб розміщення обчислень поза мережею, і немає обмежень щодо того, хто надає обчислювальні ресурси поза мережею.
По суті, обчислювальними ресурсами поза мережею користуються традиційні великі виробники, навіть децентралізовані обчислювальні ресурси та локальні пристрої. Кожен з цих трьох напрямків є різним. Традиційні великі виробники можуть надати відносно зрілі обчислювальні рішення в майбутньому. Однак багато проектів співпроцесорів ZK наразі вибирають надання послуг на стадії закритого вихідного коду, оскільки вхідний і низхідний канали ще не сформовані, а послуги не можуть бути вдосконалені та передані іншим проектам майбутнє:
Існує велика кількість проектів, які змагаються за кожен аспект співпроцесора ZK
Більшу частину ринку займає проект з хорошим досвідом обслуговування
З точки зору розробника, вони можуть використовувати лише один «інтерфейсний» проект при використанні співпроцесора ZK. Ось чому Amazon Cloud займає велику частину ринку, і розробники звикнуть до одного методу розгортання. Але як проект «інтерфейсу» для обчислювальних ресурсів поза ланцюгом, які постачальники обчислювальних послуг (традиційні хмарні постачальники, децентралізований спільний доступ до ресурсів) пов’язані за ним, є ще одним питанням, яке заслуговує на обговорення.
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