---
title: "Provas de validade (ZK) vs. provas de fraude"
description: "Conheça as provas de conhecimento zero, as provas de fraude, suas semelhanças, diferenças e qual escolher"
---

# Provas de validade (ZK) vs. provas de fraude

O crescimento exponencial do Ethereum apresenta dificuldades no processamento e armazenamento de dados, especialmente quando restrito pelos limites de bloco necessários para preservar a descentralização e a segurança dos dados, verificando cada transação na blockchain.

Diferente das sidechains, que rodam em paralelo ao Ethereum mas não obtêm os benefícios de sua segurança, e das [monolithic blockchains](https://www.alchemy.com/overviews/modular-vs-monolithic-blockchains), que dependem de seus próprios mecanismos de consenso para garantir estados válidos, as blockchains de camada 2 usam provas como parte de sua arquitetura de blockchain.

## Que tipo de blockchains usam provas?

**Provas são mais comumente encontradas em blockchains de camada 2 que usam Rollups para alcançar escala e maior throughput, garantindo ao mesmo tempo que o estado da chain base está correto.** Um rollup é um tipo de solução de escalabilidade que agrupa transações em uma blockchain separada e usa provas para garantir a veracidade das transações.

Existem dois tipos principais de rollups:

1. [Optimistic Rollups](https://www.alchemy.com/overviews/optimistic-rollups) - assumem que todas as transações são válidas e usam **fraud proofs** para provar transações falsas dentro de 7 dias
1. [Zero Knowledge \(ZK\) Rollups](https://www.alchemy.com/blog/zero-knowledge-rollups) - provam instantaneamente se as transações são válidas ou não usando **validity proofs**

Validity proofs e fraud proofs verificam a legitimidade das transações antes de serem registradas no estado da chain base.

## O que é uma validity proof?

**Uma validity proof, também conhecida como zero knowledge \(ZK\) proof, é um método de verificação de transações que ocorre entre um prover, alguém que cria uma prova para determinada informação, e um verifier, que verifica a prova sem que nenhuma informação seja compartilhada entre os dois**.

A informação compartilhada entre um prover e um verifier é chamada de **witness** e é tipicamente a solução de uma equação matemática complexa. Em essência, o prover precisa demonstrar que conhece o witness com precisão, e o verifier precisa ser capaz de determinar de forma confiável se o prover tem conhecimento do witness.

### Como funciona uma validity proof?

**Validity proofs são projetadas para serem difíceis de quebrar e dependem de uma técnica criptográfica conhecida como polynomial commitments**. Em polynomial commitments, informações de cada etapa de um cálculo de verificação são codificadas em polinômios, e uma expressão polinomial fatorada pode substituir um grande número de equações entre números.

Ao verificar as equações polinomiais, você verifica implicitamente os cálculos numéricos, mas o processo de fazer o hash desses polinômios é complicado. Os três principais esquemas de hashing polinomial usados para polynomial commitments são:

1. KZG \(Kate\) Polynomial Commitments
1. Bulletproofs
1. FRIs

FRI significa "**F**ast **R**eed-Solomon **I**nteractive Oracle Proofs of Proximity."

### **Que blockchains usam ZK proofs?**

**Alguns exemplos de blockchains que usam Zero Knowledge proofs e rollups são zkSync, StarkNet e Zcash.**

Todos os ZK rollups têm um foco concentrado em segurança e verificação de transações, o que permite que sejam usados de forma confiável em diversos casos de uso. zkSync e Zcash têm mais foco em transações, enquanto StarkNet diversificou para dar suporte a uma variedade de dapps e iniciativas DeFi, incluindo **Immutable X**, um framework para NFTs seguros e desenvolvimento web3 voltado para a comunidade de games.

## O que é uma fraud proof?

Uma fraud proof, também conhecida como **fault proof**, é uma prova submetida por um verifier que contesta o estado de uma transação. Dependendo da implementação, a fraud proof percorre um segmento das transações e tenta validá-las.

Aqui está uma explicação simples:

- Se a fraud proof identificar um erro, as transações inseridas no batch são removidas e o batch é revertido para um estado anterior, verificavelmente correto.
- Se nenhuma fraud proof for submetida durante o período de disputa, a mudança de estado é assumida como correta de forma otimista.

### Como funciona uma fraud proof?

Fraud proofs funcionam comparando Merkle roots e verificando os state roots inicial e final por meio de uma única rodada de computação \(como Optimism\) ou computação em múltiplas rodadas \(como Arbitrum\).

A blockchain roda sobre uma estrutura de dados conhecida como **Merkle Tree**, que contém cada transação como uma folha da árvore, e os ramos subsequentes são representados por hashes cada vez mais complexos da árvore.

O nó raiz, também conhecido como **Merkle Root**, é um hash que condensa efetivamente os dados, de modo que os usuários não precisem baixar consistentemente a totalidade da main chain.

<ImageBlock
  src="https://media.alchemy.com/1704290692-fraud-proof-merkle-root.png"
  alt="Os dados em verde, assim como o lote (batch) representado acima, são suficientes para verificar um post-state root. (Fonte: Blog do Vitalik)"
  width={411}
  height={481}
  caption="Os dados em verde, assim como o lote (batch) representado acima, são suficientes para verificar um post-state root. (Fonte: Blog do Vitalik)"
/>

Se um verifier quiser contestar uma mudança de estado de uma transação, ele só precisa submeter o post-state root atual e partes específicas da Merkle tree que podem ser usadas para calcular o post-state root correto. Se os dois divergirem, as mudanças de estado da transação são revertidas e o hash é redefinido para um state root comprovadamente correto.

### **Que blockchains usam fraud proofs?**

**Fraud proofs e o modelo de optimistic rollup são substancialmente mais baratos e rápidos que transações na main chain, motivo pelo qual são preferidos por blockchains como Arbitrum, Optimism e Metis Andromeda**.

Optimism e Arbitrum usam suas próprias máquinas virtuais compatíveis com EVM, projetadas para o funcionamento de optimistic rollups, especialmente a capacidade de agrupar transações e aumentar o throughput, enquanto Metis foca mais na aplicabilidade de seu sistema L2 e oferece uma variedade de recursos que auxiliam na criação e desenvolvimento de [apps](https://www.alchemy.com/dapps/top/defi-dapps), [DAOs](https://www.alchemy.com/dapps/top/daos) e um ecossistema DeFi.

## Em que validity proofs e fraud proofs são semelhantes?

ZK proofs e fraud proofs são semelhantes no sentido de que ambas usam soluções de rollup para escalar e ambas têm múltiplas implementações para diferentes casos de uso.

### 1. Ambas são usadas em soluções de camada 2 baseadas em rollup para aumentar a escalabilidade

Os rollups foram projetados para remover a maior parte da carga da blockchain principal do Ethereum. Em vez de executar transações na mainnet, os rollups movem a computação para fora da chain, mantendo uma pequena quantidade de dados por transação no Ethereum. Ao comprimir transações, os rollups permitem maior escalabilidade em transações por segundo \(TPS\) e custos de gas médios mais baixos.

Os dois tipos principais de rollups são optimistic e ZK rollups.

A característica principal dos **optimistic rollups** é que eles inicialmente assumem que todas as transações são válidas e permitem que essas transações sejam adicionadas ao batch. Após a submissão, existe um período de disputa em que as transações podem ser contestadas por uma fraud proof.

**Zero knowledge rollups** são semelhantes aos optimistic rollups porque também agregam transações em batches para submissão, mas uma diferença principal entre eles é que os ZK rollups usam validity proofs para validar cada transação antes de ela ser confirmada no rollup, sem o compartilhamento de informações pessoais.

### 2. Validity proofs e fraud proofs têm múltiplas implementações

Validity proofs têm múltiplas implementações, incluindo, entre outras, SNARKs e STARKs, e fraud proofs têm múltiplas implementações, incluindo single rollups e multi-round rollups.

### SNARKs vs. STARKs

Duas implementações populares de ZK proofs são [SNARKs e STARKs](https://www.alchemy.com/overviews/snarks-vs-starks).

**Um SNARK é um:**

- Succinct
- Non-interactive
- ARgument of
- Knowledge

ZK SNARKs criam argumentos de conhecimento pequenos e rapidamente verificáveis \(ou seja, provas criptográficas computacionalmente sólidas\) que não precisam de informação adicional além da própria prova.

**Da mesma forma, um STARK é um:**

- Scalable
- TRansparent
- Argument of
- Knowledge

A principal diferença entre um SNARK e um STARK é a propriedade de escalabilidade e transparência dos STARKs. STARKs são escaláveis porque suas provas escalam linearmente, enquanto as provas SNARK escalam apenas quasilinearmente. Por isso, STARKs são preferidos para transações maiores.

Além disso, SNARKs são transparentes porque podem usar aleatoriedade publicamente verificável para configurar interações entre provers e verifiers, em vez de depender de uma configuração mais centralizada e confiável.

### Single vs. multi-round rollups

Os dois tipos principais de optimistic rollups são single rollups e multi-round rollups, usados por Optimism e Arbitrum, respectivamente. Quando um verifier submete uma fraud proof para contestar uma transação na Optimism, toda a prova é executada na EVM, um processo relativamente rápido e simples, limitado apenas pelo dispute time delay \(DTD\) de uma semana.

Por outro lado, o processo de verificação de fraud proof da Arbitrum depende de um processo interativo de disputa fora da chain, no qual o asserter e o challenger reduzem repetidamente seções da transação em múltiplas rodadas até encontrarem uma seção onde discordam.

## Em que validity proofs e fraud proofs diferem?

ZK proofs e fraud proofs têm múltiplas diferenças, incluindo a quantidade de computação necessária, o tempo que levam para validar uma transação, sua segurança e a dificuldade de implementação.

### 1. Validity proofs exigem mais computação que fraud proofs

ZK proofs são inerentemente desafiadoras matematicamente de validar, e uma computação intensa é geralmente necessária, dada a natureza técnica exigida por um processo de verificação verdadeiramente zero knowledge.

Fraud proofs são tipicamente mais baratas por batch, em torno de 40.000 de gas, enquanto provas ZK SNARK exigem 500.000 de gas. No entanto, ZK SNARKs são mais baratas on-chain porque optimistic rollups precisam publicar todos os dados de volta na blockchain principal para que uma fraud proof legitime ou refute um resultado.

### 2. Validity proofs são instantâneas, enquanto fraud proofs têm um dispute time delay

Uma diferença importante entre ZK proofs e fraud proofs é que, enquanto ZK proofs validam uma transação imediatamente, fraud proofs têm um Dispute Time Delay \(DTD\) intrínseco que retarda as transações. Somente se nenhuma fraud proof tiver sido submetida por verifiers em relação a um determinado batch, esse batch será de fato publicado no Ethereum.

### 3. Validity proofs são mais descentralizadas e seguras em termos de dados

Como ZK proofs exigem interação mínima \(por exemplo, apenas o compartilhamento de uma prova com um validador\), e esse processo pode ser feito de forma segura, elas são muito descentralizadas.

Além disso, como as provas são zero knowledge e perfeitamente precisas, validity proofs protegem a privacidade do usuário e minimizam o risco de ameaças graves, como ataques de 51% na chain L1.

Optimistic rollups, no entanto, exigem que um verifier submeta uma fraud proof, que pode ser interceptada ou sofrer um ataque DDoS para impedir que uma contestação de estado de transação chegue ao batch.

### 4. Validity proofs são mais difíceis de implementar

Enquanto optimistic rollups, e consequentemente fraud proofs, podem funcionar em qualquer EVM ou [Optimistic Virtual Machine](https://www.alchemy.com/overviews/optimistic-virtual-machine) \(OVM\), zero knowledge proofs e ZK rollups exigem máquinas virtuais especializadas chamadas zero knowledge Ethereum Virtual Machines \([zkEVMs](https://www.alchemy.com/overviews/zkevm)\). Essas máquinas virtuais conseguem executar smart contracts de forma compatível com computação ZK e validity proofs criptográficas.

Até muito recentemente, acreditava-se que zkEVMs fossem apenas teoricamente possíveis, e mesmo agora é desafiador adaptar EVMs para dar suporte a ZK proofs. No entanto, há novos desenvolvimentos no espaço ZK que estão permitindo melhorias de throughput e escalabilidade para ZK proofs.

Destaca-se o fato de que a Polygon está criando [sua própria tecnologia de rollup](https://www.alchemy.com/overviews/polygon-zk-rollups), que usa ZK SNARKs recursivos para executar transações fora da chain de forma mais eficiente antes de retornar à chain principal. Provas recursivas funcionam provando múltiplos blocos de transações de uma vez e, em seguida, também provando um bloco agregado.

Em essência, SNARKs estão provando outros SNARKs, resultando em uma única transação final, que é ainda mais eficiente do que múltiplas transações agrupadas. O Polygon Zero, da Polygon, usa **Plonky2** para criar essas provas recursivas, e esse é o esquema de prova mais rápido disponível atualmente.

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "", dataType: "object" },
      { key: "2", width: 200, title: "<p>Validity Proofs (STARKs or SNARKs)</p>", dataType: "object" },
      { key: "3", width: 200, title: "<p>Validity Proofs (STARKs or SNARKs)</p>", dataType: "object" },
      { key: "4", width: 200, title: "<p>Fraud Proofs</p>", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p><strong>On-Chain Data</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<p>zK-Rollup</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Volition</p>", tooltip: "", icon: "" },
        "4": { title: "<p>Optimistic Rollup</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p><strong>Off-Chain Data</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<p>Validium</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Volition</p>", tooltip: "", icon: "" },
        "4": { title: "<p>Plasma</p>", tooltip: "", icon: "" },
        id: 1,
      },
    ],
  }}
/>

Outra opção é um [Validum](https://ethereum.org/en/developers/docs/scaling/validium/), um tipo de ZK Rollup em que, em vez de armazenar parte dos dados on-chain, todos os dados são armazenados fora da chain. Um fator de risco nessa configuração é que os operadores da StarkEx podem impedir o acesso ou modificar dados off-chain, mas isso é mitigado pela criação do Data Availability Committee \(DAC\), que fornece um armazenamento de dados neutro e confiável.

## Que solução de escalabilidade de camada 2 devo usar?

Até recentemente, fraud proofs e optimistic rollups eram preferidos porque ZK proofs eram difíceis de implementar e exigiam muito mais computação, mas uma série de novos desenvolvimentos no espaço zero knowledge está tornando os ZK rollups mais acessíveis do que nunca.

Com o surgimento de mais zkEVMs, e a garantia de transações mais seguras, sem exposição de informações e não interativas, os ZK rollups estão se tornando uma solução de escalabilidade de camada 2 cada vez mais preferida.
