我可以使用router02函数在uniswap上交换令牌:
route02.swapExactTokensForTokens(amtIn, amtOut,
[t1.address, t2.address], addr, deadline(), {gasLimit: 4000000});但是如何直接调用uniswap的低级交换函数呢?以下是我的代码,但它不起作用。在此函数调用之前,我已经向uni_v2_address发送了令牌。
const ethers = require('ethers');
const uni = new ethers.Contract(UNI_V2_ADDRESS, IUniswapV2Pair.abi, wallet);
let amt0out = BigInt(1) * BigInt(10**16);
let amt1out = BigInt(0);
//do swap
let tx = await uni.swap(amt0out, amt1out,
addr, 0x0, {gasLimit: 4000000});发布于 2021-07-19 07:17:28
删除第四个参数"data“,如下所示:
let tx = await uni.swap(amt0out, amt1out, addr, {gasLimit: 4000000});在第四个"data“参数中传递任何内容都会启动闪存交换,乐观地将令牌传输到addr,并尝试在addr上调用名为"uniswapV2Call”的函数,如下所述:
https://stackoverflow.com/questions/66939219
复制相似问题