НовостиКриптовалюты[[alloc] init] представила предложение Shielded Bitcoin для приватных транзакций в Bitcoin

[[alloc] init] представила предложение Shielded Bitcoin для приватных транзакций в Bitcoin

Автор: Bitcoin Magazine·

Ключевые выводы

  • •Whitepaper Shielded Bitcoin Клары Шихельман, Миши Комарова и Алексея Москвина из [[alloc] init] описывает метапротокол приватности, не требующий операторов, софтфорков или изменений консенсуса Bitcoin.
  • •Правила протокола обеспечивают индексеры Shielded Bitcoin, а данные транзакций встраиваются в Bitcoin через OP_RETURN или поле witness, поэтому основная цепочка воспринимает их как обычные данные.
  • •Доказательства с нулевым разглашением и набор nullifier предотвращают двойную трат и эмиссию, не раскрывая, какие именно ноты потрачены, что позволяет индексерам отклонять повторяющиеся nullifier вместо ведения набора потраченных нот.
  • •Приватность решения оценивается как сопоставимая с shielded-пулами Zcash, и, в отличие от coinjoin, оно не требует периодического перемешивания или измерения приватности.
  • •Запланированный пег использует witness-шифрование PIPEs v2 для перемещения средств без операторов и федераций; готовящиеся публикации определят механизм пегов и приватность входа/выхода.
[[alloc] init] представила предложение Shielded Bitcoin для приватных транзакций в Bitcoin

Исследователи [[alloc] init] — Клара Шихельман, Миша Комаров и Алексей Москвин — представили Shielded Bitcoin, whitepaper, описывающий новый метапротокол приватности, построенный на базовом уровне Bitcoin. Конструкция позволяет совершать shielded-транзакции Bitcoin без операторов, софтфорков или каких-либо других изменений консенсуса Bitcoin. Доступны whitepaper и сопутствующее объявление в блоге, а команда поделилась новостью в X.

Протокол определяет транзакционную структуру и протокол индексации для транзакций с сильной защитой приватности, опираясь на Bitcoin PIPEs для ввода и вывода средств из системы. Механизм PIPEs подробно рассматривается в конце статьи.

Свойство отсутствия изменений консенсуса имеет значение: реестр Bitcoin фиксирует суммы и адреса в открытом виде, а изменения его правил исторически требовали широкой координации всей сети. Решение, полностью работающее в рамках существующего набора правил, не зависит от этого процесса для своего развития.

Архитектура в духе Bitcoin с совершенно иными деталями

Архитектура намеренно зеркально повторяет структуру самого Bitcoin. Существует эквивалент UTXO, называемый нотой (note). Транзакции потребляют ноты как входы, подобно тому как обычная транзакция Bitcoin тратит UTXO. Свидетельство (witness) доказывает, что потреблённые входы должным образом авторизованы, а узлы — индексеры в случае метапротокола — разбирают историю транзакций и строят актуальное состояние того, какие монеты потрачены, а какие нет.

Однако каждая внутренняя деталь существенно отличается.

Транзакции, которые сам Bitcoin игнорирует

Транзакция Shielded Bitcoin — это просто блок данных с префиксом, например «shbtc:», встроенный в транзакцию Bitcoin через OP_RETURN, поле witness или иной способ передачи данных. Это паттерн метапротокола: правила протокола обеспечивают его собственные индексеры, а не Bitcoin, поэтому основная цепочка не видит ничего, кроменых данных. Блок данных не имеет для Bitcoin никакого смысла: сеть не проверяет его и не применяет к нему никаких правил.

В результате некорректные транзакции Shielded Bitcoin вполне могут оказаться в цепочке. Задача Shielded Bitcoin Indexer, пассивно наблюдающего за блокчейном, — игнорировать транзакции, не прошедшие валидацию, и отказываться применять их при обновлении состояния балансов сети.

Nullifier вместо набора потраченных нот

Индексер не удаляет ноты из набора непотраченных нот, как Bitcoin удаляет потраченные UTXO. Вместо этого он ведёт набор nullifier. Этот механизм позволяет пользователю публично опубликовать зашифрованное доказательство и nullifier, подтверждающие, что нота потрачена, не раскрывая, какая именно. Участники проверяют не то, находится ли нота в «наборе непотраченных нот», а то, использовался ли уже данный nullifier.

Индексеры строят дерево Меркла, которое растёт бесконечно и может только пополняться и содержит все когда-либо созданные выходы нот, а также набор nullifier.

Для работы протокола нужен только узел

Для использования протокола требуется лишь узел Bitcoin и индексер Shielded Bitcoin. Не нужны никакие сервисы, координаторы или off-chain-состояние для восстановления средств. Это работает так же, как on-chain Bitcoin: пользователю нужны только свой узел/индексер и свои ключи.

Каждый кошелёк пользователя выводит мастер-секретный ключ, из которого создаются все остальные наборы ключей — конструкция, близкая к HD-кошельку в Bitcoin, из которой можно сгенерировать множество наборов адресов. sk_spend служит приватным ключом для траты, sk_nf используется для «гашения» (nullify) выходов нот, vk_in расшифровывает и позволяет просматривать входящие ноты, vk_out — исходящие транзакции, а sk_view генерирует адрес для получения.

Когда пользователь хочет передать кому-то адрес для отправки средств, он генерирует значение диверсификатора d, аналогичное значению деривации, и умножает его на свой ключ sk_view. Полученный публичный ключ pk_d вместе с d составляет адрес пользователя.

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

Доказательства с нулевым разглашением гарантируют корректность

Со стороны входов для валидности транзакции требуются две вещи: публичный nullifier для каждого потребляемого выхода ноты и доказательство с нулевым разглашением, демонстрирующее, что (1) выход ноты включён в дерево Меркла нот, (2) транзакция авторизована соответствующим ключом sk_spend,3) nullifier корректно выведен и (4) эмиссии не произошло.

Nullifier включает ключ sk_nf, значение ρ, выведенное из r_seed, и позицию ноты в дереве Меркла выходов нот. Хотя никто не может определить, какому выходу ноты соответствует nullifier, доказательства с нулевым разглашением в каждой транзакции гарантируют, что каждый nullifier, добавленный в набор, происходит от валидного выхода ноты. Поэтому индексерам достаточно просто отклонять повторяющиеся nullifier, не удаляя потраченные ноты, и пока повторов нет, система обеспечивает ту же гарантию отсутствия двойной траты.

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

Свойства приватности

Согласно анализу, система хорошо спроектирована с точки зрения приватности и сопоставима, например, с shielded-пулами Zcash. Это сравнение очерчивает более широкую картину: Zcash обеспечивает shielded-транзакции за счёт правил, встроенных в его собственный протокол, тогда как данная конструкция стремится к сопоставимым свойствам на базовом уровне Bitcoin, не затрагивая консенсус. Вопросы приватности, возникающие при входе в метапротокол и выходе из него, будут подробно описаны в готовящейся публикации, и точки входа и выхода системы остаются одними из ключевых деталей по мере развития работы. В отличие от coinjoin, здесь нет необходимости измерять приватность или периодически перемешивать средства.

Пегирование средств с помощью PIPEs v2

Предполагаемый пег опирается на PIPEs v2 — схему witness-шифрования. PIPEs позволяют зашифровать приватный ключ с помощью программы или механизма, который не раскроет ключ, пока не будет предоставлено ZK-доказательство выполнения определённого условия — например, состояния некоторого UTXO или подтверждения транзакции. Это позволило бы пегу функционировать без оператора, федерации или любого третьего лица, хранящего средства, — примечательное свойство, учитывая, что конструкции пегов для Bitcoin обычно опирались на таких хранителей. Это не требует софтфорков или изменений протокола Bitcoin и происходит полностью off-chain.

Следующий этап работы команды — механизм пегов, который позволит пользователям вносить средства в Shielded Bitcoin с помощью криптографически контролируемых ключей PIPEs, которые затем будут «разблокированы» путём генерации ZK-доказательства легитимных транзакций вывода (peg-out), подтверждённых в цепочке. Работа над документом, определяющим этот аспект системы, ведётся, и он должен быть опубликован в ближайшее время; вместе со статьёй о приватности входа/выхода он дополнит те части, которые whitepaper оставляет открытыми.


Эта статья, автор Shinobi, впервые опубликована в Bitcoin Magazine.