142 / 691SELECT

Coin Selection

Sélection des UTXO pour une transaction

Coin Selection détermine les UTXO dépensés par un portefeuille. Elle influence les frais actuels, la monnaie rendue, les coûts futurs et les liens entre historiques de paiements.

Coin Selection est la procédure du portefeuille qui choisit les UTXO pour financer les sorties et les frais d’une transaction. C’est une décision locale, pas une règle de consensus imposant le même algorithme à tous les portefeuilles.

Chaque entrée dépense intégralement un UTXO précis. La différence entre les totaux des entrées et des sorties constitue les frais ; la somme rendue à l’expéditeur nécessite une sortie distincte. Exemple illustratif : une entrée de 100000 sat, un paiement de 60000 sat et des frais de 1000 sat laissent 39000 sat de monnaie rendue. [Bitcoin Developer Guide — Transactions]

La valeur nominale ne suffit pas : ajouter une entrée agrandit la transaction. La valeur effective soustrait de l’UTXO son coût de dépense au taux choisi. Une entrée illustrative de 10000 sat, estimée à 68 vB au taux de 10 sat/vB, apporte 9320 sat ; le reste de la transaction nécessite encore ses propres frais. La taille réelle dépend du script et de la signature. [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]

Branch-and-bound (BnB) recherche des combinaisons d’entrées permettant un paiement sans monnaie rendue. Son intervalle cible admet un excédent allant jusqu’au coût de création puis de dépense de la monnaie rendue ; cet excédent devient des frais. Une égalité exacte n’est donc pas nécessaire. Une recherche limitée peut manquer une solution ou l’optimum global. [Bitcoin Core — Coin selection implementation]

Bitcoin Core 29.0 considère BnB, Knapsack et Single Random Draw (SRD) ; CoinGrinder intervient lorsque le taux effectif dépasse trois fois le taux à long terme. Les candidats sont comparés selon la waste metric. BnB est ignoré lorsque les frais sont soustraits des sorties. Cela décrit une version précise, pas un ordre universel d’algorithmes pour tous les portefeuilles. [Bitcoin Core 29.0 — Transaction creation]

La waste metric compare les coûts des entrées aujourd’hui et au taux à long terme, avec le coût de la monnaie rendue ou l’excédent affecté aux frais. Le taux à long terme est une hypothèse, pas une prévision. Consolider peut réduire le nombre d’entrées futures, mais coûte des frais aujourd’hui et relie les sorties utilisées ; minimiser les frais immédiats n’est donc pas l’unique objectif. [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]

Dépenser ensemble des revenus distincts donne aux analystes un indice pour les relier, pas la preuve d’une personne unique. Coin Control et les étiquettes aident à séparer les contextes de paiement. BIP 329 décrit le transfert des étiquettes et métadonnées de possibilité de dépense ; il ne sélectionne pas lui-même les coins, et un export peut révéler des liens sensibles. Même l’absence de monnaie rendue ne garantit pas l’anonymat. [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]

La sélection doit respecter la possibilité de dépense, les confirmations, les sorties verrouillées et les limites de la transaction. Dans le RPC walletcreatefundedpsbt de Core 29.0, include_unsafe autorise aussi des entrées non confirmées risquées ; si leurs transactions disparaissent, le paiement construit peut devenir invalide. Des ancêtres non confirmés peuvent exiger des frais supplémentaires. Un solde élevé ne garantit pas une combinaison d’entrées adaptée. [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Dans walletcreatefundedpsbt de Core 29.0, les entrées peuvent être désignées par txid et vout ; add_inputs contrôle l’ajout d’autres entrées. fee_rate utilise sat/vB, tandis que feeRate utilise BTC/kvB. Le PSBT obtenu prépare un traitement ultérieur, ce n’est pas un paiement confirmé. Avant de signer, on vérifie les destinataires, les frais totaux et sa propre monnaie rendue ; la sélection manuelle ne supprime pas cette responsabilité. [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Pour une vision complète, lisez aussi UTXO, Coin Control, Sortie de monnaie, Fee Rate, PSBT, Confidentialité de Bitcoin. Cette entrée est également citée par Watch-only Wallet, Sortie de monnaie, Inventing Bitcoin.

DOC · 001Bitcoin Developer Guide — TransactionsDocumentation ↗DOC · 002Bitcoin Core — Coin selection implementationSource primaire ↗DOC · 003Bitcoin Core 29.0 — Transaction creationSource primaire ↗DOC · 004BIP 329 — Wallet Labels Export FormatSpécification ↗DOC · 005Bitcoin Core 29.0 — walletcreatefundedpsbt RPCDocumentation ↗DOC · 006Bitcoin Design — Coin selection and privacyDocumentation ↗
Sources d’abord · Pas un conseil financier