Polygon zkEVM: Dragon Fruit Is Live on Mainnet
Yesterday, the first major upgrade of Polygon zkEVM went live on Mainnet Beta. Dragon Fruit, aka ForkID5, includes support for the latest EVM opcode, making Polygon zkEVM the first Ethereum L2 known to support PUSH0.
For more on what’s included in Dragon Fruit and the governance process for upgrading the consensus smart contract, see the Dragon Fruit announcement here.
First Things First: For Devs
Importantly, the Dragon Fruit upgrade requires devs to use the latest version of the node, prover, and bridge service. Those GitHub repos can be found here:
L2 Block Rehashing Complete
Users may notice that block hashes have changed.
Prior to the upgrade, L2 blocks on Polygon zkEVM Mainnet Beta were rehashed from genesis. Note: This did not impact any past transactions or state roots.
Why was this necessary? An edge case related to an earlier version of the executor (v1.1.x) used an unordered map of transaction logs that the node would later sort into ordered logs. This caused the block hashes to be calculated differently. The rehashing fixed the order sorting by reprocessing all transactions and re-calculating the L2 block hashes. Currently, transactions are processed with a completely deterministic L2 block hash.
Audit and Changelog of Dragon Fruit Upgrade
Before going live on mainnet, the Dragon Fruit upgrade was available to devs on public testnet. This is so that devs can verify the upgrade and white hats can stress-test it. One low-risk bug in the upgrade was discovered and the researcher was rewarded as part of Polygon zkEVM’s ongoing bug bounty.
That bug and fix were audited by Spearbit. The report can be found here:
- zkEVM ROM: Spearbit audit report
The changelog for Dragon Fruit can be found here:
For more about Polygon zkEVM and how Polygon Labs is committed to scaling Ethereum, stay tuned to the Polygon Labs Blog. Together, we can build an equitable future for all through the mass adoption of Web3!