feat(account-tree-controller): use `multichain-account-service` to build multichain account wallet/group nodes
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).
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
[!NOTE] Switches multichain (BIP-44) wallet/group construction to MultichainAccountService, listening to its events and skipping BIP-44 in AccountsController event handling.
- Controller (core):
- Use
MultichainAccountService:getMultichainAccountWalletsto buildAccountWalletType.Entropywallets andMultichainAccountgroups; remove entropy matching from controller.- Listen to
MultichainAccountService:{multichainAccountGroupCreated,multichainAccountGroupUpdated,walletStatusChange}to insert/update groups and wallet status post-init.- Skip BIP-44 accounts on
AccountsController:account{Added,Removed}; only process non-BIP-44 (Snap/Keyring) accounts.- Refactor naming: introduce
getEntropyDefaultAccountWalletNameandgetEntropyDefaultAccountGroupPrefix; keep computed group names with EVM priority and conflict resolution.- Maintain reverse mappings, pruning, ordering, and selected-group sync; add sorting helper for group accounts.
- Rules (entropy):
- Replace
EntropyRuleclass with pure helpers:getEntropyDefaultAccountWalletName,getEntropyComputedAccountGroupName,getEntropyDefaultAccountGroupPrefix.- Types/Messaging:
- Extend messenger actions/events to include MultichainAccountService wallets and group events.
- Tests:
- Update/expand tests to validate service-driven wallet/group creation, event handling, ordering, selection sync, and non-BIP-44 add/remove paths.
- Changelog:
- Mark BREAKING: multichain (BIP-44) nodes now sourced from
MultichainAccountService.Written by Cursor Bugbot for commit 88cb1ba9b59ccba0cee60a8226429e50aa314614. This will update automatically on new commits. Configure here.
@metamaskbot publish-preview
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"
}
@metamaskbot publish-preview
@metamaskbot publish-preview
@metamaskbot publish-preview
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"
}
@metamaskbot publish-preview
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": "1.5.0-preview-53e28985",
"@metamask-previews/accounts-controller": "33.1.1-preview-53e28985",
"@metamask-previews/address-book-controller": "6.2.0-preview-53e28985",
"@metamask-previews/announcement-controller": "7.1.0-preview-53e28985",
"@metamask-previews/app-metadata-controller": "1.1.0-preview-53e28985",
"@metamask-previews/approval-controller": "7.2.0-preview-53e28985",
"@metamask-previews/assets-controllers": "82.0.0-preview-53e28985",
"@metamask-previews/base-controller": "8.4.2-preview-53e28985",
"@metamask-previews/bridge-controller": "54.0.0-preview-53e28985",
"@metamask-previews/bridge-status-controller": "54.0.0-preview-53e28985",
"@metamask-previews/build-utils": "3.0.4-preview-53e28985",
"@metamask-previews/chain-agnostic-permission": "1.2.0-preview-53e28985",
"@metamask-previews/composable-controller": "11.1.0-preview-53e28985",
"@metamask-previews/controller-utils": "11.14.1-preview-53e28985",
"@metamask-previews/core-backend": "2.1.0-preview-53e28985",
"@metamask-previews/delegation-controller": "0.8.0-preview-53e28985",
"@metamask-previews/earn-controller": "8.0.1-preview-53e28985",
"@metamask-previews/eip-5792-middleware": "1.2.3-preview-53e28985",
"@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-53e28985",
"@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-53e28985",
"@metamask-previews/ens-controller": "17.1.0-preview-53e28985",
"@metamask-previews/error-reporting-service": "2.2.1-preview-53e28985",
"@metamask-previews/eth-block-tracker": "14.0.0-preview-53e28985",
"@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-53e28985",
"@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-53e28985",
"@metamask-previews/foundryup": "1.0.1-preview-53e28985",
"@metamask-previews/gas-fee-controller": "24.1.0-preview-53e28985",
"@metamask-previews/gator-permissions-controller": "0.2.1-preview-53e28985",
"@metamask-previews/json-rpc-engine": "10.1.1-preview-53e28985",
"@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-53e28985",
"@metamask-previews/keyring-controller": "23.1.1-preview-53e28985",
"@metamask-previews/logging-controller": "6.1.0-preview-53e28985",
"@metamask-previews/message-manager": "13.0.1-preview-53e28985",
"@metamask-previews/messenger": "0.3.0-preview-53e28985",
"@metamask-previews/multichain-account-service": "1.6.1-preview-53e28985",
"@metamask-previews/multichain-api-middleware": "1.2.1-preview-53e28985",
"@metamask-previews/multichain-network-controller": "1.0.1-preview-53e28985",
"@metamask-previews/multichain-transactions-controller": "5.1.0-preview-53e28985",
"@metamask-previews/name-controller": "8.1.0-preview-53e28985",
"@metamask-previews/network-controller": "24.3.0-preview-53e28985",
"@metamask-previews/network-enablement-controller": "2.1.1-preview-53e28985",
"@metamask-previews/notification-services-controller": "18.3.0-preview-53e28985",
"@metamask-previews/permission-controller": "11.1.0-preview-53e28985",
"@metamask-previews/permission-log-controller": "4.1.0-preview-53e28985",
"@metamask-previews/phishing-controller": "14.1.2-preview-53e28985",
"@metamask-previews/polling-controller": "14.0.1-preview-53e28985",
"@metamask-previews/preferences-controller": "20.1.0-preview-53e28985",
"@metamask-previews/profile-sync-controller": "25.1.1-preview-53e28985",
"@metamask-previews/rate-limit-controller": "6.1.0-preview-53e28985",
"@metamask-previews/remote-feature-flag-controller": "1.9.0-preview-53e28985",
"@metamask-previews/sample-controllers": "2.0.1-preview-53e28985",
"@metamask-previews/seedless-onboarding-controller": "4.1.0-preview-53e28985",
"@metamask-previews/selected-network-controller": "24.0.1-preview-53e28985",
"@metamask-previews/shield-controller": "0.3.2-preview-53e28985",
"@metamask-previews/signature-controller": "34.0.1-preview-53e28985",
"@metamask-previews/subscription-controller": "2.0.0-preview-53e28985",
"@metamask-previews/token-search-discovery-controller": "3.5.0-preview-53e28985",
"@metamask-previews/transaction-controller": "60.9.0-preview-53e28985",
"@metamask-previews/user-operation-controller": "39.2.0-preview-53e28985"
}
@metamaskbot publish-previews
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": "2.0.0-preview-3d9bbf60",
"@metamask-previews/accounts-controller": "34.0.0-preview-3d9bbf60",
"@metamask-previews/address-book-controller": "7.0.0-preview-3d9bbf60",
"@metamask-previews/announcement-controller": "8.0.0-preview-3d9bbf60",
"@metamask-previews/app-metadata-controller": "2.0.0-preview-3d9bbf60",
"@metamask-previews/approval-controller": "8.0.0-preview-3d9bbf60",
"@metamask-previews/assets-controllers": "84.0.0-preview-3d9bbf60",
"@metamask-previews/base-controller": "9.0.0-preview-3d9bbf60",
"@metamask-previews/bridge-controller": "56.0.0-preview-3d9bbf60",
"@metamask-previews/bridge-status-controller": "56.0.0-preview-3d9bbf60",
"@metamask-previews/build-utils": "3.0.4-preview-3d9bbf60",
"@metamask-previews/chain-agnostic-permission": "1.2.1-preview-3d9bbf60",
"@metamask-previews/composable-controller": "12.0.0-preview-3d9bbf60",
"@metamask-previews/controller-utils": "11.14.1-preview-3d9bbf60",
"@metamask-previews/core-backend": "4.0.0-preview-3d9bbf60",
"@metamask-previews/delegation-controller": "1.0.0-preview-3d9bbf60",
"@metamask-previews/earn-controller": "9.0.0-preview-3d9bbf60",
"@metamask-previews/eip-5792-middleware": "2.0.0-preview-3d9bbf60",
"@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-3d9bbf60",
"@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-3d9bbf60",
"@metamask-previews/ens-controller": "18.0.0-preview-3d9bbf60",
"@metamask-previews/error-reporting-service": "3.0.0-preview-3d9bbf60",
"@metamask-previews/eth-block-tracker": "14.0.0-preview-3d9bbf60",
"@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-3d9bbf60",
"@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-3d9bbf60",
"@metamask-previews/foundryup": "1.0.1-preview-3d9bbf60",
"@metamask-previews/gas-fee-controller": "25.0.0-preview-3d9bbf60",
"@metamask-previews/gator-permissions-controller": "0.3.0-preview-3d9bbf60",
"@metamask-previews/json-rpc-engine": "10.1.1-preview-3d9bbf60",
"@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-3d9bbf60",
"@metamask-previews/keyring-controller": "24.0.0-preview-3d9bbf60",
"@metamask-previews/logging-controller": "7.0.0-preview-3d9bbf60",
"@metamask-previews/message-manager": "14.0.0-preview-3d9bbf60",
"@metamask-previews/messenger": "0.3.0-preview-3d9bbf60",
"@metamask-previews/multichain-account-service": "2.0.0-preview-3d9bbf60",
"@metamask-previews/multichain-api-middleware": "1.2.2-preview-3d9bbf60",
"@metamask-previews/multichain-network-controller": "2.0.0-preview-3d9bbf60",
"@metamask-previews/multichain-transactions-controller": "6.0.0-preview-3d9bbf60",
"@metamask-previews/name-controller": "9.0.0-preview-3d9bbf60",
"@metamask-previews/network-controller": "25.0.0-preview-3d9bbf60",
"@metamask-previews/network-enablement-controller": "3.0.0-preview-3d9bbf60",
"@metamask-previews/notification-services-controller": "19.0.0-preview-3d9bbf60",
"@metamask-previews/permission-controller": "12.0.0-preview-3d9bbf60",
"@metamask-previews/permission-log-controller": "5.0.0-preview-3d9bbf60",
"@metamask-previews/phishing-controller": "15.0.0-preview-3d9bbf60",
"@metamask-previews/polling-controller": "15.0.0-preview-3d9bbf60",
"@metamask-previews/preferences-controller": "21.0.0-preview-3d9bbf60",
"@metamask-previews/profile-sync-controller": "26.0.0-preview-3d9bbf60",
"@metamask-previews/rate-limit-controller": "7.0.0-preview-3d9bbf60",
"@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-3d9bbf60",
"@metamask-previews/sample-controllers": "3.0.0-preview-3d9bbf60",
"@metamask-previews/seedless-onboarding-controller": "5.0.0-preview-3d9bbf60",
"@metamask-previews/selected-network-controller": "25.0.0-preview-3d9bbf60",
"@metamask-previews/shield-controller": "1.0.0-preview-3d9bbf60",
"@metamask-previews/signature-controller": "35.0.0-preview-3d9bbf60",
"@metamask-previews/subscription-controller": "3.0.0-preview-3d9bbf60",
"@metamask-previews/token-search-discovery-controller": "4.0.0-preview-3d9bbf60",
"@metamask-previews/transaction-controller": "61.0.0-preview-3d9bbf60",
"@metamask-previews/user-operation-controller": "40.0.0-preview-3d9bbf60"
}