问题描述 1,最开始我一直用“swapExactETHForTokens”,直到有一天用这个方法报错,然后看别人用“swapExactETHForTokensSupportingFeeOnTransferTokens”,我也改了,然后就一直没问题,我对这个函数干嘛的其实并不懂,只是粗略的认为这个函数可能兼容性更好。 2,我现在有个需求,要通过合约去uniswap的V2合约买卖代币,代码如下,很简单,2个方法除了调用uniswap的方法不同,其余都一样,swap1报错(execution reverted,就这个,没有具体的错误内容),swap2没问题。 3,我用etherjs直接调用uniswap的swapExactETHForTokensSupportingFeeOnTransferTokens是没问题的,但是就是用合约去调用不行。 求大佬给解答下,谢谢
function swap1 (
uint256 amountOutMin,
address tokenAddress,
uint deadline
)public payable returns(uint256){
address[] memory path;
path=new address[](2);
path[0]=WETH;
path[1]=tokenAddress;
address to=address(this);
IUniswapV2Router(UNISWAP_V2_ROUTER).swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(amountOutMin,path,to,deadline);
return 1;
}
function swap11 (
uint256 amountOutMin,
address tokenAddress,
uint deadline
)public payable returns(uint256){
address[] memory path;
path=new address[](2);
path[0]=WETH;
path[1]=tokenAddress;
address to=address(this);
IUniswapV2Router(UNISWAP_V2_ROUTER).swapExactETHForTokens{value: msg.value}(amountOutMin,path,to,deadline);
return 1;
}
https://goerli.etherscan.io/tx/0x5ec6dc7bd6b88b4759bb9db672c54efd6f6c3e70f5ac7b2aab042f22eb9c2416 这是swap1方法的结果,是失败的
https://goerli.etherscan.io/tx/0x1a2dce5f86aea944914c4bde30e1f530ff1338cd24b70b45c7d86ddc175421c8 这是swap2方法的结果,是成功的