Visão Geral
Um ID de Transação (TXID) é um identificador único atribuído a cada transação Bitcoin. É calculado realizando um duplo hash SHA-256 nos dados de transação serializados e é representado como uma string hexadecimal de 64 caracteres. Os TXIDs servem como referência principal para localizar e vincular transações em todo o protocolo e ecossistema Bitcoin.
Como os TXIDs São Calculados
Dados de Transação Brutos
|
SHA-256(dados)
|
SHA-256(resultado)
|
Inverter ordem de bytes
|
TXID (64 caracteres hex)
Exemplo de TXID:
a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d
A operação de duplo SHA-256 (às vezes escrita como SHA256d ou HASH256) é o mesmo esquema de hash usado em todo o Bitcoin, incluindo cabeçalhos de bloco e árvores de Merkle.
TXIDs no Protocolo
Os TXIDs desempenham vários papéis críticos no Bitcoin:
- Referências de entrada: Cada entrada de transação especifica o TXID e o índice de saída do UTXO que está gastando. Isso cria a cadeia de propriedade que constitui o grafo de transações do Bitcoin.
- Folhas da árvore de Merkle: Os TXIDs são combinados em hash para formar a raiz de Merkle em cada cabeçalho de bloco.
- Exploradores de blocos: Os usuários procuram transações em exploradores de blocos por TXID.
- Confirmação de pagamento: Comerciantes e serviços rastreiam TXIDs para monitorar o status do pagamento.
SegWit e Maleabilidade
Antes do SegWit, o Bitcoin sofria de maleabilidade de transações, onde os dados de assinatura podiam ser modificados sem invalidar a transação, fazendo o TXID mudar. O SegWit corrigiu isso excluindo dados de testemunha do cálculo do TXID.
O SegWit também introduziu o wtxid (TXID testemunha), que inclui dados de testemunha no hash. O wtxid é usado no compromisso de testemunha dentro da transação coinbase, enquanto o TXID tradicional permanece o identificador principal para referenciar saídas.
Equívocos Comuns
- Os TXIDs são exibidos em ordem de bytes invertida em comparação com a saída do hash bruto. Esta é uma convenção histórica que pode causar confusão ao trabalhar no nível do protocolo.
- Ter um TXID não significa que uma transação está confirmada — transações não confirmadas no mempool também têm TXIDs, embora possam mudar se a transação for substituída via RBF.