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

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

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



