gpt4 book ai didi

blockchain - 为什么在 uniswap 上尝试交换代币时会出现错误 Error : Transaction reverted without a reason string.?

转载 作者:行者123 更新时间:2023-12-05 02:32:46 31 4
gpt4 key购买 nike

我正尝试在 uniswap unsing hardhat 的主网 fork 上交换代币,但我收到此错误:错误:交易在没有原因字符串的情况下恢复。我真的不知道为什么。

这是我的交换函数:

    function swap(address router, address _tokenIn, address _tokenOut, uint _amount) public {
IERC20(router).approve(router, _amount);
address[] memory path;
path = new address[](2);
path[0] = _tokenIn;
path[1] = _tokenOut;
uint deadline = block.timestamp + 300;
IUniswapV2Router(router).swapExactTokensForTokens(_amount, 1, path, address(this), deadline);
}

这是一个简单的函数,它应该可以工作。我是这样调用它的:

await arb.swap(
uniAddress,
wethAddress,
daiAddress,
ethers.utils.parseEther('0.5')
);

谢谢解答!

另外,这里是我打电话的地址,只是为了验证它们是否正确,但我很确定它们是:

const wethAddress = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
const daiAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
const uniAddress = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D';

最佳答案

Weth 与其他 token 不同,您不能使用 swapTokensForTokens。我们必须改用 swapEthForTokens 函数,并且您必须单独声明数据选项。

所以在你的情况下我们需要做:

实体代码:

function swapEth(address router, address _tokenIn, address _tokenOut, uint _amount) public {
IERC20(router).approve(router, _amount);
address[] memory path;
path = new address[](2);
path[0] = _tokenIn;
path[1] = _tokenOut;
uint deadline = block.timestamp + 300;
IUniswapV2Router(router). swapExactETHForTokens(... parameters);
}

JS代码

const dataOption = { gasPrice: ethers.getDefaultProvider().getGasPrice(), gasLimit: 310000, value: ethers.utils.parseEther('0.5') }

await arb.swap(`enter code here`
uniAddress,
wethAddress,
daiAddress,
ethers.utils.parseEther('0.5'), // this parameter should be remove from the function declaration as well as in this Javascript
dataOption
);

关于blockchain - 为什么在 uniswap 上尝试交换代币时会出现错误 Error : Transaction reverted without a reason string.?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71152833/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com