route testing

This commit is contained in:
owen05
2020-11-10 18:37:51 +08:00
parent d965ce1409
commit aadf5eb844
9 changed files with 802 additions and 202 deletions

View File

@@ -11,7 +11,6 @@ import {IERC20} from "../intf/IERC20.sol";
import {SafeERC20} from "../lib/SafeERC20.sol";
import {Ownable} from "../lib/Ownable.sol";
contract SmartApprove is Ownable {
using SafeERC20 for IERC20;
address public smartSwap;
@@ -20,9 +19,6 @@ contract SmartApprove is Ownable {
smartSwap = _smartSwap;
}
event Test1(uint256 amount);
function claimTokens(
IERC20 token,
address who,
@@ -30,7 +26,6 @@ contract SmartApprove is Ownable {
uint256 amount
) external {
require(msg.sender == smartSwap, "Not SmartSwap Address, Access restricted");
emit Test1(amount);
// token.safeTransferFrom(who, dest, amount);
token.safeTransferFrom(who, dest, amount);
}
}

View File

@@ -30,7 +30,7 @@ contract SmartSwap is Ownable {
IERC20 indexed toToken,
address indexed sender,
uint256 fromAmount,
uint256 toAmount
uint256 returnAmount
);
event ExternalRecord(address indexed to, address indexed sender);
@@ -39,7 +39,6 @@ contract SmartSwap is Ownable {
smartApprove = ISmartApprove(_smartApprove);
}
function dodoSwap(
IERC20 fromToken,
IERC20 toToken,
@@ -50,37 +49,35 @@ contract SmartSwap is Ownable {
uint256[] memory starts,
uint256[] memory gasLimitsAndValues
) public payable returns (uint256 returnAmount) {
require(minReturnAmount > 0, "haha hihi Min return should be bigger then 0.");
require(minReturnAmount > 0, "Min return should be bigger then 0.");
require(callPairs.length > 0, "pairs should exists.");
// if (fromToken != ETH_ADDRESS) {
// // smartApprove.claimTokens(fromToken, msg.sender, address(this), fromTokenAmount);
// }
if (fromToken != ETH_ADDRESS) {
smartApprove.claimTokens(fromToken, msg.sender, address(this), fromTokenAmount);
}
// for (uint256 i = 0; i < callPairs.length; i++) {
// require(callPairs[i] != address(smartApprove), "Access denied");
// require(
// callPairs[i].externalCall(
// gasLimitsAndValues[i] & ((1 << 128) - 1),
// callDataConcat,
// starts[i],
// starts[i + 1] - starts[i],
// gasLimitsAndValues[i] >> 128
// )
// );
// }
for (uint256 i = 0; i < callPairs.length; i++) {
require(callPairs[i] != address(smartApprove), "Access denied");
require(
callPairs[i].externalCall(
gasLimitsAndValues[i] & ((1 << 128) - 1),
callDataConcat,
starts[i],
starts[i + 1] - starts[i],
gasLimitsAndValues[i] >> 128
),"Swap Transaction Error!"
);
}
// // Return back all unswapped
// fromToken.universalTransfer(msg.sender, fromToken.universalBalanceOf(address(this)));
fromToken.universalTransfer(msg.sender, fromToken.universalBalanceOf(address(this)));
returnAmount = toToken.universalBalanceOf(address(this));
// returnAmount = toToken.universalBalanceOf(address(this));
// require(returnAmount >= minReturnAmount, "Return amount is not enough");
// toToken.universalTransfer(msg.sender, returnAmount);
emit Swapped(fromToken, toToken, msg.sender, fromTokenAmount, fromTokenAmount);
// emit Swapped(fromToken, toToken, msg.sender, fromTokenAmount, returnAmount);
require(returnAmount >= minReturnAmount, "Return amount is not enough");
toToken.universalTransfer(msg.sender, returnAmount);
emit Swapped(fromToken, toToken, msg.sender, fromTokenAmount, returnAmount);
}
//TODO:change
function externalSwap(
IERC20 fromToken,
IERC20 toToken,