我是个新手,已经学了6个月了。几个月来,我一直试图解决这个问题,但仍然没有希望。
我正在努力学习如何通过使用我的合同来增加Uniswap的流动性。问题是,当我试图从Uniswap调用addLiquidityETH与混炼的合同时,它总是失败,并显示以下错误。
气体估计错误与以下信息(见下文)。事务执行可能会失败。你想强行发送吗?执行恢复: UniswapV2Library: INSUFFICIENT_AMOUNT { "originalError":{“代码”:3,“数据”:“消息”:“执行还原: UniswapV2Library: INSUFFICIENT_AMOUNT”} }`。
有人能帮我理解我的代码出了什么问题吗?
pragma solidity ^0.6.6;
interface IUniswap {
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IERC20 {
function approve(address spender, uint256 amount) external returns (bool);
}
contract TestAddLiquidity {
address internal constant UNISWAP_ROUTER_ADDRESS = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Ropsten
IUniswap public uniswap;
constructor() public {
uniswap = IUniswap(UNISWAP_ROUTER_ADDRESS);
}
function addLiq(address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline) external payable {
IERC20(token).approve(UNISWAP_ROUTER_ADDRESS, amountTokenDesired);
uniswap.addLiquidityETH(token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline);
}
}如果你能给我一些建议,我会很感激的。
谢谢
发布于 2021-01-20 06:24:22
对于可能面临同样问题的其他人来说(我花了相当长的时间来解决这个问题)。
我面临的问题是,我在调用函数addLiquidityETH()时没有将以太发送到Uniswap智能合同,因此必须将{value: msg.value}添加到调用中:
uniswap.addLiquidityETH{ value: msg.value }(
token,
amountTokenDesired,
amountTokenMin,
amountETHMin,
msg.sender,
deadline
);https://ethereum.stackexchange.com/questions/91926
复制相似问题