Skip to content
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

feat: support publish batch hook #5401

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft

Conversation

matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Feb 26, 2025

Explanation

Support custom logic to publish a transaction batch in the TransactionController.

Specifically:

  • Add PublishBatchHook, PublishBatchHookRequest, and PublishBatchHookResult types.
  • Add optional publishBatchHook to TransactionControllerOptions.
  • Add CollectPublishHook to record signed transactions to pass to PublishBatchHook.
  • Add ExtraTransactionsPublishHook to create a transaction batch using the current and specified transactions.
  • Populate batchId on each TransactionMetadata in the batch.
  • Support existing transactions in TransactionBatchRequest via new existingTransaction property.
  • Add useHook property to TransactionBatchRequest to use only PublishBatchHook rather than EIP-7702.
  • Add batchTransactions property and updateBatchTransactions method.
  • Automatically use ExtraTransactionsPublishHook if batchTransactions exist on transaction.

References

Changelog

[Pending]

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

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

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

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.

1 participant