Bloqueos temporales: nLockTime, CLTV y CSV

Tiempo absoluto y relativo en Script.

Un bloqueo temporal impide que las monedas se muevan hasta un momento o una altura de bloque. Bitcoin tiene cuatro herramientas, en dos niveles.

Nivel de transacción, absoluto: nLockTime

Cada transacción tiene un nLockTime de 4 bytes. Los valores por debajo de 500.000.000 son alturas de bloque. Los valores más altos son marcas de tiempo Unix. La transacción no puede minarse antes. Solo cuenta si al menos una entrada tiene un nSequence distinto de 0xffffffff. Desde BIP113 (2016), los bloqueos temporales se comparan con el median time past de los últimos 11 bloques, no con la marca de tiempo propia del bloque, para que los mineros no puedan manipularlo.

Limitación: quien tenga la clave privada puede simplemente crear otra transacción sin el bloqueo.

Nivel de script, absoluto: OP_CHECKLOCKTIMEVERIFY (BIP65)

CLTV, activado en diciembre de 2015, redefinió OP_NOP2. En un script, <expiry> OP_CHECKLOCKTIMEVERIFY OP_DROP hace fallar el script a menos que el nLockTime de la transacción de gasto sea al menos el vencimiento, y del mismo tipo. La propia moneda queda bloqueada.

Nivel de transacción, relativo: nSequence (BIP68)

nSequence en cada entrada puede significar «no hasta N bloques o N×512 segundos después de que se confirmara la salida que se gasta». El bit 31 lo desactiva, el bit 22 elige tiempo en vez de bloques, y los 16 bits bajos guardan el valor. Esto solo se aplica a transacciones con versión 2 o superior.

Nivel de script, relativo: OP_CHECKSEQUENCEVERIFY (BIP112)

CSV redefinió OP_NOP3, y se activó junto con BIP68 y BIP113 en julio de 2016. 144 OP_CHECKSEQUENCEVERIFY significa que la salida solo puede gastarse al menos 144 bloques (alrededor de un día) después de confirmarse.

Dónde se usan

  • Lightning: CSV retrasa las salidas propias del emisor, dando a la otra parte tiempo para castigar un estado antiguo. CLTV fija plazos de HTLC.
  • Herencia y recuperación: «mi clave ahora, o la clave de mi heredero tras un año».
  • Bóvedas: retrasos antes de retiros, con una clave de emergencia.
  • Anti fee-sniping: billeteras como Bitcoin Core ponen nLockTime a la altura actual para disuadir a los mineros de reescribir bloques recientes.

Cuidado: los bloqueos temporales relativos están limitados a 65.535 bloques o unidades, unos 15 meses en bloques.