Descripción General
nLockTime es un campo de 4 bytes presente en cada transacción de Bitcoin que especifica el tiempo más temprano o la altura de bloque en la que la transacción puede ser incluida en un bloque. Es una de las características originales de Bitcoin, presente desde la primera versión del software, y sirve como bloque de construcción fundamental para contratos inteligentes sensibles al tiempo y canales de pago.
Cómo Funciona nLockTime
Interpretación del valor nLockTime:
0 → Sin bloqueo (válido inmediatamente)
1 a 499.999.999 → Bloqueo por altura de bloque
500.000.000 y superior → Bloqueo por marca de tiempo Unix
Ejemplos:
nLockTime = 800000 → Válido en el bloque 800.000 o posterior
nLockTime = 1700000000 → Válido después del 14 Nov 2023 (tiempo Unix)
nLockTime = 0 → Válido inmediatamente
Interacción con nSequence
Para que nLockTime sea aplicado, al menos una entrada en la transacción debe tener un valor nSequence menor que 0xFFFFFFFF. Si todas las entradas tienen nSequence configurado al valor máximo, nLockTime se ignora y la transacción puede ser minada inmediatamente. Esta interacción fue parte del diseño original de Satoshi para transacciones actualizables.
Casos de Uso
- Canales de pago: Las primeras versiones de los canales de pago usaban nLockTime para crear transacciones de reembolso que solo podían transmitirse después de un tiempo de espera
- Planificación de herencias: Crear transacciones bloqueadas en el tiempo que transfieren fondos a herederos después de una fecha determinada
- Lightning Network: Usado en combinación con otros bloqueos temporales para rutas de tiempo de espera de HTLC
Conceptos Erróneos Comunes
nLockTime no impide que una transacción sea creada o firmada — solo impide que sea minada. Una transacción bloqueada en el tiempo puede construirse, firmarse y compartirse en cualquier momento; simplemente no será aceptada en un bloque hasta que se cumpla la condición especificada. Además, nLockTime proporciona un bloqueo absoluto, mientras que CSV (CheckSequenceVerify) proporciona un bloqueo relativo basado en la antigüedad de la entrada que se gasta.