Блокчейн/Уровень II · Механика/2.2 Транзакции/Урок 4
Выходы сдачи
Остаток, который раскрывает отправителя, и алгоритмы, пытающиеся его скрыть
МатериалыОбозреватель блоков (например, mempool.space или blockchain.com)Биткоин-кошелёк как минимум с двумя UTXOЭлектронная таблица для записи идентификаторов транзакций, сумм входов и структуры выходов
Любопытство
- Почему транзакция с оплатой точной суммы часто выглядит иначе, чем транзакция, требующая сдачи?
- Как аналитик может определить, какой выход — платёж, а какой — сдача, не видя внутреннего состояния кошелька?
- Что заставляет алгоритм выбора монет предпочесть чуть более высокую комиссию более низкой?
Исследование
- Входы биткоин-транзакций работают как неделимые бумажные купюры. Если Алиса хочет заплатить 5 BTC, но у неё есть только один UTXO на 20 BTC, она не может разделить этот вход. Ей придётся потратить все 20 BTC и получить обратно 15 BTC в качестве сдачи (за вычетом комиссии). Поэтому большинство транзакций содержат два выхода: один для получателя и один для возврата сдачи.
- На уровне протокола нет различия между выходом «платежа» и выходом «сдачи». Оба — стандартные скрипты блокировки, например P2PKH или P2WPKH, ожидающие выполнения условий траты. Какой выход есть какой, знает только создатель транзакции. Отсутствие такого различия — ключевой механизм приватности: если адрес сдачи и адрес платежа выглядят одинаково, внешние наблюдатели не могут однозначно их различить.
- Кошельки используют алгоритмы выбора монет (coin selection), чтобы определить, какие входы потратить. Если у Алисы есть два UTXO по 50 000 сатоши и она хочет заплатить Бобу 85 000 сатоши, она тратит оба входа (100 000 сатоши) и создаёт два выхода: один для Боба (85 000 сатоши) и один для себя (15 000 сатоши за вычетом комиссии). Такая форма — один или несколько входов и ровно два выхода — одна из самых распространённых в блокчейне.
- Ради приватности сдачу принято отправлять на новый, ранее не использовавшийся адрес из пула ключей кошелька. Повторное использование старого адреса для сдачи позволяет аналитикам блокчейна связать прежнюю активность с новой транзакцией. В оптимальном случае и платёж, и сдача отправляются на новые адреса, поэтому для внешних наблюдателей они выглядят одинаково.
- Не каждому платежу нужна сдача. Алгоритмы выбора монет, такие как Branch and Bound, описанный Марком Эрхардтом в 2016 году и используемый в Bitcoin Core, ищут набор входов, сумма которых настолько близка к сумме платежа плюс комиссия, что небольшой остаток можно просто отдать в комиссию. Транзакция без сдачи дешевле, не создаёт нового мелкого выхода и даёт аналитикам на одну зацепку меньше.
- Очень мелкие выходы создают собственную проблему. Ниже порога пыли (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 предложение о том, почему отсутствие технического различия между выходами платежа и сдачи — одновременно преимущество для взаимозаменяемости и проблема для приватности отдельного пользователя.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.
- M. Erhardt, 'An Evaluation of Coin Selection Strategies' (2016)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023)
- Bitcoin Core documentation on transaction relay policies and dust limits
- Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System