Skip to content

Conversation

@MozirDmitriy
Copy link

Motivation:

The deallocationQueue is indexed only by (operator, strategy), not by operatorSet, therefore:
with multiple sets (operatorSet) and/or multiple strategies in a single call, the same queue will attempt to clear itself multiple times;
after the first complete clearing, subsequent calls only read the length and exit immediately, but these are still unnecessary reads and cycles.

Modifications:

Switched modifyAllocations to take AllocateParams[] calldata params and added per-call tracking of seen strategies so clearDeallocationQueue(operator, strategy, type(uint16).max) is invoked at most once per (operator, strategy) per transaction instead of on every inner loop iteration.

Result:

For a batch modifyAllocations that touches the same strategy across multiple operator sets, the contract will do fewer reads and iterations over deallocationQueue[operator][strategy], reducing gas, while still guaranteeing that all completable pending deallocations for that strategy are cleared before applying any new allocation changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant