Skip to content

feat: generate EIP-7702 gas fee tokens #5706

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
May 2, 2025
Merged

Conversation

matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Apr 24, 2025

Explanation

Include authorizationList and with7702 properties in simulation request to return EIP-7702 gas fee tokens, and include upgrade gas.

Add optional isEIP7702GasFeeTokensEnabled property to constructor.

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

@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": "27.0.0-preview-47dc38b",
  "@metamask-previews/address-book-controller": "6.0.3-preview-47dc38b",
  "@metamask-previews/announcement-controller": "7.0.3-preview-47dc38b",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-47dc38b",
  "@metamask-previews/approval-controller": "7.1.3-preview-47dc38b",
  "@metamask-previews/assets-controllers": "59.0.0-preview-47dc38b",
  "@metamask-previews/base-controller": "8.0.0-preview-47dc38b",
  "@metamask-previews/bridge-controller": "18.0.0-preview-47dc38b",
  "@metamask-previews/bridge-status-controller": "15.0.0-preview-47dc38b",
  "@metamask-previews/build-utils": "3.0.3-preview-47dc38b",
  "@metamask-previews/chain-agnostic-permission": "0.4.0-preview-47dc38b",
  "@metamask-previews/composable-controller": "11.0.0-preview-47dc38b",
  "@metamask-previews/controller-utils": "11.7.0-preview-47dc38b",
  "@metamask-previews/delegation-controller": "0.1.0-preview-47dc38b",
  "@metamask-previews/earn-controller": "0.12.0-preview-47dc38b",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-47dc38b",
  "@metamask-previews/ens-controller": "16.0.0-preview-47dc38b",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-47dc38b",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-47dc38b",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-47dc38b",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-47dc38b",
  "@metamask-previews/keyring-controller": "21.0.4-preview-47dc38b",
  "@metamask-previews/logging-controller": "6.0.4-preview-47dc38b",
  "@metamask-previews/message-manager": "12.0.1-preview-47dc38b",
  "@metamask-previews/multichain": "4.0.0-preview-47dc38b",
  "@metamask-previews/multichain-api-middleware": "0.2.0-preview-47dc38b",
  "@metamask-previews/multichain-network-controller": "0.5.1-preview-47dc38b",
  "@metamask-previews/multichain-transactions-controller": "0.9.0-preview-47dc38b",
  "@metamask-previews/name-controller": "8.0.3-preview-47dc38b",
  "@metamask-previews/network-controller": "23.2.0-preview-47dc38b",
  "@metamask-previews/notification-services-controller": "6.0.0-preview-47dc38b",
  "@metamask-previews/permission-controller": "11.0.6-preview-47dc38b",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-47dc38b",
  "@metamask-previews/phishing-controller": "12.5.0-preview-47dc38b",
  "@metamask-previews/polling-controller": "13.0.0-preview-47dc38b",
  "@metamask-previews/preferences-controller": "17.0.0-preview-47dc38b",
  "@metamask-previews/profile-sync-controller": "12.0.0-preview-47dc38b",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-47dc38b",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-47dc38b",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-47dc38b",
  "@metamask-previews/sample-controllers": "0.1.0-preview-47dc38b",
  "@metamask-previews/selected-network-controller": "22.0.0-preview-47dc38b",
  "@metamask-previews/signature-controller": "27.1.0-preview-47dc38b",
  "@metamask-previews/token-search-discovery-controller": "3.1.0-preview-47dc38b",
  "@metamask-previews/transaction-controller": "54.2.0-preview-47dc38b",
  "@metamask-previews/user-operation-controller": "33.0.0-preview-47dc38b"
}

@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": "27.0.0-preview-71c2f67",
  "@metamask-previews/address-book-controller": "6.0.3-preview-71c2f67",
  "@metamask-previews/announcement-controller": "7.0.3-preview-71c2f67",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-71c2f67",
  "@metamask-previews/approval-controller": "7.1.3-preview-71c2f67",
  "@metamask-previews/assets-controllers": "59.0.0-preview-71c2f67",
  "@metamask-previews/base-controller": "8.0.0-preview-71c2f67",
  "@metamask-previews/bridge-controller": "18.0.0-preview-71c2f67",
  "@metamask-previews/bridge-status-controller": "15.0.0-preview-71c2f67",
  "@metamask-previews/build-utils": "3.0.3-preview-71c2f67",
  "@metamask-previews/chain-agnostic-permission": "0.4.0-preview-71c2f67",
  "@metamask-previews/composable-controller": "11.0.0-preview-71c2f67",
  "@metamask-previews/controller-utils": "11.7.0-preview-71c2f67",
  "@metamask-previews/delegation-controller": "0.1.0-preview-71c2f67",
  "@metamask-previews/earn-controller": "0.12.0-preview-71c2f67",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-71c2f67",
  "@metamask-previews/ens-controller": "16.0.0-preview-71c2f67",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-71c2f67",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-71c2f67",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-71c2f67",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-71c2f67",
  "@metamask-previews/keyring-controller": "21.0.4-preview-71c2f67",
  "@metamask-previews/logging-controller": "6.0.4-preview-71c2f67",
  "@metamask-previews/message-manager": "12.0.1-preview-71c2f67",
  "@metamask-previews/multichain": "4.0.0-preview-71c2f67",
  "@metamask-previews/multichain-api-middleware": "0.2.0-preview-71c2f67",
  "@metamask-previews/multichain-network-controller": "0.5.1-preview-71c2f67",
  "@metamask-previews/multichain-transactions-controller": "0.9.0-preview-71c2f67",
  "@metamask-previews/name-controller": "8.0.3-preview-71c2f67",
  "@metamask-previews/network-controller": "23.2.0-preview-71c2f67",
  "@metamask-previews/notification-services-controller": "6.0.0-preview-71c2f67",
  "@metamask-previews/permission-controller": "11.0.6-preview-71c2f67",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-71c2f67",
  "@metamask-previews/phishing-controller": "12.5.0-preview-71c2f67",
  "@metamask-previews/polling-controller": "13.0.0-preview-71c2f67",
  "@metamask-previews/preferences-controller": "17.0.0-preview-71c2f67",
  "@metamask-previews/profile-sync-controller": "12.0.0-preview-71c2f67",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-71c2f67",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-71c2f67",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-71c2f67",
  "@metamask-previews/sample-controllers": "0.1.0-preview-71c2f67",
  "@metamask-previews/selected-network-controller": "22.0.0-preview-71c2f67",
  "@metamask-previews/signature-controller": "27.1.0-preview-71c2f67",
  "@metamask-previews/token-search-discovery-controller": "3.1.0-preview-71c2f67",
  "@metamask-previews/transaction-controller": "54.2.0-preview-71c2f67",
  "@metamask-previews/user-operation-controller": "33.0.0-preview-71c2f67"
}

@matthewwalsh0 matthewwalsh0 force-pushed the feat/7702-fee-simulation branch from 71c2f67 to fd3742a Compare May 1, 2025 10:00
@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

@matthewwalsh0 matthewwalsh0 force-pushed the feat/7702-fee-simulation branch from fd3742a to 5ce898b Compare May 1, 2025 10:23
@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented May 1, 2025

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": "27.0.0-preview-5ce898ba",
  "@metamask-previews/address-book-controller": "6.0.3-preview-5ce898ba",
  "@metamask-previews/announcement-controller": "7.0.3-preview-5ce898ba",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-5ce898ba",
  "@metamask-previews/approval-controller": "7.1.3-preview-5ce898ba",
  "@metamask-previews/assets-controllers": "60.0.0-preview-5ce898ba",
  "@metamask-previews/base-controller": "8.0.1-preview-5ce898ba",
  "@metamask-previews/bridge-controller": "20.0.0-preview-5ce898ba",
  "@metamask-previews/bridge-status-controller": "17.0.0-preview-5ce898ba",
  "@metamask-previews/build-utils": "3.0.3-preview-5ce898ba",
  "@metamask-previews/chain-agnostic-permission": "0.5.0-preview-5ce898ba",
  "@metamask-previews/composable-controller": "11.0.0-preview-5ce898ba",
  "@metamask-previews/controller-utils": "11.7.0-preview-5ce898ba",
  "@metamask-previews/delegation-controller": "0.1.0-preview-5ce898ba",
  "@metamask-previews/earn-controller": "0.12.0-preview-5ce898ba",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-5ce898ba",
  "@metamask-previews/ens-controller": "16.0.0-preview-5ce898ba",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-5ce898ba",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-5ce898ba",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-5ce898ba",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-5ce898ba",
  "@metamask-previews/keyring-controller": "21.0.4-preview-5ce898ba",
  "@metamask-previews/logging-controller": "6.0.4-preview-5ce898ba",
  "@metamask-previews/message-manager": "12.0.1-preview-5ce898ba",
  "@metamask-previews/multichain": "4.0.0-preview-5ce898ba",
  "@metamask-previews/multichain-api-middleware": "0.2.0-preview-5ce898ba",
  "@metamask-previews/multichain-network-controller": "0.5.1-preview-5ce898ba",
  "@metamask-previews/multichain-transactions-controller": "0.9.0-preview-5ce898ba",
  "@metamask-previews/name-controller": "8.0.3-preview-5ce898ba",
  "@metamask-previews/network-controller": "23.3.0-preview-5ce898ba",
  "@metamask-previews/notification-services-controller": "6.0.0-preview-5ce898ba",
  "@metamask-previews/permission-controller": "11.0.6-preview-5ce898ba",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-5ce898ba",
  "@metamask-previews/phishing-controller": "12.5.0-preview-5ce898ba",
  "@metamask-previews/polling-controller": "13.0.0-preview-5ce898ba",
  "@metamask-previews/preferences-controller": "17.0.0-preview-5ce898ba",
  "@metamask-previews/profile-sync-controller": "12.0.0-preview-5ce898ba",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-5ce898ba",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-5ce898ba",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-5ce898ba",
  "@metamask-previews/sample-controllers": "0.1.0-preview-5ce898ba",
  "@metamask-previews/selected-network-controller": "22.0.0-preview-5ce898ba",
  "@metamask-previews/signature-controller": "27.1.0-preview-5ce898ba",
  "@metamask-previews/token-search-discovery-controller": "3.1.0-preview-5ce898ba",
  "@metamask-previews/transaction-controller": "54.3.0-preview-5ce898ba",
  "@metamask-previews/user-operation-controller": "33.0.0-preview-5ce898ba"
}

@@ -4234,4 +4230,100 @@ export class TransactionController extends BaseController<
newTransactionMeta,
);
}

async #getSimulationData({
Copy link
Member Author

Choose a reason for hiding this comment

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

I've an upcoming PR that will better modularise this simulation logic to keep it out of TransactionController.ts.

@matthewwalsh0 matthewwalsh0 force-pushed the feat/7702-fee-simulation branch from 5ce898b to e83ad71 Compare May 2, 2025 09:13
@matthewwalsh0 matthewwalsh0 merged commit 418f27e into main May 2, 2025
202 checks passed
@matthewwalsh0 matthewwalsh0 deleted the feat/7702-fee-simulation branch May 2, 2025 11:58
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