НЕКАСТОДИАЛЬНЫЙ ПРОТОКОЛ ПРИВАТНОСТИ

TORNADO.CASH / ДОКУМЕНТАЦИЯ TORNADO CASH

Документация Tornado Cash.

Tornado Cash — децентрализованный протокол приватных транзакций в публичных блокчейнах. Он разрывает видимую связь между адресом депозита и получателем с помощью неизменяемых смарт-контрактов и доказательств с нулевым разглашением.

Документация Tornado Cash: Документация описывает Classic, Nova, хранение заметок, релееров, управление и выборочное раскрытие данных. Адреса контрактов всё равно следует проверять отдельно.

ХРАНЕНИЕНекастодиальное
ПРОВЕРКАДоказательства zk-SNARK
ИСПОЛНЕНИЕСмарт-контракты
МОДЕЛЬ ПРИВАТНОСТИ ZERO-KNOWLEDGE Визуализация состояния протокола
ПРОВЕРЕННАЯ ЛОГИКА
01 ОбязательствоПубличный хеш входит в набор
МНОЖЕСТВО АНОНИМНОСТИОбщие обязательства в сети
02 zk-доказательствоПраво владения доказано приватно
03 ВерификаторДоказательство верно, связи с депозитом нет
ЗАМЕТКАХранится у пользователя
В СЕТИОбязательство + нуллификатор
РАСКРЫТОСвязь депозит-получатель не раскрыта
01 // ПОТОК ТРАНЗАКЦИИ

Внести. Подождать. Вывести.

Протокол принимает обязательство с одного адреса и позже проверяет доказательство для получателя. Приватная заметка связывает действия для пользователя, но не публикуется в сети.

01
СОЗДАТЬ ОБЯЗАТЕЛЬСТВО

Депозит

Браузер создаёт секретные значения и приватную заметку. Актив и хеш заметки отправляются в пул фиксированного номинала.

ПУБЛИЧНОcommitmentHash
ПРИВАТНОsecret + nullifier
02
ДАТЬ ПУЛУ ИЗМЕНИТЬСЯ

Ожидание

По мере поступления других депозитов того же номинала простые временные связи становятся менее полезными. Приватность также зависит от поведения и сетевых метаданных.

АКТИВНОСТЬ ДЕПОЗИТОВ
03
ДОКАЗАТЬ БЕЗ РАСКРЫТИЯ

Вывод

Клиент доказывает наличие действительного неиспользованного обязательства в дереве Меркла. Контракт проверяет доказательство и отправляет средства выбранному получателю.

ПУБЛИЧНОroot + nullifierHash
СКРЫТОdeposit path + secrets
02 // МОДЕЛЬ ПРИВАТНОСТИ

Один пул.
Два адреса.

Обычный публичный блокчейн показывает прямой путь транзакции. Tornado Cash меняет его: источник публикует обязательство, а получатель позже предъявляет доказательство для общего пула.

ИСТОЧНИК
0x71…9A2Адрес депозита
ОБЩИЙ ПУЛДерево Меркла
ПОЛУЧАТЕЛЬ
0xB4…E08Адрес вывода
01

Заметка остаётся приватной

Заметка содержит секреты для создания доказательства. Её нужно хранить как приватный ключ и никому не передавать.

02

Пул видит обязательство

Контракт записывает обязательство в дерево Меркла, а не секретную заметку пользователя.

03

Нуллификатор запрещает повторное использование

Публичный хеш нуллификатора отмечает заметку как использованную, не раскрывая связанное обязательство.

04

Доказательство привязывает получателя

Параметры получателя и релеера входят в доказательство, чтобы их нельзя было заменить.

03 // ВНУТРЕННЕЕ УСТРОЙСТВО

Проверяется кодом,
а не оператором.

Контракты Tornado Cash проверяют криптографические факты. Им не нужно знать приватную заметку, вести баланс клиента или выбирать получателя действительного вывода.

Открыть документацию протокола
#
ШАГ 01

Обязательство

Хеш секрета и нуллификатора добавляется листом в дерево Меркла пула.

H(secret, nullifier)
ШАГ 02

Принадлежность дереву

Клиент восстанавливает дерево и доказывает, что обязательство входит в принятой корень.

leaf ∈ root
Ø
ШАГ 03

Проверка нуллификатора

Контракт отклоняет уже использованный хеш нуллификатора и предотвращает повторный вывод.

spent[nHash] == false
ШАГ 04

Проверка в сети

Верификатор проверяет доказательство, после чего пул отправляет сумму привязанному получателю.

verifyProof() → true
04 // МОДЕЛИ ПРОТОКОЛА

Classic и Nova.

CLASSICФИКСИРОВАННЫЕ СУММЫ

Приватные заметки и равные пулы

Пулы Classic объединяют одинаковые номиналы. Депозиты создают заметки, которые позже используются для доказательства вывода.

  • Фиксированные номиналы
  • Хранение приватной заметки
  • Обязательства Меркла
  • Необязательные релееры
Документация Classic
NOVAПРОИЗВОЛЬНЫЕ СУММЫ

Защищённые балансы и переводы

Nova поддерживает произвольные значения и переводы внутри защищённого пула с другой моделью аккаунта и транзакций.

  • Гибкие суммы
  • Защищённые переводы
  • Доступ по аккаунту
  • Развёртывание в Gnosis Chain
Документация Nova
01

Некастодиальный

Контроль обеспечивается секретами пользователя, а не аккаунтом под управлением оператора.

02

Открытый код

Контракты, схемы, инструменты доказательств и интерфейс можно проверить и разместить независимо.

03

Неизменяемые пулы

Развёрнутые контракты работают по своему байткоду и не зависят от первоначальных разработчиков.

04

Управление сообществом

Предложения и голосование TORN выполняются в сети и отделены от хранения заметок.

05 // ЧАСТЫЕ ВОПРОСЫ

Детали
протокола.

Ответы описывают основную архитектуру. Приватность не возникает автоматически: важны время, повторное использование адресов, браузер, RPC и применимое право.

01Как депозит остаётся под контролем пользователя?+

Контракт получает актив и обязательство, созданное из секретов. Приватная заметка остаётся у пользователя и нужна для доказательства вывода. Обычного пароля и базы восстановления у протокола нет.

02Зачем ждать между депозитом и выводом?+

За время ожидания в пул могут войти другие депозиты того же номинала, что уменьшает очевидные временные корреляции. Одно ожидание не гарантирует приватность.

03Что доказывает zero-knowledge proof?+

Оно показывает, что пользователь знает секреты обязательства в принятом корне Меркла и что связанный нуллификатор ещё не использовался, не публикуя сами секреты.

04Что делает релеер?+

Релеер может отправить транзакцию вывода и заплатить газ за получателя. Доказательство привязывает получателя и комиссию.

TORNADO.CASH

Приватность — это протокол,
а не обещание.

Изучите документацию, проверьте контракты, защитите заметку и поймите модель приватности до взаимодействия.