Skip to content

Conversation

@lwin-kyaw
Copy link
Contributor

@lwin-kyaw lwin-kyaw commented Oct 21, 2025

Explanation

This PR includes ~

  • removed personal_coverage check in the signature-coverage result
  • shallow compare TransactionMeta.SimulationData instead of referential equality in tx-coverage check, to avoid triggering multiple coverage check requests.
  • Added optional constructor params, normalizeSignatureRequest function which normalize the requests for TypedSignature similar to the security-alerts API.
  • Removed signature data validation from the internal makeInitSignatureCoverageCheckBody function as signature data is not always string (e.g. eth_signTypedData uses Array of Object) and the data is already validated in the SignatureController before adding to the state.

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

Note

Adds request normalization and method parsing for signatures, triggers signature coverage for all new requests, and uses deep equality for transaction simulationData to reduce redundant checks.

  • ShieldController:
    • Triggers signature coverage for all new signatureRequests (removes personal_sign-only gate).
    • Uses deep equality on txMeta.simulationData to re-check coverage only on meaningful changes.
    • Supports optional normalizeSignatureRequest option; clones and normalizes before backend call.
  • Backend:
    • InitSignatureCoverageCheckRequest.data now accepts Json; removed string-only validation.
    • Adds parseSignatureRequestMethod to derive correct JSON-RPC method (handles typed sign V1/V3/V4) and uses it in init body.
  • Exports/Types:
    • Exports parseSignatureRequestMethod and NormalizeSignatureRequestFn.
    • Adds SignTypedDataVersion enum.
  • Tests:
    • New cases for simulationData change detection and signature request normalization; adds method parsing tests.
  • Changelog/Deps:
    • Updates Unreleased notes accordingly; adds lodash (for cloneDeep/isEqual).

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

@lwin-kyaw lwin-kyaw requested a review from a team as a code owner October 21, 2025 17:33
@lwin-kyaw lwin-kyaw requested a review from a team as a code owner October 21, 2025 17:39
cursor[bot]

This comment was marked as outdated.

@lwin-kyaw
Copy link
Contributor Author

@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": "1.5.0-preview-476125a",
  "@metamask-previews/accounts-controller": "33.1.1-preview-476125a",
  "@metamask-previews/address-book-controller": "6.2.0-preview-476125a",
  "@metamask-previews/announcement-controller": "7.1.0-preview-476125a",
  "@metamask-previews/app-metadata-controller": "1.1.0-preview-476125a",
  "@metamask-previews/approval-controller": "7.2.0-preview-476125a",
  "@metamask-previews/assets-controllers": "81.0.1-preview-476125a",
  "@metamask-previews/base-controller": "8.4.1-preview-476125a",
  "@metamask-previews/bridge-controller": "53.1.0-preview-476125a",
  "@metamask-previews/bridge-status-controller": "52.1.0-preview-476125a",
  "@metamask-previews/build-utils": "3.0.4-preview-476125a",
  "@metamask-previews/chain-agnostic-permission": "1.2.0-preview-476125a",
  "@metamask-previews/composable-controller": "11.1.0-preview-476125a",
  "@metamask-previews/controller-utils": "11.14.1-preview-476125a",
  "@metamask-previews/core-backend": "2.1.0-preview-476125a",
  "@metamask-previews/delegation-controller": "0.8.0-preview-476125a",
  "@metamask-previews/earn-controller": "8.0.1-preview-476125a",
  "@metamask-previews/eip-5792-middleware": "1.2.3-preview-476125a",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.0.0-preview-476125a",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-476125a",
  "@metamask-previews/ens-controller": "17.1.0-preview-476125a",
  "@metamask-previews/error-reporting-service": "2.2.1-preview-476125a",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-476125a",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-476125a",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-476125a",
  "@metamask-previews/foundryup": "1.0.1-preview-476125a",
  "@metamask-previews/gas-fee-controller": "24.1.0-preview-476125a",
  "@metamask-previews/gator-permissions-controller": "0.2.1-preview-476125a",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-476125a",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-476125a",
  "@metamask-previews/keyring-controller": "23.1.1-preview-476125a",
  "@metamask-previews/logging-controller": "6.1.0-preview-476125a",
  "@metamask-previews/message-manager": "13.0.1-preview-476125a",
  "@metamask-previews/messenger": "0.3.0-preview-476125a",
  "@metamask-previews/multichain-account-service": "1.6.1-preview-476125a",
  "@metamask-previews/multichain-api-middleware": "1.2.1-preview-476125a",
  "@metamask-previews/multichain-network-controller": "1.0.1-preview-476125a",
  "@metamask-previews/multichain-transactions-controller": "5.1.0-preview-476125a",
  "@metamask-previews/name-controller": "8.1.0-preview-476125a",
  "@metamask-previews/network-controller": "24.3.0-preview-476125a",
  "@metamask-previews/network-enablement-controller": "2.1.1-preview-476125a",
  "@metamask-previews/notification-services-controller": "18.3.0-preview-476125a",
  "@metamask-previews/permission-controller": "11.1.0-preview-476125a",
  "@metamask-previews/permission-log-controller": "4.1.0-preview-476125a",
  "@metamask-previews/phishing-controller": "14.1.2-preview-476125a",
  "@metamask-previews/polling-controller": "14.0.1-preview-476125a",
  "@metamask-previews/preferences-controller": "20.0.2-preview-476125a",
  "@metamask-previews/profile-sync-controller": "25.1.1-preview-476125a",
  "@metamask-previews/rate-limit-controller": "6.1.0-preview-476125a",
  "@metamask-previews/remote-feature-flag-controller": "1.9.0-preview-476125a",
  "@metamask-previews/sample-controllers": "2.0.1-preview-476125a",
  "@metamask-previews/seedless-onboarding-controller": "4.1.0-preview-476125a",
  "@metamask-previews/selected-network-controller": "24.0.1-preview-476125a",
  "@metamask-previews/shield-controller": "0.3.2-preview-476125a",
  "@metamask-previews/signature-controller": "34.0.1-preview-476125a",
  "@metamask-previews/subscription-controller": "2.0.0-preview-476125a",
  "@metamask-previews/token-search-discovery-controller": "3.5.0-preview-476125a",
  "@metamask-previews/transaction-controller": "60.9.0-preview-476125a",
  "@metamask-previews/user-operation-controller": "39.2.0-preview-476125a"
}

@lwin-kyaw
Copy link
Contributor Author

@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": "1.5.0-preview-83095132",
  "@metamask-previews/accounts-controller": "33.1.1-preview-83095132",
  "@metamask-previews/address-book-controller": "6.2.0-preview-83095132",
  "@metamask-previews/announcement-controller": "7.1.0-preview-83095132",
  "@metamask-previews/app-metadata-controller": "1.1.0-preview-83095132",
  "@metamask-previews/approval-controller": "7.2.0-preview-83095132",
  "@metamask-previews/assets-controllers": "81.0.1-preview-83095132",
  "@metamask-previews/base-controller": "8.4.1-preview-83095132",
  "@metamask-previews/bridge-controller": "53.1.0-preview-83095132",
  "@metamask-previews/bridge-status-controller": "52.1.0-preview-83095132",
  "@metamask-previews/build-utils": "3.0.4-preview-83095132",
  "@metamask-previews/chain-agnostic-permission": "1.2.0-preview-83095132",
  "@metamask-previews/composable-controller": "11.1.0-preview-83095132",
  "@metamask-previews/controller-utils": "11.14.1-preview-83095132",
  "@metamask-previews/core-backend": "2.1.0-preview-83095132",
  "@metamask-previews/delegation-controller": "0.8.0-preview-83095132",
  "@metamask-previews/earn-controller": "8.0.1-preview-83095132",
  "@metamask-previews/eip-5792-middleware": "1.2.3-preview-83095132",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.0.0-preview-83095132",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-83095132",
  "@metamask-previews/ens-controller": "17.1.0-preview-83095132",
  "@metamask-previews/error-reporting-service": "2.2.1-preview-83095132",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-83095132",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-83095132",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-83095132",
  "@metamask-previews/foundryup": "1.0.1-preview-83095132",
  "@metamask-previews/gas-fee-controller": "24.1.0-preview-83095132",
  "@metamask-previews/gator-permissions-controller": "0.2.1-preview-83095132",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-83095132",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-83095132",
  "@metamask-previews/keyring-controller": "23.1.1-preview-83095132",
  "@metamask-previews/logging-controller": "6.1.0-preview-83095132",
  "@metamask-previews/message-manager": "13.0.1-preview-83095132",
  "@metamask-previews/messenger": "0.3.0-preview-83095132",
  "@metamask-previews/multichain-account-service": "1.6.1-preview-83095132",
  "@metamask-previews/multichain-api-middleware": "1.2.1-preview-83095132",
  "@metamask-previews/multichain-network-controller": "1.0.1-preview-83095132",
  "@metamask-previews/multichain-transactions-controller": "5.1.0-preview-83095132",
  "@metamask-previews/name-controller": "8.1.0-preview-83095132",
  "@metamask-previews/network-controller": "24.3.0-preview-83095132",
  "@metamask-previews/network-enablement-controller": "2.1.1-preview-83095132",
  "@metamask-previews/notification-services-controller": "18.3.0-preview-83095132",
  "@metamask-previews/permission-controller": "11.1.0-preview-83095132",
  "@metamask-previews/permission-log-controller": "4.1.0-preview-83095132",
  "@metamask-previews/phishing-controller": "14.1.2-preview-83095132",
  "@metamask-previews/polling-controller": "14.0.1-preview-83095132",
  "@metamask-previews/preferences-controller": "20.0.2-preview-83095132",
  "@metamask-previews/profile-sync-controller": "25.1.1-preview-83095132",
  "@metamask-previews/rate-limit-controller": "6.1.0-preview-83095132",
  "@metamask-previews/remote-feature-flag-controller": "1.9.0-preview-83095132",
  "@metamask-previews/sample-controllers": "2.0.1-preview-83095132",
  "@metamask-previews/seedless-onboarding-controller": "4.1.0-preview-83095132",
  "@metamask-previews/selected-network-controller": "24.0.1-preview-83095132",
  "@metamask-previews/shield-controller": "0.3.2-preview-83095132",
  "@metamask-previews/signature-controller": "34.0.1-preview-83095132",
  "@metamask-previews/subscription-controller": "2.0.0-preview-83095132",
  "@metamask-previews/token-search-discovery-controller": "3.5.0-preview-83095132",
  "@metamask-previews/transaction-controller": "60.9.0-preview-83095132",
  "@metamask-previews/user-operation-controller": "39.2.0-preview-83095132"
}

@lwin-kyaw lwin-kyaw requested a review from a team as a code owner October 22, 2025 12:28
cursor[bot]

This comment was marked as outdated.

@lwin-kyaw lwin-kyaw changed the title fix: Transaction/Signature controller state change listener fix: Tx state listener and signature coverage Oct 22, 2025
cursor[bot]

This comment was marked as outdated.

@lwin-kyaw
Copy link
Contributor Author

@metamaskbot publish-preview

cursor[bot]

This comment was marked as outdated.

@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": "1.5.0-preview-3fb593f6",
  "@metamask-previews/accounts-controller": "33.1.1-preview-3fb593f6",
  "@metamask-previews/address-book-controller": "6.2.0-preview-3fb593f6",
  "@metamask-previews/announcement-controller": "7.1.0-preview-3fb593f6",
  "@metamask-previews/app-metadata-controller": "1.1.0-preview-3fb593f6",
  "@metamask-previews/approval-controller": "7.2.0-preview-3fb593f6",
  "@metamask-previews/assets-controllers": "81.0.1-preview-3fb593f6",
  "@metamask-previews/base-controller": "8.4.1-preview-3fb593f6",
  "@metamask-previews/bridge-controller": "53.1.0-preview-3fb593f6",
  "@metamask-previews/bridge-status-controller": "52.1.0-preview-3fb593f6",
  "@metamask-previews/build-utils": "3.0.4-preview-3fb593f6",
  "@metamask-previews/chain-agnostic-permission": "1.2.0-preview-3fb593f6",
  "@metamask-previews/composable-controller": "11.1.0-preview-3fb593f6",
  "@metamask-previews/controller-utils": "11.14.1-preview-3fb593f6",
  "@metamask-previews/core-backend": "2.1.0-preview-3fb593f6",
  "@metamask-previews/delegation-controller": "0.8.0-preview-3fb593f6",
  "@metamask-previews/earn-controller": "8.0.1-preview-3fb593f6",
  "@metamask-previews/eip-5792-middleware": "1.2.3-preview-3fb593f6",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.0.0-preview-3fb593f6",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-3fb593f6",
  "@metamask-previews/ens-controller": "17.1.0-preview-3fb593f6",
  "@metamask-previews/error-reporting-service": "2.2.1-preview-3fb593f6",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-3fb593f6",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-3fb593f6",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-3fb593f6",
  "@metamask-previews/foundryup": "1.0.1-preview-3fb593f6",
  "@metamask-previews/gas-fee-controller": "24.1.0-preview-3fb593f6",
  "@metamask-previews/gator-permissions-controller": "0.2.1-preview-3fb593f6",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-3fb593f6",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-3fb593f6",
  "@metamask-previews/keyring-controller": "23.1.1-preview-3fb593f6",
  "@metamask-previews/logging-controller": "6.1.0-preview-3fb593f6",
  "@metamask-previews/message-manager": "13.0.1-preview-3fb593f6",
  "@metamask-previews/messenger": "0.3.0-preview-3fb593f6",
  "@metamask-previews/multichain-account-service": "1.6.1-preview-3fb593f6",
  "@metamask-previews/multichain-api-middleware": "1.2.1-preview-3fb593f6",
  "@metamask-previews/multichain-network-controller": "1.0.1-preview-3fb593f6",
  "@metamask-previews/multichain-transactions-controller": "5.1.0-preview-3fb593f6",
  "@metamask-previews/name-controller": "8.1.0-preview-3fb593f6",
  "@metamask-previews/network-controller": "24.3.0-preview-3fb593f6",
  "@metamask-previews/network-enablement-controller": "2.1.1-preview-3fb593f6",
  "@metamask-previews/notification-services-controller": "18.3.0-preview-3fb593f6",
  "@metamask-previews/permission-controller": "11.1.0-preview-3fb593f6",
  "@metamask-previews/permission-log-controller": "4.1.0-preview-3fb593f6",
  "@metamask-previews/phishing-controller": "14.1.2-preview-3fb593f6",
  "@metamask-previews/polling-controller": "14.0.1-preview-3fb593f6",
  "@metamask-previews/preferences-controller": "20.0.2-preview-3fb593f6",
  "@metamask-previews/profile-sync-controller": "25.1.1-preview-3fb593f6",
  "@metamask-previews/rate-limit-controller": "6.1.0-preview-3fb593f6",
  "@metamask-previews/remote-feature-flag-controller": "1.9.0-preview-3fb593f6",
  "@metamask-previews/sample-controllers": "2.0.1-preview-3fb593f6",
  "@metamask-previews/seedless-onboarding-controller": "4.1.0-preview-3fb593f6",
  "@metamask-previews/selected-network-controller": "24.0.1-preview-3fb593f6",
  "@metamask-previews/shield-controller": "0.3.2-preview-3fb593f6",
  "@metamask-previews/signature-controller": "34.0.1-preview-3fb593f6",
  "@metamask-previews/subscription-controller": "2.0.0-preview-3fb593f6",
  "@metamask-previews/token-search-discovery-controller": "3.5.0-preview-3fb593f6",
  "@metamask-previews/transaction-controller": "60.9.0-preview-3fb593f6",
  "@metamask-previews/user-operation-controller": "39.2.0-preview-3fb593f6"
}

@chaitanyapotti chaitanyapotti merged commit 3923250 into main Oct 22, 2025
255 checks passed
@chaitanyapotti chaitanyapotti deleted the fix/tx-sig-controller-state-change-handler branch October 22, 2025 13:35
Gudahtt added a commit that referenced this pull request Oct 24, 2025
…r/multichain-transactions-controller

* origin/main: (35 commits)
  feat: `JsonRpcEngineV2` (#6176)
  Release 641.0.0 (#6940)
  feat: Add transaction emulation actions (#6935)
  Release/640.0.0 (#6934)
  fix(core-backend): control randomness to fix flaky test (#6936)
  chore: Add `@metamask-previews/*` to NPM age gate exceptions (#6937)
  Release/639.0.0 (#6931)
  feat: make getCryptoApproveTransactionParams synchronous (#6930)
  feat: add new actions to `KeyringController` (#6928)
  feat: add `getAccounts` to `AccountsController` (#6927)
  chore: remove `Monad Mainnet` single call balance contract and add into account v4 (#6929)
  Release/638.0.0 (#6923)
  fix: Downgrade `multiformats` to `^9.9.0` to avoid ESM-only dependency (#6920)
  Release/637.0.0 (#6919)
  feat(account-tree-controller): add callbacks for hidden and pinned data (#6910)
  Release 636.0.0 (#6918)
  fix(core-backend): reconnection logic (#6861)
  fix:  Tx state listener and signature coverage (#6906)
  Release/635.0.0 (#6917)
  fix(base-controller): add TypeScript declaration file for legacy module resolution (#6915)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants