UTXO — сумма, созданная предыдущей транзакцией, которую ещё не потратили. Сокращение означает Unspent Transaction Output. Кошелёк может показывать единый баланс, хотя за ним стоят несколько отдельных UTXO, как несколько купюр составляют наличные в кармане. При платеже кошелёк выбирает, какие использовать. Один адрес может получать много платежей и иметь несколько разных UTXO.
У вас два UTXO: 70 000 sat и 50 000 sat, вместе 120 000 sat. Sat — наименьшая единица биткоина. Чтобы заплатить 90 000 sat с комиссией 1 000 sat, кошелёк может использовать оба. Он создаст новый выход 90 000 sat для получателя и новый выход 29 000 sat как сдачу для вас. Оба исходных UTXO расходуются целиком, внутри ничего не остаётся. Это похоже на оплату купюрами с получением сдачи, но суммы не ограничены фиксированными номиналами. Даже два новых выхода на один адрес остаются двумя отдельными UTXO, а не сливаются. [2]
Кошелёк складывает отслеживаемые выходы, но не все из них может немедленно потратить. Watch-only Wallet показывает поступления, хотя сам не имеет приватных ключей для подписи. Другой выход может быть заблокирован до определённого момента. Награда из первой транзакции блока, Coinbase Transaction, должна сначала достичь требуемой зрелости. Очень маленькая сумма тоже может быть технически доступна, но при высоких комиссиях её использование обойдётся дороже её самой. Доступность, право распоряжаться и экономический смысл — разные вопросы. [1]
Каждое используемое UTXO добавляет в транзакцию вход и обычно дополнительные данные. При одинаковой ставке комиссии и сопоставимых типах входов потратить много маленьких сумм дороже, чем одну большую. Coin Control позволяет выбрать конкретные UTXO вручную. Консолидация, то есть объединение в меньшее число крупных сумм, может уменьшить будущую транзакцию, но сегодня требует комиссии. Есть и последствия для приватности: объединённые входы могут подсказать наблюдателю, что ими управляет один человек. Это не безошибочное доказательство, но причина не объединять автоматически средства, истории которых вы хотите держать раздельно. [2] [4]
Одного адреса недостаточно. Каждый выход определяет пара: идентификатор транзакции txid и номер выхода в ней. Такая ссылка называется outpoint. Выход содержит сумму в сатоши и scriptPubKey — запись условий расходования. Для подтверждённого выхода узел также хранит высоту блока создания и признак происхождения из Coinbase Transaction, чтобы проверять зрелость и временные ограничения. Знать адрес или outpoint значит уметь указать на запись, а не получить возможность тратить деньги: для этого нужно выполнить её условия. [1] [2]
Набор подтверждённых UTXO соответствует истории, заканчивающейся конкретным блоком. Узел может дополнительно учитывать mempool, очередь неподтверждённых транзакций: некоторые известные выходы там уже тратятся, а новые только создаются. Статус может измениться и при реорганизации, когда сеть принимает другую допустимую ветвь истории. Для технической проверки Bitcoin Core предоставляет команду gettxout. Параметр include_mempool определяет, учитывать ли ожидающие транзакции. Ответ null говорит лишь, что в этом представлении выход недоступен как UTXO; он не различает выход, которого никогда не было, и уже потраченный. Сравнивая данные, учитывайте состояние узла и способ запроса. [3]
Расходование целого выхода
Чтобы заплатить 600 000 sat, кошелёк выбирает UTXO на 1 000 000 sat. При комиссии 1 500 sat транзакция создаёт платёжный выход 600 000 sat и выход сдачи 398 500 sat. Исходный UTXO расходуется полностью.
Для полной картины прочитайте эту статью вместе с Транзакция, Full Node, Private Key, Кошелёк, Mempool. На эту статью также ссылаются Full Node, Транзакция, Private Key, Кошелёк.
01UTXO — это то же самое, что баланс кошелька?+
Нет. UTXO — один конкретный выход; кошелёк вычисляет баланс по отслеживаемым выходам с учётом их состояния. Не всю показанную сумму обязательно можно потратить немедленно. Сеть отслеживает выходы и условия их расходования, а не один изменяемый баланс счёта.
02Почему множество мелких UTXO увеличивает комиссию?+
Каждый выбранный вход добавляет данные. При сопоставимых типах входов и остальных выходах трата многих мелких UTXO занимает больше виртуальных байтов, чем одного крупного UTXO. Поэтому при одинаковой ставке в sat/vB общая комиссия обычно выше.