Математика SolMask делает вывод криптографически несвязываемым с его депозитом. Но математика — не единственный сигнал, который видит наблюдатель. Простейший, самый дешёвый и самый мощный инструмент деанонимизации — это часы.
Если Вы вносите 5 SOL в 14:02:11, а кто-то выводит 5 SOL в 14:02:23, внешнему аналитику не нужно ломать никакую криптографию. Ему достаточно заметить, что в эти двенадцать секунд Вы были единственным вкладчиком, а единственный вывод — Ваш по принципу исключения. ZK-доказательство выполнило свою работу безупречно; Вы просто остались на сцене в одиночестве.
Задержка приватности — это то, что мы используем, чтобы Вы не остались один.
Что на самом деле делает задержка
При депозите Вы выбираете слот разблокировки — номер будущего слота Solana, до которого Ваши средства не могут быть выведены. Схема вывода обеспечивает это напрямую. Соответствующая строка в circuits/withdraw.circom по смыслу читается как unlock_slot ≤ current_slot. Если Вы (или любой, у кого есть Ваша нота) попытаетесь сгенерировать доказательство до слота разблокировки, ограничение не выполнится и валидного доказательства для отправки не будет.
Это обеспечивается внутри самого ZK-доказательства, а не отдельным таймером, который протокол мог бы отключить. Блокчейн понятия не имеет, каков Ваш слот разблокировки — он остаётся внутри Вашего обязательства, — но он знает, что доказательство не существовало бы без соблюдения правила о времени.
Задержка приватности по умолчанию в SolMask — один час, что на mainnet составляет примерно 9000 слотов. Интерфейс предлагает более короткие и более длинные варианты (10 минут, 6 часов, 1 день, 3 дня, 1 неделя). Чем дольше, тем больше приватности. Рекомендуемое значение по умолчанию — один час, потому что, на наш взгляд, именно там для большинства активов и сумм отдача от размера толпы начинает выходить на плато.
Что Вам даёт «больше времени»
Размер набора анонимности — количество правдоподобных депозитов, которым может соответствовать Ваш вывод, — растёт с длиной окна ожидания. Если за час после Вашего депозита SOL внесли ещё пять человек, Ваш вывод — один из шести. Если пятьдесят — один из пятидесяти одного.
Зависимость не линейная. Рост набора анонимности зависит от трафика пула, который меняется по активу, часу и неделе. Тихие пулы растут медленно. Пул USDC надёжно накопит больше депозитов за час, чем пул малоизвестного SPL-токена, поэтому одна и та же задержка покупает Вам больше приватности в USDC, чем в активе из длинного хвоста.
Интерфейс SolMask показывает Вам живую оценку набора анонимности до того, как Вы зафиксируете задержку. Если оценка выглядит слабой — скажем, менее десяти правдоподобных депозитов в выбранном окне, — правильный ответ: выбрать более длинную задержку или подождать и сделать депозит позже, когда трафик будет здоровее.
Компромисс реален
Задержка приватности — это трение. Вы блокируете средства, к которым у Вас нет доступа. Для выплат зарплат и казначейских операций это обычно нормально — эти операции и так планировались заранее. Для срочного личного перевода недельная задержка бесполезна, какой бы превосходной ни была математика набора анонимности.
Правильная рамка: выберите самую длинную задержку, которую можете терпеть. Если можете подождать день — подождите день. Если средства действительно нужны через час, выберите часовую задержку и примите, что набор анонимности будет меньше, чем если бы Вы ждали дольше. Протокол не может заставить Вас быть терпеливым; он может только обеспечить минимум, который Вы зафиксировали в момент депозита.
Почему мы не вводим ещё больший минимум
Мы рассматривали возможность сделать минимальную задержку 24 часа по умолчанию. Мы отказались, потому что приватность-как-трение склоняет пользователей к худшим альтернативам — мостам, OTC-площадкам или просто отказу от приватности. Минимум в один час достаточно короткий, чтобы покрыть большинство обычных сценариев, и достаточно длинный, чтобы блокчейн прокрутил миллионы транзакций, десятки блоков и (в здоровых пулах) десятки не связанных с Вами депозитов с момента Вашего.
Если Вы хотите более сильной приватности, чем часовой минимум, регулятор у Вас в руках. Интерфейс показывает реальные числа набора анонимности, чтобы Вы выбирали задержку на основе реальности, а не суеверий.
Чего задержка не решает
Только задержки для приватности недостаточно. Если адрес Вывода уже связан с Вашей личностью через какую-то другую ончейн-активность, или Ваш RPC-провайдер логирует Ваш IP, или Вы рассказываете в соцсетях, что использовали протокол, никакая задержка Вас не спасёт. Задержка защищает от конкретной атаки — корреляции по времени со стороны пассивного ончейн-наблюдателя. Другие поверхности атаки разобраны в других статьях этого раздела.