Zero-Knowledge EXEcution(ZEXE)и примеры его использования
Вспомним, что такое ZEXE
ZEXE — это система на базе реестра, которая позволяет пользователям выполнять произвольные вычисления в офлайн-режиме и создавать транзакции, подтверждающие корректность этих вычислений с использованием доказательств с нулевым разглашением. Подход ZEXE нацелен не только на обеспечение приватности данных (скрытие всех пользовательских данных), но и на приватность функций, что означает невозможность (для наблюдателя) различить функции, выполняемые в офлайн-режиме, друг от друга. Приватные офлайн-вычисления могут представлять собой переходы состояний различных приложений (например, токены, рынки, выборы и т. д.), все из которых работают на основе одного и того же реестра.
Примеры использования ZEXE
Давайте рассмотрим некоторые примеры использования ZEXE, начиная с создания системы на базе децентрализованных приватных вычислений (DPC). Для этого нам необходимо определить правила данной системы, включая определение предикатов создания и уничтожения активов, а также описание ожидаемого содержимого полезной нагрузки записи. Таким образом, система определяется содержимым записей.
Пользовательские активы
В качестве первого примера рассмотрим формат транзакции, где имеется ровно две входящие и две исходящие записи. Для записи, представляющей монету пользовательского актива, создается предикат создания, названный “Mint or Conserve” (MoC). Он работает в двух режимах: режиме чеканки, где предикат создает начальное предложение актива и уникальный идентификатор актива, и режиме сохранения, проверяя, что для всех записей в данной транзакции с одинаковым идентификатором актива сохраняется их значение (подобно системе Zerocash, сумма значений входящих записей равна сумме значений исходящих записей).
Приватные DEX
Теперь, когда мы можем создавать активы, определенные пользователем, как мы можем их обменивать? Мы будем использовать децентрализованную биржу (DEX), приложение на базе реестра, которое позволяет торговать цифровыми активами. Для реализации приватной DEX, помимо предиката создания MoC, мы определяем предикат уничтожения “Exchange-or-Cancel” (EoC). В режиме обмена EoC позволяет потреблять запись, обменивая ее на некоторое количество другого актива A2. В режиме отмены EoC позволяет отменить обмен, отправив токены на указанный адрес apk (обратно владельцу).
DEX на основе намерений
В DEX на основе намерений существует индексная таблица(так называемый стакан заявок), где мейкеры публикуют свои намерения торговать (например, 5 единиц актива A1 за 10 единиц актива A2). Заинтересованный тейкер может связаться с мейкером, согласовать условия и сформировать транзакцию.
- Мейкер публикует намерение торговать 5 единицами A1 за 10 единиц A2.
- Тейкер связывается с мейкером для согласования условий торговли, создает запись с 10 единицами A2 и предикатом уничтожения EoC, который указывает, что запись может быть потрачена только при обмене на 5 единиц A1, и отправляет ее мейкеру со всей необходимой информацией для погашения записи.
- Теперь мейкер может создать транзакцию обмена с предикатом EoC в режиме обмена или отменить обмен с предикатом EoC в режиме отмены.
Поскольку предикаты и содержимое записей скрыты под доказательством с нулевым разглашением, никакая приватная информация не раскрывается. Отметим, что мейкер не обязан создавать транзакцию сразу, и до момента фактического обмена цены токенов могут измениться (например, 5 единиц A1 были эквивалентны 10 единицам A2, когда тейкер создал запись, но позже 5 единиц A1 стали эквивалентны только 5 единицам A2), таким образом обмен становится более выгодным для одной из сторон и, наоборот, менее выгодным для другой.
DEX на основе заказов
В DEX на основе заказов мейкеры публикуют записи вместе с информацией, необходимой для их погашения, заранее в книге ордеров. В DEX с открытой книгой ордеров тейкер выбирает ордер из книги ордеров, в то время как в DEX с закрытой книгой ордеров тейкер сопоставляется с дарителем вне цепочки оператором книги ордеров.
DEX с открытой книгой ордеров
- Если мейкер хочет обменять 5 единиц A1 на 10 единиц A2, он создает запись с 5 единицами A1, предикатом уничтожения EoC, который указывает, что запись может быть потрачена только при обмене на 10 единиц A2, и публикует ее в книге ордеров вместе с необходимой информацией для погашения записи.
- Тейкер может создать транзакцию обмена с предикатом уничтожения EoC в режиме обмена или отменить обмен с предикатом EoC в режиме отмены. Поскольку предикаты и содержимое записей скрыты под доказательством с нулевым разглашением, никакая приватная информация не раскрывается, но поскольку транзакция раскрывает серийный номер записи, он может быть связан с ордером (серийный номер является частью данных, необходимых для погашения записи), что раскрывает обмениваемые активы и их количество.
DEX с закрытой книгой ордеров
Если мейкер хочет обменять 5 единиц A1 на 10 единиц A2, он создает запись с 5 единицами A1, предикатом уничтожения EoC, который указывает, что запись может быть потрачена только при обмене на 10 единиц A2, и отправляет ее в книгу ордеров вместе с необходимой информацией для погашения записи.
- Теперь тейкер публикует запись с 10 единицами A2 и предикатом уничтожения EoC, который указывает, что запись может быть потрачена только при обмене на 5 единиц A1, и отправляет ее в книгу ордеров вместе с необходимой информацией для погашения записи.
- Оператор книги ордеров создает транзакцию, которая потребляет соответствующие записи. Поскольку ордера не публикуются, количество и активы раскрываются только оператору книги ордеров.
Заключительные мысли
С добавлением приватности функций к свойству приватности данных, ZEXE позволяет использовать один и тот же реестр для множества приложений таким образом, что транзакции одного приложения неотличимы от транзакций другого приложения, что усиливает гарантии анонимности для обоих. Введенный дизайн позволяет приложениям естественным образом взаимодействовать друг с другом, программировать условия в предикатах создания и уничтожения. Использование кратких доказательств с нулевым разглашением позволяет системе быть эффективной, а опция делегирования снижает системные требования, расширяя набор устройств, способных участвовать в системе.