balances = Promise.all(networks.map(async network => {
return Object.fromEntries([
['Chain', network.name],
].concat(
await Promise.all(['USDC', 'USDT', 'WETH', 'WBTC'].map(async symbol => {
const web3 = new Web3(network.rpcUrl)
if (network[symbol] == 'native') {
return [symbol, await web3.eth.getBalance(address) / 1e18]
} else if (network[symbol]) {
const token = new web3.eth.Contract(abi, network[symbol])
const method = network.name.match(/Oasis/) ? token.methods.totalSupply() : token.methods.balanceOf(address)
const balance = await method.call()
const decimals = await token.methods.decimals().call()
return [symbol, balance / Math.pow(10, decimals)]
} else {
return [symbol, null]
}
}))
))
}))