Para construir o projeto que mencionei neste tópico, comecei a aprender sobre ZK-Snarks. Uma das coisas que pareço entender é que o esquema de assinatura da ECDSA e o hash sha-3 (anteriormente conhecido como Keccak) não jogam bem com o ZK-SNARKs porque resultam em circuitos maciços. IIUC, EDDSA com certas curvas e o hash de Poseidon se saem muito melhor nesse sentido, com circuitos que podem ser centenas de vezes menores.

As assinaturas de hash e verificação são casos de uso muito comuns em smartcractents de solidez, mas a solidez usa o SHA-3 para hashes e Afaik Todas as carteiras Ethereum são baseadas no ECDSA. Isso significa que todos os smartcractents de solidez são inerentemente difíceis de provar no ZK-SNARKS? Se sim, como o Polygon Zkevm resolveu esse problema? Qual esquema de ZK-Snark ele usa (Groth16 / Plonk / Plonkish / Halo2 / outros)?

Ei @71104,

Não, os contratos de solidez não são “inerentemente” impossíveis de sarar – o que é caro são os primitivos do EVM que você escolheu: KecCak256 (OPCode 0x20) e Ecrecover (Secp256K1 Ecdsa).
Nos circuitos ZK, o ecdsa-on-secp256k1 e o keccak, geralmente, explodem contagens de restrições: um verificador de Circom ECDSA é de ~ 1,5 m de restrições (um implementação de ~ 200.000 existe), enquanto um eDDSA (Jubjub) + Poseidon verificador é de apenas alguns mil ou poucos mil (~ 4.2k-40k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k-10k), o Poseidon, um pouco de um pouco de milhares (~ 4.2K-10kk-10k-10k-10k).

O Polygon ZkeVM lida com isso por não mudar a solidez, mas construindo gadgets/circuitos personalizados para aqueles Ops de ZK-Unriendly, em lote e depois provar toda a execução do EVM com um pipeline de várias etapas:

  1. Circuitos PIL/Stark para correção de código OPCode/Estado,
  2. Recursão e agregação fortes usando uma aritmetização plonkish com portões/pesquisas personalizados,
  3. Enrole o Big Stark em um pequeno Snark (Fflonk) que é verificado no Ethereum através do emparelhamento pré -compilado.

O primeiro deve ser extremamente difundido, considerando que todos mappings usa isso. Você não pode fazer muito sem o KecCak256, você não pode nem implementar um ERC-20.



1 gosto

Sim, você está certo. Mas, a maioria das funções de hash não é muito amigável para ZK e pode levar algum tempo para chegar ao estágio de hardware para que essas funções de hash se tornem uma tarefa fácil.

Sim, o Ethereum atual é muito subótimo para provar, e é exatamente por isso que temos iniciativas como https://www.poseidon-initiative.info/, que, se bem-sucedido



3 curtidas

Interessante, eu não sabia disso!

Por curiosidade, por que você escolheu Poseidon em vez de por exemplo, Pedersen? Você está pensando em investir seus esforços no ecossistema Halo2 e não em Circom? Se sim, por quê?

(Fiz a mesma escolha para o meu próprio projeto, mas estou curioso para ouvir sua lógica.)

Pedersen não é resistente à quantum.

Em geral, não estamos interessados em nada que não seja resistente à quântica para grandes atualizações do Ethereum neste momento.



6 curtidas

Fontesethresear

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *