Консолидация не обслуживает кошелёк — она создаёт новую транзакцию
Кошелёк выбирает несколько прежних outputs и тратит их целиком как inputs. Получателем становится новый адрес того же кошелька или другой заранее проверенный self-address. Старые UTXO после подтверждения spent, новый output — отдельный UTXO. Miner fee равна разнице total inputs и total outputs; специальной бесплатной операции `merge` в Bitcoin нет.
| Утверждение | Результат |
|---|---|
| Число UTXO | Может уменьшиться, если несколько inputs создают меньше новых outputs |
| Комиссия | Платится сейчас за фактический vsize transaction |
| Будущая комиссия | Может снизиться при меньшем числе inputs, но будущая fee rate неизвестна |
| Приватность | Выбранные inputs становятся публично связаны одной transaction |
| Право подписи | Остаётся у ключей; self-address нужно проверить так же, как внешний |
- Утверждение
- Число UTXO
- Результат
- Может уменьшиться, если несколько inputs создают меньше новых outputs
- Утверждение
- Комиссия
- Результат
- Платится сейчас за фактический vsize transaction
- Утверждение
- Будущая комиссия
- Результат
- Может снизиться при меньшем числе inputs, но будущая fee rate неизвестна
- Утверждение
- Приватность
- Результат
- Выбранные inputs становятся публично связаны одной transaction
- Утверждение
- Право подписи
- Результат
- Остаётся у ключей; self-address нужно проверить так же, как внешний
Решение начинается с будущей задачи, а не с количества строк
| Ситуация | Рабочий вывод | Почему |
|---|---|---|
| Много мелких UTXO от одного уже публичного источника | Можно оценить preview | Связывание может добавить мало новой информации, но это нужно проверить |
| UTXO относятся к разным клиентам или ролям | Не объединять автоматически | Transaction создаст наблюдаемую связь |
| Будущий крупный платёж известен | Сравнить будущий input set с self-transfer сейчас | Есть конкретный сценарий вместо абстрактной экономии |
| Текущая fee rate высокая | Отложить, если нет операционной необходимости | Консолидация потребляет block space сейчас |
| Wallet preview не показывает inputs или self-output | Не подписывать | Нельзя проверить состав и сдачу |
| Есть unconfirmed или locked UTXO | Сначала классифицировать их | Статус влияет на spendability |
- Ситуация
- Много мелких UTXO от одного уже публичного источника
- Рабочий вывод
- Можно оценить preview
- Почему
- Связывание может добавить мало новой информации, но это нужно проверить
- Ситуация
- UTXO относятся к разным клиентам или ролям
- Рабочий вывод
- Не объединять автоматически
- Почему
- Transaction создаст наблюдаемую связь
- Ситуация
- Будущий крупный платёж известен
- Рабочий вывод
- Сравнить будущий input set с self-transfer сейчас
- Почему
- Есть конкретный сценарий вместо абстрактной экономии
- Ситуация
- Текущая fee rate высокая
- Рабочий вывод
- Отложить, если нет операционной необходимости
- Почему
- Консолидация потребляет block space сейчас
- Ситуация
- Wallet preview не показывает inputs или self-output
- Рабочий вывод
- Не подписывать
- Почему
- Нельзя проверить состав и сдачу
- Ситуация
- Есть unconfirmed или locked UTXO
- Рабочий вывод
- Сначала классифицировать их
- Почему
- Статус влияет на spendability
Считайте два расхода: сейчас и при будущей трате
Для preview приблизительная miner fee равна `vsize × fee rate`. Virtual size (vsize) — размер с учётом weight, а satoshi per virtual byte (sat/vB) — ставка. При 620 vB и 5 sat/vB расчёт даёт 3 100 sat; при 25 sat/vB — 15 500 sat. Это учебные ставки, не прогноз. Script types, inputs, outputs и подписи меняют vsize; итог берут из wallet preview.
| Поле | Что записать | Красный флаг |
|---|---|---|
| Selected inputs | Каждый txid:vout, amount, confirmations и назначение | Неизвестный или неожиданный UTXO |
| Self-output | Полный address, script type и amount | Адрес не подтверждается на доверенном signer |
| Change | Есть ли отдельный output и кому он принадлежит | Интерфейс скрывает сдачу |
| Estimated vsize | Значение из preview | Оценка только по числу inputs |
| Fee rate | sat/vB и источник текущей оценки | Подмена sat/vB абсолютной fee |
| Total fee | Сумма в sat и доля от консолидируемой суммы | Fee съедает значимую часть мелких UTXO |
- Поле
- Selected inputs
- Что записать
- Каждый txid:vout, amount, confirmations и назначение
- Красный флаг
- Неизвестный или неожиданный UTXO
- Поле
- Self-output
- Что записать
- Полный address, script type и amount
- Красный флаг
- Адрес не подтверждается на доверенном signer
- Поле
- Change
- Что записать
- Есть ли отдельный output и кому он принадлежит
- Красный флаг
- Интерфейс скрывает сдачу
- Поле
- Estimated vsize
- Что записать
- Значение из preview
- Красный флаг
- Оценка только по числу inputs
- Поле
- Fee rate
- Что записать
- sat/vB и источник текущей оценки
- Красный флаг
- Подмена sat/vB абсолютной fee
- Поле
- Total fee
- Что записать
- Сумма в sat и доля от консолидируемой суммы
- Красный флаг
- Fee съедает значимую часть мелких UTXO
Coin control — ручная ответственность за input set
Bitcoin Core `listunspent` показывает outpoint, amount, confirmations, script и признаки spendability. Кошельки с coin control дают похожий выбор через интерфейс. Флажок напротив UTXO не доказывает, что комбинация оптимальна: алгоритмы учитывают effective value, стоимость change и предполагаемую будущую трату, а человек должен добавить назначение coins и privacy boundary.
Контролируемый self-transfer
- 1Составьте read-only inventory
Запишите txid:vout, amount, confirmations, address/script type и понятное вам происхождение каждого кандидата. Не вставляйте xpub на случайный сайт.
- 2Разделите UTXO по контексту
Не смешивайте автоматически личные, клиентские, публичные и внутренние treasury flows. Это операционная граница учёта и приватности, а не попытка скрыть историю.
- 3Создайте новый self-address
Получите адрес в том же контролируемом кошельке и подтвердите его на аппаратном устройстве или другом доверенном signer.
- 4Постройте preview без broadcast
Выберите inputs, один или несколько ожидаемых outputs и fee rate. Сверьте vsize, absolute fee, change и отсутствие посторонних recipients.
- 5Подпишите после независимой сверки
Signer должен показать существенные outputs и суммы. Если экран не позволяет проверить self-address, не считайте подпись осознанной.
- 6Сохраните txid и проверьте сеть
После broadcast убедитесь, что transaction тратит именно выбранные outpoints и создаёт ожидаемый self-output. До подтверждения не запускайте дубль вслепую.
Partially Signed Bitcoin Transaction (PSBT) передаёт preview на отдельный signer, но не делает selection честным: outputs, fee и change всё равно проверяют на доверенном экране.
Одна подпись не скрывает, что inputs встретились вместе
Multi-input transaction наблюдаема. Common-input ownership heuristic не доказывает одну личность, но создаёт публичную связь для анализа. Если два UTXO не должны встречаться публично, не выбирайте их вместе только ради меньшего числа строк.
Если self-transfer уже отправлен
| Состояние | Что это значит | Что делать |
|---|---|---|
| Hash неизвестен узлам | Broadcast мог не состояться | Проверить подписанный transaction и официальный wallet log до новой попытки |
| Transaction в mempool | Inputs уже заняты кандидатом | Не создавать конфликт вслепую; проверить fee rate и доступные RBF/CPFP-сценарии |
| Transaction подтверждена | Старые UTXO spent, новый output существует | Сверить self-output и сохранить запись учёта |
| Обнаружен чужой output | Preview или подпись не соответствовали намерению | Остановить новые операции и проверить оставшиеся UTXO на чистом signer |
| Fee оказалась выше ожидания | Историческую transaction отменить нельзя | Сохранить vsize/fee rate и исправить policy будущих preview |
- Состояние
- Hash неизвестен узлам
- Что это значит
- Broadcast мог не состояться
- Что делать
- Проверить подписанный transaction и официальный wallet log до новой попытки
- Состояние
- Transaction в mempool
- Что это значит
- Inputs уже заняты кандидатом
- Что делать
- Не создавать конфликт вслепую; проверить fee rate и доступные RBF/CPFP-сценарии
- Состояние
- Transaction подтверждена
- Что это значит
- Старые UTXO spent, новый output существует
- Что делать
- Сверить self-output и сохранить запись учёта
- Состояние
- Обнаружен чужой output
- Что это значит
- Preview или подпись не соответствовали намерению
- Что делать
- Остановить новые операции и проверить оставшиеся UTXO на чистом signer
- Состояние
- Fee оказалась выше ожидания
- Что это значит
- Историческую transaction отменить нельзя
- Что делать
- Сохранить vsize/fee rate и исправить policy будущих preview
Replace-by-fee (RBF) и child-pays-for-parent (CPFP), то есть сценарии RBF и CPFP, разобраны отдельно. Сначала установите txid, mempool status и inputs, затем используйте функции собственного кошелька.
Хорошая консолидация объясняется до и после подписи
Решение проверяемо, если до broadcast сохранены выбранные outpoints, self-address, vsize, fee rate, total fee и причина объединения, а после — txid и ожидаемый новый UTXO. Если единственный аргумент звучит как «комиссии вроде низкие», данных недостаточно. Можно ничего не делать: отказ от консолидации тоже корректный результат, когда privacy cost или текущая fee выше понятной будущей пользы.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Bitcoin Developer Guide — Transactions Bitcoin Project · Проверено 19 августа 2026 г. в 20:24 GMT+5
- Bitcoin whitepaper Bitcoin Core · Проверено 19 августа 2026 г. в 20:24 GMT+5
- Bitcoin Core 31.0 — listunspent Bitcoin Core · Проверено 19 августа 2026 г. в 20:24 GMT+5
- Bitcoin Core 31.0 — walletcreatefundedpsbt Bitcoin Core · Проверено 19 августа 2026 г. в 20:24 GMT+5
- Bitcoin Core — coin selection implementation Bitcoin Core · Проверено 19 августа 2026 г. в 20:24 GMT+5
