Timelocks
Overview
Timelocks are a mechanism to delay an action that may have significant effects. This allows any stakeholders that foresee the transaction impacting them negatively the appropriate time to react accordingly.
Governor-Level vs Pool-Delegate Timelocks
Governor‑privileged actions now route through a dedicated
GovernorTimelockcontract. Seetechnical-resources/singletons/governor-timelock.mdfor roles, lifecycle, and usage.Pool Delegate–level timelocks (e.g., PoolManager/LoanManager/WithdrawalManager upgrades) continue to use the protocol timelock checks documented on this page.
Affected Actions
The following actions require a timelocked execution:
PoolManager.upgrade()LoanManager.upgrade()WithdrawalManager.upgrade()
Scheduling
To perform a timelocked action Pool Delegates need to perform the following actions:
Call
scheduleCall()on theMapleGlobalscontract.Wait for the predetermined time to pass.
Call the target contract with the same parameters.
Example:
Pool Delegate wants to upgrade the poolManager to v2.
1. Call `globals.scheduleCall()`, passing the PoolManager address and the "upgrade" calldata properly encoded.
2. Wait for 2 weeks.
3. Call `upgrade` directly on the PoolManager.
The PoolManager contract will perform a check against Globals to ensure the call has been properly upgraded.Configuration
Timelocks parameters are set by the Governor and can be changed at any time, having a retroactive effect.
Example:
1. Current timelock is 2 weeks
2. Actor A schedules a call to a contract.
3. After 1 week, the Governor changes the time to be 1 week.
3. A can immediately call execute the contract, since it's been 1 week since the call was scheduled.Last updated