This commit is contained in:
owen05
2021-09-06 08:54:55 +08:00
parent 454604da28
commit e9bc72ae9b

View File

@@ -557,58 +557,58 @@ contract DODOV2Proxy02 is IDODOV2Proxy01, ReentrancyGuard, InitializableOwnable
}
function mixSwap(
address fromToken,
address toToken,
uint256 fromTokenAmount,
uint256 minReturnAmount,
address[] memory mixAdapters,
address[] memory mixPairs,
address[] memory assetTo,
uint256 directions,
bool,
uint256 deadLine
) external override payable judgeExpired(deadLine) returns (uint256 returnAmount) {
require(mixPairs.length > 0, "DODOV2Proxy02: PAIRS_EMPTY");
require(mixPairs.length == mixAdapters.length, "DODOV2Proxy02: PAIR_ADAPTER_NOT_MATCH");
require(mixPairs.length == assetTo.length - 1, "DODOV2Proxy02: PAIR_ASSETTO_NOT_MATCH");
require(minReturnAmount > 0, "DODOV2Proxy02: RETURN_AMOUNT_ZERO");
// function mixSwap(
// address fromToken,
// address toToken,
// uint256 fromTokenAmount,
// uint256 minReturnAmount,
// address[] memory mixAdapters,
// address[] memory mixPairs,
// address[] memory assetTo,
// uint256 directions,
// bool,
// uint256 deadLine
// ) external override payable judgeExpired(deadLine) returns (uint256 returnAmount) {
// require(mixPairs.length > 0, "DODOV2Proxy02: PAIRS_EMPTY");
// require(mixPairs.length == mixAdapters.length, "DODOV2Proxy02: PAIR_ADAPTER_NOT_MATCH");
// require(mixPairs.length == assetTo.length - 1, "DODOV2Proxy02: PAIR_ASSETTO_NOT_MATCH");
// require(minReturnAmount > 0, "DODOV2Proxy02: RETURN_AMOUNT_ZERO");
address _fromToken = fromToken;
address _toToken = toToken;
uint256 _fromTokenAmount = fromTokenAmount;
// address _fromToken = fromToken;
// address _toToken = toToken;
// uint256 _fromTokenAmount = fromTokenAmount;
uint256 toTokenOriginBalance = IERC20(_toToken).universalBalanceOf(msg.sender);
// uint256 toTokenOriginBalance = IERC20(_toToken).universalBalanceOf(msg.sender);
_deposit(msg.sender, assetTo[0], _fromToken, _fromTokenAmount, _fromToken == _ETH_ADDRESS_);
// _deposit(msg.sender, assetTo[0], _fromToken, _fromTokenAmount, _fromToken == _ETH_ADDRESS_);
for (uint256 i = 0; i < mixPairs.length; i++) {
if (directions & 1 == 0) {
IDODOAdapter(mixAdapters[i]).sellBase(assetTo[i + 1],mixPairs[i], "");
} else {
IDODOAdapter(mixAdapters[i]).sellQuote(assetTo[i + 1],mixPairs[i], "");
}
directions = directions >> 1;
}
// for (uint256 i = 0; i < mixPairs.length; i++) {
// if (directions & 1 == 0) {
// IDODOAdapter(mixAdapters[i]).sellBase(assetTo[i + 1],mixPairs[i], "");
// } else {
// IDODOAdapter(mixAdapters[i]).sellQuote(assetTo[i + 1],mixPairs[i], "");
// }
// directions = directions >> 1;
// }
if(_toToken == _ETH_ADDRESS_) {
returnAmount = IWETH(_WETH_).balanceOf(address(this));
IWETH(_WETH_).withdraw(returnAmount);
msg.sender.transfer(returnAmount);
}else {
returnAmount = IERC20(_toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance);
}
// if(_toToken == _ETH_ADDRESS_) {
// returnAmount = IWETH(_WETH_).balanceOf(address(this));
// IWETH(_WETH_).withdraw(returnAmount);
// msg.sender.transfer(returnAmount);
// }else {
// returnAmount = IERC20(_toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance);
// }
require(returnAmount >= minReturnAmount, "DODOV2Proxy02: Return amount is not enough");
// require(returnAmount >= minReturnAmount, "DODOV2Proxy02: Return amount is not enough");
emit OrderHistory(
_fromToken,
_toToken,
msg.sender,
_fromTokenAmount,
returnAmount
);
}
// emit OrderHistory(
// _fromToken,
// _toToken,
// msg.sender,
// _fromTokenAmount,
// returnAmount
// );
// }
//============ CrowdPooling Functions (bid) ============
function bid(