142 / 691SELECT

Coin Selection

Seleção de UTXO para uma transação

Coin Selection determina quais UTXO a carteira gasta. Afeta a taxa atual, o troco, os custos futuros e as ligações entre históricos de pagamentos.

Coin Selection é o procedimento da carteira que escolhe UTXO para financiar as saídas e a taxa da transação. É uma decisão local, não uma regra de consenso que imponha o mesmo algoritmo a todas as carteiras.

Cada entrada gasta um UTXO específico por inteiro. A diferença entre a soma das entradas e das saídas é a taxa; o valor devolvido ao remetente exige uma saída separada. Num exemplo ilustrativo, uma entrada de 100000 sat, um pagamento de 60000 sat e uma taxa de 1000 sat deixam 39000 sat de troco. [Bitcoin Developer Guide — Transactions]

O valor nominal não basta: adicionar uma entrada aumenta a transação. O valor efetivo subtrai do UTXO o custo de gastá-lo à taxa escolhida. Uma entrada ilustrativa de 10000 sat, estimada em 68 vB a 10 sat/vB, contribui com 9320 sat; o resto da transação ainda precisa da sua própria taxa. O tamanho real depende do script e da assinatura. [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]

Branch-and-bound (BnB) procura combinações de entradas para pagar sem troco. O intervalo alvo permite um excedente até ao custo de criar e depois gastar o troco; esse excedente torna-se taxa. Não exige correspondência exata. Uma busca limitada pode não encontrar solução nem o ótimo global. [Bitcoin Core — Coin selection implementation]

Bitcoin Core 29.0 considera BnB, Knapsack e Single Random Draw (SRD); CoinGrinder participa quando a taxa efetiva supera o triplo da taxa de longo prazo. Compara os candidatos pela waste metric. Omite BnB quando a taxa é subtraída das saídas. Isto descreve uma versão específica, não uma sequência universal de algoritmos para todas as carteiras. [Bitcoin Core 29.0 — Transaction creation]

A waste metric compara os custos das entradas agora e à taxa de longo prazo, junto com os custos do troco ou o excedente entregue como taxa. A taxa de longo prazo é uma hipótese, não uma previsão. Consolidar pode reduzir o número de entradas futuras, mas custa taxas hoje e liga as saídas usadas; a menor taxa imediata não é, portanto, o único objetivo. [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]

Gastar juntos recebimentos diferentes dá aos analistas uma pista para os ligar, não prova de uma única pessoa. Coin Control e rótulos ajudam a separar contextos de pagamento. BIP 329 descreve a transferência de rótulos e metadados de possibilidade de gasto; não seleciona moedas por si só, e uma exportação pode revelar ligações sensíveis. Nem a ausência de troco garante anonimato. [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]

A seleção deve respeitar a possibilidade de gasto, confirmações, saídas bloqueadas e limites da transação. No RPC walletcreatefundedpsbt do Core 29.0, include_unsafe também permite entradas não confirmadas arriscadas; se as suas transações desaparecerem, o pagamento criado pode tornar-se inválido. Antepassados não confirmados podem exigir taxas adicionais. Um saldo elevado não garante uma combinação adequada de entradas. [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Em walletcreatefundedpsbt do Core 29.0, as entradas podem ser especificadas por txid e vout; add_inputs controla a inclusão de outras. fee_rate usa sat/vB, enquanto feeRate usa BTC/kvB. O PSBT resultante prepara o processamento posterior, não é um pagamento confirmado. Antes de assinar, verificam-se destinatários, taxa total e troco próprio; selecionar manualmente não elimina essa responsabilidade. [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Para ter uma visão mais completa, leia este verbete junto com UTXO, Coin Control, Saída de troco, Fee Rate, PSBT, Privacidade no Bitcoin. Também há referências a este verbete em Watch-only Wallet, Saída de troco, Inventing Bitcoin.

DOC · 001Bitcoin Developer Guide — TransactionsDocumentação ↗DOC · 002Bitcoin Core — Coin selection implementationFonte primária ↗DOC · 003Bitcoin Core 29.0 — Transaction creationFonte primária ↗DOC · 004BIP 329 — Wallet Labels Export FormatEspecificação ↗DOC · 005Bitcoin Core 29.0 — walletcreatefundedpsbt RPCDocumentação ↗DOC · 006Bitcoin Design — Coin selection and privacyDocumentação ↗
Fontes em primeiro lugar · Não é recomendação de investimento