如何加快多个合约上的代币余额



我在所有合约上使用醚调用balanceOf方法来检查用户是否有任何余额,如果没有,令牌将不会显示在他的仪表板中,但这需要很多时间,是否有更巧妙的方法来实现相同的目标?

我代码:

for (let key in tokens) {
if (tokens.hasOwnProperty(key)) {
let contract_address_to_check = tokens[key].address;
if (contract_address_to_check != "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") {
const Contract = new ethers.Contract(contract_address_to_check, Abi, provider);
let balance_wei = await Contract.balanceOf(address);

if (balance_wei > 0) {
let decimals = await Contract.decimals();
let balance = balance_wei / 10 ** decimals;
console.log(tokens[key].address);
console.log(tokens[key].decimals);
console.log(tokens[key].symbol);
console.log(balance);
}
}
}

你可以在小范围内使用multiall合约。一个合适的解决方案是像TheGraph这样的索引器,它可以持续读取区块链并保持可用数据的索引。

最新更新