@@ -11,7 +11,7 @@ import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";
1111import {MevCommitMiddleware} from "../../../contracts/validator-registry/middleware/MevCommitMiddleware.sol " ;
1212import {IRegistry} from "symbiotic-core/interfaces/common/IRegistry.sol " ;
1313import {INetworkRegistry} from "symbiotic-core/interfaces/INetworkRegistry.sol " ;
14- import {SymbioticHoleskyDevnetConsts, SymbioticMainnetConsts} from "./ReleaseAddrConsts.s.sol " ;
14+ import {SymbioticHoodiDevnetConsts, SymbioticHoleskyDevnetConsts, SymbioticMainnetConsts} from "./ReleaseAddrConsts.s.sol " ;
1515import {IBaseDelegator} from "symbiotic-core/interfaces/delegator/IBaseDelegator.sol " ;
1616import {INetworkMiddlewareService} from "symbiotic-core/interfaces/service/INetworkMiddlewareService.sol " ;
1717import {MainnetConstants} from "../../MainnetConstants.sol " ;
@@ -163,3 +163,64 @@ contract DeployHolesky is BaseDeploy {
163163 vm.stopBroadcast ();
164164 }
165165}
166+
167+
168+ contract DeployHoodi is BaseDeploy {
169+
170+ IRegistry constant public NETWORK_REGISTRY = IRegistry (SymbioticHoodiDevnetConsts.NETWORK_REGISTRY);
171+ IRegistry constant public OPERATOR_REGISTRY = IRegistry (SymbioticHoodiDevnetConsts.OPERATOR_REGISTRY);
172+ IRegistry constant public VAULT_FACTORY = IRegistry (SymbioticHoodiDevnetConsts.VAULT_FACTORY);
173+ IRegistry constant public DELEGATOR_FACTORY = IRegistry (SymbioticHoodiDevnetConsts.DELEGATOR_FACTORY);
174+ IRegistry constant public SLASHER_FACTORY = IRegistry (SymbioticHoodiDevnetConsts.SLASHER_FACTORY);
175+ IRegistry constant public BURNER_ROUTER_FACTORY = IRegistry (SymbioticHoodiDevnetConsts.BURNER_ROUTER_FACTORY);
176+
177+ // On Hoodi, use dev keystore account. On mainnet these will be the primev multisig.
178+ address constant public EXPECTED_MSG_SENDER = 0x1623fE21185c92BB43bD83741E226288B516134a ;
179+ address constant public OWNER = EXPECTED_MSG_SENDER;
180+ address constant public NETWORK = EXPECTED_MSG_SENDER;
181+ address constant public SLASH_ORACLE = EXPECTED_MSG_SENDER; // Temporary placeholder until oracle implements slashing.
182+ address constant public SLASH_RECEIVER = EXPECTED_MSG_SENDER;
183+ uint256 constant public MIN_BURNER_ROUTER_DELAY = 2 days ;
184+
185+ uint96 constant public SUBNETWORK_ID = 1 ;
186+ uint256 constant public VAULT1_MAX_NETWORK_LIMIT = 100000 ether ;
187+ uint256 constant public SLASH_PERIOD_SECONDS = 1 days ; // compiles to seconds
188+
189+ function run () external {
190+ require (block .chainid == 560048 , "must deploy on Hoodi " );
191+ require (msg .sender == EXPECTED_MSG_SENDER, "incorrect msg.sender " );
192+
193+ vm.startBroadcast ();
194+
195+ INetworkRegistry networkRegistry = INetworkRegistry (address (NETWORK_REGISTRY));
196+ if (! networkRegistry.isEntity (NETWORK)) {
197+ networkRegistry.registerNetwork ();
198+ }
199+
200+ address mevCommitMiddlewareProxy = deployMevCommitMiddleware (
201+ NETWORK_REGISTRY,
202+ OPERATOR_REGISTRY,
203+ VAULT_FACTORY,
204+ DELEGATOR_FACTORY,
205+ SLASHER_FACTORY,
206+ BURNER_ROUTER_FACTORY,
207+ NETWORK,
208+ SLASH_PERIOD_SECONDS,
209+ SLASH_ORACLE,
210+ SLASH_RECEIVER,
211+ MIN_BURNER_ROUTER_DELAY,
212+ OWNER
213+ );
214+
215+ INetworkMiddlewareService networkMiddlewareService = INetworkMiddlewareService (address (SymbioticHoodiDevnetConsts.NETWORK_MIDDLEWARE_SERVICE));
216+ if (networkMiddlewareService.middleware (msg .sender ) != address (0 )) {
217+ console.log ("WARNING: overwriting existing middleware registration for network: " , msg .sender );
218+ }
219+ networkMiddlewareService.setMiddleware (mevCommitMiddlewareProxy);
220+
221+ // No Hoodi Vaults in Symbiotic docs so hold off on Vault registration
222+ // One created here but not verified or used: https://hoodi.etherscan.io/tx/0x3f9e9651b912bf9ac85bfe8e852183f062049b4410a7a94f7dffececb92140bb
223+
224+ vm.stopBroadcast ();
225+ }
226+ }
0 commit comments