Mina completed its Mesa hard fork on September 3 following an eight-hour halt to transaction processing and block production. The layer-1 blockchain's upgrade required deployed zero-knowledge applications to obtain new verification keys before resuming certain operations.
The upgrade process unfolded in stages. Transaction processing stopped at 10:00 UTC, followed by five hours of block production without transactions and approximately three hours without blocks. Block production halted at 15:00 UTC. The Mesa package released at 16:30 UTC, with the first Mesa slot completing at 18:00 UTC. Archive-node and manual node upgrades continued afterward.
Mina instructed cryptocurrency exchanges to suspend MINA deposits and withdrawals from the transaction cutoff until the Mesa network became operational. Individual exchanges retained control over when they resumed transfer support.
Network Changes and Compatibility Requirements
The Mesa upgrade reduces slot time from three minutes to 90 seconds. The release temporarily caps zero-knowledge app transactions at 12 per block, a limit imposed after stress tests identified memory spikes during testing.
Deployed zkApps face a compatibility requirement: Mesa changes protocol constants and circuit constraints, rendering proofs created with pre-upgrade verification keys invalid. Developers must compile Mesa-compatible verification keys using o1js 3.0 and update the keys stored on-chain before their applications can process new proof-authorized transactions.
Mina's migration framework provides a temporary workaround. Access permissions set to proof or impossible fall back to signature authorization, allowing transactions to proceed without proof authorization. Permissions set to impossible remain locked. Once a zkApp updates its verification key, the account's transaction version advances and original permission rules restore.
No fixed deadline exists for key updates. The fallback authorization remains active until developers complete the upgrade, meaning proof-authorized activity remains paused on the resumed chain until applications implement the change.


