O código de verificação CheckSequenceVerify é uma funcionalidade interessante do Bitcoin que abre as portas para scripts avançados que nos permitem fazer pagamentos seguros controlados por valores de tempo programáveis.

UUma das funções mais úteis que possui Bitcoin ScriptSão o time locks ou TimeLockComo opcode (OP_CODE) CheckSequenceVerify (CSV). Isso junto com outros códigos de bloqueio torna possível para Bitcoin pode ser usado como dinheiro digital programável.

El CheckSequenceVerify é um bloqueio de tempo relativo que opera no nível do script. Isso nos permite definir o momento exato em que um bloqueio em uma transação específica terminará. E embora este seja um recurso que fazia parte do garfo macio De BIP 68, não foi até BIP 112 onde foi realmente adicionado ao sistema Bitcoin.

A utilidade CheckSequenceVerify permite funcionalidade avançada para sistemas de construção, como canais de pagamento de Rede de relâmpagos (LN). Além disso, abre as portas para a criação de funcionalidades avançadas para a gestão de fundos de forma descentralizada, úteis para trocas descentralizadas (DEX) ou troca de serviços P2P seguro.

Da mesma forma, embora a forma de operar CheckSequenceVerify (CSV) é bastante semelhante ao de CheckLockTimeVerify (CLTV), em CSV a pilha superior é verificada com o campo de entrada, em vez de verificar a hora como é o caso em CLTV. Assim, podemos calcular o tempo com base no número de blocos que foram gerados após a confirmação da transação. Ou seja, bloqueios de tempo relativo como CheckSequenceVerify podem marcar uma transação como inválida. E para isso monitoram se já passou o intervalo de tempo estabelecido desde que foram confirmadas as saídas anteriores da transação.

Em palavras mais simples, os bloqueios de tempo relativos nos permitem definir exatamente a quantidade de tempo a decorrer antes que uma transação possa ser confirmada. Ao contrário dos bloqueios de tempo absoluto que definem o momento exato (número do bloco ou data e hora) em que o bloqueio na transação terminará.

Como funciona o CheckSequenceVerify (CSV)?

Bloqueios de tempo no nível do script, como CheckSequenceVerify (CSV) operar em conjunto com bloqueios de nível de transação, portanto, os últimos são importantes ao aplicar um bloqueio CSV. Isso ocorre porque nos bloqueios CSV os scripts verificam o bloqueio da transação. Para isso, verificam se a referida transação está bloqueada e utilizam esses bloqueios nas transações como garantia de antiguidade que indica que decorreu o tempo estabelecido.

No BIP 112 de Bitcoin, CheckSequenceVerify é descrito como um opcode que fornece uma nova definição para o comando OP_NOP3 existente. Esta atualização permite que você bloqueie uma transação no nível do script com base na idade ou idade da saída que está sendo gasta. Esta funcionalidade funciona em conjunto com o BIP 68. Desta forma, também pode evitar que uma transação seja incluída em um bloco. Isso até que o tempo ou antiguidade estabelecido tenha decorrido.

Quando o bloqueio CSV é verificado com o valor nSequence estabelecido, verifica-se se a idade mínima do produto que está sendo gasto já foi atingida. Se isso ainda não for cumprido, os caminhos de execução do script que incluem o bloqueio CSV podem ser validados. Assim, a transação não pode ser incluída em um bloco até que a condição seja atendida.

Assim, quando o opcode CSV é chamado, ele faz com que o script falhe, a menos que o número de sequência na transação indique que um intervalo de tempo já decorreu no bloqueio de tempo relativo, que é maior ou igual a o indicador de código de operação CSV. Garantindo assim que a transação só poderá ser incluída em um bloqueio válido uma vez que o tempo de bloqueio tenha expirado ou expirado.

Quando este opcode é implementado, CheckSequenceVerify permite definir bloqueios em transações com um máximo de até 65.535 blocos. Mas você também pode definir esse bloqueio para um máximo de até 65.535 * 512 segundos. Por outro lado, esses bloqueios são muito úteis ao estabelecer bloqueios de tempo relativos em transações que não foram confirmadas ou transmitidas para a rede. Visto que o CSV permite a criação de transações inteligentes definindo e estabelecendo previamente todas as instruções que são necessárias para a sua execução. Assim, temos a garantia e segurança de que o referido contrato ou transação somente ocorrerá sob o pedido estabelecido. Tudo isso independentemente de quando comece a funcionar.

Implementações de CheckSequenceVerify (CSV)

A implementação do opcode OP_CSV permite que as transações no blockchain tenham uma data de expiração relativa.  Uma propriedade que, por sua vez, permite que as transações sejam armazenadas indefinidamente. Enquanto as condições de bloqueio de tempo inicialmente estabelecidas permanecerem. O contrário aconteceria se fosse utilizado o código de operação OP_CLTV, com o qual toda a cadeia de transações teria um prazo de execução e expiração.

Então, quando OP_CSV é usado para encadear transações por meio de tempos de bloqueio relativos, é possível criar um caminho de código que só é acessível após o intervalo de tempo definido. Ou seja, depois que as saídas que estão sendo gastas forem confirmadas. Permitindo a criação e aplicação de funções adicionais que tornam a rede muito mais atrativa. Por exemplo, a implementação de contratos com datas de vencimento o a possibilidade de ter praticamente a característica de reorganização da cadeia o invalidação retroativa. Embora seja quase impossível fazer em um blockchain, outros aplicativos semelhantes, como protocolos de custódia ou contratos com prazo determinado, canais de pagamento bidirecionais y rede de iluminação.

Quanto você sabe, cryptonuta?

A existência de CheckSequenceVerify é vital para a Lightning Network?

VERDADEIRO!

Um dos requisitos necessários para o funcionamento do Lightning Network é a função CheckSequenceVerify, necessidade descrita no white paper da Lightning Network, principalmente para evitar situações em que uma das partes possa roubar fundos do sistema.

Casos de uso de CheckSequenceVerify (CSV)

Agora vamos examinar alguns casos de uso que o CSV nos permite no Bitcoin graças à sua criação:

Criação de contratos com prazo de validade

Com o CSV é possível estabelecer contratos com prazo determinado ou data de vencimento. Nesses contratos, você pode definir várias condições que começarão quando uma transação começar e se tornar efetiva. Por exemplo: para efectuar um depósito de garantia entre 2 ou mais pessoas, que expira automaticamente após 30 dias da sua realização, as partes envolvidas (Maria, Pedro e Juan) podem constituir um endereço multi-assinatura com as seguintes condições:

  • Os fundos podem ser recuperados sempre que você quiser, usando 2 das 3 assinaturas autorizadas. Estes podem ser combinados de qualquer forma (María e Pedro, Pedro e Juan, María e Juan).
  • Maria pode assinar sozinha e usar os fundos somente após 30 dias da transação.

Este bloqueio de tempo relativo começará até que a transação seja confirmada no endereço de depósito.

Crie proteções de invalidação retroativas

Embora por motivos de segurança e proteção, o blockchain é imutável uma vez que dados e informações tenham sido adicionados a ele. Mas existem muitos casos em que o ideal é poder alterar ou cancelar um contrato depois de estabelecido. No entanto, embora você não possa realizar diretamente um invalidação retroativa uma vez que os dados foram confirmados dentro do blockchain, um reorganização da cadeia. Embora esse recurso também seja particularmente difícil de fazer e bastante caro.

Porém, por meio do código de operação CSV, você pode construir scripts com diversos ramos para a execução de operações. Sempre que, caso uma ou mais destas ramificações estejam atrasadas ou não sejam cumpridas, é criado um espaço no qual é possível adicionar uma condição de anulação do contrato original, que permite o dispêndio das saídas. Cancelamento da filial onde a condição que não foi atendida foi estabelecida. Evitando assim que a transação seja transmitida para a rede. Caso contrário, o contrato seguirá o curso originalmente estabelecido.

Criação de contratos HTLC (Contratos Hash Time Locked)

Uma das funções mais importantes do CSV é a criação do Contratos de Hash Time Locked ou Hash Time Locked Contracts (HTLC). É graças a estes contratos que é possível criar um sistema que permite a dois utilizadores criar um canal de pagamento. Aquele em que a parte receptora deve criar prova criptográfica válida para liberar o pagamento retido pelo contrato.

Esta função é o que permite, por exemplo, criar canais de pagamento seguros entre dois usuários. Esses canais são capazes de realizar operações em cadeia (na mesma cadeia) e em cadeia cruzada (entre duas cadeias diferentes). Desta forma, os HTLCs permitem um mecanismo seguro para realizar operações de swaps atômicos.

Mas não só isso, os HTLCs também são o que tornam possível a operação segura da Lightning Network. Demonstrando assim o impacto e a utilidade dos CSVs em todo o ecossistema Bitcoin.