Skip to the article
Block Times

Crypto markets, protocols and policy

3b768e

A stale BEP-20 name may be a cache, not a contract change

A BEP-20 name that looks old may reflect a cached display layer; compare the contract read with explorer and chart views before treating it as a token change.

Block Times Newsroom5 min read

Abstract cover artwork

A stale BEP-20 name is a display clue, not proof that the token contract changed: compare what the contract returns with what an explorer and a chart page show. Before wallets and indexers added their own views, a user could inspect a contract call and see the returned name directly; today several layers can hold or label token information independently. That makes cache delay one possible explanation, but not the only one.

The distinction matters because a token’s name is for identification, while its contract address anchors on-chain activity. Two contracts can return the same name, and a familiar name on a page does not establish that its address is the one a user expects. A useful check therefore starts with the address and chain, then asks which layer is showing the old value.

Where does a BEP-20 token name come from?

A BEP-20 name comes from the contract’s name() read when the contract implements that method; the BEP-20 specification describes it as optional. The specification also defines symbol() and decimals() as interface fields, but these labels are not a universal registry that forces every wallet, explorer and trading site to display identical text.

That leaves room for separate sources. An application may call the contract, retain a previous result, or use its own token list or indexed record. An explorer can combine contract information with off-chain page details; BscScan, for example, says its token pages show both on-chain and off-chain data, and distinguishes the displayed name from creator-submitted logo and project information. A chart interface may add its own lookup and refresh steps. The same address can consequently appear with different names across services, even when no transfer or contract state has changed.

For a quick comparison of how a token’s chart view fits alongside wallet and contract details, this Poocoin chart-and-wallet overview covers the broader workflow. The useful point here is to treat its displayed name as one interface reading, then compare it with an independent contract read for the same BNB Smart Chain address.

How can you measure whether the delay is a cache?

Measure the gap between sources over time instead of guessing from one screenshot. First confirm the network and full contract address in each place; a token with the same ticker on another chain is a different comparison. Then read name() from a block explorer’s contract-read view or another BNB Smart Chain RPC tool, and record the returned value and the time you checked it.

Next, compare that result with the explorer’s token page and the chart or wallet view that appears stale. Recheck the same pages after a refresh, then again later. A simple log can separate a temporary display lag from a stable disagreement:

  • Record the chain, contract address, page or app, displayed name, and check time.
  • Read name() against the same contract and note whether the call succeeds or returns a different string.
  • Repeat the checks after refreshing the interface and after some time has passed.
  • Compare the symbol and address too; a name match alone does not confirm you have the intended token.

If the contract read consistently returns one name while only a single interface shows another, the evidence points to that interface’s data path or cache, though it does not reveal exactly which step is behind. If the contract read itself changes between checks, investigate that result separately: some contracts can implement dynamic reads, and a display refresh cannot explain a value that changed at the contract-call layer. If the read fails, the result is inconclusive; it does not establish the name either way.

Which source should you trust when the labels disagree?

For the question “what does this contract return as its name?”, the direct contract read is the narrowest answer. For “what will my wallet or chart show?”, that application’s own display is the relevant answer. An explorer’s curated page may be useful context, but its extra fields can reflect submitted or indexed information rather than a live read from the contract.

Each source trades immediacy against convenience. A contract read is close to the source but offers little context and may be difficult to interpret. A chart or wallet groups price, balances and labels in one screen, but can be slower to refresh or rely on its own catalogue. An explorer makes address history and contract details easier to inspect, while its project profile can contain off-chain submissions. No single label answers all three questions.

For most readers, the practical rule is to anchor identification to chain plus contract address, use the contract read to verify the returned name, and regard interface labels as cached or curated until they agree. This does not determine whether a token is legitimate or whether its trading data is reliable; names are not authentication. Avoid making a transaction based solely on a matching name or ticker, especially if the address differs from the one you intended.

Watch for the same address showing a consistent contract-read value while one display catches up; that pattern supports a cache-delay explanation. If several sources change together, or if the contract read itself differs, record the time and recheck the address, chain and call result. The next useful signal is agreement across repeated reads and independent displays, not the age or familiarity of the label.

Related coverage