From 0cf2e9e5164041a4e30ee9bd33da6ceda345f3ac Mon Sep 17 00:00:00 2001 From: mingda Date: Fri, 6 Nov 2020 19:33:12 +0800 Subject: [PATCH] check query buy --- contracts/DODOVendorMachine/impl/DVMTrader.sol | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contracts/DODOVendorMachine/impl/DVMTrader.sol b/contracts/DODOVendorMachine/impl/DVMTrader.sol index 657581f..6981e1e 100644 --- a/contracts/DODOVendorMachine/impl/DVMTrader.sol +++ b/contracts/DODOVendorMachine/impl/DVMTrader.sol @@ -150,6 +150,8 @@ contract DVMTrader is DVMStorage { DecimalMath.ONE.sub(mtFeeRate).sub(lpFeeRate) ); (uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve(); + require(baseReserve > validReceiveBaseAmount, "DODO_BASE_BALANCE_NOT_ENOUGH"); + uint256 B0 = calculateBase0(baseReserve, quoteReserve); uint256 B2 = baseReserve.sub(validReceiveBaseAmount); payQuoteAmount = DODOMath._GeneralIntegrate(B0, baseReserve, B2, _I_, _K_); @@ -168,6 +170,8 @@ contract DVMTrader is DVMStorage { DecimalMath.ONE.sub(mtFeeRate).sub(lpFeeRate) ); (uint256 baseReserve, uint256 quoteReserve) = _VAULT_.getVaultReserve(); + require(quoteReserve > validReceiveQuoteAmount, "DODO_QUOTE_BALANCE_NOT_ENOUGH"); + uint256 B0 = calculateBase0(baseReserve, quoteReserve); uint256 fairAmount = DecimalMath.divFloor(validReceiveQuoteAmount, _I_); payBaseAmount = DODOMath._SolveQuadraticFunctionForTrade(