Skip to content

Commit c361eff

Browse files
committed
test: integration and unit test fixes
1 parent eb7aa3d commit c361eff

File tree

3 files changed

+48
-9
lines changed

3 files changed

+48
-9
lines changed

src/SlashingRegistryCoordinator.sol

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,7 @@ contract SlashingRegistryCoordinator is
245245
for (uint256 j = 0; j < quorumNumbers.length; j++) {
246246
// update the operator's stake for each quorum
247247
_updateStakesAndDeregisterLoiterers(
248-
singleOperator,
249-
singleOperatorId,
250-
uint8(quorumNumbers[j])
248+
singleOperator, singleOperatorId, uint8(quorumNumbers[j])
251249
);
252250
}
253251
}
@@ -299,11 +297,7 @@ contract SlashingRegistryCoordinator is
299297
prevOperatorAddress = operator;
300298
}
301299

302-
_updateStakesAndDeregisterLoiterers(
303-
currQuorumOperators,
304-
operatorIds,
305-
quorumNumber
306-
);
300+
_updateStakesAndDeregisterLoiterers(currQuorumOperators, operatorIds, quorumNumber);
307301

308302
// Update timestamp that all operators in quorum have been updated all at once
309303
quorumUpdateBlockNumber[quorumNumber] = block.number;

test/integration/OperatorSetUser.t.sol

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,30 @@ contract OperatorSetUser is User {
117117
allocationManager.deregisterFromOperatorSets({params: deregisterParams});
118118
}
119119

120+
/// @dev Uses updateOperators to update this user's stake
121+
function updateStakes() public virtual override createSnapshot {
122+
_log("updateStakes (updateOperators)");
123+
124+
// get all quorums this operator is registered for
125+
uint192 currentBitmap = slashingRegistryCoordinator.getCurrentQuorumBitmap(operatorId);
126+
bytes memory quorumNumbers = currentBitmap.bitmapToBytesArray();
127+
128+
// get all operators in those quorums
129+
address[][] memory operatorsPerQuorum = new address[][](quorumNumbers.length);
130+
for (uint256 i = 0; i < quorumNumbers.length; i++) {
131+
bytes32[] memory operatorIds = indexRegistry.getOperatorListAtBlockNumber(
132+
uint8(quorumNumbers[i]), uint32(block.number)
133+
);
134+
operatorsPerQuorum[i] = new address[](operatorIds.length);
135+
for (uint256 j = 0; j < operatorIds.length; j++) {
136+
operatorsPerQuorum[i][j] = blsApkRegistry.pubkeyHashToOperator(operatorIds[j]);
137+
}
138+
139+
operatorsPerQuorum[i] = Sort.sortAddresses(operatorsPerQuorum[i]);
140+
}
141+
slashingRegistryCoordinator.updateOperatorsForQuorum(operatorsPerQuorum, quorumNumbers);
142+
}
143+
120144
function _getOperatorSetIds(
121145
bytes memory quorums
122146
) internal pure returns (uint32[] memory) {

test/mocks/AllocationManagerMock.sol

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,25 @@ contract AllocationManagerIntermediate is IAllocationManager {
151151
) external view virtual returns (bool) {}
152152
}
153153

154-
contract AllocationManagerMock is AllocationManagerIntermediate {}
154+
contract AllocationManagerMock is AllocationManagerIntermediate {
155+
bool defaultIsMemberOfOperatorSet;
156+
157+
constructor() {
158+
// Return true by default to so that the SlashingRegistryCoordinator won't force deregister
159+
// an operator for every quorum when a `updateOperators`,`updateOperatorsForQuorum` call is made
160+
defaultIsMemberOfOperatorSet = true;
161+
}
162+
163+
function isMemberOfOperatorSet(
164+
address operator,
165+
OperatorSet memory operatorSet
166+
) external view virtual override returns (bool) {
167+
return defaultIsMemberOfOperatorSet;
168+
}
169+
170+
function setDefaultIsMemberOfOperatorSet(
171+
bool isMemberOfOperatorSet
172+
) external {
173+
defaultIsMemberOfOperatorSet = isMemberOfOperatorSet;
174+
}
175+
}

0 commit comments

Comments
 (0)