UTXO — модель учёта в некоторых блокчейнах (в первую очередь Bitcoin), где состояние кошелька описывается набором «непотраченных выходов транзакций». Каждый UTXO — это «монета» с конкретным номиналом и правилом траты (скрипт/ключ). Транзакция «тратит» одни UTXO целиком и создаёт новые UTXO для получателей и, как правило, «сдачи».
Базовые моменты
Атомарность: UTXO тратится всегда целиком; если сумма больше нужной — формируется выход «сдачи» на адрес отправителя.
Пара ключей: право потратить UTXO доказывается подписью владельца соответствующим приватным ключом (см. также кошелёк).
Параллелизм: узлам проще обрабатывать независимые UTXO — это повышает масштабируемость и упрощает параллельную валидацию.
Приватность/анализ: каждая «монета» прослеживается по цепочке; совокупность входов/выходов транзакции влияет на анализ связей.
Комиссия: комиссия не прописывается явно — это разница между суммой входов и суммой выходов (см. комиссии).
Как это работает (пошагово)
У вас есть набор UTXO: например, 0.3 BTC и 0.2 BTC на ваших адресах.
Вы хотите отправить 0.35 BTC. Кошелёк выбирает UTXO 0.3 + 0.2 = 0.5 BTC как входы.
Формируются выходы:
0.35 BTC — получателю;
0.1499 BTC — «сдача» обратно на ваш адрес;
0.0001 BTC — остаётся как комиссия майнерам.
Подписание: кошелёк подписывает входы соответствующими ключами.
Публикация и подтверждение: узлы проверяют подписи и отсутствие двойной траты; после включения в блок создаются новые UTXO (0.35 и 0.1499).
Важно: если подходящих UTXO нет, кошелёк может «дробить» или «склеивать» монеты. Алгоритм выбора входов (coin selection) влияет на комиссию, приватность и «пыль» (dust).
Сравнение моделей учёта
| Критерий | UTXO (напр., Bitcoin) | Аккаунт-модель (напр., Ethereum) |
|---|---|---|
| Состояние | Набор независимых «монет»-выходов. | Баланс на адресе + nonce. |
| Расходование | Тратятся целые UTXO, создаются новые. | Баланс уменьшается на сумму и комиссию. |
| Параллелизм | Легко валидировать независимые UTXO. | Сложнее параллелить из-за общего баланса/nonce. |
| Приватность/связи | Видны связи входов/выходов, возможна «сдача». | Простые переводы по балансу; связи — через историю адреса. |
| Смарт-логика | Ограниченные сценарии скриптов. | Полноценные смарт-контракты. |
Практические аспекты
- Сдача (change). Всегда проверяйте, что кошелёк отправляет сдачу на ваш адрес (лучше — автоматически сгенерированный новый).
- Coin selection. Кошельки используют стратегии (напр., «минимум входов», «старшие сначала»). Это влияет на итоговый размер транзакции (и комиссию), а также на «деанонимизацию» связей.
- Пыль (dust). Мелкие UTXO иногда экономически невыгодно тратить (комиссия съедает выгоду). Планируйте консолидацию в периоды низких комиссий.
- Мультиподписи и скрипты. UTXO может требовать несколько подписей (m-of-n) или содержать иные условия траты; это полезно для корпоративных и совместных сценариев.
- Холодное хранение. Для крупного набора UTXO используйте холодный кошелёк и процедуры офлайн-подписи (см. Self-custody).
- Двойная трата. До финальности получатель рискует: избегайте «zero-conf» для ценных товаров (см. двойная трата).
Плюсы и ограничения модели UTXO
| Аспект | Плюсы | Минусы/ограничения |
|---|---|---|
| Масштабируемость валидации | Независимость UTXO упрощает параллельную проверку. | Управление множеством «монет», рост размера транзакций при множестве входов. |
| Приватность | Можно планировать coin selection и адреса сдачи. | Анализ графа входов/выходов может связывать личности/кошельки. |
| Безопасность | Простая модель владения: «кто может подписать — тот тратит». | Ошибки в UX (адрес сдачи, утечка ключей) ведут к потере средств. |
| Комиссии | Гибкое планирование трат UTXO под сеть/цену газа. | Комиссия зависит от числа входов/выходов (байты транзакции). |
Чек-лист пользователя UTXO-сетей
1. Держите ключи/сид-фразу офлайн (см. приватный ключ, seed-фраза, кошелёк).
2. Проверяйте адреса получателя и адрес сдачи на экране устройства/кошелька.
3. Периодически консолидируйте пыль при низких комиссиях, чтобы не копить экономически «тяжёлые» мелкие UTXO.
4. Для платежей на большую сумму планируйте число входов заранее — это снизит размер и стоимость транзакции.
5. Избегайте смешивания «чистых» и «подозрительных» UTXO: история монет важна для комплаенса и анализа.
6. Не принимайте значимые платежи без подтверждений; оцените политику финальности для вашей сети.
Частые вопросы (FAQ)
Почему моя транзакция дороже, чем ожидалось? В UTXO-модели цена прямо зависит от размера транзакции в байтах: больше входов/выходов → дороже при том же тарифе за байт.
Зачем нужна «сдача», нельзя ли «частично» потратить UTXO? Нельзя: UTXO тратится целиком, а остаток возвращается сдачей как новый UTXO на ваш адрес.
Можно ли собрать одну «крупную монету»? Да, объединив несколько UTXO в один выход — это называется консолидацией (делайте при низких комиссиях).
Чем UTXO лучше/хуже аккаунт-модели? UTXO проще для параллельной валидации и имеет чёткую модель владения «монетой», но сложнее по UX и управлению множеством входов/сдачи. Аккаунт-модель удобнее для сложных контрактов.
Как защититься от анализа связей? Используйте новые адреса для сдачи/платежей, продуманные стратегии coin selection и разделение «рабочих»/«хранилищных» кошельков. Полной анонимности базовый протокол не даёт.