feat: add accountOverride to override default recipient or delegator for MM Pay transactions#8454
feat: add accountOverride to override default recipient or delegator for MM Pay transactions#8454
Conversation
…for MM Pay transactions
| transactionData.isPostQuote = config.isPostQuote; | ||
| transactionData.isHyperliquidSource = config.isHyperliquidSource; | ||
| transactionData.refundTo = config.refundTo; | ||
| transactionData.accountOverride = config.accountOverride; |
There was a problem hiding this comment.
PR is updated to address this.
| ); | ||
| const callsForActions = [...destinationCalls]; | ||
| let recipient = from; | ||
| let recipient = accountOverride ?? from; |
There was a problem hiding this comment.
For a standard deposit flow, should accountOverride just be the funding account and gas payer, but the recipient of the funds should remain as the original from?
So in the money account example, from is money account so it gets the funds, but the source transactions are submitted by accountOverride.
There was a problem hiding this comment.
That is good catch, let me fix this.
But I am bit confused here why we are using from account and not to account as destination ?
There was a problem hiding this comment.
PR is updated to address this.
| */ | ||
| refundTo?: Hex; | ||
|
|
||
| /** Optional address to override the default account used by the transaction. |
There was a problem hiding this comment.
Can we elaborate here and confirm that the accountOverride provides the funds and pays for gas, and if isPostQuote is also the recipient.
There was a problem hiding this comment.
PR is updated to address this.
| : from, | ||
| slippageTolerance, | ||
| tradeType: useExactInput ? 'EXACT_INPUT' : 'EXPECTED_OUTPUT', | ||
| user: from, |
There was a problem hiding this comment.
Do we also need to change this user since the accountOverride will be the one providing the funds and signing the source transactions?
There was a problem hiding this comment.
PR is updated to address this.
There was a problem hiding this comment.
For audit sake, just confirming that processTransactions shouldn't need changing as it already uses the original transactionMeta to build the delegations where the from would be the money account?
There was a problem hiding this comment.
Do we need to update across-quotes to set the depositor to the accountOverride?
There was a problem hiding this comment.
Since depositor is set to from which we updated in quotes.ts to use accountOverride. This change is not needed separately.
| }); | ||
|
|
||
| const requests = buildQuoteRequests({ | ||
| accountOverride, |
There was a problem hiding this comment.
Could we abstract this from the strategies by setting from here to accountOverride instead?
The delegations on the target side should still work as that uses the original full transactionMeta?
There was a problem hiding this comment.
This is nice simplification, PR is updated.
There was a problem hiding this comment.
For the fully gasless flow, do we need to update submitViaRelayExecute in relay-submit to use the accountOverride also since it would be providing the funds?
There was a problem hiding this comment.
This should also already work as from is now updated in quote.
There was a problem hiding this comment.
Can do in a separate PR if easier, but for the withdraw flows, if we have a accountOverride, then we want that to sign the withdraw transaction rather than the original from.
So do we need to convert the withdraw transaction data to delegations on line 353 of relay-submit.ts?
There was a problem hiding this comment.
This should also already work since from is quote is updated.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1b7f538. Configure here.

Explanation
Add accountOverride in transaction config to override default recipient or delegator for MM Pay transactions
References
Fixes https://consensyssoftware.atlassian.net/browse/CONF-1188
Checklist
Note
Medium Risk
Changes which address is used as the
fromaccount in quote/balance logic, which can affect pricing, eligibility, and funding behavior if misconfigured. Scope is localized to transaction-pay config/state and quote building and is covered by targeted unit tests.Overview
Adds a new optional transaction config/state field
accountOverrideto override the default account used for MM Pay transactions.When set, quote generation (and payment-token balance refresh) uses
accountOverrideas thefromaddress instead oftxParams.from, and the controller now treats changes toaccountOverrideas quote-affecting (triggeringupdateSourceAmounts/updateQuotes). Tests and changelog are updated to cover the new behavior for both post-quote and standard flows.Reviewed by Cursor Bugbot for commit 7e3d54f. Bugbot is set up for automated code reviews on this repo. Configure here.