Что такое UTXO простыми словами
UTXO (Unspent Transaction Output, «неизрасходованный выход транзакции») — это базовая единица учёта в Bitcoin. В отличие от банковского счёта или Ethereum-кошелька, в Bitcoin нет общего «баланса». Вместо этого сеть хранит огромный список конкретных кусков монет, каждый из которых был получен в результате какой-то транзакции и ещё никем не потрачен.
Твой «баланс» в Bitcoin — это сумма всех твоих UTXO, привязанных к твоим адресам. Когда ты отправляешь BTC, кошелёк выбирает один или несколько UTXO как входы, тратит их полностью и создаёт новые UTXO: один на адрес получателя, второй — сдачу обратно тебе.
Представь, что у тебя в кошельке наличные купюры: одна на 500 ₽, одна на 1000 ₽, одна на 5000 ₽. Чтобы заплатить 700 ₽, ты не «вычитаешь баланс», а отдаёшь конкретные купюры (например, 1000) и получаешь сдачу (300). UTXO — это те самые «купюры» в Bitcoin.
UTXO vs Account-based модель Ethereum
Это два фундаментально разных подхода к учёту средств в блокчейнах.
| Параметр | UTXO (Bitcoin) | Account-based (Ethereum) |
|---|---|---|
| Что хранится | Список неизрасходованных выходов | Балансы аккаунтов |
| Параллельность | Высокая (можно тратить разные UTXO) | Низкая (один nonce на аккаунт) |
| Приватность | Лучше (новые адреса) | Хуже (одна история) |
| Сложность смарт-контрактов | Высокая | Низкая |
| Размер ноды | ~7 ГБ UTXO set | ~150 ГБ state |
UTXO лучше для денег и приватности. Account-based удобнее для сложных приложений и DeFi.
Как работают UTXO на практике
Допустим, ты получил BTC двумя транзакциями: 0.3 и 0.5. У тебя теперь два UTXO. Когда ты отправляешь 0.6 BTC, кошелёк может:
- Взять оба UTXO как входы (0.3 + 0.5 = 0.8)
- Создать выход на 0.6 BTC получателю
- Создать сдачу 0.2 BTC обратно на твой адрес (с учётом комиссии)
- Старые два UTXO сжигаются, появляются новые два
Этот процесс выбора UTXO называется coin selection. Современные кошельки (Sparrow, Wasabi, Electrum) дают пользователю несколько алгоритмов на выбор:
- Branch and Bound — минимум комиссии за счёт точного подбора
- Knapsack — максимально точное совпадение суммы
- Single Random Draw — для приватности (случайный выбор)
UTXO размером меньше комиссии за их трату называются dust. Например, UTXO в 1000 сатоши при комиссии 50 sat/vB будет «съеден» комиссией при попытке потратить. Скам-проекты иногда специально шлют dust на твой адрес для деанонимизации. Не используй такие UTXO — отметь их как «не тратить» через coin control.
Coin control и UTXO-приватность
Coin control — это функция выбора конкретных UTXO при отправке. Большинство мобильных кошельков (Trust Wallet, BlueWallet) её не дают, а Sparrow, Electrum, Wasabi и Bitcoin Core — поддерживают полностью.
- Видишь список всех своих UTXO с источником происхождения
- Можешь отмечать какие тратить, а какие беречь
- Не смешиваешь UTXO с разных источников (например, с биржи Bybit и с майнинг-пула)
- Защищаешь приватность — никто не свяжет твой основной кошелёк с тестовым
Если хочется максимум приватности — используй CoinJoin-сервисы (Wasabi, JoinMarket). Они смешивают UTXO многих пользователей в один пакет, и после этого невозможно отследить «кому принадлежит какой выход». Полученные после CoinJoin UTXO можно безопасно использовать для платежей или продавать через обменник BTC→RUB.
При получении BTC от разных источников используй разные адреса. Например: один адрес для бирж (Bybit, MEXC), второй для P2P-сделок, третий для майнинга. Не смешивай эти UTXO в одной транзакции — это сохраняет приватность операций.
Что нужно знать новичку
UTXO — концепция нетривиальная, но её базу важно понимать.
- «Баланс» в Bitcoin — это сумма UTXO, а не запись на счёте
- Каждая отправка тратит UTXO целиком и создаёт сдачу — это нормально
- Не отправляй UTXO меньше 0.0001 BTC — комиссия их съест
- Используй coin control для приватности — это бесплатно и легально
- Не путай UTXO с балансом аккаунта в Ethereum — там по-другому
- Все крупные кошельки автоматически считают UTXO правильно, новичку не нужно вмешиваться