Skip to content

AggLayer: Add emergency pause mechanism #2696

@mmagician

Description

@mmagician

Description

The Solidity base bridge contract (PolygonZkEVMBridgeV2.sol) inherits EmergencyManager, which provides a simple emergency state toggle controlled by the rollup manager (a trusted system contract). When emergency state is active, the ifNotEmergencyState modifier blocks all user-facing operations:

The emergency state is a simple boolean flag managed by a single trusted role.

The Miden bridge has no equivalent mechanism. All bridge operations (bridge_out, claim, register_faucet, update_ger) execute unconditionally with no pause flag check. There is no storage slot for an emergency state and no note type to toggle it.

Impact

If a vulnerability is discovered in the bridge logic, or a GER manager is compromised and inserts fraudulent GERs, there is no way to stop the bridge from processing transactions while the issue is investigated and fixed.

Recommended Action

Add an emergency_paused flag in bridge storage. All entry-point procedures (bridge_out, claim, register_faucet, update_ger) should check this flag at the start and panic if set. Add a bridge-admin-gated set_emergency_paused procedure to toggle the flag, along with a corresponding note script or CONFIG_AGG_BRIDGE extension to invoke it.

Dependencies

  • Issue 001b extends this with separate pauser/unpauser roles

References

Classification

This is a core feature of the base bridge contract (PolygonZkEVMBridgeV2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    agglayerPRs or issues related to AggLayer bridging integration

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions