javascript - 如何加快多个合约的代币余额
问题描述
我正在使用以太币在所有合约上调用 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);
}
}
}
解决方案
您可以使用Multicall 合约来赢得小额胜利。一个合适的解决方案是像TheGraph这样的索引器,它可以持续读取区块链并保持可用数据的索引。
推荐阅读
- html - Blazor 服务器端和动态表生成
- flurl - 我可以使用 Flurl.Http 记录所有请求吗?
- python - 随机森林 - 使空值始终在决策树中有自己的分支
- mysql - Hibernate 在不使用 where cluase 的情况下生成查询
- html - 已安装 Div 覆盖框架
- javascript - 如何使网格内的 div 超出网格?
- react-native - 在 React Native 中创建 Material Design 的背景
- android - Android - FRESCO 不加载 JPG 图片
- javascript - Swiper JS destroy()不触发
- delphi - Delphi,在OpenOffice calc文件中插入图像