Skip to content

Adds transactionBatches into transaction controller state#5793

Merged
vinistevam merged 27 commits intomainfrom
feat/add-batch-transaction-approval-type
May 27, 2025
Merged

Adds transactionBatches into transaction controller state#5793
vinistevam merged 27 commits intomainfrom
feat/add-batch-transaction-approval-type

Conversation

@vinistevam
Copy link
Copy Markdown
Contributor

@vinistevam vinistevam commented May 13, 2025

Explanation

This PR introduces support for batch transactions in the Transaction Controller by adding a new ApprovalType and extending the state to handle TransactionBatches. These changes enable enhanced metadata management for sequential batch flows, including UI updates for gas estimation and future automation capabilities.

Changes

Controller Utils

  • Added a new ApprovalType to the enum: TransactionBatch, to support batch transactions.

Transaction Controller

  • Introduced a new state property: transactionBatches, to store metadata for transaction batches.
  • Added a private method: addBatchMetadata, responsible for populating batch-specific metadata.
  • Created a new type: TransactionBatchMeta, to manage metadata for transaction batches.
  • Add addBatchMetadata to store batch metadata and wipeTransactionBatches to clean up state after batch hook completion.
  • Update unit tests

Rationale

The introduction of TransactionBatchMeta allows for a clean separation of metadata for batch transactions, which conceptually differ from individual transactions. This ensures:

  • Accurate metadata at the time of batch creation, as TransactionMeta for individual transactions may not yet exist.
  • Future support for advanced features such as transaction simulations and dynamic gas fee updates for batches, enabling better client-side functionality and automation.

These changes lay the groundwork for improved handling of batch transactions and pave the way for future enhancements.

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

@vinistevam vinistevam force-pushed the feat/add-batch-transaction-approval-type branch 2 times, most recently from c3f8a6b to 49e9a89 Compare May 14, 2025 16:13
@vinistevam vinistevam marked this pull request as ready for review May 14, 2025 16:14
@vinistevam vinistevam requested review from a team as code owners May 14, 2025 16:14
@pedronfigueiredo pedronfigueiredo force-pushed the feat/add-batch-transaction-approval-type branch from 31069c4 to e62592d Compare May 14, 2025 16:24
Comment thread packages/controller-utils/src/constants.ts Outdated
Comment thread packages/transaction-controller/src/TransactionController.ts Outdated
Comment thread packages/transaction-controller/src/TransactionController.ts Outdated
Comment thread packages/transaction-controller/src/types.ts
Comment thread packages/transaction-controller/src/types.ts Outdated
Comment thread packages/transaction-controller/src/utils/batch.ts Outdated
Comment thread packages/transaction-controller/src/utils/batch.ts Outdated
Comment thread packages/transaction-controller/src/utils/batch.ts
Comment thread packages/transaction-controller/CHANGELOG.md Outdated
Comment thread packages/transaction-controller/src/types.ts
Comment thread packages/transaction-controller/src/utils/batch.ts Outdated
@vinistevam vinistevam changed the title Adds and populate transactionBatches into transaction controller state Adds transactionBatches into transaction controller state May 19, 2025
Comment thread packages/controller-utils/src/constants.ts Outdated
Comment thread packages/transaction-controller/src/TransactionController.ts Outdated
@vinistevam
Copy link
Copy Markdown
Contributor Author

@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/accounts-controller": "29.0.0-preview-559651c0",
  "@metamask-previews/address-book-controller": "6.0.3-preview-559651c0",
  "@metamask-previews/announcement-controller": "7.0.3-preview-559651c0",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-559651c0",
  "@metamask-previews/approval-controller": "7.1.3-preview-559651c0",
  "@metamask-previews/assets-controllers": "63.0.0-preview-559651c0",
  "@metamask-previews/base-controller": "8.0.1-preview-559651c0",
  "@metamask-previews/bridge-controller": "26.0.0-preview-559651c0",
  "@metamask-previews/bridge-status-controller": "23.0.0-preview-559651c0",
  "@metamask-previews/build-utils": "3.0.3-preview-559651c0",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-559651c0",
  "@metamask-previews/composable-controller": "11.0.0-preview-559651c0",
  "@metamask-previews/controller-utils": "11.9.0-preview-559651c0",
  "@metamask-previews/delegation-controller": "0.3.0-preview-559651c0",
  "@metamask-previews/earn-controller": "0.14.0-preview-559651c0",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-559651c0",
  "@metamask-previews/ens-controller": "16.0.0-preview-559651c0",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-559651c0",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-559651c0",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-559651c0",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-559651c0",
  "@metamask-previews/keyring-controller": "22.0.0-preview-559651c0",
  "@metamask-previews/logging-controller": "6.0.4-preview-559651c0",
  "@metamask-previews/message-manager": "12.0.1-preview-559651c0",
  "@metamask-previews/multichain": "4.1.0-preview-559651c0",
  "@metamask-previews/multichain-api-middleware": "0.3.0-preview-559651c0",
  "@metamask-previews/multichain-network-controller": "0.7.0-preview-559651c0",
  "@metamask-previews/multichain-transactions-controller": "1.0.0-preview-559651c0",
  "@metamask-previews/name-controller": "8.0.3-preview-559651c0",
  "@metamask-previews/network-controller": "23.5.0-preview-559651c0",
  "@metamask-previews/notification-services-controller": "8.0.0-preview-559651c0",
  "@metamask-previews/permission-controller": "11.0.6-preview-559651c0",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-559651c0",
  "@metamask-previews/phishing-controller": "12.5.0-preview-559651c0",
  "@metamask-previews/polling-controller": "13.0.0-preview-559651c0",
  "@metamask-previews/preferences-controller": "18.0.0-preview-559651c0",
  "@metamask-previews/profile-sync-controller": "15.0.0-preview-559651c0",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-559651c0",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-559651c0",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-559651c0",
  "@metamask-previews/sample-controllers": "0.1.0-preview-559651c0",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-559651c0",
  "@metamask-previews/signature-controller": "29.0.0-preview-559651c0",
  "@metamask-previews/token-search-discovery-controller": "3.1.0-preview-559651c0",
  "@metamask-previews/transaction-controller": "56.2.0-preview-559651c0",
  "@metamask-previews/user-operation-controller": "35.0.0-preview-559651c0"
}

Comment thread packages/transaction-controller/src/utils/batch.ts Outdated
Comment thread packages/transaction-controller/src/utils/batch.ts Outdated
Comment thread packages/transaction-controller/src/utils/batch.ts Outdated
Comment thread packages/transaction-controller/CHANGELOG.md Outdated
@vinistevam
Copy link
Copy Markdown
Contributor Author

@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/accounts-controller": "29.0.0-preview-6aac6e71",
  "@metamask-previews/address-book-controller": "6.0.3-preview-6aac6e71",
  "@metamask-previews/announcement-controller": "7.0.3-preview-6aac6e71",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-6aac6e71",
  "@metamask-previews/approval-controller": "7.1.3-preview-6aac6e71",
  "@metamask-previews/assets-controllers": "63.0.0-preview-6aac6e71",
  "@metamask-previews/base-controller": "8.0.1-preview-6aac6e71",
  "@metamask-previews/bridge-controller": "26.0.0-preview-6aac6e71",
  "@metamask-previews/bridge-status-controller": "23.0.0-preview-6aac6e71",
  "@metamask-previews/build-utils": "3.0.3-preview-6aac6e71",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-6aac6e71",
  "@metamask-previews/composable-controller": "11.0.0-preview-6aac6e71",
  "@metamask-previews/controller-utils": "11.9.0-preview-6aac6e71",
  "@metamask-previews/delegation-controller": "0.3.0-preview-6aac6e71",
  "@metamask-previews/earn-controller": "0.14.0-preview-6aac6e71",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-6aac6e71",
  "@metamask-previews/ens-controller": "16.0.0-preview-6aac6e71",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-6aac6e71",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-6aac6e71",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-6aac6e71",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-6aac6e71",
  "@metamask-previews/keyring-controller": "22.0.0-preview-6aac6e71",
  "@metamask-previews/logging-controller": "6.0.4-preview-6aac6e71",
  "@metamask-previews/message-manager": "12.0.1-preview-6aac6e71",
  "@metamask-previews/multichain": "4.1.0-preview-6aac6e71",
  "@metamask-previews/multichain-api-middleware": "0.3.0-preview-6aac6e71",
  "@metamask-previews/multichain-network-controller": "0.7.0-preview-6aac6e71",
  "@metamask-previews/multichain-transactions-controller": "1.0.0-preview-6aac6e71",
  "@metamask-previews/name-controller": "8.0.3-preview-6aac6e71",
  "@metamask-previews/network-controller": "23.5.0-preview-6aac6e71",
  "@metamask-previews/notification-services-controller": "8.0.0-preview-6aac6e71",
  "@metamask-previews/permission-controller": "11.0.6-preview-6aac6e71",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-6aac6e71",
  "@metamask-previews/phishing-controller": "12.5.0-preview-6aac6e71",
  "@metamask-previews/polling-controller": "13.0.0-preview-6aac6e71",
  "@metamask-previews/preferences-controller": "18.0.0-preview-6aac6e71",
  "@metamask-previews/profile-sync-controller": "15.0.0-preview-6aac6e71",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-6aac6e71",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-6aac6e71",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-6aac6e71",
  "@metamask-previews/sample-controllers": "0.1.0-preview-6aac6e71",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-6aac6e71",
  "@metamask-previews/signature-controller": "29.0.0-preview-6aac6e71",
  "@metamask-previews/token-search-discovery-controller": "3.1.0-preview-6aac6e71",
  "@metamask-previews/transaction-controller": "56.2.0-preview-6aac6e71",
  "@metamask-previews/user-operation-controller": "35.0.0-preview-6aac6e71"
}

Copy link
Copy Markdown
Member

@mikesposito mikesposito left a comment

Choose a reason for hiding this comment

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

Changes to controller-utils look good

@vinistevam vinistevam merged commit 4e2d3d5 into main May 27, 2025
206 checks passed
@vinistevam vinistevam deleted the feat/add-batch-transaction-approval-type branch May 27, 2025 08:25
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.

4 participants