-
Notifications
You must be signed in to change notification settings - Fork 177
feat(limit-orders): support approval bundling for EIP-7702 accounts #7902
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
Open
tenderdeve
wants to merge
12
commits into
cowprotocol:develop
Choose a base branch
from
tenderdeve:feat/7895-eip7702-limit-bundling
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 3 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
c9a8a76
feat(limit-orders): support approval bundling for EIP-7702 accounts
tenderdeve 7306eb9
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh 793b3de
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh 2ad4694
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh c23db22
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh fae44f2
fix(limit-orders): navigate to Signing tab after placing a bundled order
tenderdeve f3b151e
fix(cancellation): force on-chain cancellation for pre-signed orders
tenderdeve 46adf64
Merge remote-tracking branch 'upstream/develop' into feat/7895-eip770…
tenderdeve 321e126
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh e05033e
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh 3900fd6
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
elena-zh 594d57f
Merge branch 'develop' into feat/7895-eip7702-limit-bundling
tenderdeve File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
Repository: cowprotocol/cowswap
Length of output: 1430
🏁 Script executed:
Repository: cowprotocol/cowswap
Length of output: 23700
🌐 Web query:
EIP-5792 getCallsStatus unknown batchId error pending response💡 Result:
The "unknown batchId" error in the context of EIP-5792 is formally represented by RPC error code 5730, which explicitly indicates that the provided bundle ID is unknown or has not been submitted via
wallet_sendCalls[1][2]. If you are encountering this error, it typically means one of the following: 1. Invalid or Expired ID: ThebatchId(orid) provided towallet_getCallsStatusdoes not match any active or recent batch known to the wallet [1][2]. Per the EIP-5792 specification, wallets are recommended to maintain status information for at least 24 hours after the correspondingwallet_sendCallscall [1][2]. If you are attempting to poll for a status after this window, or if the wallet has cleared its cache, the ID will be unknown [1]. 2. Incorrect ID format: Ensure that theidbeing passed towallet_getCallsStatusis the exact string returned by the initialwallet_sendCallscall [1][3]. 3. Wallet Implementation Issues: Some wallets may not persist batch IDs reliably across sessions or may have bugs in their implementation of thewallet_getCallsStatusmethod [4]. Regarding "pending" responses: Thewallet_getCallsStatusmethod is designed to be polled [5]. When a batch has been submitted but not yet fully processed/included on-chain, the wallet should return a status code of 100 (Pending) [6][7]. If you are implementing a client, you should continue to poll thegetCallsStatusendpoint until the status transitions to a terminal state, such as 200 (Success) or various failure codes (e.g., 300-700 range) [6][8]. If you are using libraries like Viem or Wagmi, they often abstract these RPC calls [9][4]. If you see inconsistent results (e.g., "failure" status while transactions actually succeeded), it may be due to the wallet's specific implementation of status reporting or a divergence in how the client interprets those codes [4][10]. In such cases, verifying the transaction hashes directly viaeth_getTransactionReceiptis a standard fallback strategy to determine the true state of the transactions [10].Citations:
🌐 Web query:
EIP-5792 rpcErrorCode 5730 unknownCallsBatchId wallet sendCalls getCallsStatus💡 Result:
In the context of EIP-5792, rpcErrorCode 5730 represents an Unknown Bundle ID error [1][2]. This error occurs when a wallet receives a request containing a call bundle identifier that it does not recognize or that has not been previously submitted via wallet_sendCalls [1][2]. This error code is specifically associated with the following EIP-5792 RPC methods [1][2]: 1. wallet_getCallsStatus: Used by applications to query the status of a previously submitted call batch. If the provided ID is unknown to the wallet, it must return error 5730 [3][4]. 2. wallet_showCallsStatus: Used to request that a wallet display information about a specific call bundle. Similarly, if the ID is not recognized, the wallet returns error 5730 [5][6]. In technical implementations, such as those using the Viem library, this is categorized as an UnknownBundleIdError [7].
Citations:
🏁 Script executed:
Repository: cowprotocol/cowswap
Length of output: 37965
Do not retry permanent bundle-status errors forever.
The catch block currently treats every
getCallsStatuserror as temporary. EIP-5792 uses RPC error 5730 for unknown bundle IDs, which should be treated as terminal; a permanently unavailable/unknown bundle ID can otherwise keep the order inPRESIGNATURE_PENDINGuntil the next regular flow update. Add bounded retry/expiry handling and invalidate the order on terminal unknown-bundle errors while still allowing retries for transient wallet indexing failures.🤖 Prompt for AI Agents