diff --git a/contracts/script/MachServiceManagerImplDeployer.s.sol b/contracts/script/MachServiceManagerImplDeployer.s.sol new file mode 100644 index 0000000..9d2767c --- /dev/null +++ b/contracts/script/MachServiceManagerImplDeployer.s.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.12; + +import "forge-std/Script.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import {MachServiceManager} from "../src/core/MachServiceManager.sol"; +import {IStakeRegistry} from "eigenlayer-middleware/interfaces/IStakeRegistry.sol"; +import {IRegistryCoordinator} from "eigenlayer-middleware/interfaces/IRegistryCoordinator.sol"; +import {IPauserRegistry} from "eigenlayer-core/contracts/interfaces/IPauserRegistry.sol"; +import {IAVSDirectory} from "eigenlayer-core/contracts/interfaces/IAVSDirectory.sol"; + +contract MachServiceManagerImplDeployer is Script { + function run() external { + address avsDirectory = vm.envAddress("AVS_DIRECTORY"); + address registryCoordinator = vm.envAddress("REGISTRY_COORDINATOR"); + address stakeRegistry = vm.envAddress("STAKE_REGISTRY"); + uint256 chainId = vm.envUint("CHAIN_ID"); + vm.startBroadcast(); + // 1. deploy new implementation contract + MachServiceManager machServiceManagerImplementation = new MachServiceManager( + IAVSDirectory(avsDirectory), + IRegistryCoordinator(registryCoordinator), + IStakeRegistry(stakeRegistry), + chainId + ); + vm.stopBroadcast(); + } +} diff --git a/contracts/script/MachServiceManagerUpgrader.s.sol b/contracts/script/MachServiceManagerUpgrader.s.sol index bd3d9ed..410b5de 100644 --- a/contracts/script/MachServiceManagerUpgrader.s.sol +++ b/contracts/script/MachServiceManagerUpgrader.s.sol @@ -4,32 +4,17 @@ pragma solidity ^0.8.12; import "forge-std/Script.sol"; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import {MachServiceManager} from "../src/core/MachServiceManager.sol"; -import {IStakeRegistry} from "eigenlayer-middleware/interfaces/IStakeRegistry.sol"; -import {IRegistryCoordinator} from "eigenlayer-middleware/interfaces/IRegistryCoordinator.sol"; -import {IAVSDirectory} from "eigenlayer-core/contracts/interfaces/IAVSDirectory.sol"; contract MachServiceManagerUpgrader is Script { function run() external { - address proxyAdminAddr = vm.envAddress("PROXY_ADMIN"); address machServiceManager = vm.envAddress("SERVICE_MANAGER"); - address avsDirectory = vm.envAddress("AVS_DIRECTORY"); - address registryCoordinator = vm.envAddress("REGISTRY_COORDINATOR"); - address stakeRegistry = vm.envAddress("STAKE_REGISTRY"); - uint256 chainId = vm.envUint("CHAIN_ID"); - - ProxyAdmin machAVSProxyAdmin = ProxyAdmin(proxyAdminAddr); - - // 1. deploy new implementation contract - MachServiceManager machServiceManagerImplementation = new MachServiceManager( - IAVSDirectory(avsDirectory), - IRegistryCoordinator(registryCoordinator), - IStakeRegistry(stakeRegistry), - chainId - ); - - // 2. call upgrade + address newImplAddress = vm.envAddress("NEW_IMPL_ADDRESS"); + address proxyAdmin = vm.envAddress("PROXY_ADMIN"); + ProxyAdmin machAVSProxyAdmin = ProxyAdmin(proxyAdmin); + vm.startBroadcast(); machAVSProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(machServiceManager)), address(machServiceManagerImplementation) + TransparentUpgradeableProxy(payable(address(machServiceManager))), address(newImplAddress) ); + vm.stopBroadcast(); } }