Solidity Uniswap - 合约执行过程中遇到错误 [execution reverted

问题描述

我需要从 nodejs 应用程序获取 txn 参数以进行合约,然后将代币换成 ETH,

所以solidity函数正在获取参数(tokenAddress、amoountIn、amountOutMin、deadline) 然后它在rinkeby“0xdEcefC912c686b9c03597D706Cb17fc23506545c”上调用“swapExactTokensForETH”到这个合约, 截止时间是 30 分钟,但它在 1-2 秒内失败

代币应该从合约的余额中交换(不是从发送者的余额中)

请提供正确的solidity函数

提前致谢

enter image description here

合约余额中有 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 (将#修改为@)