Skip to content

Conversation

ccharly
Copy link
Contributor

@ccharly ccharly commented Sep 17, 2025

Explanation

The multichain-account-service is responsible of holding/grouping all BIP-44 accounts together (in wallets and groups).

The account-tree-controller was re-using a similar matching logic to build it's tree and match those wallets and groups. But... In reality, this is the responsibility of the service and thus, the controller should "consume" the wallets/groups from the service directly.

Architecture wise, this is more correct, and other kind of wallets could follow the same pattern (having 1 wallet for each keyring types and 1 wallet for each other kind of account management Snaps).

This also fixes an issue with backup & sync which was listening to :accountAdded even for BIP-44 accounts. The problem was because the EvmAccountProvider is sometimes temporarily creating an account in order to get its associated address (during discovery) and then remove it afterward. Since backup & sync does not handle account deletion, this temporary account was triggering an account group creation on backup & sync, thus, "persisting" this account on the user remote profile.

References

N/A

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, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@ccharly
Copy link
Contributor Author

ccharly commented Sep 17, 2025

@metamaskbot publish-preview

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": "0.15.1-preview-4390b9dd",
  "@metamask-previews/accounts-controller": "33.1.0-preview-4390b9dd",
  "@metamask-previews/address-book-controller": "6.1.1-preview-4390b9dd",
  "@metamask-previews/announcement-controller": "7.0.3-preview-4390b9dd",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-4390b9dd",
  "@metamask-previews/approval-controller": "7.1.3-preview-4390b9dd",
  "@metamask-previews/assets-controllers": "75.2.0-preview-4390b9dd",
  "@metamask-previews/base-controller": "8.4.0-preview-4390b9dd",
  "@metamask-previews/bridge-controller": "43.0.0-preview-4390b9dd",
  "@metamask-previews/bridge-status-controller": "43.0.0-preview-4390b9dd",
  "@metamask-previews/build-utils": "3.0.3-preview-4390b9dd",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-4390b9dd",
  "@metamask-previews/composable-controller": "11.0.0-preview-4390b9dd",
  "@metamask-previews/controller-utils": "11.14.0-preview-4390b9dd",
  "@metamask-previews/delegation-controller": "0.7.0-preview-4390b9dd",
  "@metamask-previews/earn-controller": "7.0.0-preview-4390b9dd",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-4390b9dd",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-4390b9dd",
  "@metamask-previews/ens-controller": "17.0.1-preview-4390b9dd",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-4390b9dd",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-4390b9dd",
  "@metamask-previews/foundryup": "1.0.1-preview-4390b9dd",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-4390b9dd",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-4390b9dd",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-4390b9dd",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-4390b9dd",
  "@metamask-previews/keyring-controller": "23.1.0-preview-4390b9dd",
  "@metamask-previews/logging-controller": "6.0.4-preview-4390b9dd",
  "@metamask-previews/message-manager": "12.0.2-preview-4390b9dd",
  "@metamask-previews/messenger": "0.3.0-preview-4390b9dd",
  "@metamask-previews/multichain-account-service": "0.8.0-preview-4390b9dd",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-4390b9dd",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-4390b9dd",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-4390b9dd",
  "@metamask-previews/name-controller": "8.0.3-preview-4390b9dd",
  "@metamask-previews/network-controller": "24.1.0-preview-4390b9dd",
  "@metamask-previews/network-enablement-controller": "1.1.0-preview-4390b9dd",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-4390b9dd",
  "@metamask-previews/permission-controller": "11.0.6-preview-4390b9dd",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-4390b9dd",
  "@metamask-previews/phishing-controller": "13.1.0-preview-4390b9dd",
  "@metamask-previews/polling-controller": "14.0.0-preview-4390b9dd",
  "@metamask-previews/preferences-controller": "19.0.0-preview-4390b9dd",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-4390b9dd",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-4390b9dd",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-4390b9dd",
  "@metamask-previews/sample-controllers": "1.0.0-preview-4390b9dd",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-4390b9dd",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-4390b9dd",
  "@metamask-previews/shield-controller": "0.1.2-preview-4390b9dd",
  "@metamask-previews/signature-controller": "33.0.0-preview-4390b9dd",
  "@metamask-previews/subscription-controller": "0.1.0-preview-4390b9dd",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-4390b9dd",
  "@metamask-previews/transaction-controller": "60.3.0-preview-4390b9dd",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-4390b9dd"
}

@ccharly ccharly force-pushed the feat/account-tree-controller-use-service branch from 4390b9d to c5de1f5 Compare September 17, 2025 21:40
@ccharly
Copy link
Contributor Author

ccharly commented Sep 17, 2025

@metamaskbot publish-preview

@ccharly
Copy link
Contributor Author

ccharly commented Sep 18, 2025

@metamaskbot publish-preview

@ccharly
Copy link
Contributor Author

ccharly commented Sep 18, 2025

@metamaskbot publish-preview

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": "0.16.1-preview-591781b",
  "@metamask-previews/accounts-controller": "33.1.0-preview-591781b",
  "@metamask-previews/address-book-controller": "6.1.1-preview-591781b",
  "@metamask-previews/announcement-controller": "7.0.3-preview-591781b",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-591781b",
  "@metamask-previews/approval-controller": "7.1.3-preview-591781b",
  "@metamask-previews/assets-controllers": "75.2.0-preview-591781b",
  "@metamask-previews/base-controller": "8.4.0-preview-591781b",
  "@metamask-previews/bridge-controller": "43.1.0-preview-591781b",
  "@metamask-previews/bridge-status-controller": "43.1.0-preview-591781b",
  "@metamask-previews/build-utils": "3.0.3-preview-591781b",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-591781b",
  "@metamask-previews/composable-controller": "11.0.0-preview-591781b",
  "@metamask-previews/controller-utils": "11.14.0-preview-591781b",
  "@metamask-previews/delegation-controller": "0.7.0-preview-591781b",
  "@metamask-previews/earn-controller": "7.0.0-preview-591781b",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-591781b",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-591781b",
  "@metamask-previews/ens-controller": "17.0.1-preview-591781b",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-591781b",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-591781b",
  "@metamask-previews/foundryup": "1.0.1-preview-591781b",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-591781b",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-591781b",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-591781b",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-591781b",
  "@metamask-previews/keyring-controller": "23.1.0-preview-591781b",
  "@metamask-previews/logging-controller": "6.0.4-preview-591781b",
  "@metamask-previews/message-manager": "12.0.2-preview-591781b",
  "@metamask-previews/messenger": "0.3.0-preview-591781b",
  "@metamask-previews/multichain-account-service": "0.9.0-preview-591781b",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-591781b",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-591781b",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-591781b",
  "@metamask-previews/name-controller": "8.0.3-preview-591781b",
  "@metamask-previews/network-controller": "24.1.0-preview-591781b",
  "@metamask-previews/network-enablement-controller": "1.1.0-preview-591781b",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-591781b",
  "@metamask-previews/permission-controller": "11.0.6-preview-591781b",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-591781b",
  "@metamask-previews/phishing-controller": "13.1.0-preview-591781b",
  "@metamask-previews/polling-controller": "14.0.0-preview-591781b",
  "@metamask-previews/preferences-controller": "19.0.0-preview-591781b",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-591781b",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-591781b",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-591781b",
  "@metamask-previews/sample-controllers": "1.0.0-preview-591781b",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-591781b",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-591781b",
  "@metamask-previews/shield-controller": "0.1.2-preview-591781b",
  "@metamask-previews/signature-controller": "33.0.0-preview-591781b",
  "@metamask-previews/subscription-controller": "0.1.0-preview-591781b",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-591781b",
  "@metamask-previews/transaction-controller": "60.4.0-preview-591781b",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-591781b"
}

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