fix(settlement): adds sanity check at end of settlement #278
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.
MUST MERGE chore/fmt FIRST.
Description
_settlement
function to make sure thenet
balance of every token in thewarm
array has a positive value.This is not the most efficient function because it does three loops: loop over to get payments, loop over to do payments, loop over all tokens to make sure they were settled.
This can be all done in a single loop, however, this introduces a possible attack vector via a malicious token that executes arbitrary logic in the
transferFrom
which manipulates the settlement status of some of the other tokens. In a single loop, the check for the net balance would happen in betweentransferFrom
. If there was a way to take tokens out of the contract after they have been transferred in, then there would be a way to get a negative net balance even after the sanity check after the transfer from. That is pretty unlikely though.