Skip to content

Commit 2246b7d

Browse files
committed
fix: wire up stake registry to call add and rm strategies for op set
1 parent 34456b3 commit 2246b7d

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/StakeRegistry.sol

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,16 @@ contract StakeRegistry is StakeRegistryStorage {
254254
StrategyParams[] memory _strategyParams
255255
) public virtual onlyCoordinatorOwner quorumExists(quorumNumber) {
256256
_addStrategyParams(quorumNumber, _strategyParams);
257+
258+
uint256 numStratsToAdd = _strategyParams.length;
259+
260+
if (isOperatorSetQuorum(quorumNumber)){
261+
IStrategy[] memory strategiesToAdd = new IStrategy[](numStratsToAdd);
262+
for (uint256 i = 0; i < numStratsToAdd; i++) {
263+
strategiesToAdd[i] = _strategyParams[i].strategy;
264+
}
265+
serviceManager.addStrategyToOperatorSet(quorumNumber, strategiesToAdd);
266+
}
257267
}
258268

259269
/**
@@ -270,17 +280,25 @@ contract StakeRegistry is StakeRegistryStorage {
270280

271281
StrategyParams[] storage _strategyParams = strategyParams[quorumNumber];
272282
IStrategy[] storage _strategiesPerQuorum = strategiesPerQuorum[quorumNumber];
283+
IStrategy[] memory _strategiesToRemove = new IStrategy[](toRemoveLength);
273284

274285
for (uint256 i = 0; i < toRemoveLength; i++) {
286+
_strategiesToRemove[i]=_strategyParams[indicesToRemove[i]].strategy;
275287
emit StrategyRemovedFromQuorum(quorumNumber, _strategyParams[indicesToRemove[i]].strategy);
276288
emit StrategyMultiplierUpdated(quorumNumber, _strategyParams[indicesToRemove[i]].strategy, 0);
277289

290+
291+
278292
// Replace index to remove with the last item in the list, then pop the last item
279293
_strategyParams[indicesToRemove[i]] = _strategyParams[_strategyParams.length - 1];
280294
_strategyParams.pop();
281295
_strategiesPerQuorum[indicesToRemove[i]] = _strategiesPerQuorum[_strategiesPerQuorum.length - 1];
282296
_strategiesPerQuorum.pop();
283297
}
298+
299+
if (isOperatorSetQuorum(quorumNumber)){
300+
serviceManager.removeStrategiesFromOperatorSet(quorumNumber, _strategiesToRemove);
301+
}
284302
}
285303

286304
/**
@@ -560,7 +578,7 @@ contract StakeRegistry is StakeRegistryStorage {
560578
* @param quorumNumber The quorum number to check
561579
* @return True if the quorum is an operator set quorum
562580
*/
563-
function isOperatorSetQuorum(uint8 quorumNumber) external view returns (bool) {
581+
function isOperatorSetQuorum(uint8 quorumNumber) public view returns (bool) {
564582
bool isM2 = IRegistryCoordinator(registryCoordinator).isM2Quorum(quorumNumber);
565583
bool isOperatorSet = IRegistryCoordinator(registryCoordinator).isOperatorSetAVS();
566584
return isOperatorSet && !isM2;

0 commit comments

Comments
 (0)