The on-chain components upgrade will be **executed using a series of Hardhat Ignition scripts. Steps that need to be performed by governance will be converted by E&N Protocol team into transaction batches which can be reviewed and signed by the Council via OpenZeppelin Defender / Safe App.
Phase | Description | Executed by | Execution strategy | Hardhat Ignition scripts |
---|---|---|---|---|
1 | New contract proxies are deployed. | Deployer account | ||
(E&N Protocol team) | Hardhat Ignition script | Horizon script #1 | ||
Subgraph Service script #1 | ||||
2 | The new proxies are registered in the Controller contract. | Protocol governor | ||
(Graph Council) | Batched transaction via | |||
OpenZeppelin Defender | Horizon script #2 → batched transactions | |||
3 | New implementations are deployed. | Deployer account | ||
(E&N Protocol team) | Hardhat Ignition script | Horizon script #3 | ||
Subgraph Service script #2 | ||||
4 | Contracts are upgraded to their new implementations. | Protocol governor | ||
(Graph Council) | Batched transaction via | |||
OpenZeppelin Defender | Horizon script #4 → batched transactions |
Horizon script 1
npx hardhat deploy:migrate --network <network> --horizon-config <config> --step 1
Subgraph service script 1
npx hardhat deploy:migrate --network <network> --subgraph-service-config <config> --step 1
Horizon script 2 / Council tx 1
npx hardhat deploy:migrate --network <network> --horizon-config <config> --step 2
Horizon script 3
npx hardhat deploy:migrate --network <network> --horizon-config <config> --step 3
Subgraph service script 2
npx hardhat deploy:migrate --network <network> --subgraph-service-config <config> --step 2
Horizon script 4 / Council tx 2
npx hardhat deploy:migrate --network <network> --horizon-config <config> --step 4