Prova de fraude e a implementação do ZK Fraud Proof
A prova de fraude é uma solução técnica amplamente utilizada no campo da blockchain, originando-se inicialmente na comunidade Ethereum, sendo adotada por projetos Layer2 como Arbitrum e Optimism. Após o surgimento do ecossistema Bitcoin em 2023, Robin Linus propôs a solução BitVM, que tem a prova de fraude como núcleo, oferecendo um novo modelo de segurança para camadas secundárias ou pontes com base na tecnologia existente do Bitcoin.
O BitVM passou por várias evoluções de versão, desde o BitVM0, que era baseado em circuitos lógicos, até o BitVM2, que tem como núcleo a Prova de Fraude ZK e circuitos de verificação Groth16, com o caminho tecnológico associado a se tornar cada vez mais maduro. Vários projetos, como Bitlayer, Citrea, BOB, entre outros, implementaram diferentes soluções com base na tecnologia BitVM.
Este artigo tomará como exemplo o plano de prova de fraude da Optimism, analisando sua abordagem baseada na máquina virtual MIPS e na prova de fraude interativa, bem como a principal ideia da prova de fraude ZK.
OutputRoot e StateRoot
Optimism é um conhecido projeto de Optimistic Rollup, cuja infraestrutura é composta por sequenciadores e contratos inteligentes na cadeia Ethereum. Após processar as transações, o sequenciador envia os dados para o Ethereum. Executar o cliente do nó Optimism permite baixar esses dados e executá-los localmente, calculando o hash do conjunto de estados atual.
Se o sequenciador carregar um hash de conjunto de estado incorreto, os resultados do cálculo local serão diferentes, podendo neste caso ser levantada uma dúvida através do sistema de prova de fraude.
As blockchains do EVM, normalmente utilizam a estrutura de dados Merkle Tree para registar o conjunto de estados, chamado de World State Trie. Após a execução da transação, o World State Trie muda e o seu hash final também é atualizado. O Ethereum chama a este hash de StateRoot, utilizado para representar a mudança do conjunto de estados.
O sistema de contas da Optimism é semelhante ao do Ethereum, também utiliza o campo StateRoot. O sequenciador faz upload regularmente do OutputRoot para o Ethereum, e o OutputRoot é calculado a partir do StateRoot e de outros dois campos.
Máquina Virtual MIPS e Árvore Merkle de Memória
Para validar a correção do OutputRoot na blockchain, a maneira mais simples é implementar um cliente de nó OP na Ethereum, mas existem dois problemas:
O contrato inteligente não consegue obter automaticamente os parâmetros de entrada necessários para a prova de fraude.
O limite de Gas do Ethereum é limitado e não suporta tarefas de cálculo complexas
A primeira questão pode ser resolvida através do contrato PreimageOracle. Para a segunda questão, a equipe OP escreveu uma máquina virtual MIPS em Solidity, implementando parte das funcionalidades dos nós OP.
A equipe de desenvolvimento da OP escreveu um programa simplificado em Golang, com funcionalidades basicamente consistentes com a execução de transações do nó OP, geração de blocos e módulo OutputRoot. No entanto, devido ao alto custo computacional, não é possível executar todas as transações na cadeia.
Para isso, a Optimism projetou um sistema interativo de prova de fraude, detalhando o processo de processamento de transações em uma sequência de operações MIPS. Após a execução de cada operação, o hash do estado da máquina virtual muda, e esses registros são resumidos em uma árvore Merkle.
Na prova de fraude interativa, é necessário determinar qual opcode MIPS causou o erro de hash do estado da máquina virtual, e então reproduzir o estado na cadeia e executar esse opcode, observando se o resultado é consistente. Isso requer o envio de algumas informações do estado da máquina virtual MIPS para a cadeia.
Os contratos relacionados à prova de fraude na blockchain executam o código de operação MIPS através da função Step:
Os parâmetros _stateData e _proof contêm os dados de dependência da execução de um único código de operação MIPS, como o estado do registrador, o hash do estado da memória, etc.
O OP utiliza a arquitetura MIPS de 32 bits, com a memória organizada em uma árvore Merkle binária de 28 camadas, tendo na base 2^27 folhas que registram os dados de cada endereço de memória. O hash de todos os dados das folhas reunidos é memRoot.
Prova de fraude interativa
Para localizar os códigos de operação MIPS contestados, a equipe OP desenvolveu o protocolo Fault Dispute Game(FDG). O FDG inclui dois papéis: desafiador e defensor, e ambas as partes devem construir uma GameTree localmente.
O GameTree é composto por duas camadas de árvore: a primeira camada de folhas é o OutputRoot de diferentes blocos, e a segunda camada de folhas é o hash de estado da máquina virtual MIPS. As partes em disputa interagem várias vezes na cadeia, finalmente localizando o opcode MIPS único que precisa ser executado na cadeia.
Resumindo, a prova de fraude interativa contém dois mecanismos centrais:
O código de operação MIPS e as informações de estado da VM que precisam ser executadas em cadeia para o posicionamento FDG.
Execute o código de operação na máquina virtual MIPS na cadeia Ethereum para obter o resultado final.
Prova de fraude ZK
A interação tradicional da prova de fraude é complexa e apresenta os seguintes problemas:
A interação em várias rodadas gera altos custos de gas.
O processo de interação é longo, durante o qual o Rollup não consegue executar transações corretamente.
A implementação de VM específica na cadeia é de alta dificuldade de desenvolvimento
Para resolver esses problemas, a Optimism propôs o conceito de Prova de Fraude ZK. O núcleo é desafiar as transações que precisam ser reproduzidas, o sequenciador fornece a prova ZK, que é verificada pelo contrato Ethereum.
Comparado à prova de fraude interativa, a Prova de Fraude ZK transforma múltiplas interações em uma única geração e verificação de prova ZK, economizando tempo e custos. Em comparação com ZK Rollup, o OP Rollup baseado em Prova de Fraude ZK gera provas apenas quando desafiado, reduzindo os custos computacionais.
A abordagem de prova de fraude ZK também foi adotada pelo BitVM2. Projetos que utilizam o BitVM2, como Bitlayer, Goat Network, etc., implementam programas de verificação de prova ZK através de scripts de Bitcoin, reduzindo significativamente o tamanho do programa de cadeia.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
Detalhes da prova de fraude: da solução interativa à evolução técnica da prova de fraude ZK
Prova de fraude e a implementação do ZK Fraud Proof
A prova de fraude é uma solução técnica amplamente utilizada no campo da blockchain, originando-se inicialmente na comunidade Ethereum, sendo adotada por projetos Layer2 como Arbitrum e Optimism. Após o surgimento do ecossistema Bitcoin em 2023, Robin Linus propôs a solução BitVM, que tem a prova de fraude como núcleo, oferecendo um novo modelo de segurança para camadas secundárias ou pontes com base na tecnologia existente do Bitcoin.
O BitVM passou por várias evoluções de versão, desde o BitVM0, que era baseado em circuitos lógicos, até o BitVM2, que tem como núcleo a Prova de Fraude ZK e circuitos de verificação Groth16, com o caminho tecnológico associado a se tornar cada vez mais maduro. Vários projetos, como Bitlayer, Citrea, BOB, entre outros, implementaram diferentes soluções com base na tecnologia BitVM.
Este artigo tomará como exemplo o plano de prova de fraude da Optimism, analisando sua abordagem baseada na máquina virtual MIPS e na prova de fraude interativa, bem como a principal ideia da prova de fraude ZK.
OutputRoot e StateRoot
Optimism é um conhecido projeto de Optimistic Rollup, cuja infraestrutura é composta por sequenciadores e contratos inteligentes na cadeia Ethereum. Após processar as transações, o sequenciador envia os dados para o Ethereum. Executar o cliente do nó Optimism permite baixar esses dados e executá-los localmente, calculando o hash do conjunto de estados atual.
Se o sequenciador carregar um hash de conjunto de estado incorreto, os resultados do cálculo local serão diferentes, podendo neste caso ser levantada uma dúvida através do sistema de prova de fraude.
As blockchains do EVM, normalmente utilizam a estrutura de dados Merkle Tree para registar o conjunto de estados, chamado de World State Trie. Após a execução da transação, o World State Trie muda e o seu hash final também é atualizado. O Ethereum chama a este hash de StateRoot, utilizado para representar a mudança do conjunto de estados.
O sistema de contas da Optimism é semelhante ao do Ethereum, também utiliza o campo StateRoot. O sequenciador faz upload regularmente do OutputRoot para o Ethereum, e o OutputRoot é calculado a partir do StateRoot e de outros dois campos.
Máquina Virtual MIPS e Árvore Merkle de Memória
Para validar a correção do OutputRoot na blockchain, a maneira mais simples é implementar um cliente de nó OP na Ethereum, mas existem dois problemas:
A primeira questão pode ser resolvida através do contrato PreimageOracle. Para a segunda questão, a equipe OP escreveu uma máquina virtual MIPS em Solidity, implementando parte das funcionalidades dos nós OP.
A equipe de desenvolvimento da OP escreveu um programa simplificado em Golang, com funcionalidades basicamente consistentes com a execução de transações do nó OP, geração de blocos e módulo OutputRoot. No entanto, devido ao alto custo computacional, não é possível executar todas as transações na cadeia.
Para isso, a Optimism projetou um sistema interativo de prova de fraude, detalhando o processo de processamento de transações em uma sequência de operações MIPS. Após a execução de cada operação, o hash do estado da máquina virtual muda, e esses registros são resumidos em uma árvore Merkle.
Na prova de fraude interativa, é necessário determinar qual opcode MIPS causou o erro de hash do estado da máquina virtual, e então reproduzir o estado na cadeia e executar esse opcode, observando se o resultado é consistente. Isso requer o envio de algumas informações do estado da máquina virtual MIPS para a cadeia.
Os contratos relacionados à prova de fraude na blockchain executam o código de operação MIPS através da função Step:
solidity function step( bytes memory _stateData, bytes memory _proof ) retornos públicos (bytes32) { // ... }
Os parâmetros _stateData e _proof contêm os dados de dependência da execução de um único código de operação MIPS, como o estado do registrador, o hash do estado da memória, etc.
O OP utiliza a arquitetura MIPS de 32 bits, com a memória organizada em uma árvore Merkle binária de 28 camadas, tendo na base 2^27 folhas que registram os dados de cada endereço de memória. O hash de todos os dados das folhas reunidos é memRoot.
Prova de fraude interativa
Para localizar os códigos de operação MIPS contestados, a equipe OP desenvolveu o protocolo Fault Dispute Game(FDG). O FDG inclui dois papéis: desafiador e defensor, e ambas as partes devem construir uma GameTree localmente.
O GameTree é composto por duas camadas de árvore: a primeira camada de folhas é o OutputRoot de diferentes blocos, e a segunda camada de folhas é o hash de estado da máquina virtual MIPS. As partes em disputa interagem várias vezes na cadeia, finalmente localizando o opcode MIPS único que precisa ser executado na cadeia.
Resumindo, a prova de fraude interativa contém dois mecanismos centrais:
Prova de fraude ZK
A interação tradicional da prova de fraude é complexa e apresenta os seguintes problemas:
Para resolver esses problemas, a Optimism propôs o conceito de Prova de Fraude ZK. O núcleo é desafiar as transações que precisam ser reproduzidas, o sequenciador fornece a prova ZK, que é verificada pelo contrato Ethereum.
Comparado à prova de fraude interativa, a Prova de Fraude ZK transforma múltiplas interações em uma única geração e verificação de prova ZK, economizando tempo e custos. Em comparação com ZK Rollup, o OP Rollup baseado em Prova de Fraude ZK gera provas apenas quando desafiado, reduzindo os custos computacionais.
A abordagem de prova de fraude ZK também foi adotada pelo BitVM2. Projetos que utilizam o BitVM2, como Bitlayer, Goat Network, etc., implementam programas de verificação de prova ZK através de scripts de Bitcoin, reduzindo significativamente o tamanho do programa de cadeia.