CLTV ou CheckLockTimeVerify é uma funcionalidade de bloco de tempo interessante que existe no Bitcoin projetada para permitir que seus scripts executem programações de tempo avançadas em suas transações. Uma função que permite programar scripts avançados ajustados à crescente demanda por funções dentro do Bitcoin.
Lna chegada de Bitcoin, junto com a tecnologia inovadora Blockchain, abriu um mundo de possibilidades; incluindo dinheiro programável. Sim, como você ouve, dinheiro programável. O Bitcoin integra muitas funções, e uma dessas funções é conhecida como Verifique a verificação do tempo de bloqueio (CLTV), o que torna possível para saídas não gastas (UTXO) de Bitcoin são bloqueados e não podem ser gastos até que uma hora previamente determinada chegue.
A função CLTV foi integrado em Bitcoin Core através do garfo macio BIP-0065, em que seu desenvolvedor Peter Todd descreva o novo opcode (OP_CODE) OP_CHECKLOCKTIMEVERIFY. Esta função permite que uma transação feita em Bitcoin permaneça bloqueada no tempo e não se torne efetiva até que uma determinada data, hora ou altura de bloqueio seja atingida.
Assim, a função CLTV é muito útil e positiva para vários casos de uso dentro do sistema Bitcoin. Por exemplo, para a poupança a longo prazo de fundos destinados ao pagamento da universidade ou à formatura de um familiar. Também é possível agendar pagamentos futuros para datas específicas, como aluguéis, serviços, consultas médicas ou até mesmo uma herança inteligente entre outros.
Da mesma forma, esta função é especialmente importante para abrir novas alternativas de pagamento. Por exemplo, criando Canais pagos no estilo CLTV. Estes canais de pagamento Eles permitem transações fora da blockchain, mantendo toda a segurança e os benefícios de uma transação convencional dentro da cadeia. Além disso, a função CLTV também permite o estabelecimento de outras alternativas, como reembolsos por tempo limitado ou trusts. As aplicações e casos de uso desta função são realmente infinitos.
Como funciona o CLTV?
Quando um usuário estabelece e realiza uma transação com o código OP_CHECKLOCKTIMEVERIFY, as saídas da referida transação serão ativadas somente quando a condição estabelecida for satisfeita, e não quando a transação for realizada. O que significa que a transação é realizada corretamente, mas as criptomoedas permanecerão bloqueadas no tempo até um momento futuro.
O código OP_CHECKLOCKTIMEVERIFY é executado como parte de um script Bitcoin e sua programação é baseada no uso do UNIX Times (Unix Timestamp) ou nas alturas dos blocos dentro do blockchain. Ou seja, é necessário estabelecer uma condição em algum desses parâmetros para fazer uma comparação com a hora atual. Então o OP_CHECKLOCKTIMEVERIFY verifica o elemento superior da pilha com o bloqueio de tempo (nLockTime) que foi estabelecido na transação. Se, ao fazer esta comparação, for constatado que a condição foi atendida, o script pode ser executado, caso contrário, o script falhará.
As condições para que o script falhe em uma transação CLTV são as seguintes:
- Que a pilha está vazia e não há tempo definido para o código realizar a comparação e verificação.
- Que, como já foi mencionado, o elemento de topo da pilha seja menor do que a condição estabelecida para desbloquear as saídas não gastas. Isso indica que o tempo necessário para desbloquear a transação não passou.
- Outra condição de falha ocorrerá se o bloqueio de tempo estabelecido for medido na altura do bloco e o elemento do topo da pilha usar medidas de tempo (em segundos) ou vice-versa.
- Campo nSequence desta entrada é definido como 0xFFFFFFFF.
Em seguida, Uma transação CLTV só pode ser incluída no blockchain uma vez que excedeu o tempo ou condição estabelecida. Quando isso acontece, as transações CLTV são verificadas imediatamente e adicionadas ao blockchain e são consideradas gastas.
Relação CLTV e nLockTime
CLTV e nLockTime são duas funções que permitem ao Bitcoin programar ações que dependem do tempo ou da altura do bloco para sua correta execução. Mas a relação e o escopo de ambos vão muito além. Por outro lado, o nLockTime garante que o Bitcoin possa agendar transações para serem executadas em uma determinada altura de bloco (bloqueio de tempo de bloqueio) ou por carimbo de data / hora (bloqueio de tempo específico). Com isso, o Bitcoin permite agendar pagamentos usando esses parâmetros.
Mas, por outro lado, o CLTV permite que você adicione uma camada adicional de verificação e programação ao nLockTime. Isso ocorre porque o CLTV pega o nLockTime e verifica se um conjunto agregado de condições agendadas para sua ativação está em vigor, uma situação que era muito mais direta com o nLockTime original. CLTV ainda permite alterar certas condições originais da transação se certas condições forem atendidas.
Por exemplo, um endereço de múltiplas assinaturas 2 de 3, que não foi mobilizado em um determinado período de tempo, pode alterar seus parâmetros de autenticação para 1 de 3, de modo que algumas das pessoas inicialmente autorizadas possam mobilizar os fundos que estão lá conteúdo. Esta é uma funcionalidade única que CLTV pode oferecer e nLockTime sozinho não pode.
Quanto você sabe, cryptonuta?
O CLTV é capaz de modificar as propriedades do script ao longo do tempo e sob certas condições?VERDADEIRO!
Uma das grandes características do CLTV é que sua utilização permite a criação de scripts que podem modificar facilmente as condições de ativação de um evento ou transação na blockchain Bitcoin.
Implementação CLTV
Um dos maiores e mais importantes potenciais da função CLTV é permitir a criação de canais de pagamento e que estes possam ser implementados de forma correta. Por meio dos canais de pagamento, microtransações podem ser criadas fora do blockchain. Tudo isso sem ter que pagar tantas taxas de comissão para cada um e sem quebrar o blockchain.
Nos canais de pagamento, um usuário pode fazer uma transação para outro depositando uma certa quantidade de criptomoedas em um endereço de multi-assinatura (MultiSig). Ambos os usuários terão acesso a esse endereço. E o usuário que realiza a transação pode assinar pequenas transações que serão feitas para o outro usuário a partir desses fundos. Isso até obter o produto desejado. O restante dos fundos será devolvido a você em uma transação de retorno para cada micro-transação que você fizer. Enquanto o comerciante poderá reivindicar o pagamento final acumulado, que terá sido feito sem quebrar o blockchain e pelo qual Maria pagou apenas uma taxa de comissão.
Exemplo de como funciona o CLTV
Se Maria quiser ver um vídeo, mas para isso ela deve pagar 1 sat por segundo assistido. Não é conveniente para Maria realizar essas transações de 1 sat por segundo por meio de uma transação convencional em Bitcoin. Já que para isso você deve pagar a taxa de comissão para cada transação que fizer. Você também deve esperar que a transação seja confirmada em um bloco; o que acontece a cada 10 minutos em Bitcoin.
Vendo que isso não é conveniente, Maria decide criar um canal de pagamento. Neste canal, você fará um depósito em um endereço de múltiplas assinaturas de 0.5 BTC, o que equivale a 50.000.000 satoshis. Tanto o comerciante quanto Maria terão acesso ao endereço com várias assinaturas. Assim, quando Maria começar a ver o vídeo, ela assinará uma transação em que enviará 1 sat para o comerciante no primeiro segundo visto. E 49.999.999 sats para alterar o endereço de sua assinatura.
Este processo será repetido várias vezes enquanto Maria continuar a assistir ao vídeo. Em outras palavras, ela continuará assinando microtransações e pagando a quantidade de satoshis equivalente aos segundos que ela assiste ao vídeo, e depositando suas devoluções em um endereço de retorno. Se Maria viu apenas 2 segundos de vídeo, ela assinará uma nova transação, mas desta vez 2 sentaram para o comerciante e 49.999.998 sentaram-se para seu endereço de retorno. Se você viu apenas 3 segundos, assinará outra transação, mas desta vez 3 sentaram para o comerciante e 49.999.997 sentaram-se para seu endereço de retorno.
Durante este processo, o comerciante não reivindicará ou assinará 1 ou 2 transações de satélite recebidas. Em vez disso, ele esperará que Maria veja tudo o que ela deseja do vídeo e reivindicará o pagamento final. Ou seja, a maior transação. As demais transações realizadas no início não serão firmadas, pois implicariam em duplicidade de gastos. Portanto, o comerciante deve ir para a maior transação contendo todos os satoshis recebidos, neste exemplo, a transação de 3 satoshis.
Além disso, ao final, o comerciante assina apenas uma transação, esta é a que será adicionada ao blockchain e será a única em que a taxa de comissão correspondente aos mineiros deverá ser cancelada. Além disso, Maria pode implementar um Transação CLTV no início para garantir a devolução dos seus fundos depositados no endereço multi-assinaturas. Se você definir um determinado prazo para que ambos assinem a transação, e por qualquer motivo, um ou nenhum de vocês poderá assiná-la antes dessa hora. Para que Maria possa recuperar seu dinheiro. Pois se a transação não for assinada antes da condição estabelecida, Maria pode assinar a transação e ter seu dinheiro de volta depois de decorrido o tempo estabelecido.
Resumindo, o código OP_CHECKLOCKTIMEVERIFY oferece uma vantagem positiva para a implementação de contratos inteligentes. Isso garante a integridade dos fundos até que o carimbo de data / hora estabelecido ou a altura do bloco sejam atingidos. Evitando falhas do sistema pelo maleabilidade da transação.