Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/eigenlayer-contracts
38 changes: 37 additions & 1 deletion src/RegistryCoordinator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ import {
IAllocationManager,
OperatorSet
} from "eigenlayer-contracts/src/contracts/interfaces/IAllocationManager.sol";
import {ISignatureUtilsMixin} from
"eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {ISemVerMixin} from "eigenlayer-contracts/src/contracts/interfaces/ISemVerMixin.sol";
import {SemVerMixin} from "eigenlayer-contracts/src/contracts/mixins/SemVerMixin.sol";
import {IBLSApkRegistry, IBLSApkRegistryTypes} from "./interfaces/IBLSApkRegistry.sol";
import {IStakeRegistry} from "./interfaces/IStakeRegistry.sol";
import {IIndexRegistry} from "./interfaces/IIndexRegistry.sol";
Expand Down Expand Up @@ -38,7 +42,8 @@ contract RegistryCoordinator is RegistryCoordinatorStorage {
IIndexRegistry _indexRegistry,
ISocketRegistry _socketRegistry,
IAllocationManager _allocationManager,
IPauserRegistry _pauserRegistry
IPauserRegistry _pauserRegistry,
string memory _version
)
RegistryCoordinatorStorage(
_serviceManager,
Expand All @@ -49,6 +54,15 @@ contract RegistryCoordinator is RegistryCoordinatorStorage {
_allocationManager,
_pauserRegistry
)
SlashingRegistryCoordinator(
_stakeRegistry,
_blsApkRegistry,
_indexRegistry,
_socketRegistry,
_allocationManager,
_pauserRegistry,
_version
)
{}

/**
Expand Down Expand Up @@ -300,4 +314,26 @@ contract RegistryCoordinator is RegistryCoordinatorStorage {
) external view returns (bool) {
return _isM2Quorum(quorumNumber);
}

/**
* @notice Returns the domain separator used for EIP-712 signatures
* @return The domain separator
*/
function domainSeparator() external view virtual override returns (bytes32) {
return _domainSeparatorV4();
}

/**
* @notice Returns the version of the contract
* @return The version string
*/
function version()
public
view
virtual
override(ISemVerMixin, SemVerMixin)
returns (string memory)
{
return "v0.0.1";
}
}
11 changes: 1 addition & 10 deletions src/RegistryCoordinatorStorage.sol
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,7 @@ abstract contract RegistryCoordinatorStorage is
ISocketRegistry _socketRegistry,
IAllocationManager _allocationManager,
IPauserRegistry _pauserRegistry
)
SlashingRegistryCoordinator(
_stakeRegistry,
_blsApkRegistry,
_indexRegistry,
_socketRegistry,
_allocationManager,
_pauserRegistry
)
{
) {
serviceManager = _serviceManager;
}

Expand Down
12 changes: 8 additions & 4 deletions src/ServiceManagerBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ pragma solidity ^0.8.27;
import {Initializable} from "@openzeppelin-upgrades/contracts/proxy/utils/Initializable.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IAVSDirectory} from "eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol";
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
import {IRewardsCoordinator} from
Expand All @@ -15,8 +18,9 @@ import {
} from "eigenlayer-contracts/src/contracts/interfaces/IAllocationManager.sol";
import {IPermissionController} from
"eigenlayer-contracts/src/contracts/interfaces/IPermissionController.sol";
import {IPermissionController} from
"eigenlayer-contracts/src/contracts/interfaces/IPermissionController.sol";
import {IPauserRegistry} from "eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol";
import {Pausable} from "eigenlayer-contracts/src/contracts/permissions/Pausable.sol";
import {OwnableUpgradeable} from "@openzeppelin-upgrades/contracts/access/OwnableUpgradeable.sol";

import {ServiceManagerBaseStorage} from "./ServiceManagerBaseStorage.sol";
import {IServiceManager} from "./interfaces/IServiceManager.sol";
Expand Down Expand Up @@ -222,7 +226,7 @@ abstract contract ServiceManagerBase is ServiceManagerBaseStorage {
*/
function registerOperatorToAVS(
address operator,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature
) public virtual onlyRegistryCoordinator {
_avsDirectory.registerOperatorToAVS(operator, operatorSignature);
}
Expand Down
26 changes: 20 additions & 6 deletions src/SlashingRegistryCoordinator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@
pragma solidity ^0.8.27;

import {IPauserRegistry} from "eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {ISignatureUtilsMixin} from
"eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
import {IAVSRegistrar} from "eigenlayer-contracts/src/contracts/interfaces/IAVSRegistrar.sol";
import {
IAllocationManager,
OperatorSet,
IAllocationManagerTypes
} from "eigenlayer-contracts/src/contracts/interfaces/IAllocationManager.sol";
import {ISemVerMixin} from "eigenlayer-contracts/src/contracts/interfaces/ISemVerMixin.sol";
import {AllocationManager} from "eigenlayer-contracts/src/contracts/core/AllocationManager.sol";
import {SemVerMixin} from "eigenlayer-contracts/src/contracts/mixins/SemVerMixin.sol";

import {IBLSApkRegistry, IBLSApkRegistryTypes} from "./interfaces/IBLSApkRegistry.sol";
import {IStakeRegistry, IStakeRegistryTypes} from "./interfaces/IStakeRegistry.sol";
Expand Down Expand Up @@ -40,12 +43,13 @@ import {SlashingRegistryCoordinatorStorage} from "./SlashingRegistryCoordinatorS
* @author Layr Labs, Inc.
*/
contract SlashingRegistryCoordinator is
EIP712,
SlashingRegistryCoordinatorStorage,
Initializable,
EIP712,
SemVerMixin,
Pausable,
OwnableUpgradeable,
SlashingRegistryCoordinatorStorage,
ISignatureUtils
ISignatureUtilsMixin
{
using BitmapUtils for *;
using BN254 for BN254.G1Point;
Expand Down Expand Up @@ -75,7 +79,8 @@ contract SlashingRegistryCoordinator is
IIndexRegistry _indexRegistry,
ISocketRegistry _socketRegistry,
IAllocationManager _allocationManager,
IPauserRegistry _pauserRegistry
IPauserRegistry _pauserRegistry,
string memory _version
)
SlashingRegistryCoordinatorStorage(
_stakeRegistry,
Expand All @@ -84,7 +89,8 @@ contract SlashingRegistryCoordinator is
_socketRegistry,
_allocationManager
)
EIP712("AVSRegistryCoordinator", "v0.0.1")
EIP712("AVSRegistryCoordinator", _version)
SemVerMixin(_version)
Pausable(_pauserRegistry)
{
_disableInitializers();
Expand Down Expand Up @@ -1124,4 +1130,12 @@ contract SlashingRegistryCoordinator is
) public view virtual returns (bool) {
return _avs == address(avs);
}

/**
* @notice Returns the domain separator used for EIP-712 signatures
* @return The domain separator
*/
function domainSeparator() external view virtual override returns (bytes32) {
return _domainSeparatorV4();
}
}
7 changes: 5 additions & 2 deletions src/interfaces/IECDSAStakeRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ pragma solidity ^0.8.27;
import {IERC1271Upgradeable} from
"@openzeppelin-upgrades/contracts/interfaces/IERC1271Upgradeable.sol";
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IDelegationManager} from
"eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";

Expand Down Expand Up @@ -139,7 +142,7 @@ interface IECDSAStakeRegistry is
* @param signingKey The signing key to add to the operator's history.
*/
function registerOperatorWithSignature(
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature,
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature,
address signingKey
) external;

Expand Down
11 changes: 7 additions & 4 deletions src/interfaces/IRegistryCoordinator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ import {
ISlashingRegistryCoordinatorEvents,
ISlashingRegistryCoordinatorTypes
} from "./ISlashingRegistryCoordinator.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IBLSApkRegistryTypes} from "./IBLSApkRegistry.sol";
import {IServiceManager} from "./IServiceManager.sol";

Expand Down Expand Up @@ -72,7 +75,7 @@ interface IRegistryCoordinator is
bytes memory quorumNumbers,
string memory socket,
IBLSApkRegistryTypes.PubkeyRegistrationParams memory params,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature
) external;

/**
Expand All @@ -94,8 +97,8 @@ interface IRegistryCoordinator is
string memory socket,
IBLSApkRegistryTypes.PubkeyRegistrationParams memory params,
OperatorKickParam[] memory operatorKickParams,
ISignatureUtils.SignatureWithSaltAndExpiry memory churnApproverSignature,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory churnApproverSignature,
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature
) external;

/**
Expand Down
5 changes: 4 additions & 1 deletion src/interfaces/IServiceManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ pragma solidity >=0.5.0;
import {IRewardsCoordinator} from
"eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol";
import {IServiceManagerUI} from "./IServiceManagerUI.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IAllocationManagerTypes} from
"eigenlayer-contracts/src/contracts/interfaces/IAllocationManager.sol";
import {IAllocationManager} from
Expand Down
7 changes: 5 additions & 2 deletions src/interfaces/IServiceManagerUI.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity >=0.5.0;

import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";

/**
* @title Minimal interface for a ServiceManager-type contract that AVS ServiceManager contracts must implement
Expand Down Expand Up @@ -32,7 +35,7 @@ interface IServiceManagerUI {
*/
function registerOperatorToAVS(
address operator,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature
) external;

/**
Expand Down
9 changes: 6 additions & 3 deletions src/unaudited/ECDSAServiceManagerBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ pragma solidity ^0.8.27;
import {OwnableUpgradeable} from "@openzeppelin-upgrades/contracts/access/OwnableUpgradeable.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IAVSDirectory} from "eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol";
import {IServiceManager} from "../interfaces/IServiceManager.sol";
import {IServiceManagerUI} from "../interfaces/IServiceManagerUI.sol";
Expand Down Expand Up @@ -127,7 +130,7 @@ abstract contract ECDSAServiceManagerBase is IServiceManager, OwnableUpgradeable
/// @inheritdoc IServiceManagerUI
function registerOperatorToAVS(
address operator,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature
) external virtual onlyStakeRegistry {
_registerOperatorToAVS(operator, operatorSignature);
}
Expand Down Expand Up @@ -170,7 +173,7 @@ abstract contract ECDSAServiceManagerBase is IServiceManager, OwnableUpgradeable
*/
function _registerOperatorToAVS(
address operator,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature
) internal virtual {
IAVSDirectory(avsDirectory).registerOperatorToAVS(operator, operatorSignature);
}
Expand Down
9 changes: 6 additions & 3 deletions src/unaudited/ECDSAStakeRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import {
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
import {IDelegationManager} from
"eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {IServiceManager} from "../interfaces/IServiceManager.sol";

import {OwnableUpgradeable} from "@openzeppelin-upgrades/contracts/access/OwnableUpgradeable.sol";
Expand Down Expand Up @@ -66,7 +69,7 @@ contract ECDSAStakeRegistry is

/// @inheritdoc IECDSAStakeRegistry
function registerOperatorWithSignature(
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature,
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature,
address signingKey
) external {
_registerOperatorWithSig(msg.sender, operatorSignature, signingKey);
Expand Down Expand Up @@ -315,7 +318,7 @@ contract ECDSAStakeRegistry is
/// @param signingKey The signing key to add to the operator's history
function _registerOperatorWithSig(
address operator,
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature,
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature,
address signingKey
) internal virtual {
if (_operatorRegistered[operator]) {
Expand Down
5 changes: 4 additions & 1 deletion src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {ECDSAStakeRegistryPermissioned} from "./ECDSAStakeRegistryPermissioned.sol";
import {IDelegationManager} from
"eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
Expand Down
7 changes: 5 additions & 2 deletions src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

import {ISignatureUtils} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol";
import {
ISignatureUtilsMixin,
ISignatureUtilsMixinTypes
} from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtilsMixin.sol";
import {ECDSAStakeRegistry} from "../ECDSAStakeRegistry.sol";
import {IDelegationManager} from
"eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
Expand Down Expand Up @@ -102,7 +105,7 @@ contract ECDSAStakeRegistryPermissioned is ECDSAStakeRegistry {
/// @inheritdoc ECDSAStakeRegistry
function _registerOperatorWithSig(
address _operator,
ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature,
ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory _operatorSignature,
address _operatorSigningKey
) internal override {
if (allowlistedOperators[_operator] != true) {
Expand Down
5 changes: 4 additions & 1 deletion test/harnesses/AVSDirectoryHarness.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@ import {IPauserRegistry} from "eigenlayer-contracts/src/contracts/interfaces/IPa

// wrapper around the AVSDirectory contract that exposes internal functionality, for unit testing
contract AVSDirectoryHarness is AVSDirectory {
constructor(IDelegationManager _dm, IPauserRegistry _pauser) AVSDirectory(_dm, _pauser) {}
constructor(
IDelegationManager _dm,
IPauserRegistry _pauser
) AVSDirectory(_dm, _pauser, "v0.0.1") {}
}
6 changes: 4 additions & 2 deletions test/harnesses/RegistryCoordinatorHarness.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ contract RegistryCoordinatorHarness is RegistryCoordinator, Test {
IIndexRegistry _indexRegistry,
ISocketRegistry _socketRegistry,
IAllocationManager _allocationManager,
IPauserRegistry _pauserRegistry
IPauserRegistry _pauserRegistry,
string memory _version
)
RegistryCoordinator(
_serviceManager,
Expand All @@ -25,7 +26,8 @@ contract RegistryCoordinatorHarness is RegistryCoordinator, Test {
_indexRegistry,
_socketRegistry,
_allocationManager,
_pauserRegistry
_pauserRegistry,
_version
)
{
_transferOwnership(msg.sender);
Expand Down
Loading
Loading