Skip to content

Add estimate gas fee method#4216

Merged
matthewwalsh0 merged 11 commits intomainfrom
feat/estimate-gas-fee-method
May 2, 2024
Merged

Add estimate gas fee method#4216
matthewwalsh0 merged 11 commits intomainfrom
feat/estimate-gas-fee-method

Conversation

@matthewwalsh0
Copy link
Copy Markdown
Member

@matthewwalsh0 matthewwalsh0 commented Apr 25, 2024

Explanation

Add the estimateGasFee method to the TransactionController so the clients can generate transaction specific gas fees for virtual transactions that don't exist in the controller state.

In addition:

  • Include the DefaultGasFeeFlow in the GasFeePoller so all transactions in the state will include estimates.
  • Add the TestGasFeeFlow to more easily debug the use of gas fee flows in the clients.
  • Support alternate estimate types in the gas fee flows to align with the GasFeeController estimates.
  • Fetch the GasFeeController data on each poll to ensure the network data is always available in the clients, and to minimise the number of calls if there are multiple unapproved transactions on the same chain.

References

Related to #2034

Changelog

@metamask/transaction-controller

  • BREAKING: Update GasFeeEstimates type to support alternate estimate types.
  • BREAKING: Remove gasFeeControllerEstimateType property from mergeGasFeeEstimates method.
  • ADDED: Add estimateGasFee method.
  • ADDED: Add TestGasFeeFlow that is activated via optional testGasFeeFlows constructor option.
  • ADDED: Add types:
    • FeeMarketGasFeeEstimateForLevel
    • FeeMarketGasFeeEstimates
    • GasFeeEstimates
    • GasFeeEstimateLevel
    • GasFeeEstimateType
    • GasPriceGasFeeEstimates
    • LegacyGasFeeEstimates

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

Add options to getGasFeeEstimates callback.
Enable DefaultGasFeeFlow.
Support gas price type in default flow.
@matthewwalsh0
Copy link
Copy Markdown
Member 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": "13.0.0-preview-2036edd1",
  "@metamask-previews/address-book-controller": "4.0.1-preview-2036edd1",
  "@metamask-previews/announcement-controller": "6.1.0-preview-2036edd1",
  "@metamask-previews/approval-controller": "6.0.1-preview-2036edd1",
  "@metamask-previews/assets-controllers": "28.0.0-preview-2036edd1",
  "@metamask-previews/base-controller": "5.0.1-preview-2036edd1",
  "@metamask-previews/build-utils": "2.0.1-preview-2036edd1",
  "@metamask-previews/composable-controller": "6.0.1-preview-2036edd1",
  "@metamask-previews/controller-utils": "9.1.0-preview-2036edd1",
  "@metamask-previews/ens-controller": "10.0.1-preview-2036edd1",
  "@metamask-previews/eth-json-rpc-provider": "3.0.1-preview-2036edd1",
  "@metamask-previews/gas-fee-controller": "15.0.0-preview-2036edd1",
  "@metamask-previews/json-rpc-engine": "8.0.1-preview-2036edd1",
  "@metamask-previews/json-rpc-middleware-stream": "7.0.1-preview-2036edd1",
  "@metamask-previews/keyring-controller": "15.0.0-preview-2036edd1",
  "@metamask-previews/logging-controller": "3.0.1-preview-2036edd1",
  "@metamask-previews/message-manager": "8.0.1-preview-2036edd1",
  "@metamask-previews/name-controller": "6.0.1-preview-2036edd1",
  "@metamask-previews/network-controller": "18.1.0-preview-2036edd1",
  "@metamask-previews/notification-controller": "5.0.1-preview-2036edd1",
  "@metamask-previews/permission-controller": "9.0.2-preview-2036edd1",
  "@metamask-previews/permission-log-controller": "2.0.1-preview-2036edd1",
  "@metamask-previews/phishing-controller": "9.0.1-preview-2036edd1",
  "@metamask-previews/polling-controller": "6.0.1-preview-2036edd1",
  "@metamask-previews/preferences-controller": "10.0.0-preview-2036edd1",
  "@metamask-previews/queued-request-controller": "0.9.0-preview-2036edd1",
  "@metamask-previews/rate-limit-controller": "5.0.1-preview-2036edd1",
  "@metamask-previews/selected-network-controller": "12.0.1-preview-2036edd1",
  "@metamask-previews/signature-controller": "15.0.0-preview-2036edd1",
  "@metamask-previews/transaction-controller": "28.1.0-preview-2036edd1",
  "@metamask-previews/user-operation-controller": "8.0.0-preview-2036edd1"
}

Copy link
Copy Markdown
Contributor

@pedronfigueiredo pedronfigueiredo left a comment

Choose a reason for hiding this comment

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

LGTM!

@matthewwalsh0
Copy link
Copy Markdown
Member 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": "13.0.0-preview-aedc5103",
  "@metamask-previews/address-book-controller": "4.0.1-preview-aedc5103",
  "@metamask-previews/announcement-controller": "6.1.0-preview-aedc5103",
  "@metamask-previews/approval-controller": "6.0.1-preview-aedc5103",
  "@metamask-previews/assets-controllers": "28.0.0-preview-aedc5103",
  "@metamask-previews/base-controller": "5.0.1-preview-aedc5103",
  "@metamask-previews/build-utils": "2.0.1-preview-aedc5103",
  "@metamask-previews/composable-controller": "6.0.1-preview-aedc5103",
  "@metamask-previews/controller-utils": "9.1.0-preview-aedc5103",
  "@metamask-previews/ens-controller": "10.0.1-preview-aedc5103",
  "@metamask-previews/eth-json-rpc-provider": "3.0.1-preview-aedc5103",
  "@metamask-previews/gas-fee-controller": "15.0.0-preview-aedc5103",
  "@metamask-previews/json-rpc-engine": "8.0.1-preview-aedc5103",
  "@metamask-previews/json-rpc-middleware-stream": "7.0.1-preview-aedc5103",
  "@metamask-previews/keyring-controller": "15.0.0-preview-aedc5103",
  "@metamask-previews/logging-controller": "3.0.1-preview-aedc5103",
  "@metamask-previews/message-manager": "8.0.1-preview-aedc5103",
  "@metamask-previews/name-controller": "6.0.1-preview-aedc5103",
  "@metamask-previews/network-controller": "18.1.0-preview-aedc5103",
  "@metamask-previews/notification-controller": "5.0.1-preview-aedc5103",
  "@metamask-previews/permission-controller": "9.0.2-preview-aedc5103",
  "@metamask-previews/permission-log-controller": "2.0.1-preview-aedc5103",
  "@metamask-previews/phishing-controller": "9.0.1-preview-aedc5103",
  "@metamask-previews/polling-controller": "6.0.1-preview-aedc5103",
  "@metamask-previews/preferences-controller": "10.0.0-preview-aedc5103",
  "@metamask-previews/queued-request-controller": "0.9.0-preview-aedc5103",
  "@metamask-previews/rate-limit-controller": "5.0.1-preview-aedc5103",
  "@metamask-previews/selected-network-controller": "12.0.1-preview-aedc5103",
  "@metamask-previews/signature-controller": "15.0.0-preview-aedc5103",
  "@metamask-previews/transaction-controller": "28.1.0-preview-aedc5103",
  "@metamask-previews/user-operation-controller": "8.0.0-preview-aedc5103"
}

@matthewwalsh0
Copy link
Copy Markdown
Member Author

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented May 1, 2024

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": "13.0.0-preview-96ea89dc",
  "@metamask-previews/address-book-controller": "4.0.1-preview-96ea89dc",
  "@metamask-previews/announcement-controller": "6.1.0-preview-96ea89dc",
  "@metamask-previews/approval-controller": "6.0.1-preview-96ea89dc",
  "@metamask-previews/assets-controllers": "28.0.0-preview-96ea89dc",
  "@metamask-previews/base-controller": "5.0.2-preview-96ea89dc",
  "@metamask-previews/build-utils": "2.0.1-preview-96ea89dc",
  "@metamask-previews/composable-controller": "6.0.1-preview-96ea89dc",
  "@metamask-previews/controller-utils": "9.1.0-preview-96ea89dc",
  "@metamask-previews/ens-controller": "10.0.1-preview-96ea89dc",
  "@metamask-previews/eth-json-rpc-provider": "3.0.1-preview-96ea89dc",
  "@metamask-previews/gas-fee-controller": "15.1.0-preview-96ea89dc",
  "@metamask-previews/json-rpc-engine": "8.0.1-preview-96ea89dc",
  "@metamask-previews/json-rpc-middleware-stream": "7.0.1-preview-96ea89dc",
  "@metamask-previews/keyring-controller": "15.0.0-preview-96ea89dc",
  "@metamask-previews/logging-controller": "3.0.1-preview-96ea89dc",
  "@metamask-previews/message-manager": "8.0.1-preview-96ea89dc",
  "@metamask-previews/name-controller": "6.0.1-preview-96ea89dc",
  "@metamask-previews/network-controller": "18.1.0-preview-96ea89dc",
  "@metamask-previews/notification-controller": "5.0.1-preview-96ea89dc",
  "@metamask-previews/permission-controller": "9.0.2-preview-96ea89dc",
  "@metamask-previews/permission-log-controller": "2.0.1-preview-96ea89dc",
  "@metamask-previews/phishing-controller": "9.0.2-preview-96ea89dc",
  "@metamask-previews/polling-controller": "6.0.1-preview-96ea89dc",
  "@metamask-previews/preferences-controller": "10.0.0-preview-96ea89dc",
  "@metamask-previews/queued-request-controller": "0.9.0-preview-96ea89dc",
  "@metamask-previews/rate-limit-controller": "5.0.1-preview-96ea89dc",
  "@metamask-previews/selected-network-controller": "12.0.1-preview-96ea89dc",
  "@metamask-previews/signature-controller": "15.0.0-preview-96ea89dc",
  "@metamask-previews/transaction-controller": "28.1.1-preview-96ea89dc",
  "@metamask-previews/user-operation-controller": "8.0.1-preview-96ea89dc"
}

@matthewwalsh0 matthewwalsh0 merged commit bea5f30 into main May 2, 2024
@matthewwalsh0 matthewwalsh0 deleted the feat/estimate-gas-fee-method branch May 2, 2024 10:04
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