Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use UTL API directly for address token info (#298)
The problem here was not with our request coalescer, the `getMultipleAccounts` requests are coming from the UTL SDK. Specifically on the transaction page where we use `<Address pubkey={pubkey} ... fetchTokenLabelInfo`. We do this on addresses that may be, but probably are not, token mints, ie every address in a transaction. Previously this check came from the baked in legacy token list. When the token list was removed it was moved to the UTL SDK. The UTL SDK first calls the UTL API to see if the address has known token info. If it does not then it makes an on-chain call using `getMultipleAccounts` to fetch the token info from the Metaplex metadata program if it exists. I don't think this fallback is appropriate for our use case of `fetchTokenLabelInfo` on addresses. Most addresses displayed are not tokens, and we display many addresses simultaneously. This is leading to many unnecessary `getMultipleAccounts` calls, and rate limiting. Instead for this use case, we should only use the UTL API. This may mean that brand new tokens can be displayed in eg the token details page, but won't be correctly labelled in addresses. But this is a better tradeoff than making an on-chain request for every address that we render that may be a token. Note that we already use the same public API for search (https://github.com/solana-labs/explorer/blob/master/app/utils/token-search.ts), where the SDK also can't provide an on-chain fallback.
- Loading branch information
3e5b2a7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
explorer – ./
explorer-git-master-solana-labs.vercel.app
explorer.solana.com
explorer-solana-labs.vercel.app