Explicado · Bitcoin
O que é UTXO, a saída não gasta que substitui o saldo na carteira de Bitcoin
A carteira de Bitcoin não consulta um saldo: ela soma as saídas ainda não gastas. Cada transação gasta entradas inteiras, cria saídas novas e cada saída só pode ser gasta uma vez.
O Bitcoin não guarda um número de saldo em nenhum lugar. O estado da rede é o conjunto das saídas que ainda não foram gastas, os UTXOs (Unspent Transaction Output). O guia de desenvolvedores do Bitcoin é explícito sobre o efeito prático disso: quando a carteira informa que há 10.000 satoshis de saldo, isso significa 10.000 satoshis esperando em um ou mais UTXOs. O número da tela é uma soma calculada na hora a partir de pedaços de valor espalhados, não um registro que alguém decrementa.
Cada transação tem pelo menos uma entrada e uma saída. A entrada gasta os satoshis pagos a uma saída de uma transação anterior e aponta para ela por dois dados: o identificador daquela transação, chamado txid, e o índice da saída dentro dela, o vout, numerado a partir do zero. A saída guarda um valor em satoshis e um script público condicional, o pubkey script: quem satisfizer as condições desse script pode gastar até o valor pago a ela. Quem paga precisa colocar no script de assinatura os dados que abrem essa condição. No padrão mais comum, o P2PKH, o pagamento usa ECDSA na curva secp256k1, com chave privada de 256 bits de dados aleatórios; a chave pública é derivada de forma determinística e não precisa ser guardada em lugar nenhum, e é o hash dela que aparece no endereço em base58.
A regra que impede o gasto duplo está no próprio formato. Como cada UTXO só pode ser gasto uma vez, o valor total das entradas incluídas precisa ser integralmente gasto ou entregue ao minerador como taxa. Como quase ninguém tem uma entrada cujo valor bate exatamente com o que pretende pagar, a maioria das transações cria uma saída de troco, que devolve a sobra ao pagador. É essa aritmética que faz o saldo mudar de figura a cada transação que encosta nele.
A mesma lógica aparece nos limites que a documentação registra para uma transação padrão. A taxa é calculada pelo tamanho total em bytes da transação já assinada, e o Bitcoin Core impõe que a transação tenha menos de 100.000 bytes, cerca de duzentas vezes o tamanho de uma transação P2PKH típica de uma entrada e uma saída, e que cada script de assinatura fique abaixo de 1.650 bytes. Uma saída que receba menos de um terço do que custaria gastar uma entrada típica é rejeitada pela política padrão: o número citado para uma saída P2PKH ou P2SH é 546 satoshis. Esses limites não são regra de consenso. Eles vêm do teste IsStandard(), que separa o que o software padrão aceita e transmite do que a rede consideraria válido, e nós com outras configurações podem aceitar formas distintas. As saídas OP_RETURN são o extremo do modelo: provam ser impossíveis de gastar e por isso não precisam ser guardadas no banco de UTXOs, ainda que o consenso permita scripts de dados de até 10.000 bytes.
O que já é regra desde sempre é a forma, não a comodidade da carteira. O que aparece em análise de mercado é consequência do modelo: como a taxa acompanha o tamanho em bytes da transação, juntar mais entradas significa pagar mais, e é por isso que carteiras com muitos fragmentos antigos costumam custar mais para gastar.