Когда они слышат слово «CoinJoin», первое, что приходит в голову многим относительно новым биткойнам, вероятно, это реализации ZeroLink Wasabi Wallet и Samourai Wallet. За последние несколько лет эти два проекта сделали биткойн приватность почти мейнстримом, сделав его намного проще и доступнее.
Если вы новичок в этой сфере, возможно, вы не знали о том факте, что проект JoinMarket предоставляет инструменты CoinJoin пользователям биткойнов с 2015 года.
Совместные транзакции с целью подрыва предположений об общем владении были идеей, выдвинутой разработчиком биткойнов Грегом Максвеллом еще в январе 2013 года, а затем формализованной в концепции CoinJoin в августе того же года.
Идея просуществовала два года, прежде чем было выпущено что-то, реализующее ее, и для этого была причина: проблема с общей идеей, которая привела к неудачам с предыдущими попытками, такими как Dark Wallet от Амира Тааки, заключалась в привлечении ликвидности. CoinJoin может быть очень полезным инструментом, но если нет никого, кто желает присоединиться к CoinJoin с вами, или нет возможности их найти, если они хотят, это не принесет никакой пользы.
Проблема заключалась в том, как убедить людей присоединиться к этому первоначальному пулу, чтобы сделать его снежным комом в более крупный пул ликвидности и пользователей. Решение JoinMarket было довольно простым, но блестящим в то время: предоставить рыночный механизм, чтобы поставщики стабильной ликвидности могли реально зарабатывать деньги на предоставлении ликвидности пулам CoinJoin.
JoinMarket функционирует вокруг того, что по сути является рынком, управляемым книгой заказов, состоящим из маркет-мейкеров и маркет-тейкеров, покупающих и продающих ликвидность CoinJoin, чтобы анонимизировать свою деятельность в сети.
Создатели могут сидеть и ждать, сколько времени потребуется с открытыми предложениями, пока не прибудут покупатели, которые захотят заплатить за их услуги. Это решает проблему пользователя, когда он сидит без дела и вечно ждет, когда с кем-нибудь пообщается. Маркет-мейкеры, стремящиеся получить прибыль, мотивированы взимаемыми сборами, чтобы просто всегда быть онлайн и ждать покупателей; и берущие, стремящиеся к уединению, заинтересованы платить эти сборы. Это беспроигрышный вариант для всех.
По своей архитектуре, а также потенциалу для улучшения координации, JoinMarket предлагает потенциально более децентрализованную версию микширования монет по сравнению с более известным ZeroLink. Вот как.
Как координируется микширование: ZeroLink Vs. JoinMarket
Общая архитектура ZeroLink по сравнению с JoinMarket сильно отличается.
В случае с Wasabi и Samourai существует единый сервер-координатор, управляемый создателем кошелька и закодированный в кошельке. Все пользователи участвуют в CoinJoin, связываясь с этим центральным сервером и «регистрируясь», чтобы дождаться, пока достаточное количество пользователей не зарегистрируется для создания CoinJoin. После того, как необходимое количество пользователей присутствует и зарегистрировано, сервер-координатор подписывает скрытые учетные данные, представляющие право на создание выходных данных в транзакции CoinJoin, и пользователь отключается и повторно подключается через новое соединение Tor для регистрации своих выходных данных транзакции.
Это препятствует тому, чтобы координатор узнал, какие входы соответствуют каким выходам. Пользователи платят координатору за его роль в содействии CoinJoin. В этой модели нет стимула предоставлять ликвидность, за исключением повышения конфиденциальности, и, несмотря на проблемы с прошлыми попытками, такими как Dark Wallet, похоже, это отлично работает для Васаби и Самурая.
С другой стороны, у JoinMarket есть книга заказов, в которой производители размещают рекламу, позволяющую покупателям выбирать из доступных предложений производителей (в настоящее время это делается через Internet Relay Chat [IRC]).
Создатели подключатся к книге заказов с уникальным идентификатором, затем они разместят предложение в книге заказов, содержащее следующую информацию: комиссия, которую производитель взимает за смешивание с получателями, сумма, которую производитель будет вносить в комиссию майнеров, а затем минимальную и максимальная номинальная стоимость, в которой они будут делать смешанные выходы. Они также предоставляют людям возможность конфиденциально подключиться к ним напрямую.
Когда покупатели хотят присоединиться к CoinJoin, они загружают книгу заказов, и их клиент выбирает производителей для микширования на основе их настроек. После того, как клиент выберет производителя, получатель отправит временный открытый ключ для шифрования и начнет общаться с производителем через зашифрованные сообщения через IRC (стоит отметить, что несколько участников могут быть подключены к одному создателю одновременно. время). Если все стороны соглашаются, они подписывают транзакцию, включая комиссию тейкера производителю, и отправляют ее в сеть.
Из-за того, как работает эта координация, производители действительно изучают результаты берущих в процессе координации строительства CoinJoin. Чтобы смягчить это, в JoinMarket есть функция «кувырка», при которой клиент получателя будет несколько раз смешиваться с разными производителями, пока не наберется установленное количество миксов. Это гарантирует, что ни один производитель не сможет развернуть всю историю микширования отдельного получателя, потому что каждый производитель на «маршруте падения» изучает соединения только в этой одной транзакции.
Эти различия имеют множество общих последствий с точки зрения архитектуры дизайна для JoinMarket, так как мы увидим некоторые аспекты текущего состояния проекта, а также планы на будущее.
Как смягчаются атаки Сибиллы: ZeroLink Vs. JoinMarket
Атаки Сибиллы - в этом контексте один пользователь, притворяющийся множеством пользователей, чтобы подорвать конфиденциальность, создавая фальшивую «толпу», чтобы другие могли спрятаться, в то время как на самом деле они составляют всю «толпу», - фундаментальная проблема любого протокола микширования в Биткойне. . Если вся толпа состоит из вас и злоумышленника Сибиллы, и никого другого, злоумышленник знает все ваши монеты, и вы не получили уединения с их точки зрения. В конце концов, у этой проблемы нет фундаментального решения, все, что вы можете сделать, чтобы смягчить ее, увеличив стоимость проведения атаки.
В случае с ZeroLink проблема решается за счет взимания платы координатором. Пока затраты на сборы майнера выше, чем доход от сборов, которые сервер-координатор собирает в качестве сборов, даже координатор понесет чистые убытки, пытаясь Сибил атаковать своих собственных пользователей.
Для JoinMarket вопрос немного сложнее. Вы должны защитить берущих, в их случае, от создателей Сибил, атакующих книгу заказов, так что берущий только смешивается с ними и раскрывает всю их историю смешивания злонамеренному создателю. Но вы также должны защищать берущих от атак производителей, запрашивая CoinJoins, а затем выходя из протокола после того, как производитель раскрывает свои результаты получателю.
Это позволяет злоумышленнику отделить вклады этого производителя в будущие транзакции от получателей, с которыми они взаимодействуют. Повторение этого несколько раз подряд против одного и того же производителя позволит им деанонимизировать тех, кто смешался с ними.
В этой системе есть два механизма, обеспечивающих соответствующую защиту для каждого класса атак: первый, для борьбы с получателями, шпионящими за создателями, является доказательством дискретной логарифмической эквивалентности (защита номер два в этой статье, также известная как PoDLE).
Основная идея заключается в том, что для пары закрытый / открытый ключ для биткойн-UTXO вы можете сгенерировать второй другой открытый ключ, соответствующий закрытому ключу, и создать доказательство с нулевым разглашением (ZKP), показывающее, что они оба используют один и тот же закрытый ключ. После предоставления второго ключа и доказательства производителю, получатель раскрывает первый открытый ключ (и), соответствующий выходным данным, которые они хотят смешать.
Теперь эта настройка позволяет производителю публиковать второй открытый ключ и ZKP для всех других производителей, не доксируя фактические результаты получателя - таким образом, если получатель, который координирует свои действия с первоначальным производителем, пытается повторно использовать этот вывод, чтобы шпионить за несколькими производителями на в то же время все остальные производители увидят, что первый открытый ключ получателя совпадает с опубликованным вторым ключом и ZKP. Тогда они откажутся раскрыть свои собственные результаты злоумышленнику. Это увеличивает стоимость слежения за результатами производителей, требуя, чтобы у получателя были уникальные выходные данные для каждого производителя, за которым они шпионят, вместо того, чтобы иметь возможность повторно использовать одни и те же выходные данные для атаки нескольких производителей.
Второй механизм защиты - это защита получателей от злоумышленников, которые в книге заказов притворяются множеством разных создателей, что позволяет злоумышленнику распутать смешение получателей, которые в конечном итоге смешиваются только с атакующим.
Этот механизм называется облигацией верности, которая, по сути, просто требует большого количества биткойнов и времени для их блокировки. Создатели, которые это делают, могут затем подписывать и публиковать сообщения с помощью этого ключа, чтобы подтвердить контроль над монетами с привязкой по времени. Клиенты берущих, если они настроили своего клиента на использование облигаций верности, затем будут взвешивать свой выбор производителей, чтобы использовать их, чтобы отдать предпочтение тем, у которых более высокое количество времени, связанного с ценностью, заблокировано в облигациях верности. Облигации верности взвешиваются квадратом того, сколько монет заблокировано, т. Е. если вы заблокируете четыре биткойна, они будут иметь вес 16; пять будут весить как 25; шесть будут взвешены как 36 и т. д.
Обоснование здесь состоит в том, что вы получаете сложную выгоду как производитель с тем большим количеством монет, которые вы блокируете (вас чаще выбирают покупающие клиенты), поэтому, если несколько честных производителей создают очень большие облигации верности, они резко повышают стоимость для создателей Sybiling. которым придется копировать эту большую сумму залога верности для каждого из своих поддельных удостоверений личности в книге заказов. То есть, если три честных производителя вложат по 10 биткойнов в облигации верности, злоумышленник должен будет потратить 30 биткойнов, чтобы иметь 50% шанс быть выбранным для смешивания, это будет стоить 60 биткойнов, чтобы иметь шанс 66%. быть выбранным и т. д.
Чем более честные производители используют облигации верности, тем выше стоимость атак Сибиллы для злонамеренных создателей.
Как можно улучшить координационный механизм JoinMarket
В случае ZeroLink все координируют свои действия через централизованный координационный сервер - это явная часть дизайна системы и модели доверия с точки зрения надежности. Если координатор выйдет из строя, никто не сможет CoinJoin, пока он не вернется.
JoinMarket работает в системе книги заказов, чтобы попытаться избежать этой центральной точки отказа, но, как упоминалось выше, в настоящее время он использует IRC в качестве уровня хостинга и связи для книги заказов. IRC - это потенциальная центральная точка отказа для JoinMarket, как и сервер-координатор для ZeroLink. Поскольку проект построен на децентрализованной координации CoinJoins, в долгосрочной перспективе эту зависимость от IRC необходимо заменить чем-то более надежным.
Одно из наиболее разработанных предложений - реализовать некую схему сервера каталогов, аналогичную той, что использует проект Tor. В сети Tor клиенты подключаются к набору серверов, управляемых участниками Tor, которые отправляют им все узлы в сети Tor, через которые они могут строить луковые маршруты.
Идея JoinMarket заключалась бы в том, чтобы иметь аналогичный набор серверов, которые будут снабжать клиентов открытыми предложениями всех производителей. Этими серверами должен управлять кто-то другой, а не производители, потому что у каждого производителя будет стимул рекламировать себя только на своем собственном сервере каталогов, чтобы собрать больше сборов. Также должно быть сложно присоединиться к набору серверов каталогов, иначе злоумышленники могут развернуть большое их количество, и Сибилла атакует всех пользователей, которые подключаются только к вредоносным серверам.
Облигации верности потенциально могут решить здесь проблему Сибиллы, а также воспрепятствовать производителям запускать серверы каталогов. Фиксация монет в облигации верности для сервера каталогов оставит им меньше монет, которые можно заблокировать в облигации производителя, что потенциально приведет к тому, что меньшее количество клиентов-получателей будет выбирать их для миксов.
Также есть доказательство концепции и предложение Адама Гибсона по интеграции c-lightning в JoinMarket для использования в качестве уровня обмена сообщениями. В контексте серверов каталогов это могло бы облегчить метод монетизации для них как отдельных объектов, использующих Lightning Network. Серверы каталогов могут взимать с производителей небольшие суммы через Lightning за рекламу себя в каталоге.
Как можно обновить протокол координации JoinMarket
Как обсуждалось выше, производители изучают выходы берущих во время одиночных CoinJoins, поэтому существует режим тумблера, позволяющий берущим смешиваться с несколькими производителями и смягчать это.
Однако есть лучшее решение, по крайней мере, в том случае, когда несколько берущих одновременно разговаривают с одним производителем, и они могут координировать переговоры напрямую друг с другом, а не только через производителя (если есть только один берущий. разговаривая с производителем, это не поможет, потому что производитель знает, что каждый продукт, который им не принадлежит, принадлежит получателю). CoinShuffle - это протокол, который эффективно выполняет то, что скрытые учетные данные выполняют в ZeroLink, чтобы сохранить конфиденциальность информации от координатора, за исключением децентрализованного способа для группы без центрального координатора.
Представьте, что у вас есть Алиса, Боб и Чарли, которые все хотят CoinJoin друг с другом (они уже определились с номиналом выходов CoinJoin), и все трое генерируют временный открытый ключ для шифрования сообщений.
Чарли дает свой открытый ключ Бобу, затем Боб дает Алисе свой собственный открытый ключ, а также ключ Чарли. Итак, у нас есть ситуация, когда у Алисы есть открытые ключи Боба и Чарли, у Боба есть открытый ключ Чарли, а у Чарли только свой.
Алиса берет адрес, на который она хочет отправить свой вывод, и шифрует его ключом Чарли, но затем берет это зашифрованное сообщение и шифрует его открытым ключом Боба, вкладывая его, как матрешки. Затем она передает это Бобу, который расшифровывает свой слой только для того, чтобы найти зашифрованное сообщение Чарли, которое он не может открыть. Затем Боб берет адрес, на который он хочет отправить свой вывод, и шифрует его ключом Чарли. Он передает оба сообщения Чарли. Чарли теперь расшифровывает оба сообщения и находит адреса, на которые Алиса и Боб хотят отправлять свои выходные данные, но он не знает, какой адрес кому принадлежит (и помните, что ни Алиса, ни Боб также не узнали адреса друг друга).
Затем Чарли создает и подписывает CoinJoin, передает его Алисе и Бобу для подписи, и он отправляется в сеть. Все участники этого процесса знают, что их выходные данные были созданы правильно, но они не знают, кому принадлежит какой из двух других адресов. Этот процесс может быть расширен для гораздо более крупных групп, и если получатели могут общаться друг с другом напрямую, прежде чем обращаться к производителям, этот протокол можно использовать для защиты конфиденциальности получателей от отдельных производителей без необходимости многократно сбрасывать монеты с разными сторонами.
Как можно улучшить структуру транзакции JoinMarket
Наибольшее сходство между ZeroLink и JoinMarket заключается в том, что они полагаются на аналогичные обозначенные выходы для создания неоднозначности в отношении того, какие входы сопоставляются с какими выходами в транзакции.
В то время как JoinMarket использует произвольные суммы, в отличие от предварительно определенных сумм в ZeroLink, в рамках одной транзакции CoinJoin все номиналы комбинации должны быть одинаковыми.
CoinjoinXT - это предложение Гибсона, чтобы потенциально избавиться от необходимости полагаться на это так строго (это также может быть реализовано ZeroLink). Основная идея состоит в том, чтобы воспользоваться преимуществами ECDSA Multiparty Computation или MuSig теперь, когда Taproot активирован, и создать цепочку предварительно подписанных транзакций с использованием адресов с несколькими подписями, которые выглядят как обычные адреса с одной подписью.
Когда кто-то наблюдает за блокчейном, часто делаются два больших предположения: во-первых, все входы в транзакции принадлежат одному человеку (большое предположение, что CoinJoins ломается); и во-вторых, что платеж означает, что контроль над средствами был передан.
Итак, что, если бы несколько сторон объединились, чтобы заблокировать все свои средства на многоподписном адресе, который не похож на один, и предварительно подписать длинную цепочку транзакций, которые выглядят так, как будто один человек медленно тратит деньги с течением времени, но на самом деле это не так. просто отклеивая деньги и отдавая их первоначальным владельцам небольшими фрагментами?
Что, если бы некоторые из этих выходов платежей были на самом деле частными каналами Lightning между двумя участниками CoinjoinXT, чтобы убедиться, что наблюдатель не может отслеживать цепочку платежей и складывать суммы в какой-то момент в будущем?
Это может открыть совершенно новую дверь с точки зрения гибкости для типов CoinJoins, в которых участвуют люди, и степени конфиденциальности, которую они создают. Если нормальный CoinJoin вопиет в комнату: «Я собираюсь уйти и исчезнуть!» тогда CoinjoinXT может быть эквивалентом тихого ускользания из вечеринки незамеченным.
Децентрализованное будущее
В целом, JoinMarket, честно говоря, был своего рода нишевым инструментом в экосистеме, несмотря на то, что существует с 2015 года, учитывая необходимость запуска полного узла для его использования. CoinJoin действительно стал доступным, более широко используемым и понятным инструментом только после того, как ZeroLink вышел на рынок в форме Wasabi и Samourai.
Оба являются очень ценными инструментами, но, в конце концов, это сервисы, построенные вокруг централизованных компаний - хотя и ненадежные сервисы, построенные таким образом, что невозможно потерять деньги, взаимодействуя с ними, - но тем не менее сервисы. Что будет, если компании закроются? Будет ли разработка по-прежнему продвигаться по тому же пути, учитывая, что в настоящее время она финансируется этими компаниями?
Таким инструментам есть место в этом пространстве, и в них тоже есть свои плюсы. Та же самая динамика финансирования, которая ставит под сомнение выживание инструмента в случае неудачи компании, гарантирует наличие большого количества ресурсов для его разработки, пока компания выживет. Но есть место и децентрализованному инструменту, не зависящему от одной компании. Прогресс может быть медленнее, и проблемы могут быть более сложными для решения, но если это удастся, конечный результат будет гораздо более надежным и адаптируемым.
Нет ничего плохого в услугах и компаниях в этом пространстве, но для каждой услуги и компании, где можно создать децентрализованную альтернативу, эта альтернатива должна существовать как еще один вариант. Как и сам биткойн, однажды вы можете оказаться в нем остро нуждающимся.
Это гостевой пост Шиноби. Выраженные мнения являются полностью их собственными и не обязательно отражают точку зрения BTC Inc или Bitcoin Magazine .
Источник