Автор: Kernel Ventures Turbo Guo

Редакторы: Kernel Ventures Роуз, Kernel Ventures Мэнди, Kernel Ventures Джошуа

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

  1. ZkVM RISC Zero — это сопроцессорное решение ZK, которое позволяет заключать контракты внутри цепочки, которые вызывают zkVM вне цепочки, для запуска определенного кода Rust и возврата результатов в цепочку, одновременно предоставляя zkp для проверки правильности вычислений внутри цепочки.

  2. Существуют разные решения для сопроцессоров ZK. Помимо zkVM, пользователи также могут писать индивидуальные схемы ZK для своих программ или использовать готовые платформы для написания схем, тем самым позволяя контрактам использовать вычислительные ресурсы вне цепочки.

  3. Сопроцессор ZK может играть роль в DeFi, например, разгружать вычисления AMM вне цепочки для получения ценности, аналогичной MEV, или обеспечивать сложную и трудоемкую логику для AMM. Сопроцессор ZK также может облегчить расчет процентных ставок в режиме реального времени для протоколов кредитования, делая, среди прочего, прозрачными расчеты маржи. zkAMM имеет два подхода к реализации: один с использованием zkVM, а другой с использованием zkOracle.

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

  5. Ситуация с сопроцессорами 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:

  1. Разработчики отправляют запрос на релейный контракт Бонсай, т. е. на запуск необходимой разработчику программы в zkVM.

  2. Контракт ретрансляции отправляет запрос в пул запросов вне цепочки.

  3. Bonsai выполняет запрос в zkVM вне цепочки, выполняет крупномасштабные вычисления, а затем генерирует квитанцию.

  4. Эти доказательства, также известные как «квитанции», отправляются Bonsai обратно в сеть посредством ретрансляционного контракта.

Источник: RISC Zero.

В бонсай проверенная программа называется гостевой программой, и квитанция используется для подтверждения того, что гостевая программа была выполнена правильно. Квитанция включает в себя журнал и печать. В частности, в журнале хранятся общедоступные выходные данные приложения zkVM, а печать используется для подтверждения действительности квитанции, т. е. для подтверждения того, что гостевая программа была выполнена правильно. Сама печать представляет собой zkSTARK, созданный проверяющим. Проверка поступления гарантирует, что журнал построен с использованием правильной схемы и т. д.

Bonsai упрощает для разработчиков процесс компиляции кода Rust в байт-код zkVM, загрузки программ, их выполнения на виртуальной машине и получения подтверждающих отзывов, что позволяет разработчикам больше сосредоточиться на логическом проектировании. Это позволяет не только частичной логике контракта, но и всей логике контракта работать вне цепочки. RISC Zero также использует продолжения, разбивая создание большого доказательства на более мелкие части, что позволяет создавать доказательства для больших программ без чрезмерного потребления памяти. Помимо RISC Zero, существуют и другие проекты, такие как IronMill, =nil; Foundation и Marlin, которые предоставляют схожие общие решения.

2. Применение сопроцессоров ZK в DeFi

2.1 АММ – Бонсай как сопроцессор

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 для обеспечения честности вычислений узлов оракула, тем самым достигая функции сопроцессора. Таким образом, основные вычисления AMM можно разместить в zkOracle, что позволяет использовать традиционные функции AMM, а также выполнять более сложные и трудоемкие операции с использованием zkOracle.

Источник: github несколькоwwww/zkAMM.

2.3 Расчет кредитной ставки, расчет маржи и другие приложения

Если оставить в стороне метод реализации, то с добавлением сопроцессоров ZK можно достичь многих функциональных возможностей. Например, протоколы кредитования могут корректировать процентные ставки в соответствии с параметрами реального времени, а не с заранее определенными условиями. Например, повышение процентной ставки для привлечения предложения, когда спрос на заимствования высок, и снижение процентной ставки, когда спрос снижается. Это требует, чтобы протокол кредитования получал большой объем данных в цепочке в режиме реального времени, предварительно обрабатывал данные и рассчитывал параметры вне цепочки (если только стоимость ончейна не является чрезвычайно низкой).

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

3. Другие применения сопроцессоров ZK.

3.1 Кошелек – использование Bonsai в качестве сопроцессора

Bonfire Wallet использует zkVM для разгрузки вычислений по проверке личности вне сети. Цель этого кошелька — позволить пользователям создавать одноразовые кошельки с использованием биометрической информации (отпечатков пальцев) или зашифрованного аппаратного юбикея. В частности, Bonfire Wallet использует WebAuthn, общий стандарт веб-аутентификации, позволяющий пользователям выполнять веб-проверку личности непосредственно на устройствах без пароля. Таким образом, в Bonfire Wallet пользователи генерируют открытый ключ с помощью WebAuthn (не внутри цепочки, а для WebAuthn), а затем используют его для создания кошелька. Каждый кошелек Burner имеет внутрисетевой контракт, который содержит открытый ключ WebAuthn. Контракту необходимо проверить подпись пользователя WebAuthn. Но эти вычисления большие, поэтому Bonsai используется для разгрузки этих вычислений вне цепочки через гостевую программу zkVM для проверки подписи вне цепочки и создания zkp для проверки внутри цепочки.

Источник: Костер-кошелек

3.2 Получение данных внутри цепочки — схемы ZK, написанные пользователями

Axiom — это приложение, которое не использует zkVM, но использует другое решение сопроцессора. Давайте сначала представим, что стремится сделать Axiom. Он использует сопроцессоры ZK, чтобы предоставить контрактам доступ к исторической информации в цепочке. На самом деле, разрешить контрактам читать исторические данные довольно сложно, поскольку смарт-контракты обычно получают данные в реальном времени по цепочке, что может быть очень дорого. Контрактам сложно получить доступ к ценным данным в цепочке, таким как исторические балансы счетов или записи транзакций.

Источник: демо-версия Axiom.

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

Чтобы сгенерировать zkp для вычислений вне цепочки, необходимо скомпилировать программы в схемы ZK. Ранее мы также упоминали об использовании для этого zkVM, но Axiom предположила, что для этого существует множество решений и необходимо сбалансировать производительность, гибкость и опыт разработки:

  1. Индивидуальные схемы: если разработчики настраивают схемы для своих программ, производительность определенно будет лучшей, но на разработку потребуется время;

  2. eDSL/DSL: разработчики по-прежнему пишут свои схемы, но существуют некоторые дополнительные платформы, которые помогают разработчикам решать проблемы, связанные с zk, таким образом балансируя производительность и опыт разработки.

  3. zkVM: разработчики запускают ZK напрямую на существующей виртуальной машине, что очень удобно, но Axiom считает это неэффективным.

Поэтому компания Axiom выбрала второй вариант и предоставляет пользователям набор оптимизированных модулей ZK, позволяющих проектировать собственные схемы.

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

3.3 Онлайн-игры, управление DAO и другие приложения

В дополнение к вышеперечисленному, в сетевых играх управление DAO также может использовать сопроцессоры ZK. RISC Zero считает, что любые вычисления, требующие более 250 тыс. газа, будут дешевле с использованием сопроцессора ZK, но то, как это рассчитывается, еще предстоит изучить. Управление DAO также может использовать сопроцессоры ZK, поскольку оно требует участия нескольких людей и нескольких контрактов, что требует очень больших вычислительных ресурсов. RISC Zero утверждает, что использование бонсай может снизить плату за газ на 50%. Многие проекты ZKML, такие как Modulus Labs и Giza, используют то же решение, что и сопроцессоры ZK, но концепция сопроцессоров ZK шире.

Стоит отметить, что существует несколько вспомогательных проектов в области сопроцессоров ZK, таких как ezkl, который предоставляет компиляторы для схем ZK, наборы инструментов для развертывания ZK и инструменты для разгрузки вычислений внутри цепочки вне цепочки.

4. Перспективы на будущее

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

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

  1. Каждая часть сопроцессора ZK имеет большое количество конкурирующих друг с другом проектов.

  2. Один проект с отличным опытом обслуживания может доминировать на рынке.

С точки зрения разработчика, при использовании сопроцессоров ZK они могут взаимодействовать только с одним проектом «интерфейса». Это похоже на причину, по которой Amazon Web Services занимает значительную долю рынка: разработчики, как правило, привыкают к определенному методу развертывания. Однако вопрос о том, какие поставщики вычислительных услуг (традиционные облачные компании, децентрализованное совместное использование ресурсов) интегрированы в этот проект «интерфейса» оффчейн вычислительных ресурсов, является еще одной темой, заслуживающей обсуждения.

Kernel Ventures — это криптовалютный венчурный фонд, управляемый сообществом исследователей и разработчиков, с более чем 70 инвестициями на ранних стадиях, фокусирующийся на инфраструктуре, промежуточном программном обеспечении, dApps, особенно ZK, Rollup, DEX, Modular Blockchain и вертикалях, которые привлекут следующий миллиард пользователей в криптовалюту. такие как абстракция учетных записей, доступность данных, масштабируемость и т. д. В течение последних семи лет мы взяли на себя обязательство поддерживать рост основных сообществ разработчиков и университетских ассоциаций блокчейна по всему миру.

ССЫЛКА:

  1. Руководство по сопроцессорам ZK для масштабируемости: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability.

  2. Определение zkOracle для Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131

  3. zkUniswap: первый в своем роде zkAMM: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. Что такое сопроцессор ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. Краткое введение в сопроцессоры: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. Новейшие приложения, основанные на Hyper Oracle (бонус: вещи, которые вы можете создать прямо сейчас): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ

  7. Кошелек Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp