Skip to content

Commit

Permalink
start from a random subaccount
Browse files Browse the repository at this point in the history
  • Loading branch information
jayy04 committed Dec 22, 2023
1 parent 512950d commit f500089
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions protocol/x/clob/keeper/deleveraging.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,15 +240,17 @@ func (k Keeper) OffsetSubaccountPerpetualPosition(
!isDeleveragingLong,
)

for _, subaccountId := range subaccountsWithOpenPositions {
// Iterate at most `MaxDeleveragingSubaccountsToIterate` subaccounts.
if numSubaccountsIterated >= k.Flags.MaxDeleveragingSubaccountsToIterate {
break
}
// Start from a random subaccount.
pseudoRand := k.GetPseudoRand(ctx)
numSubaccounts := len(subaccountsWithOpenPositions)
indexOffset := pseudoRand.Intn(numSubaccounts)

if deltaQuantumsRemaining.Sign() == 0 {
break
}
// Iterate at most `MaxDeleveragingSubaccountsToIterate` subaccounts.
numSubaccountsToIterate := lib.Min(numSubaccounts, int(k.Flags.MaxDeleveragingSubaccountsToIterate))

for i := 0; i < numSubaccountsToIterate && deltaQuantumsRemaining.Sign() != 0; i++ {
index := (i + indexOffset) % numSubaccounts
subaccountId := subaccountsWithOpenPositions[index]

numSubaccountsIterated++
offsettingSubaccount := k.subaccountsKeeper.GetSubaccount(ctx, subaccountId)
Expand Down

0 comments on commit f500089

Please sign in to comment.