Биткоин-адрес нельзя заблокировать или перевыпустить, как скомпрометированную банковскую карту, — история операций навсегда сохраняется в публичном блокчейне. Если биржа, контрагент или сторонний наблюдатель уже установили личность владельца, отменить эту привязку задним числом не получится.
Перевод монет на новый кошелек проблему не решит: цепочка транзакций сохранится. Сбор активов со всех прежних адресов на одном новом только ухудшит ситуацию — аналитики свяжут с владельцем весь объединенный баланс.
Вместе с командой биткоин-миксера Mixer.Money разбираемся, что уже раскрывает блокчейн, как разделить накопления по источникам и чем приходится платить за разрыв с прежней историей транзакций.
Одна транзакция портит все
Большинство биткоин-кошельков показывает общий баланс, но протокол оперирует неизрасходованными выходами транзакций (UTXO). Их удобно представлять как купюры произвольного номинала, которые в сумме и дают доступные к трате средства.
Каждый UTXO расходуется целиком. Для платежа в 0,15 BTC кошелек возьмет выход на 0,40 BTC и создаст два новых. Первый уйдет адресату, второй вернется владельцу как сдача за вычетом сетевой комиссии. Если нужная сумма больше любого отдельного выхода, в транзакцию попадут сразу несколько.
На этом держится эвристика общего владения входами (Common Input Ownership Heuristic): раз выходы потрачены вместе, значит, контролирует их один человек. Для сборки кластера такого допущения достаточно.
Представим набор из четырех UTXO на разных адресах:
В сумме это 0,80 BTC. Допустим, наблюдатель связал с конкретным человеком только адрес, где лежит выход A. Пока A, B, C и D не встретились в одной транзакции, их истории не пересекаются.
Перевод всего баланса разом называют свипом (sweep). Такая операция с четырьмя входами сведет выходы в единый кластер: к биржевому профилю владельца добавятся P2P-сделка, доход от майнинга и подарок.
Разделять и не смешивать
Свип — лишь самый грубый случай. Кошелек по умолчанию подбирает входы сам и не спрашивает, откуда пришли монеты: склеить истории можно и обычным платежом. Поэтому перед отправкой стоит выяснить, какие связи уже возникли, и решить, каких еще можно избежать. Порядок действий такой:
- Перестаньте использовать раскрытый адрес. Замените его в объявлениях, счетах и у регулярных контрагентов. Для постоянной публичной точки приема подойдут тихие платежи: стандарт BIP-352 позволяет разместить постоянный платежный адрес, а для каждого перевода формируется уникальный ончейн-выход.
- Составьте реестр UTXO. Для каждого выхода зафиксируйте источник. С этим справляются кошельки с метками транзакций и ручным выбором монет (coin control), например Sparrow Wallet.
- Разделите выходы на домены. Домен — это набор UTXO, известный одному кругу наблюдателей. Два вывода с KYC-биржи принадлежат общему домену. Монеты от знакомого и из P2P-сделки без верификации не стоит смешивать ни между собой, ни с биржевыми.
Разметка не отменяет прежние пересечения, но не дает появиться новым. Задача владельца — не расширять раскрытый кластер за счет остальных монет.
Два способа разорвать цепочку
Для базовой приватности достаточно не использовать адреса повторно и не объединять разные домены в одной транзакции. Но если засвеченные выходы нужно оторвать от прежней истории, остаются сервисы анонимизации. Работают они по-разному.
Первый вариант — CoinJoin. Протокол объединяет входы и выходы нескольких участников в общей транзакции, затрудняя установление точного соответствия между ними. Плата за это — узнаваемая структура, так как аналитические сервисы распознают характерный паттерн из десятка одинаковых выходов. Централизованные биржи могут пометить такую транзакцию как высокорисковую и отправить ее на дополнительную проверку.
Второй вариант — биткоин-миксер вроде Mixer.Money. Он дробит поступившие средства и раздает их частным инвесторам и трейдерам на торговых площадках. Обратно клиенту приходит ликвидность с других бирж. Прямой транзакции между входящим переводом и выплатой в цепочке не остается.
Порядок операции ForkLog проверял в пошаговом тесте режима «Полная анонимность». Результат определяет подготовка: адреса получения и разбивку по доменам продумывают до создания заявки. Порядок действий для каждой группы монет такой:
- Проверьте сервис на минимальной сумме. Отправка 0,001 BTC возвращается без комиссии. Так механика становится понятной до того, как через посредника пойдет крупный перевод.
- Подготовьте адреса получения заранее. Указать можно до двух адресов, и заполнить стоит оба поля: так качество смешивания выше. Брать их лучше из кошелька без общей истории с отправляющим.
- Оформите заявку. Регистрация не нужна. Форма выдает адрес для отправки, QR-код и расчет стоимости, а сам заказ действует 168 часов (7 суток).
- Сохраните гарантийное письмо. Его подписывают PGP-ключом и фиксируют в нем адреса, размер комиссии и время смешивания.
- Отправьте домен одной транзакцией. Обработка стартует после первого подтверждения в сети биткоина.
- Дождитесь выплаты. Верхняя граница — шесть часов. Монеты приходят частями, поэтому неполный остаток на адресе означает незавершенный процесс, а не сбой.
Взамен приходится уступить часть контроля: время выплаты и распределение средств между адресами выбирает система, а монеты на несколько часов остаются у посредника. Ончейн-разделение доменов держится на действиях самого пользователя: отдельная транзакция на каждый домен и адреса получения из разных веток кошелька.
***
Старые записи из блокчейна не стереть. Реалистичная цель другая: вывести «засвеченный» адрес из оборота и не расширять уже собранный кластер. Начните с инвентаризации UTXO и определите, какую часть монет стоит анонимизировать.
После переноса домены должны остаться порознь: их нельзя сводить ни общей транзакцией, ни одним KYC-аккаунтом. Типичные ошибки после микширования ForkLog разобрал в отдельной публикации вместе с командой Mixer.Money.