Em 9 de outubro, Robin Linus, um desenvolvedor da ZeroSync, lançou o whitepaper do BitVM, que atraiu grande atenção da comunidade. O BitVM introduz um novo paradigma de computação capaz de expressar contratos Bitcoin Turing-completos sem exigir modificações nas regras de consenso da rede.
Contratos Inteligentes Descentralizados: Limitações e Objetivos
O Script do Bitcoin, uma linguagem baseada em pilha, fornece estruturas de controle fundamentais, como verificações condicionais, para definir a lógica de validação das transações. Exige assinaturas digitais válidas para gastar bitcoins por meio de um processo simples de validação condicional.
Dito isto, o Script foi projetado para não ser Turing completo. Embora não suporte recursos complexos de controle de fluxo, como loops, esse design garante simplicidade e segurança da linguagem.
Essas limitações tornaram difícil para o Script executar cálculos complexos, incluindo aqueles que envolvem contratos inteligentes.
Embora algumas soluções de Camada 2 projetadas para o Bitcoin possam alcançar funções básicas de contrato inteligente bloqueando ativos, elas dependem essencialmente de endereços com múltiplas assinaturas e mapeamentos de ativos entre redes, que exigem um certo nível de confiança centralizada.
Isto compromete o compromisso do Bitcoin com a descentralização. Antes da introdução do BitVM, a comunidade Bitcoin explorava métodos que seriam descentralizados, com confiança minimizada e capazes de cálculos Turing completos.
BitVM: calcule qualquer coisa com Bitcoin
No centro de sua inovação, o BitVM utiliza o sistema Script existente no Bitcoin para implementar portas lógicas (isso inclui portas AND, OR, NOT e XOR, permitindo operações como AND, OR, NOT e XOR) para construir booleanos arbitrariamente complexos.
Esses circuitos são usados para realizar operações lógicas em entradas binárias e fornecer saídas binárias; A computação booleana pode ser implementada usando portas lógicas para realizar operações como AND, OR, NOT e XOR.
Especificamente, o BitVM emprega Hash Time Locked Contracts (HTLC) e Taproot (um soft fork para otimização de script ativado em novembro de 2021) para representar portas lógicas fundamentais, como portas AND e OR.
O BitVM então combina essas portas lógicas básicas para construir circuitos de qualquer complexidade, essencialmente simulando um computador programável na blockchain Bitcoin.
Finalmente, no caso de disputas entre as partes envolvidas na transação, um protocolo elegante de resposta a desafios, semelhante às provas de fraude no Bitcoin, pode ser empregado para validação.
Um provador afirma que uma determinada função avalia algumas entradas específicas para alguma saída específica. Se essa afirmação for falsa, o verificador pode realizar uma prova de fraude e punir o provador. Usando este mecanismo, qualquer função computável pode ser verificada no Bitcoin.
Design do BitVM
Comprometimento de valor de bit
Bit Value Commitment, um script Bitcoin, emprega instruções if-else para implementar um esquema de compromisso. Esta criptográfica primitiva garante que o remetente possa confirmar o conteúdo da mensagem antes de enviá-la, e o conteúdo não pode ser alterado após divulgado publicamente.
Este esquema de compromisso abrange dois valores de hash, hash0 e hash1. Se o valor retornado será 0 ou 1 é determinado comparando o valor de hash da entrada com esses dois valores hash.
Imagem 1: Uma implementação concreta para um compromisso de 1 bit
Comprometimento de Porta Lógica
Na teoria da computação, qualquer função computável pode ser representada como um circuito booleano. Em particular, a porta NAND é uma porta lógica universal que pode ser usada para construir todas as outras portas lógicas complexas.
O BitVM incorpora dois compromissos de valor de bit que representam as duas entradas e um terceiro compromisso de valor de bit que representa a saída para implementar a porta NAND.
O BitVM expressa engenhosamente a porta NAND por meio de scripts Bitcoin. Isso permite construir circuitos lógicos booleanos arbitrariamente complexos, simulando efetivamente um computador programável via Script.
Imagem 2: Implementação de uma porta NAND usando compromissos de valor de bit
Fonte: https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754
Imagem 3: Compromisso de porta lógica para uma operação NAND
Fonte: https://bitvm.org/bitvm.pdf
O script calcula o valor NAND das duas entradas para garantir que corresponda ao bit de saída comprometido.
Comprometimento de Circuito Binário
O BitVM pode expressar qualquer circuito compondo compromissos de porta. Cada etapa da execução é comprometida em um Tapleaf. Eles são todos combinados no mesmo endereço Taproot, de modo que o provador pode executar qualquer porta do circuito.
A execução de uma porta exige que o provador abra o compromisso da porta correspondente e defina valores para seus bits de entrada e saída. Por exemplo, na Imagem 4, A, B, C e D são compromissos de valores de bits pré-definidos, cada um representando um bit. As operações lógicas envolvendo as oito portas NAND são então realizadas.
Por exemplo, se A NAND B resulta em E, e E for usado como entrada para a próxima porta NAND, a saída final de todo o circuito será TRUE. Este projeto de circuitos booleanos conecta as portas NAND de compromissos de valor de bit e realiza operações lógicas complexas, oferecendo uma representação compacta para computação verificável na blockchain Bitcoin.
Imagem 4: Um circuito com oito portas NAND diferentes.
Fonte: https://bitvm.org/bitvm.pdf
Desafios e Respostas
No BitVM, comprometer-se com um circuito não é suficiente e é necessário um mecanismo de resposta ao desafio para provar a exatidão dos cálculos.
Para conseguir isso, o provador e o verificador devem pré-assinar uma sequência de transações durante a configuração. As transações estão ligadas na ordem “desafio – resposta – desafio – resposta”, criando múltiplas rondas de interações desafio-e-resposta.
Se uma das partes parar de participar, após o tempo limite, a outra parte vencerá o desafio e poderá receber ambos os depósitos. Este mecanismo é necessário apenas em caso de fraude. Desde que ambas as partes cooperem, podem resolver conjuntamente qualquer contrato com uma assinatura 2 de 2.
Vamos ver como esse mecanismo funciona em um caso hipotético. Paul (provador) e Vicky (verificador) pré-assinaram uma sequência de transações. Vicky pode então iniciar um desafio (TX 2) selecionando um desafio (hash7) de um dos hashlocks em suas folhas Tapscript.
Isso desbloqueia para Paul um Tapscript específico e o força a executá-lo, com entradas e saídas abertas. Qualquer afirmação inconsistente pode ser refutada rapidamente repetindo este procedimento por algumas rodadas de consultas.
Se o provador parar de colaborar, o verificador poderá desbloquear uma pré-imagem de hash que ele possui para forçar o provador a responder na blockchain. Cada rodada de consultas pode validar ou refutar uma porta específica.
Através da pesquisa binária (um algoritmo usado para localizar um elemento específico em uma matriz ordenada), o verificador pode identificar rapidamente o erro do provador após apenas algumas rodadas de desafio e resposta. Uma vez que os dois compromissos do provador entrem em conflito, o verificador vence imediatamente o desafio e aceita o depósito.
Imagem 5: Uma sequência pré-assinada de transações para realizar múltiplas rodadas de desafio e resposta
Fonte: https://bitvm.org/bitvm.pdf
Este design meticuloso permite ao BitVM realizar verificação on-chain de qualquer computação complexa, o que garante a eficiência da colaboração e impõe penalidades em caso de fraude. Isso demonstra a possibilidade de verificar computações interativas Turing-completas na rede Bitcoin.
Aspectos-chave do Design do BitVM
Computação off-chain & Verificação on-chain
O BitVM transfere o ônus da computação complexa para fora da blockchain, reservando a blockchain do Bitcoin exclusivamente para verificar os resultados. Essa abordagem evita a execução direta de contratos complexos na blockchain, o que ajuda a evitar o aumento excessivo do tamanho da blockchain.
Portas Lógicas Expressas com Hashlocks e Scripts do Bitcoin
O BitVM aproveita hashlocks e códigos de operação de script suportados pelo Bitcoin para representar portas lógicas básicas, como portas AND e NOT. Conectar essas portas lógicas permite construir circuitos de complexidade arbitrária, possibilitando computações Turing-completas.
Um mecanismo de teoria dos jogos para o provador e o verificador
O mecanismo de validação do BitVM, que se assemelha ao Optimistic Rollup, envolve desafios e respostas interativas entre as partes da computação. Em última análise, o resultado correto do cálculo é confirmado on-chain. Se o provador trapacear, o verificador pode executar penalidades na blockchain do Bitcoin.
Como tal, o BitVM e o Optimistic Rollup empregam mecanismos de interação semelhantes para verificação on-chain, e a única diferença é que o BitVM usa diretamente scripts Bitcoin para implementar um processo interativo de resposta a desafios.
Impacto Mínimo On-chain
O processo de computação do BitVM tem impacto mínimo na blockchain do Bitcoin, deixando apenas um pequeno número de transações on-chain quando surgem disputas. Isto preserva a eficiência e escalabilidade do Bitcoin.
Sem Necessidade de Soft Forks
Como o BitVM utiliza apenas as capacidades existentes de script do Bitcoin, não requer nenhuma modificação no protocolo do Bitcoin por meio de soft forks. Isso facilita a integração do BitVM na mainnet do Bitcoin.
Conclusão
A maior inovação do BitVM reside em sua capacidade de implementar a verificação Turing-completa sem modificar o protocolo central do Bitcoin; ele consegue isso fazendo uso criativo de scripts, especialmente aqueles otimizados pelo Taproot.
Este design engenhoso permite uma integração perfeita com a mainnet do Bitcoin sem introduzir novos problemas de compatibilidade ou tornar o Bitcoin menos descentralizado.
A solução inovadora do BitVM tem o potencial de introduzir contratos inteligentes e aplicações descentralizadas no ecossistema do Bitcoin. Por exemplo, pode ser usado para construir pontes entre diferentes blockchains com mínimo de confiança, conectando diferentes ativos e melhorando a interoperabilidade do Bitcoin.
Além disso, o BitVM também pode ajudar a construir camadas de expansão zkRollup mais eficientes para tornar o Bitcoin mais escalonável. Em poucas palavras, o BitVM mostra as vastas possibilidades de conduzir o ecossistema Bitcoin para uma nova era apenas através da utilização inovadora dos recursos existentes.
Referências
https://github.com/supertestnet/tapleaf-circuits
https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754