feat(transaction-pay-controller): validate Relay quotes#9143
Draft
matthewwalsh0 wants to merge 2 commits into
Draft
feat(transaction-pay-controller): validate Relay quotes#9143matthewwalsh0 wants to merge 2 commits into
matthewwalsh0 wants to merge 2 commits into
Conversation
4c879f1 to
c8d67d2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation
Transaction Pay currently accepts Relay quotes after construction without validating that the resulting execution path is still executable. That can leave clients with quotes that only fail later during submission or transaction simulation.
This PR adds post-quote Relay validation through the existing
checkQuoteSupportstrategy hook. Relay converts each quote into normalized execution transactions, then generic validation checks source balance, decoded source-token transfers, and execution simulation before quotes are persisted as executable.The simulation and validation logic is split into generic utilities so other strategies can opt into the same checks when they can provide normalized transaction calls. Sentinel simulation remains the primary path, with single-transaction RPC fallback through
debug_traceCallandeth_estimateGas; strategies can request a simulation-only 7702 account mock viamock7702Fromwithout knowing the state-override details.References
Checklist