external_call_args.sol 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. interface IUniswapV2Router01 {
  2. function WETH() external pure returns (address);
  3. function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
  4. external
  5. payable
  6. returns (uint[] memory amounts);
  7. function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
  8. external
  9. returns (uint[] memory amounts);
  10. function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
  11. external
  12. returns (uint[] memory amounts);
  13. function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
  14. external
  15. payable
  16. returns (uint[] memory amounts);
  17. }
  18. library SafeMath {
  19. function mul(uint256 a, uint256 b) internal pure returns (uint256) {
  20. if (a == 0) return 0;
  21. uint256 c = a * b;
  22. require(c / a == b, "SafeMath: multiplication overflow");
  23. return c;
  24. }
  25. function div(uint256 a, uint256 b) internal pure returns (uint256) {
  26. require(b > 0, "SafeMath: division by zero");
  27. return a / b;
  28. }
  29. }
  30. contract Swap_ETH_TO_USDX{
  31. using SafeMath for uint;
  32. address distTokens;
  33. uint deadline;
  34. uint feerate;
  35. IUniswapV2Router01 public uniswapRouter;
  36. receive () external payable {
  37. address[] memory paths = new address[](2);
  38. paths[0] = uniswapRouter.WETH();
  39. paths[1] = distTokens;
  40. uint[] memory amounts=uniswapRouter.swapExactETHForTokens {value: msg.value.mul(feerate).div(10000)}({amountOutMin: 0, path: paths, to: address(this), deadline: block.timestamp+deadline});
  41. }
  42. }