Введение
Биткоин часто позиционируется как цифровые деньги, но это спорное утверждение. Если Алиса платит Бобу десять долларов наличными, Боб не знает, откуда взялись эти деньги. Если после это он захочет передать их Кэрол, она не сможет узнать, что они когда-то были у Алисы.
Биткоин отличается своей публичной природой. История данной монеты (точнее, выхода неизрасходованных транзакций или 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.
Другое предположение, которое мы можем сделать, - каждый вход подписан самостоятельно. Данная транзакция можен иметь до четырех сторон, подписавших входы. В этом и заключается принцип, делающий CoinJoin эффективным.
Как работает CoinJoin?
Идея заключается в том, что участвовать в транзакции будут несколько сторон, внося средства и указывая желаемый выход. Так как входы становятся объединенными, становится невозможно точно сказать, какой вход какому пользователю принадлежит. Рассмотрим схему ниже:
Здесь есть четыре участника, желающих разорвать связь между транзакциями. Они объединяются между собой (или через специального координатора), чтобы объявить входы и выходы, которые хотели бы включить.
Координатор получает всю информацию, включает данные в транзакцию, и каждый участник подписывает ее перед тем, как отправить в сеть. Как только пользователи ее подтверждают, транзакция не может быть изменена, не став недействительной. Таким образом, нет риска того, что координатор похитит средства.
Транзакция служит чем-то вроде черного ящика для миксинга монет. Вспомните, что мы уничтожаем UTXO для создания нового. Единственная связь между старым и новым UTXO, которая у нас есть, - это сама транзакция, но мы не можем различить ее участников. В лучшем случае мы можем сказать, что участник вложил средства и, может быть, на выходе получил средства.
Но даже это не гарантировано. Кто может сказать, рассматривая вышеупомянутую сделку, что там четыре участника? Может, это один человек отправляет свои средства на четыре адреса? Или два человека совершают две отдельные покупки и возвращают по 0,2 BTC на свои адреса? Или четыре человека отправляют новым участникам или обратно самим себе? Мы не можем быть уверенными.
Конфиденциальность через отрицание
Сам факт существования CoinJoin достаточен для того, чтобы поставить под сомнение методы анализа транзакций. В большинстве случаев вы можете понять, что был использован CoinJoin, но не можете узнать, кому были переведены средства. С ростом популярности предположение о том, что входные данные принадлежат одному пользователю, стало необоснованным, что привело к резкому массовому повышению конфиденциальности экосистеме.
Мы сказали, что транзакция из предыдущего примера имела набор анонимности из четырех входов, получателем которых мог быть любой из четырех вовлеченных участников. Чем больше набор анонимности, тем меньше вероятность того, что транзакции могут быть связаны с первоначальным владельцем. Новейшие реализации CoinJoin позволяют пользователям надежно объединять свои входные данные с десятками других, обеспечивая высокую степень отрицания. Недавно была успешно выполнена транзакция с 100 участниками.
Реализации
Имело место много проектов, которые пытались сделать CoinJoin неизрасходованных транзакций пользователей возможным. В настоящее время активны 3 из них:
Я постараюсь вкратце описать каждый инструмент.
Заключение
Инструменты для миксинга монет являются важным дополнением к арсеналу любого пользователя, серьезно относящегося к своей конфиденциальности. В отличие от предлагаемых обновлений конфиденциальности (таких как конфиденциальные транзакции), они совместимы с протоколом в таком виде, в каком он существует на сегодняшний день.
Для тех, кто доверяет надежности и методологии третьих сторон, простое решение - миксинговые сервисы. Для тех, кто предпочитает прозрачные и не хранящие средства сервисы, в качестве альтернативы подходит CoinJoin. По этому принципу можно осуществлять транзакции самостоятельно, если пользователи технически подкованы, или с помощью программных инструментов, являющихся абстракцией более сложных механизмов. На данный момент уже существует несколько таких инструментов, популярность которых продолжает расти, поскольку пользователи стремятся к большей конфиденциальности.