gas optimize

This commit is contained in:
mingda
2020-07-09 17:59:25 +08:00
parent 3c0b1e99e1
commit 65015c0bdb
2 changed files with 19 additions and 10 deletions

View File

@@ -68,11 +68,9 @@ contract DODOEthProxy is ReentrancyGuard {
require(msg.value == ethAmount, "ETH_AMOUNT_NOT_MATCH");
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
require(DODO != address(0), "DODO_NOT_EXIST");
receiveTokenAmount = IDODO(DODO).querySellBaseToken(ethAmount);
require(receiveTokenAmount >= minReceiveTokenAmount, "RECEIVE_NOT_ENOUGH");
IWETH(_WETH_).deposit{value: ethAmount}();
IWETH(_WETH_).approve(DODO, ethAmount);
IDODO(DODO).sellBaseToken(ethAmount, minReceiveTokenAmount);
receiveTokenAmount = IDODO(DODO).sellBaseToken(ethAmount, minReceiveTokenAmount);
_transferOut(quoteTokenAddress, msg.sender, receiveTokenAmount);
emit ProxySellEth(msg.sender, quoteTokenAddress, ethAmount, receiveTokenAmount);
return receiveTokenAmount;
@@ -86,7 +84,6 @@ contract DODOEthProxy is ReentrancyGuard {
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
require(DODO != address(0), "DODO_NOT_EXIST");
payTokenAmount = IDODO(DODO).queryBuyBaseToken(ethAmount);
require(payTokenAmount <= maxPayTokenAmount, "PAY_TOO_MUCH");
_transferIn(quoteTokenAddress, msg.sender, payTokenAmount);
IERC20(quoteTokenAddress).approve(DODO, payTokenAmount);
IDODO(DODO).buyBaseToken(ethAmount, maxPayTokenAmount);

View File

@@ -70,9 +70,15 @@ contract Trader is Storage, Pricing, Settlement {
_quoteTokenTransferOut(_MAINTAINER_, mtFeeQuote);
// update TARGET
_TARGET_QUOTE_TOKEN_AMOUNT_ = newQuoteTarget;
_TARGET_BASE_TOKEN_AMOUNT_ = newBaseTarget;
_R_STATUS_ = newRStatus;
if (_TARGET_QUOTE_TOKEN_AMOUNT_ != newQuoteTarget) {
_TARGET_QUOTE_TOKEN_AMOUNT_ = newQuoteTarget;
}
if (_TARGET_BASE_TOKEN_AMOUNT_ != newBaseTarget) {
_TARGET_BASE_TOKEN_AMOUNT_ = newBaseTarget;
}
if (_R_STATUS_ != newRStatus) {
_R_STATUS_ = newRStatus;
}
_donateQuoteToken(lpFeeQuote);
emit SellBaseToken(msg.sender, amount, receiveQuote);
@@ -105,9 +111,15 @@ contract Trader is Storage, Pricing, Settlement {
_baseTokenTransferOut(_MAINTAINER_, mtFeeBase);
// update TARGET
_TARGET_QUOTE_TOKEN_AMOUNT_ = newQuoteTarget;
_TARGET_BASE_TOKEN_AMOUNT_ = newBaseTarget;
_R_STATUS_ = newRStatus;
if (_TARGET_QUOTE_TOKEN_AMOUNT_ != newQuoteTarget) {
_TARGET_QUOTE_TOKEN_AMOUNT_ = newQuoteTarget;
}
if (_TARGET_BASE_TOKEN_AMOUNT_ != newBaseTarget) {
_TARGET_BASE_TOKEN_AMOUNT_ = newBaseTarget;
}
if (_R_STATUS_ != newRStatus) {
_R_STATUS_ = newRStatus;
}
_donateBaseToken(lpFeeBase);
emit BuyBaseToken(msg.sender, amount, payQuote);