Skip to content

fix: assets ctrl hide arc erc20 usdc#9277

Open
maxime-oe wants to merge 1 commit into
mainfrom
fix/assets-ctrl-hide-arc-erc20-usdc
Open

fix: assets ctrl hide arc erc20 usdc#9277
maxime-oe wants to merge 1 commit into
mainfrom
fix/assets-ctrl-hide-arc-erc20-usdc

Conversation

@maxime-oe

@maxime-oe maxime-oe commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Explanation

Arc chain has USDC as native coin, but also provides an ERC20 interface at address 0x3600000000000000000000000000000000000000 which follows the ERC20 standard.
However this ERC20 address points to the same balance as the native, leading to double counting total balance.

This PR adds a map in which some tokens can be explicitly ignored when computing balance total. The code acts at the same location as the Asset Preference "hide" feature.

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Low Risk
Small, hardcoded exclusion in balance aggregation selectors only; no auth, persistence, or fetch pipeline changes.

Overview
Prevents Arc mainnet ERC20 USDC (eip155:5042/erc20:0x3600…0000) from being included when balances are merged for portfolio totals and related selectors.

Adds MERGE_BALANCES_IGNORE_LIST in balance.ts and treats listed asset IDs like user-hidden assets in mergeBalancesIntoMap, so that token no longer inflates aggregated fiat totals when the same economic balance may already be represented elsewhere on Arc (e.g. native vs ERC20 USDC). Documents the change under Unreleased in CHANGELOG.md.

Reviewed by Cursor Bugbot for commit 574b60e. Bugbot is set up for automated code reviews on this repo. Configure here.

@maxime-oe maxime-oe force-pushed the fix/assets-ctrl-hide-arc-erc20-usdc branch from db5b017 to 574b60e Compare June 26, 2026 11:49
@maxime-oe maxime-oe marked this pull request as ready for review June 26, 2026 11:54
@maxime-oe maxime-oe requested review from a team as code owners June 26, 2026 11:54
@maxime-oe

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.3-preview-574b60e35
@metamask-previews/accounts-controller@39.0.3-preview-574b60e35
@metamask-previews/address-book-controller@7.1.2-preview-574b60e35
@metamask-previews/ai-controllers@0.7.0-preview-574b60e35
@metamask-previews/analytics-controller@1.2.0-preview-574b60e35
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-574b60e35
@metamask-previews/announcement-controller@8.1.0-preview-574b60e35
@metamask-previews/app-metadata-controller@2.0.1-preview-574b60e35
@metamask-previews/approval-controller@9.0.2-preview-574b60e35
@metamask-previews/assets-controller@9.1.0-preview-574b60e35
@metamask-previews/assets-controllers@109.2.2-preview-574b60e35
@metamask-previews/authenticated-user-storage@2.1.0-preview-574b60e35
@metamask-previews/base-controller@9.1.0-preview-574b60e35
@metamask-previews/base-data-service@0.1.3-preview-574b60e35
@metamask-previews/bitcoin-regtest-up@0.0.0-preview-574b60e35
@metamask-previews/bridge-controller@77.0.0-preview-574b60e35
@metamask-previews/bridge-status-controller@73.0.0-preview-574b60e35
@metamask-previews/build-utils@3.0.4-preview-574b60e35
@metamask-previews/chain-agnostic-permission@1.6.2-preview-574b60e35
@metamask-previews/chomp-api-service@3.1.0-preview-574b60e35
@metamask-previews/claims-controller@0.5.3-preview-574b60e35
@metamask-previews/client-controller@1.0.1-preview-574b60e35
@metamask-previews/compliance-controller@2.1.0-preview-574b60e35
@metamask-previews/composable-controller@12.0.1-preview-574b60e35
@metamask-previews/config-registry-controller@0.4.1-preview-574b60e35
@metamask-previews/connectivity-controller@0.2.0-preview-574b60e35
@metamask-previews/controller-utils@12.3.0-preview-574b60e35
@metamask-previews/core-backend@6.3.3-preview-574b60e35
@metamask-previews/delegation-controller@3.0.2-preview-574b60e35
@metamask-previews/earn-controller@12.2.1-preview-574b60e35
@metamask-previews/eip-5792-middleware@3.0.4-preview-574b60e35
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-574b60e35
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-574b60e35
@metamask-previews/ens-controller@19.1.4-preview-574b60e35
@metamask-previews/eth-block-tracker@15.0.1-preview-574b60e35
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-574b60e35
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-574b60e35
@metamask-previews/foundryup@1.0.1-preview-574b60e35
@metamask-previews/gas-fee-controller@26.2.3-preview-574b60e35
@metamask-previews/gator-permissions-controller@4.2.1-preview-574b60e35
@metamask-previews/geolocation-controller@0.1.3-preview-574b60e35
@metamask-previews/java-tron-up@0.0.0-preview-574b60e35
@metamask-previews/json-rpc-engine@10.5.0-preview-574b60e35
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-574b60e35
@metamask-previews/keyring-controller@27.1.0-preview-574b60e35
@metamask-previews/local-node-utils@0.0.0-preview-574b60e35
@metamask-previews/logging-controller@8.0.2-preview-574b60e35
@metamask-previews/message-manager@14.1.2-preview-574b60e35
@metamask-previews/messenger@1.2.0-preview-574b60e35
@metamask-previews/messenger-cli@0.2.0-preview-574b60e35
@metamask-previews/money-account-balance-service@2.1.1-preview-574b60e35
@metamask-previews/money-account-controller@0.3.3-preview-574b60e35
@metamask-previews/money-account-upgrade-controller@2.1.0-preview-574b60e35
@metamask-previews/multichain-account-service@11.1.0-preview-574b60e35
@metamask-previews/multichain-api-middleware@3.1.5-preview-574b60e35
@metamask-previews/multichain-network-controller@3.2.0-preview-574b60e35
@metamask-previews/multichain-transactions-controller@7.1.1-preview-574b60e35
@metamask-previews/name-controller@9.1.2-preview-574b60e35
@metamask-previews/network-controller@33.0.0-preview-574b60e35
@metamask-previews/network-enablement-controller@5.4.0-preview-574b60e35
@metamask-previews/notification-services-controller@24.2.0-preview-574b60e35
@metamask-previews/passkey-controller@2.0.1-preview-574b60e35
@metamask-previews/permission-controller@13.1.1-preview-574b60e35
@metamask-previews/permission-log-controller@5.1.0-preview-574b60e35
@metamask-previews/perps-controller@9.0.0-preview-574b60e35
@metamask-previews/phishing-controller@17.2.0-preview-574b60e35
@metamask-previews/polling-controller@16.0.7-preview-574b60e35
@metamask-previews/preferences-controller@23.1.0-preview-574b60e35
@metamask-previews/profile-metrics-controller@4.0.0-preview-574b60e35
@metamask-previews/profile-sync-controller@28.2.0-preview-574b60e35
@metamask-previews/ramps-controller@15.0.0-preview-574b60e35
@metamask-previews/rate-limit-controller@7.0.1-preview-574b60e35
@metamask-previews/react-data-query@0.2.1-preview-574b60e35
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-574b60e35
@metamask-previews/sample-controllers@5.0.2-preview-574b60e35
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-574b60e35
@metamask-previews/selected-network-controller@26.1.4-preview-574b60e35
@metamask-previews/shield-controller@5.1.2-preview-574b60e35
@metamask-previews/signature-controller@39.2.6-preview-574b60e35
@metamask-previews/smart-transactions-controller@24.2.3-preview-574b60e35
@metamask-previews/snap-account-service@1.0.0-preview-574b60e35
@metamask-previews/social-controllers@2.3.1-preview-574b60e35
@metamask-previews/solana-test-validator-up@0.0.0-preview-574b60e35
@metamask-previews/storage-service@1.0.2-preview-574b60e35
@metamask-previews/subscription-controller@6.2.0-preview-574b60e35
@metamask-previews/transaction-controller@68.2.0-preview-574b60e35
@metamask-previews/transaction-pay-controller@23.16.1-preview-574b60e35
@metamask-previews/user-operation-controller@41.2.5-preview-574b60e35
@metamask-previews/wallet@5.0.0-preview-574b60e35
@metamask-previews/wallet-cli@0.0.0-preview-574b60e35

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant