Skip to content

Commit b21bb6c

Browse files
committed
refactor: handle operator set dereg
1 parent 603e95e commit b21bb6c

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

src/RegistryCoordinator.sol

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -555,31 +555,40 @@ contract RegistryCoordinator is
555555
) {
556556
// If using operator sets, check for non-M2 quorums
557557
if (isUsingOperatorSets()) {
558-
uint32[] memory nonM2OperatorSetIds = new uint32[](quorumNumbers.length);
559-
uint256 numNonM2Quorums;
560-
561-
// Check each quorum's stake type
562-
for (uint256 i = 0; i < quorumNumbers.length; i++) {
563-
uint8 quorumNumber = uint8(quorumNumbers[i]);
564-
if (isM2Quorum[quorumNumber]) {
565-
nonM2OperatorSetIds[numNonM2Quorums++] = quorumNumber;
566-
}
567-
}
568-
569-
// If any non-M2 quorums found, deregister from AVS
570-
if (numNonM2Quorums > 0) {
571-
// Resize array to exact size needed
572-
assembly {
573-
mstore(nonM2OperatorSetIds, numNonM2Quorums)
574-
}
575-
serviceManager.deregisterOperatorFromOperatorSets(operator, nonM2OperatorSetIds);
576-
}
558+
_handleOperatorSetDeregistration(operator, quorumNumbers);
577559
}
578560

579561
_deregisterOperator({operator: operator, quorumNumbers: quorumNumbers});
580562
}
581563
}
582564

565+
/**
566+
* @notice Helper function to handle operator set deregistration for non-M2 quorums
567+
* @param operator The operator to deregister
568+
* @param quorumNumbers The quorum numbers to check
569+
*/
570+
function _handleOperatorSetDeregistration(address operator, bytes memory quorumNumbers) internal {
571+
uint32[] memory nonM2OperatorSetIds = new uint32[](quorumNumbers.length);
572+
uint256 numNonM2Quorums;
573+
574+
// Check each quorum's stake type
575+
for (uint256 i = 0; i < quorumNumbers.length; i++) {
576+
uint8 quorumNumber = uint8(quorumNumbers[i]);
577+
if (isM2Quorum[quorumNumber]) {
578+
nonM2OperatorSetIds[numNonM2Quorums++] = quorumNumber;
579+
}
580+
}
581+
582+
// If any non-M2 quorums found, deregister from AVS
583+
if (numNonM2Quorums > 0) {
584+
// Resize array to exact size needed
585+
assembly {
586+
mstore(nonM2OperatorSetIds, numNonM2Quorums)
587+
}
588+
serviceManager.deregisterOperatorFromOperatorSets(operator, nonM2OperatorSetIds);
589+
}
590+
}
591+
583592
/**
584593
*
585594
* EXTERNAL FUNCTIONS - OWNER

0 commit comments

Comments
 (0)