From 7c6d6f853ff603ea0325592dac6a81faac7c3031 Mon Sep 17 00:00:00 2001 From: WillQ Date: Fri, 16 May 2025 14:25:27 +0800 Subject: [PATCH 1/2] update holesky script --- script/Deployments.s.sol | 78 +++++- script/SetRegistry.s.sol | 97 ++++++-- script/SetupContract.s.sol | 287 +++++++++++++++++----- script/deploy.sh | 2 +- script/output/.gitignore | 5 +- script/output/holesky/taiyiAddresses.json | 24 ++ 6 files changed, 393 insertions(+), 100 deletions(-) create mode 100644 script/output/holesky/taiyiAddresses.json diff --git a/script/Deployments.s.sol b/script/Deployments.s.sol index 72deae2..8851cb0 100644 --- a/script/Deployments.s.sol +++ b/script/Deployments.s.sol @@ -84,7 +84,13 @@ contract Deploy is Script, Test { address admin; } + enum Network { + DEVNET, + HOLESKY, + HOODI + } // Proxies + ProxyInfo internal registryCoordinatorInfo; ProxyInfo internal linglongSlasherInfo; ProxyInfo internal pubkeyRegistryInfo; @@ -196,9 +202,9 @@ contract Deploy is Script, Test { } // Deploy implementation contracts and initialize them + function deployImplementations() internal { string memory taiyiAddresses = "taiyiAddresses"; - // Deploy TaiyiRegistryCoordinator implementation and proxy TaiyiRegistryCoordinator registryCoordinatorImpl = new TaiyiRegistryCoordinator( IAllocationManager(allocationManager), @@ -384,7 +390,7 @@ contract Deploy is Script, Test { vm.stopBroadcast(); } - function setupHoleskyAddresses() internal { + function setupHoleskyAddresses(string memory taiyiAddresses) internal { // holesky address reference: https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky avsDirectory = 0x055733000064333CaDDbC92763c58BF0192fFeBf; delegationManager = 0xA44151489861Fe9e3055d95adC98FbD462B948e7; @@ -392,9 +398,28 @@ contract Deploy is Script, Test { eigenPodManager = 0x30770d7E3e71112d7A6b7259542D1f680a70e315; rewardCoordinator = 0xAcc1fb458a1317E886dB376Fc8141540537E68fE; allocationManager = 0x78469728304326CBc65f8f95FA756B0B73164462; - permissionController = 0x0000000000000000000000000000000000000000; + permissionController = 0x598cb226B591155F767dA17AfE7A2241a68C5C10; + eigenPauserReg = 0x85Ef7299F8311B25642679edBF02B62FA2212F06; // TODO: update this - urc = 0x0000000000000000000000000000000000000000; + vm.startBroadcast(); + IRegistry.Config memory registryConfig = IRegistry.Config({ + minCollateralWei: SafeCast.toUint80(urcMinCollateral), + fraudProofWindow: 7200, + unregistrationDelay: 7200, + slashWindow: 7200, + optInDelay: 7200 + }); + + Registry registry = new Registry(registryConfig); + emit log_address(address(registry)); + urc = address(registry); + vm.serializeAddress(taiyiAddresses, "urc", address(registry)); + vm.serializeUint(taiyiAddresses, "urcMinCollateral", urcMinCollateral); + vm.stopBroadcast(); + } + + function setupHoodiAddresses(string memory taiyiAddresses) internal { + revert("Hoodi is not supported yet"); } function run(string memory configFileName, uint256 minCollateral) public { @@ -404,18 +429,21 @@ contract Deploy is Script, Test { deployer = vm.addr(proxyDeployerPrivateKey); implOwner = vm.addr(implPrivateKey); - string memory network = vm.envString("NETWORK"); string memory taiyiAddresses = "taiyiAddresses"; - vm.createDir("script/output/devnet", true); + Network network = getNetwork(); + string memory outputDir = getOutputDir(network); - if (keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("devnet"))) - { + vm.createDir(outputDir, true); + + if (network == Network.DEVNET) { setupDevnetAddresses(proxyDeployerPrivateKey, taiyiAddresses, configFileName); - } else if ( - keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("holesky")) - ) { - setupHoleskyAddresses(); + } else if (network == Network.HOLESKY) { + setupHoleskyAddresses(taiyiAddresses); + } else if (network == Network.HOODI) { + setupHoodiAddresses(taiyiAddresses); + } else { + revert("Invalid network"); } rewardInitiator = address(0xd8F3183DEf51a987222d845Be228E0bBB932c292); // Arbitrary address @@ -453,4 +481,30 @@ contract Deploy is Script, Test { return (proxyDeployerPrivateKey, implPrivateKey); } + + function getOutputDir(Network network) internal pure returns (string memory) { + if (network == Network.HOLESKY) { + return "script/output/holesky"; + } else if (network == Network.HOODI) { + return "script/output/hoodi"; + } else { + return "script/output/devnet"; + } + } + + function getNetwork() internal view returns (Network) { + string memory network = vm.envString("NETWORK"); + + if ( + keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("holesky")) + ) { + return Network.HOLESKY; + } else if ( + keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("hoodi")) + ) { + return Network.HOODI; + } else { + return Network.DEVNET; + } + } } diff --git a/script/SetRegistry.s.sol b/script/SetRegistry.s.sol index 042f7b4..2c81a40 100644 --- a/script/SetRegistry.s.sol +++ b/script/SetRegistry.s.sol @@ -56,6 +56,39 @@ import { StdStorage, stdStorage } from "forge-std/Test.sol"; contract SetRegistry is Script, Test { using stdStorage for StdStorage; + // Network enum for better readability + enum Network { + DEVNET, + HOLESKY, + HOODI + } + + function getNetwork() internal view returns (Network) { + string memory network = vm.envString("NETWORK"); + + if ( + keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("holesky")) + ) { + return Network.HOLESKY; + } else if ( + keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("hoodi")) + ) { + return Network.HOODI; + } else { + return Network.DEVNET; + } + } + + function getOutputDir(Network network) internal pure returns (string memory) { + if (network == Network.HOLESKY) { + return "script/output/holesky"; + } else if (network == Network.HOODI) { + return "script/output/hoodi"; + } else { + return "script/output/devnet"; + } + } + function run() public { // Get deployer address from private key string memory pkString = vm.envString("PROXY_OWNER_PRIVATE_KEY"); @@ -74,8 +107,15 @@ contract SetRegistry is Script, Test { address proxyDeployer = vm.addr(proxyDeployerPrivateKey); address implDeployer = vm.addr(implPrivateKey); + // Get network and set up paths + Network network = getNetwork(); + string memory outputDir = getOutputDir(network); string memory outputFile = - string(bytes("script/output/devnet/taiyiAddresses.json")); + string(bytes(string.concat(outputDir, "/taiyiAddresses.json"))); + + // Create output directory if it doesn't exist + vm.createDir(outputDir, true); + string memory output_data = vm.readFile(outputFile); TaiyiRegistryCoordinator taiyiRegistryCoordinator = TaiyiRegistryCoordinator( @@ -86,31 +126,45 @@ contract SetRegistry is Script, Test { stdJson.readAddress(output_data, ".taiyiAddresses.eigenLayerMiddleware") ); - string memory eigenLayerOutputFile = string( - bytes( - "script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json" - ) - ); - - string memory eigenLayerOutput_data = vm.readFile(eigenLayerOutputFile); - // address wethStrategyAddr = - // stdJson.readAddress(eigenLayerOutput_data, ".addresses.strategies.WETH"); - address allocationManagerAddr = - stdJson.readAddress(eigenLayerOutput_data, ".addresses.allocationManager"); - address permissionController = - stdJson.readAddress(eigenLayerOutput_data, ".addresses.permissionController"); + // Get network-specific addresses + address allocationManagerAddr; + address permissionControllerAddr; + + if (network == Network.DEVNET) { + // Devnet deployment - read from file + string memory eigenLayerOutputFile = string( + bytes( + "script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json" + ) + ); + + string memory eigenLayerOutput_data = vm.readFile(eigenLayerOutputFile); + allocationManagerAddr = + stdJson.readAddress(eigenLayerOutput_data, ".addresses.allocationManager"); + permissionControllerAddr = stdJson.readAddress( + eigenLayerOutput_data, ".addresses.permissionController" + ); + } else if (network == Network.HOLESKY) { + // Use hardcoded addresses for Holesky and Hoodi + allocationManagerAddr = 0x78469728304326CBc65f8f95FA756B0B73164462; + permissionControllerAddr = 0x598cb226B591155F767dA17AfE7A2241a68C5C10; + } else if (network == Network.HOODI) { + revert("Hoodi is not supported yet"); + } else { + revert("Invalid network"); + } AllocationManager allocationManager = AllocationManager(allocationManagerAddr); - PermissionController controller = PermissionController(permissionController); + PermissionController controller = PermissionController(permissionControllerAddr); vm.startBroadcast(implPrivateKey); // Update registry coordinator with new registries eigenLayerMiddleware.addAdminToPermissionController( - proxyDeployer, permissionController + proxyDeployer, permissionControllerAddr ); eigenLayerMiddleware.addAdminToPermissionController( - implDeployer, permissionController + implDeployer, permissionControllerAddr ); vm.stopBroadcast(); @@ -128,9 +182,12 @@ contract SetRegistry is Script, Test { allocationManager.setAVSRegistrar( address(eigenLayerMiddleware), IAVSRegistrar(taiyiRegistryCoordinator) ); - allocationManager.updateAVSMetadataURI( - address(eigenLayerMiddleware), "luban-local-test" - ); + + // Use the same metadata URI for all networks + string memory metadataURI = + "https://github.com/lu-bann/eigenlayer-metadata-uri/raw/67e76ca2b1c3344ce0a4b43fcff4b5f82b1b046a/metadata.json"; + + allocationManager.updateAVSMetadataURI(address(eigenLayerMiddleware), metadataURI); vm.stopBroadcast(); } } diff --git a/script/SetupContract.s.sol b/script/SetupContract.s.sol index eadae07..520ed83 100644 --- a/script/SetupContract.s.sol +++ b/script/SetupContract.s.sol @@ -58,88 +58,143 @@ import { OperatorSubsetLib } from "src/libs/OperatorSubsetLib.sol"; contract SetupContract is Script, Test { using stdStorage for StdStorage; - function run() public { - // Get deployer address from private key - string memory implPkString = vm.envString("IMPL_OWNER_PRIVATE_KEY"); + // Network enum for better readability + enum Network { + DEVNET, + HOLESKY, + HOODI + } - bytes memory implPkBytes = bytes(implPkString); - if (implPkBytes.length < 2 || implPkBytes[0] != 0x30 || implPkBytes[1] != 0x78) { - implPkString = string.concat("0x", implPkString); + function getNetwork() internal view returns (Network) { + string memory network = vm.envString("NETWORK"); + + if ( + keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("holesky")) + ) { + return Network.HOLESKY; + } else if ( + keccak256(abi.encodePacked(network)) == keccak256(abi.encodePacked("hoodi")) + ) { + return Network.HOODI; + } else { + return Network.DEVNET; } - uint256 implPrivateKey = vm.parseUint(implPkString); // Parse as hex + } - string memory outputFile = - string(bytes("script/output/devnet/taiyiAddresses.json")); - string memory output_data = vm.readFile(outputFile); + function getOutputDir(Network network) internal pure returns (string memory) { + if (network == Network.HOLESKY) { + return "script/output/holesky"; + } else if (network == Network.HOODI) { + return "script/output/hoodi"; + } else { + return "script/output/devnet"; + } + } - address socketRegistry = + function getNetworkAddresses(Network network) + internal + view + returns (address wethStrategyAddr, address allocationManagerAddr) + { + if (network == Network.DEVNET) { + string memory eigenLayerOutputFile = string( + bytes( + "script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json" + ) + ); + + string memory eigenLayerOutput_data = vm.readFile(eigenLayerOutputFile); + wethStrategyAddr = + stdJson.readAddress(eigenLayerOutput_data, ".addresses.strategies.WETH"); + allocationManagerAddr = + stdJson.readAddress(eigenLayerOutput_data, ".addresses.allocationManager"); + } else if (network == Network.HOLESKY) { + allocationManagerAddr = 0x78469728304326CBc65f8f95FA756B0B73164462; + wethStrategyAddr = 0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6; + } else if (network == Network.HOODI) { + revert("Hoodi is not supported yet"); + } else { + revert("Invalid network"); + } + } + + function getContractAddresses(string memory output_data) + internal + view + returns ( + address socketRegistry, + address pubkeyRegistry, + address taiyiRegistryCoordinatorAddr, + address eigenLayerMiddlewareAddr, + address linglongSlasherAddr + ) + { + socketRegistry = stdJson.readAddress(output_data, ".taiyiAddresses.socketRegistryImpl"); - address pubkeyRegistry = + pubkeyRegistry = stdJson.readAddress(output_data, ".taiyiAddresses.pubkeyRegistryImpl"); + taiyiRegistryCoordinatorAddr = + stdJson.readAddress(output_data, ".taiyiAddresses.taiyiRegistryCoordinator"); + eigenLayerMiddlewareAddr = + stdJson.readAddress(output_data, ".taiyiAddresses.eigenLayerMiddleware"); + linglongSlasherAddr = + stdJson.readAddress(output_data, ".taiyiAddresses.linglongSlasher"); + } - TaiyiRegistryCoordinator taiyiRegistryCoordinator = TaiyiRegistryCoordinator( - stdJson.readAddress(output_data, ".taiyiAddresses.taiyiRegistryCoordinator") - ); - - EigenLayerMiddleware eigenLayerMiddleware = EigenLayerMiddleware( - stdJson.readAddress(output_data, ".taiyiAddresses.eigenLayerMiddleware") - ); - - LinglongSlasher linglongSlasher = LinglongSlasher( - stdJson.readAddress(output_data, ".taiyiAddresses.linglongSlasher") - ); - string memory eigenLayerOutputFile = string( - bytes( - "script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json" - ) - ); - - string memory eigenLayerOutput_data = vm.readFile(eigenLayerOutputFile); - address wethStrategyAddr = - stdJson.readAddress(eigenLayerOutput_data, ".addresses.strategies.WETH"); - address allocationManagerAddr = - stdJson.readAddress(eigenLayerOutput_data, ".addresses.allocationManager"); - - AllocationManager allocationManager = AllocationManager(allocationManagerAddr); - - vm.startBroadcast(implPrivateKey); - // Update registry coordinator with new registries - taiyiRegistryCoordinator.updateSocketRegistry(address(socketRegistry)); - taiyiRegistryCoordinator.updatePubkeyRegistry(address(pubkeyRegistry)); - - linglongSlasher.setEigenLayerMiddleware(address(eigenLayerMiddleware)); - taiyiRegistryCoordinator.setRestakingProtocol( - address(eigenLayerMiddleware), - ITaiyiRegistryCoordinator.RestakingProtocol.EIGENLAYER - ); - + function setupOperatorSets( + EigenLayerMiddleware eigenLayerMiddleware, + address wethStrategyAddr, + address allocationManagerAddr + ) + internal + returns (uint32 validatorOperatorSetId, uint32 underwriterOperatorSetId) + { IStrategy[] memory strategies = new IStrategy[](1); strategies[0] = IStrategy(wethStrategyAddr); - uint32 validatorOperatorSetId = eigenLayerMiddleware.createOperatorSet( + validatorOperatorSetId = eigenLayerMiddleware.createOperatorSet( strategies, OperatorSubsetLib.EIGENLAYER_VALIDATOR_SUBSET_ID, 0 ); - uint32 underwriterOperatorSetId = eigenLayerMiddleware.createOperatorSet( + underwriterOperatorSetId = eigenLayerMiddleware.createOperatorSet( strategies, OperatorSubsetLib.EIGENLAYER_UNDERWRITER_SUBSET_ID, 0 ); - OperatorSet memory opSet; - opSet.id = validatorOperatorSetId; - opSet.avs = address(eigenLayerMiddleware); + verifyOperatorSets( + validatorOperatorSetId, + underwriterOperatorSetId, + address(eigenLayerMiddleware), + allocationManagerAddr + ); + } - bool exists = allocationManager.isOperatorSet(opSet); + function verifyOperatorSets( + uint32 validatorOperatorSetId, + uint32 underwriterOperatorSetId, + address eigenLayerMiddleware, + address allocationManagerAddr + ) + internal + view + { + AllocationManager allocationManager = AllocationManager(allocationManagerAddr); - assert(exists); + OperatorSet memory opSet; + opSet.id = validatorOperatorSetId; + opSet.avs = eigenLayerMiddleware; + assert(allocationManager.isOperatorSet(opSet)); opSet.id = underwriterOperatorSetId; - opSet.avs = address(eigenLayerMiddleware); - - exists = allocationManager.isOperatorSet(opSet); - - assert(exists); - console.log("validator operator set id ", validatorOperatorSetId); - console.log("underwriter operator set id ", underwriterOperatorSetId); + opSet.avs = eigenLayerMiddleware; + assert(allocationManager.isOperatorSet(opSet)); + } + function saveOperatorSetIds( + string memory outputDir, + uint32 validatorOperatorSetId, + uint32 underwriterOperatorSetId + ) + internal + { vm.serializeUint( "operatorSetId", "validatorOperatorSetId", validatorOperatorSetId ); @@ -150,7 +205,113 @@ contract SetupContract is Script, Test { string memory output = "output"; vm.serializeString(output, "operatorSetId", operatorSetId); string memory finalJ = vm.serializeString(output, "operatorSetId", operatorSetId); - vm.writeJson(finalJ, "script/output/devnet/operatorSetId.json"); + + string memory outputPath = + string(bytes(string.concat(outputDir, "/operatorSetId.json"))); + vm.writeJson(finalJ, outputPath); + } + + function setupContracts( + address socketRegistry, + address pubkeyRegistry, + address eigenLayerMiddlewareAddr, + TaiyiRegistryCoordinator taiyiRegistryCoordinator, + LinglongSlasher linglongSlasher + ) + internal + { + taiyiRegistryCoordinator.updateSocketRegistry(socketRegistry); + taiyiRegistryCoordinator.updatePubkeyRegistry(pubkeyRegistry); + + linglongSlasher.setEigenLayerMiddleware(eigenLayerMiddlewareAddr); + taiyiRegistryCoordinator.setRestakingProtocol( + eigenLayerMiddlewareAddr, + ITaiyiRegistryCoordinator.RestakingProtocol.EIGENLAYER + ); + } + + function executeSetup( + uint256 implPrivateKey, + string memory outputDir, + address socketRegistry, + address pubkeyRegistry, + address taiyiRegistryCoordinatorAddr, + address eigenLayerMiddlewareAddr, + address linglongSlasherAddr, + address wethStrategyAddr, + address allocationManagerAddr + ) + internal + { + TaiyiRegistryCoordinator taiyiRegistryCoordinator = + TaiyiRegistryCoordinator(taiyiRegistryCoordinatorAddr); + EigenLayerMiddleware eigenLayerMiddleware = + EigenLayerMiddleware(eigenLayerMiddlewareAddr); + LinglongSlasher linglongSlasher = LinglongSlasher(linglongSlasherAddr); + + vm.startBroadcast(implPrivateKey); + + setupContracts( + socketRegistry, + pubkeyRegistry, + eigenLayerMiddlewareAddr, + taiyiRegistryCoordinator, + linglongSlasher + ); + + (uint32 validatorOperatorSetId, uint32 underwriterOperatorSetId) = + setupOperatorSets(eigenLayerMiddleware, wethStrategyAddr, allocationManagerAddr); + + console.log("validator operator set id ", validatorOperatorSetId); + console.log("underwriter operator set id ", underwriterOperatorSetId); + + saveOperatorSetIds(outputDir, validatorOperatorSetId, underwriterOperatorSetId); + vm.stopBroadcast(); } + + function run() public { + // Get deployer address from private key + string memory implPkString = vm.envString("IMPL_OWNER_PRIVATE_KEY"); + + bytes memory implPkBytes = bytes(implPkString); + if (implPkBytes.length < 2 || implPkBytes[0] != 0x30 || implPkBytes[1] != 0x78) { + implPkString = string.concat("0x", implPkString); + } + uint256 implPrivateKey = vm.parseUint(implPkString); + + // Get network and set up paths + Network network = getNetwork(); + string memory outputDir = getOutputDir(network); + string memory outputFile = + string(bytes(string.concat(outputDir, "/taiyiAddresses.json"))); + + // Create output directory if it doesn't exist + vm.createDir(outputDir, true); + + string memory output_data = vm.readFile(outputFile); + + ( + address socketRegistry, + address pubkeyRegistry, + address taiyiRegistryCoordinatorAddr, + address eigenLayerMiddlewareAddr, + address linglongSlasherAddr + ) = getContractAddresses(output_data); + + (address wethStrategyAddr, address allocationManagerAddr) = + getNetworkAddresses(network); + + executeSetup( + implPrivateKey, + outputDir, + socketRegistry, + pubkeyRegistry, + taiyiRegistryCoordinatorAddr, + eigenLayerMiddlewareAddr, + linglongSlasherAddr, + wethStrategyAddr, + allocationManagerAddr + ); + } } diff --git a/script/deploy.sh b/script/deploy.sh index 8792641..1d982c4 100644 --- a/script/deploy.sh +++ b/script/deploy.sh @@ -16,4 +16,4 @@ export FOUNDRY_PROFILE=ci forge script --rpc-url $EXECUTION_URL \ -vvvv --broadcast ./script/Deployments.s.sol:Deploy \ --sig "run(string memory configFile, uint256 minCollateral)" \ --- eigenlayer-deploy-config-devnet.json 0.1ether +-- eigenlayer-deploy-config-devnet.json 0.01ether diff --git a/script/output/.gitignore b/script/output/.gitignore index 86d0cb2..34805eb 100644 --- a/script/output/.gitignore +++ b/script/output/.gitignore @@ -1,4 +1 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore \ No newline at end of file +devnet/* \ No newline at end of file diff --git a/script/output/holesky/taiyiAddresses.json b/script/output/holesky/taiyiAddresses.json new file mode 100644 index 0000000..8dcf9ac --- /dev/null +++ b/script/output/holesky/taiyiAddresses.json @@ -0,0 +1,24 @@ +{ + "taiyiAddresses": { + "eigenLayerMiddleware": "0xC568b4cB806f38a5c487DE63F5C4dD600d53767E", + "eigenLayerMiddlewareImpl": "0x8Be3172F7184Bd85bFAE53381f13645006D69164", + "eigenLayerMiddlewareProxyAdminAddress": "0x6F2f2C40EBE2cBB05E5C00C8F94813447A1e86b3", + "linglongSlasher": "0xF0a0689f8249013150862bd4D619A90ed2152902", + "linglongSlasherImpl": "0xe2349Ef0b02200a82e3A27346d3209d4705Fc5D1", + "linglongSlasherProxyAdminAddress": "0x08FD8Fd026aC87c87971Ada21F75EF61BBd4fA79", + "pubkeyRegistry": "0x0196344B9434Ec2f930399e4A85C93E51D06be96", + "pubkeyRegistryImpl": "0xEdC22806f938Da663e9069776d55E7277eF36C72", + "pubkeyRegistryProxyAdminAddress": "0xd71714E2c06479F204690FD8739dD47BB1FBC1f1", + "socketRegistry": "0xC4A1291E51932c132D41C444AeF6d8930F890C92", + "socketRegistryImpl": "0x253D872c50CA681C82c3F443fe626F43e30343D0", + "socketRegistryProxyAdminAddress": "0xe6c4cBd1FFf01F186EAba227eC2DD41f9E580972", + "taiyiCore": "0xe68B08c865E292afE258e9694f811D08766BB044", + "taiyiCoreImpl": "0x334102140CF48480454d2F9e2fFf7DC9C272A8De", + "taiyiCoreProxyAdminAddress": "0x3B840e291d1Fcb9ee1b4c9803c7Da51AbA5ee6B6", + "taiyiRegistryCoordinator": "0x4778517B371D996476D0a0Fc240fa754391ad5e7", + "taiyiRegistryCoordinatorImpl": "0x70b7820ca2e73184ff4cd793AE87A1d1AB2AC7AE", + "taiyiRegistryCoordinatorProxyAdminAddress": "0x2D382D860950736B7ee93B9c1176D71b675A6047", + "urc": "0x5b98C04a745c6ad5BCA9eC47b619F407cB3466fB", + "urcMinCollateral": 10000000000000000 + } + } \ No newline at end of file From 31a49e0b88ade1da792551d419cb0381d3e186c5 Mon Sep 17 00:00:00 2001 From: WillQ Date: Fri, 16 May 2025 16:48:47 +0800 Subject: [PATCH 2/2] update holesky output --- script/output/holesky/operatorSetId.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 script/output/holesky/operatorSetId.json diff --git a/script/output/holesky/operatorSetId.json b/script/output/holesky/operatorSetId.json new file mode 100644 index 0000000..5f464ca --- /dev/null +++ b/script/output/holesky/operatorSetId.json @@ -0,0 +1,6 @@ +{ + "operatorSetId": { + "underwriterOperatorSetId": 1, + "validatorOperatorSetId": 0 + } +} \ No newline at end of file