Hermez & Zero Provers

Hello! I’m trying to figure out how the proving system works. I see there are two provers in the 0xPolygonHermez and 0xPolygonZero orgs: zkevm-prover and eth-tx-proof. According to the docs, their internal structure is pretty similar (1, 2): both are divided in the same arithmetic, keccak, etc modules.

There is also a blogpost which states that the Polygon zkEVM Prover now supports a Type 1 mode, linking to the 0xPolygonZero repo.

So the question is, what is the difference? What is the place of each of them in the ecosystem?

The Type 1 zkEVM prover is an available config for chains building a zkEVM with Polygon CDK. The Hermez prover, used in Polygon zkEVM, is a Type 2 ZK EVM. For most projects building with CDK, the Type 2 is optimal because it makes performance tradeoffs for greater speed and lower cost.

The Type 1, though, allows any EVM chain to become a ZK L2 to Ethereum.

The Type 2 can’t be used in that way because of changes it makes to Ethereum’s storage structure, among other things, to generate the speed and cost improvements