TXID
A referência única de uma transação
Um TXID (Transaction ID) é uma referência única para uma transação de bitcoin.
Eles são usados para procurar transações específicas em um explorador. Por exemplo:
f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16— A primeira transação de Bitcoin (para Hal Finney), em 2009.a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d— A transação da pizza por 10.000 BTC, em 2010.
As letras e números em um TXID não têm significado especial. São só 32 bytes de aparência aleatória (representados como 64 caracteres hexadecimais). Mas são únicos para cada transação.
Criando
Como você cria um TXID?
Um TXID é criado fazendo o hash dos dados da transação. Mais precisamente, passando partes específicas dos dados pela função SHA256 e passando o resultado pelo SHA256 de novo (esse hash duplo é o HASH256).
- Para transações legadas, você faz o HASH256 de todos os dados da transação.
- Para transações segwit, você faz o HASH256 de todos os dados exceto os campos marker, flag e witness.
Então, em transações segwit, as assinaturas não fazem mais parte do TXID.
Os TXIDs que você vê nos exploradores estão, na verdade, em ordem de bytes invertida. Isso é só uma peculiaridade do bitcoin.
Exemplos
Como é um TXID?
1. Transação Legada
Para criar um TXID de uma transação legada, você faz o HASH256 de todos os dados da transação. Por exemplo, hasheando os dados de uma certa transação você obtém 169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4 (o TXID em ordem natural, que aparece nos dados brutos). Invertendo a ordem dos bytes, você obtém o TXID exibido nos exploradores: f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16.
2. Transação SegWit
Para uma transação segwit, você faz o HASH256 de todos os dados exceto os campos marker, flag e witness. Ao não hashear esses campos novos, você evita que dados de assinatura façam parte do TXID (eles agora ficam na testemunha), já que as assinaturas podem ser manipuladas para mudar o TXID depois de uma transação ser enviada à rede (o que é raro, mas tornava os TXIDs menos confiáveis). Esse foi o principal motivo da atualização Segregated Witness.
Faça você mesmo
Você pode conferir que os dados produzem os TXIDs corretos hasheando os mesmos dados com HASH256 diretamente:
Depois, não esqueça de inverter a ordem dos bytes:
Uso
Como os TXIDs são usados no Bitcoin?
- Procurar transações. Você usa TXIDs para procurar transações específicas em um explorador ou no seu nó local.
- Gastar saídas. Ao gastar a saída de uma transação anterior, você a referencia pelo seu TXID (junto com o VOUT) na entrada.
- Raiz de Merkle. Os TXIDs de todas as transações de um bloco são hasheados juntos para criar a raiz de Merkle no cabeçalho do bloco.