Saltar al contenido
buybitcoinsmart

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.

No confundir con

Preguntas frecuentes

¿Qué significa que no se encuentre un ID de transacción?

Normalmente, que la transacción nunca se confirmó y ya no está en ninguna mempool. Bitcoin Core descarta las transacciones sin confirmar al cabo de 14 días, y un aumento de comisión con replace-by-fee publica un identificador diferente, así que el original ya no existe en ninguna parte.

¿Es un ID de transacción la prueba de que alguien me pagó?

No. Prueba que existe una transacción. Ábralo en un explorador de bloques y compruebe que una salida paga a una dirección de su propia billetera, que el monto coincide y que tiene confirmaciones. Una captura de pantalla no prueba nada en absoluto.

¿Puede cambiar un ID de transacción después de que se difunda?

No en una transacción confirmada. Antes de SegWit, terceros podían volver a codificar las firmas y cambiar el identificador de un pago sin confirmar, lo que es el problema de la maleabilidad de transacciones que el BIP141 corrigió para las entradas SegWit en agosto de 2017.

Para seguir leyendo

Términos relacionados

Más en la sección Transacciones y comisiones

Leer esta página en inglés