Skip to content

refactor: cache vault data while unlock - #6205

Merged
lwin-kyaw merged 6 commits into
mainfrom
feat/seedless-state-update
Aug 29, 2025
Merged

refactor: cache vault data while unlock#6205
lwin-kyaw merged 6 commits into
mainfrom
feat/seedless-state-update

Conversation

@lwin-kyaw

@lwin-kyawlwin-kyaw commented Jul 29, 2025

Copy link
Copy Markdown
Contributor

Explanation

This PR includes some refactors and optimizations of vault operations (lock/unlock) in the SeedlessOnboarding controller.

  • refactor vault unlock/lock (serialize, deserialize, parse)
  • cache unlocked vault data in the controller when vault is unlocked, to avoid multiple crypto operations which are CPU-intensive.

References

Changelog

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

@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
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.7.0-preview-1abef88",
"@metamask-previews/accounts-controller": "32.0.1-preview-1abef88",
"@metamask-previews/address-book-controller": "6.1.1-preview-1abef88",
"@metamask-previews/announcement-controller": "7.0.3-preview-1abef88",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-1abef88",
"@metamask-previews/approval-controller": "7.1.3-preview-1abef88",
"@metamask-previews/assets-controllers": "73.0.0-preview-1abef88",
"@metamask-previews/base-controller": "8.0.1-preview-1abef88",
"@metamask-previews/bridge-controller": "37.0.0-preview-1abef88",
"@metamask-previews/bridge-status-controller": "37.0.0-preview-1abef88",
"@metamask-previews/build-utils": "3.0.3-preview-1abef88",
"@metamask-previews/chain-agnostic-permission": "1.0.0-preview-1abef88",
"@metamask-previews/composable-controller": "11.0.0-preview-1abef88",
"@metamask-previews/controller-utils": "11.11.0-preview-1abef88",
"@metamask-previews/delegation-controller": "0.6.0-preview-1abef88",
"@metamask-previews/earn-controller": "4.0.0-preview-1abef88",
"@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-1abef88",
"@metamask-previews/ens-controller": "17.0.1-preview-1abef88",
"@metamask-previews/error-reporting-service": "2.0.0-preview-1abef88",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-1abef88",
"@metamask-previews/foundryup": "1.0.0-preview-1abef88",
"@metamask-previews/gas-fee-controller": "24.0.0-preview-1abef88",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-1abef88",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-1abef88",
"@metamask-previews/keyring-controller": "22.1.0-preview-1abef88",
"@metamask-previews/logging-controller": "6.0.4-preview-1abef88",
"@metamask-previews/message-manager": "12.0.2-preview-1abef88",
"@metamask-previews/messenger": "0.0.0-preview-1abef88",
"@metamask-previews/multichain-account-service": "0.3.0-preview-1abef88",
"@metamask-previews/multichain-api-middleware": "1.0.0-preview-1abef88",
"@metamask-previews/multichain-network-controller": "0.11.0-preview-1abef88",
"@metamask-previews/multichain-transactions-controller": "4.0.0-preview-1abef88",
"@metamask-previews/name-controller": "8.0.3-preview-1abef88",
"@metamask-previews/network-controller": "24.0.1-preview-1abef88",
"@metamask-previews/notification-services-controller": "15.0.0-preview-1abef88",
"@metamask-previews/permission-controller": "11.0.6-preview-1abef88",
"@metamask-previews/permission-log-controller": "4.0.0-preview-1abef88",
"@metamask-previews/phishing-controller": "13.1.0-preview-1abef88",
"@metamask-previews/polling-controller": "14.0.0-preview-1abef88",
"@metamask-previews/preferences-controller": "18.4.1-preview-1abef88",
"@metamask-previews/profile-sync-controller": "22.0.0-preview-1abef88",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-1abef88",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-1abef88",
"@metamask-previews/sample-controllers": "1.0.0-preview-1abef88",
"@metamask-previews/seedless-onboarding-controller": "2.5.0-preview-1abef88",
"@metamask-previews/selected-network-controller": "23.0.0-preview-1abef88",
"@metamask-previews/signature-controller": "32.0.0-preview-1abef88",
"@metamask-previews/token-search-discovery-controller": "3.3.0-preview-1abef88",
"@metamask-previews/transaction-controller": "59.0.0-preview-1abef88",
"@metamask-previews/user-operation-controller": "38.0.0-preview-1abef88"
}

@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@lwin-kyawlwin-kyaw changed the title chore: exports seedless-onboarding allowed actions/eventsfeat: restructure controller state after vault unlockJul 29, 2025
@github-actions

Copy link
Copy Markdown
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.7.0-preview-b8352c78",
"@metamask-previews/accounts-controller": "32.0.1-preview-b8352c78",
"@metamask-previews/address-book-controller": "6.1.1-preview-b8352c78",
"@metamask-previews/announcement-controller": "7.0.3-preview-b8352c78",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-b8352c78",
"@metamask-previews/approval-controller": "7.1.3-preview-b8352c78",
"@metamask-previews/assets-controllers": "73.0.0-preview-b8352c78",
"@metamask-previews/base-controller": "8.0.1-preview-b8352c78",
"@metamask-previews/bridge-controller": "37.0.0-preview-b8352c78",
"@metamask-previews/bridge-status-controller": "37.0.0-preview-b8352c78",
"@metamask-previews/build-utils": "3.0.3-preview-b8352c78",
"@metamask-previews/chain-agnostic-permission": "1.0.0-preview-b8352c78",
"@metamask-previews/composable-controller": "11.0.0-preview-b8352c78",
"@metamask-previews/controller-utils": "11.11.0-preview-b8352c78",
"@metamask-previews/delegation-controller": "0.6.0-preview-b8352c78",
"@metamask-previews/earn-controller": "4.0.0-preview-b8352c78",
"@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-b8352c78",
"@metamask-previews/ens-controller": "17.0.1-preview-b8352c78",
"@metamask-previews/error-reporting-service": "2.0.0-preview-b8352c78",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-b8352c78",
"@metamask-previews/foundryup": "1.0.0-preview-b8352c78",
"@metamask-previews/gas-fee-controller": "24.0.0-preview-b8352c78",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-b8352c78",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-b8352c78",
"@metamask-previews/keyring-controller": "22.1.0-preview-b8352c78",
"@metamask-previews/logging-controller": "6.0.4-preview-b8352c78",
"@metamask-previews/message-manager": "12.0.2-preview-b8352c78",
"@metamask-previews/messenger": "0.0.0-preview-b8352c78",
"@metamask-previews/multichain-account-service": "0.3.0-preview-b8352c78",
"@metamask-previews/multichain-api-middleware": "1.0.0-preview-b8352c78",
"@metamask-previews/multichain-network-controller": "0.11.0-preview-b8352c78",
"@metamask-previews/multichain-transactions-controller": "4.0.0-preview-b8352c78",
"@metamask-previews/name-controller": "8.0.3-preview-b8352c78",
"@metamask-previews/network-controller": "24.0.1-preview-b8352c78",
"@metamask-previews/notification-services-controller": "15.0.0-preview-b8352c78",
"@metamask-previews/permission-controller": "11.0.6-preview-b8352c78",
"@metamask-previews/permission-log-controller": "4.0.0-preview-b8352c78",
"@metamask-previews/phishing-controller": "13.1.0-preview-b8352c78",
"@metamask-previews/polling-controller": "14.0.0-preview-b8352c78",
"@metamask-previews/preferences-controller": "18.4.1-preview-b8352c78",
"@metamask-previews/profile-sync-controller": "22.0.0-preview-b8352c78",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-b8352c78",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-b8352c78",
"@metamask-previews/sample-controllers": "1.0.0-preview-b8352c78",
"@metamask-previews/seedless-onboarding-controller": "2.5.0-preview-b8352c78",
"@metamask-previews/selected-network-controller": "23.0.0-preview-b8352c78",
"@metamask-previews/signature-controller": "32.0.0-preview-b8352c78",
"@metamask-previews/token-search-discovery-controller": "3.3.0-preview-b8352c78",
"@metamask-previews/transaction-controller": "59.0.0-preview-b8352c78",
"@metamask-previews/user-operation-controller": "38.0.0-preview-b8352c78"
}

@lwin-kyaw
lwin-kyawforce-pushed the feat/seedless-state-update branch from 08fa4b0 to 848c8e7CompareJuly 29, 2025 14:59
@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
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.7.0-preview-848c8e7d",
"@metamask-previews/accounts-controller": "32.0.1-preview-848c8e7d",
"@metamask-previews/address-book-controller": "6.1.1-preview-848c8e7d",
"@metamask-previews/announcement-controller": "7.0.3-preview-848c8e7d",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-848c8e7d",
"@metamask-previews/approval-controller": "7.1.3-preview-848c8e7d",
"@metamask-previews/assets-controllers": "73.0.0-preview-848c8e7d",
"@metamask-previews/base-controller": "8.0.1-preview-848c8e7d",
"@metamask-previews/bridge-controller": "37.0.0-preview-848c8e7d",
"@metamask-previews/bridge-status-controller": "37.0.0-preview-848c8e7d",
"@metamask-previews/build-utils": "3.0.3-preview-848c8e7d",
"@metamask-previews/chain-agnostic-permission": "1.0.0-preview-848c8e7d",
"@metamask-previews/composable-controller": "11.0.0-preview-848c8e7d",
"@metamask-previews/controller-utils": "11.11.0-preview-848c8e7d",
"@metamask-previews/delegation-controller": "0.6.0-preview-848c8e7d",
"@metamask-previews/earn-controller": "4.0.0-preview-848c8e7d",
"@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-848c8e7d",
"@metamask-previews/ens-controller": "17.0.1-preview-848c8e7d",
"@metamask-previews/error-reporting-service": "2.0.0-preview-848c8e7d",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-848c8e7d",
"@metamask-previews/foundryup": "1.0.0-preview-848c8e7d",
"@metamask-previews/gas-fee-controller": "24.0.0-preview-848c8e7d",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-848c8e7d",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-848c8e7d",
"@metamask-previews/keyring-controller": "22.1.0-preview-848c8e7d",
"@metamask-previews/logging-controller": "6.0.4-preview-848c8e7d",
"@metamask-previews/message-manager": "12.0.2-preview-848c8e7d",
"@metamask-previews/messenger": "0.0.0-preview-848c8e7d",
"@metamask-previews/multichain-account-service": "0.3.0-preview-848c8e7d",
"@metamask-previews/multichain-api-middleware": "1.0.0-preview-848c8e7d",
"@metamask-previews/multichain-network-controller": "0.11.0-preview-848c8e7d",
"@metamask-previews/multichain-transactions-controller": "4.0.0-preview-848c8e7d",
"@metamask-previews/name-controller": "8.0.3-preview-848c8e7d",
"@metamask-previews/network-controller": "24.0.1-preview-848c8e7d",
"@metamask-previews/notification-services-controller": "15.0.0-preview-848c8e7d",
"@metamask-previews/permission-controller": "11.0.6-preview-848c8e7d",
"@metamask-previews/permission-log-controller": "4.0.0-preview-848c8e7d",
"@metamask-previews/phishing-controller": "13.1.0-preview-848c8e7d",
"@metamask-previews/polling-controller": "14.0.0-preview-848c8e7d",
"@metamask-previews/preferences-controller": "18.4.1-preview-848c8e7d",
"@metamask-previews/profile-sync-controller": "22.0.0-preview-848c8e7d",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-848c8e7d",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-848c8e7d",
"@metamask-previews/sample-controllers": "1.0.0-preview-848c8e7d",
"@metamask-previews/seedless-onboarding-controller": "2.5.0-preview-848c8e7d",
"@metamask-previews/selected-network-controller": "23.0.0-preview-848c8e7d",
"@metamask-previews/signature-controller": "32.0.0-preview-848c8e7d",
"@metamask-previews/token-search-discovery-controller": "3.3.0-preview-848c8e7d",
"@metamask-previews/transaction-controller": "59.0.0-preview-848c8e7d",
"@metamask-previews/user-operation-controller": "38.0.0-preview-848c8e7d"
}

@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
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.7.0-preview-713be623",
"@metamask-previews/accounts-controller": "32.0.1-preview-713be623",
"@metamask-previews/address-book-controller": "6.1.1-preview-713be623",
"@metamask-previews/announcement-controller": "7.0.3-preview-713be623",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-713be623",
"@metamask-previews/approval-controller": "7.1.3-preview-713be623",
"@metamask-previews/assets-controllers": "73.0.0-preview-713be623",
"@metamask-previews/base-controller": "8.0.1-preview-713be623",
"@metamask-previews/bridge-controller": "37.0.0-preview-713be623",
"@metamask-previews/bridge-status-controller": "37.0.0-preview-713be623",
"@metamask-previews/build-utils": "3.0.3-preview-713be623",
"@metamask-previews/chain-agnostic-permission": "1.0.0-preview-713be623",
"@metamask-previews/composable-controller": "11.0.0-preview-713be623",
"@metamask-previews/controller-utils": "11.11.0-preview-713be623",
"@metamask-previews/delegation-controller": "0.6.0-preview-713be623",
"@metamask-previews/earn-controller": "4.0.0-preview-713be623",
"@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-713be623",
"@metamask-previews/ens-controller": "17.0.1-preview-713be623",
"@metamask-previews/error-reporting-service": "2.0.0-preview-713be623",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-713be623",
"@metamask-previews/foundryup": "1.0.0-preview-713be623",
"@metamask-previews/gas-fee-controller": "24.0.0-preview-713be623",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-713be623",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-713be623",
"@metamask-previews/keyring-controller": "22.1.0-preview-713be623",
"@metamask-previews/logging-controller": "6.0.4-preview-713be623",
"@metamask-previews/message-manager": "12.0.2-preview-713be623",
"@metamask-previews/messenger": "0.0.0-preview-713be623",
"@metamask-previews/multichain-account-service": "0.3.0-preview-713be623",
"@metamask-previews/multichain-api-middleware": "1.0.0-preview-713be623",
"@metamask-previews/multichain-network-controller": "0.11.0-preview-713be623",
"@metamask-previews/multichain-transactions-controller": "4.0.0-preview-713be623",
"@metamask-previews/name-controller": "8.0.3-preview-713be623",
"@metamask-previews/network-controller": "24.0.1-preview-713be623",
"@metamask-previews/notification-services-controller": "15.0.0-preview-713be623",
"@metamask-previews/permission-controller": "11.0.6-preview-713be623",
"@metamask-previews/permission-log-controller": "4.0.0-preview-713be623",
"@metamask-previews/phishing-controller": "13.1.0-preview-713be623",
"@metamask-previews/polling-controller": "14.0.0-preview-713be623",
"@metamask-previews/preferences-controller": "18.4.1-preview-713be623",
"@metamask-previews/profile-sync-controller": "22.0.0-preview-713be623",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-713be623",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-713be623",
"@metamask-previews/sample-controllers": "1.0.0-preview-713be623",
"@metamask-previews/seedless-onboarding-controller": "2.5.0-preview-713be623",
"@metamask-previews/selected-network-controller": "23.0.0-preview-713be623",
"@metamask-previews/signature-controller": "32.0.0-preview-713be623",
"@metamask-previews/token-search-discovery-controller": "3.3.0-preview-713be623",
"@metamask-previews/transaction-controller": "59.0.0-preview-713be623",
"@metamask-previews/user-operation-controller": "38.0.0-preview-713be623"
}

Comment threadpackages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts Outdated
Comment threadpackages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts Outdated
Comment threadpackages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts Outdated
Comment threadpackages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts Outdated
@lwin-kyaw
lwin-kyaw marked this pull request as ready for review July 30, 2025 04:18
@lwin-kyaw
lwin-kyaw requested review from a team as code ownersJuly 30, 2025 04:18
@lwin-kyaw
lwin-kyawforce-pushed the feat/seedless-state-update branch from becffc2 to d084fe8CompareJuly 30, 2025 04:22
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Comment threadpackages/seedless-onboarding-controller/src/index.ts Outdated
@mcmire

Copy link
Copy Markdown
Collaborator

I notice that you've applied the no-changelog label. Is this merely a refactor PR or are there changes to the controller state type that are worth noting?

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Comment threadpackages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts Outdated
@lwin-kyaw
lwin-kyawforce-pushed the feat/seedless-state-update branch from d37d238 to 4efa65bCompareAugust 25, 2025 00:35
@lwin-kyawlwin-kyaw changed the title feat: restructure controller state after vault unlockrefactor: cache vault data while unlockAug 25, 2025
@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
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.10.0-preview-3f792d6",
"@metamask-previews/accounts-controller": "33.0.0-preview-3f792d6",
"@metamask-previews/address-book-controller": "6.1.1-preview-3f792d6",
"@metamask-previews/announcement-controller": "7.0.3-preview-3f792d6",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-3f792d6",
"@metamask-previews/approval-controller": "7.1.3-preview-3f792d6",
"@metamask-previews/assets-controllers": "74.0.0-preview-3f792d6",
"@metamask-previews/base-controller": "8.2.0-preview-3f792d6",
"@metamask-previews/bridge-controller": "41.1.0-preview-3f792d6",
"@metamask-previews/bridge-status-controller": "40.1.0-preview-3f792d6",
"@metamask-previews/build-utils": "3.0.3-preview-3f792d6",
"@metamask-previews/chain-agnostic-permission": "1.1.1-preview-3f792d6",
"@metamask-previews/composable-controller": "11.0.0-preview-3f792d6",
"@metamask-previews/controller-utils": "11.12.0-preview-3f792d6",
"@metamask-previews/delegation-controller": "0.7.0-preview-3f792d6",
"@metamask-previews/earn-controller": "6.0.0-preview-3f792d6",
"@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-3f792d6",
"@metamask-previews/ens-controller": "17.0.1-preview-3f792d6",
"@metamask-previews/error-reporting-service": "2.0.0-preview-3f792d6",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-3f792d6",
"@metamask-previews/foundryup": "1.0.1-preview-3f792d6",
"@metamask-previews/gas-fee-controller": "24.0.0-preview-3f792d6",
"@metamask-previews/gator-permissions-controller": "0.0.0-preview-3f792d6",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-3f792d6",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-3f792d6",
"@metamask-previews/keyring-controller": "23.0.0-preview-3f792d6",
"@metamask-previews/logging-controller": "6.0.4-preview-3f792d6",
"@metamask-previews/message-manager": "12.0.2-preview-3f792d6",
"@metamask-previews/messenger": "0.1.0-preview-3f792d6",
"@metamask-previews/multichain-account-service": "0.5.0-preview-3f792d6",
"@metamask-previews/multichain-api-middleware": "1.0.0-preview-3f792d6",
"@metamask-previews/multichain-network-controller": "0.12.0-preview-3f792d6",
"@metamask-previews/multichain-transactions-controller": "5.0.0-preview-3f792d6",
"@metamask-previews/name-controller": "8.0.3-preview-3f792d6",
"@metamask-previews/network-controller": "24.1.0-preview-3f792d6",
"@metamask-previews/network-enablement-controller": "0.3.0-preview-3f792d6",
"@metamask-previews/notification-services-controller": "17.0.0-preview-3f792d6",
"@metamask-previews/permission-controller": "11.0.6-preview-3f792d6",
"@metamask-previews/permission-log-controller": "4.0.0-preview-3f792d6",
"@metamask-previews/phishing-controller": "13.1.0-preview-3f792d6",
"@metamask-previews/polling-controller": "14.0.0-preview-3f792d6",
"@metamask-previews/preferences-controller": "19.0.0-preview-3f792d6",
"@metamask-previews/profile-sync-controller": "24.0.0-preview-3f792d6",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-3f792d6",
"@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-3f792d6",
"@metamask-previews/sample-controllers": "1.0.0-preview-3f792d6",
"@metamask-previews/seedless-onboarding-controller": "3.0.0-preview-3f792d6",
"@metamask-previews/selected-network-controller": "23.0.0-preview-3f792d6",
"@metamask-previews/shield-controller": "0.0.0-preview-3f792d6",
"@metamask-previews/signature-controller": "33.0.0-preview-3f792d6",
"@metamask-previews/token-search-discovery-controller": "3.3.0-preview-3f792d6",
"@metamask-previews/transaction-controller": "60.0.0-preview-3f792d6",
"@metamask-previews/user-operation-controller": "39.0.0-preview-3f792d6"
}

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Comment threadpackages/seedless-onboarding-controller/jest.config.js Outdated
@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
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.10.0-preview-a3d8559e",
"@metamask-previews/accounts-controller": "33.0.0-preview-a3d8559e",
"@metamask-previews/address-book-controller": "6.1.1-preview-a3d8559e",
"@metamask-previews/announcement-controller": "7.0.3-preview-a3d8559e",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-a3d8559e",
"@metamask-previews/approval-controller": "7.1.3-preview-a3d8559e",
"@metamask-previews/assets-controllers": "74.0.0-preview-a3d8559e",
"@metamask-previews/base-controller": "8.2.0-preview-a3d8559e",
"@metamask-previews/bridge-controller": "41.1.0-preview-a3d8559e",
"@metamask-previews/bridge-status-controller": "40.1.0-preview-a3d8559e",
"@metamask-previews/build-utils": "3.0.3-preview-a3d8559e",
"@metamask-previews/chain-agnostic-permission": "1.1.1-preview-a3d8559e",
"@metamask-previews/composable-controller": "11.0.0-preview-a3d8559e",
"@metamask-previews/controller-utils": "11.12.0-preview-a3d8559e",
"@metamask-previews/delegation-controller": "0.7.0-preview-a3d8559e",
"@metamask-previews/earn-controller": "6.0.0-preview-a3d8559e",
"@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-a3d8559e",
"@metamask-previews/ens-controller": "17.0.1-preview-a3d8559e",
"@metamask-previews/error-reporting-service": "2.0.0-preview-a3d8559e",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-a3d8559e",
"@metamask-previews/foundryup": "1.0.1-preview-a3d8559e",
"@metamask-previews/gas-fee-controller": "24.0.0-preview-a3d8559e",
"@metamask-previews/gator-permissions-controller": "0.0.0-preview-a3d8559e",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-a3d8559e",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-a3d8559e",
"@metamask-previews/keyring-controller": "23.0.0-preview-a3d8559e",
"@metamask-previews/logging-controller": "6.0.4-preview-a3d8559e",
"@metamask-previews/message-manager": "12.0.2-preview-a3d8559e",
"@metamask-previews/messenger": "0.1.0-preview-a3d8559e",
"@metamask-previews/multichain-account-service": "0.5.0-preview-a3d8559e",
"@metamask-previews/multichain-api-middleware": "1.0.0-preview-a3d8559e",
"@metamask-previews/multichain-network-controller": "0.12.0-preview-a3d8559e",
"@metamask-previews/multichain-transactions-controller": "5.0.0-preview-a3d8559e",
"@metamask-previews/name-controller": "8.0.3-preview-a3d8559e",
"@metamask-previews/network-controller": "24.1.0-preview-a3d8559e",
"@metamask-previews/network-enablement-controller": "0.3.0-preview-a3d8559e",
"@metamask-previews/notification-services-controller": "17.0.0-preview-a3d8559e",
"@metamask-previews/permission-controller": "11.0.6-preview-a3d8559e",
"@metamask-previews/permission-log-controller": "4.0.0-preview-a3d8559e",
"@metamask-previews/phishing-controller": "13.1.0-preview-a3d8559e",
"@metamask-previews/polling-controller": "14.0.0-preview-a3d8559e",
"@metamask-previews/preferences-controller": "19.0.0-preview-a3d8559e",
"@metamask-previews/profile-sync-controller": "24.0.0-preview-a3d8559e",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-a3d8559e",
"@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-a3d8559e",
"@metamask-previews/sample-controllers": "1.0.0-preview-a3d8559e",
"@metamask-previews/seedless-onboarding-controller": "3.0.0-preview-a3d8559e",
"@metamask-previews/selected-network-controller": "23.0.0-preview-a3d8559e",
"@metamask-previews/shield-controller": "0.0.0-preview-a3d8559e",
"@metamask-previews/signature-controller": "33.0.0-preview-a3d8559e",
"@metamask-previews/token-search-discovery-controller": "3.3.0-preview-a3d8559e",
"@metamask-previews/transaction-controller": "60.0.0-preview-a3d8559e",
"@metamask-previews/user-operation-controller": "39.0.0-preview-a3d8559e"
}

@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

I notice that you've applied the no-changelog label. Is this merely a refactor PR or are there changes to the controller state type that are worth noting?

Hi @mcmire, Yes, this is a refactor PR and some optimization (caching) for internal vault logics

matthiasgeihs
matthiasgeihs previously approved these changes Aug 27, 2025

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hm, I don't understand why you separate parsing and deserialization? Why don't you merge deserialization into #decryptAndParseVaultData?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Are you throwing a different error here than before? If so, this can be considered a breaking change (depending on your definition of breaking change).

Comment on lines 192 to 196

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why did you move that up?

TransactionController is maintaining an alphabetical ordering on properties and I kind of like it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just wanna group the readonly variables in one block. That's why I moved that up.

);
decryptedVaultData = result.vault;
vaultEncryptionKey = result.exportedKeyString;
vaultEncryptionSalt = result.salt;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not supposed to validate the password, if the key is given, right?

Comment on lines 1638 to 1619

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Changing the error type can be considered a breaking change.
Why did you change it?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Previously, it throws Invalid vault data error.
But I think the error should be The decrypted vault has an unexpected shape. since this is the parse error.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I see. I think the previous error message was fine, but the new one is more differentiated. I think the error variable names are not expressive enough to reflect that meaning, so this can lead to them not being used correctly.

Comment threadpackages/seedless-onboarding-controller/src/index.ts Outdated
Comment threadpackages/seedless-onboarding-controller/src/types.ts Outdated
Comment threadpackages/seedless-onboarding-controller/src/index.ts Outdated
Comment threadpackages/seedless-onboarding-controller/src/index.ts Outdated
Comment threadpackages/seedless-onboarding-controller/jest.config.js Outdated
Comment on lines 123 to 124

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Nit: SeedlessOnboardingControllerEvents is already included in ExtractAvailableEvent<SeedlessOnboardingControllerMessenger>, so you should be able to simplify this:

Suggested change
|SeedlessOnboardingControllerEvents
|ExtractAvailableEvent<SeedlessOnboardingControllerMessenger>
ExtractAvailableEvent<SeedlessOnboardingControllerMessenger>

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thanks for the review. I've addressed it in this commit, d7be4d5

Comment on lines 21 to 22

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Nit: SeedlessOnboardingControllerEvents is already included in ExtractAvailableEvent<SeedlessOnboardingControllerMessenger>, so you should be able to simplify this:

Suggested change
|SeedlessOnboardingControllerEvents
|ExtractAvailableEvent<SeedlessOnboardingControllerMessenger>
ExtractAvailableEvent<SeedlessOnboardingControllerMessenger>

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Addressed here, d7be4d5

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Premature Cache Return Bypasses Security Checks

The caching in #unlockVaultAndGetVaultData returns cached vault data prematurely. This bypasses all validation checks, including password, encryption key, and salt verification, which could lead to incorrect credentials appearing valid or the use of stale/compromised data.

Fix in CursorFix in Web

@matthiasgeihs

Copy link
Copy Markdown
Contributor

Another worthwhile optimization would be to use the cached encryption key for encryption as well. (Currently it's only used for decryption.) And we may want to rotate the key after each controller unlock, like the KeyringController does it.

@lwin-kyaw

Copy link
Copy Markdown
ContributorAuthor

Another worthwhile optimization would be to use the cached encryption key for encryption as well. (Currently it's only used for decryption.) And we may want to rotate the key after each controller unlock, like the KeyringController does it.

Yes definitely. I will address this in the new PR, coz that includes breaking change to the encryptor interface.

@lwin-kyaw
lwin-kyawforce-pushed the feat/seedless-state-update branch from 5c673a8 to 2fccc63CompareAugust 29, 2025 07:16
@lwin-kyaw
lwin-kyaw merged commit e8820d2 into mainAug 29, 2025
231 checks passed
@lwin-kyaw
lwin-kyaw deleted the feat/seedless-state-update branch August 29, 2025 10:54
Sign up for freeto 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.

4 participants

@lwin-kyaw@mcmire@matthiasgeihs@himanshuchawla009