Skip to content

feat: enhance account name generation for multichain accounts #5382

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

PatrykLucka
Copy link
Contributor

@PatrykLucka PatrykLucka commented Feb 24, 2025

Explanation

This PR updates the getNextAvailableAccountName function in the AccountsController to change the way new acocunts is generated, allowing to support Solana and Bitcoin accounts names generation. It makes getNextAvailableAccountName function parameter optional with a default value of KeyringTypes.hd.

New Account Naming Rules:

Calculate the Number of Accounts:

  1. Accounts are named using the format: prefix + "Account" + Account number.
    The Account number is determined by summing the following:

    • All eth-hd-keyring accounts.

    • All simple keyring accounts.

    • All snap accounts that have an account.options.entropySource referring to an eth-hd-keyring.

    • Add 1 to the total sum.

  2. Check the Highest Existing Account Number:

Identify the highest Account number currently in the state that starts with Account, Solana Account, or Bitcoin Account.
Determine the Higher Number:

  1. Compare the results from steps 1 and 2, and use the higher number.

References

Jira ricket

Changelog

@metamask/accounts-controller

  • : Made getNextAvailableAccountName parameter single, optional property with default KeyringTypes.hd
  • : getNextAvailableAccountName follows different logic of name generation

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 highlighted breaking changes using the "BREAKING" category above as appropriate
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@PatrykLucka PatrykLucka self-assigned this Feb 24, 2025
@PatrykLucka PatrykLucka force-pushed the multi-chain-account-name-generation branch from ab5de2b to 95a6811 Compare February 24, 2025 12:00
@PatrykLucka
Copy link
Contributor Author

@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/accounts-controller": "24.0.1-preview-95a6811",
  "@metamask-previews/address-book-controller": "6.0.3-preview-95a6811",
  "@metamask-previews/announcement-controller": "7.0.3-preview-95a6811",
  "@metamask-previews/approval-controller": "7.1.3-preview-95a6811",
  "@metamask-previews/assets-controllers": "51.0.1-preview-95a6811",
  "@metamask-previews/base-controller": "8.0.0-preview-95a6811",
  "@metamask-previews/bridge-controller": "1.0.0-preview-95a6811",
  "@metamask-previews/bridge-status-controller": "1.0.0-preview-95a6811",
  "@metamask-previews/build-utils": "3.0.3-preview-95a6811",
  "@metamask-previews/composable-controller": "11.0.0-preview-95a6811",
  "@metamask-previews/controller-utils": "11.5.0-preview-95a6811",
  "@metamask-previews/earn-controller": "0.5.0-preview-95a6811",
  "@metamask-previews/ens-controller": "15.0.2-preview-95a6811",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-95a6811",
  "@metamask-previews/gas-fee-controller": "22.0.3-preview-95a6811",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-95a6811",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-95a6811",
  "@metamask-previews/keyring-controller": "19.2.1-preview-95a6811",
  "@metamask-previews/logging-controller": "6.0.4-preview-95a6811",
  "@metamask-previews/message-manager": "12.0.1-preview-95a6811",
  "@metamask-previews/multichain": "2.2.0-preview-95a6811",
  "@metamask-previews/multichain-network-controller": "0.1.2-preview-95a6811",
  "@metamask-previews/multichain-transactions-controller": "0.5.0-preview-95a6811",
  "@metamask-previews/name-controller": "8.0.3-preview-95a6811",
  "@metamask-previews/network-controller": "22.2.1-preview-95a6811",
  "@metamask-previews/notification-services-controller": "1.0.0-preview-95a6811",
  "@metamask-previews/permission-controller": "11.0.6-preview-95a6811",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-95a6811",
  "@metamask-previews/phishing-controller": "12.3.2-preview-95a6811",
  "@metamask-previews/polling-controller": "12.0.3-preview-95a6811",
  "@metamask-previews/preferences-controller": "15.0.2-preview-95a6811",
  "@metamask-previews/profile-sync-controller": "8.1.1-preview-95a6811",
  "@metamask-previews/queued-request-controller": "9.0.1-preview-95a6811",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-95a6811",
  "@metamask-previews/remote-feature-flag-controller": "1.5.0-preview-95a6811",
  "@metamask-previews/selected-network-controller": "21.0.1-preview-95a6811",
  "@metamask-previews/signature-controller": "23.2.1-preview-95a6811",
  "@metamask-previews/token-search-discovery-controller": "2.1.0-preview-95a6811",
  "@metamask-previews/transaction-controller": "46.0.0-preview-95a6811",
  "@metamask-previews/user-operation-controller": "25.0.0-preview-95a6811"
}

@PatrykLucka PatrykLucka force-pushed the multi-chain-account-name-generation branch from 95a6811 to def92ff Compare February 27, 2025 10:02
@PatrykLucka
Copy link
Contributor Author

@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/accounts-controller": "24.0.1-preview-def92ff7",
  "@metamask-previews/address-book-controller": "6.0.3-preview-def92ff7",
  "@metamask-previews/announcement-controller": "7.0.3-preview-def92ff7",
  "@metamask-previews/approval-controller": "7.1.3-preview-def92ff7",
  "@metamask-previews/assets-controllers": "51.0.1-preview-def92ff7",
  "@metamask-previews/base-controller": "8.0.0-preview-def92ff7",
  "@metamask-previews/bridge-controller": "1.0.0-preview-def92ff7",
  "@metamask-previews/bridge-status-controller": "1.0.0-preview-def92ff7",
  "@metamask-previews/build-utils": "3.0.3-preview-def92ff7",
  "@metamask-previews/composable-controller": "11.0.0-preview-def92ff7",
  "@metamask-previews/controller-utils": "11.5.0-preview-def92ff7",
  "@metamask-previews/earn-controller": "0.5.0-preview-def92ff7",
  "@metamask-previews/ens-controller": "15.0.2-preview-def92ff7",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-def92ff7",
  "@metamask-previews/gas-fee-controller": "22.0.3-preview-def92ff7",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-def92ff7",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-def92ff7",
  "@metamask-previews/keyring-controller": "19.2.1-preview-def92ff7",
  "@metamask-previews/logging-controller": "6.0.4-preview-def92ff7",
  "@metamask-previews/message-manager": "12.0.1-preview-def92ff7",
  "@metamask-previews/multichain": "2.2.0-preview-def92ff7",
  "@metamask-previews/multichain-network-controller": "0.1.2-preview-def92ff7",
  "@metamask-previews/multichain-transactions-controller": "0.5.0-preview-def92ff7",
  "@metamask-previews/name-controller": "8.0.3-preview-def92ff7",
  "@metamask-previews/network-controller": "22.2.1-preview-def92ff7",
  "@metamask-previews/notification-services-controller": "1.0.0-preview-def92ff7",
  "@metamask-previews/permission-controller": "11.0.6-preview-def92ff7",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-def92ff7",
  "@metamask-previews/phishing-controller": "12.3.2-preview-def92ff7",
  "@metamask-previews/polling-controller": "12.0.3-preview-def92ff7",
  "@metamask-previews/preferences-controller": "15.0.2-preview-def92ff7",
  "@metamask-previews/profile-sync-controller": "8.1.1-preview-def92ff7",
  "@metamask-previews/queued-request-controller": "9.0.1-preview-def92ff7",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-def92ff7",
  "@metamask-previews/remote-feature-flag-controller": "1.5.0-preview-def92ff7",
  "@metamask-previews/selected-network-controller": "21.0.1-preview-def92ff7",
  "@metamask-previews/signature-controller": "23.2.1-preview-def92ff7",
  "@metamask-previews/token-search-discovery-controller": "2.1.0-preview-def92ff7",
  "@metamask-previews/transaction-controller": "46.0.0-preview-def92ff7",
  "@metamask-previews/user-operation-controller": "25.0.0-preview-def92ff7"
}

@PatrykLucka PatrykLucka force-pushed the multi-chain-account-name-generation branch from def92ff to 9882740 Compare February 27, 2025 10:41
Copy link

socket-security bot commented Feb 27, 2025

No dependency changes detected. Learn more about Socket for GitHub ↗︎

👍 No dependency changes detected in pull request

@PatrykLucka PatrykLucka force-pushed the multi-chain-account-name-generation branch from 509bc9d to 5547897 Compare February 27, 2025 10:51
@PatrykLucka PatrykLucka force-pushed the multi-chain-account-name-generation branch from c348f27 to edbe12d Compare February 27, 2025 10:55
@PatrykLucka
Copy link
Contributor Author

@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/accounts-controller": "24.1.0-preview-edbe12d8",
  "@metamask-previews/address-book-controller": "6.0.3-preview-edbe12d8",
  "@metamask-previews/announcement-controller": "7.0.3-preview-edbe12d8",
  "@metamask-previews/approval-controller": "7.1.3-preview-edbe12d8",
  "@metamask-previews/assets-controllers": "51.0.2-preview-edbe12d8",
  "@metamask-previews/base-controller": "8.0.0-preview-edbe12d8",
  "@metamask-previews/bridge-controller": "1.0.0-preview-edbe12d8",
  "@metamask-previews/bridge-status-controller": "1.0.0-preview-edbe12d8",
  "@metamask-previews/build-utils": "3.0.3-preview-edbe12d8",
  "@metamask-previews/composable-controller": "11.0.0-preview-edbe12d8",
  "@metamask-previews/controller-utils": "11.5.0-preview-edbe12d8",
  "@metamask-previews/earn-controller": "0.5.0-preview-edbe12d8",
  "@metamask-previews/ens-controller": "15.0.2-preview-edbe12d8",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-edbe12d8",
  "@metamask-previews/gas-fee-controller": "22.0.3-preview-edbe12d8",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-edbe12d8",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-edbe12d8",
  "@metamask-previews/keyring-controller": "19.2.1-preview-edbe12d8",
  "@metamask-previews/logging-controller": "6.0.4-preview-edbe12d8",
  "@metamask-previews/message-manager": "12.0.1-preview-edbe12d8",
  "@metamask-previews/multichain": "3.0.0-preview-edbe12d8",
  "@metamask-previews/multichain-network-controller": "0.1.2-preview-edbe12d8",
  "@metamask-previews/multichain-transactions-controller": "0.5.0-preview-edbe12d8",
  "@metamask-previews/name-controller": "8.0.3-preview-edbe12d8",
  "@metamask-previews/network-controller": "22.2.1-preview-edbe12d8",
  "@metamask-previews/notification-services-controller": "1.0.0-preview-edbe12d8",
  "@metamask-previews/permission-controller": "11.0.6-preview-edbe12d8",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-edbe12d8",
  "@metamask-previews/phishing-controller": "12.4.0-preview-edbe12d8",
  "@metamask-previews/polling-controller": "12.0.3-preview-edbe12d8",
  "@metamask-previews/preferences-controller": "15.0.2-preview-edbe12d8",
  "@metamask-previews/profile-sync-controller": "8.1.1-preview-edbe12d8",
  "@metamask-previews/queued-request-controller": "9.0.1-preview-edbe12d8",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-edbe12d8",
  "@metamask-previews/remote-feature-flag-controller": "1.5.0-preview-edbe12d8",
  "@metamask-previews/selected-network-controller": "21.0.1-preview-edbe12d8",
  "@metamask-previews/signature-controller": "23.2.1-preview-edbe12d8",
  "@metamask-previews/token-search-discovery-controller": "2.1.0-preview-edbe12d8",
  "@metamask-previews/transaction-controller": "46.0.0-preview-edbe12d8",
  "@metamask-previews/user-operation-controller": "25.0.0-preview-edbe12d8"
}

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

Successfully merging this pull request may close these issues.

2 participants