Введение

Bitcoin часто называют цифровыми деньгами, но это сомнительное сравнение. Если Алиса заплатит Бобу десять долларов наличными, у Боба не будет понятия, откуда взялись эти деньги. Если позже он отдаст их Кэрол, она не узнает, что Алиса когда-то владела этими деньгами.

Bitcoin отличается своей открытой природой. История любой монеты (точнее, выхода неизрасходованных транзакций или UTXO) может быть с легкостью просмотрена кем угодно. Эта концепция схожа с записью суммы сделки и имен сторон при каждой транзакции.

Тем не менее, псевдоним публичного адреса гарантирует, что лицо пользователя не будет легко раскрыто. Но Bitcoin не полностью частным. Анализ блокчейна становится все более изощренным и способным все более эффективно связывать адреса с личными данными. Наряду с другими методами отслеживания некоторые организации могут деанонимизировать криптопользователей. Чтобы избежать этого, со временем появились технологии разрыва связей между транзакциями.


Что такое смешение монет?

В широком смысле смешивание монет может означать любую активность, связанную с запутыванием истории средств и заменой их данных. Однако в сфере криптовалют смешивание монет обычно означает услугу, предоставляемую третьей стороной. Как правило, поставщики услуг берут монеты пользователей (и небольшую комиссию), а возвращают монеты, не имеющие привязки к отправленным. Эти услуги также известны как тумблеры или миксеры.

Безопасность и анонимность таких централизованных сервисов под вопросом. У пользователей нет гарантий, что они получат свои средства обратно и что они не будут испорчены каким-либо образом. Кроме того, при использовании миксера следует обратить внимание на то, что адреса интеллектуальной собственности и Bitcoin могут регистрироваться третьей стороной. В результате пользователи отказываются от контроля за своими средствами, надеясь получить обратно несвязанные средства.

Более интересный подход существует в виде транзакций CoinJoin, обеспечивающих большую степень секретности. То есть после CoinJoin никакие доказательства не могут связать пользователя с его предыдущими транзакциями. Многие решения CoinJoin являются децентрализованной альтернативой миксерам. Несмотря на то, что в схеме может находиться координатор, пользователям не нужно жертвовать хранением своих средств.


Что такое CoinJoin?

Транзакции CoinJoin были первоначально предложены разработчиком Bitcoin, Gregory Maxwell, в 2013 году. Он дал краткое описание того, как структурированы такие транзакции и как может быть достигнут рост уровня конфиденциальности без изменения протокола.

Суть CoinJoin – объединение средств нескольких юзеров в одну транзакцию. Прежде чем мы объясним, как (и почему), давайте посмотрим структуру базовой транзакции.

Bitcoin транзакции состоят из входов и выходов. Когда пользователь хочет совершить транзакцию, он берет свои UTXO в качестве входных данных, указывает исходные данные и подписывает входящие данные. Важно подчеркнуть, что каждый вход подписывается самостоятельно и пользователи могут устанавливать несколько выходов (снятие по разным адресам).


зображення прикладу транзакції з чотирма входами і двома виходами


Если мы посмотрим на эту транзакцию, состоящую из четырех входов (0,2 BTC каждый) и двух выходов (0,7 BTC и 0,09 BTC), мы можем сделать несколько предположений. Во-первых, мы наблюдаем, как происходит платеж – отправитель посылает кому-то средства и возвращает себе часть. Поскольку используются четыре входа, больший выход, вероятно, предназначен для получателя. Заметьте, что на выходах не хватает 0.01 BTC – это вознаграждение майнеру.

Также возможно, что отправитель хочет создать большой UTXO из более мелких, поэтому он объединяет меньшие входные данные, чтобы получить желаемый результат 0,7 BTC.

Другое предположение, которое мы можем сделать – каждый вход подписан самостоятельно. Эта транзакция может иметь до четырех разных сторон, подписывающих входы. И в этом заключается принцип, который делает CoinJoin эффективным.


Как работает CoinJoin?

Идея состоит в том, что участвовать в транзакции будут несколько сторон, внося средства и указывая желаемый выход. Поскольку входы становятся объединенными, становится невозможно точно сказать, какой вход какому пользователю принадлежит. Рассмотрим схему ниже:


зображення прикладу coinjoin


Здесь у нас четыре участника, которые хотят разорвать связь между транзакциями. Они объединяются между собой (или через специального координатора), чтобы объявить входы и выходы, которые хотели бы включить. 

Координатор получает всю информацию, включающую данные в транзакцию, и каждый участник подписывает ее перед тем, как отправить в сеть. Как только пользователи подтверждают ее, транзакция может быть изменена, не став недействительной. Поэтому нет риска, что координатор сбегает со средствами. 

Такая транзакция служит чем-то вроде черного ящика для смешивания монет. Помните, что мы эффективно уничтожаем UTXO для создания нового. Единственная связь между старым и новым UTXO, который у нас есть – это сама транзакция, но мы не можем различить ее участников. В лучшем случае мы можем сказать, что участник предоставил один из выходов и, возможно, новый владелец конечного выхода.

Но это даже не гарантировано. Кто скажет, глядя на вышеприведенную транзакцию, что в ней четыре участника? Может, это один человек присылает свои средства на четыре адреса? Может два человека совершают две отдельные покупки и возвращают по 0,2 BTC каждый в свой адрес? Или два человека совершают две отдельные покупки и возвращают по 0,2 BTC в свои адреса? Мы не можем быть уверены.


Конфиденциальность из-за отрицания

Сам факт существования реализации CoinJoin достаточно, чтобы подвергнуть сомнению методы, используемые для анализа транзакций. В большинстве случаев вы можете понять, что было использовано CoinJoin, но не можете узнать, кому были перечислены средства. С ростом популярности CoinJoin, предположение о том, что входные данные принадлежат одному пользователю, стало необоснованным, что привело к резкому массовому повышению конфиденциальности экосистемы.

Мы сказали, что транзакция по предыдущему примеру имела набор анонимности из четырех входов, получателем которых мог быть любой из четырех привлеченных участников. Чем больше набор анонимности, тем меньше вероятность того, что транзакции могут быть связаны с их первичным владельцем. Новые реализации CoinJoin позволяют пользователям надежно совмещать свои входящие данные с десятками других, обеспечивая высокий уровень отрицания. Недавно была успешно выполнена транзакция на 100 человек.


Заключительные мнения

Инструменты для смешивания монет являются важным дополнением к арсеналу любого пользователя, который серьезно относится к конфиденциальности. В отличие от предлагаемых обновлений конфиденциальности (таких как конфиденциальные транзакции), наши варианты совместимы с текущим протоколом. 

Для доверяющих надежности и методологии третьих сторон простым решением будет использование услуг смешения. Для тех, кто предпочитает прозрачные и некастодиальные сервисы, в качестве альтернативы подходит CoinJoin. Это может быть сделано вручную для технически подкованных пользователей или с помощью программных инструментов, отвлеченных от более сложных механизмов. Уже сейчас существует несколько таких инструментов, популярность которых только растет по мере того, как пользователи стремятся к большей конфиденциальности.