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:
- Circuitos PIL/Stark para correção de código OPCode/Estado,
- Recursão e agregação fortes usando uma aritmetização plonkish com portões/pesquisas personalizados,
- 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 mapping
s 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