It is proposed to replace GateSeals with CircuitBreaker, a permanent emergency pause contract. Unlike GateSeals, CircuitBreaker does not expire, does not require recurring redeployment, and allows committees to prolong their pause authority over assigned contracts by periodically submitting liveness checks ("heartbeats"). The full CircuitBreaker design is specified in LIP-34.
During emergencies that require immediate protocol-level changes, the Lido DAO cannot react quickly enough via on-chain governance, as the on-chain governance flow takes several days to enact a decision. To address this operational constraint, GateSeal was introduced as a temporary emergency pause mechanism. GateSeal has proven to be an acceptable solution, enabling fast response without requiring a DAO vote. However, the current GateSeal design does not scale well and introduces significant operational overhead:
As a result, even routine maintenance requires a full technical and governance cycle: new instance deployment, verification, Snapshot vote, and on-chain execution (example). As the number of pausable contracts grows (with Lido V3, Triggerable Withdrawals, and future releases), this overhead compounds.
CircuitBreaker addresses these design constraints by introducing a permanent mechanism that removes the need for recurring redeployment while preserving the existing safeguards.
CircuitBreaker is a single, permanent contract that manages all emergency pausing for the Lido protocol. CircuitBreaker maintains a mapping between pausable contracts and multisig committees ("pausers"). Each pausable contract has exactly one assigned pauser, while a single committee may be responsible for multiple contracts. Pausers can be registered, replaced, or removed via an on-chain vote.
Emergency pause. In an emergency, an authorized committee can selectively pause its assigned contract(s) by triggering CircuitBreaker. Once a contract is paused, the committee’s pause authority over that contract is revoked. The committee can still pause other contracts assigned to it. The DAO can restore pausing permissions via an on-chain vote. The pause expires automatically after a parameterized period or may be lifted earlier through an on-chain DAO vote.
Liveness check ("heartbeat"). Each pauser must periodically submit a heartbeat (a drill transaction) to remain authorized to pause assigned contracts. The heartbeat interval is defined by CircuitBreaker parameters. A single heartbeat confirms liveness across all contracts assigned to the pauser. If a heartbeat expires, the pauser loses the ability to pause or refresh its authorization. Authorization can only be restored by the DAO through reassignment of the pauser.
DAO control. The DAO can revoke CircuitBreaker pause permissions via on-chain governance, effectively disabling it if needed. This provides a safeguard in case of vulnerabilities, governance decisions, or migration to a new emergency mechanism.
More details can be found in LIP-34. Audit reports are published on the Research forum.
Immutable parameters (set at deployment):
| Parameter | Proposed value | Description |
|---|---|---|
ADMIN |
Lido DAO Agent | CircuitBreaker admin |
MIN_PAUSE_DURATION |
5 days | Minimum allowed pause duration |
MAX_PAUSE_DURATION |
60 days | Maximum allowed pause duration |
MIN_HEARTBEAT_INTERVAL |
30 days | Minimum interval between heartbeats |
MAX_HEARTBEAT_INTERVAL |
3 years | Maximum interval between heartbeats |
Configurable parameters (may be adjusted via DAO governance after deployment within immutable bounds):
| Parameter | Proposed value | Description |
|---|---|---|
pauseDuration |
21 days | Pause duration |
heartbeatInterval |
365 days | Interval for pauser liveness checks |
Notes:
pauseDuration and heartbeatInterval apply globally to all pausable contracts and pausers; updates to heartbeatInterval affect only future heartbeatspauseDuration (21 days) covers worst-case governance flow (14 days) and buffer for coordination (7 days)It is proposed to migrate from GateSeals to CircuitBreaker as the emergency pause mechanism for all existing and future pausable contracts.
If this proposal is approved, the CircuitBreaker will replace the following currently active GateSeals:
GateSeal: 0x8A854C4E750CDf24f138f34A9061b2f556066912 Pauser: GateSeal Committee Contracts: WithdrawalQueue
GateSeal: 0xA6BC802fAa064414AA62117B4a53D27fFfF741F1 Pauser: GateSeal Committee Contracts: ValidatorsExitBusOracle, TriggerableWithdrawalsGateway
GateSeal: 0x881dAd714679A6FeaA636446A0499101375A365c Pauser: GateSeal Committee Contracts: VaultHub, PredepositGuarantee
GateSeal: 0xE1686C2E90eb41a48356c1cC7FaA17629af3ADB3 Pauser: CSM Committee Contracts: CSModule, CSAccounting, CSFeeOracle, CSVerifier, VettedGate, CSEjector
All addresses can be verified in the Lido Docs.
Following this migration, the GateSeal Committee will be renamed to CircuitBreaker Committee.
If this proposal is approved: