Skip to content

governor:timelock-schedule

Schedule a batch of actions on a TimelockController. Optionally binds the operation id to a variable for later state checks or cancellation.

⚗️ Experimental — available at next.evmcrispr.com.

governor:timelock-schedule [variable] <timelock> <delay> <actions>
NameTypeDescription
[variable]variableVariable to bind the operation id to
timelockaddressTimelockController address
delaynumberDelay, in time units (e.g. 2d; at least the timelock minimum delay)
actionsblockBlock of commands making up the operation
NameTypeDescription
--predecessorbytes32Operation id that must execute first (default none)
--saltbytes32Salt to disambiguate identical operations (default zero)
load governor
load acl
set $timelock 0xc0dbDcA66a0636236fAbe1B3C16B1bD4C84bB1E1
set $token 0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb
set $grantee 0x4F2083f5fBede34C2714aFfb3105539775f7FE64
# Schedule a batch and remember its operation id
governor:timelock-schedule $opId $timelock 2d (
exec $token transfer(address,uint256) $grantee 100e18
acl:grant MINTER_ROLE on $token to $grantee
)
print @governor:timelockOperationState($timelock $opId)
  • Requires the PROPOSER_ROLE on the timelock; the delay must be at least @governor:timelockMinDelay.
  • The optional variable is bound to the operation id (hashOperationBatch), computed locally without a chain read.
  • Use --salt to schedule the same batch twice; --predecessor orders operations.