MSTR Cat

Блокчейн/Уровень II · Механика/2.2 Транзакции/Урок 4

Выходы сдачи

Остаток, который раскрывает отправителя, и алгоритмы, пытающиеся его скрыть

МатериалыОбозреватель блоков (например, mempool.space или blockchain.com)Биткоин-кошелёк как минимум с двумя UTXOЭлектронная таблица для записи идентификаторов транзакций, сумм входов и структуры выходов

Любопытство

  1. Почему транзакция с оплатой точной суммы часто выглядит иначе, чем транзакция, требующая сдачи?
  2. Как аналитик может определить, какой выход — платёж, а какой — сдача, не видя внутреннего состояния кошелька?
  3. Что заставляет алгоритм выбора монет предпочесть чуть более высокую комиссию более низкой?

Исследование

  1. Входы биткоин-транзакций работают как неделимые бумажные купюры. Если Алиса хочет заплатить 5 BTC, но у неё есть только один UTXO на 20 BTC, она не может разделить этот вход. Ей придётся потратить все 20 BTC и получить обратно 15 BTC в качестве сдачи (за вычетом комиссии). Поэтому большинство транзакций содержат два выхода: один для получателя и один для возврата сдачи.
  2. На уровне протокола нет различия между выходом «платежа» и выходом «сдачи». Оба — стандартные скрипты блокировки, например P2PKH или P2WPKH, ожидающие выполнения условий траты. Какой выход есть какой, знает только создатель транзакции. Отсутствие такого различия — ключевой механизм приватности: если адрес сдачи и адрес платежа выглядят одинаково, внешние наблюдатели не могут однозначно их различить.
  3. Кошельки используют алгоритмы выбора монет (coin selection), чтобы определить, какие входы потратить. Если у Алисы есть два UTXO по 50 000 сатоши и она хочет заплатить Бобу 85 000 сатоши, она тратит оба входа (100 000 сатоши) и создаёт два выхода: один для Боба (85 000 сатоши) и один для себя (15 000 сатоши за вычетом комиссии). Такая форма — один или несколько входов и ровно два выхода — одна из самых распространённых в блокчейне.
  4. Ради приватности сдачу принято отправлять на новый, ранее не использовавшийся адрес из пула ключей кошелька. Повторное использование старого адреса для сдачи позволяет аналитикам блокчейна связать прежнюю активность с новой транзакцией. В оптимальном случае и платёж, и сдача отправляются на новые адреса, поэтому для внешних наблюдателей они выглядят одинаково.
  5. Не каждому платежу нужна сдача. Алгоритмы выбора монет, такие как Branch and Bound, описанный Марком Эрхардтом в 2016 году и используемый в Bitcoin Core, ищут набор входов, сумма которых настолько близка к сумме платежа плюс комиссия, что небольшой остаток можно просто отдать в комиссию. Транзакция без сдачи дешевле, не создаёт нового мелкого выхода и даёт аналитикам на одну зацепку меньше.
  6. Очень мелкие выходы создают собственную проблему. Ниже порога пыли (dust; по умолчанию около 546 сатоши для выходов P2PKH и 294 для P2WPKH) потратить выход стоит дороже, чем он сам, и ноды не ретранслируют транзакции, создающие такие выходы. Аналитики также ищут характерные признаки сдачи: выход с круглой суммой обычно является платежом, а выход, тип адреса которого совпадает с входами, часто оказывается сдачей.

Ключевые факты

  • Входы транзакции неделимы; остаток сверх суммы платежа и комиссии возвращается как сдача, если только он не настолько мал, что его можно добавить к комиссии.
  • На уровне протокола нет технической разницы между выходом сдачи и выходом платежа; какой из них какой, знает только создатель транзакции.
  • Алгоритм выбора монет Branch and Bound (Эрхардт, 2016) ищет наборы входов, которым не нужен выход сдачи.
  • В транзакциях без сдачи нет выхода, возвращающего средства отправителю; любой небольшой остаток уходит в комиссию.
  • Использование для сдачи нового, ранее не встречавшегося адреса не позволяет третьим лицам легко отличить её от выхода платежа.
  • Порог пыли (dust) в Bitcoin Core по умолчанию составляет около 546 сатоши для выходов P2PKH и 294 для P2WPKH.

Упражнение девять, шесть, три, один

9СобратьПеречислите 9 недавних биткоин-транзакций, которые вы наблюдали или создавали. Для каждой укажите количество входов и выходов, а также наличие выхода сдачи.
6СгруппироватьРаспределите эти 9 по 6 категориям в соответствии со структурой: один вход/один выход, несколько входов/два выхода (со сдачей), несколько входов/один выход (без сдачи), coinbase, OP_RETURN или другие сложные структуры.
3Выделить главноеСведите 6 групп к 3 разным последствиям для приватности: насколько легко аналитик может связать выходы с конкретным пользователем.
1КристаллизоватьНапишите 1 предложение о том, почему отсутствие технического различия между выходами платежа и сдачи — одновременно преимущество для взаимозаменяемости и проблема для приватности отдельного пользователя.

Проверка фактов

Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.

Открыть в интерактивной академии →

EN PT ES ZH JA KO DE FR MS