Безопасное использование Bitcoin и CoinJoin
Аннотация
Транзакции в сети Bitcoin вопреки всё ещё широко распространённому заблуждению не являются анонимными в строгом смысле этого слова. Транзакции фиксируются в открытом блокчейне и видны каждому: для каждой транзакции известно, с каких и на какие адреса был совершён перевод средств. Например, вот тут можно посмотреть все входящие и исходящие транзакции, а также баланс публичного биткоин-адреса SVTV NEWS. Истинная анонимность доступна по умолчанию только для таких криптовалют, как Monero и Zcash.
При этом в самой сети адреса никак не привязаны к какой-либо информации, позволяющей идентифицировать пользователя. То есть можно говорить о псевдонимности транзакций в сети Bitcoin: известен отправитель, получатель, сумма, но неизвестно, кто они на самом деле.
Однако относительно легко выяснить (особенно силовым ведомствам), кому реально принадлежит конкретный адрес, если человек при покупке или продаже BTC использовал площадки, которые проводят процедуру идентификации своих клиентов (т.н. KYC — know your client). Такие площадки, будучи зажатыми в тиски государственных законов, вынуждены делиться с силовиками данными своих клиентов по первому же запросу. В противном случае они будут заблокированы, а их руководство в лучшем случае оштрафовано, если не арестовано.
Российское государство последовательно наращивает уровень репрессий в стране. С началом войны все без исключения оппозиционно настроенные СМИ были либо закрыты/заблокированы, либо признаны иноагентами, либо вообще нежелательными организациями. В какой-то момент и ваше любимое либертарианское СМИ SVTV NEWS, увы, может стать нежелательной организацией. А это значит, что поддерживать его способами, позволяющими вас идентифицировать, будет небезопасно.
Поэтому важно уже сейчас позаботиться о том, чтобы пользоваться сетью Bitcoin безопасно и приватно. Это пригодится и в других ситуациях! В этом вам поможет технология CoinJoin и данная статья, которая посвящена базовым принципам реализации данной технологии и практическим советам по её использованию. Повествование будет вестись на примере конкретной реализации от команды Samourai Wallet, поскольку она является некастодиальной, одной из самых совершенных, известных и проверенных временем, а также неоднократно испытана самим автором.
Введение
Обычно криптовалюту покупают на централизованных биржах (вроде наиболее известного в РФ Binance), либо в P2P онлайн обменниках, множество которых представлено на агрегаторе Bestchange. Во всех случаях пользователь в том или ином виде оставляет личные данные, которые позволяют его полностью идентифицировать. Исключением является приобретение криптовалюты за наличные. Однако это доступно не везде, обычно такие операции проводятся с высоким минимальным порогом на покупку/продажу (>100 000 рублей), несут за собой дополнительные риски и в принципе компании, занимающиеся подобной деятельностью, тоже могут проводить идентификацию по требованию властей.
Особенно тяжёлым случаем является использование кастодиальных биткоин-кошельков: то есть таких, в которых приватные ключи (дающие полный доступ к средствам) хранятся у некоторого доверенного лица — кастодиана, в роли которого выступает биржа или разработчик ПО кошелька. В этом случае помимо риска раскрытия вашей личности, приобретённая криптовалюта ещё и не находится в вашем полном владении. К сожалению, всё ещё широко распространено использование биржевого аккаунта в качестве криптокошелька. Все подобные варианты отметаются в сторону, если стоит цель приватного и безопасного использования Bitcoin. Для этого необходимо использовать некастодиальные кошельки, в которых приватные ключи доступны только пользователю. Примеры таких кошельков для работы с Bitcoin: Samourai wallet, Electrum, Sparrow wallet, Exodus, Trust wallet, Wasabi wallet и другие.
На заре появления Bitcoin для работы с сетью чаще всего использовалась одна единственная пара ключей (адресов): приватного (для подписания транзакций) и публичного (для получения транзакций). При этом если человек использует для всех своих операций один адрес, который был скомпрометирован, то все его действия будут раскрыты. Современные принципы работы иерархически детерминированных биткоин-кошельков (Hierarchical Deterministic Wallets) позволяют работать с условно бесконечным количеством адресов, которые генерируются из seed-фразы. Это позволяет повысить приватность по сравнению с ситуацией использования одного адреса. Приватность повышается за счёт отсутствия связей между адресами в рамках одного кошелька: то есть внешний наблюдатель не сможет сказать, сколько у вас всего средств, даже если один из адресов был скомпрометирован. Однако это не решает проблемы возможности связать конкретный адрес с реальной личностью. При этом возможность работы с большим количеством адресов в рамках одного кошелька является важным элементом алгоритма CoinJoin.
Перед тем как переходить к описанию алгоритма CoinJoin стоит напомнить, как устроены транзакции в Bitcoin, фиксируемые в блокчейне. Транзакция состоит из входов, выходов, комиссии и заголовка (хеш). Часто одним из выходов в транзакции является сдача, когда сумма входов больше, отправляемой суммы. Входы могут быть потрачены только целиком (как бумажная купюра) — отсюда возникает и сдача. Разницы между суммой выходов и суммой входов равна комиссии. В сети Bitcoin учёт баланса на каждом адресе и кошельке в целом ведётся по так называемым неиспользованным выходам — UTXO (Unspent Transaction Output). Входы и выходы транзакции как раз и представляют из себя использованные и вновь образованные UTXO. На одном и том же адресе может быть множество UTXO. Понятие UTXO является важным для понимания работы алгоритма CoinJoin и корректного использования пропущенных через него средств. Для тех, кто хочет подробнее понять устройство транзакций, рекомендую ознакомиться вот с этим, этим и этим роликами.
Понятно, что информация в блокчейне о каждой транзакции позволяет установить детерминированную связь между адресами. В примере на рисунке выше видно, что некий пользователь использует два UTXO, имеющихся у него на одном адресе, для отправки 0,002 BTC на адрес SVTV NEWS и получает сдачу в размере 0,00044253 BTC на тот же адрес, с которого отправлял средства. Примечательно, что все адреса в данной транзакции помечены, как reused, то есть повторно использованные. Это позволит легче связать между собой разные транзакции и, возможно, установить личность человека и всё, что он делал со своими средствами, а также их количество.
Анализировать транзакции удобно при помощи графа транзакций — визуализации связей входов и выходов в череде транзакций. Это можно делать, например, в обозревателе блоков OXT (иконка перехода к графу в левой части экрана на странице транзакции). На графе транзакций на рисунке 2 показана связь ближайших транзакций с рассмотренной выше транзакцией (помечена оранжевым).
Интересным примером анализа графа транзакций является критика реализации алгоритма CoinJoin от Wasabi wallet, в которой может возникнуть повторное использование адреса. В связи с этим данная реализация крайне не рекомендуется для использования. Вторым не менее серьёзным недостатком реализации от Wasabi является использование координатора процесса, который ведёт чёрный список адресов. То есть ваша попытка участия в смешивании может быть просто отклонена!
Однако были придуманы способы так запутать выходы в череде транзакций между группой пользователей, что эта детерминированная связь разрывается. И даже если изначально было известно, кому какой адрес принадлежит, то после смешивания однозначно определить это становится уже невозможно.
Существуют различные реализации этой идеи. В том числе и кастодиальные миксеры, когда пользователи доверяют свои средства некому централизованному сервису, который по определённому алгоритму будет смешивать выходы. Однако в таком случае возникают риски потери средств и на самом деле потери анонимности.
Одним из наиболее продвинутых некастодиальных способов смешивания выходов является алгоритм CoinJoin со схемой слепой подписи Чаума (Chaumian CoinJoin), который был предложен ещё в 2013 году одним из разработчиков Bitcoin Core Грегори Максвеллом. Сама технология CoinJoin презентовалась в качестве способа сделать биткоины взаимозаменяемыми, а транзакции приватными. CoinJoin противопоставляется кастодиальным миксерам. Особенно остро эта дискуссия ведётся на фоне попыток государств запретить подобные технологии обеспечения приватности под предлогом борьбы с отмыванием денег.
Технология CoinJoin
Центральной идеей алгоритма является объединение и перемешивание UTXO одинакового размера от разных пользователей, на что намекает само название технологии. Chaumian CoinJoin осуществляется на основной сети Bitcoin и выглядит для внешнего наблюдателя просто как последовательность транзакций с одинаковыми входами и выходами. В данной статье рассматривается конкретная реализация алгоритма от команды Samourai Wallet, которая получила название Whirlpool. На сегодняшний день это наиболее совершенная некастодиальная реализация CoinJoin.
В Whirlpool CoinJoin осуществляется в четыре стадии:
- Нулевая транзакция (Tx0)
- PreMix
- PostMix
- ReMix
В соответствии со стадиями работы Whirlpool в кошельке Samourai Wallet существуют три основных аккаунта или пространства адресов, которые полностью отделены друг от друга и разворачиваются из seed-фразы разными путями (рис. 4): Deposit, PreMix и PostMix. Deposit является базовым аккаунтом, вы работаете с ним по умолчанию, когда не пропускаете средства через Whirlpool. PreMix является промежуточным аккаунтом, который используется только в запуске смешивания. В PreMix средства уже разбиты на равные части и лишь дожидаются отправки на первый цикл смешивания. Пользователь никак не взаимодействует с PreMix. В PostMix попадают средства уже прошедшие хотя бы один цикл смешивания. Отсюда они могут участвовать в стадии ReMix или быть потрачены пользователем.
Одной из отличительных особенностей Whirlpool от других реализаций CoinJoin является использование 4 пулов с фиксированной деноминацией выходов и плоской шкалы комиссии для каждого пула. То есть размер комиссии пула не зависит от пропускаемой через него суммы и количества получаемых выходов. Однако в зависимости от количества получаемых выходов будет меняться комиссия майнерам. Все комиссии платятся только один раз при запуске процесса смешивания. Повторное смешивание полученных в конце выходов (ReMix) оплачивается по сути за счёт новых участников. Каждый пул деноминирован на определённый размер выхода: это значит, что после выбора пула ваша сумма будет разбита на одинаковые части, а остаток отправится обратно на Deposit.
Размер пула выбирается в соответствии с той суммой, которую вы планируете пропустить через Whirlpool, количеством выходов после смешивания и желаемым номиналом выходов.
Общее описание схемы работы Whirlpool
В каждом цикле смешивания выходов одинакового размера участвует 5 пользователей и централизованный координатор (сервер), работающий по протоколу ZeroLink и использующий механизм слепой подписи. Координатор не получает никакой информации, позволяющей идентифицировать пользователя или даже понять с каких и на какие адреса происходят транзакции. Как минимум два участника процесса должны быть новыми (они находятся на этапе PreMix). В каждом цикле смешиваются 5 входов, получается 5 выходов: все одинакового размера. Из-за этого становится невозможно однозначно сказать какой выход соответствует какому входу. Каждый цикл даёт 1 496 интерпретаций.
Нулевая транзакция (Tx0)
Перед началом смешивания каждый новый участник делает транзакцию (Tx0) на адреса PreMix аккаунта, разбивающую его сумму на равные части в соответствии с размером пула. Именно на этом этапе выплачиваются единственный раз все комиссии. Рекомендуется не объединять в нулевой транзакции UTXO разного происхождения, находящиеся на разных адресах, т.к. это связывает все эти адреса с одним владельцем. Хотя это не влияет на дальнейший результат разрыва связей при смешивании.
В этой транзакции может быть несколько входов (из тех UTXO, которые пользователь планирует разбить и смешать), и не менее двух выходов (скорее трёх). Среди выходов обязательно будет комиссия пула (в соответствии с номиналом), по крайней мере один выход, который будет участвовать в смешивании, и скорее всего сдача (doxxic change).
Комиссия пула может быть чуть меньше, чем обычно, так как периодически появляются скидочные коды (SCODE). Выход или выходы, которые подвергнутся перемешиванию, отправляются на адреса PreMix и имеют величину, немного превышающую номинал пула — это необходимо для выплаты комиссии майнерам для подтверждения транзакции на следующем этапе. Маловероятно, что удастся обойтись без сдачи, так как комиссия майнерам всегда является плавающей величиной, да и найти выход(ы) с ровной суммой не часто получается. Поэтому появляется «грязная» сдача, как её называют, doxxic change. Эта сдача ни в коем случае не должна быть смешана с полученными в конце выходами при расходовании PostMix средств. Но это и невозможно: в Samourai wallet они находятся в разных пространствах адресов.
На рисунке 5 показана схема простой нулевой транзакции с единственным входом и единственным выходом для PreMix. На рисунке 6 показана нулевая транзакция с 6 выходами для PreMix в обозревателе блокчейна. Как видно, на данном этапе ещё присутствует детерминированная связь входов и выходов.
Этап PreMix + первое смешивание
После нулевой транзакции выходы разных пользователей из их PreMix или PostMix аккаунтов объединяются координатором в одну транзакцию с 5 выходами и 5 входами. Важно отметить, что множество таких транзакций по 5 входов происходит параллельно: в других реализациях обычно создаётся один цикл с большим количеством выходов и входов.
Входы пользователей могут на данном этапе отличаться на величину комиссии майнерам: как минимум у двух участников входы будут немного больше номинала пула. На выходе транзакции получаются выходы одинакового размера, соответствующего номиналу пула. На рисунке 7 представлена визуализация возможных интерпретаций связей между входами и выходами после первого смешивания.
Уже на выходе из первого цикла смешивания разрывается детерминированная связь с исходными UTXO, средства оказываются в аккаунте PostMix и могут быть либо потрачены, либо продолжать смешиваться. Связь между исходными входами и выходами становится вероятностной. Так как все выходы одинакового размера, невозможно точно сказать, к какому входу относится конкретный выход. Напомним, что во время транзакции новые выходы (UTXO) по сути создаются заново, а не связываются напрямую с какими-то входами.
Уже после первого цикла смешивания можно наблюдать довольно красивый и сложный граф транзакции. На рисунке 8 представлен граф транзакции, начинающейся с той, что представлена на рисунке 6 (помечена оранжевым).
Этап PostMix + ReMix
Как уже было сказано, первого цикла смешивания уже достаточно, чтобы разорвать детерминированную связь с исходными выходами и адресами, — связь становится вероятностной. Однако ваши выходы всё ещё можно подозревать потенциально связанными с исходными UTXO (они находятся не так далеко друг от друга в истории транзакций). При этом количество интерпретаций растёт экспоненциально с каждым новым циклом. Поэтому считается более, чем достаточным пройти три цикла смешивания. Они происходят уже из пространства PostMix и для их инициации уже не нужно платить комиссии или делать нулевую транзакцию. Этот этап называется ReMix. Его схема представлена на рисунке 9.
Повторные смешивания будут доступны для тех UTXO из PostMix, которые не были использованы пользователем, то есть их номинал сохранён. После первой же транзакции из аккаунта PostMix может образоваться сдача — она уже не будет участвовать в повторном смешивании. Опять же, это коснётся только тех UTXO из пространства PostMix, которые были использованы при расходовании средств пользователем.
Дополнительно ознакомиться с работой Whirlpool можно в этом ролике.
Практические способы использования CoinJoin
Существует несколько способов воспользоваться технологией Whirlpool от команды Samourai wallet, обладающих разной степенью сложности по реализации.
1. Самый простой способ — с помощью приложения на смартфоне
Для этого всего лишь необходимо:
- Скачать приложение Samourai wallet на свой смартфон (только для Android). Можно и через APK-файл с сайта разработчика.
- Ввести свою seed-фразу из 12 слов или создать новый кошелёк. Крайне рекомендуется использовать 13-е слово (passphrase) для повышения безопасности (стандарт BIP39). При создании нового кошелька будет предложено сначала ввести парольную фразу (13-е слово). Если у вас уже есть фраза из 12 слов и вы хотите её использовать, то не вводите парольную фразу, иначе вы создадите другой кошелёк.
- Пополнить баланс кошелька любым способом либо воспользоваться уже имеющимися средствами. На данном этапе вы работаете в пространстве кошелька Deposit.
- Перейти в раздел Whirlpool, выбрать пул, запустить смешивание.
С наглядной видео-инструкцией можно ознакомиться здесь.
Одним из минусов такого метода является то, что во время смешивания смартфон должен быть всегда в активном состоянии, с включённым экраном, работа приложения не должна подавляться средствами экономии заряда аккумулятора. Смешивание будет происходить только тогда, когда приложение запущено и активно, так как данный метод является некастодиальным и пользователь должен подписывать транзакции. Помните, чем дольше вы участвуете в смешивании, тем больше циклов пройдёт каждый выход.
Вторым минусом является то, что в данном случае используется лёгкая версия кошелька. Это справедливо по отношению к любому мобильному кошельку. То есть он не работает как полноценный узел сети Bitcoin, не хранит весь блокчейн, а поэтому для определения баланса и работы с адресами ему необходимо делать запрос на полноценные узлы сети для получения этой информации. В данном случае таким узлом служит сервер, предоставляемый Samourai wallet. При обращении к полному любому узлу пользователь отправляет на сервер свой расширенный публичный ключ, на основе которого можно узнать все публичные адреса, которые могут быть получены из seed-фразы пользователя. Сама seed-фраза, конечно, не раскрывается, как и приватные ключи: соответственно никто кроме вас подписывать транзакции не сможет. Таким образом весь кошелёк пользователя может быть скомпрометирован, независимо от того, были смешаны неиспользованные выходы или нет.
Пользуясь любым лёгким кошельком, вы доверяете полную информацию о ваших операциях и публичных адресах кошелька тем, к чьим узлам вы подключаетесь. Это одна из особенностей, которой пользуются организации, занимающиеся анализом блокчейна (вроде Chainalysis). Они специально создают большое количество полных узлов сети, чтобы пропускать через себя подобную информацию. Хоть это и не касается сервера Samourai wallet, элемент доверия в их случае всё равно остаётся. Но для этой проблемы есть решение — использование собственного полного узла сети, к которому непосредственно уже можно подключить лёгкий кошелёк. Об этом будет сказано дальше по тексту.
2. Промежуточный вариант: кошелёк на смартфоне + смешивание на ПК
Промежуточным решением неудобства первого метода из-за необходимости поддерживать приложение Samourai wallet запущенным является управление смешиванием через специальное приложение на компьютере — Whirlpool GUI. Данное приложение является кроссплатформенным. Такой подход позволяет инициировать и поддерживать процесс смешивания без участия приложения на смартфоне, однако всё так же требуется, чтобы приложение на компьютере было запущено всё время, пока происходит смешивание.
Для начала необходимо проделать все те же действия, что и в первом методе до момента инициации смешивания. То есть вам так же понадобится смартфон на Android и установленное приложение Samourai wallet на нём. Для активации приложения на ПК вам понадобится ваша парольная фраза (13-е слово) и ещё некоторая информация из кошелька.
- Запускаем приложение Whirlpool на ПК.
- Выбираем вариант использования «Standard: standalone GUI».
- Запускаем приложение на смартфоне, заходим в настройки.
- В разделе «Транзакции» прокручиваем меню в самый низ, обнаруживаем там пункт «Связать с Whirlpool GUI»
- Либо сканируем при помощи ПК появившийся на смартфоне QR-код, либо копируем текстовую информацию под кодом и переносим её на компьютер, где установлен Whirlpool GUI.
- На следующем этапе вводим в Whirlpool GUI свою парольную фразу (13-е слово).
- Выбираем выходы, которые хотим смешать, пул, запускаем процесс смешивания.
С наглядной видеоинструкцией можно ознакомиться здесь.
В данном варианте всё так же остаётся недостаток использования лёгкого кошелька. Также, если вы осуществляете данные процедуры, не со специально выделенного для этого ПК, это может помешать его использовать.
3. Ультимативное решение: полный узел Bitcoin с Whirlpool CLI + приложение на смартфоне
Достичь максимально возможного уровня приватности и безопасности при работе с Bitcoin можно только с использованием полного узла сети.
Существует множество реализаций полных узлов, самый известный из которых, конечно же, Bitcoin core от команды разработчиков, занимающихся развитием самой сети Bitcoin. Любая реализация, впрочем, содержит в себе Bitcoin core. Среди альтернативных реализаций узлов можно выделить Nodl, myNode и Umbrel.
У команды Samourai также есть свои реализации полного узла Bitcoin — это Dojo (для Linux) и RoninDojo (для Raspberry Pi). Рекомендуется использовать один из этих вариантов, хотя возможно построить систему и с более сложным сочетанием ПО, поверх которого будут работать Dojo и Whirlpool CLI. Первый вариант (Dojo) менее user friendly, требует больше усилий для установки и настройки. Второй вариант (RoninDojo) максимально прост в установке и использовании, однако требует специального оборудования — одноплатного компьютера Raspberry Pi. Важной особенностью этих узлов является их работа через Tor: это позволяет и повысить приватность, и отправлять запросы на данный полный узел, не имея выделенного IP-адреса. Правда, провайдеры могут ограничивать возможность соединения через Tor, поэтому понадобится настроить мосты при установке или пропускать трафик через VPN. С презентацией Dojo можно ознакомиться в данном ролике.
При установке узла Dojo на Linux можно сразу установить и Whirlpool CLI, изменив перед установкой соответствующий файл конфигурации (см. подробные инструкции). Можно установить Whirlpool CLI и отдельно в дополнение к существующему узлу. Whirlpool CLI представляет из себя программу без графического интерфейса, которая управляет процессом смешивания. Данная конфигурация позволяет непрерывно и многократно перемешивать ваши BTC.
Полный узел имеет смысл использовать и безотносительно процесса смешивания BTC. Рекомендуется устанавливать полный узел на отдельное устройство, которое будет работать 24/7, так как он в режиме реального времени должен принимать и транслировать информацию о новых ещё неподтверждённых транзакциях в сети, а также о новых блоках. Работа Bitcoin узла не требует больших ресурсов. Самое большее, что от вас потребуется, — это выделить ~1 ТБ дискового пространства для хранения блокчейна и других компонентов узла (около 600 ГБ на данный момент).
После установки всех компонентов (Dojo, Whirlpool CLI, Whirlpool GUI и Samourai wallet) можно будет все их связать между собой и инициировать смешивание. В первую очередь, конечно, необходимо установить и настроить Dojo и Whirlpool CLI. Подключение Samourai wallet к полному узлу происходит при первом запуске приложения: если оно уже у вас было активировано (введена seed-фраза), то необходимо будет сбросить его в настройках смартфона в исходное состояние и пройти процедуру инициализации заново. Инструкцию подключения Whirlpool GUI к Whirlpool CLI и Dojo можно найти тут.
4. Ещё один простой способ использования Whirlpool — Sparrow wallet
Команде Samourai wallet удалось создать, пожалуй, лучший набор программных продуктов для безопасного и приватного использования Bitcoin. Однако одним из недостатков их ПО для пользователей является отсутствие полной кроссплатформенности и сложность настройки полной экосистемы. К счастью, другие команды разработчиков вступают в коллаборацию с Samourai и интегрируют их решения в свои продукты. Примером такой коллаборации является кроссплатформенный биткоин-кошелёк для ПК Sparrow wallet. В него интегрирована возможность использования Whirlpool, а также подключения к своим собственным полным узлам (в том числе Dojo через Tor).
Данный вариант подойдёт тем, у кого нет Android-смартфона, а также тем, кто не хочет заниматься настройкой сложных систем. Сложность использования Whirlpool через Sparrow wallet сопоставима с первым рассмотренным вариантом, когда требовалось лишь установить нужное приложение на смартфон. Подробную инструкцию о том, как взаимодействовать с Whirlpool через Sparrow wallet можно найти здесь или посмотреть данный ролик.
Пара слов о безопасности
Стоит добавить ещё несколько слов о безопасном использовании рассмотренных программных продуктов. Все рассмотренные программы являются примером FOSS (Free and open-source software) и проверены временем. Поэтому безопасность работы с этими инструментами на 99% определяется действиями пользователя и безопасностью среды, в которой они используются. В идеале выполнять все действия с криптовалютами в изолированной среде. Для этого не обязательно заводить отдельное устройство — можно ограничиться работой на виртуальной машине под Linux. Для простоты, если вы работаете на Windows, установите себе VirtualBox и создайте машину с Linux Mint. Очевидно, лучше не ставить никакие кошельки в одну систему, где вы постоянно используете пиратское ПО.
Ещё одним полезным элементом безопасности при работе с Bitcoin является использование watch-only кошельков. Например, Sentinel от той же команды Samourai. Такой кошелёк можно считать холодным, так как для его работы не требуется вводить seed-фразу, а соответственно, через него нельзя подписывать транзакции. Вместо этого данный кошелёк принимает расширенный публичный ключ, что позволяет отслеживать баланс на всех адресах кошелька и генерировать новые публичные адреса для приёма средств. Использование каждый раз нового публичного адреса является хорошей практикой, повышающей вашу приватность. Данный кошелёк также можно подключить к собственному полному узлу Dojo, работать с ним через Tor.
Для начала работы с Sentinel придётся сначала создать горячий кошелёк в Samourai wallet, перейти в настройки, пункт «Кошелёк», «Показать segwit ZPUB», перенести его в Sentinel. Эту процедуру можно сделать даже offline, после чего уже в Sentinel с подключенным интернетом связаться с полным узлом. Обратите внимание, что Deposit, PreMix и PostMix имеют разные расширенные публичные ключи. Видеоинструкцию можно посмотреть тут.
Более опытные пользователи могут сгенерировать свой расширенный публичный ключ из seed-фразы и passphrase вручную при помощи специальных сервисов (например, известный и проверенный BIP39 — Mnemonic Code). Крайне рекомендуется при этом проводить такую операцию в offline режиме, а не на сайте, в изолированной среде. Можно либо скачать саму html-страничку, либо скачать файл с github.
Кратко перечислим другие и уже названные базовые правила безопасности при работе с криптовалютами:
- НИКОГДА НИ С КЕМ НЕ ДЕЛИТЕСЬ СВОЕЙ SEED-ФРАЗОЙ!!! Не бывает таких ситуаций, в которых это может быть необходимо. Все попытки получить её от вас — мошенничество.
- Выучите наизусть свою seed-фразу и храните её на всякий случай надёжным способом. Можно разбить её на две части, записать на бумаге и хранить отдельно друг от друга в разных местах.
- Ни в коем случае не записывайте seed-фразу в незашифрованные файлы или онлайн сервисы заметок, сохранённые сообщения и т.п. Если хотите хранить её в электронном виде, то только в хорошо зашифрованном файле, который можно создать, например, в менеджере паролей KeePass. Но и это не желательно, так как доступ к такому файлу может быть утерян.
- Пользуйтесь только некастодиальными решениями для хранения своих средств. Золотое правило крипто-сферы: «Не ваши ключи — не ваши деньги». При необходимости продать или купить криптовалюту на централизованных биржах (CEX) заводите туда только ту сумму денег, которую планируете потратить.
- Используйте BIP39 парольную фразу. Она участвует в генерировании приватных и публичных ключей и повышает безопасность. Даже если ваша seed-фраза будет скомпрометирована, а passphrase нет, ваши средства всё ещё будут в безопасности. Не храните вместе основную фразу и парольную — это делает бессмысленным данную меру.
- Используйте всегда новый адрес для приёма средств. Это повысит вашу приватность. Samourai и Sparrow делают это автоматически.
- Крайне желательно использовать полный узел сети. Можно завести один узел на несколько человек, которым вы доверяете, и подключать к нему лёгкие кошельки. Это так же повысит вашу приватность.
- Используйте CoinJoin, чтобы защитить себя и свои средства.
Особенности расходования PostMix средств
После первого же цикла смешивания, полученные UTXO одинакового размера оказываются в пространстве кошелька PostMix и могут быть наконец потрачены либо смешаны повторно.
Первое и самое главное правило работы с пропущенными через CoinJoin монетами заключается в том, что ни в коем случае нельзя объединять все полученные после смешивания UTXO в одной транзакции. Это полностью обнулит все попытки разорвать связь между разными выходами в процессе CoinJoin транзакции.
При этом если после смешивания вы в целом получили всего один выход, то полное его расходование никак вас не компрометирует. Рассмотрим простой пример. Допустим, пользователь выбирает пул с номиналом 0,01 BTC и планирует получить 1 выход. В нулевой транзакции отправляет на смешивание 0,01 BTC + (комиссии майнерам и пулу). Возможно образуется какая-то грязная сдача, отправляющаяся на аккаунт Deposit. Уже после первого цикла смешивания нельзя будет сказать, кто из 5 участников потратил выход на 0,01 BTC (хоть целиком, хоть частично с образованием сдачи). При этом никто не мешает продолжить участвовать в будущих циклах смешивания со своим PostMix выходами, минимизируя даже вероятностную связь входов и выходов.
Стоит в целом уделять внимание менеджменту UTXO (coin control) на ваших адресах. Особенно в аккаунте PostMix, чтобы не потерять полученные преимущества Whirlpool. И Samourai Wallet, и Sparrow Wallet имеют встроенные средства для удобной работы с UTXO. Демонстрацию работы с UTXO в интерфейсе Samourai Wallet можно посмотреть в данном ролике.
В Samourai Wallet и в основном аккаунте Depsit, и в Postmix (или в окне отправки средств) есть меню в правом верхнем углу, где есть пункт «Показать UTXO». При формировании любой транзакции можно выбрать конкретные UTXO, которые будут использованы в транзакции в качестве входов (долгое нажатие на UTXO). Также в этом меню можно пометить разные выходы, добавить к ним заметки. Можно пометить выход как не подлежащий расходованию, если вы не хотите его смешивать с другими UTXO при формировании транзакции.
Объединяя в транзакциях полученные после смешивания UTXO или сдачу после их частичного расходования, вы уменьшаете количество интерпретаций связей с исходными адресами до смешивания. Но это не является большой проблемой за исключением объединения вообще всех полученных выходов в одной транзакции.
Также можно рекомендовать по возможности пользоваться дополнительными инструментами обеспечения приватности, интегрированными в Samourai Wallet: STONEWALL, STONEWALLx2, Stowaway, Ricochet.
Дополнительную информацию по обеспечению приватности при работе с Bitcoin и анализу блокчейна можно найти в статьях: раз, два, три и четыре.
Обратная сторона CoinJoin
Есть у технологии CoinJoin и определённые издержки. В первую очередь это дополнительные расходы для участия в процессе смешивания (комиссия пула и майнеров платится только один раз на входе). В случае Whirlpool чем больше размер UTXO в пуле, тем больше комиссия пула в абсолютном выражении (но составляет 3,5% или 5% от номинала пула и не зависит от количества UTXO на выходе). Вторым недостатком является усложнение работы с кошельком.
Самой значимой «проблемой» для некоторых может стать следующее. Многие организации по анализу блокчейна и крупные биржи отслеживают происхождение средств в рамках AML-политики. CoinJoin позволяет разорвать связи с исходными UTXO и адресами. Однако факт того, были ли BTC пропущены через CoinJoin транзакции, очень легко выяснить, так как в блокчейне это выглядит весьма характерно (рис. 10). В случае, когда у централизованной биржи возникает подозрение, что средства были пропущены через CoinJoin, они могут отказать в приёме таких средств на биржевой аккаунт или применить иные санкции в отношении своего клиента в зависимости от правил. Решений здесь может быть несколько.
- Если вам не нужно проводить обменные операции с участием фиатных валют, то стоит вообще воздержаться от использования централизованных бирж (CEX) и обратить внимание на децентрализованные биржи (DEX: например, Uniswap) или их агрегаторы (например, 1inch или Odos). Обращайте внимание на используемую сеть. Тут уже понадобится мультивалютный кошелёк (типа MetaMask или Core) и мост для переноса BTC на другие сети (лучше всего нативно встроенный в Core). Да, это непростой вариант, это целый мир Web3.
- Пользоваться P2P обменниками или расчётами за наличные. Это не так надёжно, как CEX, но такие агрегаторы, как BestChange позволяют найти хороший надёжный вариант.
- Использовать встроенные в Samourai wallet инструменты для сокрытия факта участия в CoinJoin. Например, Ricochet (подойдёт для больших сумм).
Заключение
После прочтения данной статьи у некоторых людей может возникать вопрос «А зачем нужно всё это усложнение, если есть Monero?». Monero действительно по умолчанию обеспечивает максимальную приватность и настоящую анонимность за счёт реализованных в ней технологий. Если вам нужно совершить однократную чувствительную транзакцию и есть возможность сделать это в Monero, то действительно лучше воспользоваться этим вариантом. Однако есть несколько причин актуальности CoinJoin.
Во-первых, Monero не Bitcoin :) BTC является фундаментальным активом в крипто-сфере и многими используется в качестве долгосрочной инвестиции. XMR, валюта в сети Monero, не может выполнять функцию инвестиционного актива. BTC наиболее известная криптовалюта, которую принимают все, кто вообще принимает криптовалюты, в отличие от XMR. XMR в принципе присутствует далеко не на всех площадках по обмену. У XMR есть конкретное полезное применение — совершение анонимных транзакций.
Во-вторых, если вы владеете BTC, то для вас имеет смысл заботиться о своей приватности, в чём как раз поможет CoinJoin. В противном случае любой человек сможет проследить всю вашу активность через блокчейн обозреватель, узнать сколько у вас есть средств и куда вы их отправляли. Это может быть небезопасно в определённых ситуациях: угрозу могут представлять, как государственные спецслужбы, так и обычные преступники.
В-третьих. Да, можно сделать кольцевой обмен BTC-XMR-BTC на какой-нибудь площадке без KYC, тем самым тоже разорвав связь с первичными выходами и адресами и оставшись с BTC. Однако этот приём не повышает приватность использования BTC. Все ваши дальнейшие действия с полученными BTC так же будут связаны между собой, как и до обмена. Вы всё равно оставите множество следов в виде метаданных. Также существует риск потери средств. Стоит отметить, что при таком обмене можно получить BTC с ещё более тёмной историей, чем те, что были у вас, что создаст дополнительные проблемы при попытке их продать: ведь связь с историей проданных вам BTC не разрывается!
В-четвёртых. В силу особенностей обеспечения анонимности в сети Monero, XMR довольно проблематично использовать для оплаты подписок и донатов с вопросами, что так любят делать патроны SVTV :)
Это основные причины того, почему стоит выбирать CoinJoin, а не Monero.
Samourai wallet и Whirlpool являются уникальными инструментами для безопасного и приватного использования Bitcoin. Они предоставляют возможность работы с тремя отдельными аккаунтами адресов (Deposit, PreMix и PostMix), что позволяет удобно и без риска компрометации пользоваться смешанными и не смешанными средствами. Возможность бесплатно продолжать участвовать в процессе смешивания своих UTXO из аккаунта PostMix повышает количество интерпретаций экспоненциально с каждым циклом, а, следовательно, и ваш уровень приватности. Тем самым вы ещё и помогаете другим пользователям быстрее осуществить смешивание.
CoinJoin не делает Bitcoin анонимным, но позволяет значительно повысить приватность и безопасность его использования за счёт разрыва детерминированной связи исходных и конечных UTXO (и адресов). Это позволяет сохранить псевдонимность и не раскрывать свой баланс и прошлые действия с вашими средствами.
Данная статья не является рекламой продуктов от команды Samourai Wallet, автор не имеет конфликта интересов и никак не аффилирован с Samourai Wallet.