Visão Geral
Os bloqueios temporais são um bloco de construção fundamental no sistema de scripting do Bitcoin que restringe quando um UTXO pode ser gasto. Ao codificar condições baseadas em tempo nas condições de gasto, os bloqueios temporais habilitam uma ampla gama de aplicações incluindo canais de pagamento, HTLCs, vaults e mecanismos de recuperação com atraso temporal.
Tipos de Bloqueios Temporais
O Bitcoin suporta quatro mecanismos distintos de bloqueio temporal em duas dimensões:
Nível de transação Nível de script
(em campos tx) (em Script)
┌───────────────────┬───────────────────┐
Absoluto │ nLockTime │ OP_CLTV │
(tempo fixo │ (BIP-original) │ (BIP65) │
ou altura) │ │ │
├───────────────────┼───────────────────┤
Relativo │ nSequence │ OP_CSV │
(tempo desde │ (BIP68) │ (BIP112) │
confirmação)│ │ │
└───────────────────┴───────────────────┘
Bloqueios Temporais Absolutos
- nLockTime: Um campo no nível de transação que impede que a transação seja válida antes de uma altura de bloco ou timestamp Unix especificado.
- OP_CHECKLOCKTIMEVERIFY (CLTV): Um opcode de script (BIP65) que torna uma saída impossível de gastar até um tempo ou altura de bloco absoluto, aplicado dentro do próprio script de bloqueio.
Bloqueios Temporais Relativos
- nSequence (BIP68): Um campo por entrada que codifica um tempo mínimo (em blocos ou intervalos de 512 segundos) que deve passar após o UTXO referenciado ser confirmado.
- OP_CHECKSEQUENCEVERIFY (CSV): Um opcode de script (BIP112) que aplica bloqueios temporais relativos dentro do script, habilitando saídas que não podem ser gastas até que um certo número de blocos tenha passado desde que o UTXO foi confirmado.
Aplicações
- Lightning Network: Os bloqueios temporais são essenciais para os HTLCs, garantindo que os pagamentos possam ser reembolsados se não forem reivindicados dentro de uma janela.
- Vaults: Caminhos de gasto com bloqueio temporal criam uma janela de recuperação para cancelar transações não autorizadas.
- Planejamento de herança: Scripts com bloqueio temporal podem liberar bitcoin para herdeiros após um período específico de inatividade.
Casos Extremos
- Valores de nLockTime abaixo de 500.000.000 são interpretados como alturas de bloco; valores iguais ou acima desse limite são interpretados como timestamps Unix. Essa interpretação dual pode causar confusão se não for tratada com cuidado.
- Os bloqueios temporais relativos só começam a contar após o UTXO referenciado ser confirmado em um bloco, não a partir de quando a transação de gasto é criada.