nLockTime é a primeira função de bloqueio de tempo que o Bitcoin teve desde seu início e projetada por Satoshi Nakamoto, como uma forma de permitir transações agendadas e acionadas por parâmetros de tempo dentro do protocolo Bitcoin.
Uuma das propriedades mais interessantes que possui Bitcoin são time locks ou timelock como nLockTime. Este tipo de funcionalidade permite ao usuário definir o momento exato em que uma transação pode ser validada e confirmada na rede. Uma qualidade que transforma Bitcoin em dinheiro digital programável. Por exemplo, implementando smart contracts ou contratos inteligentes. Tudo isso é possível graças ao fato de que o Bitcoin possui uma poderosa linguagem de programação chamada Bitcoin Script.
Então temos que nLockTime é um bloqueio de tempo absoluto no nível da transação. Isso permite definir o momento a partir do qual uma transação pode ser validada e incluída em um bloco válido do blockchain. Isto é, nLockTime especifica a primeira hora a partir da qual uma transação pode ser validada e confirmada.
Este tipo de bloqueio de tempo é crítico para a implementação de transações programáveis no sistema Bitcoin. Isso permite que, uma vez definidas e cumpridas as condições estabelecidas no contrato, as transações possam ser executadas de forma automática e sem intermediários.
Da mesma forma, nLockTime é o único bloqueio de tempo que está presente desde a implementação do cliente Bitcoin original, o Bitcoin Core. Portanto, este campo está incluído em cada transação. No entanto, em clientes e carteiras Bitcoin, o campo nLockTime é predeterminado com o valor 0. Portanto, se esse campo não for modificado, as transações podem ser incluídas em qualquer bloco válido do blockchain.
Como funciona o nLockTime?
O bloqueio de tempo nLockTime define um intervalo mínimo de tempo para que uma transação seja validada e incluída em um bloco. Portanto, esta função é implementada e utilizada para evitar a extração de uma transação antes que o tempo especificado no bloqueio estabelecido seja atingido. E se não, a rede simplesmente invalida a referida transação evitando seu processamento.
No cliente Bitcoin original, esse bloqueio só permitia definir as condições de bloqueio com base na altura do bloco. Portanto, os nós da rede não poderiam incluir as transações com nLockTime até que a altura mínima de bloco estabelecida no bloqueio fosse atingida.
Posteriormente, o nLockTime foi ajustado para que as condições de bloqueio baseadas no tempo pudessem ser aplicadas nas transações Bitcoin. Que atualmente operam com base no hora e meia e não no próprio carimbo de data / hora do bloco. Portanto, o nLockTime requer que um intervalo de tempo definido ou uma certa altura de bloco seja alcançada antes que a transação possa ser validada.
Por sua vez, em nLockTime o bloqueio é mostrado como um número inteiro de 32 bits, onde:
- Se nLockTime for inferior a 500.000.000, então é entendido como um bloqueio de tempo com base na altura do bloco. Onde, apenas uma vez que esta altura do bloco seja atingida ou ultrapassada, a transação pode ser confirmada dentro de um bloco válido.
- Se nLockTime for maior que 500.000.000, então é entendido como um bloqueio de tempo baseado em tempo, que será medido em Hora UNIX. Onde, apenas uma vez que este carimbo de tempo é igualado ou excedido, a transação pode ser confirmada dentro de um bloco válido.
Além disso, nLockTime permite que uma transação seja bloqueada por até 9.500 anos quando é um bloqueio de tempo com base na altura do bloco. Considerando que para bloqueios com base em um intervalo de tempo, nLockTime pode definir um bloqueio em um por até 2.106 anos.
Implementação de NLockTime
Como nLockTime só permitirá que uma transação seja extraída e adicionada a um bloco válido quando uma altura ou tempo de bloco definido for atingido ou excedido, este bloqueio é usado para definir e agendar transações que serão confirmadas apenas no futuro. Portanto, é amplamente útil para criar contratos inteligentes.
A particularidade do nLockTime permite que, caso alguma das partes envolvidas no contrato não cumpra, as transações agendadas possam ser alteradas ou modificadas, antes que o tempo limitado termine ou a altura do bloco seja atingida e as transações sejam executadas. Caso ocorra alguma eventualidade, inadimplência ou simplesmente uma das partes decida mudar de ideia, uma nova transação sem bloqueio pode ser estabelecida para invalidar a transação que possui o bloqueio de tempo. Desde que as mesmas saídas usadas como entradas na transação com o bloqueio nLockTime definido sejam usadas como entradas.
Assim, a nova transação criada, por não ter um tempo de bloqueio estabelecido, será validada e confirmada em um dos blocos seguintes imediatamente após sua criação.
Contratos inteligentes ou canais de pagamento sem confiança
Por outro lado, através do nLockTime você pode criar canais de pagamento Eles não exigem confiança ou terceiros. Por exemplo, se um endereço multi-assinatura 2/2 em que bitcoins são depositados para fazer pagamentos gradativos a uma das partes envolvidas, ambas as partes terão a posse de uma das chaves de endereço.
O usuário A, antes de fazer o depósito de bitcoins no endereço de multi-assinatura com o qual o usuário B será pago, pode definir uma transação nLockTime para uma certa altura de bloco ou definir um carimbo de data / hora.
Assim, o usuário A terá a posse de uma das chaves, e o usuário B terá a posse da outra chave do endereço. Assim, o usuário A pode assinar uma transação quando deseja fazer um pagamento ao usuário B; colocar os bitcoins em uma saída que exija a assinatura de ambas as partes (usuários A e usuário B), mas não a transmita para a rede. Por meio do hash dessa primeira transação, o usuário B cria uma segunda transação que gasta a primeira e retorna os bitcoins ao usuário A por meio do endereço de assinaturas múltiplas. Neste ponto, como ambas as partes devem assinar, a transação não pode ser concluída. Portanto, nenhuma das partes pode gastar os bitcoins.
Como o campo nLockTime é definido com uma altura de bloco ou timestamp, a transação pode ser devolvida ao usuário A. Isso caso as condições do contrato não sejam atendidas e a transação não seja assinada por ambas as partes conforme exigido. Portanto, o depósito realizado poderá ser recuperado, uma vez transcorrido o bloqueio definido, se a outra parte envolvida não cumprir a obra ou agir de forma indevida.
Quanto você sabe, cryptonuta?
O nLockTime é a maneira mais simples de bloquear Bitcoin com tempo?VERDADEIRO!
nLockTime é a primeira e mais básica forma de bloqueio de tempo dentro do Bitcoin e um recurso projetado pelo próprio Satoshi Nakamoto.
nLockTime e CLTV Como eles são diferentes?
No Bitcoin, existem várias formas de bloqueio de tempo ou timelocks. Essas operações permitem que o Bitcoin tenha transações ou operações que podem ser programadas. E isso pode ser em relação a uma unidade de tempo (descrita como um timestamp) ou a uma determinada altura de bloco (ativação com altura de bloco). Graças a eles, um TX pode ser enviado e só pode ser validado após o tempo especificado ou condição de altura ser atingida.
Um exemplo desse utilitário pode ser que Maria deseja enviar um pagamento a Daniel. Mas esse pagamento só pode ser feito 15 horas após a emissão da transação. Para isso, Maria emite a transação com a função nLockTime. Isso garante que a transação só possa ser processada 15 horas após a emissão. Muito útil para dizer a verdade.
Mas e se precisarmos fazer operações mais complexas? Bem, nesse caso, nLockTime não nos permite fazer coisas mais complexas. Então, para salvar esta situação, os desenvolvedores de Bitcoin criaram CLTV ou CheckLockTimeVerify. Este OP_CODE ou código de operação permite que você use o valor de nLockTime (o bloco de tempo ou valor do bloco) e adicione agendamento adicional. Quer dizer, A CLTV nos permite adicionar uma série de condições adicionais que devem ser atendidas para que a transação seja validada. A CLTV pode inclusive alterar essas condições caso as condições iniciais não tenham sido atendidas, permitindo o desbloqueio do pagamento nas demais condições já programadas.
Um exemplo claro do uso de CLTV é um fundo de bitcoin protegido por um endereço de múltiplas assinaturas. Caso os referidos fundos não sejam mobilizados dentro de um determinado período de tempo, a CLTV pode modificar as condições de desbloqueio dos referidos fundos. Portanto, podemos converter um endereço com várias assinaturas 2 de 3 em um endereço com várias assinaturas 1 em 3. Com o que bastaria uma assinatura válida para poder aceder aos referidos fundos.