我正在使用ethers.js。我正在尝试创建一个过滤器并侦听PairCreated事件。
索引参数为token0, token1。
我正在尝试使用WETH和自定义令牌,并对它们进行排序,以便将它们传递给过滤器。
var token0, token1; // init Vars
const WETH = "0xd0A1E359811322d97991E03f863a0C30C2cF029C" // WETH Kovan Network
const tokenA = "0xe12A7BE0e1637a9ab3A137E0Aa114318aCb58BCd" // Token on my Kovan Fork
if (bigNumber(WETH) < bigNumber(tokenA)) {
token0 = tokenA; token1 = tokenB;
console.log('token0 is WETH');
} else {
token0 = tokenB; token1 = tokenA;
console.log('token0 is tokenA');
}
const filter = eth.factory.filters.PairCreated(
token0, // address indexed token0
null, // address indexed token1
null, // address pair
null // uint
); // Filter for Pair Created
function bigNumber(data) { return ethers.BigNumber.from(data); }上面的代码有时会使token0正确,但我如何才能使它正确排序呢?
发布于 2022-04-07 00:07:04
改变:
if (bigNumber(WETH) < bigNumber(tokenA)) {
/* body */
}致:
if (bigNumber(WETH).lt(tokenA)) {
/* body */
}否则,如果我没有错的话,您将使用在字符串上操作的“回退”JavaScript比较,但这肯定不是您想要的。
ether.js 文档涵盖了您需要了解的关于它们的BigNumber类型比较的所有信息。
https://ethereum.stackexchange.com/questions/125445
复制相似问题