Os timelocks são uma das funcionalidades mais práticas do Bitcoin, permitindo a capacidade de programar ações de acordo com uma série de parâmetros, tornando o Bitcoin melhor que o dinheiro, um dinheiro digital totalmente programável.
UUm dos recursos inovadores que possui Bitcoin é conhecido como TimeLock. Esta é uma ferramenta que serve para estabelecer e especificar certas condições sob as quais as transações podem ser validadas.
Un timelock o bloqueio de tempo, é um tipo de contrato inteligente primitivo, que se refere a qual altura do bloco ou hora específica, uma transação específica pode ser incluída pelos mineradores na blockchain. Pelo que funciona como uma espécie de bloqueio absoluto ou restrição ao gasto de certas bitcoins até que essas condições sejam atendidas.
Um timelock pode ser definido com base no tempo real ou em uma altura específica do bloco. Então, quando esse tempo ou aquele altura do bloco definido no prazo, os mineradores poderão incluir a transação no hash De árvore de merklee adicione-o ao último bloco da blockchain. E, neste momento, é que a transação pode ser confirmada.
Classificação de TimeLocks
Timelocks foram adicionados ao software Bitcoin original por seu criador, Satoshi Nakamoto. Eles estão presentes em todas as transações, mesmo que a maioria não use essa função; portanto, o tempo de bloqueio padrão é 0x00000000 (0) ou 0xFFFFFFFF (4294967295). No entanto, para as transações em que o timelock é usado, é importante saber que ele possui três atributos importantes. Que são: localização, orientação y Métricas.
Localização
Como já mencionamos, Os timelocks podem ser encontrados nas transações, mesmo que esse recurso não seja usado. E eles também podem ser incluídos nos scripts. Ambos são muito semelhantes, mas executam funções completamente diferentes.
Nas transações, os timelocks fazem com que não possam ser validados até atingir um determinado tempo ou atingir uma altura de bloco definida, embora suas assinaturas digitais e Scripts sim, eles são válidos. Embora os tempos de bloqueio em scripts, eles determinam se um script é válido. Portanto, as condições podem ser definidas em todas as transações que gastam uma saída.
Ao contrário do bloqueio de transações, eles apenas restringem essa transação específica. Daí a importância da localização dos timelocks para que eles possam realizar a operação correspondente.
orientação
Existem timelocks de tempo absoluto ou tempo parente. A primeira permite definir o bloqueio em termos de um determinado tempo. Assim podemos escolher o momento exato em que o bloco terminará.
Já o bloqueio de tempo relativo nos permite definir um determinado período de tempo que deve decorrer a partir da confirmação das saídas anteriores. Ambas as opções são extremamente úteis para definir os intervalos de tempo necessários para que uma transação seja processada pela rede Bitcoin.
Métricas
No Bitcoin, existem duas maneiras de medir o tempo: o número do bloco e a timestamp. Para que possamos usar os dois para estabelecer um cronograma. Quando um timelock é estabelecido com base em um número de bloco, os mineradores devem esperar atingir esse número de bloco. Isso para validar e confirmar a operação e incluí-la em um novo bloco.
Por outro lado, quando o timelock é definido com base em um timestamp, os mineiros aguardam o tempo definido em segundos para passar. Em outras palavras, um certo tempo é alcançado para validar a transação. Isso é medido com a marca de Hora Unix.
Tipos de Fechaduras
Hoje em dia, Bitcoin atualmente tem 4 maneiras de definir bloqueios ou timelocks. Duas dessas ferramentas estão no nível da transação e as outras duas estão no nível do script. Vamos olhar para cada um deles.
1.nLockTime
Trata-se de um bloqueio de tempo absoluto no nível da transação. É o único horário que estava disponível na versão original do software Bitcoin. Quando o nós não retransmitiu ou prejudicou as transações com nLockTime igual ou maior que a altura do bloco atual.
Portanto, as transações não foram validadas até que o bloco estabelecido fosse atingido. Nesses bloqueios, o tempo é expresso como números inteiros de 32 bits não assinados. Se o número for menor que 500 milhões, será interpretado como uma altura do bloco. Pelo contrário, se for superior a 500 milhões, é considerado como uma marca de tempo Unix.
Na versão 0.1.6 do Bitcoin, a interpretação de O nLockTime foi ajustado para permitir também o bloqueio baseado em tempo. Em seguida, começando com o bloco 31001, as restrições nLockTime foram ativadas como uma regra que também se aplicava à aceitação do bloco. Posteriormente, em julho de 2016, os bloqueios baseados no horário foram alterados para operar no tempo médio passado, em vez do carimbo do tempo do bloco.
Um nLockTime pode bloquear uma transação por até 9.500 anos usando números de bloco e 2.106 anos usando carimbos de data e hora. E, embora atualmente todas as transações contenham a função nLockTime, a maioria das carteiras tem essa predefinição como 0. Isso significa que as transações podem ser validadas em qualquer bloco da cadeia.
2. nSequência
Trata-se de um bloqueio de tempo relativo no nível da transação. Esses bloqueios foram introduzidos no garfo macio BIP 68 em meados do ano de 2016. Nele, os números de sequência são usados para estabelecer timelocks de tempo relativo no nível da transação. Isso permite que uma entrada especifique o horário mais antigo que pode ser adicionado a um bloco. Dependendo de quanto tempo atrás, a produção gasta por essa entrada foi incluída em um bloco na blockchain.
Ao aplicar um nSequence várias condições de tempo diferentes podem ser definidas na mesma transação. Assim, para que a transação seja válida, todas as condições devem ser atendidas. E se isso não acontecer, toda a transação será rejeitada.
Ao contrário do nLockTime, o nSequences usa apenas 18 do total de 32 bits, portanto, 14 bits são reservados para futuras implementações. E desses 18 bits em uso, 16 bits destinam-se a codificar o tempo de bloqueio. Portanto, os bloqueios nSequence são limitados a 65.535 unidades de bloco e apenas 18 horas em segundos.
3.CheckLockTimeVerify
Também conhecido por suas iniciais como CLTVÉ um bloqueio de tempo absoluto no nível do script. É detalhado no garfo macio BIP 65 e foi introduzido na rede no final de 2015, pelo desenvolvedor Peter Todd. Esta proposta abre a possibilidade de realizar uma transação na qual a data específica em que ela entrará em vigor pode ser especificada (ou seja, a data em que o destinatário pode fazer uso dos fundos enviados).
Uma das funções avançadas que o CTLV permite é alterar o parâmetro de autenticação de um endereço com várias assinaturas. Por exemplo, se um endereço com várias assinaturas foi criado com o esquema 2 de 3, o CLTV pode alterar o referido parâmetro sob certos critérios para o esquema 1 de 3. Dessa forma, a pessoa pode recuperar os fundos sob certas condições previamente acordadas e que são definido na transação devido à capacidade de ser dinheiro programável em Bitcoin.
Quanto você sabe, cryptonuta?
Os timelocks podem expandir os recursos e os recursos de programação do Bitcoin?VERDADEIRO!
Os timelocks são muito úteis para fornecer ao Bitcoin novos recursos de programação que permitem a construção de novos recursos impressionantes. Um exemplo disso é o Lightning Network, que depende dos prazos e de sua capacidade de programar ações no Bitcoin.
4.- CheckSquenceVerify
É bloqueio de tempo relativo no nível de script. Também parte do garfo macio BIP 68, mas foi descrito no BIP 112 e foi adicionado em meados de 2016. CSV fornece um tempo de bloqueio relativo, assim como a CLTV fornece um para tempo de bloqueio absoluto, portanto, eles são extremamente semelhantes. No entanto, em vez de verificar a hora como o CLTV faz, o CSV verifica a pilha superior com o campo de entrada.
Quando o código de operação CSV é chamado, ele fará com que o script falhe, a menos que nSequence na transação indique que uma quantidade relativa de tempo de bloqueio igual ou superior ao parâmetro fornecido para o código de operação CSV passou. Isso garante que a transação possa ser incluída em um bloco válido quando o bloqueio de tempo baseado em CSV expirar.
Com este código de operação você pode bloquear transações em um máximo de 65.535 blocos, o que equivale a aproximadamente 455 dias. Ou um máximo de 65.535 × 512 segundos, o que é aproximadamente 388 dias.