Descripción General
Un ID de Transacción (TXID) es un identificador único asignado a cada transacción de Bitcoin. Se calcula realizando un doble hash SHA-256 sobre los datos de transacción serializados y se representa como una cadena hexadecimal de 64 caracteres. Los TXIDs sirven como referencia principal para ubicar y vincular transacciones en todo el protocolo y ecosistema de Bitcoin.
Cómo se Calculan los TXIDs
Datos de Transacción Brutos
|
SHA-256(datos)
|
SHA-256(resultado)
|
Invertir orden de bytes
|
TXID (64 caracteres hex)
Ejemplo de TXID:
a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d
La operación de doble SHA-256 (a veces escrita como SHA256d o HASH256) es el mismo esquema de hash utilizado en todo Bitcoin, incluyendo los encabezados de bloque y los árboles de Merkle.
TXIDs en el Protocolo
Los TXIDs juegan varios roles críticos en Bitcoin:
- Referencias de entrada: Cada entrada de transacción especifica el TXID y el índice de salida del UTXO que está gastando. Esto crea la cadena de propiedad que constituye el grafo de transacciones de Bitcoin.
- Hojas del árbol de Merkle: Los TXIDs se hashean juntos para formar la raíz de Merkle en cada encabezado de bloque.
- Exploradores de bloques: Los usuarios buscan transacciones en exploradores de bloques por TXID.
- Confirmación de pago: Los comerciantes y servicios rastrean TXIDs para monitorear el estado del pago.
SegWit y Maleabilidad
Antes de SegWit, Bitcoin sufría de maleabilidad de transacciones, donde los datos de firma podían modificarse sin invalidar la transacción, causando que el TXID cambiara. SegWit solucionó esto excluyendo los datos de testigo del cálculo del TXID.
SegWit también introdujo el wtxid (TXID testigo), que incluye los datos de testigo en el hash. El wtxid se utiliza en el compromiso de testigo dentro de la transacción coinbase, mientras que el TXID tradicional sigue siendo el identificador principal para referenciar salidas.
Conceptos Erróneos Comunes
- Los TXIDs se muestran en orden de bytes invertido en comparación con la salida del hash bruto. Esta es una convención histórica que puede causar confusión cuando se trabaja a nivel de protocolo.
- Tener un TXID no significa que una transacción esté confirmada — las transacciones no confirmadas en el mempool también tienen TXIDs, aunque pueden cambiar si la transacción es reemplazada mediante RBF.