Descripción General
La maleabilidad de transacciones fue una vulnerabilidad de larga data en Bitcoin donde un tercero (o incluso el firmante de la transacción) podía modificar los datos de firma en una transacción sin invalidarla, causando que el ID de transacción cambiara. Aunque la transacción modificada seguiría transfiriendo la misma cantidad al mismo destinatario, el TXID cambiado rompía cualquier transacción dependiente que referenciara el ID original.
Cómo Funcionaba
En las transacciones anteriores a SegWit, la firma (scriptSig) estaba incluida en los datos que se hasheaban para producir el TXID. Como las firmas ECDSA tienen múltiples codificaciones válidas para la misma autorización, los bytes de la firma podían alterarse mientras seguían siendo criptográficamente válidos:
Transacción Original:
TXID: abc123...
scriptSig: [firma_A] <-- Puede modificarse
Salidas: 1 BTC a Alice
Transacción Maleada:
TXID: def456... <-- ¡TXID diferente!
scriptSig: [firma_A'] <-- Codificación diferente, aún válida
Salidas: 1 BTC a Alice <-- Mismo pago
Por Qué Era un Problema
- Encadenamiento de transacciones: Cualquier transacción que referenciara el TXID original como entrada se volvería inválida si se minara la versión maleada en su lugar.
- Exploits de exchanges: Los atacantes podían retirar de exchanges, malear el TXID y afirmar que el retiro nunca llegó — lo que llevaba al exchange a reenviar fondos.
- Lightning Network imposible: Los canales de pago requieren cadenas confiables de transacciones pre-firmadas. La maleabilidad hacía esto inseguro, ya que una transacción de financiación maleada invalidaría todas las transacciones de compromiso posteriores.
La Solución SegWit
SegWit resolvió la maleabilidad de transacciones moviendo los datos de testigo (firmas) a una estructura separada que no está incluida en el cálculo del TXID:
Pre-SegWit: TXID = Hash(versión + entradas + scriptSig + salidas + locktime)
^^^^^^^^^^
¡Maleable!
SegWit: TXID = Hash(versión + entradas + salidas + locktime)
Datos de testigo comprometidos por separado (no en TXID)
Esta corrección fue el prerrequisito crítico para construir la Lightning Network, que se basa en cadenas de transacciones pre-firmadas con TXIDs predecibles.
Importancia Histórica
El exchange Mt. Gox citó famosamente la maleabilidad de transacciones como un factor en su colapso en 2014, aunque investigaciones posteriores revelaron que la maleabilidad no fue la causa principal de sus pérdidas. Sin embargo, el incidente llamó la atención generalizada sobre la vulnerabilidad y motivó el desarrollo de SegWit.