首页 > 解决方案 > 如何加快多个合约的代币余额

问题描述

我正在使用以太币在所有合约上调用 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);
                }
            }
        }
    

标签: javascriptblockchainethereum

解决方案


您可以使用Multicall 合约来赢得小额胜利。一个合适的解决方案是像TheGraph这样的索引器,它可以持续读取区块链并保持可用数据的索引。


推荐阅读