@chainlink/evm-gauntlet-mcm
v2.4.4
Published
EVM Gauntlet Many Chain Multisig
Readme
EVM Gauntlet Many Chain Multisig Gauntlet
## Note
Commands are interfacing with the MCM / Timelock contracts version at this ccip-owner-contracts repository
Timelock Commands
The general format for a timelock gauntlet command is:
yarn gauntlet timelock:<OPERATION> --network=<NETWORK> [FLAGS] <TIMELOCK_ADDRESS>Basic Commands
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=10cancel:
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=0x0000000000000000000000000000000000000000000000000000000000000000bypasserExecuteBatch:
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>Wrapped Commands
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
