V1Proxy02 - more protection
This commit is contained in:
@@ -18,7 +18,6 @@ import {IUni} from "./intf/IUni.sol";
|
||||
import {IDODOApprove} from "../intf/IDODOApprove.sol";
|
||||
import {IDODOV1Proxy02} from "./intf/IDODOV1Proxy02.sol";
|
||||
import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
|
||||
import {IDODOIncentive} from "./DODOIncentive.sol";
|
||||
|
||||
/**
|
||||
* @title DODOV1Proxy02
|
||||
@@ -33,7 +32,6 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
// ============ Storage ============
|
||||
|
||||
address constant _ETH_ADDRESS_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
|
||||
address public immutable _DODO_INCENTIVE_;
|
||||
address public immutable _DODO_APPROVE_;
|
||||
address public immutable _DODO_SELL_HELPER_;
|
||||
address public immutable _WETH_;
|
||||
@@ -63,14 +61,12 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
address dodoApporve,
|
||||
address dodoSellHelper,
|
||||
address weth,
|
||||
address chiToken,
|
||||
address dodoIncentive
|
||||
address chiToken
|
||||
) public {
|
||||
_DODO_APPROVE_ = dodoApporve;
|
||||
_DODO_SELL_HELPER_ = dodoSellHelper;
|
||||
_WETH_ = weth;
|
||||
_CHI_TOKEN_ = chiToken;
|
||||
_DODO_INCENTIVE_ = dodoIncentive;
|
||||
}
|
||||
|
||||
fallback() external payable {}
|
||||
@@ -97,7 +93,6 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
uint256 minReturnAmount,
|
||||
address[] memory dodoPairs,
|
||||
uint256 directions,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external override payable judgeExpired(deadLine) returns (uint256 returnAmount) {
|
||||
require(dodoPairs.length > 0, "DODOV1Proxy02: PAIRS_EMPTY");
|
||||
@@ -155,10 +150,6 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
if(gasleft() > 27710 + gasTokenBurn * 6080)
|
||||
IChi(_CHI_TOKEN_).freeUpTo(gasTokenBurn);
|
||||
}
|
||||
|
||||
if(isIncentive) {
|
||||
IDODOIncentive(_DODO_INCENTIVE_).triggerIncentive(fromToken,toToken,msg.sender);
|
||||
}
|
||||
}
|
||||
|
||||
function externalSwap(
|
||||
@@ -169,11 +160,11 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
uint256 fromTokenAmount,
|
||||
uint256 minReturnAmount,
|
||||
bytes memory callDataConcat,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external override payable judgeExpired(deadLine) returns (uint256 returnAmount) {
|
||||
require(minReturnAmount > 0, "DODOV1Proxy02: RETURN_AMOUNT_ZERO");
|
||||
|
||||
require(fromToken != _CHI_TOKEN_, "DODOV1Proxy02: NOT_SUPPORT_SELL_CHI");
|
||||
|
||||
address _fromToken = fromToken;
|
||||
address _toToken = toToken;
|
||||
|
||||
@@ -208,10 +199,6 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
if(gasleft() > 27710 + _gasExternalReturn * 6080)
|
||||
IChi(_CHI_TOKEN_).freeUpTo(_gasExternalReturn);
|
||||
}
|
||||
|
||||
if(isIncentive) {
|
||||
IDODOIncentive(_DODO_INCENTIVE_).triggerIncentive(_fromToken,_toToken,msg.sender);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -223,12 +210,12 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
address[] memory mixPairs,
|
||||
uint256[] memory directions,
|
||||
address[] memory portionPath,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external override payable judgeExpired(deadLine) returns (uint256 returnAmount) {
|
||||
require(mixPairs.length == directions.length, "DODOV1Proxy02: PARAMS_LENGTH_NOT_MATCH");
|
||||
require(mixPairs.length > 0, "DODOV1Proxy02: PAIRS_EMPTY");
|
||||
require(minReturnAmount > 0, "DODOV1Proxy02: RETURN_AMOUNT_ZERO");
|
||||
require(fromToken != _CHI_TOKEN_, "DODOV1Proxy02: NOT_SUPPORT_SELL_CHI");
|
||||
|
||||
uint256 toTokenOriginBalance = IERC20(toToken).universalBalanceOf(msg.sender);
|
||||
|
||||
@@ -282,9 +269,5 @@ contract DODOV1Proxy02 is IDODOV1Proxy02, InitializableOwnable {
|
||||
if(gasleft() > 27710 + _gasExternalReturn * 6080)
|
||||
IChi(_CHI_TOKEN_).freeUpTo(_gasExternalReturn);
|
||||
}
|
||||
|
||||
if(isIncentive) {
|
||||
IDODOIncentive(_DODO_INCENTIVE_).triggerIncentive(fromToken,toToken,msg.sender);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ interface IDODOV1Proxy02 {
|
||||
uint256 minReturnAmount,
|
||||
address[] memory dodoPairs,
|
||||
uint256 directions,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external payable returns (uint256 returnAmount);
|
||||
|
||||
@@ -28,7 +27,6 @@ interface IDODOV1Proxy02 {
|
||||
uint256 fromTokenAmount,
|
||||
uint256 minReturnAmount,
|
||||
bytes memory callDataConcat,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external payable returns (uint256 returnAmount);
|
||||
|
||||
@@ -40,7 +38,6 @@ interface IDODOV1Proxy02 {
|
||||
address[] memory mixPairs,
|
||||
uint256[] memory directions,
|
||||
address[] memory portionPath,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external payable returns (uint256 returnAmount);
|
||||
}
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
pragma solidity 0.6.9;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import {IDODOV1Proxy02} from "./IDODOV1Proxy02.sol";
|
||||
|
||||
interface IDODOV2Proxy01 is IDODOV1Proxy02 {
|
||||
interface IDODOV2Proxy01 {
|
||||
function dodoSwapV2ETHToToken(
|
||||
address toToken,
|
||||
uint256 minReturnAmount,
|
||||
@@ -116,4 +115,39 @@ interface IDODOV2Proxy01 is IDODOV1Proxy02 {
|
||||
uint256 deadLine
|
||||
) external payable returns(uint256, uint256);
|
||||
|
||||
function dodoSwapV1(
|
||||
address fromToken,
|
||||
address toToken,
|
||||
uint256 fromTokenAmount,
|
||||
uint256 minReturnAmount,
|
||||
address[] memory dodoPairs,
|
||||
uint256 directions,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external payable returns (uint256 returnAmount);
|
||||
|
||||
function externalSwap(
|
||||
address fromToken,
|
||||
address toToken,
|
||||
address approveTarget,
|
||||
address to,
|
||||
uint256 fromTokenAmount,
|
||||
uint256 minReturnAmount,
|
||||
bytes memory callDataConcat,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external payable returns (uint256 returnAmount);
|
||||
|
||||
function mixSwapV1(
|
||||
address fromToken,
|
||||
address toToken,
|
||||
uint256 fromTokenAmount,
|
||||
uint256 minReturnAmount,
|
||||
address[] memory mixPairs,
|
||||
uint256[] memory directions,
|
||||
address[] memory portionPath,
|
||||
bool isIncentive,
|
||||
uint256 deadLine
|
||||
) external payable returns (uint256 returnAmount);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user