[ZIP-11] V28 Precompile Upgrade

The following reflects the views of L2BEAT’s governance team, composed of @kaereste, @Sinkas, and @Manugotsuka, and it’s based on their combined research, fact-checking, and ideation.

We are voting FOR the proposal.

As with ZIP-10, we asked L2BEAT’s research team to help us review the proposal to ensure that we’re casting a fully informed vote.

Moving precompiles from the virtual machine layer to native ZK circuits increases performance without introducing any changes for developers or users. After the proposal successfully executes, the crypto operations will be directly computed as ZK circuits, and the overhead of implementing them in the VM and translating the VM opcodes to circuits will be gone.

OpenZeppelin’s crypto precompile audit revealed some high-severity issues, which shows that this upgrade is not trivial. However, all those issues have since been resolved.

Verifying the proposal’s calldata was somewhat complicated because it was only made available on Etherscan today, after our team reached out to ZKsync’s team and requested it. The tooling to use for the verification was also unclear. In the end, a calldata fetching tool by Cyfrin and our internal tooling were the only working ones, as the verification tool from earlier ZKsync proposals seems not to have been updated.

Using the above tools, our research team confirmed that ZIP-11 calldata targets many zk stack shared contracts with minimal changes (e.g., new solidity compiler version), activates the precompiles on L2, and upgrades the fflonk and plonk verifiers and their keys on L1.

2 Likes