
Bloqueios de tempo: moedas que não podem se mover até um determinado momento
A maior parte da segurança em cripto trata de quem pode gastar: quais chaves, quantas assinaturas. Os bloqueios de tempo acrescentam uma segunda dimensão: quando. Uma moeda com bloqueio de tempo não pode ser gasta antes de uma data ou altura de bloco definida, não importa quem tenha as chaves.
Parece um recurso de nicho, mas os bloqueios de tempo sustentam discretamente muita coisa em cripto: canais de pagamento, cronogramas de vesting, planos de herança e atrasos de governança. Entendê-los também explica uma escolha de design que você vai encontrar na maioria das carteiras.
Dois tipos de tempo
As blockchains medem o tempo de duas formas, e os bloqueios de tempo usam ambas:
- Tempo absoluto. "Não antes de 1º de janeiro de 2030" ou "não antes do bloco 1.000.000". A moeda fica bloqueada até esse momento e depois se comporta normalmente.
- Tempo relativo. "Não antes de 1.000 blocos após o recebimento desta moeda." O relógio começa a contar quando a moeda é criada, então cada depósito tem sua própria contagem regressiva.
Bloqueios absolutos combinam com datas fixas, como o cliff de um vesting. Bloqueios relativos combinam com regras como "se ninguém mais agir em 30 dias, esta outra chave pode gastar", um padrão que aparece em projetos de recuperação e de herança.
Como o Bitcoin faz isso
O Bitcoin tem bloqueios de tempo em dois níveis:
- Nível da transação. Toda transação tem um campo
nLockTime. Se ele for definido para um momento ou bloco futuro, a rede não aceitará a transação até lá. Isso bloqueia a transação, não a moeda: quem tem as chaves ainda pode assinar outra transação sem o bloqueio. - Nível do script. Dois opcodes,
OP_CHECKLOCKTIMEVERIFY(absoluto) eOP_CHECKSEQUENCEVERIFY(relativo), permitem que as próprias regras de gasto de um endereço exijam que um certo tempo tenha passado. Eles bloqueiam a moeda: nenhuma transação pode gastá-la antes da hora, seja quem for que assine.
As versões no nível do script são as poderosas. Elas permitem criar endereços com vários caminhos de gasto, como "2 destas 3 chaves a qualquer momento, ou esta única chave de backup depois de um ano".
Como as redes de contratos inteligentes fazem isso
No Ethereum e em redes semelhantes, um bloqueio de tempo é apenas lógica de contrato: o contrato compara o horário do bloco atual com um prazo armazenado e se recusa a agir antes dele. Isso torna os bloqueios de tempo flexíveis: contratos de vesting que liberam tokens todo mês, sistemas de governança que impõem um período de espera entre a aprovação de uma votação e sua execução, e contratos atualizáveis que anunciam mudanças com dias de antecedência para que os usuários possam reagir.
Esse último uso importa para a segurança. Um intervalo entre "uma chave de administrador decidiu algo" e "aconteceu" dá a todos tempo para perceber uma mudança maliciosa; é uma das perguntas que vale a pena fazer sobre os poderes de atualização de qualquer contrato.
Para que servem os bloqueios de tempo
- Herança e acesso de emergência. Um caminho de backup que só se abre após um longo período de inatividade permite que herdeiros recuperem os fundos sem poder mexer neles enquanto você estiver ativo. Planejar a herança muitas vezes se resume exatamente a esse tipo de regra.
- Chaves de recuperação. Uma chave de recuperação que pode agir sozinha, mas só depois de um atraso, é bem menos perigosa se for roubada: o dono tem tempo de mover os fundos antes.
- Canais de pagamento. A Lightning Network depende de bloqueios de tempo relativos para dar a cada lado uma janela para contestar uma tentativa de trapaça.
- Vesting e compromissos. Bloquear tokens até uma data faz com que uma promessa seja garantida pela rede, e não pela confiança.
As contrapartidas
Bloqueios de tempo não saem de graça:
- Eles também deixam você de fora. Um bloqueio não sabe distinguir um atacante de uma emergência. Se você precisar do dinheiro antes da data, ele continua bloqueado.
- Complexidade tem custo. Scripts com vários caminhos são mais difíceis de construir, auditar e recuperar. Um erro em um script com bloqueio de tempo pode tornar os fundos impossíveis de gastar, e talvez só apareça anos depois, quando o bloqueio expirar.
- Bloqueios relativos exigem manutenção. Esquemas do tipo "após um ano de inatividade" geralmente exigem que o dono renove suas moedas periodicamente para reiniciar o relógio.
- O suporte das carteiras é irregular. Um endereço com bloqueio de tempo só é útil se o software com que você vai acabar fazendo a recuperação o entender.
Bloqueios de tempo e o SSP
Hoje, os cofres do SSP são multisig puro: um conjunto M-de-N de chaves, sem condições de gasto baseadas em tempo. Seu cofre 2-de-2 pode ser gasto a qualquer momento quando as duas chaves concordam, e nunca de outra forma. É uma contrapartida deliberada: um script simples é fácil de verificar, fácil de restaurar com ferramentas padrão e não tem nenhum relógio que possa surpreender você daqui a alguns anos.
No SSP, a recuperação funciona por meio das suas chaves e dos backups delas, e não por caminhos com atraso de tempo. Como as diferentes configurações multisig se comparam aborda as escolhas que importam para a maioria das pessoas e, para equipes, os cofres do SSP Enterprise permitem escolher quantos signatários precisam aprovar.
O resumo honesto
Bloqueios de tempo permitem que a rede imponha quando as moedas podem se mover, e não apenas quem pode movê-las. Eles tornam possíveis planos de herança, chaves de recuperação e canais de pagamento sem precisar confiar que alguém vá esperar.
Eles também acrescentam complexidade e podem trancar seus próprios donos com a mesma firmeza com que trancam os atacantes. Usados com cuidado, estão entre as ferramentas mais úteis de cripto, e os scripts mais simples ainda costumam ser os mais seguros.


