问题描述
我需要从 nodejs 应用程序获取 txn 参数以进行合约,然后将代币换成 ETH,
所以solidity函数正在获取参数(tokenAddress、amoountIn、amountOutMin、deadline) 然后它在rinkeby“0xdEcefC912c686b9c03597D706Cb17fc23506545c”上调用“swapExactTokensForETH”到这个合约, 截止时间是 30 分钟,但它在 1-2 秒内失败
代币应该从合约的余额中交换(不是从发送者的余额中)
合约余额中有 14 个 UNI,应该换成 ETH
稳定性:
pragma solidity ^0.7.0;
interface IUniswap {
function swapExactTokensForETH( uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline ) external returns (uint[] memory amounts);
function WETH() external pure returns(address);
}
interface IERC20 {
function transferFrom(address sender,address recipient,uint256 amount) external returns (bool);
function approve(address spender,uint256 amount) external returns (bool);
}
contract Swap {
IUniswap uniswap;
constructor(address _uniswap){
uniswap = IUniswap(_uniswap);
}
function swapTokensForETH( address token,uint amountIn,uint deadline)external{
address[] memory path = new address[](2);
path[0] = token;
path[1] = uniswap.WETH();
IERC20(token).approve(address(this),amountIn);
uniswap.swapExactTokensForETH( amountIn,amountOutMin,path,address(this),deadline );
}
}
从 remix.ethereum.org 在合约地址“0x1b4c0a8AC1738391e145CAC66492f1716D93b93C”发送交易
发送交易(ETH 为 10 UNI,最小输出为 0): "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",10000000000000000000,1612465457
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)