@chainlink/evm-gauntlet-mcm
v2.4.4
Published
EVM Gauntlet Many Chain Multisig
Downloads
20,011
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=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>
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