Recently, @0xPolygon announced their Polygon #zkEVM , an EVM-equivalent ZK L2.
Accordingly, we spotted an opportunity to share some interesting data points on their zkEVM.
Polygon’s zkEVM has a few modules:
- Proof of Efficiency Consensus Mechanism
- zkNode Software
- zkProver
- LX-to-LY Bridge
- Sequencers
- Aggregators
zkEVM Prover is the most complex part of the code. zkEVM is mostly written in Go (Prover in C++) with some utilities in Javascript / Typescript.
The Prover uses both SNARK and STARK proofs in the following way: SNARK proof is used to prove correctness of STARK proofs (recursive STARKS!!) So we get: STARKs are used for speed, while SNARK is used for proof size!
Goldilocks are used as the base field. 256 bit operations are highly efficient.
Keccak circuits are computed in parallel.
A Poseidon-hash Merkle tree is used to store the entire system
According to Commit History, Polygon’s project has been in the works since at least November ’21. The merge with Plonky2 tech is more recent ~ circa mid May ’22.
500k gas proof takes 5 min to generate on a beefy machine. Since many transactions go into one proof, the amortized cost for tx is very cheap. Throughput, e.g. the number of transactions per second, is the main bottleneck to improve.
Did you find this interesting? Ingonyama develops hardware accelerators for Zero Knowledge functionality — follow for more ZK related content, or reach out and say hello!
Twitter: https://twitter.com/Ingo_zk
Github: https://github.com/ingonyama-zk
YouTube: https://www.youtube.com/@ingo_zk
Join us: https://www.ingonyama.com/careers