-
Notifications
You must be signed in to change notification settings - Fork 24
Create onboarding guide for CoW Protocol Solver Competition #546
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
Conversation
Added comprehensive onboarding guide for joining the CoW Protocol Solver Competition, covering essential information, development, competitions, KYC checks, and rewards.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
💡 Enable Vercel Agent with $100 free credit for automated AI reviews |
|
All contributors have signed the CLA ✍️ ✅ |
|
Warning Rate limit exceeded@harisang has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 17 minutes and 4 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughAdds a new solver onboarding tutorial (end-to-end guide) and updates the auctions rewards reference to include CIP-72 and expanded reward eligibility wording. All changes are documentation-only; no code or public API declarations were modified. Changes
Sequence Diagram(s)Not applicable — documentation-only changes; no control-flow or runtime behavior modified. Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
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. Comment |
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.
Actionable comments posted: 2
🧹 Nitpick comments (1)
docs/cow-protocol/tutorials/solvers/onboard.md (1)
6-18: Optional: Turn the Index into clickable section links.Improves navigation and readability.
Example:
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/cow-protocol/tutorials/solvers/onboard.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/cow-protocol/tutorials/solvers/onboard.md
[grammar] ~6-~6: There might be a mistake here.
Context: ...solver_onboarding_process.jpg) ## Index 1. Essential information 2. Locally develop...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ....jpg) ## Index 1. Essential information 2. Locally developing your solver 3. Joinin...
(QB_NEW_EN)
[grammar] ~8-~8: There might be a mistake here.
Context: ...mation 2. Locally developing your solver 3. Joining the shadow competition 4. KYC ch...
(QB_NEW_EN)
[grammar] ~9-~9: There might be a mistake here.
Context: ...solver 3. Joining the shadow competition 4. KYC checks and onboarding call 5. Joinin...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...tition 4. KYC checks and onboarding call 5. Joining the staging competition 6. Movin...
(QB_NEW_EN)
[grammar] ~11-~11: There might be a mistake here.
Context: ... call 5. Joining the staging competition 6. Moving to production 7. Weekly rewards 8...
(QB_NEW_EN)
[grammar] ~12-~12: There might be a mistake here.
Context: ...ging competition 6. Moving to production 7. Weekly rewards 8. Slippage accounting 9....
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: .... Moving to production 7. Weekly rewards 8. Slippage accounting 9. Moving to other n...
(QB_NEW_EN)
[grammar] ~14-~14: There might be a mistake here.
Context: ...7. Weekly rewards 8. Slippage accounting 9. Moving to other networks 10. Joining the...
(QB_NEW_EN)
[grammar] ~15-~15: There might be a mistake here.
Context: ...e accounting 9. Moving to other networks 10. Joining the mainnet competition 11. Join...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...orks 10. Joining the mainnet competition 11. Joining the quoting competition 12. F.A....
(QB_NEW_EN)
[grammar] ~17-~17: There might be a mistake here.
Context: ...tion 11. Joining the quoting competition 12. F.A.Q. ## 1. Essential information for ...
(QB_NEW_EN)
[locale-violation] ~23-~23: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ting so that you can send the documents afterwards. Given the risk that will be carried b...
(AFTERWARDS_US)
[grammar] ~27-~27: There might be a mistake here.
Context: ...me of solving on L2's. ### Service fees As specified in [CIP-48](https://snapsho...
(QB_NEW_EN)
[grammar] ~31-~31: Use a hyphen to join words.
Context: ...up a solver locally. There are also open source example solvers available in the ...
(QB_NEW_EN_HYPHEN)
[grammar] ~40-~40: There might be a mistake here.
Context: ...you can whitelist. ### Exposed Endpoint The exposed endpoint provided must be of...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...### Driver configuration for your solver There are various configurations we can ...
(QB_NEW_EN)
[grammar] ~46-~46: There might be a mistake here.
Context: ...## - Wrapping / unwrapping native tokens The default behaviour for the driver is ...
(QB_NEW_EN)
[style] ~50-~50: ‘In the event that’ might be wordy. Consider a shorter alternative.
Context: ...ble liquidity fetching for your solver. In the event that this is enabled, the driver will search...
(EN_WORDINESS_PREMIUM_IN_THE_EVENT_THAT)
[grammar] ~50-~50: Use a hyphen to join words.
Context: ...s enabled, the driver will search for on chain liquidity sources for your solver ...
(QB_NEW_EN_HYPHEN)
[grammar] ~52-~52: There might be a mistake here.
Context: ...uidity) #### - Fairness checks for EBBO To ensure a fair execution for the users...
(QB_NEW_EN)
[style] ~80-~80: Consider a more expressive alternative.
Context: ...he submission keys on your behalf. To do this, the team will generate keys for y...
(DO_ACHIEVE)
[style] ~80-~80: Consider a more concise word here.
Context: ...sting those for the solver competition. In order to do this you will need to send a `reward...
(IN_ORDER_TO_PREMIUM)
[style] ~80-~80: Consider a more expressive alternative.
Context: ...for the solver competition. In order to do this you will need to send a `rewards a...
(DO_ACHIEVE)
[style] ~80-~80: Consider using a different verb to strengthen your wording.
Context: ...address on the Arbitrum network. Please make sure that your address is ready to receive f...
(MAKE_SURE_ENSURE)
[grammar] ~82-~82: Use a hyphen to join words.
Context: ...ur solver will use to settle auctions on chain. While this is managed by the CoW ...
(QB_NEW_EN_HYPHEN)
[grammar] ~84-~84: There might be a mistake here.
Context: ...ironment | Recommended initial balance | |---|---|---| | Mainnet | Staging | 0.2 ...
(QB_NEW_EN)
[grammar] ~85-~85: There might be a mistake here.
Context: ...ommended initial balance | |---|---|---| | Mainnet | Staging | 0.2 ETH | | Mainne...
(QB_NEW_EN)
[grammar] ~86-~86: There might be a mistake here.
Context: ...---|---| | Mainnet | Staging | 0.2 ETH | | Mainnet | Production | 1 ETH | | Arbit...
(QB_NEW_EN)
[grammar] ~87-~87: There might be a mistake here.
Context: ...2 ETH | | Mainnet | Production | 1 ETH | | Arbitrum | Staging | 0.05 ETH | | Arbi...
(QB_NEW_EN)
[grammar] ~88-~88: There might be a mistake here.
Context: ... ETH | | Arbitrum | Staging | 0.05 ETH | | Arbitrum | Production | 0.2 ETH | | Ba...
(QB_NEW_EN)
[grammar] ~89-~89: There might be a mistake here.
Context: ...TH | | Arbitrum | Production | 0.2 ETH | | Base | Staging | 0.05 ETH | | Base | P...
(QB_NEW_EN)
[grammar] ~90-~90: There might be a mistake here.
Context: ... 0.2 ETH | | Base | Staging | 0.05 ETH | | Base | Production | 0.2 ETH | | Gnosis...
(QB_NEW_EN)
[grammar] ~91-~91: There might be a mistake here.
Context: ...05 ETH | | Base | Production | 0.2 ETH | | Gnosis | Staging | 15 xDAI | | Gnosis ...
(QB_NEW_EN)
[grammar] ~92-~92: There might be a mistake here.
Context: ...0.2 ETH | | Gnosis | Staging | 15 xDAI | | Gnosis | Production | 100 xDAI | > **...
(QB_NEW_EN)
[style] ~98-~98: Consider a more concise word here.
Context: ...tle transactions for winning auctions. In order to create some volume to test your solver,...
(IN_ORDER_TO_PREMIUM)
[grammar] ~102-~102: Use a hyphen to join words.
Context: ... solver by settling some transactions on chain before going live on production. ...
(QB_NEW_EN_HYPHEN)
[grammar] ~104-~104: There might be a mistake here.
Context: ...ive on production. ## 7. Weekly rewards Every week on Tuesday your solver will r...
(QB_NEW_EN)
[style] ~112-~112: As a shorter alternative for ‘able to’, consider using “can”.
Context: ...rds) ## 8. Slippage accounting Solvers are able to use the settlement contract's buffers w...
(BE_ABLE_TO)
[grammar] ~125-~125: There might be a mistake here.
Context: ...n on Arbitrum we can enable your solver on Gnosis chain and Base network relativel...
(QB_NEW_EN)
[grammar] ~127-~127: There might be a mistake here.
Context: ...COW rewards associated with that network - An endpoint that you would like to use f...
(QB_NEW_EN)
[grammar] ~136-~136: Use a hyphen to join words.
Context: ...hen leads to an order that is settled on chain. Then your solver will receive a f...
(QB_NEW_EN_HYPHEN)
[grammar] ~136-~136: Use a hyphen to join words.
Context: ...ociated auction and settled the order on chain. [More information about the quot...
(QB_NEW_EN_HYPHEN)
[grammar] ~140-~140: There might be a mistake here.
Context: ...ition-rewards-cips-27-57) ## 12. F.A.Q. ### Can we get access to the orderbook API? ...
(QB_NEW_EN)
[grammar] ~141-~141: There might be a mistake here.
Context: ... Can we get access to the orderbook API? Yes, we can whitelist solvers so that th...
(QB_NEW_EN)
[grammar] ~142-~142: Use a hyphen to join words.
Context: ...ur solver is live and settling orders on chain. ### How do we integrate CoW AMM'...
(QB_NEW_EN_HYPHEN)
[grammar] ~154-~154: Use a hyphen to join words.
Context: ...is tested by actually settling orders on chain. Finally, production is where the...
(QB_NEW_EN_HYPHEN)
[grammar] ~159-~159: There might be a mistake here.
Context: ...rerequisites (other than KYC if solving on Cow bonding pool) but its recommended t...
(QB_NEW_EN)
[grammar] ~159-~159: There might be a mistake here.
Context: ...ttle solutions on shadow before staging.
(QB_NEW_EN)
🪛 markdownlint-cli2 (0.18.1)
docs/cow-protocol/tutorials/solvers/onboard.md
33-33: Bare URL used
(MD034, no-bare-urls)
41-41: Bare URL used
(MD034, no-bare-urls)
148-148: Bare URL used
(MD034, no-bare-urls)
| # Joining The CoW Protocol Solver Competition | ||
| > **_NOTE:_** Most of this document assumes that you will be joining the solver competition under the CoW Bonding pool. If you were to set up your own bonding pool then most of the information in this document is either optional or irrelevant. To join the solver competition under your own bonding pool refer to [this document](https://docs.cow.fi/cow-protocol/reference/core/auctions/bonding-pools) to set up the bonding pool and reach out to help set up the bonding pool and whitelist your solver's address. | ||
|
|
||
|  |
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.
🧩 Analysis chain
Verify links (incl. Snapshot CIP-48) and image path; fix any 404s. Script included.
Please validate all external/internal links and the image reference. Snapshot domain looks unusual; confirm it’s correct.
Also applies to: 28-28, 31-31, 33-33, 41-41, 50-51, 52-56, 58-59, 80-83, 84-94, 99-99, 104-110, 112-123, 124-129, 130-139, 145-146, 148-148
🏁 Script executed:
#!/bin/bash
set -euo pipefail
FILE="docs/cow-protocol/tutorials/solvers/onboard.md"
echo "Checking image existence..."
IMG_PATH="docs/cow-protocol/tutorials/solvers/images/solver_onboarding_process.jpg"
if [[ -f "$IMG_PATH" ]]; then
echo "OK: Image exists at $IMG_PATH"
else
echo "MISSING: $IMG_PATH"
fi
echo
echo "Extracting and checking URLs (HEAD with follow redirects)..."
# Extract http(s) URLs (bare and markdown)
URLS=$(gawk '
match($0, /(https?:\/\/[A-Za-z0-9._~:\/?#\[\]@!$&'"'"'()*+,;=%-]+)/, m) {
print m[1]
}' "$FILE" | sort -u)
i=0
while IFS= read -r url; do
((i++))
echo "[$i] $url"
# Some sites reject HEAD; try GET on failure
code=$(curl -sIL -o /dev/null -w '%{http_code}' "$url" || true)
if [[ "$code" -ge 200 && "$code" -lt 400 ]]; then
echo " OK (HEAD): $code"
else
code_get=$(curl -sL -o /dev/null -w '%{http_code}' "$url" || true)
echo " GET status: $code_get"
if [[ "$code_get" -lt 200 || "$code_get" -ge 400 ]]; then
echo " ERROR: Non-2xx/3xx for $url"
fi
fi
done <<< "$URLS"
echo
echo "Done."Length of output: 171
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Searching for solver_onboarding_process asset..."
fd solver_onboarding_process docs/cow-protocol/tutorials/solvers/imagesLength of output: 178
🏁 Script executed:
#!/bin/bash
set -euo pipefail
FILE="docs/cow-protocol/tutorials/solvers/onboard.md"
echo "=== First 50 lines of $FILE ==="
sed -n '1,50p' "$FILE"
echo
echo "=== Markdown links in $FILE ==="
grep -Eo '\[.*?\]\([^\)]+\)' "$FILE" | sort -uLength of output: 5760
Fix missing image and confirm Snapshot CIP-48 link
- docs/cow-protocol/tutorials/solvers/images/solver_onboarding_process.jpg is missing (onboard.md line 4); add the file or correct its path.
- Verify that the CIP-48 link (
https://snapshot.box/#/s:cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805) resolves correctly—or update to the proper Snapshot domain if needed.
🤖 Prompt for AI Agents
In docs/cow-protocol/tutorials/solvers/onboard.md around line 4, the embedded
image path ./images/solver_onboarding_process.jpg is broken because the file is
missing or the path is incorrect; add the image file to
docs/cow-protocol/tutorials/solvers/images/ with the exact filename or update
the path to the correct location, and verify the image renders; additionally
check the CIP-48 Snapshot URL
(https://snapshot.box/#/s:cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805)
and replace it with the correct Snapshot domain (e.g., snapshot.org or the valid
current Snapshot host) if the link does not resolve.
|
I have read the CLA Document and I hereby sign the CLA |
| @@ -0,0 +1,159 @@ | |||
| # Joining The CoW Protocol Solver Competition | |||
| > **_NOTE:_** Most of this document assumes that you will be joining the solver competition under the CoW Bonding pool. If you were to set up your own bonding pool then most of the information in this document is either optional or irrelevant. To join the solver competition under your own bonding pool refer to [this document](https://docs.cow.fi/cow-protocol/reference/core/auctions/bonding-pools) to set up the bonding pool and reach out to help set up the bonding pool and whitelist your solver's address. | |||
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.
| > **_NOTE:_** Most of this document assumes that you will be joining the solver competition under the CoW Bonding pool. If you were to set up your own bonding pool then most of the information in this document is either optional or irrelevant. To join the solver competition under your own bonding pool refer to [this document](https://docs.cow.fi/cow-protocol/reference/core/auctions/bonding-pools) to set up the bonding pool and reach out to help set up the bonding pool and whitelist your solver's address. | |
| > **_NOTE:_** Most of this document assumes that you will be joining the solver competition under the CoW DAO bonding pool. If you were to set up your own bonding pool then most of the information in this document is either optional or irrelevant. To join the solver competition under your own bonding pool refer to [this document](https://docs.cow.fi/cow-protocol/reference/core/auctions/bonding-pools) to set up the bonding pool and reach out to help set up the bonding pool and whitelist your solver's address. |
| If you would like to secure your solver, you can set up a firewall and only accept requests from IP addresses that you whitelist beforehand. Contact us for the IP addresses that we use to send requests to your solver that you can whitelist. | ||
|
|
||
| ### Exposed Endpoint | ||
| The exposed endpoint provided must be of the following format: {base_url}/${envName}/${network} - for example: https://api.mysolver.io/staging/mainnet |
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.
We should explain here what are the options for envName
Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com>
Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com>
Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com>
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.
Actionable comments posted: 4
♻️ Duplicate comments (18)
docs/cow-protocol/tutorials/solvers/onboard.md (18)
28-28: Change Snapshot URL domain fromsnapshot.boxtosnapshot.org.The CIP-48 link uses the non-canonical domain
snapshot.box. Per past reviewer feedback and verification, the correct public Snapshot domain issnapshot.org. Update the URL path format as well (from#/s:cow.eth/...to#/cow.eth/...).
141-141: Fix hyphenation: "on chain" → "on-chain".Line 141 uses incorrect hyphenation for the compound modifier.
- Yes, we can whitelist solvers so that they can have access to the orderbook API. Although we generally wait with this until your solver is live and settling orders on chain. + Yes, we can whitelist solvers so that they can have access to the orderbook API. Although we generally wait with this until your solver is live and settling orders on-chain.
48-48: Fix US English spelling: "behaviour" → "behavior".Line 48 uses British spelling "behaviour"; align with US English "behavior".
- The default behaviour for the driver is to set the native token address to `0xeee` and to insert interactions into your solution to unwrap the native token. It's also possible to configure this to either send the wrapped token address (WETH) and unwrap the native token, or send the wrapped token address and not unwrap the native token. + The default behavior for the driver is to set the native token address to `0xeee` and to insert interactions into your solution to unwrap the native token. It's also possible to configure this to either send the wrapped token address (WETH) and unwrap the native token, or send the wrapped token address and not unwrap the native token.
153-153: Fix hyphenation: "on chain" → "on-chain".Line 153 uses incorrect hyphenation for the compound modifier.
- In the staging (barn) competition settling happens on-chain but the volume is much lower. That way the solver is tested by actually settling orders on chain. + In the staging (barn) competition settling happens on-chain but the volume is much lower. That way the solver is tested by actually settling orders on-chain.
59-59: Fix grammar: "merge disjoint solutions in to" → "into".Line 59 incorrectly splits "into" as two words "in to".
- It is possible for your solver to submit multiple solutions for a single auction and let the driver select the solution with the highest score to submit to the auction. It is possible to enable the driver to merge disjoint solutions in to a single solution for the auction. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#postprocessing-solutions) + It is possible for your solver to submit multiple solutions for a single auction and let the driver select the solution with the highest score to submit to the auction. It is possible to enable the driver to merge disjoint solutions into a single solution for the auction. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#postprocessing-solutions)
143-143: Fix possessive: "CoW AMM's" → "CoW AMMs".Line 143 uses an incorrect possessive apostrophe; the plural form of "AMM" does not require an apostrophe.
- ### How do we integrate CoW AMM's? + ### How do we integrate CoW AMMs?
51-51: Simplify wordy phrasing and fix hyphenation: "In the event that" → "If", "on chain" → "on-chain".Line 51 uses unnecessarily wordy "In the event that" and incorrect hyphenation "on chain".
- It is possible to enable or disable liquidity fetching for your solver. In the event that this is enabled, the driver will search for on chain liquidity sources for your solver to use and send them to your solver. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#fetching-liquidity) + It is possible to enable or disable liquidity fetching for your solver. If this is enabled, the driver will search for on-chain liquidity sources for your solver to use and send them to your solver. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#fetching-liquidity)
151-151: Clarify that chain list is not exhaustive and capitalize "Arbitrum".Line 151 says "only arbitrum and mainnet now", which implies a fixed list and lowercases "Arbitrum". Per past reviewer feedback, clarify that other chains may be added and use proper capitalization.
- In the shadow competition (only arbitrum and mainnet now) the solver is tested using production order flow but without settling any orders. This is for testing the integration of the solver. It is possible to simulate the solver's solutions and see how it does. + In the shadow competition (currently on Arbitrum and Ethereum Mainnet, among others) the solver is tested using production order flow but without settling any orders. This is for testing the integration of the solver. It is possible to simulate the solver's solutions and see how it performs.
83-83: Fix hyphenation and grammar: "on chain" → "on-chain", fix typo "is holds" → "it holds".Line 83 has incorrect hyphenation and a typo ("is holds" should be "it holds").
- After this process is done, the team will send you the submission addresses that your solver will use to settle auctions on chain. While this is managed by the CoW team, it will be your responsibility to monitor this and make sure that is holds enough funds to cover gas fees. The driver has a minimum threshold for gas that it applies to make sure that the address holds (more than) enough funds to pay the required gas fees. Therefore we recommend these balances: + After this process is done, the team will send you the submission addresses that your solver will use to settle auctions on-chain. While this is managed by the CoW team, it will be your responsibility to monitor these addresses and ensure they hold enough funds to cover gas fees. The driver has a minimum gas threshold to ensure the address holds sufficient funds to pay required gas fees. Therefore, we recommend these balances:
113-113: Simplify: "are able to" → "can".Line 113 uses unnecessarily wordy phrasing; use the simpler "can".
- Solvers are able to use the settlement contract's buffers when settling auctions. This can often result in one of two situations when prices move during an auction: + Solvers can use the settlement contract's buffers when settling auctions. This can often result in one of two situations when prices move during an auction:
23-23: Fix US English spelling: "afterwards" → "afterward".Line 23 uses "afterwards" (British English); for consistency with US English conventions used elsewhere, change to "afterward".
- Do not send this before the meeting, we will explain the process during the meeting so that you can send the documents afterwards. + Do not send this before the meeting, we will explain the process during the meeting so that you can send the documents afterward.
134-137: Simplify quoting competition section to avoid inaccurate description.Per past reviewer feedback, the current description conflates concepts and is inaccurate. Replace the verbose explanation with a concise pointer to the authoritative documentation.
- ## 11. Joining the quoting competition - Besides the solving competition, there is also a quoting competition. This involves responding to a single order batch with a proposed execution for the order and a price that could be delivered to the user. - - [More information about the quoting competition can be found here.](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards#price-estimation-competition-rewards-cips-27-57) + ## 11. Joining the quoting competition + Besides the solving competition, there is also a quoting competition. For details on how to participate and the reward structure, see the [Price Estimation Competition Rewards documentation](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards#price-estimation-competition-rewards-cips-27-57).
103-103: Fix hyphenation: "on chain" → "on-chain".Line 103 uses incorrect hyphenation for the compound modifier.
- Once your solver has moved to staging we can deploy your solver on production. Usually the team will schedule your solver to go live with the next release (on Tuesday) after you are deployed on staging. This gives your team a few days to test your solver by settling some transactions on chain before going live on production. + Once your solver has moved to staging we can deploy your solver on production. Usually the team will schedule your solver to go live with the next release (on Tuesday) after you are deployed on staging. This gives your team a few days to test your solver by settling some transactions on-chain before going live on production.
41-42: Clarify endpoint format with concrete parameter definitions.Line 41 shows the format but lines 41–42 lack clear explanation of what
envNameandnetworkvalues should be. Past reviewer feedback requests documenting these parameter options.- The exposed endpoint provided must be of the following format: {base_url}/\${envName}/\${network} - for example: https://api.mysolver.io/staging/mainnet - envName values: shadow, staging, prod + The exposed endpoint must follow this format: `{base_url}/${envName}/${network}` + + For example: `https://api.mysolver.io/staging/mainnet` + + where `envName` is one of: `shadow`, `staging`, or `prod`, and `network` is the blockchain identifier (e.g., `mainnet`, `arbitrum`).
129-129: Fix typo: "staging ad production" → "staging and production".Line 129 contains a typo: "ad" should be "and".
- - An endpoint that you would like to use for staging ad production + - An endpoint that you would like to use for staging and production
56-56: Add comma for readability: "In the event of an EBBO violation..."Line 56 starts an independent clause after dependent context; add a comma for clarity.
- In the event of an EBBO violation the team will reach out and ask you to reimburse the user. [Docs](https://docs.cow.fi/cow-protocol/reference/core/auctions/ebbo-rules) + In the event of an EBBO violation, the team will reach out and ask you to reimburse the user. [Docs](https://docs.cow.fi/cow-protocol/reference/core/auctions/ebbo-rules)
33-33: Format bare URL as a markdown link.Line 33 contains a bare URL; convert it to a properly formatted link for consistency with the rest of the document.
- API specification: https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml + API specification: [OpenAPI spec](https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml)
81-82: Clarify rewards address requirements for multi-chain setup and fix wordiness.Line 81 says "In order to do this you will need to send a
rewards address..." but lacks critical clarity per past reviewer feedback. The rewards address must be controlled on both the solving chain AND mainnet, as native tokens go to the solving chain while COW rewards always go to mainnet. This is partially addressed in line 81, but the wording is confusing.- To do this, the team will generate keys for your solver to use for settling auctions on-chain and whitelisting those for the solver competition. In order to do this you will need to send a `rewards address` that you would like to use to receive weekly rewards on the chain that you are solving on. The rewards address needs to be controlled by the relevant solver team on both chain X and mainnet, as we send native token transfers to chain X while we send COW rewards to the mainnet address always + To do this, the team will generate keys for your solver to use for settling auctions on-chain and whitelisting those for the solver competition. To submit these, you will need to provide a `rewards address` that you control on both the solving chain and mainnet. Native token rewards and slippage will be sent to this address on the solving chain (e.g., Arbitrum), while COW token rewards are always sent to the address on mainnet.
🧹 Nitpick comments (1)
docs/cow-protocol/tutorials/solvers/onboard.md (1)
112-123: Consider condensing or removing the "Slippage accounting" section to avoid duplication.Per past reviewer feedback (harisang), this section largely reiterates content from the dedicated accounting documentation at https://docs.cow.fi/cow-protocol/reference/core/auctions/accounting. Consider replacing the full section with a brief summary (1–2 sentences) and a link to the detailed docs.
- ## 8. Slippage accounting - Solvers can use the settlement contract's buffers when settling auctions. This can often result in one of two situations when prices move during an auction: - - 1. The settlement contract receives more tokens than what was promised to the user. - - In this situation, some extra tokens will be left in the settlement contract after the auction is finished. - - 2. The settlement contract receives less tokens than what was promised to the user. - - In this situation, if the settlement contract has enough of the tokens in its buffers, then the user will still receive the amount of tokens that they were promised. But, some of the funds will have been borrowed from the settlement contract's buffers. - - These will be converted to native currencies (ETH or xDAI) and transferred to your solver at the end of the week. If the settlement contract received more tokens in total over the week than what was borrowed, then you will receive this amount to your rewards address. But if more was borrowed from the settlement contract than what was returned, then your solver will be asked to reimburse the difference. + ## 8. Slippage accounting + Solvers can use the settlement contract's buffers when settling auctions. When prices move during an auction, the settlement contract may receive more tokens than promised (creating a surplus) or fewer tokens (requiring a buffer loan). These differences are reconciled weekly: surpluses are sent to your rewards address, and any net borrowing must be reimbursed. For detailed mechanics, see the [Accounting documentation](https://docs.cow.fi/cow-protocol/reference/core/auctions/accounting).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/cow-protocol/tutorials/solvers/onboard.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/cow-protocol/tutorials/solvers/onboard.md
[locale-violation] ~23-~23: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ting so that you can send the documents afterwards. Given the risk that will be carried b...
(AFTERWARDS_US)
[grammar] ~31-~31: Use a hyphen to join words.
Context: ...up a solver locally. There are also open source example solvers available in the ...
(QB_NEW_EN_HYPHEN)
[style] ~51-~51: ‘In the event that’ might be wordy. Consider a shorter alternative.
Context: ...ble liquidity fetching for your solver. In the event that this is enabled, the driver will search...
(EN_WORDINESS_PREMIUM_IN_THE_EVENT_THAT)
[grammar] ~51-~51: Use a hyphen to join words.
Context: ...s enabled, the driver will search for on chain liquidity sources for your solver ...
(QB_NEW_EN_HYPHEN)
[style] ~81-~81: Consider a more expressive alternative.
Context: ...he submission keys on your behalf. To do this, the team will generate keys for y...
(DO_ACHIEVE)
[style] ~81-~81: Consider a more concise word here.
Context: ...sting those for the solver competition. In order to do this you will need to send a `reward...
(IN_ORDER_TO_PREMIUM)
[style] ~81-~81: Consider a more expressive alternative.
Context: ...for the solver competition. In order to do this you will need to send a `rewards a...
(DO_ACHIEVE)
[grammar] ~83-~83: Use a hyphen to join words.
Context: ...ur solver will use to settle auctions on chain. While this is managed by the CoW ...
(QB_NEW_EN_HYPHEN)
[style] ~99-~99: Consider a more concise word here.
Context: ...tle transactions for winning auctions. In order to create some volume to test your solver,...
(IN_ORDER_TO_PREMIUM)
[grammar] ~103-~103: Use a hyphen to join words.
Context: ... solver by settling some transactions on chain before going live on production. ...
(QB_NEW_EN_HYPHEN)
[style] ~113-~113: As a shorter alternative for ‘able to’, consider using “can”.
Context: ...rds) ## 8. Slippage accounting Solvers are able to use the settlement contract's buffers w...
(BE_ABLE_TO)
[grammar] ~141-~141: Use a hyphen to join words.
Context: ...ur solver is live and settling orders on chain. ### How do we integrate CoW AMM'...
(QB_NEW_EN_HYPHEN)
[grammar] ~153-~153: Use a hyphen to join words.
Context: ...is tested by actually settling orders on chain. Finally, production is where the...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
docs/cow-protocol/tutorials/solvers/onboard.md
33-33: Bare URL used
(MD034, no-bare-urls)
41-41: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (1)
docs/cow-protocol/tutorials/solvers/onboard.md (1)
4-4: Image file exists and path reference is correct.The image
solver_onboarding_process.jpgis present atdocs/cow-protocol/tutorials/solvers/solver_onboarding_process.jpg. Since the markdown file (onboard.md) and the image file are in the same directory, the relative referencecorrectly resolves to the image. No changes needed.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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.
Actionable comments posted: 5
♻️ Duplicate comments (2)
docs/cow-protocol/tutorials/solvers/onboard.md (2)
23-23: Fix British English spelling to American English: "afterwards" → "afterward".-The general KYC requirements are to send us documentation proving that you are the beneficial owners of the company behind the solver and 1-2 passports of some of the main developers of the solver. Do not send this before the meeting, we will explain the process during the meeting so that you can send the documents afterwards. +The general KYC requirements are to send us documentation proving that you are the beneficial owners of the company behind the solver and 1-2 passports of some of the main developers of the solver. Do not send this before the meeting, we will explain the process during the meeting so that you can send the documents afterward.
83-83: Fix hyphenation: "on chain" → "on-chain" and clean up ambiguous grammar.Line 83 contains "on chain" (should be "on-chain"), and the phrase "make sure that is holds" appears to be a typo.
-After this process is done, the team will send you the submission addresses that your solver will use to settle auctions on chain. While this is managed by the CoW team, it will be your responsibility to monitor this and make sure that is holds enough funds to cover gas fees. The driver has a minimum threshold for gas that it applies to make sure that the address holds (more than) enough funds to pay the required gas fees. Therefore we recommend these balances: +After this process is done, the team will send you the submission addresses that your solver will use to settle auctions on-chain. While this is managed by the CoW team, it will be your responsibility to monitor these addresses and ensure they hold enough funds to cover gas fees. The driver has a minimum gas threshold to ensure the address holds sufficient funds to pay required gas fees. Therefore, we recommend these balances:
🧹 Nitpick comments (10)
docs/cow-protocol/tutorials/solvers/onboard.md (10)
41-42: Clarify the endpoint format documentation by explainingenvNamevalues.Currently, only an example is given. Add explicit documentation that
envNameshould be one of:shadow,staging, orprod.-The exposed endpoint provided must be of the following format: {base_url}/\${envName}/\${network} - for example: https://api.mysolver.io/staging/mainnet -envName values: shadow, staging, prod +The exposed endpoint provided must be of the following format: `{base_url}/${envName}/${network}` +For example: `https://api.mysolver.io/staging/mainnet` +where `envName` is one of: `shadow`, `staging`, or `prod`, and `network` is the target blockchain (e.g., `mainnet`, `arbitrum`).
99-100: Simplify "In order to" → "To" and format the barn interface link.-In order to create some volume to test your solver, you can create orders on staging by using our barn swap interface ([https://barn.cow.fi](https://barn.cow.fi)). +To create some volume to test your solver, you can create orders on staging by using our [barn swap interface](https://barn.cow.fi).
103-103: Fix hyphenation: "on chain" → "on-chain".-Once your solver has moved to staging we can deploy your solver on production. Usually the team will schedule your solver to go live with the next release (on Tuesday) after you are deployed on staging. This gives your team a few days to test your solver by settling some transactions on chain before going live on production. +Once your solver has moved to staging we can deploy your solver on production. Usually the team will schedule your solver to go live with the next release (on Tuesday) after you are deployed on staging. This gives your team a few days to test your solver by settling some transactions on-chain before going live on production.
112-123: Consider removing or condensing the "Slippage accounting" section (duplicates existing docs).Per past reviewer feedback (harisang), this section largely duplicates the dedicated documentation at https://docs.cow.fi/cow-protocol/reference/core/auctions/accounting. Consider either removing this section or replacing it with a brief 2–3 sentence summary with a link to the detailed docs.
113-113: Simplify "are able to" → "can".-Solvers are able to use the settlement contract's buffers when settling auctions. +Solvers can use the settlement contract's buffers when settling auctions.
134-137: Remove inaccurate quoting competition description; simplify to link only.Per past reviewer feedback (harisang), the description conflates concepts and is inaccurate. Remove the explanatory sentence and keep only the link to detailed documentation.
-## 11. Joining the quoting competition -Besides the solving competition, there is also a quoting competition. This involves responding to a single order batch with a proposed execution for the order and a price that could be delivered to the user. - -[More information about the quoting competition can be found here.](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards#price-estimation-competition-rewards-cips-27-57) +## 11. Joining the quoting competition +Besides the solving competition, there is also a quoting competition. For details on how to participate and the rewards structure, see the [Price Estimation Competition Rewards documentation](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards#price-estimation-competition-rewards-cips-27-57).
141-141: Fix hyphenation: "on chain" → "on-chain".-Yes, we can whitelist solvers so that they can have access to the orderbook API. Although we generally wait with this until your solver is live and settling orders on chain. +Yes, we can whitelist solvers so that they can have access to the orderbook API. Although we generally wait with this until your solver is live and settling orders on-chain.
146-147: Update FAQ question phrasing and link formatting for clarity.-- ### Is there a way to find out the COW reward in real time immediately after the trade? -[This table](https://dune.com/queries/5270914) contains reward data per solver and per auction (denominated in the native token of the chain). Note that data is updated every 2 hours. +### Is there a way to find out COW rewards in real time immediately after a trade? +[This Dune query](https://dune.com/queries/5270914) contains reward data per solver and per auction (denominated in the native token of the chain). Data is updated every 2 hours.
151-151: Avoid implying a fixed chain list; clarify "Arbitrum" capitalization.Per past reviewer feedback (harisang), avoid stating "only arbitrum and mainnet" as it implies a closed set of chains. Also, capitalize "Arbitrum".
-In the shadow competition (only arbitrum and mainnet now) the solver is tested using production order flow but without settling any orders. This is for testing the integration of the solver. It is possible to simulate the solver's solutions and see how it does. +In the shadow competition (currently on Arbitrum and Mainnet, among others) the solver is tested using production order flow but without settling any orders. This is for testing the integration of the solver. It is possible to simulate the solver's solutions and see how it performs.
153-153: Fix hyphenation: "on chain" → "on-chain".-In the staging (barn) competition settling happens on-chain but the volume is much lower. That way the solver is tested by actually settling orders on chain. +In the staging (barn) competition settling happens on-chain but the volume is much lower. That way the solver is tested by actually settling orders on-chain.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/cow-protocol/tutorials/solvers/onboard.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/cow-protocol/tutorials/solvers/onboard.md
[locale-violation] ~23-~23: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ting so that you can send the documents afterwards. Given the risk that will be carried b...
(AFTERWARDS_US)
[style] ~81-~81: Consider a more expressive alternative.
Context: ...he submission keys on your behalf. To do this, the team will generate keys for y...
(DO_ACHIEVE)
[style] ~81-~81: Consider a more concise word here.
Context: ...sting those for the solver competition. In order to do this you will need to send a `reward...
(IN_ORDER_TO_PREMIUM)
[style] ~81-~81: Consider a more expressive alternative.
Context: ...for the solver competition. In order to do this you will need to send a `rewards a...
(DO_ACHIEVE)
[grammar] ~83-~83: Use a hyphen to join words.
Context: ...ur solver will use to settle auctions on chain. While this is managed by the CoW ...
(QB_NEW_EN_HYPHEN)
[style] ~99-~99: Consider a more concise word here.
Context: ...tle transactions for winning auctions. In order to create some volume to test your solver,...
(IN_ORDER_TO_PREMIUM)
[grammar] ~103-~103: Use a hyphen to join words.
Context: ... solver by settling some transactions on chain before going live on production. ...
(QB_NEW_EN_HYPHEN)
[style] ~113-~113: As a shorter alternative for ‘able to’, consider using “can”.
Context: ...rds) ## 8. Slippage accounting Solvers are able to use the settlement contract's buffers w...
(BE_ABLE_TO)
[grammar] ~141-~141: Use a hyphen to join words.
Context: ...ur solver is live and settling orders on chain. ### How do we integrate CoW AMM'...
(QB_NEW_EN_HYPHEN)
[grammar] ~153-~153: Use a hyphen to join words.
Context: ...is tested by actually settling orders on chain. Finally, production is where the...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
docs/cow-protocol/tutorials/solvers/onboard.md
33-33: Bare URL used
(MD034, no-bare-urls)
41-41: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (1)
docs/cow-protocol/tutorials/solvers/onboard.md (1)
4-4: No changes needed—image path is correct.The image file
solver_onboarding_process.jpgexists in the same directory asonboard.md(docs/cow-protocol/tutorials/solvers/). The relative path reference is correct and will resolve properly in the rendered documentation.
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.
Actionable comments posted: 0
♻️ Duplicate comments (4)
docs/cow-protocol/tutorials/solvers/onboard.md (4)
24-24: Fix capitalization: "CoW DAO Bonding pool" → "CoW DAO bonding pool".The bonding pool name uses inconsistent capitalization. Use lowercase 'b' in "bonding pool" for consistency throughout the document.
- Given the risk that will be carried by the CoW DAO bonding pool we also ask that solvers who join the solver competition through the CoW DAO Bonding pool start solving on Arbitrum first. + Given the risk that will be carried by the CoW DAO bonding pool we also ask that solvers who join the solver competition through the CoW DAO bonding pool start solving on Arbitrum first.
120-123: Major: Simplify or remove inaccurate quoting competition description.Per past reviewer feedback, the description of how the quoting competition works conflates concepts and is inaccurate. Consider removing the descriptive sentence and keeping only the reference link to the detailed documentation.
## 10. Joining the quoting competition - Besides the solving competition, there is also a quoting competition. This involves responding to a single order batch with a proposed execution for the order and a price that could be delivered to the user. + Besides the solving competition, there is also a quoting competition. - [More information about the quoting competition can be found here.](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards#price-estimation-competition-rewards-cips-27-57) + For details on how to participate and the rewards structure, see the [Price Estimation Competition Rewards documentation](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards#price-estimation-competition-rewards-cips-27-57).
80-82: Major: Clarify and correct the rewards address requirement.The current explanation is confusing and mixes concepts. Per past reviewer feedback, clarify that the rewards address must be controlled on both the solving chain AND mainnet because native token payouts go to the solving chain while COW rewards always go to mainnet. Also fix the typo "is holds" → "it holds" and hyphenation "on chain" → "on-chain".
- To do this, the team will generate keys for your solver to use for settling auctions on-chain and whitelisting those for the solver competition. In order to do this you will need to send a `rewards address` that you would like to use to receive weekly rewards on the chain that you are solving on. The rewards address needs to be controlled by the relevant solver team on both chain X and mainnet, as we send native token transfers to chain X while we send COW rewards to the mainnet address always - - After this process is done, the team will send you the submission addresses that your solver will use to settle auctions on chain. While this is managed by the CoW team, it will be your responsibility to monitor this and make sure that is holds enough funds to cover gas fees. The driver has a minimum threshold for gas that it applies to make sure that the address holds (more than) enough funds to pay the required gas fees. Therefore we recommend these balances: + To do this, the team will generate keys for your solver to use for settling auctions on-chain and whitelisting those for the solver competition. You will need to provide a `rewards address` that you control on both the solving chain and mainnet. Native token rewards and slippage will be sent to this address on the solving chain (e.g., Arbitrum), while COW token rewards are always sent to this address on mainnet. Ensure your address is ready to receive funds on both networks. + + After this process is done, the team will send you the submission addresses that your solver will use to settle auctions on-chain. While this is managed by the CoW team, it will be your responsibility to monitor these addresses and ensure they hold enough funds to cover gas fees. The driver has a minimum gas threshold to ensure sufficient funds to pay required gas fees. Therefore, we recommend these balances:
27-27: Critical: Update Snapshot URL domain and path format for CIP-48.The link uses the outdated
snapshot.boxdomain and incorrect path formats:cow.eth. Update to the publicsnapshot.orgdomain with the correct space formatcow.eth, and standardize terminology to match the rest of the document.- As specified in [CIP-48](https://snapshot.box/#/s:cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805) solvers that are part of the CoW DAO bonding pool will be charged a service fee that is withheld from their weekly rewards. This fee will begin six months after the solver has joined the CoW Bonding pool and will encompass 15% of the weekly COW rewards that the solver would have received. + As specified in [CIP-48](https://snapshot.org/#/cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805) solvers that are part of the CoW DAO bonding pool will be charged a service fee that is withheld from their weekly rewards. This fee will begin six months after the solver has joined the CoW DAO bonding pool and will encompass 15% of the weekly COW rewards that the solver would have received.
🧹 Nitpick comments (16)
docs/cow-protocol/tutorials/solvers/onboard.md (16)
22-22: Minor: Use US English "afterward" instead of "afterwards".- Do not send this before the meeting, we will explain the process during the meeting so that you can send the documents afterwards. + Do not send this before the meeting, we will explain the process during the meeting so that you can send the documents afterward.
32-32: Minor: Wrap bare URL in Markdown link format.- API specification: https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml + API specification: [OpenAPI spec](https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml)
40-41: Minor: Format endpoint example and clarify envName values.Line 40 contains a bare URL and the endpoint format could be clearer. Wrap it in inline code and explain the allowed values for
envName.- The exposed endpoint provided must be of the following format: {base_url}/\${envName}/\${network} - for example: https://api.mysolver.io/staging/mainnet + The exposed endpoint must follow the format: `{base_url}/${envName}/${network}` + For example: `https://api.mysolver.io/staging/mainnet` + where `envName` is one of: `shadow`, `staging`, or `prod`, and `network` is the target blockchain (e.g., `mainnet`, `arbitrum`). -envName values: shadow, staging, prod
47-47: Minor: Use US English "behavior" instead of "behaviour".- The default behaviour for the driver is to set the native token address to `0xeee` and to insert interactions into your solution to unwrap the native token. + The default behavior for the driver is to set the native token address to `0xeee` and to insert interactions into your solution to unwrap the native token.
50-50: Minor: Fix hyphenation "on chain" → "on-chain" and simplify "In the event that" → "If".- It is possible to enable or disable liquidity fetching for your solver. In the event that this is enabled, the driver will search for on chain liquidity sources for your solver to use and send them to your solver. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#fetching-liquidity) + It is possible to enable or disable liquidity fetching for your solver. If this is enabled, the driver will search for on-chain liquidity sources for your solver to use and send them to your solver. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#fetching-liquidity)
55-55: Minor: Replace wordy "In the event of" with "If".- In the event of an EBBO violation the team will reach out and ask you to reimburse the user. [Docs](https://docs.cow.fi/cow-protocol/reference/core/auctions/ebbo-rules) + If there is an EBBO violation, the team will reach out and ask you to reimburse the user. [Docs](https://docs.cow.fi/cow-protocol/reference/core/auctions/ebbo-rules)
58-58: Minor: Fix word order "in to" → "into".- It is possible for your solver to submit multiple solutions for a single auction and let the driver select the solution with the highest score to submit to the auction. It is possible to enable the driver to merge disjoint solutions in to a single solution for the auction. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#postprocessing-solutions) + It is possible for your solver to submit multiple solutions for a single auction and let the driver select the solution with the highest score to submit to the auction. It is possible to enable the driver to merge disjoint solutions into a single solution for the auction. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#postprocessing-solutions)
99-99: Minor: Simplify "In order to" → "To" and fix URL wrapping.- In order to create some volume to test your solver, you can create orders on staging by using our barn swap interface ([https://barn.cow.fi](https://barn.cow.fi)). + To create some volume to test your solver, you can create orders on staging by using our [barn swap interface](https://barn.cow.fi).
102-102: Minor: Fix hyphenation "on chain" → "on-chain".- Once your solver has moved to staging we can deploy your solver on production. Usually the team will schedule your solver to go live with the next release (on Tuesday) after you are deployed on staging. This gives your team a few days to test your solver by settling some transactions on chain before going live on production. + Once your solver has moved to staging we can deploy your solver on production. Usually the team will schedule your solver to go live with the next release (on Tuesday) after you are deployed on staging. This gives your team a few days to test your solver by settling some transactions on-chain before going live on production.
105-109: Minor: Improve link descriptiveness and consider clarifying rewards distribution.The current link text at line 109 ("You can find more information...") is not very descriptive. Consider using more specific link text. Additionally, line 107 ("use a single rewards address that is available on all networks") may need clarification given the earlier requirement that the address be controlled on both the solving chain and mainnet for receiving native and COW rewards respectively.
- Every week on Tuesday your solver will receive rewards for settling auctions. These are distributed in COW tokens to the rewards address you provided. Rewards in COW will be sent to that address on mainnet, and reimbursements for slippage will be distributed on the same network as where the solving took place. + Every week on Tuesday your solver will receive COW token rewards and reimbursements for slippage. COW rewards are sent to your rewards address on mainnet, while network fees and slippage reimbursements are sent on the same network where solving took place. We advise using a single rewards address that is available on all networks. - [You can find more information about how we calculate and distribute rewards here.](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards). The accounting process is documented in detail [here](https://docs.cow.fi/cow-protocol/reference/core/auctions/accounting). + For details on how rewards are calculated and distributed, see the [rewards documentation](https://docs.cow.fi/cow-protocol/reference/core/auctions/rewards). The accounting process is documented in detail in the [accounting guide](https://docs.cow.fi/cow-protocol/reference/core/auctions/accounting).
115-115: Minor: Fix typo "ad" → "and".- - An endpoint that you would like to use for staging ad production + - An endpoint that you would like to use for staging and production
127-127: Minor: Fix hyphenation "on chain" → "on-chain".- Yes, we can whitelist solvers so that they can have access to the orderbook API. Although we generally wait with this until your solver is live and settling orders on chain. + Yes, we can whitelist solvers so that they can have access to the orderbook API. Although we generally wait with this until your solver is live and settling orders on-chain.
129-129: Minor: Fix plural form "CoW AMM's" → "CoW AMMs".- ### How do we integrate CoW AMM's? + ### How do we integrate CoW AMMs?
137-137: Minor: Capitalize "Arbitrum", clarify chain list is not exhaustive, and improve wording.- In the shadow competition (only arbitrum and mainnet now) the solver is tested using production order flow but without settling any orders. This is for testing the integration of the solver. It is possible to simulate the solver's solutions and see how it does. + In the shadow competition (currently on Arbitrum and Mainnet, among other networks) the solver is tested using production order flow but without settling any orders. This is for testing the integration of the solver. It is possible to simulate the solver's solutions and see how it performs.
139-139: Minor: Fix hyphenation "on chain" → "on-chain".- In the staging (barn) competition settling happens on-chain but the volume is much lower. That way the solver is tested by actually settling orders on chain. + In the staging (barn) competition settling happens on-chain but the volume is much lower. That way the solver is tested by actually settling orders on-chain.
144-144: Minor: Standardize bonding pool terminology "Cow DAO" → "CoW DAO".- No, there are no prerequisites (other than KYC if joining the Cow DAO bonding pool) but it is recommended that the solver manages to submit and win solutions on shadow before staging. + No, there are no prerequisites (other than KYC if joining the CoW DAO bonding pool) but it is recommended that the solver manages to submit and win solutions on shadow before staging.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/cow-protocol/reference/core/auctions/rewards.md(1 hunks)docs/cow-protocol/tutorials/solvers/onboard.md(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- docs/cow-protocol/reference/core/auctions/rewards.md
🧰 Additional context used
🪛 LanguageTool
docs/cow-protocol/tutorials/solvers/onboard.md
[locale-violation] ~22-~22: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ting so that you can send the documents afterwards. Given the risk that will be carried b...
(AFTERWARDS_US)
[style] ~80-~80: Consider a more expressive alternative.
Context: ...he submission keys on your behalf. To do this, the team will generate keys for y...
(DO_ACHIEVE)
[style] ~80-~80: Consider a more concise word here.
Context: ...sting those for the solver competition. In order to do this you will need to send a `reward...
(IN_ORDER_TO_PREMIUM)
[style] ~80-~80: Consider a more expressive alternative.
Context: ...for the solver competition. In order to do this you will need to send a `rewards a...
(DO_ACHIEVE)
[grammar] ~82-~82: Use a hyphen to join words.
Context: ...ur solver will use to settle auctions on chain. While this is managed by the CoW ...
(QB_NEW_EN_HYPHEN)
[style] ~98-~98: Consider a more concise word here.
Context: ...tle transactions for winning auctions. In order to create some volume to test your solver,...
(IN_ORDER_TO_PREMIUM)
[grammar] ~102-~102: Use a hyphen to join words.
Context: ... solver by settling some transactions on chain before going live on production. ...
(QB_NEW_EN_HYPHEN)
[grammar] ~127-~127: Use a hyphen to join words.
Context: ...ur solver is live and settling orders on chain. ### How do we integrate CoW AMM'...
(QB_NEW_EN_HYPHEN)
[grammar] ~139-~139: Use a hyphen to join words.
Context: ...is tested by actually settling orders on chain. Finally, production is where the...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
docs/cow-protocol/tutorials/solvers/onboard.md
32-32: Bare URL used
(MD034, no-bare-urls)
40-40: Bare URL used
(MD034, no-bare-urls)
109-109: Link text should be descriptive
(MD059, descriptive-link-text)
🔇 Additional comments (1)
docs/cow-protocol/tutorials/solvers/onboard.md (1)
4-4: The image path is correct; no changes needed.The image file
solver_onboarding_process.jpgexists in the same directory asonboard.md(docs/cow-protocol/tutorials/solvers/), and the relative reference on line 4 correctly resolves to it. The original concern was incorrect—there is noimages/subdirectory, and using./images/solver_onboarding_process.jpgwould break the reference.Likely an incorrect or invalid review comment.
Added comprehensive onboarding guide for joining the CoW Protocol Solver Competition, covering essential information, development, competitions, KYC checks, and rewards.
Summary by CodeRabbit