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
pushd packages/horizon
npx hardhat deploy:migrate --network arbitrumOne --horizon-config arbitrumOne --step 1
popd
Subgraph service script 1
pushd packages/subgraph-service
npx hardhat deploy:migrate --network arbitrumOne --subgraph-service-config arbitrumOne --step 1
popd
Horizon script 2 / Council tx 1
pushd packages/horizon
npx hardhat deploy:migrate --network <network> --horizon-config <config> --step 2
popd
Horizon script 3
pushd packages/horizon
npx hardhat deploy:migrate --network arbitrumOne --horizon-config arbitrumOne --step 3
popd
Subgraph service script 2
pushd packages/subgraph-service
npx hardhat deploy:migrate --network arbitrumOne --subgraph-service-config arbitrumOne --step 2
popd
Horizon script 4 / Council tx 2
pushd packages/horizon
npx hardhat deploy:migrate --network <network> --horizon-config <config> --step 4
popd