BitVM, o Potencial dos Contratos Inteligentes na Mainnet do Bitcoin
- BTC0%
Em 9 de outubro, Robin Linus, um desenvolvedor da ZeroSync, lançou o whitepaper do BitVM, que atraiu enorme 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. Ele exige assinaturas digitais válidas para gastar bitcoins através de um processo simples de validação condicional. Dito isso, 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 a simplicidade e segurança da linguagem. Tais limitações tornaram desafiador para o Script executar computações complexas, incluindo aquelas envolvendo contratos inteligentes.
Embora algumas soluções de Camada 2 projetadas para Bitcoin possam alcançar funções básicas de contratos inteligentes ao bloquear ativos, elas essencialmente dependem de endereços multi-assinatura e mapeamentos de ativos entre cadeias, o que requer um certo nível de confiança centralizada. Isso compromete o compromisso do Bitcoin com a descentralização. Antes da introdução do BitVM, a comunidade Bitcoin vinha explorando métodos que fossem descentralizados, minimizassem a confiança e fossem capazes de computações Turing-completas.
BitVM: Compute Qualquer Coisa no Bitcoin
No cerne de sua inovação, o BitVM utiliza o sistema Script existente do 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 circuitos 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 Contratos com Bloqueio de Tempo Hash (HTLC) e Taproot (um soft fork para otimizar o 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 do Bitcoin.
Finalmente, em caso de disputas entre as partes transacionantes, um elegante protocolo de desafio-resposta, semelhante às provas de fraude no Bitcoin, pode ser empregado para validação. Um provador faz uma afirmação de que uma determinada função avalia para algumas entradas específicas para algum resultado específico. Se essa afirmação for falsa, então 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
Compromisso de Valor de Bit
O Compromisso de Valor de Bit, um script Bitcoin, emprega declarações if-else para implementar um esquema de compromisso. Esta primitiva criptográfica garante que o remetente pode confirmar o conteúdo da mensagem antes de enviá-la, e o conteúdo não pode ser alterado uma vez que é divulgado publicamente. Este esquema de compromisso engloba dois valores de hash, hash0 e hash1. Se o valor retornado será 0 ou 1 é determinado comparando o valor de hash da entrada com estes dois valores de hash.
Figura 1: Uma implementação concreta para um compromisso de 1 bit
:quality(80)/2023-11-01/1321A251238D665AA862939993DE617A.png)
Fonte: https://bitvm.org/bitvm.pdf
Compromisso 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 representando as duas entradas e um terceiro compromisso de valor de bit representando a saída para implementar a porta NAND.
O BitVM expressa engenhosamente a porta NAND através de scripts Bitcoin. Isso permite que ele construa circuitos lógicos booleanos arbitrariamente complexos, efetivamente simulando um computador programável via Script.
Figura 2: Implementação de uma porta NAND usando compromissos de valor de bit
:quality(80)/2023-11-01/23A48B54E874C749C41F131C7D4730C6.png)
Fonte: https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754
Figura 3: Compromisso da porta lógica para uma operação NAND
:quality(80)/2023-11-01/E98F6725AA61147C861A13360ADD94C1.png)
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.
Compromisso do Circuito Binário
O BitVM pode expressar qualquer circuito compondo compromissos de porta. Cada etapa da execução é comprometida em uma Tapleaf. Todas são combinadas no mesmo endereço Taproot, de modo que o provador pode executar qualquer porta no circuito. A execução de uma porta requer que o provador abra o compromisso de porta correspondente e defina valores para seus bits de entrada e saída. Por exemplo, na Figura 4, A, B, C e D são compromissos de valor de bit predefinidos, 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 resultar em E, e E for usado como entrada para a próxima porta NAND, a saída final de todo o circuito será VERDADEIRO. Este design de circuitos booleanos conecta as portas NAND de compromissos de valor de bit e alcança operações lógicas complexas, oferecendo uma representação compacta para computação verificável na blockchain do Bitcoin.
Figura 4: Um circuito com oito portas NAND diferentes
:quality(80)/2023-11-01/2A444519852359C0EA95AC2D2F5C054A.png)
Fonte: https://bitvm.org/bitvm.pdf
Desafios e Respostas
No BitVM, comprometer-se com um circuito não é suficiente, e um mecanismo de desafio-resposta é necessário para provar a correção dos cálculos. Para alcançar isso, o provador e o verificador devem pré-assinar uma sequência de transações durante a configuração. As transações são vinculadas na ordem de "desafio - resposta - desafio - resposta", criando múltiplas rodadas de interações de desafio e resposta. Se uma das partes parar de se envolver, então, após um tempo limite, a outra parte ganha o desafio e pode tomar ambos os depósitos. Este mecanismo é necessário apenas em caso de fraude. Enquanto ambas as partes forem cooperativas, elas podem conjuntamente resolver qualquer contrato com uma assinatura 2-de-2.
Vamos ver como esse mecanismo funciona num caso hipotético. Paulo (provador) e Vicky (verificadora) pré-assinaram uma sequência de transações. Vicky pode então iniciar um desafio (TX 2) selecionando um desafio (hash7) de uma das folhas Tapscript dela. Isso desbloqueia para Paulo 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 pode desbloquear uma pré-imagem de hash que possui para forçar o provador a responder na cadeia. Cada rodada de consultas pode validar ou refutar uma porta específica. Através de busca binária (um algoritmo usado para localizar um elemento específico em um array ordenado), o verificador pode rapidamente identificar 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 imediatamente ganha o desafio e leva o depósito.
Figura 5: Uma sequência pré-assinada de transações para realizar múltiplas rodadas de desafio e resposta
:quality(80)/2023-11-01/8D9777E151B617754A912BDA1F5097CF.png)
Fonte: https://bitvm.org/bitvm.pdf
Este design meticuloso permite que o BitVM realize verificação na cadeia 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ção interativa Turing-completa na rede Bitcoin.
Aspectos-Chave do Design do BitVM
Computação Fora da Cadeia & Verificação Na Cadeia
O BitVM coloca o peso da computação complexa fora da blockchain, reservando a blockchain do Bitcoin apenas para o propósito de verificar resultados. Esta abordagem evita a execução de contratos complexos diretamente na blockchain, o que mitiga o inchaço da blockchain.
Portas Lógicas Expressas com Hashlocks e Scripts do Bitcoin
O BitVM aproveita os hashlocks e os opcodes de script suportados pelo Bitcoin para representar portas lógicas básicas, como as portas AND e NOT. A conexão destas portas lógicas permite construir circuitos de complexidade arbitrária, possibilitando computação Turing-completa.
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 interativos e respostas entre as partes da computação. Ultimamente, o resultado correto da computação é confirmado na cadeia. Se o provador trapaceou, o verificador poderia executar penalidades na blockchain do Bitcoin. Como tal, o BitVM e o Optimistic Rollup empregam mecanismos de interação semelhantes para verificação na cadeia, e a única diferença é que o BitVM utiliza diretamente scripts do Bitcoin para implementar um processo interativo de desafio-resposta.
Impacto Mínimo na Cadeia
O processo de computação do BitVM tem um impacto mínimo na blockchain do Bitcoin, deixando apenas um pequeno número de transações na cadeia quando surgem disputas. Isso preserva a eficiência e a escalabilidade do Bitcoin.
Sem Necessidade de Soft Forks
Como o BitVM utiliza apenas as capacidades existentes de script do Bitcoin, não requer quaisquer modificações no protocolo do Bitcoin através de soft forks. Isso torna mais fácil para o BitVM ser integrado na rede principal do Bitcoin.
Conclusão
A maior inovação do BitVM reside na sua capacidade de implementar verificação Turing-completa sem modificar o protocolo central do Bitcoin; ele alcança isso fazendo uso criativo de scripts, especialmente aqueles otimizados pelo Taproot. Este design engenhoso permite uma integração perfeita com a rede principal 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 Bitcoin. Por exemplo, pode ser utilizada para construir pontes entre cadeias com confiança mínima para conectar diferentes ativos blockchain, 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 escalável. Em suma, o BitVM demonstra as vastas possibilidades de impulsionar o ecossistema Bitcoin para uma nova era apenas através da utilização inovadora de recursos existentes.
Referências:
https://github.com/supertestnet/tapleaf-circuits
https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754