Skip to content

feat: after simulate and before sign hooks #5503

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

Merged
merged 8 commits into from
Jun 12, 2025

Conversation

matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Mar 19, 2025

Explanation

Support afterSimulate and beforeSign hooks, including optional updateTransaction callbacks.

The afterSimulate hook can also return skipSimulation which will disable subsequent balance change simulation.

Plus:

  • Add optional containerTypes property to TransactionMeta.
  • Add TransactionControllerEstimateGasAction messenger action.
  • Add ignoreDelegationSignatures option to estimateGas method.
  • Ignore DelegationManager signature errors in simulation requests.

References

Fixes #5170

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

@matthewwalsh0
Copy link
Member 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": "26.1.0-preview-39c90ec",
  "@metamask-previews/address-book-controller": "6.0.3-preview-39c90ec",
  "@metamask-previews/announcement-controller": "7.0.3-preview-39c90ec",
  "@metamask-previews/approval-controller": "7.1.3-preview-39c90ec",
  "@metamask-previews/assets-controllers": "54.0.0-preview-39c90ec",
  "@metamask-previews/base-controller": "8.0.0-preview-39c90ec",
  "@metamask-previews/bridge-controller": "8.0.0-preview-39c90ec",
  "@metamask-previews/bridge-status-controller": "8.0.0-preview-39c90ec",
  "@metamask-previews/build-utils": "3.0.3-preview-39c90ec",
  "@metamask-previews/chain-agnostic-permission": "0.1.0-preview-39c90ec",
  "@metamask-previews/composable-controller": "11.0.0-preview-39c90ec",
  "@metamask-previews/controller-utils": "11.6.0-preview-39c90ec",
  "@metamask-previews/earn-controller": "0.8.0-preview-39c90ec",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-39c90ec",
  "@metamask-previews/ens-controller": "15.0.2-preview-39c90ec",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-39c90ec",
  "@metamask-previews/gas-fee-controller": "22.0.3-preview-39c90ec",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-39c90ec",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-39c90ec",
  "@metamask-previews/keyring-controller": "21.0.0-preview-39c90ec",
  "@metamask-previews/logging-controller": "6.0.4-preview-39c90ec",
  "@metamask-previews/message-manager": "12.0.1-preview-39c90ec",
  "@metamask-previews/multichain": "4.0.0-preview-39c90ec",
  "@metamask-previews/multichain-api-middleware": "0.1.0-preview-39c90ec",
  "@metamask-previews/multichain-network-controller": "0.2.0-preview-39c90ec",
  "@metamask-previews/multichain-transactions-controller": "0.7.2-preview-39c90ec",
  "@metamask-previews/name-controller": "8.0.3-preview-39c90ec",
  "@metamask-previews/network-controller": "22.2.1-preview-39c90ec",
  "@metamask-previews/notification-services-controller": "3.0.0-preview-39c90ec",
  "@metamask-previews/permission-controller": "11.0.6-preview-39c90ec",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-39c90ec",
  "@metamask-previews/phishing-controller": "12.4.1-preview-39c90ec",
  "@metamask-previews/polling-controller": "12.0.3-preview-39c90ec",
  "@metamask-previews/preferences-controller": "17.0.0-preview-39c90ec",
  "@metamask-previews/profile-sync-controller": "10.1.0-preview-39c90ec",
  "@metamask-previews/queued-request-controller": "9.0.1-preview-39c90ec",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-39c90ec",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-39c90ec",
  "@metamask-previews/sample-controllers": "0.0.0-preview-39c90ec",
  "@metamask-previews/selected-network-controller": "21.0.1-preview-39c90ec",
  "@metamask-previews/signature-controller": "26.0.0-preview-39c90ec",
  "@metamask-previews/token-search-discovery-controller": "2.1.0-preview-39c90ec",
  "@metamask-previews/transaction-controller": "50.0.0-preview-39c90ec",
  "@metamask-previews/user-operation-controller": "29.0.0-preview-39c90ec"
}

@matthewwalsh0
Copy link
Member 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": "26.1.0-preview-2eeab776",
  "@metamask-previews/address-book-controller": "6.0.3-preview-2eeab776",
  "@metamask-previews/announcement-controller": "7.0.3-preview-2eeab776",
  "@metamask-previews/approval-controller": "7.1.3-preview-2eeab776",
  "@metamask-previews/assets-controllers": "54.0.0-preview-2eeab776",
  "@metamask-previews/base-controller": "8.0.0-preview-2eeab776",
  "@metamask-previews/bridge-controller": "8.0.0-preview-2eeab776",
  "@metamask-previews/bridge-status-controller": "8.0.0-preview-2eeab776",
  "@metamask-previews/build-utils": "3.0.3-preview-2eeab776",
  "@metamask-previews/chain-agnostic-permission": "0.1.0-preview-2eeab776",
  "@metamask-previews/composable-controller": "11.0.0-preview-2eeab776",
  "@metamask-previews/controller-utils": "11.6.0-preview-2eeab776",
  "@metamask-previews/earn-controller": "0.8.0-preview-2eeab776",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-2eeab776",
  "@metamask-previews/ens-controller": "15.0.2-preview-2eeab776",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-2eeab776",
  "@metamask-previews/gas-fee-controller": "22.0.3-preview-2eeab776",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-2eeab776",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-2eeab776",
  "@metamask-previews/keyring-controller": "21.0.0-preview-2eeab776",
  "@metamask-previews/logging-controller": "6.0.4-preview-2eeab776",
  "@metamask-previews/message-manager": "12.0.1-preview-2eeab776",
  "@metamask-previews/multichain": "4.0.0-preview-2eeab776",
  "@metamask-previews/multichain-api-middleware": "0.1.0-preview-2eeab776",
  "@metamask-previews/multichain-network-controller": "0.2.0-preview-2eeab776",
  "@metamask-previews/multichain-transactions-controller": "0.7.2-preview-2eeab776",
  "@metamask-previews/name-controller": "8.0.3-preview-2eeab776",
  "@metamask-previews/network-controller": "22.2.1-preview-2eeab776",
  "@metamask-previews/notification-services-controller": "3.0.0-preview-2eeab776",
  "@metamask-previews/permission-controller": "11.0.6-preview-2eeab776",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-2eeab776",
  "@metamask-previews/phishing-controller": "12.4.1-preview-2eeab776",
  "@metamask-previews/polling-controller": "12.0.3-preview-2eeab776",
  "@metamask-previews/preferences-controller": "17.0.0-preview-2eeab776",
  "@metamask-previews/profile-sync-controller": "10.1.0-preview-2eeab776",
  "@metamask-previews/queued-request-controller": "9.0.1-preview-2eeab776",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-2eeab776",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-2eeab776",
  "@metamask-previews/sample-controllers": "0.0.0-preview-2eeab776",
  "@metamask-previews/selected-network-controller": "21.0.1-preview-2eeab776",
  "@metamask-previews/signature-controller": "26.0.0-preview-2eeab776",
  "@metamask-previews/token-search-discovery-controller": "2.1.0-preview-2eeab776",
  "@metamask-previews/transaction-controller": "50.0.0-preview-2eeab776",
  "@metamask-previews/user-operation-controller": "29.0.0-preview-2eeab776"
}

@matthewwalsh0 matthewwalsh0 force-pushed the feat/after-simulate-hook branch 2 times, most recently from 1850f31 to 8c03250 Compare June 2, 2025 15:46
@matthewwalsh0 matthewwalsh0 changed the title feat: after simulate hook feat: after simulate and before sign hooks Jun 9, 2025
@matthewwalsh0 matthewwalsh0 force-pushed the feat/after-simulate-hook branch from 59d5e09 to 4d46a3e Compare June 9, 2025 10:25
@matthewwalsh0 matthewwalsh0 marked this pull request as ready for review June 9, 2025 10:25
@matthewwalsh0 matthewwalsh0 requested review from a team as code owners June 9, 2025 10:25
@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

1 similar comment
@matthewwalsh0
Copy link
Member 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/account-tree-controller": "0.1.0-preview-4d46a3e9",
  "@metamask-previews/accounts-controller": "30.0.0-preview-4d46a3e9",
  "@metamask-previews/address-book-controller": "6.1.0-preview-4d46a3e9",
  "@metamask-previews/announcement-controller": "7.0.3-preview-4d46a3e9",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-4d46a3e9",
  "@metamask-previews/approval-controller": "7.1.3-preview-4d46a3e9",
  "@metamask-previews/assets-controllers": "68.1.0-preview-4d46a3e9",
  "@metamask-previews/base-controller": "8.0.1-preview-4d46a3e9",
  "@metamask-previews/bridge-controller": "32.1.1-preview-4d46a3e9",
  "@metamask-previews/bridge-status-controller": "29.1.0-preview-4d46a3e9",
  "@metamask-previews/build-utils": "3.0.3-preview-4d46a3e9",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-4d46a3e9",
  "@metamask-previews/composable-controller": "11.0.0-preview-4d46a3e9",
  "@metamask-previews/controller-utils": "11.10.0-preview-4d46a3e9",
  "@metamask-previews/delegation-controller": "0.4.0-preview-4d46a3e9",
  "@metamask-previews/earn-controller": "1.1.0-preview-4d46a3e9",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-4d46a3e9",
  "@metamask-previews/ens-controller": "16.0.0-preview-4d46a3e9",
  "@metamask-previews/error-reporting-service": "1.0.0-preview-4d46a3e9",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-4d46a3e9",
  "@metamask-previews/foundryup": "1.0.0-preview-4d46a3e9",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-4d46a3e9",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-4d46a3e9",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-4d46a3e9",
  "@metamask-previews/keyring-controller": "22.0.2-preview-4d46a3e9",
  "@metamask-previews/logging-controller": "6.0.4-preview-4d46a3e9",
  "@metamask-previews/message-manager": "12.0.1-preview-4d46a3e9",
  "@metamask-previews/multichain": "4.1.0-preview-4d46a3e9",
  "@metamask-previews/multichain-api-middleware": "0.4.0-preview-4d46a3e9",
  "@metamask-previews/multichain-network-controller": "0.8.0-preview-4d46a3e9",
  "@metamask-previews/multichain-transactions-controller": "2.0.0-preview-4d46a3e9",
  "@metamask-previews/name-controller": "8.0.3-preview-4d46a3e9",
  "@metamask-previews/network-controller": "23.6.0-preview-4d46a3e9",
  "@metamask-previews/notification-services-controller": "10.0.0-preview-4d46a3e9",
  "@metamask-previews/permission-controller": "11.0.6-preview-4d46a3e9",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-4d46a3e9",
  "@metamask-previews/phishing-controller": "12.5.0-preview-4d46a3e9",
  "@metamask-previews/polling-controller": "13.0.0-preview-4d46a3e9",
  "@metamask-previews/preferences-controller": "18.1.0-preview-4d46a3e9",
  "@metamask-previews/profile-sync-controller": "17.0.0-preview-4d46a3e9",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-4d46a3e9",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-4d46a3e9",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-4d46a3e9",
  "@metamask-previews/sample-controllers": "0.1.0-preview-4d46a3e9",
  "@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-4d46a3e9",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-4d46a3e9",
  "@metamask-previews/signature-controller": "30.0.0-preview-4d46a3e9",
  "@metamask-previews/token-search-discovery-controller": "3.2.0-preview-4d46a3e9",
  "@metamask-previews/transaction-controller": "57.2.0-preview-4d46a3e9",
  "@metamask-previews/user-operation-controller": "36.0.0-preview-4d46a3e9"
}

OGPoyraz
OGPoyraz previously approved these changes Jun 11, 2025
@matthewwalsh0 matthewwalsh0 dismissed stale reviews from pedronfigueiredo and OGPoyraz via 5dcf9a1 June 12, 2025 08:37
@matthewwalsh0 matthewwalsh0 force-pushed the feat/after-simulate-hook branch from 4d46a3e to 5dcf9a1 Compare June 12, 2025 08:37
@matthewwalsh0 matthewwalsh0 enabled auto-merge (squash) June 12, 2025 08:37
@matthewwalsh0 matthewwalsh0 requested a review from OGPoyraz June 12, 2025 08:37
@matthewwalsh0 matthewwalsh0 merged commit 5e153a4 into main Jun 12, 2025
220 checks passed
@matthewwalsh0 matthewwalsh0 deleted the feat/after-simulate-hook branch June 12, 2025 08:44
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.

3 participants