fix: Fix bug in MerkleDistributor that doesn't decrement remainingAmount for merkle windows correctly #193
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I discovered this by while working on this PR for the exact test case I've included. The problem arises when all of the claims for different window indices are for the same token and recipient. If this
ifstatement here is not triggered, thenbatchedAmountaccumulates the amount for each claim. It only gets decremented from a window'sremainingAmountonce the if statement is entered, which is either:If the reward token and account do not change, then its possible that
batchedAmount > window.remainingAmount.We should be decrementing remainingAmount for each claim that executes, this seems intuitive.
The reason why I think we've never run into this is because we've never tried claiming in production across multiple windows. I don't think we've even used multiple windows in the past