Tracked tokens are shared across networks, and mainnet tokens are offered and added on Sepolia #523

Closed
opened 2026-10-14 04:48:37 +02:00 by clawbot · 1 comment
Collaborator

Where

Settings, then "+ Add token" (SettingsAddToken). The "Top tokens" buttons and the "top 100" list in src/popup/views/settingsAddToken.js (lines 46 and 107) add a token from the bundled list, which holds mainnet contracts, whatever network is active, with no lookup on that network. state.trackedTokens is one list for both networks, and a network switch (src/shared/chainSwitchFields.js) leaves it as it is.

What happens

On next (8e52528), release build, Chrome, with Sepolia active: press "USDC" under Top tokens. The flash says "Added USDC" and the mainnet contract 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, which is not a token on Sepolia, becomes a tracked token. Home then lists USDC 0.0000 under every Sepolia address. The other way round, a token added by contract address on Sepolia is listed under every mainnet address after switching, with its Sepolia address and a mainnet Etherscan link.

What should happen

A contract address names a token on one network only. README, SettingsAddToken: a failed contract lookup is refused with a flash message. A token should be tracked, offered and listed only on the network it was added on, and the bundled mainnet tokens should not be offered as quick picks on Sepolia.

Severity: minor

Definition of done

  • Tracked tokens are kept per network; switching shows only the active network's tracked tokens.
  • On Sepolia, SettingsAddToken offers no bundled mainnet token, and adding by contract address still works.

Model: opus-5-5

## Where Settings, then "+ Add token" (SettingsAddToken). The "Top tokens" buttons and the "top 100" list in `src/popup/views/settingsAddToken.js` (lines 46 and 107) add a token from the bundled list, which holds mainnet contracts, whatever network is active, with no lookup on that network. `state.trackedTokens` is one list for both networks, and a network switch (`src/shared/chainSwitchFields.js`) leaves it as it is. ## What happens On `next` (8e52528), release build, Chrome, with Sepolia active: press "USDC" under Top tokens. The flash says "Added USDC" and the mainnet contract `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`, which is not a token on Sepolia, becomes a tracked token. Home then lists `USDC 0.0000` under every Sepolia address. The other way round, a token added by contract address on Sepolia is listed under every mainnet address after switching, with its Sepolia address and a mainnet Etherscan link. ## What should happen A contract address names a token on one network only. README, SettingsAddToken: a failed contract lookup is refused with a flash message. A token should be tracked, offered and listed only on the network it was added on, and the bundled mainnet tokens should not be offered as quick picks on Sepolia. Severity: minor ## Definition of done - [ ] Tracked tokens are kept per network; switching shows only the active network's tracked tokens. - [ ] On Sepolia, SettingsAddToken offers no bundled mainnet token, and adding by contract address still works. Model: opus-5-5
clawbot self-assigned this 2026-10-14 04:48:37 +02:00
Author
Collaborator

Plan: state.trackedTokens stays the active network's list, so none of its readers change. A network switch (applyChainSwitchFields() in src/shared/chainSwitchFields.js) puts the outgoing list away under the outgoing network and brings back the incoming network's list, or an empty one, the same way it already keeps endpoints per network. The remembered lists are saved with the rest of the state (src/shared/persistedState.js). SettingsAddToken shows the Top tokens buttons and the top-100 list only on Ethereum Mainnet, because the bundled list holds mainnet contracts; adding by contract address works on both networks. Any other screen that offers the bundled list as picks follows the same rule. README's SettingsAddToken and network-switch text is updated to match.

Model: opus-5-5

Plan: `state.trackedTokens` stays the active network's list, so none of its readers change. A network switch (`applyChainSwitchFields()` in `src/shared/chainSwitchFields.js`) puts the outgoing list away under the outgoing network and brings back the incoming network's list, or an empty one, the same way it already keeps endpoints per network. The remembered lists are saved with the rest of the state (`src/shared/persistedState.js`). SettingsAddToken shows the Top tokens buttons and the top-100 list only on Ethereum Mainnet, because the bundled list holds mainnet contracts; adding by contract address works on both networks. Any other screen that offers the bundled list as picks follows the same rule. README's SettingsAddToken and network-switch text is updated to match. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/AutistMask#523