Хотя вайтпепер биткоина предполагает, что конфиденциальность была целью разработки протокола, анализ блокчейна часто может нарушить конфиденциальность пользователей. Это проблема. Пользователи биткоина не всегда хотят, чтобы мир знал, как они хранят и тратят свои цифровые деньги, в то время как для компаний это вовсе может преполагать коммерческую тайну.
Но есть решения для восстановления конфиденциальности. Новое решение было предложено в списке рассылки bitcoin-dev на этой неделе разработчиком Bitcoin и Lightning под псевдонимом «ZmnSCPxj». Называемое Payswap, решение предлагает простой, но эффективный прием, чтобы запутать анализ блокчейна путем инвертирования связи между плательщиком и получателем.
Разбиремся как это работает.
Отслеживаемость платежей в биткоине
Типичная транзакция в биткоинах — это платеж от одного лица (плательщика) другому (получателю). Скажем, например, Алиса хочет заплатить Бобу 3 биткоина. Если Алиса владеет «порцией монет» (UTXO) стоимостью ровно 3 монеты, а мы для простоты игнорируем комиссионные, она может создать транзакцию с одним входом (ссылаясь на ее адрес, содержащий 3 монеты) и одним выходом (ссылаясь на адрес Боба). Порция из трех монет по существу переместится с адреса Алисы на адрес Боба. Просто.
Однако, чаще всего, у Алисы не будет куска правильного количества монет, которое она должна заплатить Бобу. Например, Алиса может иметь только поцрии по 2 монеты. В этом случае она все еще может создать транзакцию. Эта транзакция будет иметь два входа (две порции по 2 монеты, предположительно с двух разных адресов), а также два выхода (UTXO): один выход на 3 монеты, привязанный к адресу Боба, и один выход на 1 монету, который она отправит обратно одну монету — на свой собственный адрес Алисы.
К сожалению, именно потому, что такая транзакция является настолько типичной, она раскрывает все детали блокчейн-аналитикам. Они будут считать, что порция из 3 монет представляет собой платеж (Бобу), и что 1 монета возвращается (обратно Алисе). В конце концов, если бы платеж составлял только 1 монету, Алисе не нужно было бы включать два выхода. Это позволяет аналитикам блокчейна отслеживать платежи через блокчейн и, в конечном итоге, позволяет кластеризовать адреса и разрабатывать больше стратегий, нарушающих конфиденциальность.
Как работает Payswap
Payswap по существу заменяет платеж от Алисы Бобу двумя платежами: один от Алисы к Бобу и один от Боба к Алисе. Безопасное выполнение этого требует некоторой технической сложности — подробнее об этом ниже — но давайте пока проигнорируем это.
В этом случае Алиса все также создаст транзакцию с двумя входами: двумя порциями по 2 монеты. Но на этот раз транзакция будет включать только один выход: она отправит все 4 монеты Бобу. Уже сейчас это может смутить блокчейн-аналитиков. Поскольку большинство типичных платежных транзакций включают в себя адрес изменения, а эта транзакция — нет, они могут (ошибочно) предположить, что это транзакция, в которой кто-то, например, переводит свои собственные средства в новый кошелек.
Тем временем Боб также создал бы транзакцию для Алисы. Допустим, у Боба есть куски по 0,6 монеты. Он создал бы транзакцию, которая включает в себя два входа (порции по 0,6 монеты) и два выхода: 1 монета для Алисы и 0,2 монеты в качестве «сдачи». Перевод в этом случае будет выглядеть как обычная транзакция (1 монета от Боба до Алисы).
Если используются разные адреса, блокчейн-аналитик не сможет сказать, что две транзакции, описанные здесь, произошли между одними и теми же людьми (Алиса и Боб). Вместо этого, вдобавок к ложному предположению о транзакции Алисы с Бобом, теперь аналитики могут также иметь неверное предположение о транзакции Боба с Алисой. В целом, они могут подумать, что Боб заплатил Алисе 1 биткоин, в то время как на самом деле Алиса заплатила Бобу 3.
Блокчейн-аналитики, по их ложным предположениям, были бы введены в заблуждение, что принесло бы пользу как Алисе, так и Бобу. Таким образом, если предположения блокчейн-аналитиков достаточно часто разрушаются через подобные уловки, их предположения становятся бесполезными в целом.
Добавление CoinSwap
На самом деле трюк с Payswap будет немного сложнее.
В приведенном выше примере остается проблема, которую нужно решить. Поскольку Алиса и Боб не доверяют друг другу, ни один из них не желает вносить свой платеж в первую очередь, поскольку это позволит другому лицу «исчезнуть» без возврата платежа.
Об этом можно позаботиться с помощью более старого трюка, называемого CoinSwap. Основываясь на атомарных свопах (еще более старый трюк), можно сделать две разные транзакции зависимыми друг от друга; ни одна из сторон не может отказаться от возврата платежа.
Если вы знаете, как работают CoinSwap и / или атомарные свопы, то идея Payswap на самом деле очень проста. Вместо того, чтобы использовать (почти) равные суммы в атомарно связанных транзакциях, Payswap использует неравные суммы; разница составляет оплату.
Как работают атомарные свопы можно узнать в статье: Blockstream запускает альтернативу механизма обмена крипто
Если разбирать более подробно, Payswap, как и атомарные свопы, вводит в уравнение две дополнительные транзакции:
Во-первых, вместо создания транзакции, которая отправляет 4 монеты непосредственно Бобу, Алиса создает транзакцию, которая отправляет монеты в простой смарт-контракт. Из этого смарт-контракта можно получить монеты двумя способами. Вывод может быть заявлен Бобом, если он также включает в себя секретный номер, который сгенерировал сам Боб. Или, если монеты не востребованы Бобом, монеты могут быть возвращены Алисе через некоторое время.
Во-вторых, вместо создания транзакции, которая отправляет монету непосредственно Алисе, Боб также создает транзакцию, которая отправляет монету в смарт-контракт (и 0,2 монеты возвращаются к себе как изменение положения транзакции). Опять же, монета может быть востребована двумя способами. Либо, ее может затребовать Алиса, если она сообщает смарт-контракту тот же секретный номер, который сгенерировал Боб. Или тразакция может быть затребована Бобом через некоторое время (откат отправки тразакции).
В случае технологии Payswap, обе транзакции транслируются в сеть биткоина для включения в блок.
Теперь, когда Боб хочет получить свой платеж (4 монеты), он создает транзакцию из смарт-контракта, созданного Алисой, в том числе сгенерированный им секретный код, требуя получения. При этом он раскрывает свой секретный код в блокчейне биткоина, чтобы Алиса могла его увидеть. С его помощью Алиса может, в свою очередь, создать транзакцию из смарт-контракта, который создал Боб, требуя 1 монету обратно на свой адрес.
Другими словами: Боб может требовать только 4 монеты, позволяя Алисе требовать 1 монету. При этом возможно 2варианта: либо обе транзакции проходят, либо обе отменяются и каждый получает те средства, которые отправил в смарт-конракт.
Если по какой-либо причине Боб не потребует оплаты, срок действия основного смарт-контракта, созданного Алисой, истечет, и она сможет вернуть себе 4 монеты. Боб, чуть позже, также может вернуть себе 1 монету. Без вреда и риска.
Стоит отметить, что эти смарт-контракты могут быть созданы с помощью причудливых математических приемов, чтобы скрыть секретные коды в криптографических сигнатурах, предотвращающих связывание двух транзакций аналитиками через код.
Недостатки Payswap
Конечно, Payswap работает с некоторыми компромиссами.
Наиболее очевидным недостатком является то, что для платежа потребуется четыре транзакции, а не одна. Две транзакции необходимы, чтобы получить средства от Алисы к Бобу, и две транзакции необходимы, чтобы вернуть «изменение» от Боба к Алисе. Это требует больше блоков и, следовательно, больше комиссионных.
Кроме того, оплата требует взаимодействия Алисы и Боба. Алиса не может просто отправить средства на адрес Боба; вместо этого они должны обмениваться данными вне протокола биткоина, чтобы также установить идентификатор (хэш) секретного номера Боба.
Следовательно, решение может быть более полезным в контексте сети Lightning. Маршрутизация платежей в Lightning Network полностью основана на обмене секретными номерами, очень похожем на тот, который Боб сгенерировал в приведенном выше примере, поэтому нетрудно увидеть, как будет применяться тот же трюк. Тем не менее, в Lightning Network дополнительные транзакции не затронут блокчейн, а платежи в любом случае требуют взаимодействия.
Возможно, вы слышали о сети Lightning, но не знаете как сильно она развилась, читате о ней в статье: Bitcoin Lightning больше, чем кажется
Источник: AltStake