142 / 691SELECT

Coin Selection

Selección de UTXO para una transacción

Coin Selection determina qué UTXO gasta una cartera. Afecta a la comisión actual, el cambio, los costes futuros y los vínculos entre historiales de pagos.

Coin Selection es el procedimiento de la cartera que elige UTXO para financiar las salidas y la comisión de una transacción. Es una decisión local, no una regla de consenso que imponga el mismo algoritmo a todas las carteras.

Cada entrada gasta un UTXO concreto completo. La diferencia entre la suma de entradas y salidas es la comisión; la cantidad devuelta al remitente necesita una salida independiente. En un ejemplo ilustrativo, una entrada de 100000 sat, un pago de 60000 sat y una comisión de 1000 sat dejan un cambio de 39000 sat. [Bitcoin Developer Guide — Transactions]

El valor nominal no basta: añadir una entrada aumenta el tamaño de la transacción. El valor efectivo resta al UTXO su coste de gasto con la tarifa elegida. Una entrada ilustrativa de 10000 sat, estimada en 68 vB a 10 sat/vB, aporta 9320 sat; el resto de la transacción sigue necesitando su propia comisión. El tamaño real depende del script y de la firma. [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]

Branch-and-bound (BnB) busca combinaciones de entradas para pagar sin cambio. Su intervalo objetivo permite un exceso hasta el coste de crear y gastar posteriormente el cambio; ese exceso pasa a la comisión. No exige una coincidencia exacta. Una búsqueda limitada puede no encontrar solución ni el óptimo global. [Bitcoin Core — Coin selection implementation]

Bitcoin Core 29.0 considera BnB, Knapsack y Single Random Draw (SRD); CoinGrinder interviene cuando la tarifa efectiva supera el triple de la tarifa a largo plazo. Compara candidatos mediante waste metric. Omite BnB cuando se resta la comisión de las salidas. Esto describe una versión concreta, no una secuencia universal de algoritmos para todas las carteras. [Bitcoin Core 29.0 — Transaction creation]

Waste metric compara los costes de las entradas ahora y con una tarifa a largo plazo, junto con el coste del cambio o el exceso destinado a comisiones. La tarifa a largo plazo es un supuesto, no una predicción. Consolidar puede reducir las entradas futuras, pero cuesta comisiones hoy y vincula las salidas utilizadas; minimizar la comisión inmediata no es el único objetivo. [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]

Gastar juntos distintos ingresos da a los analistas una pista para vincularlos, no una prueba de que pertenezcan a una sola persona. Coin Control y las etiquetas ayudan a separar contextos de pago. BIP 329 describe el traslado de etiquetas y metadatos de disponibilidad de gasto; no selecciona monedas por sí mismo y una exportación puede revelar vínculos sensibles. Ni siquiera la ausencia de cambio garantiza anonimato. [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]

La selección debe respetar la posibilidad de gasto, las confirmaciones, las salidas bloqueadas y los límites de la transacción. En el RPC walletcreatefundedpsbt de Core 29.0, include_unsafe permite también entradas no confirmadas arriesgadas; si desaparecen sus transacciones, el pago construido puede quedar invalidado. Los ancestros no confirmados pueden exigir comisiones adicionales. Un saldo elevado no garantiza una combinación adecuada de entradas. [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

En walletcreatefundedpsbt de Core 29.0 se pueden especificar entradas mediante txid y vout; add_inputs controla si se añaden otras. fee_rate usa sat/vB, mientras que feeRate usa BTC/kvB. El PSBT resultante prepara el procesamiento posterior, no es un pago confirmado. Antes de firmar se revisan los destinatarios, la comisión total y el cambio propio; seleccionar manualmente no elimina esa responsabilidad. [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Para obtener la imagen más completa, lee esta entrada junto con UTXO, Coin Control, Salida de cambio, Fee Rate, PSBT, Privacidad en Bitcoin. También enlazan con esta entrada Watch-only Wallet, Salida de cambio.

DOC · 001Bitcoin Developer Guide — TransactionsDocumentaciónDOC · 002Bitcoin Core — Coin selection implementationFuente primariaDOC · 003Bitcoin Core 29.0 — Transaction creationFuente primariaDOC · 004BIP 329 — Wallet Labels Export FormatEspecificaciónDOC · 005Bitcoin Core 29.0 — walletcreatefundedpsbt RPCDocumentaciónDOC · 006Bitcoin Design — Coin selection and privacyDocumentación
Fuentes primero · No es asesoramiento financiero