## Note
Commands are interfacing with the MCM / Timelock contracts version at this ccip-owner-contracts repository
The general format for a timelock gauntlet command is:
yarn gauntlet timelock:<OPERATION> --network=<NETWORK> [FLAGS] <TIMELOCK_ADDRESS>
deploy
:
yarn gauntlet timelock:deploy --network=<NETWORK> --minDelay=<NUMBER> --admin=<ADDRESS> --proposers=<COMMA_DELIMITED_PROPOSERS> --executors=<COMMA_DELIMITED_EXECUTORS> --cancellers=<COMMA_DELIMITED_CANCELLERS> --bypassers=<COMMA_DELIMITED_BYPASSERS>
scheduleBatch
:
yarn gauntlet timelock:schedule_batch --network=<NETWORK> --targets=0x0,0x1,0x2 --values=30,20,10 --payloads=0x0,0x1,0x2 --predecessor=0x0 --salt=0x0 --delay=10
cancel
:
yarn gauntlet timelock:cancel --network=<NETWORK> --id=<ID> <TIMELOCK_ADDRESS>
executeBatch
yarn gauntlet timelock:execute_batch --network=<NETWORK> --targets=0x0,0x1,0x2 --values=30,20,10 --payloads=0x0,0x1,0x2 --predecessor=0x0000000000000000000000000000000000000000000000000000000000000000 --salt=0x0000000000000000000000000000000000000000000000000000000000000000
bypasserExecuteBatch
:
yarn gauntlet timelock:bypasser_execute_batch --network=<NETWORK> --targets=0x0,0x1,0x2 --values=30,20,10 --payloads=0x0,0x1,0x2 <TIMELOCK_ADDRESS>
grantRole
:
yarn gauntlet timelock:grant_role --network=<NETWORK> --role=<proposer | executor | canceller | bypasser | admin> --address=<ADDRESS> <TIMELOCK_ADDRESS>
renounceRole
:
yarn gauntlet timelock:renounce_role --network=<NETWORK> --role=<proposer | executor | canceller | bypasser | admin> --address=<ADDRESS> <TIMELOCK_ADDRESS>
revokeRole
:
yarn gauntlet timelock:revoke_role --network=<NETWORK> --role=<proposer | executor | canceller | bypasser | admin> --address=<ADDRESS> <TIMELOCK_ADDRESS>
updateDelay
:
yarn gauntlet timelock:update_delay --delay=1 <TIMELOCK_ADDRESS>
The timelock wrapped commands (suffixed with keyword wrapped
) allows users to pass in an input file with arbitrary low level gauntlet commands, which will then be batched and executed on the timelock.
For example, given an input file like:
{
"transactions": [
{
"commandId": "ownership:accept_ownership",
"input": {},
"target": "0x1A61dc6d49490b18eD318033F8aaAC3260E281C0"
},
{
"commandId": "ownership:accept_ownership",
"input": {},
"target": "0x2CcB80Bd7d0b0E10aCd401CDCA46a3486bf75a9a"
},
{
"commandId": "ownership:accept_ownership",
"input": {},
"target": "0xD0792582d5d3Bdb022A7FC29e9976aaa4Fe75E03"
},
{
"commandId": "ownership:accept_ownership",
"input": {},
"target": "0xe37d36db213f92daEAE8CCff628405340D8B5B38"
}
]
}
Calling yarn gauntlet timelock:<TIMELOCK_OPERATION>:wrapped --inputFile=<PATH_TO_FILE> --network=<NETWORK> <TIMELOCK_ADDRESS>
will batch all of the transactions and execute the desired timelock operation
Note: each command has a few additional flags that might need to be set
schedule_batch
: takes in required delay
(in seconds) and optional predecessor
and salt
flags
execute_batch
: takes in optional predecessor
and salt
flags
cancel
: takes in optional predecessor
and salt
flags