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.
Практические рекомендации
- Используйте кошелёк с coin control (Sparrow Wallet, Electrum).
- Помечайте все UTXO при получении: откуда, зачем.
- Не смешивайте KYC и не-KYC UTXO в одной транзакции.
- Консолидируйте мелкие UTXO в период низких комиссий, но осознанно.
- Следите за мемпулом перед отправкой.