Skip to content

Commit

Permalink
chore(contracts/avs): remove minOpStake and maxOpCount (#444)
Browse files Browse the repository at this point in the history
Remove minOperatorStake and maxOperatorCount params from AVS contract. 
Operator set can be fully controlled via allow list. And minimum stake
enforcement will be done in halo.


task: none
  • Loading branch information
kevinhalliday authored Feb 28, 2024
1 parent 200b1c2 commit 6ffa6c7
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 82 deletions.
26 changes: 13 additions & 13 deletions contracts/.gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@ FeeOracleV1_Test:test_feeFor_succeeds() (gas: 38619)
FeeOracleV1_Test:test_setFee_nonOwner_reverts() (gas: 20220)
FeeOracleV1_Test:test_setFee_succeeds() (gas: 30824)
FeeOracleV1_Test:test_setFee_zero_reverts() (gas: 20212)
OmniAVS_admin_Test:test_deregisterOperator_byOwner_succeeds() (gas: 352370)
OmniAVS_admin_Test:test_deregisterOperator_whenPaused_reverts() (gas: 69717)
OmniAVS_admin_Test:test_pause_byOwner_succeeds() (gas: 44753)
OmniAVS_admin_Test:test_registerOperator_whenPaused_reverts() (gas: 70995)
OmniAVS_admin_Test:test_syncWithOmni_whenPaused_reverts() (gas: 45232)
OmniAVS_admin_Test:test_unpause_byOwner_succeeds() (gas: 35596)
OmniAVS_admin_Test:test_deregisterOperator_byOwner_succeeds() (gas: 334678)
OmniAVS_admin_Test:test_deregisterOperator_whenPaused_reverts() (gas: 69760)
OmniAVS_admin_Test:test_pause_byOwner_succeeds() (gas: 44752)
OmniAVS_admin_Test:test_registerOperator_whenPaused_reverts() (gas: 70949)
OmniAVS_admin_Test:test_syncWithOmni_whenPaused_reverts() (gas: 45209)
OmniAVS_admin_Test:test_unpause_byOwner_succeeds() (gas: 35560)
OmniAVS_allowlist_Test:test_addToAllowlist_notOwner_reverts() (gas: 42417)
OmniAVS_allowlist_Test:test_addToAllowlist_succeeds() (gas: 69720)
OmniAVS_allowlist_Test:test_registerOperator_notAllowed_reverts() (gas: 46173)
OmniAVS_allowlist_Test:test_registerOperator_succeeds() (gas: 683425)
OmniAVS_allowlist_Test:test_removeFromAllowlist_notOwner_reverts() (gas: 42364)
OmniAVS_allowlist_Test:test_removeFromAllowlist_succeeds() (gas: 109289)
OmniAVS_initialize_Test:test_initialize_defaultParams_succeeds() (gas: 3003146)
OmniAVS_syncWithOmni_Test:test_depositBeaconEth_succeeds() (gas: 449696)
OmniAVS_allowlist_Test:test_addToAllowlist_succeeds() (gas: 69742)
OmniAVS_allowlist_Test:test_registerOperator_notAllowed_reverts() (gas: 46150)
OmniAVS_allowlist_Test:test_registerOperator_succeeds() (gas: 665181)
OmniAVS_allowlist_Test:test_removeFromAllowlist_notOwner_reverts() (gas: 42408)
OmniAVS_allowlist_Test:test_removeFromAllowlist_succeeds() (gas: 109421)
OmniAVS_initialize_Test:test_initialize_defaultParams_succeeds() (gas: 2855328)
OmniAVS_syncWithOmni_Test:test_depositBeaconEth_succeeds() (gas: 435817)
OmniPortal_admin_Test:test_setFeeOracle_nonOwner_reverts() (gas: 20316)
OmniPortal_admin_Test:test_setFeeOracle_succeeds() (gas: 31829)
OmniPortal_admin_Test:test_setFeeOracle_zero_reverts() (gas: 20369)
Expand Down
16 changes: 0 additions & 16 deletions contracts/src/interfaces/IOmniAVSAdmin.sol
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,13 @@ interface IOmniAVSAdmin {
* @param owner Intiial contract owner
* @param omni Omni portal contract
* @param omniChainId Omni chain id
* @param minOperatorStake Minimum operator stake, not including delegations
* @param maxOperatorCount Maximum operator count
* @param allowlist Initial allowlist
* @param strategyParams List of accepted strategies and their multipliers
*/
function initialize(
address owner,
IOmniPortal omni,
uint64 omniChainId,
uint96 minOperatorStake,
uint32 maxOperatorCount,
address[] calldata allowlist,
IOmniAVS.StrategyParam[] calldata strategyParams
) external;
Expand All @@ -59,18 +55,6 @@ interface IOmniAVSAdmin {
*/
function setStrategyParams(IOmniAVS.StrategyParam[] calldata params) external;

/**
* @notice Set the minimum operator stake.
* @param stake The minimum operator stake, not including delegations
*/
function setMinOperatorStake(uint96 stake) external;

/**
* @notice Set the maximum operator count.
* @param count The maximum operator count
*/
function setMaxOperatorCount(uint32 count) external;

/**
* @notice Set the xcall gas limits.
* @param base The base xcall gas limit
Expand Down
24 changes: 0 additions & 24 deletions contracts/src/protocol/OmniAVS.sol
Original file line number Diff line number Diff line change
Expand Up @@ -51,24 +51,18 @@ contract OmniAVS is
* @param owner_ Intiial contract owner
* @param omni_ Omni portal contract
* @param omniChainId_ Omni chain id
* @param minOperatorStake_ Minimum operator stake, not including delegations
* @param maxOperatorCount_ Maximum operator count
* @param allowlist_ Initial allowlist
* @param strategyParams_ List of accepted strategies and their multipliers
*/
function initialize(
address owner_,
IOmniPortal omni_,
uint64 omniChainId_,
uint96 minOperatorStake_,
uint32 maxOperatorCount_,
address[] calldata allowlist_,
StrategyParam[] calldata strategyParams_
) external initializer {
omni = omni_;
omniChainId = omniChainId_;
minOperatorStake = minOperatorStake_;
maxOperatorCount = maxOperatorCount_;

_transferOwnership(owner_);
_setStrategyParams(strategyParams_);
Expand Down Expand Up @@ -96,8 +90,6 @@ contract OmniAVS is
require(msg.sender == operator, "OmniAVS: only operator");
require(_allowlist[operator], "OmniAVS: not allowed");
require(!_isOperator(operator), "OmniAVS: already an operator"); // we could let _avsDirectory.regsiterOperatorToAVS handle this, they do check
require(_operators.length < maxOperatorCount, "OmniAVS: max operators reached");
require(_getSelfDelegations(operator) >= minOperatorStake, "OmniAVS: min stake not met"); // TODO: should this be _getTotalDelegations?

_avsDirectory.registerOperatorToAVS(operator, operatorSignature);
_addOperator(operator);
Expand Down Expand Up @@ -251,22 +243,6 @@ contract OmniAVS is
_setStrategyParams(params);
}

/**
* @notice Set the minimum operator stake.
* @param stake The minimum operator stake, not including delegations
*/
function setMinOperatorStake(uint96 stake) external onlyOwner {
minOperatorStake = stake;
}

/**
* @notice Set the maximum operator count.
* @param count The maximum operator count
*/
function setMaxOperatorCount(uint32 count) external onlyOwner {
maxOperatorCount = count;
}

/**
* @notice Set the xcall gas limits.
* @param base The base xcall gas limit
Expand Down
6 changes: 0 additions & 6 deletions contracts/src/protocol/OmniAVSStorage.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ abstract contract OmniAVSStorage {
/// @notice Set of operators that are allowed to register
mapping(address => bool) internal _allowlist;

/// @notice Maximum number of operators that can be registered
uint32 public maxOperatorCount;

/// @notice Omni chain id, used to make xcalls to the Omni chain
uint64 public omniChainId;

Expand All @@ -26,9 +23,6 @@ abstract contract OmniAVSStorage {
/// @notice OmniPortal.xcall base gas limit in syncWithOmni()
uint64 public xcallBaseGasLimit = 75_000;

/// @notice Minimum stake required for an operator to register, not including delegations
uint96 public minOperatorStake;

/// @notice Omni portal contract, used to make xcalls to the Omni chain
IOmniPortal public omni;
}
2 changes: 1 addition & 1 deletion contracts/test/avs/OmniAVS_admin.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ contract OmniAVS_admin_Test is Base {
// register operator
_registerAsOperator(operator);
_addToAllowlist(operator);
_depositBeaconEth(operator, minOperatorStake);
_depositBeaconEth(operator, 1 ether);
_registerOperatorWithAVS(operator);

// assert operator is registered
Expand Down
2 changes: 1 addition & 1 deletion contracts/test/avs/OmniAVS_allowlist.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ contract OmniAVS_allowlist_Test is Base {
address operator = _operator(0);

_addToAllowlist(operator);
_depositIntoSupportedStrategy(operator, minOperatorStake);
_depositIntoSupportedStrategy(operator, 1 ether);
_registerAsOperator(operator);
_registerOperatorWithAVS(operator);

Expand Down
8 changes: 0 additions & 8 deletions contracts/test/avs/OmniAVS_initialize.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ contract OmniAVS_initialize_Test is Base {
address owner;
IOmniPortal omni;
uint64 omniChainId;
uint96 minOperatorStake;
uint32 maxOperatorCount;
address[] allowlist;
IOmniAVS.StrategyParam[] strategyParams;
}
Expand All @@ -36,8 +34,6 @@ contract OmniAVS_initialize_Test is Base {
owner: omniAVSOwner,
omni: IOmniPortal(address(portal)),
omniChainId: omniChainId,
minOperatorStake: minOperatorStake,
maxOperatorCount: maxOperatorCount,
allowlist: new address[](0),
strategyParams: _localStrategyParams()
});
Expand All @@ -59,8 +55,6 @@ contract OmniAVS_initialize_Test is Base {
params.owner,
params.omni,
params.omniChainId,
params.minOperatorStake,
params.maxOperatorCount,
params.allowlist,
params.strategyParams
)
Expand All @@ -78,8 +72,6 @@ contract OmniAVS_initialize_Test is Base {
assertEq(omniAVS.owner(), params.owner);
assertEq(address(omniAVS.omni()), address(params.omni));
assertEq(omniAVS.omniChainId(), params.omniChainId);
assertEq(omniAVS.minOperatorStake(), params.minOperatorStake);
assertEq(omniAVS.maxOperatorCount(), params.maxOperatorCount);

IOmniAVS.StrategyParam[] memory strategyParams = omniAVS.strategyParams();
assertEq(strategyParams.length, params.strategyParams.length);
Expand Down
6 changes: 3 additions & 3 deletions contracts/test/avs/OmniAVS_syncWithOmni.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ contract OmniAVS_syncWithOmni_Test is Base {
uint96 initialOperatorStake_,
uint96 initialDelegatorStake_
) public {
numOperators = uint32(bound(numOperators_, 2, maxOperatorCount));
numOperators = uint32(bound(numOperators_, 2, 10));
numDelegatorsPerOp = uint32(bound(numDelegatorsPerOp_, 1, 30));

initialOperatorStake = uint96(bound(initialOperatorStake_, minOperatorStake, 100 ether));
initialOperatorStake = uint96(bound(initialOperatorStake_, 1 ether, 100 ether));
initialDelegatorStake = uint96(bound(initialDelegatorStake_, 500 gwei, 5 ether));

// round both initialOperatorStake and initialDelegatorStake to the nearest GWEI
Expand Down Expand Up @@ -347,7 +347,7 @@ contract OmniAVS_syncWithOmni_Test is Base {
/// @dev Unit test for beacon eth deposit
function test_depositBeaconEth_succeeds() public {
address operator = _operator(0);
uint96 amount = minOperatorStake;
uint96 amount = 1 ether;

_registerAsOperator(operator);
_addToAllowlist(operator);
Expand Down
11 changes: 1 addition & 10 deletions contracts/test/avs/common/Fixtures.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ contract Fixtures is EigenLayerFixtures {
address proxyAdminOwner = multisig;
address omniAVSOwner = multisig;

uint32 maxOperatorCount = 10;
uint96 minOperatorStake = 1 ether;
uint64 omniChainId = 111;

ProxyAdmin proxyAdmin;
Expand Down Expand Up @@ -70,14 +68,7 @@ contract Fixtures is EigenLayerFixtures {
ITransparentUpgradeableProxy(proxy),
impl,
abi.encodeWithSelector(
OmniAVS.initialize.selector,
omniAVSOwner,
portal,
omniChainId,
minOperatorStake,
maxOperatorCount,
allowlist,
_localStrategyParams()
OmniAVS.initialize.selector, omniAVSOwner, portal, omniChainId, allowlist, _localStrategyParams()
)
);
vm.stopPrank();
Expand Down

0 comments on commit 6ffa6c7

Please sign in to comment.