Введение
Биткойн часто называют цифровыми деньгами, но это сомнительное сравнение. Если Алиса заплатит Бобу десять долларов наличными, Боб понятия не будет, откуда взялись деньги. Если позже он отдаст его Кэрол, она не сможет сделать вывод, что им когда-то владела Алиса.
Биткойн отличается своей присущей ему публичной природой. За историей данной монеты (точнее, неизрасходованного вывода транзакции или UTXO) может легко наблюдать любой. Это немного похоже на запись суммы транзакции и имен участников на счете каждый раз, когда он используется.
Тем не менее, псевдонимность публичного адреса гарантирует, что личности пользователей не будут легко раскрыты. Тем не менее, Биткойн не является полностью частным. Анализ блокчейна становится все более сложным и позволяет все более эффективно связывать адреса с идентификационными данными. Помимо других методов наблюдения, специальная организация может деанонимизировать пользователей криптовалюты. Чтобы исправить это, за последние годы появились методы отключения транзакций.
Что такое смешивание монет?
В широком смысле, смешивание монет может относиться к любой деятельности, которая включает в себя запутывание средств путем замены их другими. Однако в сфере криптовалюты смешивание монет обычно означает услугу, предоставляемую третьей стороной. Обычно провайдеры услуг берут монеты пользователей (и небольшую комиссию) и возвращают монеты, не имеющие связи с отправленными. Эти услуги также известны как тумблеры или миксеры.
Безопасность и анонимность таких централизованных сервисов, конечно, сомнительны. Пользователи не имеют никакой гарантии, что их деньги будут возвращены им миксером или что возвращенные монеты не будут каким-либо образом испорчены. Дополнительный аспект, который следует учитывать при использовании микшера, заключается в том, что IP-адреса и адреса биткойнов могут быть зарегистрированы третьей стороной. В конечном итоге пользователи отказываются от контроля над своими средствами в надежде получить обратно несвязанные средства.
Возможно, более интересный подход существует в виде транзакций CoinJoin, которые создают значительную степень правдоподобного отрицания. То есть после CoinJoin никакие доказательства не могут с уверенностью связать пользователя с его предыдущими транзакциями. Многие решения CoinJoin представляют собой децентрализованную альтернативу миксерам. Хотя в этом может участвовать координатор, пользователям не нужно жертвовать хранением своих средств.
Что такое CoinJoin?
Транзакции CoinJoin были первоначально предложены разработчиком биткойнов Грегори Максвеллом в 2013 году. В своей теме он дает краткий обзор того, как структурированы эти транзакции и как можно добиться значительного повышения конфиденциальности без каких-либо изменений в протоколе.
По сути, CoinJoin предполагает объединение входных данных нескольких пользователей в одну транзакцию. Прежде чем объяснить, как (и почему), давайте взглянем на структуру базовой транзакции.
Биткойн-транзакции состоят из входов и выходов. Когда пользователь хочет совершить транзакцию, он принимает свои UTXO в качестве входных данных, указывает выходные данные и подписывает входные данные. Важно отметить, что каждый вход подписывается независимо, и пользователи могут установить несколько выходов (идущих на разные адреса).

Если мы посмотрим на данную транзакцию, состоящую из четырех входов (0,2 BTC каждый) и двух выходов (0,7 BTC и 0,09 BTC), мы можем сделать несколько различных предположений. Во-первых, мы наблюдаем за тем, как происходит платеж: отправитель отправляет кому-то один из выводов и возвращает себе сдачу. Поскольку они использовали четыре входа, больший выход, вероятно, предназначен для получателя. Обратите внимание, что в выходных данных нам не хватает 0,01 BTC, то есть комиссии, выплачиваемой майнеру.
Также возможно, что отправитель хочет создать большой UTXO из более мелких, поэтому он консолидирует меньшие входные данные, чтобы получить желаемый результат в 0,7 BTC.
Другое предположение, которое мы можем сделать, основано на том факте, что каждый вход подписывается независимо. В этой транзакции входные данные могут подписываться до четырех разных сторон. И в этом заключается принцип, который делает CoinJoining эффективным.
Как работает CoinJoin?
Идея состоит в том, что несколько сторон будут координировать свои действия для создания транзакции, каждая из которых предоставляет входные данные и желаемые выходные данные. Поскольку все входные данные объединены, становится невозможным с уверенностью сказать, какой выход принадлежит какому пользователю. Рассмотрим диаграмму ниже:

Здесь у нас есть четыре участника, которые хотят разорвать связь между транзакциями. Они координируют свои действия между собой (или через специального координатора), чтобы объявить входные и выходные данные, которые они хотели бы включить.
Координатор возьмет всю информацию, превратит ее в транзакцию и попросит каждого участника подписать ее перед трансляцией в сеть. После того как пользователи подписали транзакцию, ее нельзя изменить, не став недействительной. Таким образом, нет риска, что координатор сбежит с деньгами.
Транзакция служит своего рода черным ящиком для смешивания монет. Помните, что мы эффективно уничтожаем UTXO, чтобы создавать новые. Единственная связь между старым и новым UTXO, которая у нас есть, — это сама транзакция, но мы, конечно, не можем различать участников. В лучшем случае мы можем сказать, что участник предоставил один из входных данных и, возможно, является новым владельцем полученного результата.
Но даже это никоим образом не гарантировано. Кто сказал, что, глядя на приведенную выше транзакцию, в ней участвуют четыре участника? Этот один человек отправляет свои средства на четыре своих адреса? Два человека совершают две отдельные покупки и возвращают по 0,2 BTC каждый на свой адрес? Четыре человека отправляют к новым участникам или обратно к себе? Мы не можем быть уверены.
Конфиденциальность через отрицание
Самого факта существования реализаций CoinJoin достаточно, чтобы поставить под сомнение методы, используемые для анализа транзакций. Вы можете сделать вывод, что CoinJoin имел место во многих случаях, но вы все еще не знаете, кому принадлежат выходные данные. По мере того, как их популярность растет, предположение о том, что все входные данные принадлежат одному и тому же пользователю, ослабевает – это огромный скачок в обеспечении конфиденциальности в более широкой экосистеме.
В предыдущем примере мы говорим, что транзакция имела набор анонимности 4 — владельцем выхода может быть любой из четырех участвующих участников. Чем больше набор анонимности, тем меньше вероятность того, что транзакции могут быть связаны с их первоначальным владельцем. К счастью, недавние реализации CoinJoin позволяют пользователям легко объединять свои входные данные с десятками других, обеспечивая высокую степень отрицания. Недавно была успешно выполнена транзакция с участием 100 человек.
Заключительные мысли
Инструменты для смешивания монет — важное дополнение к арсеналу любого пользователя, серьезно относящегося к своей конфиденциальности. В отличие от предлагаемых обновлений конфиденциальности (таких как конфиденциальные транзакции), они совместимы с протоколом в его нынешнем виде.
Для тех, кто доверяет честности и методологии третьих сторон, услуги микширования являются простым решением. Для тех, кто предпочитает поддающуюся проверке альтернативу, не связанную с хранением, альтернативы CoinJoin предпочтительны. Технически опытные пользователи могут сделать это вручную или с помощью программных инструментов, которые абстрагируют более сложные механизмы. Уже существует несколько таких инструментов, популярность которых только растет, поскольку пользователи стремятся к большей конфиденциальности.

