diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-11-14 07:09:18 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-11-14 07:09:18 +0800 |
commit | f936363440bce82f544dc50b41056e09c5bcc9fd (patch) | |
tree | 686888cc386768b2180d986eac2ba4ca8c641a6c /packages/0x.js/src/utils | |
parent | 315e4015de71c0b829ffd20e991108084bfc7bda (diff) | |
download | dexon-0x-contracts-f936363440bce82f544dc50b41056e09c5bcc9fd.tar.gz dexon-0x-contracts-f936363440bce82f544dc50b41056e09c5bcc9fd.tar.zst dexon-0x-contracts-f936363440bce82f544dc50b41056e09c5bcc9fd.zip |
Add validation for rounding error
Diffstat (limited to 'packages/0x.js/src/utils')
-rw-r--r-- | packages/0x.js/src/utils/order_state_utils.ts | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/packages/0x.js/src/utils/order_state_utils.ts b/packages/0x.js/src/utils/order_state_utils.ts index cc4933d39..21d842a77 100644 --- a/packages/0x.js/src/utils/order_state_utils.ts +++ b/packages/0x.js/src/utils/order_state_utils.ts @@ -117,6 +117,13 @@ export class OrderStateUtils { throw new Error(ExchangeContractErrs.InsufficientMakerFeeAllowance); } } + const minimumFillableTakerTokenAmountWithingNoRoundingErrorRange = signedOrder.takerTokenAmount + .times(1000) + .dividedBy(signedOrder.makerTokenAmount); + if (orderRelevantState.remainingFillableTakerTokenAmount + .lessThan(minimumFillableTakerTokenAmountWithingNoRoundingErrorRange)) { + throw new Error(ExchangeContractErrs.OrderFillRoundingError); + } // TODO Add linear function solver when maker token is ZRX #badass // Return the max amount that's fillable } |