Это смысловой перевод статьи
https://bitcoinmagazine.com/articles/coinjoin-combining-bitcoin-transactions-to-obfuscate-trails-and-increase-privacy-1465235087Автор: Aaron van Wirdum
6 июня 2016 г
CoinJoin: объединение транзакций в биткойнах, чтобы запутать следы и повысить конфиденциальностьБиткойн не совсем анонимный . Хотя адреса биткойнов не обязательно связаны с подлинными личностями, мониторинг незашифрованной одноранговой сети, анализ блокчейна и политика «Знай своего клиента» (KYC) или правила по борьбе с отмыванием денег (AML) могут многое узнать о том, кто использует биткойны и для чего.
Это не очень хорошо с точки зрения конфиденциальности. Пользователи биткойнов не обязательно хотят, чтобы мир знал, где они тратят свои деньги, что они зарабатывают или сколько у них есть, в то время как компании могут не хотеть передавать детали транзакций конкурентам – чтобы назвать некоторые примеры.
Кроме того, биткойны отслеживаются, "грязные" монеты потенциально стоят меньше, чем другие биткойны, что противоречит взаимозаменяемости. Это может даже бросить вызов ценностному предложению биткойна как денег. Но есть потенциальные решения для повышения конфиденциальности и улучшения взаимозаменяемости.
CoinJoin - это решение, которое уже давно существует.
ОписаниеПо своей сути протокол Биткойн состоит из транзакций. Все эти транзакции полностью раскрыты в блокчейне, что означает, что любой может видеть, с каких адресов отправлены биткойны и на какие адреса. Если некоторые из этих адресов связаны с идентичностями реального мира, это может выявить, кто с кем совершил сделку или для чего. Это противоречит конфиденциальности и, в частности, взаимозаменяемости.Кроме того, каждая конкретная транзакция тратит один или несколько “входов”, ссылаясь на адреса, с которых отправляются биткойны. Эти входы тратятся на "выходы", ссылаясь на адреса, на которые отправляются биткойны. Это создает еще один вызов да безопасную частную жизнь и взаимозаменяемость, так как все входные адреса, как правило , принадлежат одному и тому же пользователю: отправителю сделки. Если хотя бы один из всех кластеризованных входных адресов может быть привязан к реальной идентичности, все они являются таковыми.
CoinJoin - предложенный в 2013 году разработчиками Bitcoin Core и Blockstream Грегори Максвеллом - предназначен для решения обеих этих проблем. Это запутывает след биткойнов и нарушает предположение, что все входные адреса принадлежат одному и тому же пользователю.
ИдеяКонцепция CoinJoin довольно проста.
По сути, CoinJoin позволяет нескольким пользователям объединять все входы и выходы нескольких транзакций в одну большую транзакцию. Эта единственная транзакция тратит биткойны с разных адресов на разные адреса - и поскольку ни один из отправляющих адресов не платит, то между ними нет никакой связи.
(Это можно сравнить с группой людей, которые складывают свои деньги вместе и ходят по магазинам. Хотя каждый может убедиться, что никто не тратит больше, чем должен, покупатели не обязательно будут тратить именно те счета, которые они первоначально положили в общий кошелек)
В биткойнах это можно сделать совершенно безопасно. Все входные данные требуют соответствующей подписи от их соответствующего владельца, в то время как содержание транзакции не может быть изменено после добавления подписи. Таким образом, участники транзакции CoinJoin просто объявляют, какие входы и выходы они хотят включить в транзакцию, и подписывают транзакцию, только если эти входы и выходы правильно включены. Как только все участники подписали (и только после того, как они подписали), транзакция транслируется.
Ключевая особенность CoinJoin: как только транзакция транслируется и включается в блокчейн, невозможно узнать, куда и куда попали биткойны; даже получатели транзакции не будут знать, с каких адресов они получили деньги.
Кроме того, CoinJoin улучшает конфиденциальность даже тех, кто не использует его вообще. Поскольку комбинация входных данных больше не обязательно означает, что все входные адреса принадлежат одному и тому же пользователю, кластеризация стала менее мощным инструментом аналитики в целом.
На практикеCoinJoin не требует каких-либо изменений в протоколе Биткойн, и его уже существует несколько реализаций. Основное различие между некоторыми версиями заключается в том, как создается транзакция CoinJoin.
Самый простой способ создать транзакцию CoinJoin - через выделенный сервер. Любой, кто хочет использовать CoinJoin, просто подключится к серверу, чтобы указать, какие входы и выходы должна включать транзакция. Затем сервер создает большую совокупную транзакцию и отправляет ее обратно для подписания всеми участниками. DarkWallet - биткойн-кошелек, ориентированный на конфиденциальность, который, похоже, застрял в своей альфа-фазе - использует серверную модель, как и популярный веб-кошелек Blockchain, хотя его эффективность была поставлена под сомнение в прошлом.
Основная проблема серверной модели заключается в том, что тот, кто контролирует сервер, обычно имеет доступ к данным, предоставленным отдельными участниками. Таким образом, этот сервер представляет единую точку отказа с точки зрения конфиденциальности и функциональности. Существуют потенциальные решения для криптографической маскировки данных транзакций даже с сервера, но это пока теоретически.
Существуют также децентрализованные решения CoinJoin, которые создают одноранговые транзакции CoinJoin или, по крайней мере, без какого-либо конкретного центрального посредника. Там было несколько попыток в этом направлении, в том числе Coinmux , Coinjumble , CoinJoiner и инструмент CoinJoin бывшего разработчика DarkWallet Амира Тааки. Но ни один из них не используется широко, и поэтому не очень полезен – "coinjoining" имеет смысл только тогда, когда есть с кем объединиться.
Более поздний подход к стратегии CoinJoin, который намеревается решить эту проблему, - это JoinMarket : площадка для транзакций CoinJoin. Пользователи могут предложить место в транзакции CoinJoin за небольшую плату или купить доступ к транзакции CoinJoin самостоятельно. Создатели JoinMarket считают, что стимул смешивать монеты в обмен на комиссионные должен генерировать достаточную ликвидность, чтобы сделать рынок успешным, в то время как его конкурентный характер должен поддерживать низкие комиссионные. Действительно, JoinMarket относительно хорошо используется по сравнению с альтернативами, а книга заказов (на момент написания) предлагает тысячи биткойнов для смешивания.
Наконец, другой кошелек, ориентированный на конфиденциальность, Samourai Wallet , в настоящее время включает в себя тип имитации CoinJoin, предназначенный для того, чтобы отбросить любого, кто анализирует данные блокчейна. Эта опция делает транзакции похожими на CoinJoin-транзакции, тогда как в действительности все входы и выходы принадлежат одному и тому же пользователю. (В этом году Samourai Wallet планирует расширить возможности встроенного и кросс-кошелькового микширования, которые могут также использовать функциональность CoinJoin.)
Минусы и компромиссы CoinJoin может быть полезен - он не идеален.
Самое главное, в то время как CoinJoin отлично справляется с смешиванием входов и выходов, этого недостаточно, если суммы раскрываются. Если один вход посылает 4,9 биткойна, другой вход посылает 2,7 биткойна, а третий вход посылает 0,8 биткойна, в то время как один выход получает 4,9 биткойна, один получает 2,7 биткойна, а третий получает 0,8 биткойна, тогда просто анализировать входы и выходы.
Потенциальным решением этой проблемы, конечно же, являются конфиденциальные транзакции . Так как конфиденциальные транзакции маскируют отправленные суммы (но не входные и выходные данные), CoinJoin и конфиденциальные транзакции являются потенциально мощной комбинацией.
Еще один риск - это Sybil attack . Казалось бы, несколько участников транзакции CoinJoin могут быть одним и тем же лицом, контролирующим конкретного участника.
(Если девять из десяти входов и выходов принадлежат одному агенту АНБ, отправляющему биткойны самому себе, он будет знать, какой из оставшихся выходных данных отправляет биткойны, а на какие оставшиеся выходные.)
Не существует простого решения проблемы Sybil attack, но по мере того, как более подлинные пользователи смешивают свои монеты, становится значительно сложнее успешно их отследить.
Что подводит нас к следующему пункту: CoinJoin по-прежнему хлопотен. Почти нет кошельков, в которых он встроен, и те, которые действительно используются (и полагаются на центральный сервер). JoinMarket, вероятно, является наиболее успешной реализацией на сегодняшний день, но все же требует специального программного обеспечения и дополнительных сборов (хотя и небольших).
Но интересное событие на горизонте может исказить эти стимулы: подписи Шнорра . С помощью Segregated Witness подписи Шнорра могут позволять объединять все подписи в транзакции CoinJoin в одну подпись. Эта эффективность должна привести к снижению платы за транзакцию на вход и, возможно, стимулировать использование наиболее частного и удобного в использовании решения.