TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Блокчейн & Разработка

20 Apr 2020, 13:15

Открыть в Telegram Поделиться Пожаловаться

Payjoin и Coinjoin: что это и что лучше

На днях вышла новая версия платежного процессора BTCPay Server, которая наделала немало шуму. Главная из новых фишек это поддержка Payjoin (также известный как P2EP, Pay to EndPoint). Шум вызвало заявление разработчиков о том, что Payjoin лучше, чем Coinjoin. Разберемся, что это вообще такое, в чем польза, и кто действительно лучше.

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

Одна из важных особенностей транзакций Биткоина состоит в том, что транзакции могут быть созданы коллективно. Вы можете создать транзакцию, включить в неё свои входы-выходы, подписать их и отдать транзакцию другу, который включит в неё свои входы-выходы, подпишет их и отправит транзакцию в сеть. Транзакции Биткоина позволяют выводить с разных адресов, которые не обязательно должны принадлежать вам. (Кстати, именно так и работает batching транзакций: когда пользователи бирж выводят биткоины на кошельки, биржи выводят их не сразу, а складывают все входы-выходы в одну транзакцию — это снижает нагрузку на сеть Биткоина и снижает комиссии за транзакции.)

Но что, если у вас нету друга, с которым вы могли бы постоянно объединять транзакции? На помощь приходят сервисы и кошельки, которые поддерживают Coinjoin. Самые заметные из них это Wasabi Wallet и Samourai Wallet — пользователи этих кошельков смешивают транзакции друг друга в защищенной и анонимной сети, так чтобы никто из них не смог проанализировать информацию о транзакции другого пользователя. Помимо этого, Coinjoin-транзакции создаются таким образом, чтобы максимально скрыть связь между входами и выходами, чтобы никто со стороны не мог найти, какие входы с какими выходами соотносятся (в транзакциях эта связь явно не указывается). И это создает проблему — проанализировав какое-то количество транзакций, можно явно сказать, какие из них использовали Coinjoin, т. к. все coinjoin-транзакции имеют схожий «отпечаток».

Payjoin решает ту же проблему сокрытия единого владельца входов транзакции, но делает это чуть иначе: он работает при обмене между двумя пользователями и не требует других участников для смешивания входов. Т. к. BTCPay Server это платежный процессор, который связывает покупателей и продавцов, то смешиваются транзакции именно покупателя и продавца.
1. Покупатель создает транзакцию, оплачивающую товар/услугу. Это полностью валидная транзакция, которая содержит входы, выходы и подпись.
2. Покупатель отправляет транзакцию продавцу напрямую — связующим звеном здесь служит сервер BTCPay.
3. Продавец получает транзакцию, добавляет в неё свой вход (т. е. тратит в этой транзакции свои биткоины) и выход (переводит сам себе), меняет сдачу покупателя и комиссию так, чтобы комиссия осталась прежней, и отправляет транзакцию обратно покупателю.
4. Покупатель получает транзакцию, переподписывает её и отправляет в сеть.

Рассмотрим пример того, как входы могут смешиваться в Payjoin:
1. Вы покупаете товар за 1 биткоин.
2. Вы создаете транзакцию и кладете в неё вход, расходующий 3 биткоина. 2 биткоина идут вам на сдачу (создается соответствующий выход).
3.

1.4k 27 19
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot