UTXO (Unspent Transaction Output) — это модель учёта в ряде блокчейнов (в первую очередь Bitcoin (BTC)), где состояние кошелька описывается набором непотраченных выходов транзакций.
Каждый UTXO — это как отдельная «монета» с конкретным номиналом и правилом траты (скрипт/ключ). Транзакция в UTXO-модели тратит одни UTXO целиком и создаёт новые UTXO для получателей и, как правило, «сдачи».
Понимание UTXO важно, если вы хотите разбираться в комиссиях, «сдаче», приватности и работе биткоин-кошельков.
Базовые моменты
- Атомарность.
UTXO тратится всегда целиком. Если его номинал больше нужной суммы, формируется выход «сдачи» на адрес отправителя.
- Ключи и права траты.
Право потратить UTXO доказывается подписью владельца соответствующим приватным ключом (см. также криптокошелёк).
- Параллельность обработки.
Независимые UTXO проще обрабатывать в параллельных потоках — это повышает масштабируемость и упрощает валидацию.
- Приватность и анализ.
Каждая «монета» прослеживается по цепочке входов/выходов; совокупность UTXO в транзакции даёт аналитикам информацию о связях адресов.
- Комиссия.
В Bitcoin комиссия не прописывается отдельным полем — это разница между суммой входов и суммой выходов (см. комиссии).
Как это работает пошагово
Предположим, у вас в кошельке есть два 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 BTC (получатель),
- 0.1499 BTC (ваша сдача).
Если подходящих по сумме UTXO нет, кошелёк может «склеивать» несколько мелких или, наоборот, «дробить» крупные. То, какие именно UTXO брать во входы, решает алгоритм coin selection, влияющий на комиссию, размер транзакции и приватность.
Сравнение моделей учёта
| Критерий | UTXO (например, Bitcoin) | Аккаунт-модель (например, Ethereum) |
|---|---|---|
| Состояние | Набор независимых «монет»-выходов (UTXO). | Баланс на адресе + nonce. |
| Расходование | Тратятся целые UTXO, создаются новые выходы. | Баланс адреса уменьшается на сумму и комиссию. |
| Параллельная валидация | Независимые UTXO легко валидировать параллельно. | Сложнее параллелить из-за общего баланса и nonce. |
| Приватность и связи | Анализируется граф входов/выходов, «сдача» даёт дополнительные связи. | История движения по адресу, связи проще отследить по одному счёту. |
| Смарт-логика | Ограниченные сценарии скриптов. | Полноценные смарт-контракты и сложные dApp. |
Практические аспекты UTXO
- Сдача (change).
Кошелёк почти всегда создаёт отдельный выход сдачи. В современных клиентах сдача уходит на новый адрес вашего кошелька (повышает приватность). Важно понимать, что не вся «сумма транзакции» уходит получателю.
- Coin selection.
Кошельки используют разные стратегии выбора входов:
- минимальное число входов (меньше размер транзакции → ниже комиссия);
- «старые сначала» (тратятся давние UTXO);
- комбинации по сумме и возрасту.
Стратегия влияет на итоговую комиссию и профиль приватности.
- Пыль (dust).
Мелкие UTXO, которые экономически невыгодно тратить: комиссия за их расход может превышать их номинал. Консолидацию таких выходов лучше делать в периоды низких комиссий.
- Мультиподписи и скрипты.
UTXO может требовать несколько подписей (m-of-n), ограничения по времени и другие условия. Это используется в корпоративных кошельках и сложных сценариях self-custody.
- Холодное хранение.
Для крупных наборов UTXO используют холодные кошельки и процедуры офлайн-подписи (см. Self-custody).
- Двойная трата.
До финального подтверждения получатель рискует: теоретически возможна двойная трата. Для значимых сумм не стоит полагаться на «0-conf» платежи.
Плюсы и ограничения модели UTXO
| Аспект | Плюсы | Минусы / ограничения |
|---|---|---|
| Масштабируемость | Независимость UTXO упрощает параллельную проверку транзакций. | Управление множеством «монет», рост размера транзакции при большом числе входов. |
| Приватность | Можно планировать адреса сдачи и coin selection, разделять потоки. | Анализ графа UTXO позволяет связывать адреса и кошельки. |
| Безопасность | Простая модель владения: «кто может подписать — тот тратит». | Ошибки UX (адрес сдачи, утечка ключей) ведут к безвозвратной потере средств. |
| Комиссии | Гибко планируется расход UTXO под текущие комиссии сети. | Комиссия зависит от размера транзакции (числа входов/выходов), а не только от суммы перевода. |
Чек-лист пользователя UTXO-сетей
- Храните приватные ключи и seed-фразу офлайн; используйте надёжный кошелёк.
- Всегда проверяйте адрес получателя и (при возможности) адрес сдачи на экране устройства.
- Консолидируйте «пыль» в периоды низких комиссий, чтобы не копить экономически бесполезные мелкие UTXO.
- При крупных платежах планируйте число входов: меньше входов → меньший размер транзакции и комиссия.
- Не смешивайте «чистые» UTXO и монеты с сомнительной историей в одной транзакции — это важно для комплаенса и аналитики.
- Не принимайте значимые платежи без подтверждений; учитывайте политику финальности в вашей сети.
Частые вопросы (FAQ)
Почему моя транзакция в Bitcoin оказалась дороже, чем ожидалось? В UTXO-модели комиссия зависит от размера транзакции в байтах. Если кошелёк взял много мелких UTXO во входы, транзакция «растолстеет», и итоговая комиссия вырастет.
Зачем вообще нужна «сдача», почему нельзя частично потратить UTXO? UTXO тратится только целиком. Разница между суммой входов и суммой выходов — это комиссию + сдача. Остаток возвращается к вам как новый UTXO на адрес сдачи.
Можно ли собрать одну «крупную монету» вместо десятков мелких? Да. Это делается транзакцией консолидации: много входов → один выход. Делать лучше, когда комиссии в сети минимальны.
Чем UTXO-модель лучше или хуже аккаунтной модели? UTXO упрощает параллельную валидацию и даёт чёткую модель владения «монетой», но усложняет UX и управление входами/сдачей. Аккаунт-модель удобнее для смарт-контрактов и dApp, но сложнее масштабируется на уровне базовой архитектуры.
Как повысить приватность в UTXO-сетях? Используйте новые адреса для входящих платежей и сдачи, продуманные стратегии coin selection, разделяйте «рабочие» кошельки и «хранилища». Полной анонимности базовый протокол не даёт, но грамотная практика заметно усложняет анализ.
