Polygon zkEVM is a Type-2 ZK rollup that executes Ethereum bytecode and settles validity proofs to L1. Mainnet chain ID is 1101 (Cardona testnet 2442). Polygon Labs has announced the zkEVM mainnet will be sunset during 2026 in favor of Agglayer-connected CDK chains — treat it as legacy and prefer a CDK chain (cdk-erigon / cdk-opgeth) for new builds.
- 01EVM-equivalent execution with ZK validity
- 02existing zkEVM dapps (legacy support / migration)
- 03low-fee Ethereum-anchored L2 UX
- 04Solidity contracts deployed unmodified
- pnpm add viem wagmi
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_ZKEVM_RPC_URL | Client | Polygon zkEVM RPC URL (mainnet: https://zkevm-rpc.com). |
| NEXT_PUBLIC_ZKEVM_CHAIN_ID | Client | Chain ID — 1101 for mainnet, 2442 for Cardona (Sepolia-anchored testnet). |
Use viem's built-in `polygonZkEvm` chain (`import { polygonZkEvm, polygonZkEvmCardona } from 'viem/chains'`). Mainnet RPC is `https://zkevm-rpc.com`, chain ID 1101, gas token ETH. Cardona testnet (chain ID 2442) is the Sepolia-anchored testnet — Goerli-anchored testnets are deprecated. Bridge ETH and ERC-20s via the Polygon Bridge UI or call `bridgeAsset` on `PolygonZkEVMBridge` (L1 `0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe`). Because it is Type-2 ZK-equivalent, Solidity contracts compile and deploy unchanged with Foundry/Hardhat — but treat the chain as legacy and plan a migration path to a CDK / Agglayer chain.
- ⚑Polygon Labs has communicated that zkEVM mainnet (chain 1101) will be sunset in 2026 — do not start net-new production deployments here; target a CDK chain or another Agglayer member.
- ⚑Withdrawals to Ethereum L1 require waiting for proof verification (~30–60+ minutes typical, sometimes longer under load). Build UX around the long finality window.
- ⚑Type-2 means EVM-equivalent at the bytecode level but not 100% — a handful of opcodes (`SELFDESTRUCT`, certain precompiles, `BLOCKHASH` semantics) and gas accounting differ. Re-test gas-sensitive contracts; do not assume mainnet receipts.
- ⚑Sequencer is operated by Polygon Labs and is centralized; force-inclusion via the L1 `PolygonRollupManager` exists but is rarely exercised — your liveness story depends on a single operator until decentralization lands.
- ⚑Multiple testnets have come and gone (Goerli-anchored zkEVM testnet → Cardona on Sepolia). Pin RPC and chain ID in env vars rather than hardcoding, and watch for further deprecations as the sunset progresses.
- ⚑Bridged USDC on zkEVM is a `BridgedUSDC` (lockbox) — not native CCTP. Cross-chain stablecoin flows that assume CCTP attestations will not work; route via the Polygon Bridge or a third-party bridge.