# Bancada: quanto custa provar sem mostrar

Mede quatro provas de conhecimento zero práticas, em dois sistemas de prova (Groth16 e PLONK),
com a biblioteca [gnark](https://github.com/Consensys/gnark) sobre a curva BN254.

| afirmação | o que fica escondido |
|---|---|
| idade: tenho 18 anos ou mais | a data de nascimento (presa a um compromisso público MiMC(nascimento, sal)) |
| saldo: meu saldo passa de X | o saldo (mesmo compromisso, saldo em 64 bits) |
| lista: estou numa lista de 2^20 (1.048.576) itens | qual item (caminho de Merkle de profundidade 20, MiMC) |
| sha256: conheço o texto de 64 bytes por trás deste resumo | o texto |

Para cada uma: número de restrições, tempo de preparação (setup), de gerar a prova (melhor de 5
no Groth16, de 3 no PLONK), de conferir (melhor de 20), tamanho da prova e, no Groth16, da chave de prova.

`TestFalsa` tenta quatro trapaças e exige que todas falhem: pessoa de 16 anos, documento de outra
pessoa (compromisso não bate), prova válida reaproveitada com outro ano público, saldo 9.000 contra X = 10.000.

## Rodar

```sh
go run .                       # imprime a tabela
go test -run TestFalsa -count=1 .
```

⚠️ O PLONK usa `unsafekzg`, uma preparação **de teste**, não uma cerimônia real.

## Resultados de 30/09/2026

Apple M2, 8 GB, gnark v0.16.3, gnark-crypto v0.21.0 (usa todos os núcleos).

| afirmação | sistema | restrições | setup | prova | confere | tamanho | chave de prova |
|---|---|---|---|---|---|---|---|
| idade | Groth16 | 2.184 | 184 ms | 26 ms | 1,42 ms | 164 B | 370.777 B |
| idade | PLONK | 4.085 | 65 ms | 91 ms | 2,11 ms | 520 B | |
| saldo | Groth16 | 2.249 | 236 ms | 25 ms | 1,38 ms | 164 B | 381.145 B |
| saldo | PLONK | 4.212 | 54 ms | 169 ms | 2,12 ms | 520 B | |
| lista | Groth16 | 13.261 | 1,884 s | 220 ms | 1,94 ms | 164 B | 2.535.455 B |
| lista | PLONK | 17.781 | 414 ms | 859 ms | 2,82 ms | 520 B | |
| sha256 | Groth16 | 200.599 | 45,7 s | 1,621 s | 3,25 ms | 196 B | 51.290.169 B |
| sha256 | PLONK | 601.601 | 7,3 s | 40,6 s | 2,49 ms | 584 B | |

As quatro trapaças foram recusadas. Página: https://stickybit.com.br/0k-proof/bancada/
