如何解决Solidity Uniswap - 合约执行过程中遇到错误 [execution reverted
我需要从 nodejs 应用程序获取 txn 参数以进行合约,然后将代币换成 ETH,
所以solidity函数正在获取参数(tokenAddress、amoountIn、amountOutMin、deadline) 然后它在rinkeby“0xdEcefC912c686b9c03597D706Cb17fc23506545c”上调用“swapExactTokensForETH”到这个合约, 截止时间是 30 分钟,但它在 1-2 秒内失败
代币应该从合约的余额中交换(不是从发送者的余额中)
请提供正确的solidity函数
合约余额中有 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 举报,一经查实,本站将立刻删除。