Skip to content

docs: add Solver7702Delegate docs#627

Open
igorroncevic wants to merge 8 commits into
mainfrom
feat/solver-7702-delegate
Open

docs: add Solver7702Delegate docs#627
igorroncevic wants to merge 8 commits into
mainfrom
feat/solver-7702-delegate

Conversation

@igorroncevic

@igorroncevic igorroncevic commented May 22, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a solver-facing guide for using Solver7702Delegate to keep the existing solver EOA while using auxiliary EOAs for parallel settlement submission.

Changes

  • Add a new Solver7702Delegate tutorial under solver docs.
  • Document the direct vs delegated transaction shape and packed calldata format.
  • Cover setup, verification, monitoring, caller replacement, revocation, and compromised key handling.
  • Link the guide from solver onboarding and driver submission docs.

Summary by CodeRabbit

  • Documentation
    • Updated solver driver documentation with configuration guidance for parallel settlement submissions.
    • Added new documentation page describing how to enable parallel settlement submissions using auxiliary accounts to prevent submission delays.

@vercel

vercel Bot commented May 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview Jun 19, 2026 11:18am

Request Review

@coderabbitai

coderabbitai Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new solver-7702-delegate.md tutorial page documenting Solver7702Delegate for parallel settlement submission via ERC-7702 nonce lanes, covering driver configuration, submission mechanics, calldata packing, and verification. Updates the existing driver tutorial with a cross-reference paragraph and minor list bullet reformatting.

Changes

Solver7702Delegate Documentation

Layer / File(s) Summary
New Solver7702Delegate tutorial page
docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md
Introduces Solver7702Delegate as an ERC-7702 nonce-lane mechanism for parallel settlement; documents submission-accounts driver configuration, signing/funding constraints, direct vs. delegated submission flow, delegated calldata packing using abi.encodePacked(bytes20(target), targetCalldata), cast code verification steps, and a reference to the upstream README.
Driver tutorial cross-reference and list reformatting
docs/cow-protocol/tutorials/arbitrate/solver/driver.md
Reformats the preprocessing-auction step list from asterisk to hyphen bullets; inserts a paragraph before the "Flash Loans" subsection directing production solvers to configure Solver7702Delegate to avoid settlement delays caused by a single pending solver EOA transaction.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐇 Hop hop, through nonce lanes we go,
Auxiliary EOAs in a row,
The solver EOA stays in the light,
While delegates submit left and right,
ERC-7702 makes the magic flow! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: adding Solver7702Delegate documentation to the repository.
Description check ✅ Passed The description follows the template structure with Description and Changes sections, providing clear context about the new guide and listing completed implementation tasks.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/solver-7702-delegate

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@igorroncevic igorroncevic changed the title docs: add docs docs: add Solver7702Delegate docs May 22, 2026
@igorroncevic igorroncevic marked this pull request as ready for review May 25, 2026 09:11
@igorroncevic igorroncevic requested a review from a team as a code owner May 25, 2026 09:11

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/cow-protocol/tutorials/arbitrate/solver/driver.md`:
- Line 58: Update the wording in the sentence fragment "discarding orders that
can definitely not be settled (e.g. user is missing balances)" to improve flow
by replacing "can definitely not be settled" with "definitely cannot be settled"
or "cannot be settled" (e.g., change to "discarding orders that definitively
cannot be settled (e.g. user is missing balances)" or "discarding orders that
cannot be settled (e.g. user is missing balances)").
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0b6db3ef-bbe4-447c-94a1-6b2c9ddc530b

📥 Commits

Reviewing files that changed from the base of the PR and between 978e255 and b8dcd6e.

📒 Files selected for processing (3)
  • docs/cow-protocol/tutorials/arbitrate/solver/driver.md
  • docs/cow-protocol/tutorials/solvers/onboard.md
  • docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md

Comment thread docs/cow-protocol/tutorials/arbitrate/solver/driver.md Outdated
@igorroncevic igorroncevic self-assigned this May 28, 2026

@kaze-cow kaze-cow left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

please re-read and re-review before submitting for review again! in general the document is too long and restates things constantly, and loses track of what is important to solvers (the setup)


API specification: <https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml>

Solvers that need parallel settlement submission can use [Solver7702Delegate](./solver-7702-delegate.md) to keep their existing solver EOA while adding extra submission nonce lanes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

i would almost say that this is storngly recommended, as solvers that don't support parallel submission are likely to run into issues if they ever start processing some real volume. Might as well do the setup right off the bat.

Comment thread docs/cow-protocol/tutorials/arbitrate/solver/driver.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated

@kaze-cow kaze-cow left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

reading it over again, its probably best to link any duplicated content back to the README which is in the delegation repo

Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md
Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
Comment on lines +142 to +159
## Custom driver requirements

If you do not use the reference driver, your driver must:

- deploy `Solver7702Delegate` for the approved auxiliary caller set;
- have the solver EOA delegate to the deployed `Solver7702Delegate`;
- route delegated settlement transactions with `from = auxiliary EOA` and `to = solver EOA` (if solver EOA is busy);
- encode delegated calldata as `bytes20(target) || targetCalldata`.

## Capabilities and limits

- Version 1 supports up to five immutable approved caller slots.
- Approved auxiliary EOAs are trusted hot keys. They can trigger arbitrary calls as the solver EOA.
- Changing authorized auxiliary accounts requires redeploying the delegate and re-delegating the solver EOA.
- The delegate can call arbitrary targets. The driver should normally use `GPv2Settlement` for settlement submissions.
- Use this only on chains and infrastructure that support ERC-7702 transaction authorization handling.

Keep solver EOA funds and approvals minimal, do not share auxiliary EOAs across solvers, and rotate callers immediately if an auxiliary key is compromised.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

all this can probably be removed

Comment thread docs/cow-protocol/tutorials/solvers/solver-7702-delegate.md Outdated
If the settlement does not expose any MEV (e.g. it executes all trades without AMMs) it's safe and most efficient to directly submit to the public mempool.
However, if a settlement exposes MEV the driver would submit to an MEV-protected RPC like [MEVBlocker](https://mevblocker.io).

Solvers that expect real settlement volume should set up [Solver7702Delegate](../../solvers/solver-7702-delegate.md) early. It keeps the existing solver EOA as the settlement caller while auxiliary EOAs provide additional nonce lanes when the solver EOA has pending transactions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

"Real settlement volume" sounds a bit vague/weird.

The sentence somehow also feel a bit out of place but i don't have a strong opinion about this.

Note the last sentences of the previous section (L80-83) are also related to the topic so not sure what the best way to structure everything

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fair point, I've changed the wording to "Production solvers" to emphasize the "real settlement volume" point while being (hopefully) less vague


API specification: <https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml>

Solvers that expect real settlement volume should set up [Solver7702Delegate](./solver-7702-delegate.md) early. It keeps the existing solver EOA while adding extra submission nonce lanes for parallel settlement submission.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this doesn't belong here, as solvers that are supposed to just connect their solver engine (and not driver) are usually reading this

@harisang harisang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

left some comments

@igorroncevic igorroncevic requested a review from harisang June 19, 2026 10:57
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