diff --git a/src/api/address-resolver/ERCTokenResolver.ts b/src/api/address-resolver/ERCTokenResolver.ts index f087ec6..49301bd 100644 --- a/src/api/address-resolver/ERCTokenResolver.ts +++ b/src/api/address-resolver/ERCTokenResolver.ts @@ -1,24 +1,31 @@ import { BaseProvider } from "@ethersproject/providers"; import { Contract } from "@ethersproject/contracts"; +import { Interface } from "@ethersproject/abi"; import { IAddressResolver } from "./address-resolver"; import erc20 from "../../erc20.json"; import { TokenMeta } from "../../types"; +const erc20Interface = new Interface(erc20); + export class ERCTokenResolver implements IAddressResolver { async resolveAddress( provider: BaseProvider, address: string ): Promise { - const erc20Contract = new Contract(address, erc20, provider); + const erc20Contract = new Contract(address, erc20Interface, provider); try { - const [name, symbol, decimals] = (await Promise.all([ - erc20Contract.name(), + const name = (await erc20Contract.name()) as string; + if (!name.trim()) { + return undefined; + } + + const [symbol, decimals] = (await Promise.all([ erc20Contract.symbol(), erc20Contract.decimals(), - ])) as [string, string, number]; + ])) as [string, number]; // Prevent faulty tokens with empty name/symbol - if (!name.trim() || !symbol.trim()) { + if (!symbol.trim()) { return undefined; }