Skip to content

Conversation

@matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Nov 11, 2025

Explanation

Support transactions in Relay quotes via delegation and EIP-7702.

References

Related to #5945

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

Note

Adds delegated/EIP-7702 transaction support to Relay quotes and execution, introducing a required getDelegationTransaction API and updating Relay request/submit flows.

  • BREAKING:
    • Require getDelegationTransaction in TransactionPayControllerOptions; register action TransactionPayController:getDelegationTransaction.
  • Relay Strategy:
    • Quotes (strategy/relay/relay-quotes.ts):
      • Include authorizationList and txs (token transfer + delegation) in request when transaction data present; set tradeType to EXACT_OUTPUT.
      • Normalize Arbitrum USDC → Hyperliquid deposit to Hypercore (CHAIN_ID_HYPERCORE), adjust targetChainId, token, and amount.
      • Remove skip-transaction handling; set fees.targetNetwork to 0 in quotes.
      • Use fallback gas limit when missing; log request/response; read feature-flagged quote URL.
    • Submit (strategy/relay/relay-submit.ts):
      • Submit all Relay step transactions (batch if needed), collect requiredTransactionIds, clear parent nonce, and mark isIntentComplete after completion.
      • Poll Relay status until success (interval via RELAY_POLLING_INTERVAL); skip polling for same-chain; treat failure/refund/fallback as errors.
      • Return target transaction hash (fallback 0x0 if absent).
    • Constants/Types: Add CHAIN_ID_HYPERCORE, RELAY_POLLING_INTERVAL; extend RelayQuote.details and remove skipTransaction.
  • Controller/Exports:
    • Wire getDelegationTransaction through controller and exports; update tests accordingly.
  • Totals:
    • Exclude skipIfBalance tokens from amount sums without checking balances.
  • Changelog: Document breaking addition of delegated transactions in Relay quotes.

Written by Cursor Bugbot for commit bba0dee. This will update automatically on new commits. Configure here.

@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
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": "3.0.0-preview-e2a66c7a",
  "@metamask-previews/accounts-controller": "34.0.0-preview-e2a66c7a",
  "@metamask-previews/address-book-controller": "7.0.0-preview-e2a66c7a",
  "@metamask-previews/analytics-controller": "0.0.0-preview-e2a66c7a",
  "@metamask-previews/announcement-controller": "8.0.0-preview-e2a66c7a",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-e2a66c7a",
  "@metamask-previews/approval-controller": "8.0.0-preview-e2a66c7a",
  "@metamask-previews/assets-controllers": "88.0.0-preview-e2a66c7a",
  "@metamask-previews/base-controller": "9.0.0-preview-e2a66c7a",
  "@metamask-previews/bridge-controller": "60.0.0-preview-e2a66c7a",
  "@metamask-previews/bridge-status-controller": "60.0.0-preview-e2a66c7a",
  "@metamask-previews/build-utils": "3.0.4-preview-e2a66c7a",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-e2a66c7a",
  "@metamask-previews/claims-controller": "0.2.0-preview-e2a66c7a",
  "@metamask-previews/composable-controller": "12.0.0-preview-e2a66c7a",
  "@metamask-previews/controller-utils": "11.15.0-preview-e2a66c7a",
  "@metamask-previews/core-backend": "4.0.0-preview-e2a66c7a",
  "@metamask-previews/delegation-controller": "1.0.0-preview-e2a66c7a",
  "@metamask-previews/earn-controller": "10.0.0-preview-e2a66c7a",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-e2a66c7a",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-e2a66c7a",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-e2a66c7a",
  "@metamask-previews/ens-controller": "18.0.0-preview-e2a66c7a",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-e2a66c7a",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-e2a66c7a",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-e2a66c7a",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-e2a66c7a",
  "@metamask-previews/foundryup": "1.0.1-preview-e2a66c7a",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-e2a66c7a",
  "@metamask-previews/gator-permissions-controller": "0.4.0-preview-e2a66c7a",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-e2a66c7a",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-e2a66c7a",
  "@metamask-previews/keyring-controller": "24.0.0-preview-e2a66c7a",
  "@metamask-previews/logging-controller": "7.0.0-preview-e2a66c7a",
  "@metamask-previews/message-manager": "14.0.0-preview-e2a66c7a",
  "@metamask-previews/messenger": "0.3.0-preview-e2a66c7a",
  "@metamask-previews/multichain-account-service": "3.0.0-preview-e2a66c7a",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-e2a66c7a",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-e2a66c7a",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-e2a66c7a",
  "@metamask-previews/name-controller": "9.0.0-preview-e2a66c7a",
  "@metamask-previews/network-controller": "25.0.0-preview-e2a66c7a",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-e2a66c7a",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-e2a66c7a",
  "@metamask-previews/permission-controller": "12.1.0-preview-e2a66c7a",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-e2a66c7a",
  "@metamask-previews/phishing-controller": "15.0.0-preview-e2a66c7a",
  "@metamask-previews/polling-controller": "15.0.0-preview-e2a66c7a",
  "@metamask-previews/preferences-controller": "21.0.0-preview-e2a66c7a",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-e2a66c7a",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-e2a66c7a",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-e2a66c7a",
  "@metamask-previews/sample-controllers": "3.0.0-preview-e2a66c7a",
  "@metamask-previews/seedless-onboarding-controller": "6.1.0-preview-e2a66c7a",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-e2a66c7a",
  "@metamask-previews/shield-controller": "2.0.0-preview-e2a66c7a",
  "@metamask-previews/signature-controller": "36.0.0-preview-e2a66c7a",
  "@metamask-previews/subscription-controller": "3.3.0-preview-e2a66c7a",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-e2a66c7a",
  "@metamask-previews/transaction-controller": "61.1.0-preview-e2a66c7a",
  "@metamask-previews/transaction-pay-controller": "4.0.0-preview-e2a66c7a",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-e2a66c7a"
}

@matthewwalsh0 matthewwalsh0 force-pushed the feat/relay-transactions branch from 11be3a1 to 71e58e7 Compare November 12, 2025 02:46
@matthewwalsh0 matthewwalsh0 marked this pull request as ready for review November 12, 2025 11:51
@matthewwalsh0 matthewwalsh0 requested review from a team as code owners November 12, 2025 11:51
@matthewwalsh0 matthewwalsh0 force-pushed the feat/relay-transactions branch from 6942fdf to 1d4c565 Compare November 12, 2025 11:51
@matthewwalsh0 matthewwalsh0 enabled auto-merge (squash) November 12, 2025 12:32
@matthewwalsh0 matthewwalsh0 force-pushed the feat/relay-transactions branch from 1d4c565 to bba0dee Compare November 12, 2025 12:32
@matthewwalsh0 matthewwalsh0 merged commit 88d6222 into main Nov 12, 2025
271 checks passed
@matthewwalsh0 matthewwalsh0 deleted the feat/relay-transactions branch November 12, 2025 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants