Stickybit.← 0k-proofEnglishMedição · 0k-proof · 30 set 2026
Medição · bancada própria

Quanto custa provar.

Montamos quatro provas que servem para coisas reais (ter mais de 18, ter saldo acima de um valor, estar numa lista de um milhão, conhecer o texto por trás de uma impressão digital) e medimos cada uma em dois sistemas de prova, numa máquina comum. Provar custa de 25 ms a 40 s. Conferir, de 1,4 a 3,3 ms, sempre. E nenhuma das quatro trapaças que tentamos passou.

Espécime · escolha o que provar e com qual sistema
A afirmação
O sistema de prova
–restrições (passos da conta)
–para gerar a prova
–para conferir
–tamanho da prova
–chave de prova
–horas de máquina para provar
–horas de máquina para conferir
–de provas trafegando
–provar custa quantas conferências

Tempos e tamanhos medidos no Apple M2 (8 GB) com a biblioteca gnark. As contas por dia são nossas: multiplicam o tempo medido pela quantidade, supondo uma máquina igual dedicada a isso, sem fila nem rede. No mundo real, quem prova costuma ser o celular de cada pessoa, e quem confere, o servidor.

Antes dos números

Quatro palavras desta página.

Restrição

Cada passo elementar da conta que a prova cobre. "Nasceu há 18 anos ou mais" vira uns dois mil passos; conferir um SHA-256 vira duzentos mil. Mais passos, prova mais cara.

Preparação

Um trabalho feito uma vez antes de qualquer prova, que gera as chaves de provar e de conferir. Não entra no custo de cada prova.

Chave de prova

O arquivo que quem prova precisa ter à mão. Pode ser grande: de 371 kB a 51 MB aqui. É pública; não guarda segredo de ninguém.

Sistema de prova

A receita matemática que transforma a conta numa prova. Medimos dois dos mais usados, Groth16 e PLONK, que trocam tamanho por conveniência.

Como medimos

Quatro afirmações, dois sistemas, uma máquina.

Tudo rodou num Apple M2 com 8 GB de memória, usando a gnark (versão 0.16.3), uma biblioteca aberta em Go, sobre a curva BN254, que é a mais usada nesse tipo de prova. A biblioteca usa todos os núcleos da máquina ao provar e conferir.

Para cada afirmação, contamos quantos passos a conta tem, medimos a preparação uma vez e depois o tempo de gerar a prova (melhor de cinco tentativas no Groth16, de três no PLONK) e de conferir (melhor de vinte). "Melhor de" quer dizer o tempo mais rápido: é o que a máquina consegue quando nada mais atrapalha.

As afirmações não são de brinquedo. A de idade e a de saldo estão presas a um compromisso, um lacre publicado antes pelo emissor, então não dá para provar a idade de um documento inventado. A da lista usa uma árvore com 1.048.576 folhas. A do SHA-256 é a impressão digital usada em quase tudo na internet.

AfirmaçãoSistemaRestriçõesPreparaçãoGerar a provaConferirTamanho da provaChave de prova
Mais de 18Groth162.184184 ms26 ms1,42 ms164 B371 kB
PLONK4.08565 ms91 ms2,11 ms520 B–
Saldo acima de XGroth162.249236 ms25 ms1,38 ms164 B381 kB
PLONK4.21254 ms169 ms2,12 ms520 B–
Na lista de 1 milhãoGroth1613.2611,9 s220 ms1,94 ms164 B2,5 MB
PLONK17.781414 ms859 ms2,82 ms520 B–
Texto por trás do SHA-256Groth16200.59945,7 s1,6 s3,25 ms196 B51,3 MB
PLONK601.6017,3 s40,6 s2,49 ms584 B–

No PLONK, a chave de prova não foi medida, e a preparação usada foi uma versão de teste, gerada na hora. Em produção, ela viria de uma cerimônia pública feita uma vez para todas as afirmações. Isso não muda o tempo de provar nem de conferir.

A assimetria

Provar é caro. Conferir é barato.

O tempo de gerar a prova cresce com o tamanho da conta: 26 ms para a idade, 220 ms para a lista, 1,6 s para o SHA-256 no Groth16, e até 40 s no PLONK. Já conferir fica entre 1,4 e 3,3 milissegundos em todos os casos, não importa quão grande seja a conta por trás.

É essa diferença que torna a ideia útil. Quem prova paga uma vez, no próprio aparelho. Quem confere, um site com milhões de visitas ou um auditor com milhares de relatórios, paga quase nada por prova. Na idade, provar custa o mesmo que umas 18 conferências; no SHA-256 com PLONK, umas 16 mil.

Por que o SHA-256 é tão mais caro? Ele foi desenhado para computadores comuns, feito de operações com bits. Dentro de uma prova, cada bit vira uma conta. A impressão digital que usamos na idade, no saldo e na lista (MiMC) foi desenhada justamente para caber em provas: faz o mesmo papel com centenas de vezes menos passos.

GERAR A PROVA · ESCALA LOGARÍTMICA10 ms100 ms1 s10 s100 sMais de 1826 ms91 msSaldo acima de X25 ms169 msNa lista de 1 milhão220 ms859 msTexto por trás do SHA-2561,6 s40,6 sGroth16PLONK
Tempo para gerar a prova, no Apple M2. Cada traço da escala multiplica por dez.
CONFERIR A PROVA · ESCALA LOGARÍTMICA1 ms2 ms5 ms10 msMais de 181,42 ms2,11 msSaldo acima de X1,38 ms2,12 msNa lista de 1 milhão1,94 ms2,82 msTexto por trás do SHA-2563,25 ms2,49 msGroth16PLONK
Tempo para conferir. A escala vai só de 1 a 10 ms: as oito barras cabem no mesmo punhado de milissegundos.
TAMANHO · ESCALA LOGARÍTMICA100 B10 kB1 MB100 MBMais de 18164 B520 B371 kBSaldo acima de X164 B520 B381 kBNa lista de 1 milhão164 B520 B2,5 MBTexto por trás do SHA-256196 B584 B51,3 MBprova Groth16prova PLONKchave de prova (Groth16)
A prova cabe folgada num QR code. O que pesa é a chave que quem prova precisa guardar: 51 MB para o SHA-256 no Groth16.
Os dois sistemas

Menor e mais rápido, ou mais fácil de preparar.

Groth16 · 2016

A prova mais compacta

Provas de 164 bytes para quase qualquer afirmação, e as mais rápidas de gerar nesta bancada. O preço está na preparação: cada afirmação precisa da sua, e ela usa um número secreto que tem de ser destruído depois.

Se alguém guardar esse número, consegue fabricar provas falsas que passam na conferência. Por isso a preparação real é feita numa cerimônia, com muitos participantes: basta um deles destruir a sua parte para o conjunto ficar seguro.

PLONK · 2019

Uma preparação para todas

Uma única preparação, feita uma vez, serve para qualquer afirmação até um certo tamanho. Mudou a regra, não precisa de cerimônia nova.

O preço: provas de 520 bytes, três vezes maiores, e aqui de 3 a 25 vezes mais lentas para gerar. Conferir custa o mesmo. Nesta bancada, a preparação foi uma versão de teste, que não serve para uso real.

Há ainda sistemas que dispensam qualquer preparação secreta, conhecidos como STARKs, em geral com provas bem maiores. Não os medimos aqui.

As trapaças

Tentamos enganar. Nenhuma prova falsa passou.

Um teste que só mostra o caso certo não diz muito. Então pedimos provas que deveriam ser impossíveis, e conferimos que a biblioteca se recusou a gerá-las ou a aceitá-las.

TentativaComoResultado
Menor de idadeNascida em 2010, provando mais de 18 em 2026recusada
Documento de outra pessoaData de nascimento que não bate com o lacre publicado pelo emissorrecusada
Prova reaproveitadaProva válida para 2026, apresentada como se fosse do ano 2000recusada
Saldo insuficienteSaldo de 9.000 provando que passa de 10.000recusada
O que ainda não sabemos

O que esta bancada não mediu.

O celular

Na vida real, quem prova a idade é o celular, com menos memória e sem ventoinha. Um M2 com oito núcleos é otimista. A chave de 51 MB do SHA-256 pesaria num aparelho simples.

O navegador

Provas geradas dentro de uma página web costumam ser bem mais lentas que o mesmo código rodando direto na máquina. Não medimos.

Outras bibliotecas

A prova de idade que o Google abriu em 2025 (Longfellow) usa outro desenho, feito para credenciais de celular. Os números dela não são estes.

Uma rodada, uma máquina

"Melhor de cinco" mostra o que a máquina consegue sem interferência, não a média de um servidor ocupado. E a memória usada ao provar ficou de fora.

Reproduzir

Rode você mesmo.

O código da bancada tem pouco mais de 200 linhas em Go e está publicado aqui: main.go, falsa_test.go, go.mod e go.sum (com um README). Baixe os quatro numa pasta e, com Go instalado, rode dois comandos:

# imprime a tabela desta página
go run .
# tenta as quatro trapaças; passa se todas forem recusadas
go test -run TestFalsa -count=1 .
A seção

Para ir mais fundo.

Conversar

Isto se aplica ao seu caso?

Conte em duas linhas o que você precisa decidir ou medir. A primeira conversa serve para ver se a medição resolve o seu caso, e, se não resolve, dizemos.

Conversar pelo WhatsApp algorithms@stickybit.com.br Stickybit · Porto Alegre, desde 2004

← 0k-proof · stickybit.com.br

Fontes