route testing
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user