MWMovingWallet
← Back
2026-02-06 · limitation · Applies to: v1

Asset Detection: Known Limitations

What This Covers

This post documents what MovingWallet's asset detection can and cannot find, why gaps exist, and what users should verify independently.

Technical Detail

Asset detection in v1 works by querying on-chain data through RPC endpoints. It does not use indexers, transaction history, or off-chain databases.

Native tokens are detected by calling eth_getBalance on the connected address for each supported chain. This is reliable — if the address holds native tokens on a supported chain, they will appear.

ERC-20 tokens are detected by calling balanceOf on specific token contract addresses passed via the erc20 query parameter to /api/assets. Only tokens included in this parameter are queried. There is no automatic discovery, no token list, and no registry lookup.

NFTs (ERC-721 and ERC-1155) are detected through the NFT adapter in src/adapters/nft/. Detection depends on the adapter's ability to enumerate holdings for the connected address on each chain.

Supported chains: Ethereum (chain ID 1), Polygon (137), Optimism (10), Arbitrum (42161). No other chains are queried.

RPC priority: server-side RPC_URL_<chainId> environment variable if set, otherwise public fallback RPCs (Cloudflare for Ethereum, public endpoints for Polygon/Optimism/Arbitrum).

Code references: src/app/api/assets/route.ts (query endpoint), src/core/services/rpc/getRpcTransport.ts (transport selection), src/adapters/nft/ (NFT detection).

Known Limitations

  • No automatic ERC-20 discovery. The system queries only the token addresses it is given. Unknown tokens are invisible.
  • No spam filtering. Airdropped spam or scam tokens appear alongside legitimate holdings if they are in the query set.
  • No token metadata validation. Symbols and decimals are read directly from the contract. If a contract returns incorrect metadata, MovingWallet displays it as-is.
  • No historical data. Detection reflects current on-chain state only. Previously held or transferred-out assets are not shown.
  • No L2 bridge detection. Assets locked in bridge contracts between chains are not visible as spendable balances.
  • RPC-dependent reliability. Public fallback RPCs may rate-limit or return stale data under load. Production deployments should configure private RPC endpoints via RPC_URL_* environment variables.
  • Four chains only. Any asset on any other chain does not exist from MovingWallet's perspective.

Risks

  • Users may assume the displayed asset list is complete. It is not. Always cross-reference with a block explorer.
  • Public RPC endpoints may return stale or incomplete data during network congestion.
  • Malicious tokens with misleading names or symbols will appear if queried, with no visual distinction from legitimate tokens.
  • A zero balance for an ERC-20 token may mean the token is not held, or it may mean the contract call failed silently.

Disclaimer: This is technical documentation, not financial advice. MovingWallet does not guarantee asset completeness, transaction success, or protection against loss. Users are responsible for verifying all operations independently.