Visão Geral
nLockTime é um campo de 4 bytes presente em cada transação Bitcoin que especifica o tempo mais cedo ou a altura de bloco na qual a transação pode ser incluída em um bloco. É um dos recursos originais do Bitcoin, presente desde a primeira versão do software, e serve como bloco de construção fundamental para contratos inteligentes sensíveis ao tempo e canais de pagamento.
Como o nLockTime Funciona
Interpretação do valor nLockTime:
0 → Sem bloqueio (válido imediatamente)
1 a 499.999.999 → Bloqueio por altura de bloco
500.000.000 e acima → Bloqueio por timestamp Unix
Exemplos:
nLockTime = 800000 → Válido no bloco 800.000 ou posterior
nLockTime = 1700000000 → Válido após 14 Nov 2023 (tempo Unix)
nLockTime = 0 → Válido imediatamente
Interação com nSequence
Para que o nLockTime seja aplicado, pelo menos uma entrada na transação deve ter um valor nSequence menor que 0xFFFFFFFF. Se todas as entradas tiverem nSequence definido para o valor máximo, o nLockTime é ignorado e a transação pode ser minerada imediatamente. Essa interação fazia parte do design original de Satoshi para transações atualizáveis.
Casos de Uso
- Canais de pagamento: As primeiras versões dos canais de pagamento usavam nLockTime para criar transações de reembolso que só podiam ser transmitidas após um tempo limite
- Planejamento de herança: Criação de transações bloqueadas no tempo que transferem fundos para herdeiros após uma determinada data
- Lightning Network: Usado em combinação com outros bloqueios temporais para caminhos de tempo limite de HTLC
Conceitos Errôneos Comuns
nLockTime não impede que uma transação seja criada ou assinada — apenas impede que seja minerada. Uma transação bloqueada no tempo pode ser construída, assinada e compartilhada a qualquer momento; ela simplesmente não será aceita em um bloco até que a condição especificada seja atendida. Além disso, nLockTime fornece um bloqueio absoluto, enquanto CSV (CheckSequenceVerify) fornece um bloqueio relativo baseado na idade da entrada sendo gasta.