Added unit test for USDC + rounding error (ERC20 tokens with less than 18 decimals) #198
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.
Motivation
In #197 the rounding issue with partial fills was solved, with the limitation that the sale price is only allowed to have a certain amount of decimal places for the maths to safely check out. At the time of authoring that PR, it was still unclear how ERC20 tokens with less than 18 decimals are affected by the limitations laid out in #197.
Solution
This PR adds an additional unit test with a mocked USDC ERC20 token, to prove the eligibility of the solution as well as the further limitations.
Result
Prices for orders paid in ERC20 tokens with 6 decimals (like USDC) must not have more than two decimals, when used together with seaport-js' fees feature and partial fills (i.e.
1.23
per NFT is ok,1.234
may break for certain fee-basisPoints values).When not using fees, this limitation doesn't apply, i.e. you can use the full range of six decimals safely.