// keeps a list of known tokens // todo load standard known tokens import {ethers} from "ethers"; import {erc20Abi} from "./abi.js"; import {getProvider} from "./blockchain.js"; const tokens = { 42161: {} } export async function lookupToken(chainId, address) { console.log('lookupToken', chainId, address) const chainTokens = tokens[chainId] if( chainTokens === undefined ) return null try { let result = chainTokens[address] console.log('found', result) if (result === undefined) { // todo look in tokens project const addr = ethers.getAddress(address) console.log('addr', addr) const token = new ethers.Contract(addr, erc20Abi, getProvider(chainId)) const symbol = await token.symbol() console.log('symbol', symbol) const decimals = Number(await token.decimals()) result = {name: `${symbol} (${addr})`, symbol, decimals, address: addr} chainTokens[addr] = result return result } } catch { return null } }