Skip to content

Conversation

@salimtb
Copy link
Contributor

@salimtb salimtb commented Jan 13, 2026

Explanation

Current State

The NetworkEnablementController tracks which networks are enabled/disabled but lacks information about the native asset identifier for each chain. This information is needed to properly identify native assets across different blockchain networks using a standardized format.

Extension UI PR: MetaMask/metamask-extension#39234

Solution

This PR adds a new state property nativeAssetIdentifiers to the NetworkEnablementController that maps CAIP-2 chain IDs to CAIP-19-like native asset identifiers.

For example:

  • eip155:1eip155:1/slip44:60 (Ethereum uses ETH, SLIP-44 coin type 60)
  • eip155:56eip155:56/slip44:714 (BSC uses BNB, SLIP-44 coin type 714)
  • solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501

Implementation Details

  1. New Slip44Service: A service that wraps the @metamask/slip44 package to look up SLIP-44 coin types by symbol (e.g., ETH60, BTC0).

  2. State Updates: The nativeAssetIdentifiers state is automatically updated when:

    • A network is added (NetworkController:networkAdded)
    • A network is removed (NetworkController:networkRemoved)
    • A network's native currency symbol is changed (NetworkController:stateChange)
  3. Default State: Popular networks are pre-populated with their correct native asset identifiers based on their native currency symbols.

  4. Graceful Handling: If a symbol has no SLIP-44 mapping, the entry is removed from the state rather than storing an invalid identifier.

Dependency Addition

Added @metamask/slip44 package to dynamically look up SLIP-44 coin types instead of hardcoding them, ensuring accuracy and maintainability.

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

Introduces native asset tracking and supporting utilities.

  • Adds nativeAssetIdentifiers mapping (CAIP-2 -> .../slip44:<coinType>) to NetworkEnablementController state and metadata
  • New Slip44Service (uses @metamask/slip44 and chainid.network) to resolve coin types by symbol/chainId; exports helpers
  • Makes init() async and populates EVM identifiers; new initNativeAssetIdentifiers(networks) API for bulk initialization
  • Updates network lifecycle: on add (async) computes and stores identifier; on remove deletes identifier
  • Extends public exports (types, service) and adds @metamask/slip44 dependency
  • Updates/extends tests for controller, selectors, utils, and new service

Written by Cursor Bugbot for commit f8cdcfc. This will update automatically on new commits. Configure here.

@salimtb salimtb changed the title Feat/add slip44 identfiers for added chains feat: add slip44 identfiers for added chains Jan 13, 2026
@salimtb
Copy link
Contributor Author

salimtb commented Jan 13, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-e6f8648b",
  "@metamask-previews/accounts-controller": "35.0.0-preview-e6f8648b",
  "@metamask-previews/address-book-controller": "7.0.1-preview-e6f8648b",
  "@metamask-previews/analytics-controller": "1.0.0-preview-e6f8648b",
  "@metamask-previews/announcement-controller": "8.0.0-preview-e6f8648b",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-e6f8648b",
  "@metamask-previews/approval-controller": "8.0.0-preview-e6f8648b",
  "@metamask-previews/assets-controller": "0.0.0-preview-e6f8648b",
  "@metamask-previews/assets-controllers": "95.1.0-preview-e6f8648b",
  "@metamask-previews/base-controller": "9.0.0-preview-e6f8648b",
  "@metamask-previews/bridge-controller": "64.4.0-preview-e6f8648b",
  "@metamask-previews/bridge-status-controller": "64.4.1-preview-e6f8648b",
  "@metamask-previews/build-utils": "3.0.4-preview-e6f8648b",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-e6f8648b",
  "@metamask-previews/claims-controller": "0.4.1-preview-e6f8648b",
  "@metamask-previews/composable-controller": "12.0.0-preview-e6f8648b",
  "@metamask-previews/controller-utils": "11.18.0-preview-e6f8648b",
  "@metamask-previews/core-backend": "5.0.0-preview-e6f8648b",
  "@metamask-previews/delegation-controller": "2.0.0-preview-e6f8648b",
  "@metamask-previews/earn-controller": "11.0.0-preview-e6f8648b",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-e6f8648b",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-e6f8648b",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-e6f8648b",
  "@metamask-previews/ens-controller": "19.0.0-preview-e6f8648b",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-e6f8648b",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-e6f8648b",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-e6f8648b",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-e6f8648b",
  "@metamask-previews/foundryup": "1.0.1-preview-e6f8648b",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-e6f8648b",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-e6f8648b",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-e6f8648b",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-e6f8648b",
  "@metamask-previews/keyring-controller": "25.0.0-preview-e6f8648b",
  "@metamask-previews/logging-controller": "7.0.1-preview-e6f8648b",
  "@metamask-previews/message-manager": "14.1.0-preview-e6f8648b",
  "@metamask-previews/messenger": "0.3.0-preview-e6f8648b",
  "@metamask-previews/multichain-account-service": "5.0.0-preview-e6f8648b",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-e6f8648b",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-e6f8648b",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-e6f8648b",
  "@metamask-previews/name-controller": "9.0.0-preview-e6f8648b",
  "@metamask-previews/network-controller": "27.2.0-preview-e6f8648b",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-e6f8648b",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-e6f8648b",
  "@metamask-previews/permission-controller": "12.2.0-preview-e6f8648b",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-e6f8648b",
  "@metamask-previews/phishing-controller": "16.1.0-preview-e6f8648b",
  "@metamask-previews/polling-controller": "16.0.0-preview-e6f8648b",
  "@metamask-previews/preferences-controller": "22.0.0-preview-e6f8648b",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-e6f8648b",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-e6f8648b",
  "@metamask-previews/ramps-controller": "2.1.0-preview-e6f8648b",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-e6f8648b",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-e6f8648b",
  "@metamask-previews/sample-controllers": "4.0.0-preview-e6f8648b",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-e6f8648b",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-e6f8648b",
  "@metamask-previews/shield-controller": "4.1.0-preview-e6f8648b",
  "@metamask-previews/signature-controller": "38.0.0-preview-e6f8648b",
  "@metamask-previews/storage-service": "0.0.1-preview-e6f8648b",
  "@metamask-previews/subscription-controller": "5.4.0-preview-e6f8648b",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-e6f8648b",
  "@metamask-previews/transaction-controller": "62.9.0-preview-e6f8648b",
  "@metamask-previews/transaction-pay-controller": "11.0.0-preview-e6f8648b",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-e6f8648b"
}

@salimtb
Copy link
Contributor Author

salimtb commented Jan 13, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-22f11ed5",
  "@metamask-previews/accounts-controller": "35.0.0-preview-22f11ed5",
  "@metamask-previews/address-book-controller": "7.0.1-preview-22f11ed5",
  "@metamask-previews/analytics-controller": "1.0.0-preview-22f11ed5",
  "@metamask-previews/announcement-controller": "8.0.0-preview-22f11ed5",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-22f11ed5",
  "@metamask-previews/approval-controller": "8.0.0-preview-22f11ed5",
  "@metamask-previews/assets-controller": "0.0.0-preview-22f11ed5",
  "@metamask-previews/assets-controllers": "95.1.0-preview-22f11ed5",
  "@metamask-previews/base-controller": "9.0.0-preview-22f11ed5",
  "@metamask-previews/bridge-controller": "64.4.0-preview-22f11ed5",
  "@metamask-previews/bridge-status-controller": "64.4.1-preview-22f11ed5",
  "@metamask-previews/build-utils": "3.0.4-preview-22f11ed5",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-22f11ed5",
  "@metamask-previews/claims-controller": "0.4.1-preview-22f11ed5",
  "@metamask-previews/composable-controller": "12.0.0-preview-22f11ed5",
  "@metamask-previews/controller-utils": "11.18.0-preview-22f11ed5",
  "@metamask-previews/core-backend": "5.0.0-preview-22f11ed5",
  "@metamask-previews/delegation-controller": "2.0.0-preview-22f11ed5",
  "@metamask-previews/earn-controller": "11.0.0-preview-22f11ed5",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-22f11ed5",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-22f11ed5",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-22f11ed5",
  "@metamask-previews/ens-controller": "19.0.0-preview-22f11ed5",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-22f11ed5",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-22f11ed5",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-22f11ed5",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-22f11ed5",
  "@metamask-previews/foundryup": "1.0.1-preview-22f11ed5",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-22f11ed5",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-22f11ed5",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-22f11ed5",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-22f11ed5",
  "@metamask-previews/keyring-controller": "25.0.0-preview-22f11ed5",
  "@metamask-previews/logging-controller": "7.0.1-preview-22f11ed5",
  "@metamask-previews/message-manager": "14.1.0-preview-22f11ed5",
  "@metamask-previews/messenger": "0.3.0-preview-22f11ed5",
  "@metamask-previews/multichain-account-service": "5.0.0-preview-22f11ed5",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-22f11ed5",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-22f11ed5",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-22f11ed5",
  "@metamask-previews/name-controller": "9.0.0-preview-22f11ed5",
  "@metamask-previews/network-controller": "27.2.0-preview-22f11ed5",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-22f11ed5",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-22f11ed5",
  "@metamask-previews/permission-controller": "12.2.0-preview-22f11ed5",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-22f11ed5",
  "@metamask-previews/phishing-controller": "16.1.0-preview-22f11ed5",
  "@metamask-previews/polling-controller": "16.0.0-preview-22f11ed5",
  "@metamask-previews/preferences-controller": "22.0.0-preview-22f11ed5",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-22f11ed5",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-22f11ed5",
  "@metamask-previews/ramps-controller": "2.1.0-preview-22f11ed5",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-22f11ed5",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-22f11ed5",
  "@metamask-previews/sample-controllers": "4.0.0-preview-22f11ed5",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-22f11ed5",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-22f11ed5",
  "@metamask-previews/shield-controller": "4.1.0-preview-22f11ed5",
  "@metamask-previews/signature-controller": "38.0.0-preview-22f11ed5",
  "@metamask-previews/storage-service": "0.0.1-preview-22f11ed5",
  "@metamask-previews/subscription-controller": "5.4.0-preview-22f11ed5",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-22f11ed5",
  "@metamask-previews/transaction-controller": "62.9.0-preview-22f11ed5",
  "@metamask-previews/transaction-pay-controller": "11.0.0-preview-22f11ed5",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-22f11ed5"
}

@salimtb salimtb force-pushed the feat/add-slip44-identfiers-for-added-chains branch from 589e726 to f075c1f Compare January 13, 2026 22:26
@salimtb
Copy link
Contributor Author

salimtb commented Jan 13, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-f075c1f",
  "@metamask-previews/accounts-controller": "35.0.1-preview-f075c1f",
  "@metamask-previews/address-book-controller": "7.0.1-preview-f075c1f",
  "@metamask-previews/analytics-controller": "1.0.0-preview-f075c1f",
  "@metamask-previews/announcement-controller": "8.0.0-preview-f075c1f",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-f075c1f",
  "@metamask-previews/approval-controller": "8.0.0-preview-f075c1f",
  "@metamask-previews/assets-controller": "0.0.0-preview-f075c1f",
  "@metamask-previews/assets-controllers": "95.1.0-preview-f075c1f",
  "@metamask-previews/base-controller": "9.0.0-preview-f075c1f",
  "@metamask-previews/bridge-controller": "64.4.1-preview-f075c1f",
  "@metamask-previews/bridge-status-controller": "64.4.2-preview-f075c1f",
  "@metamask-previews/build-utils": "3.0.4-preview-f075c1f",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-f075c1f",
  "@metamask-previews/claims-controller": "0.4.1-preview-f075c1f",
  "@metamask-previews/composable-controller": "12.0.0-preview-f075c1f",
  "@metamask-previews/controller-utils": "11.18.0-preview-f075c1f",
  "@metamask-previews/core-backend": "5.0.0-preview-f075c1f",
  "@metamask-previews/delegation-controller": "2.0.0-preview-f075c1f",
  "@metamask-previews/earn-controller": "11.0.0-preview-f075c1f",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-f075c1f",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-f075c1f",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-f075c1f",
  "@metamask-previews/ens-controller": "19.0.1-preview-f075c1f",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-f075c1f",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-f075c1f",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-f075c1f",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-f075c1f",
  "@metamask-previews/foundryup": "1.0.1-preview-f075c1f",
  "@metamask-previews/gas-fee-controller": "26.0.1-preview-f075c1f",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-f075c1f",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-f075c1f",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-f075c1f",
  "@metamask-previews/keyring-controller": "25.0.0-preview-f075c1f",
  "@metamask-previews/logging-controller": "7.0.1-preview-f075c1f",
  "@metamask-previews/message-manager": "14.1.0-preview-f075c1f",
  "@metamask-previews/messenger": "0.3.0-preview-f075c1f",
  "@metamask-previews/multichain-account-service": "5.0.0-preview-f075c1f",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-f075c1f",
  "@metamask-previews/multichain-network-controller": "3.0.1-preview-f075c1f",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-f075c1f",
  "@metamask-previews/name-controller": "9.0.0-preview-f075c1f",
  "@metamask-previews/network-controller": "28.0.0-preview-f075c1f",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-f075c1f",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-f075c1f",
  "@metamask-previews/permission-controller": "12.2.0-preview-f075c1f",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-f075c1f",
  "@metamask-previews/phishing-controller": "16.1.0-preview-f075c1f",
  "@metamask-previews/polling-controller": "16.0.1-preview-f075c1f",
  "@metamask-previews/preferences-controller": "22.0.0-preview-f075c1f",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-f075c1f",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-f075c1f",
  "@metamask-previews/ramps-controller": "3.0.0-preview-f075c1f",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-f075c1f",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-f075c1f",
  "@metamask-previews/sample-controllers": "4.0.1-preview-f075c1f",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-f075c1f",
  "@metamask-previews/selected-network-controller": "26.0.1-preview-f075c1f",
  "@metamask-previews/shield-controller": "4.1.0-preview-f075c1f",
  "@metamask-previews/signature-controller": "38.0.1-preview-f075c1f",
  "@metamask-previews/storage-service": "0.0.1-preview-f075c1f",
  "@metamask-previews/subscription-controller": "5.4.0-preview-f075c1f",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-f075c1f",
  "@metamask-previews/transaction-controller": "62.9.1-preview-f075c1f",
  "@metamask-previews/transaction-pay-controller": "11.0.1-preview-f075c1f",
  "@metamask-previews/user-operation-controller": "41.0.1-preview-f075c1f"
}

@salimtb salimtb marked this pull request as ready for review January 13, 2026 22:44
@salimtb salimtb requested review from a team as code owners January 13, 2026 22:44
@salimtb salimtb enabled auto-merge January 13, 2026 23:04
@salimtb salimtb changed the title feat: add slip44 identfiers for added chains feat: add CAIP-19 asset identifier identifiers for each chains into the state Jan 14, 2026
@salimtb salimtb changed the title feat: add CAIP-19 asset identifier identifiers for each chains into the state feat: add CAIP-19 asset identifiers for each chains into the state Jan 14, 2026
@salimtb salimtb changed the title feat: add CAIP-19 asset identifiers for each chains into the state feat: add CAIP-19 asset identifiers for each chain into the state Jan 14, 2026
@salimtb salimtb added this pull request to the merge queue Jan 14, 2026
@Prithpal-Sooriya Prithpal-Sooriya removed this pull request from the merge queue due to a manual request Jan 14, 2026
@salimtb
Copy link
Contributor Author

salimtb commented Jan 14, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-0c691324",
  "@metamask-previews/accounts-controller": "35.0.1-preview-0c691324",
  "@metamask-previews/address-book-controller": "7.0.1-preview-0c691324",
  "@metamask-previews/analytics-controller": "1.0.0-preview-0c691324",
  "@metamask-previews/announcement-controller": "8.0.0-preview-0c691324",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-0c691324",
  "@metamask-previews/approval-controller": "8.0.0-preview-0c691324",
  "@metamask-previews/assets-controller": "0.0.0-preview-0c691324",
  "@metamask-previews/assets-controllers": "95.1.0-preview-0c691324",
  "@metamask-previews/base-controller": "9.0.0-preview-0c691324",
  "@metamask-previews/bridge-controller": "64.4.1-preview-0c691324",
  "@metamask-previews/bridge-status-controller": "64.4.2-preview-0c691324",
  "@metamask-previews/build-utils": "3.0.4-preview-0c691324",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-0c691324",
  "@metamask-previews/claims-controller": "0.4.1-preview-0c691324",
  "@metamask-previews/composable-controller": "12.0.0-preview-0c691324",
  "@metamask-previews/controller-utils": "11.18.0-preview-0c691324",
  "@metamask-previews/core-backend": "5.0.0-preview-0c691324",
  "@metamask-previews/delegation-controller": "2.0.0-preview-0c691324",
  "@metamask-previews/earn-controller": "11.0.0-preview-0c691324",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-0c691324",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-0c691324",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-0c691324",
  "@metamask-previews/ens-controller": "19.0.1-preview-0c691324",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-0c691324",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-0c691324",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-0c691324",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-0c691324",
  "@metamask-previews/foundryup": "1.0.1-preview-0c691324",
  "@metamask-previews/gas-fee-controller": "26.0.1-preview-0c691324",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-0c691324",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-0c691324",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-0c691324",
  "@metamask-previews/keyring-controller": "25.0.0-preview-0c691324",
  "@metamask-previews/logging-controller": "7.0.1-preview-0c691324",
  "@metamask-previews/message-manager": "14.1.0-preview-0c691324",
  "@metamask-previews/messenger": "0.3.0-preview-0c691324",
  "@metamask-previews/multichain-account-service": "5.0.0-preview-0c691324",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-0c691324",
  "@metamask-previews/multichain-network-controller": "3.0.1-preview-0c691324",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-0c691324",
  "@metamask-previews/name-controller": "9.0.0-preview-0c691324",
  "@metamask-previews/network-controller": "28.0.0-preview-0c691324",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-0c691324",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-0c691324",
  "@metamask-previews/permission-controller": "12.2.0-preview-0c691324",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-0c691324",
  "@metamask-previews/phishing-controller": "16.1.0-preview-0c691324",
  "@metamask-previews/polling-controller": "16.0.1-preview-0c691324",
  "@metamask-previews/preferences-controller": "22.0.0-preview-0c691324",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-0c691324",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-0c691324",
  "@metamask-previews/ramps-controller": "3.0.0-preview-0c691324",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-0c691324",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-0c691324",
  "@metamask-previews/sample-controllers": "4.0.1-preview-0c691324",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-0c691324",
  "@metamask-previews/selected-network-controller": "26.0.1-preview-0c691324",
  "@metamask-previews/shield-controller": "4.1.0-preview-0c691324",
  "@metamask-previews/signature-controller": "38.0.1-preview-0c691324",
  "@metamask-previews/storage-service": "0.0.1-preview-0c691324",
  "@metamask-previews/subscription-controller": "5.4.0-preview-0c691324",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-0c691324",
  "@metamask-previews/transaction-controller": "62.9.1-preview-0c691324",
  "@metamask-previews/transaction-pay-controller": "11.0.1-preview-0c691324",
  "@metamask-previews/user-operation-controller": "41.0.1-preview-0c691324"
}

@salimtb
Copy link
Contributor Author

salimtb commented Jan 14, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-f8cdcfc2",
  "@metamask-previews/accounts-controller": "35.0.1-preview-f8cdcfc2",
  "@metamask-previews/address-book-controller": "7.0.1-preview-f8cdcfc2",
  "@metamask-previews/analytics-controller": "1.0.0-preview-f8cdcfc2",
  "@metamask-previews/announcement-controller": "8.0.0-preview-f8cdcfc2",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-f8cdcfc2",
  "@metamask-previews/approval-controller": "8.0.0-preview-f8cdcfc2",
  "@metamask-previews/assets-controller": "0.0.0-preview-f8cdcfc2",
  "@metamask-previews/assets-controllers": "95.1.0-preview-f8cdcfc2",
  "@metamask-previews/base-controller": "9.0.0-preview-f8cdcfc2",
  "@metamask-previews/bridge-controller": "64.4.1-preview-f8cdcfc2",
  "@metamask-previews/bridge-status-controller": "64.4.2-preview-f8cdcfc2",
  "@metamask-previews/build-utils": "3.0.4-preview-f8cdcfc2",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-f8cdcfc2",
  "@metamask-previews/claims-controller": "0.4.1-preview-f8cdcfc2",
  "@metamask-previews/composable-controller": "12.0.0-preview-f8cdcfc2",
  "@metamask-previews/controller-utils": "11.18.0-preview-f8cdcfc2",
  "@metamask-previews/core-backend": "5.0.0-preview-f8cdcfc2",
  "@metamask-previews/delegation-controller": "2.0.0-preview-f8cdcfc2",
  "@metamask-previews/earn-controller": "11.0.0-preview-f8cdcfc2",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-f8cdcfc2",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-f8cdcfc2",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-f8cdcfc2",
  "@metamask-previews/ens-controller": "19.0.1-preview-f8cdcfc2",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-f8cdcfc2",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-f8cdcfc2",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-f8cdcfc2",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-f8cdcfc2",
  "@metamask-previews/foundryup": "1.0.1-preview-f8cdcfc2",
  "@metamask-previews/gas-fee-controller": "26.0.1-preview-f8cdcfc2",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-f8cdcfc2",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-f8cdcfc2",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-f8cdcfc2",
  "@metamask-previews/keyring-controller": "25.0.0-preview-f8cdcfc2",
  "@metamask-previews/logging-controller": "7.0.1-preview-f8cdcfc2",
  "@metamask-previews/message-manager": "14.1.0-preview-f8cdcfc2",
  "@metamask-previews/messenger": "0.3.0-preview-f8cdcfc2",
  "@metamask-previews/multichain-account-service": "5.0.0-preview-f8cdcfc2",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-f8cdcfc2",
  "@metamask-previews/multichain-network-controller": "3.0.1-preview-f8cdcfc2",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-f8cdcfc2",
  "@metamask-previews/name-controller": "9.0.0-preview-f8cdcfc2",
  "@metamask-previews/network-controller": "28.0.0-preview-f8cdcfc2",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-f8cdcfc2",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-f8cdcfc2",
  "@metamask-previews/permission-controller": "12.2.0-preview-f8cdcfc2",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-f8cdcfc2",
  "@metamask-previews/phishing-controller": "16.1.0-preview-f8cdcfc2",
  "@metamask-previews/polling-controller": "16.0.1-preview-f8cdcfc2",
  "@metamask-previews/preferences-controller": "22.0.0-preview-f8cdcfc2",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-f8cdcfc2",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-f8cdcfc2",
  "@metamask-previews/ramps-controller": "3.0.0-preview-f8cdcfc2",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-f8cdcfc2",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-f8cdcfc2",
  "@metamask-previews/sample-controllers": "4.0.1-preview-f8cdcfc2",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-f8cdcfc2",
  "@metamask-previews/selected-network-controller": "26.0.1-preview-f8cdcfc2",
  "@metamask-previews/shield-controller": "4.1.0-preview-f8cdcfc2",
  "@metamask-previews/signature-controller": "38.0.1-preview-f8cdcfc2",
  "@metamask-previews/storage-service": "0.0.1-preview-f8cdcfc2",
  "@metamask-previews/subscription-controller": "5.4.0-preview-f8cdcfc2",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-f8cdcfc2",
  "@metamask-previews/transaction-controller": "62.9.1-preview-f8cdcfc2",
  "@metamask-previews/transaction-pay-controller": "11.0.1-preview-f8cdcfc2",
  "@metamask-previews/user-operation-controller": "41.0.1-preview-f8cdcfc2"
}

@salimtb salimtb added this pull request to the merge queue Jan 14, 2026
* @param index - The SLIP-44 coin type index (e.g., 60 for ETH, 0 for BTC)
* @returns The SLIP-44 entry with metadata, or undefined if not found
*/
static getSlip44Entry(index: number): Slip44Entry | undefined {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a use case for this method at the client? I cannot see it being currently used and the parameter name (index) is a bit confusing.

If there are no plans to use it I'd use remove it until it's needed, but otherwise we can rename index to chainId like in getSlip44ByChainId.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i don't need this method anymore , the one we need is the getSlip44ByChainId, i'll remove it in a separated PR now

Merged via the queue into main with commit 98ebd34 Jan 14, 2026
290 checks passed
@salimtb salimtb deleted the feat/add-slip44-identfiers-for-added-chains branch January 14, 2026 13:58
// Fall back to symbol lookup if provided
if (symbol) {
return this.getSlip44BySymbol(symbol);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are quite a few entries with repeated symbols in the imported json. This does not look very safe.

LBTC
LKY
LTO
LUM
MONK
MTR
NXT
ONE
PAC
RYO
SAFE
SAMA
SBC
SCR
SUM
TAO
UC
VAL
VARA
XCH
XEC
XRD

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm actually using this only for non evm ( BTC, SOL, Tron ) , they are unique , for evm the provider https://chainid.network/chains.json is used

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so the case of duplicated symbols is handled

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe i should remove the fallback here , is this your point ?

@salimtb salimtb mentioned this pull request Jan 14, 2026
4 tasks
github-merge-queue bot pushed a commit that referenced this pull request Jan 14, 2026
## Explanation

The `Slip44Service` was introduced in #7609 to look up SLIP-44 coin
types for building native asset identifiers (CAIP-19). However, the
initial API had some complexity that wasn't necessary:

1. The `getSlip44ByChainId` method had an optional `symbol` parameter
for fallback, but this fallback logic was confusing since EVM networks
should use chain ID lookup and non-EVM networks should use symbol lookup
- mixing them in one method added unnecessary complexity.

2. The method could return `undefined` for unknown EVM chains, but since
EVM networks are all Ethereum-compatible, defaulting to 60 (Ethereum's
SLIP-44 coin type) is a reasonable and safe default.

3. The `getSlip44Entry` method and `Slip44Entry` type export weren't
being used anywhere.

This PR cleans up the service by:
- Renaming `getSlip44ByChainId` → `getEvmSlip44` to make it explicit
that it's for EVM networks only
- Removing the optional `symbol` fallback parameter (use
`getSlip44BySymbol` directly for non-EVM networks)
- Always returning `60` (Ethereum) as the default for unknown EVM chain
IDs instead of `undefined`
- Removing the unused `getSlip44Entry` method and `Slip44Entry` type
export
- Updating the `NetworkEnablementController` to no longer pass the
native currency symbol to the lookup function

## References

- Follow-up cleanup to #7609

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Streamlines SLIP-44 resolution and aligns controller usage.
> 
> - Rename `getSlip44ByChainId` → `getEvmSlip44` (EVM-only) and always
default to coin type `60` when unmapped
> - Remove symbol fallback from EVM lookup; use `getSlip44BySymbol` only
for non-EVM networks
> - Delete unused `getSlip44Entry` and its type/export; update
`services/index.ts` and package `index.ts` exports
> - Update `NetworkEnablementController` to call
`Slip44Service.getEvmSlip44`, stop passing native currency to
add-network handler, and parse references correctly
> - Adjust tests to mock/use `getEvmSlip44`, update expectations (e.g.,
`eip155:2` → `slip44:60`), and remove unused entry tests
> - Add changelog entry under "Fixed" for Slip44Service cleanup
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
47cfb4e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
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.

6 participants