What AggOracle Does
AggOracle propagates Global Exit Root (GER) updates from Ethereum L1 to the L2 chain’s Global Exit Root Manager contract. This synchronization keeps the L2 chain’s local copy of global state current, which is required for verifying incoming cross-chain claims. When a user bridges assets from another chain to your chain and submits a claim, your chain verifies the claim against the current GER. Without a current GER, the verification fails and claims cannot be processed.The Synchronization Problem
Cross-chain claim verification requires L2 chains to have current GER data from Ethereum L1. The two chains operate independently with different block times and finality requirements, so the L2 cannot query L1 directly on demand. AggOracle resolves this by implementing a pull-based synchronization mechanism: it continuously monitors L1 for GER changes and injects updates into the L2 contract whenever a new GER is detected.The Two Operating Modes
Direct Injection Mode (Pre-v0.3.5)
In the original design, AggOracle used single-address authorization for GER injection. One designated address had the authority to callinsertGlobalExitRoot() on the L2 Global Exit Root Manager contract.
Vulnerability: If the single private key is compromised, an attacker could inject invalid GERs, causing the chain to accept fraudulent bridge claims.
Committee Mode (v0.3.5)
v0.3.5 introduces multi-party consensus. Multiple independent AggOracle instances must agree before any GER injection occurs. How it works:- Multiple AggOracle committee members independently monitor L1 for GER updates
- When a new GER is detected, one member proposes it to the committee contract
- Other members validate and vote by proposing the same GER
- The committee contract automatically injects the GER when the threshold quorum is reached
Full GER Propagation Workflow
Understanding Global Exit Roots
A Global Exit Root (GER) is a cryptographic hash that represents the current state of all cross-chain bridge activities across the Agglayer ecosystem:- RollupExitRoot: Aggregated root of all L2 chains’ Local Exit Roots
- MainnetExitRoot: Root of all Ethereum L1 bridge transactions