Audit Fix: prevent depositor or LP from creating unfair spreads #344
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.
Due to rounding in favor of the maker when trading against an LP or LO position
small amounts of liquidity can unfairly benefit the maker at the expense of the taker.
Unfortunately the obvious solutions of either preventing small deposits, or stopping takers from trading against these positions either do not work or create problematic DOS vectors.
Instead, we have switched our rounding logic to favor the taker. This also helps mitigate a number of existing DOS/dusting vectors. In order to protect makers, we also add a check as part of swap to prevent takers from swapping very small amounts where rounding would work significantly in their favor.