Glosario / Transacciones y comisiones
ID de transacción
También se conoce como Txid o Hash de transacción.
- ¿Qué es un ID de transacción?
- Un ID de transacción es la huella digital hexadecimal de 64 caracteres de una transacción de bitcoin, que se obtiene al aplicarle SHA-256 dos veces, y es la forma en que todo el mundo identifica ese pago.
Nadie asigna el identificador: resulta del propio contenido de la transacción, así que alterar un solo satoshi produce uno completamente distinto. El valor tiene 32 bytes, se imprime como 64 caracteres hexadecimales y todos los exploradores de bloques lo muestran en orden de bytes invertido. Es la única cadena de caracteres que permite que usted y el servicio de soporte de un exchange miren el mismo pago.
Cómo funciona
Derivar un ID de transacción requiere dos pasos y ningún secreto. La transacción se serializa en su forma de bytes en bruto, después se le aplica SHA-256 dos veces, y los 32 bytes resultantes son el identificador. Cualquiera que tenga los bytes en bruto calcula el mismo resultado, y por eso un identificador no se puede reservar, solicitar ni falsificar.
El orden de visualización es lo primero que confunde a la gente. Bitcoin maneja internamente los hash en un sentido y los imprime en el otro, así que los bytes que se ven en un explorador están en el orden inverso al de los bytes del archivo. No pasa nada malo cuando una herramienta para desarrolladores muestra una cadena de caracteres que parece estar al revés.
SegWit dividió el identificador en dos. Desde que el BIP141 se activó en el bloque 481.824, el 24 de agosto de 2017, el ID de transacción se calcula sobre la transacción sin sus datos de testigo, mientras que un segundo identificador, el wtxid, cubre todo, incluidas las firmas. El motivo es la maleabilidad de transacciones: antes, cualquiera que retransmitiera la transacción podía volver a codificar las firmas, lo que cambiaba el identificador y dejaba el dinero exactamente donde iba. En febrero de 2014, Mt. Gox culpó a la maleabilidad de la desaparición de sus monedas, pero un estudio de Decker y Wattenhofer midió los ataques reales y halló que solo 386 BTC podían atribuirse a la maleabilidad antes de que el exchange detuviera los retiros, frente a los cientos de miles de monedas que había perdido.
El identificador es también lo que un bloque fija. Todos los ID de transacción de un bloque se combinan mediante hash en la raíz de Merkle guardada en el encabezado del bloque, así que un minero no puede cambiar en silencio un pago por otro a posteriori.
Por qué importa cuando compra bitcoin
El ID de transacción es la única prueba que sobrevive a la brecha entre dos empresas. Cuando un retiro de Coinbase o de Bitstamp no ha llegado, la solicitud de soporte no avanza hasta que usted lo aporta, y una vez que lo tiene ya no necesita la solicitud: pegue la cadena de caracteres en cualquier explorador de bloques y podrá ver por sí mismo las salidas, la comisión y el recuento de confirmaciones. Es también la forma más rápida de saber si el retraso está en la cola del exchange o en la de la red.
El caso inverso es el peligroso. Un ID de transacción prueba que un pago existe, no que se le haya enviado a usted, ni que vaya a confirmarse, ni que el remitente sea quien dice ser. A quienes venden en mercados entre pares se les muestra habitualmente una captura de pantalla de la página de un explorador, y entregan la mercancía antes de comprobar si alguna salida de esa transacción paga a una dirección que controlan. Compruebe la dirección, compruebe el monto y compruebe las confirmaciones, en ese orden.
Los identificadores sin confirmar también pueden desaparecer. El replace-by-fee completo es la política de retransmisión predeterminada en las versiones modernas de Bitcoin Core, así que un remitente puede difundir una versión competidora del mismo pago, y esa versión tiene un identificador diferente. Bitcoin Core también descarta las transacciones que ha conservado durante más de 336 horas, es decir, 14 días. Si un explorador dice "transaction not found" (transacción no encontrada), normalmente significa que ocurrió una de esas dos cosas, no que sus monedas hayan desaparecido.
Lectura del ID de transacción del bloque génesis
El ID de transacción más antiguo de bitcoin es 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b, la única transacción del bloque minado el 3 de enero de 2009. Como ese bloque contiene una transacción y nada más, la raíz de Merkle del bloque es exactamente la misma cadena de caracteres, lo que es la ilustración más clara de cómo funciona el compromiso.
Esa transacción paga 50 BTC a una clave pública, y Bitcoin Core nunca añadió la salida a su conjunto de UTXO, así que el identificador designa dinero que nunca podrá moverse. También lleva el titular de periódico "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" dentro de su campo coinbase.
La dependencia va en un solo sentido. Si se cambia una sola letra de ese titular, tanto el ID de transacción como la raíz de Merkle se vuelven irreconocibles, y por eso un identificador es una huella digital y no una etiqueta. No se puede elegir uno, y no se puede editar una transacción sin producir uno nuevo.
ID de transacción frente a dirección de bitcoin
Una dirección es un destino y un ID de transacción es el registro de un acontecimiento. Las direcciones pueden entregarse por adelantado y reutilizarse; los identificadores solo existen después de que se haya construido una transacción. Enviar monedas a un ID de transacción es imposible, y las billeteras rechazan el intento porque la cadena de caracteres no supera la validación de la suma de comprobación de la dirección. Los falsos agentes de soporte aprovechan la confusión pidiendo "su ID de transacción" y proporcionando después una dirección propia.
ID de transacción frente a outpoint
Un ID de transacción designa una transacción entera, que podría pagar a 300 personas diferentes en un solo lote de un exchange. Un outpoint designa una salida dentro de ella, que se escribe como el identificador, dos puntos y el índice de salida. Las pantallas de control de monedas, las confirmaciones de las billeteras de hardware y los archivos PSBT funcionan todos con outpoints, así que un identificador por sí solo no basta para indicar de qué moneda se trata.