UTXO (Unspent Transaction Output) — неизрасходованный выход транзакции — фундаментальная единица биткоин-бухгалтерии. Понимание UTXO необходимо для грамотного управления кошельком, снижения комиссий и защиты приватности. Серия на 21ideas: часть 1, часть 2, часть 3.

Банковский счёт против копилки

Лучший способ понять UTXO — сравнить две модели хранения наличных.

Банковский счёт: вы вносите деньги, они смешиваются с деньгами других клиентов. Банк ведёт лишь учёт «вашей» доли. Когда вы снимаете 100 рублей, вы не получаете те же самые купюры — вы получаете эквивалентную сумму из общего пула.

Копилка: каждая купюра хранится отдельно. Если вы положили в копилку пять купюр по 100 рублей, там именно пять купюр по 100. Когда вы вытаскиваете деньги — вы работаете с конкретными купюрами конкретного номинала.

Биткоин работает как копилка, а не как банковский счёт. «Балансом» кошелька является сумма всех хранящихся в нём UTXO — каждый со своим номиналом.

Что такое UTXO

Каждая транзакция в Биткоине имеет входы (inputs) и выходы (outputs):

  • Выход (output) — это запись о том, что определённое количество биткоинов принадлежит определённому адресу.
  • Неизрасходованный выход (UTXO) — это выход, который ещё не был использован как вход в последующей транзакции.

Когда вы получаете биткоины, в блокчейне создаётся новый UTXO на ваш адрес. Когда вы их тратите — UTXO «уничтожается» (используется как вход) и создаётся новый UTXO на адрес получателя, а «сдача» возвращается к вам в виде ещё одного UTXO.

Ключевое отличие от фиата

UTXO может иметь произвольный номинал: 0.00001 BTC, 3.0610477 BTC — любое значение в сатоши. Нет «стандартных купюр».

Получить на кошелёк 0.9 BTC одним переводом — это 1 UTXO номиналом 0.9 BTC. Получить девятью переводами по 0.1 BTC — это, например, 9 UTXO по 0.1 BTC. Суммарный «баланс» одинаков, но управление будет существенно различаться.

Почему UTXO важны

Влияние на комиссии

Размер транзакции определяется количеством входов, а не суммой в биткоинах. Каждый дополнительный UTXO-вход увеличивает объём данных и, следовательно, комиссию.

Отправка 0.6 BTC из одного UTXO на 0.9 BTC — маленькая транзакция (1 вход, 2 выхода). Та же отправка из шести UTXO по 0.1 BTC — транзакция в несколько раз больше (6 входов, 2 выхода); комиссия пропорционально выше.

Вывод: много мелких UTXO увеличивают будущие комиссии, особенно при высокой нагрузке на сеть.

Влияние на приватность

Когда вы используете несколько UTXO в одной транзакции, внешний наблюдатель делает вывод: «все эти UTXO принадлежат одному человеку» (эвристика совместного владения входами). Это основной инструмент блокчейн-аналитики.

Кроме того, если транзакция создаёт сдачу, получатель видит сдачу в блокчейне и может отслеживать её в будущих транзакциях, получая информацию о вашем балансе.

Управление UTXO

Контроль частоты депозитов

Каждое пополнение создаёт новый UTXO. Покупая биткоины ежедневно небольшими суммами и сразу выводя на кошелёк — вы накапливаете сотни мелких UTXO. Более эффективно: выводить реже, но бóльшими суммами или консолидируя монеты — создавая меньше UTXO с более крупными номиналами.

Консолидация UTXO

В периоды низких комиссий имеет смысл объединить (consolidate) несколько UTXO в один: отправить несколько мелких UTXO себе же в одной транзакции. Это снизит будущие комиссии, но ценой приватности — все эти UTXO будут окончательно связаны.

Coin Control (управление монетами)

Функция продвинутых кошельков (Sparrow, Electrum, Blue Wallet), позволяющая осознанно выбрать, какие UTXO использовать в транзакции. Это даёт полный контроль над тем, какую информацию вы раскрываете, и позволяет разделять «чистые» и «грязные» (KYC) UTXO.

CoinJoin

Продвинутая техника: несколько пользователей объединяют свои UTXO в одну транзакцию с одинаковыми номиналами выходов. Аналитику невозможно определить, кто кому заплатил. Было реализовано в Samourai Wallet через Whirlpool и Sparrow Wallet через Whirlpool и JoinMarket до того как разработчиков кошелька Samourai арестовали. Сейчас анонимный разработчик работает над развитием инфраструктуры Ashigaru на основе разработок Sparrow.

Практические рекомендации

  1. Используйте кошелёк с coin control (Sparrow Wallet, Electrum).
  2. Помечайте все UTXO при получении: откуда, зачем.
  3. Не смешивайте KYC и не-KYC UTXO в одной транзакции.
  4. Консолидируйте мелкие UTXO в период низких комиссий, но осознанно.
  5. Следите за мемпулом перед отправкой.

Источники

Дополнительные материалы