MetaMask / MetaMask/metamask-extension
[Bug]: Persistent UI Desync (Ghost Balance) on BNB Chain blocking Liquidity Pool signatures
- Dominant language
- TypeScript
- Stars
- 13.2k
- Forks
- 5.6k
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 451
Description
### Describe the bug
I am a developer reporting a critical and persistent synchronization issue (ghost balance) in the MetaMask extension on the BNB Smart Chain. This is not a transient network delay; the behavior has been occurring consistently for several days.
The UI displays a balance (approximately 64.17 USDT) that does not match the actual blockchain state or prevents interaction with smart contracts. When attempting to interact with Liquidity Pools, the extension fails to broadcast or trigger the signature request, effectively locking the account's DeFi functionality. This persisted even after multiple browser sessions.
### Expected behavior
The wallet should maintain a consistent state with the RPC provider. If a transaction or contract interaction is initiated, the wallet should either present the signature request based on real-time on-chain data or provide a specific "Out of Sync" or "Insufficient Funds" error instead of a silent failure or blocking the interaction.
### Screenshots/Recordings
### Steps to reproduce
Open MetaMask on the BNB Smart Chain network.
Observe a specific token balance (e.g., USDT) that remains static for several days despite on-chain changes.
Attempt to interact with a Liquidity Pool contract (e.g., calling approve or deposit).
Observe that the signature/confirmation UI is either blocked or fails to execute, despite the UI showing sufficient funds.
### Error messages or log output
```shell
```
### Where was this bug found?
Live version (from official store)
### Version
13.16.4
### Build type
None
### Browser
Firefox
### Operating system
Linux
### Hardware wallet
_No response_
### Additional context
I have since migrated my funds to a new wallet to bypass the issue, but I am reporting this to help the community and the development team identify state-management bugs. The issue seems related to how MetaMask caches token balances and nonces locally on certain accounts.
Reported by:
Sandro AA Antunes
GitHub: https://github.com/Sandro-AAA
### Severity
_No response_
Contributor guide
Research direction
No source file, test, or entry point is named. Start by reproducing the USDT balance mismatch and blocked Liquidity Pool signature on BNB Smart Chain with MetaMask 13.16.4, Firefox, and Linux, then compare the displayed state with on-chain data and capture logs. Done means the synchronization cause and the conditions preventing the signature request are identified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- blockchain, typescript
- Domain
- blockchain, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100