June 19, 2022

zCloak Network: Технический Обзор

zCloak Network предоставляет доказательство с нулевым разглашением как услугу на основе сети Polkadot. Это позволяет использовать новую парадигму вычислений под названием Cloaking Space, которая обеспечивает частную и масштабируемую вычислительную среду для Web 3.0

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

STF (текущее состояние, входные данные) -> новое состояние

Обратите внимание, что STF может быть реализован либо как логика в цепочке (on-chain logic), например, для передачи токенов, либо как определяемая пользователем логика (user defined logic), смарт-контракт, работающий на виртуальной машине.

Чтобы изменить состояние, нужно отправить некоторые входные данные в виде транзакции в сеть блокчейна. Эта транзакция будет проверена группой майнеров (PoW) или валидаторов (PoS), чтобы определить ее действительность. Они делают это, повторно выполняя STF, используя данные, введенные пользователем, и сравнивая результаты друг с другом. Если большинство из них придут к соглашению — то есть к консенсусу — состояние цепочки будет изменено, и транзакция будет постоянно храниться в блокчейне. Таким образом, любой новичок может самостоятельно генерировать текущее состояние блокчейна, повторно выполняя все транзакции.


Проблема с повторным выполнением Метод повторного выполнения широко используется практически всеми крупными публичными блокчейн-проектами. Кажется, это самый простой способ воссоздать мировое состояние блокчейна и проверить действительность транзакции, отправленной пользователем. Однако этот метод имеет ряд серьезных недостатков.

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

2) Масштабируемость. Пропускная способность сети блокчейна обычно измеряется количеством транзакций в секунду (TPS). Среднее значение TPS для Биткойна составляет 5, а для Эфириума — 15, что намного меньше, чем требуется в основных коммерческих приложениях. Частично это связано с накладными расходами на вычисления, вызванными повторным выполнением каждой транзакции в каждом узле. Если время, необходимое для проверки каждой транзакции, сократится, общая вычислительная мощность сети значительно улучшится.

3) Ограничение вычислений. В последние годы приложения DeFi переживают бум в Ethereum по одной причине причине — смарт-контракт Ethereum в основном подходит для обработки простой логики/вычислений из-за ограничения газа. Если кто-то попытается выполнить сложные научные вычисления в смарт-контракте, плата за газ резко возрастет. Не говоря уже о повторном выполнении этого вычисления на каждом узле. Это определенно ограничивает функциональность смарт-контракта в блокчейне. Для многих реальных случаев использования и более сложных вычислений необходимо найти способ обойти это ограничение.

4) Взрыв управления. Поскольку повторное выполнение — единственный способ восстановить состояние цепочки, история транзакций блокчейна должна храниться полностью на всех узлах. Для такой медленной цепочки, как Ethereum, для узла майнера уже требуется хранилище в сотни GB. Для быстрого, такого как Solana, требуется несколько PB хранилища для годовой истории транзакций. Постепенно владельцы небольших узлов будут вынуждены покинуть сеть, поскольку они просто не могут позволить себе стоимость хранилища. Таким образом, крупные игроки получат контроль над сетью, и в результате децентрализация пострадает. Таким образом, жизненно важно дать людям возможность присоединиться к сети без чрезмерных затрат на оборудование.

Наше решение: проверка вместо повторного выполнения
Все вышеупомянутые проблемы возникают из-за модели повторного выполнения, используемой в общедоступных блокчейнах. Если бы только был способ проверить достоверность (целостность) вычисления без повторного выполнения!

Введите доказательство с нулевым разглашением (ZKP).

ZKP — это криптографическая технология с двумя интересными свойствами — нулевым разглашением и краткостью. С одной стороны, вы можете использовать его, чтобы доказать, что знаете секрет, не раскрывая никаких сведений об этом секрете. С другой стороны, вы можете убедиться, что большое и сложное вычисление выполнено правильно — так называемая вычислительная целостность — с незначительной долей усилий, необходимых для фактического выполнения вычислений. Если вы посмотрите на функцию, которую мы дали в начале этой статьи, это означает, что мы можем доказать целостность выполнения STF, не раскрывая входные данные или вычислительный процесс. Мы также можем выполнять длинные и сложные вычисления вне сети и оставлять в сети только краткое доказательство, чтобы люди могли проверить его целостность. Таким образом, проблемы модели повторного исполнения могут быть легко решены.

О доказательстве с нулевым разглашением
На сегодняшний день существует две разновидности ZKP — zk-SNARK и zk-STARK. В этой статье мы не будем вдаваться в их технические детали, но StarkWare дал очень хорошее резюме. В целом известно, что zk-STARK дает следующие преимущества перед zk-SNARK.

1) zk-STARK имеет гораздо более высокую эффективность для генерации доказательств и проверки по сравнению с zk-SNARK.

2) zk-STARK использует криптографические примитивы, такие как устойчивый к коллизиям хеш, вместо дискретного логарифма и эллиптических кривых, используемых в zk-SNARK. Таким образом, известно, что STARK устойчив к грядущим квантовым компьютерам, а SNARK — нет.

3) zk-STARK прозрачен в том смысле, что ему не нужна доверенная установка, как того требует большинство zk-SNARK. Это хорошая новость для децентрализации и повышения безопасности.

Но у zk-STARK есть один недостаток по сравнению с zk-SNARK — размер доказательства STARK (20–200 КБ в зависимости от сложности вычислений) обычно больше, чем доказательство SNARK (около 1 КБ). Это делает менее удобным хранение доказательства STARK непосредственно в блокчейне. Но в zCloak Network мы все равно не храним доказательство STARK в блокчейне — подробнее об этом в статье об архитектуре zCloak Network — так что это ограничение не влияет на наш проект. Таким образом, у нас остались все хорошие части zk-STARK.

Используя zk-STARK, мы можем сгенерировать ZKP для выполнения STF. Вместо повторного выполнения третьи стороны могут просто выполнить контрольную проверку, чтобы проверить целостность наших вычислений STF. Этот метод проверки повторного выполнения является высокоэффективным и масштабируемым. Он также может скрывать входные данные STF, тем самым сохраняя конфиденциальность пользователя.

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

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

Плохая новость заключается в том, что в этом процессе ваши личные данные могут быть раскрыты, использованы не по назначению или проданы без вашего согласия или даже без вашего ведома. Это случалось раньше и до сих пор происходит каждый день. Поэтому мы не можем не спросить: могут ли люди использовать свои данные для вычислений/анализа/прогонки моделей, не отправляя их третьим сторонам? В идеале мы хотим, чтобы наши данные хранились и обрабатывались в среде, невидимой для посторонних — например, в невидимых пространствах, например - Cloaking Space.

Ответ — да, используя подход проверки ZKP, который мы обсуждали выше. В Cloaking Space вы контролируете свои собственные данные и можете выполнять все виды вычислений, не отправляя свои данные. Обратите внимание, что данные, хранящиеся в Cloaking Space, — это не просто какие-то произвольные данные на вашем устройстве, они подтверждены какой-то заслуживающей доверия сетью/организацией, чтобы гарантировать их подлинность. Тип вычислений может варьироваться от обычного STF блокчейна, проверки вашего дохода для банковского кредита до изучения ваших черт лица для прохождения контрольно-пропускного пункта в аэропорту. В дополнение к проверке ваших данных на соответствие определенным критериям, вычисление также проверяет действительность ваших подтверждений данных.

Обратите внимание, что в Cloaking Space мы работаем в направлении, противоположном большим данным и облачным вычислениям — мы включаем самостоятельные данные и скрытые вычисления. Суть в том, что ваши данные больше никогда не должны покидать вас. И вся информация, которая открывается внешнему миру, это 1) результат ваших вычислений и 2) ZKP, свидетельствующий о целостности ваших вычислений.

Идея Cloaking Space для самостоятельных данных пользователя и скрытых вычислений нова и полезна, но реальная реализация не так проста. В частности, необходимо учитывать сложность создания ZKP для вычислений общего назначения. В пространстве ZKP хорошо известен тот факт, что вам необходимо создать схему проверки (для SNARK) или AIR (алгебраическое промежуточное представление для STARK) для каждого из ваших алгоритмов. В нашем случае это означает, что AIR должен быть написан для каждого отдельного типа вычислений, которые пользователи хотят выполнять. Без сомнения, это трудоемкий процесс, требующий профессиональной степени понимания теории ZKP и связанных с ней математических инструментов. Если бы только был способ автоматизировать этот процесс для обычных разработчиков приложений!

Чтобы решить эту проблему, мы приняли виртуальную машину zk-STARK под названием Distaff VM в сети zCloak. Преимущество виртуальной машины заключается в том, что мы можем использовать один AIR для проверки полного набора инструкций, избегая проблем с написанием AIR для каждого вычисления, которое пользователь хочет выполнить. В этом Distaff VM похож на виртуальную машину Cairo, разработанную StarkWare. Для любой программы, выполняемой на виртуальной машине Distaff, генерируется STARK-доказательство выполнения. Затем это доказательство может быть использовано кем угодно для проверки правильности выполнения программы, не зная входных данных программы или даже самой программы. Таким образом, разработчик приложения может сосредоточиться на своей бизнес-логике, вместо того, чтобы беспокоиться о написании доказательства STARK для своего алгоритма.

zCloak Network
Сеть zCloak построит необходимую инфраструктуру, связанную с ZKP, для Cloaking Space Основные компоненты включают в себя приложение/расширение кошелька, блокчейн на основе субстрата и сеть мотивированных поставщиков услуг ZKP.

1) Кошелек zCloak. Концепция Cloaking Space будет реализована в виде мобильного приложения и расширения для браузера. Пользователи будут хранить свои личные данные как самостоятельные данные в кошельке. Программы для всех видов приложений могут быть импортированы в кошелек, а скрытые вычисления могут выполняться с помощью генератора доказательств Distaff VM в кошельке. Вычисление завершится результатом и ZKP, который можно безопасно отправить внешним сторонам в обмен на услуги.

Например, вы можете импортировать в свой кошелек программу от банка для получения кредита. Вы вводите свои личные данные в программу, и результат будет сгенерирован вместе с доказательством. Вы отправляете этот результат и подтверждение обратно в банк, после чего они узнают, имеете ли вы право на получение кредита и сколько вы должны получить. В течение всего этого процесса ваши данные никогда не покидают вас, поэтому не беспокойтесь об утечке конфиденциальной информации. Обратите внимание, что принимающая сторона может быть просто смарт-контрактом, а не реальным банком. С помощью этого подхода можно разблокировать множество интересных приложений DeFi. Чтобы гарантировать подлинность входных данных, мы будем хранить пользовательские данные в виде подтвержденных учетных данных или агрегировать данные непосредственно из других блокчейнов. Мы тесно сотрудничаем с нашими партнерами по экосистеме, такими как KILT Protocol и Litentry, над самостоятельными данными в приложении кошелька.

2) Блокчейн zCloak. Блокчейн zCloak построен с помощью фреймворке Substrate. Он может легко взаимодействовать с другими парачейнами в сети Polkadot/Kusama. Основные функции блокчейна zCloak включают в себя координацию работы поставщиков услуг ZKP, оплату платы за услуги ZKP, настройку смарт-контрактов для реагирования на результаты пользовательских вычислений, управление сетью и работу в качестве порта для других парачейнов в Polkadot/Kusama. или другие общедоступные блокчейны, такие как Ethereum, BSC и Solana и т. д.

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

3) Сервисная сеть ZKP. Вокруг блокчейна zCloak будет организована децентрализованная сервисная сеть для хранения и проверки ZKP.

Как упоминалось выше, размер доказательства STARK больше по сравнению с доказательством SNARK — не настолько эффективен, чтобы хранить его непосредственно в блокчейне. Поскольку доказательство STARK в основном состоит из хэшей, его можно использовать только для проверки целостности вычислений и оно не выдает никакой значимой пользовательской информации. Таким образом, пользователи могут хранить доказательство STARK в общедоступном децентрализованном хранилище, таком как сеть IPFS, и ссылаться на это доказательство с его CID в блокчейне zCloak. zCloak Network предоставит базовую инфраструктуру IPFS для хранения пользовательских доказательств STARK. Кроме того, для этой цели можно использовать существующие общедоступные службы IPFS, такие как Arweave или Crust.

На самом деле принимающая сторона доказательства STARK может не иметь необходимых инструментов для независимой проверки доказательства STARK. В таких случаях группа узлов проверки доказательств STARK будет стимулирована для предоставления услуги проверки доказательств пользователям сети zCloak. Когда пользователь пытается что-то доказать принимающей стороне, проверяющие доказательства извлекают доказательство из общедоступной сети IPFS, проверяют достоверность пользовательского доказательства и отмечают свои результаты в блокчейне zCloak. Принимающая сторона сможет судить о достоверности пользовательского доказательства на основе его CID и флагов, заданных сетью верификатора. Будет принят механизм стейкинга/слэшинга, чтобы убедиться, что верификаторы выполняют свою работу по проверке честно и правильно.

Таким образом, zCloak Network предоставит все необходимые строительные блоки для реализации концепции Cloaking Space — для создания нового типа блокчейна, частного и масштабируемого, на базе виртуальной машины zk-STARK для Web 3.0.