Coin Selection — процедура гаманця, що вибирає UTXO для виходів і комісії транзакції. Це локальне рішення, а не правило консенсусу, яке нав’язує всім гаманцям однаковий алгоритм.
Кожен вхід витрачає конкретний UTXO повністю. Різниця між сумами входів і виходів є комісією; кошти, повернуті відправнику, потребують окремого виходу. У наочному прикладі вхід 100000 sat, платіж 60000 sat і комісія 1000 sat залишають решту 39000 sat. [Bitcoin Developer Guide — Transactions]
Номінальної суми недостатньо: додавання входу збільшує транзакцію. Ефективна вартість віднімає від UTXO витрати на його використання за вибраною ставкою. Умовний вхід 10000 sat з оцінкою 68 vB за 10 sat/vB дає 9320 sat; решта транзакції все ще потребує власної комісії. Фактичний розмір залежить від скрипту й підпису. [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]
Branch-and-bound (BnB) шукає комбінації входів для платежу без решти. Цільовий діапазон допускає надлишок до вартості створення та подальшого витрачання решти; надлишок стає комісією. Точний збіг не обов’язковий. Обмежений пошук може не знайти рішення чи глобальний оптимум. [Bitcoin Core — Coin selection implementation]
Bitcoin Core 29.0 розглядає BnB, Knapsack і Single Random Draw (SRD); CoinGrinder долучається, коли ефективна ставка перевищує довгострокову більш ніж утричі. Кандидати порівнюються за waste metric. При відніманні комісії з виходів BnB пропускається. Це опис конкретної версії, а не універсального порядку алгоритмів усіх гаманців. [Bitcoin Core 29.0 — Transaction creation]
Waste metric порівнює витрати на входи зараз і за довгостроковою ставкою разом із витратами на решту або надлишком, відданим у комісію. Довгострокова ставка є припущенням, а не прогнозом. Консолідація може зменшити кількість майбутніх входів, але коштує комісію сьогодні й пов’язує використані виходи; найменша поточна комісія не є єдиною метою. [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]
Спільне витрачання різних надходжень дає аналітикам підказку для їх пов’язування, а не доказ однієї особи. Coin Control і мітки допомагають відокремлювати контексти платежів. BIP 329 описує перенесення міток і метаданих можливості витрачання; сам він не вибирає монети, а експорт може розкрити чутливі зв’язки. Навіть відсутність решти не гарантує анонімності. [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]
Вибір має враховувати можливість витрачання, підтвердження, заблоковані виходи й обмеження транзакції. У RPC walletcreatefundedpsbt з Core 29.0 include_unsafe дозволяє також ризиковані непідтверджені входи; якщо їхні транзакції зникнуть, створений платіж може стати недійсним. Непідтверджені предки можуть потребувати додаткової комісії. Великий баланс сам по собі не гарантує придатної комбінації входів. [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]
У walletcreatefundedpsbt з Core 29.0 входи можна вказати через txid і vout; add_inputs керує додаванням інших. fee_rate використовує sat/vB, а feeRate — BTC/kvB. Отриманий PSBT готує подальшу обробку, а не є підтвердженим платежем. Перед підписанням перевіряють одержувачів, загальну комісію та власну решту; ручний вибір не скасовує цієї відповідальності. [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]
Для повної картини прочитайте також UTXO, Coin Control, Вихід решти, Fee Rate, PSBT, Приватність у Bitcoin. На цю статтю також посилаються Watch-only Wallet, Вихід решти, Inventing Bitcoin.