Skip to content

Commit

Permalink
chore: update SDK contracts
Browse files Browse the repository at this point in the history
  • Loading branch information
MegaRedHand committed Jan 28, 2025
1 parent b527bf2 commit 5564687
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 126 deletions.
31 changes: 1 addition & 30 deletions contracts/script/DeployMockAvs.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ import "forge-std/console.sol";

// forge script script/DeployMockAvs.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --etherscan-api-key $ETHERSCAN_API_KEY --broadcast --verify
contract DeployMockAvs is DeployMockAvsRegistries {
MockAvsServiceManager public mockAvsServiceManager;
MockAvsServiceManager public mockAvsServiceManagerImplementation;

EmptyContract public emptyContract;
ProxyAdmin public mockAvsProxyAdmin;

Expand All @@ -21,38 +18,12 @@ contract DeployMockAvs is DeployMockAvsRegistries {

vm.startBroadcast();

// Deploy proxy admin for ability to upgrade proxy contracts
// Note: can't deploy ProxyAdmin in setUp function, b/c its owner is not set correctly if so.
// not sure why...
emptyContract = new EmptyContract();
mockAvsProxyAdmin = new ProxyAdmin();
mockAvsServiceManager = MockAvsServiceManager(
address(new TransparentUpgradeableProxy(address(emptyContract), address(mockAvsProxyAdmin), ""))
);
MockAvsContracts memory mockAvsContracts = _deploymockAvsRegistryContracts(
eigenlayerContracts, addressConfig, mockAvsServiceManager, mockAvsServiceManagerImplementation
);
MockAvsContracts memory mockAvsContracts = _deploymockAvsRegistryContracts(eigenlayerContracts, addressConfig);

console.log("HERE16");
console.logAddress(address(mockAvsContracts.registryCoordinator));
console.logAddress(address(eigenlayerContracts.avsDirectory));
console.logAddress(address(eigenlayerContracts.rewardsCoordinator));
console.logAddress(address(eigenlayerContracts.allocationManager));
mockAvsServiceManagerImplementation = new MockAvsServiceManager(
mockAvsContracts.registryCoordinator,
eigenlayerContracts.avsDirectory,
eigenlayerContracts.rewardsCoordinator,
eigenlayerContracts.allocationManager
);

console.log("HERE17");

mockAvsProxyAdmin.upgradeAndCall(
TransparentUpgradeableProxy(payable(address(mockAvsServiceManager))),
address(mockAvsServiceManagerImplementation),
abi.encodeWithSelector(mockAvsServiceManager.initialize.selector, addressConfig.communityMultisig)
);
require(Ownable(address(mockAvsServiceManager)).owner() != address(0), "Owner uninitialized");

if (block.chainid == 31337 || block.chainid == 1337) {
_writeContractsToRegistry(contractsRegistry, eigenlayerContracts, mockAvsContracts);
Expand Down
76 changes: 37 additions & 39 deletions contracts/script/DeployMockAvsRegistries.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,20 @@ import "eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol";
import {IDelegationManager} from "eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
import {IStrategyManager, IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol";
import "eigenlayer-contracts/src/test/mocks/EmptyContract.sol";
import "eigenlayer-middleware/src/RegistryCoordinator.sol" as blsregcoord;
import {IServiceManager} from "eigenlayer-middleware/src/interfaces/IServiceManager.sol";
import {
IBLSApkRegistry,
IIndexRegistry,
IStakeRegistry,
StakeType
} from "eigenlayer-middleware/src/RegistryCoordinator.sol";
import {BLSApkRegistry} from "eigenlayer-middleware/src/BLSApkRegistry.sol";
import {IndexRegistry} from "eigenlayer-middleware/src/IndexRegistry.sol";
import {StakeRegistry} from "eigenlayer-middleware/src/StakeRegistry.sol";
ISlashingRegistryCoordinator,
ISlashingRegistryCoordinatorTypes
} from "eigenlayer-middleware/src/interfaces/ISlashingRegistryCoordinator.sol";
import {SlashingRegistryCoordinator} from "eigenlayer-middleware/src/SlashingRegistryCoordinator.sol";
import {BLSApkRegistry, IBLSApkRegistry} from "eigenlayer-middleware/src/BLSApkRegistry.sol";
import {IndexRegistry, IIndexRegistry} from "eigenlayer-middleware/src/IndexRegistry.sol";
import {StakeRegistry, IStakeRegistry, IStakeRegistryTypes} from "eigenlayer-middleware/src/StakeRegistry.sol";
import {SocketRegistry, ISocketRegistry, IRegistryCoordinator} from "eigenlayer-middleware/src/SocketRegistry.sol";
import {OperatorStateRetriever} from "eigenlayer-middleware/src/OperatorStateRetriever.sol";
import {MockAvsContracts} from "./parsers/MockAvsContractsParser.sol";
import {EigenlayerContracts, EigenlayerContractsParser} from "./parsers/EigenlayerContractsParser.sol";
import {ConfigsReadWriter} from "./parsers/ConfigsReadWriter.sol";
import {MockAvsServiceManager} from "../src/MockAvsServiceManager.sol";
import {ContractsRegistry} from "../src/ContractsRegistry.sol";
import "forge-std/Script.sol";
import "forge-std/console.sol";
Expand All @@ -36,13 +34,15 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac
IIndexRegistry indexRegistryImplementation;
IStakeRegistry stakeRegistry;
IStakeRegistry stakeRegistryImplementation;
ISocketRegistry socketRegistry;
ISocketRegistry socketRegistryImplementation;
}

struct DeployedContracts {
ProxyAdmin proxyAdmin;
PauserRegistry pauserReg;
blsregcoord.RegistryCoordinator coordinator;
blsregcoord.IRegistryCoordinator coordinatorImplementation;
SlashingRegistryCoordinator coordinator;
ISlashingRegistryCoordinator coordinatorImplementation;
OperatorStateRetriever stateRetriever;
EmptyContract emptyContract;
}
Expand All @@ -67,20 +67,18 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac

function _deploymockAvsRegistryContracts(
EigenlayerContracts memory eigenlayerContracts,
MockAvsOpsAddresses memory addressConfig,
MockAvsServiceManager manager,
MockAvsServiceManager managerImpl
MockAvsOpsAddresses memory addressConfig
) internal returns (MockAvsContracts memory) {
_deployPauserRegistry(addressConfig);
_deployProxies();
deployed.stateRetriever = new OperatorStateRetriever();
_deployAndUpgradeImplementations(eigenlayerContracts, manager);
_deployAndUpgradeImplementations(eigenlayerContracts);
_initializeRegistryCoordinator(addressConfig);

require(Ownable(address(deployed.coordinator)).owner() != address(0), "Owner uninitialized");
_writeDeploymentOutput(manager, managerImpl);
_writeDeploymentOutput();

return MockAvsContracts(manager, deployed.coordinator, deployed.stateRetriever);
return MockAvsContracts(deployed.coordinator, deployed.stateRetriever);
}

function _deployPauserRegistry(MockAvsOpsAddresses memory config) internal {
Expand All @@ -97,7 +95,7 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac
if (address(deployed.proxyAdmin) == address(0)) {
deployed.proxyAdmin = new ProxyAdmin();
}
deployed.coordinator = blsregcoord.RegistryCoordinator(_deployProxy());
deployed.coordinator = SlashingRegistryCoordinator(_deployProxy());
registries.blsApkRegistry = IBLSApkRegistry(_deployProxy());
registries.indexRegistry = IIndexRegistry(_deployProxy());
registries.stakeRegistry = IStakeRegistry(_deployProxy());
Expand All @@ -108,25 +106,28 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac
address(new TransparentUpgradeableProxy(address(deployed.emptyContract), address(deployed.proxyAdmin), ""));
}

function _deployAndUpgradeImplementations(EigenlayerContracts memory eigen, MockAvsServiceManager manager)
internal
{
function _deployAndUpgradeImplementations(EigenlayerContracts memory eigen) internal {
registries.blsApkRegistryImplementation = new BLSApkRegistry(deployed.coordinator);
_upgradeProxy(address(registries.blsApkRegistry), address(registries.blsApkRegistryImplementation));

registries.indexRegistryImplementation = new IndexRegistry(deployed.coordinator);
_upgradeProxy(address(registries.indexRegistry), address(registries.indexRegistryImplementation));

registries.stakeRegistryImplementation =
new StakeRegistry(deployed.coordinator, eigen.delegationManager, eigen.avsDirectory, manager);
registries.stakeRegistryImplementation = new StakeRegistry(
deployed.coordinator, eigen.delegationManager, eigen.avsDirectory, eigen.allocationManager
);
_upgradeProxy(address(registries.stakeRegistry), address(registries.stakeRegistryImplementation));

deployed.coordinatorImplementation = new blsregcoord.RegistryCoordinator(
blsregcoord.IServiceManager(address(manager)),
blsregcoord.IStakeRegistry(address(registries.stakeRegistry)),
blsregcoord.IBLSApkRegistry(address(registries.blsApkRegistry)),
blsregcoord.IIndexRegistry(address(registries.indexRegistry)),
eigen.avsDirectory,
registries.socketRegistryImplementation =
new SocketRegistry(IRegistryCoordinator(address(deployed.coordinator)));
_upgradeProxy(address(registries.socketRegistry), address(registries.socketRegistryImplementation));

deployed.coordinatorImplementation = new SlashingRegistryCoordinator(
registries.stakeRegistry,
registries.blsApkRegistry,
registries.indexRegistry,
registries.socketRegistry,
eigen.allocationManager,
deployed.pauserReg
);
}
Expand All @@ -137,11 +138,11 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac

function _initializeRegistryCoordinator(MockAvsOpsAddresses memory config) internal {
uint32 numQuorums = 0;
blsregcoord.RegistryCoordinator.OperatorSetParam[] memory params =
new blsregcoord.RegistryCoordinator.OperatorSetParam[](numQuorums);
SlashingRegistryCoordinator.OperatorSetParam[] memory params =
new SlashingRegistryCoordinator.OperatorSetParam[](numQuorums);

for (uint32 i = 0; i < numQuorums; i++) {
params[i] = blsregcoord.IRegistryCoordinator.OperatorSetParam({
params[i] = ISlashingRegistryCoordinatorTypes.OperatorSetParam({
maxOperatorCount: 10000,
kickBIPsOfOperatorStake: 15000,
kickBIPsOfTotalStake: 100
Expand All @@ -150,14 +151,14 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac

uint96[] memory minStake = new uint96[](numQuorums);
IStakeRegistry.StrategyParams[][] memory strategyParams = new IStakeRegistry.StrategyParams[][](numQuorums);
StakeType[] memory stakeTypes = new StakeType[](numQuorums);
IStakeRegistryTypes.StakeType[] memory stakeTypes = new IStakeRegistryTypes.StakeType[](numQuorums);
uint32[] memory lookAheadPeriods = new uint32[](numQuorums);

deployed.proxyAdmin.upgradeAndCall(
TransparentUpgradeableProxy(payable(address(deployed.coordinator))),
address(deployed.coordinatorImplementation),
abi.encodeWithSelector(
blsregcoord.RegistryCoordinator.initialize.selector,
SlashingRegistryCoordinator.initialize.selector,
config.communityMultisig,
config.churner,
config.ejector,
Expand All @@ -171,13 +172,11 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac
);
}

function _writeDeploymentOutput(MockAvsServiceManager manager, MockAvsServiceManager managerImpl) internal {
function _writeDeploymentOutput() internal {
string memory parent = "parent object";
string memory addresses = "addresses";

vm.serializeAddress(addresses, "proxyAdmin", address(deployed.proxyAdmin));
vm.serializeAddress(addresses, "mockAvsServiceManager", address(manager));
vm.serializeAddress(addresses, "mockAvsServiceManagerImplementation", address(managerImpl));
vm.serializeAddress(addresses, "registryCoordinator", address(deployed.coordinator));
vm.serializeAddress(addresses, "registryCoordinatorImplementation", address(deployed.coordinatorImplementation));
string memory output =
Expand All @@ -191,7 +190,6 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac
EigenlayerContracts memory eigen,
MockAvsContracts memory avs
) internal {
registry.registerContract("mockAvsServiceManager", address(avs.mockAvsServiceManager));
registry.registerContract("mockAvsRegistryCoordinator", address(avs.registryCoordinator));
registry.registerContract("mockAvsOperatorStateRetriever", address(avs.operatorStateRetriever));
registry.registerContract("delegationManager", address(eigen.delegationManager));
Expand Down
16 changes: 8 additions & 8 deletions contracts/script/DeployTokensStrategiesCreateQuorums.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ import {IStrategyManager, IStrategy} from "eigenlayer-contracts/src/contracts/in
import {StrategyBaseTVLLimits} from "eigenlayer-contracts/src/contracts/strategies/StrategyBaseTVLLimits.sol";

import "eigenlayer-middleware/src/interfaces/IStakeRegistry.sol";
import "eigenlayer-middleware/src/RegistryCoordinator.sol" as regcoord;
import {StakeType} from "eigenlayer-middleware/src/interfaces/IStakeRegistry.sol";
import {ISlashingRegistryCoordinatorTypes} from "eigenlayer-middleware/src/interfaces/ISlashingRegistryCoordinator.sol";
import {SlashingRegistryCoordinator} from "eigenlayer-middleware/src/SlashingRegistryCoordinator.sol";
import {IStakeRegistryTypes} from "eigenlayer-middleware/src/interfaces/IStakeRegistry.sol";

import {MockERC20, IERC20} from "../src/MockERC20.sol";
import "./parsers/EigenlayerContractsParser.sol";
Expand Down Expand Up @@ -96,20 +97,19 @@ contract DeployTokensStrategiesCreateQuorums is Script, EigenlayerContractsParse
return (IERC20(mockERC20), erc20MockStrategy);
}

function _createQuorum(regcoord.RegistryCoordinator mockAvsRegCoord, IStrategy strat) internal {
function _createQuorum(SlashingRegistryCoordinator mockAvsRegCoord, IStrategy strat) internal {
// for each quorum to setup, we need to define
// quorumsOperatorSetParams, quorumsMinimumStake, and quorumsStrategyParams
regcoord.RegistryCoordinator.OperatorSetParam memory quorumOperatorSetParams = regcoord
.IRegistryCoordinator
SlashingRegistryCoordinator.OperatorSetParam memory quorumOperatorSetParams = ISlashingRegistryCoordinatorTypes
.OperatorSetParam({
// hardcoded for now
maxOperatorCount: 10000,
kickBIPsOfOperatorStake: 15000,
kickBIPsOfTotalStake: 100
});
uint96 quorumMinimumStake = 0;
IStakeRegistry.StrategyParams[] memory quorumStrategyParams = new IStakeRegistry.StrategyParams[](1);
quorumStrategyParams[0] = IStakeRegistry.StrategyParams({
IStakeRegistryTypes.StrategyParams[] memory quorumStrategyParams = new IStakeRegistryTypes.StrategyParams[](1);
quorumStrategyParams[0] = IStakeRegistryTypes.StrategyParams({
strategy: strat,
// setting this to 1 ether since the divisor is also 1 ether
// therefore this allows an operator to register with even just 1 token
Expand All @@ -118,7 +118,7 @@ contract DeployTokensStrategiesCreateQuorums is Script, EigenlayerContractsParse
multiplier: 1 ether
});

regcoord.RegistryCoordinator(address(mockAvsRegCoord)).createTotalDelegatedStakeQuorum(
SlashingRegistryCoordinator(address(mockAvsRegCoord)).createTotalDelegatedStakeQuorum(
quorumOperatorSetParams, quorumMinimumStake, quorumStrategyParams
);
}
Expand Down
18 changes: 5 additions & 13 deletions contracts/script/parsers/MockAvsContractsParser.sol
Original file line number Diff line number Diff line change
@@ -1,38 +1,30 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.12;

import {RegistryCoordinator} from "eigenlayer-middleware/src/RegistryCoordinator.sol";
import {SlashingRegistryCoordinator} from "eigenlayer-middleware/src/SlashingRegistryCoordinator.sol";
import {OperatorStateRetriever} from "eigenlayer-middleware/src/OperatorStateRetriever.sol";

import "../../src/MockAvsServiceManager.sol";

import {ConfigsReadWriter} from "./ConfigsReadWriter.sol";
import "forge-std/StdJson.sol";

struct MockAvsContracts {
MockAvsServiceManager mockAvsServiceManager;
RegistryCoordinator registryCoordinator;
SlashingRegistryCoordinator registryCoordinator;
OperatorStateRetriever operatorStateRetriever;
}

contract MockAvsContractsParser is ConfigsReadWriter {
function _loadMockAvsDeployedContracts() internal view returns (MockAvsContracts memory) {
// Eigenlayer contracts
string memory mockAvsDeployedContracts = readOutput("mockavs_deployment_output");
MockAvsServiceManager mockAvsServiceManager =
MockAvsServiceManager(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.mockAvsServiceManager"));
require(
address(mockAvsServiceManager) != address(0), "MockAvsContractsParser: mockAvsServiceManager address is 0"
);
RegistryCoordinator registryCoordinator =
RegistryCoordinator(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.registryCoordinator"));
SlashingRegistryCoordinator registryCoordinator =
SlashingRegistryCoordinator(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.registryCoordinator"));
require(address(registryCoordinator) != address(0), "MockAvsContractsParser: registryCoordinator address is 0");
OperatorStateRetriever operatorStateRetriever =
OperatorStateRetriever(stdJson.readAddress(mockAvsDeployedContracts, ".addresses.operatorStateRetriever"));
require(
address(operatorStateRetriever) != address(0), "MockAvsContractsParser: operatorStateRetriever address is 0"
);

return MockAvsContracts(mockAvsServiceManager, registryCoordinator, operatorStateRetriever);
return MockAvsContracts(registryCoordinator, operatorStateRetriever);
}
}
36 changes: 0 additions & 36 deletions contracts/src/MockAvsServiceManager.sol

This file was deleted.

0 comments on commit 5564687

Please sign in to comment.