From b57d05ed576d72876b4d22044773d7d295eeafac Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Thu, 16 Oct 2025 15:32:27 +0300 Subject: [PATCH 01/26] Create onboarding guide for CoW Protocol Solver Competition Added comprehensive onboarding guide for joining the CoW Protocol Solver Competition, covering essential information, development, competitions, KYC checks, and rewards. --- .../cow-protocol/tutorials/solvers/onboard.md | 159 ++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 docs/cow-protocol/tutorials/solvers/onboard.md diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md new file mode 100644 index 00000000..fde0e161 --- /dev/null +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -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. + +![General process for joining the solver competition](./images/solver_onboarding_process.jpg) + +## Index +1. Essential information +2. Locally developing your solver +3. Joining the shadow competition +4. KYC checks and onboarding call +5. Joining the staging competition +6. Moving to production +7. Weekly rewards +8. Slippage accounting +9. Moving to other networks +10. Joining the mainnet competition +11. Joining the quoting competition +12. F.A.Q. + +## 1. Essential information for joining the solver competition + +### Requirements for joining the CoW bonding pool: +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. + +Given the risk that will be carried by the CoW bonding pool we also ask that solvers who join the solver competition through the CoW Bonding pool start solving on Arbitrum first. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. + +### Service fees +As specified in [CIP-48](https://snapshot.box/#/s:cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805) solvers who are in the CoW bonding pool will be charged a service fee that is withheld from their weekly rewards. These fees 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. + +## 2. Locally developing your solver +The first step to joining the solver competition is to set up a solver. We have a [local set up guide](https://docs.cow.fi/cow-protocol/tutorials/solvers/local_test) that can help you set up a solver locally. There are also open source example solvers available in the [solvers crate](https://github.com/cowprotocol/services/tree/main/crates/solvers) that you can use as a starting point for developing your solver. + +API specification: https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml + +## 3. Joining the shadow (test) competition +Once you have a solver running locally you can join the shadow competition to start testing your solver using CoW Protocol's order flow. + +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 + +### Driver configuration for your solver +There are various configurations we can change for your solver in the driver to help you optimize your solver: + +#### - Wrapping / unwrapping native tokens +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. + +#### - Liquidity fetching +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) + +#### - Fairness checks for EBBO +To ensure a fair execution for the users there are several EBBO rules that are maintained in the auction. Usually, an EBBO violation means that a reference pool from the base protocol would have given the user a better price than what they ended up receiving. + +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) + +#### - Merging disjoint 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 in to a single solution for the auction. [Docs](https://docs.cow.fi/cow-protocol/tutorials/arbitrate/solver/driver#postprocessing-solutions) + +## 4. KYC checks and onboarding call +Once your solver is tested and ready to join the solver competition, it is time to start the onboarding process. At this point, it would be best to reach out to the team on Telegram to schedule an onboarding call. During this call the team will go over the onboarding process and discuss the next steps. + +The main goal of the onboarding call is to both make sure that your team understands everything they need to know related to the solver competition, and for everyone to get to know each other. The main structure of these calls is: + +- Introduction + +- Solver overview (what is your solver's background and strategy) + +- The bonding pool (such as how to join the bonding pool, locking 25% of the weekly rewards, and service fees) + +- KYC process and requirements + +- Surplus shifting and the EBBO rules + +- The slippage accounting process and weekly rewards + +## 5. Joining the staging (barn) competition +After the onboarding call, the CoW team will begin preparing the required infrastructure for your solver to join the solver competition. If you are joining the solver competition under the CoW bonding pool, then this will involve setting up and managing the driver on your behalf and setting up and managing the submission keys on your behalf. + +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. This means that rewards and slippage for solving on Arbitrum, will be sent to this rewards address on the Arbitrum network. Please make sure that your address is ready to receive funds on this network that you are solving on. + +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: + +| Network | Environment | Recommended initial balance | +|---|---|---| +| Mainnet | Staging | 0.2 ETH | +| Mainnet | Production | 1 ETH | +| Arbitrum | Staging | 0.05 ETH | +| Arbitrum | Production | 0.2 ETH | +| Base | Staging | 0.05 ETH | +| Base | Production | 0.2 ETH | +| Gnosis | Staging | 15 xDAI | +| Gnosis | Production | 100 xDAI | + +> **_NOTE:_** Please send the funds in the native currency of the chain that these addresses will be solving on. So for a submission address generated for your solver on Arbitrum, send the funds in ETH on the Arbitrum network. + +After your solver is live and begins settling transactions, it will be your responsibility to monitor these addresses and to make sure that they hold enough funds to settle transactions for winning auctions. + +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)). + +## 6. Moving to 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. + +## 7. Weekly rewards +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. + +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) + +## 8. Slippage accounting +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: + +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. + +## 9. Moving to other networks +After joining the solver competition on Arbitrum we can enable your solver on Gnosis chain and Base network relatively soon. For this we will go through the same process of generating addresses, vouching for them, and whitelisting them. For each new chain that we deploy your solver on we will need: + +- A rewards address for receiving the weekly COW rewards associated with that network +- An endpoint that you would like to use for staging ad production + +## 10. Joining the mainnet competition +We usually wait a bit before migrating solvers to mainnet. After your solver has been active on other networks for some time the team can enable your solver on mainnet. + +## 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. + +If your solver provides the best price for the user, and that quote then leads to an order that is settled on chain. Then your solver will receive a fixed reward for providing this quote, regardless of which solver won the associated auction and settled the order on chain. + +[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) + +## 12. F.A.Q. +### Can we get access to the orderbook API? +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. + +### How do we integrate CoW AMM's? +[We have a section in the documentation about integrating CoW AMM's.](https://docs.cow.fi/cow-amm/tutorials/cow-amm-for-solvers) + +### Is there a way to find out the cow reward in real time immediately after the trade? +This table should contain the data you're looking for: https://dune.com/queries/4351957 data is updated every 2 hours + +### What are the environments? +There are three environments: shadow, staging, and production. +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 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. + +Finally, production is where the solver is participating in the main solver competition. + +### Are there any prerequisites in the shadow environment that we must meet before being allowed to join staging? +No, there are no prerequisites (other than KYC if solving on Cow bonding pool) but its recommended that the solver manages to submit and settle solutions on shadow before staging. From f159a0289614ac291d2aad9cc64fe69ac1390814 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Thu, 16 Oct 2025 15:34:01 +0300 Subject: [PATCH 02/26] Create images folder --- docs/cow-protocol/tutorials/solvers/images | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/cow-protocol/tutorials/solvers/images diff --git a/docs/cow-protocol/tutorials/solvers/images b/docs/cow-protocol/tutorials/solvers/images new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/cow-protocol/tutorials/solvers/images @@ -0,0 +1 @@ + From 8ddc079b29fd7c20d5b20e929b606cc168f6238c Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Thu, 16 Oct 2025 15:35:54 +0300 Subject: [PATCH 03/26] Delete docs/cow-protocol/tutorials/solvers/images --- docs/cow-protocol/tutorials/solvers/images | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/cow-protocol/tutorials/solvers/images diff --git a/docs/cow-protocol/tutorials/solvers/images b/docs/cow-protocol/tutorials/solvers/images deleted file mode 100644 index 8b137891..00000000 --- a/docs/cow-protocol/tutorials/solvers/images +++ /dev/null @@ -1 +0,0 @@ - From bca21925fb6e7ce318e785b9b622efaf8732ed60 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Thu, 16 Oct 2025 15:36:47 +0300 Subject: [PATCH 04/26] Add files via upload --- .../solvers/solver_onboarding_process.jpg | Bin 0 -> 18751 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/cow-protocol/tutorials/solvers/solver_onboarding_process.jpg diff --git a/docs/cow-protocol/tutorials/solvers/solver_onboarding_process.jpg b/docs/cow-protocol/tutorials/solvers/solver_onboarding_process.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c582d427864c34e49420b5e66637e3dfb6f2a50f GIT binary patch literal 18751 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 Mb-a_Ecs2b$06CW5qyPW_ literal 0 HcmV?d00001 From bf9533b136818e6eb99e75c6c781d60f0b7cef47 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Thu, 16 Oct 2025 15:38:07 +0300 Subject: [PATCH 05/26] Fix image path for solver onboarding process --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index fde0e161..6df2a3eb 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -1,7 +1,7 @@ # 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. -![General process for joining the solver competition](./images/solver_onboarding_process.jpg) +![General process for joining the solver competition](solver_onboarding_process.jpg) ## Index 1. Essential information From 47a59d91ae7a8ef8ec675490c0be3d7014b00cf1 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:01:50 +0300 Subject: [PATCH 06/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 6df2a3eb..d46ea3c7 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -1,5 +1,5 @@ # 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. +> **_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) and reach out to help set up the bonding pool and whitelist your solver's address. ![General process for joining the solver competition](solver_onboarding_process.jpg) From 31089aef074c48c39d95bcaa36495f2216514978 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:01:59 +0300 Subject: [PATCH 07/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index d46ea3c7..858b9747 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -19,7 +19,7 @@ ## 1. Essential information for joining the solver competition -### Requirements for joining the CoW bonding pool: +### Requirements for joining the CoW DAO bonding pool 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. Given the risk that will be carried by the CoW bonding pool we also ask that solvers who join the solver competition through the CoW Bonding pool start solving on Arbitrum first. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. From 00082605fd38c429674a75191f0b9efba4cb7990 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:02:16 +0300 Subject: [PATCH 08/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 858b9747..84d2ea14 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -22,7 +22,7 @@ ### Requirements for joining the CoW DAO bonding pool 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. -Given the risk that will be carried by the CoW bonding pool we also ask that solvers who join the solver competition through the CoW Bonding pool start solving on Arbitrum first. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. +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. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. ### Service fees As specified in [CIP-48](https://snapshot.box/#/s:cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805) solvers who are in the CoW bonding pool will be charged a service fee that is withheld from their weekly rewards. These fees 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. From 8e1c34d3a5d89c2b5764865ab1646917c71c88cd Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:02:31 +0300 Subject: [PATCH 09/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 84d2ea14..b6649992 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -25,7 +25,7 @@ The general KYC requirements are to send us documentation proving that you are t 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. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. ### Service fees -As specified in [CIP-48](https://snapshot.box/#/s:cow.eth/proposal/0x563ab9a66265ad72c47a8e55f620f927685dd07d4d49f6d1812905c683f05805) solvers who are in the CoW bonding pool will be charged a service fee that is withheld from their weekly rewards. These fees 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.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. ## 2. Locally developing your solver The first step to joining the solver competition is to set up a solver. We have a [local set up guide](https://docs.cow.fi/cow-protocol/tutorials/solvers/local_test) that can help you set up a solver locally. There are also open source example solvers available in the [solvers crate](https://github.com/cowprotocol/services/tree/main/crates/solvers) that you can use as a starting point for developing your solver. From cbef080389bab3e91ef797427e5f884ba8e4739b Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:02:39 +0300 Subject: [PATCH 10/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index b6649992..616ad08b 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -75,7 +75,7 @@ The main goal of the onboarding call is to both make sure that your team underst - The slippage accounting process and weekly rewards ## 5. Joining the staging (barn) competition -After the onboarding call, the CoW team will begin preparing the required infrastructure for your solver to join the solver competition. If you are joining the solver competition under the CoW bonding pool, then this will involve setting up and managing the driver on your behalf and setting up and managing the submission keys on your behalf. +After the onboarding call, the CoW team will begin preparing the required infrastructure for your solver to join the solver competition. If you are joining the solver competition under the CoW DAO bonding pool, then this will involve setting up and managing the driver on your behalf and setting up and managing the submission keys on your behalf. 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. This means that rewards and slippage for solving on Arbitrum, will be sent to this rewards address on the Arbitrum network. Please make sure that your address is ready to receive funds on this network that you are solving on. From 88125be13ee2a13e48fab6e04f96baf4e06b3d28 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:02:57 +0300 Subject: [PATCH 11/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 616ad08b..388aa7af 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -41,7 +41,7 @@ If you would like to secure your solver, you can set up a firewall and only acce The exposed endpoint provided must be of the following format: {base_url}/${envName}/${network} - for example: https://api.mysolver.io/staging/mainnet ### Driver configuration for your solver -There are various configurations we can change for your solver in the driver to help you optimize your solver: +There are various configurations for your solver in the driver to help you optimize your solver: #### - Wrapping / unwrapping native tokens 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. From d7fd52e7ad10f69d7ce076dc74009966bc34e8cf Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:03:20 +0300 Subject: [PATCH 12/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: Haris Angelidakis <64154020+harisang@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 388aa7af..6a7872c1 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -38,7 +38,7 @@ Once you have a solver running locally you can join the shadow competition to st 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 +The exposed endpoint provided must be of the following format: {base_url}/\${envName}/\${network} - for example: https://api.mysolver.io/staging/mainnet ### Driver configuration for your solver There are various configurations for your solver in the driver to help you optimize your solver: From 3022abd51d4d6ab94b71e5e54e2367c6d847d960 Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:07:50 +0300 Subject: [PATCH 13/26] Update exposed endpoint format with envName values Added envName values for endpoint configuration. --- docs/cow-protocol/tutorials/solvers/onboard.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 6a7872c1..0919b00f 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -39,6 +39,7 @@ If you would like to secure your solver, you can set up a firewall and only acce ### Exposed Endpoint 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 ### Driver configuration for your solver There are various configurations for your solver in the driver to help you optimize your solver: From 6806cf6755c3ca3e9b2ff5b471e4e3cac8323fa9 Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:23:35 +0300 Subject: [PATCH 14/26] small edits --- docs/cow-protocol/tutorials/solvers/onboard.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 0919b00f..9be2b74b 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -146,7 +146,7 @@ Yes, we can whitelist solvers so that they can have access to the orderbook API. [We have a section in the documentation about integrating CoW AMM's.](https://docs.cow.fi/cow-amm/tutorials/cow-amm-for-solvers) ### Is there a way to find out the cow reward in real time immediately after the trade? -This table should contain the data you're looking for: https://dune.com/queries/4351957 data is updated every 2 hours +[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. ### What are the environments? There are three environments: shadow, staging, and production. @@ -157,4 +157,4 @@ In the staging (barn) competition settling happens on-chain but the volume is mu Finally, production is where the solver is participating in the main solver competition. ### Are there any prerequisites in the shadow environment that we must meet before being allowed to join staging? -No, there are no prerequisites (other than KYC if solving on Cow bonding pool) but its recommended that the solver manages to submit and settle 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. From 2272dab9103ff1899b3fb666f23206a9fd80a0a4 Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:30:05 +0300 Subject: [PATCH 15/26] Update docs/cow-protocol/tutorials/solvers/onboard.md --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 9be2b74b..7b8817a9 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -145,7 +145,7 @@ Yes, we can whitelist solvers so that they can have access to the orderbook API. ### How do we integrate CoW AMM's? [We have a section in the documentation about integrating CoW AMM's.](https://docs.cow.fi/cow-amm/tutorials/cow-amm-for-solvers) -### Is there a way to find out the cow reward in real time immediately after the trade? +### 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. ### What are the environments? From 0b425eeb2349a0eb571f86f859cce6226b86c17e Mon Sep 17 00:00:00 2001 From: tamir-cow Date: Mon, 20 Oct 2025 12:35:11 +0300 Subject: [PATCH 16/26] Update onboarding instructions for solver competition Clarified requirements for rewards address and network transitions. --- docs/cow-protocol/tutorials/solvers/onboard.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 7b8817a9..699a2d1e 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -78,7 +78,7 @@ The main goal of the onboarding call is to both make sure that your team underst ## 5. Joining the staging (barn) competition After the onboarding call, the CoW team will begin preparing the required infrastructure for your solver to join the solver competition. If you are joining the solver competition under the CoW DAO bonding pool, then this will involve setting up and managing the driver on your behalf and setting up and managing the submission keys on your behalf. -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. This means that rewards and slippage for solving on Arbitrum, will be sent to this rewards address on the Arbitrum network. Please make sure that your address is ready to receive funds on this network that you are solving on. +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: @@ -123,7 +123,7 @@ In this situation, if the settlement contract has enough of the tokens in its bu 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. ## 9. Moving to other networks -After joining the solver competition on Arbitrum we can enable your solver on Gnosis chain and Base network relatively soon. For this we will go through the same process of generating addresses, vouching for them, and whitelisting them. For each new chain that we deploy your solver on we will need: +After joining the solver competition on Arbitrum we can enable your solver on other chains relatively soon. For this we will go through the same process of generating addresses, vouching for them, and whitelisting them. For each new chain that we deploy your solver on we will need: - A rewards address for receiving the weekly COW rewards associated with that network - An endpoint that you would like to use for staging ad production @@ -134,8 +134,6 @@ We usually wait a bit before migrating solvers to mainnet. After your solver has ## 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. -If your solver provides the best price for the user, and that quote then leads to an order that is settled on chain. Then your solver will receive a fixed reward for providing this quote, regardless of which solver won the associated auction and settled the order on chain. - [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) ## 12. F.A.Q. From 767618d360ad4b487226b820153f2eb543725d1b Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:43:18 +0300 Subject: [PATCH 17/26] small fix --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 699a2d1e..8c9291d2 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -1,5 +1,5 @@ # 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) 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) and reach out to help set up the bonding pool and whitelist your solver's address. ![General process for joining the solver competition](solver_onboarding_process.jpg) From d83c20334b7bef8f385ace0b2e6c3f4362d41049 Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:49:00 +0300 Subject: [PATCH 18/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 8c9291d2..dc43ff2f 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -48,7 +48,7 @@ There are various configurations for your solver in the driver to help you optim 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. #### - Liquidity fetching -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) #### - Fairness checks for EBBO To ensure a fair execution for the users there are several EBBO rules that are maintained in the auction. Usually, an EBBO violation means that a reference pool from the base protocol would have given the user a better price than what they ended up receiving. From 63f3eafc57b8dd99cf35f59d01fdb68dcde04c1f Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:53:56 +0300 Subject: [PATCH 19/26] Update docs/cow-protocol/tutorials/solvers/onboard.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index dc43ff2f..c013f10b 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -28,7 +28,7 @@ Given the risk that will be carried by the CoW DAO bonding pool we also ask that 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. ## 2. Locally developing your solver -The first step to joining the solver competition is to set up a solver. We have a [local set up guide](https://docs.cow.fi/cow-protocol/tutorials/solvers/local_test) that can help you set up a solver locally. There are also open source example solvers available in the [solvers crate](https://github.com/cowprotocol/services/tree/main/crates/solvers) that you can use as a starting point for developing your solver. +The first step to joining the solver competition is to set up a solver. We have a [local set up guide](https://docs.cow.fi/cow-protocol/tutorials/solvers/local_test) that can help you set up a solver locally. There are also open-source example solvers available in the [solvers crate](https://github.com/cowprotocol/services/tree/main/crates/solvers) that you can use as a starting point for developing your solver. API specification: https://github.com/cowprotocol/services/blob/main/crates/solvers/openapi.yml From bde45bdb5e256d095a84f6c5cabcb3fc4ab97be1 Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Mon, 20 Oct 2025 17:48:56 +0300 Subject: [PATCH 20/26] merge rewards and accounting section --- docs/cow-protocol/tutorials/solvers/onboard.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index c013f10b..c041b8b1 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -10,8 +10,7 @@ 4. KYC checks and onboarding call 5. Joining the staging competition 6. Moving to production -7. Weekly rewards -8. Slippage accounting +7. Weekly rewards and accounting 9. Moving to other networks 10. Joining the mainnet competition 11. Joining the quoting competition @@ -102,12 +101,12 @@ In order to create some volume to test your solver, you can create orders on sta ## 6. Moving to 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. -## 7. Weekly rewards +## 7. Weekly rewards and accounting 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. 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) +[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). ## 8. Slippage accounting 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: From fe047cc688f03610f82eb1279b82541b287a1131 Mon Sep 17 00:00:00 2001 From: harisang Date: Mon, 20 Oct 2025 17:50:07 +0300 Subject: [PATCH 21/26] fix numbering --- .../cow-protocol/tutorials/solvers/onboard.md | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index c041b8b1..e3a43a9f 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -11,10 +11,10 @@ 5. Joining the staging competition 6. Moving to production 7. Weekly rewards and accounting -9. Moving to other networks -10. Joining the mainnet competition -11. Joining the quoting competition -12. F.A.Q. +8. Moving to other networks +9. Joining the mainnet competition +10. Joining the quoting competition +11. F.A.Q. ## 1. Essential information for joining the solver competition @@ -108,34 +108,21 @@ 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). -## 8. Slippage accounting -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: - -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. - -## 9. Moving to other networks +## 8. Moving to other networks After joining the solver competition on Arbitrum we can enable your solver on other chains relatively soon. For this we will go through the same process of generating addresses, vouching for them, and whitelisting them. For each new chain that we deploy your solver on we will need: - A rewards address for receiving the weekly COW rewards associated with that network - An endpoint that you would like to use for staging ad production -## 10. Joining the mainnet competition +## 9. Joining the mainnet competition We usually wait a bit before migrating solvers to mainnet. After your solver has been active on other networks for some time the team can enable your solver on mainnet. -## 11. Joining the quoting competition +## 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. [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) -## 12. F.A.Q. +## 11. F.A.Q. ### Can we get access to the orderbook API? 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. From e1ef8ecdfc272cad8c04e97729e8ea223f72213a Mon Sep 17 00:00:00 2001 From: harisang Date: Mon, 20 Oct 2025 17:51:29 +0300 Subject: [PATCH 22/26] fix title in quote rewards section of core docs --- docs/cow-protocol/reference/core/auctions/rewards.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/reference/core/auctions/rewards.md b/docs/cow-protocol/reference/core/auctions/rewards.md index 8c94562d..c20a0769 100644 --- a/docs/cow-protocol/reference/core/auctions/rewards.md +++ b/docs/cow-protocol/reference/core/auctions/rewards.md @@ -69,7 +69,7 @@ The presence of the cap on rewards $$c_u$$, however, makes the problem more comp To summarize, truthfully revealing the (cost-adjusted) score that a solver can generate for each submitted solution is optimal if the cap is not binding, and misreporting does not affect $$\textrm{referenceScore}_i$$. It is not necessarily optimal in uncompetitive auctions when the difference between the best and second-best solution may be large, and in some edge cases in which a solver may benefit from making the filtering step less stringent. However, in these cases, deriving the optimal strategy is a very complex problem. We conclude by noting that most CoW Protocol batches are very competitive - the cap on rewards is binding only in about 9% of auctions - and that a solver benefits by making the filtering steps less stringent for its opponents only in sporadic cases. -## Price estimation competition rewards (CIPs 27, 57) +## Price estimation competition rewards (CIPs 27, 57, 72) The price estimation competition is a separate competition where solvers compete to provide the best response to a quote request. Quote requests look almost identical to single-order batch auctions, where there is only one order with a trivial limit price, and solvers propose executions of this order with the goal to maximize "out amount minus gas costs", in the case of a sell request, or minimize "in amount + gas costs" in the case of a buy request. From a0e4fdca495d66b9f6fda0d49f330ce519601b72 Mon Sep 17 00:00:00 2001 From: harisang Date: Mon, 20 Oct 2025 17:52:56 +0300 Subject: [PATCH 23/26] small change --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index e3a43a9f..b51eba02 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -102,7 +102,7 @@ In order to create some volume to test your solver, you can create orders on sta 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. ## 7. Weekly rewards and accounting -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 payments and rewards for settling auctions. Rewards in COW will be sent to the rewards address on mainnet, and reimbursements for network fees and slippage will be distributed on the same network as where the solving took place. We advise using a single rewards address that is available on all networks. From c02928d8024d051ec15f98503f2cba928e1ad19f Mon Sep 17 00:00:00 2001 From: harisang Date: Mon, 20 Oct 2025 17:54:04 +0300 Subject: [PATCH 24/26] some more fixes --- docs/cow-protocol/tutorials/solvers/onboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index b51eba02..3e5f6767 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -120,7 +120,7 @@ We usually wait a bit before migrating solvers to mainnet. After your solver has ## 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. -[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) +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-72). ## 11. F.A.Q. ### Can we get access to the orderbook API? From c011078ecbe4560cd71999b4a67ecf5a12c0e417 Mon Sep 17 00:00:00 2001 From: harisang Date: Mon, 20 Oct 2025 18:02:10 +0300 Subject: [PATCH 25/26] small fixes --- docs/cow-protocol/tutorials/solvers/onboard.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 3e5f6767..7c0acf23 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -21,7 +21,7 @@ ### Requirements for joining the CoW DAO bonding pool 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. -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. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. +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. After being in production on Arbitrum solvers can move to other L2's relatively easily. But joining the mainnet competition will require further evaluation after some time of solving on L2's. ### Service fees 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. @@ -77,9 +77,9 @@ The main goal of the onboarding call is to both make sure that your team underst ## 5. Joining the staging (barn) competition After the onboarding call, the CoW team will begin preparing the required infrastructure for your solver to join the solver competition. If you are joining the solver competition under the CoW DAO bonding pool, then this will involve setting up and managing the driver on your behalf and setting up and managing the submission keys on your behalf. -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. 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. Specifically, the rewards address needs to be controlled by the relevant solver team on both the chain it is currently solving and on mainnet, as we send native token transfers to the chain the solver is active 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: +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: | Network | Environment | Recommended initial balance | |---|---|---| @@ -111,16 +111,14 @@ We advise using a single rewards address that is available on all networks. ## 8. Moving to other networks After joining the solver competition on Arbitrum we can enable your solver on other chains relatively soon. For this we will go through the same process of generating addresses, vouching for them, and whitelisting them. For each new chain that we deploy your solver on we will need: -- A rewards address for receiving the weekly COW rewards associated with that network -- An endpoint that you would like to use for staging ad production +- A rewards address for receiving the weekly COW rewards associated with that network; +- An endpoint that you would like to use for staging amd production. ## 9. Joining the mainnet competition We usually wait a bit before migrating solvers to mainnet. After your solver has been active on other networks for some time the team can enable your solver on mainnet. ## 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. - -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-72). +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-72). ## 11. F.A.Q. ### Can we get access to the orderbook API? From 38e2dd5c1395cebe62c9cc51f5d127f68cb235ae Mon Sep 17 00:00:00 2001 From: harisang Date: Mon, 20 Oct 2025 18:17:31 +0300 Subject: [PATCH 26/26] a few more fixes --- docs/cow-protocol/tutorials/solvers/onboard.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/cow-protocol/tutorials/solvers/onboard.md b/docs/cow-protocol/tutorials/solvers/onboard.md index 7c0acf23..7fb1ec38 100644 --- a/docs/cow-protocol/tutorials/solvers/onboard.md +++ b/docs/cow-protocol/tutorials/solvers/onboard.md @@ -44,7 +44,7 @@ envName values: shadow, staging, prod There are various configurations for your solver in the driver to help you optimize your solver: #### - Wrapping / unwrapping native tokens -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. #### - Liquidity fetching 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,7 +55,7 @@ To ensure a fair execution for the users there are several EBBO rules that are m 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) #### - Merging disjoint 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 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) ## 4. KYC checks and onboarding call Once your solver is tested and ready to join the solver competition, it is time to start the onboarding process. At this point, it would be best to reach out to the team on Telegram to schedule an onboarding call. During this call the team will go over the onboarding process and discuss the next steps. @@ -99,7 +99,7 @@ After your solver is live and begins settling transactions, it will be your resp 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)). ## 6. Moving to 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. +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. ## 7. Weekly rewards and accounting Every week on Tuesday your solver will receive payments and rewards for settling auctions. Rewards in COW will be sent to the rewards address on mainnet, and reimbursements for network fees and slippage will be distributed on the same network as where the solving took place. @@ -122,10 +122,10 @@ Besides the solving competition, there is also a quoting competition. More infor ## 11. F.A.Q. ### Can we get access to the orderbook API? -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. -### How do we integrate CoW AMM's? -[We have a section in the documentation about integrating CoW AMM's.](https://docs.cow.fi/cow-amm/tutorials/cow-amm-for-solvers) +### How do we integrate CoW AMMs? +[We have a section in the documentation about integrating CoW AMMs.](https://docs.cow.fi/cow-amm/tutorials/cow-amm-for-solvers) ### 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. @@ -139,4 +139,4 @@ In the staging (barn) competition settling happens on-chain but the volume is mu Finally, production is where the solver is participating in the main solver competition. ### Are there any prerequisites in the shadow environment that we must meet before being allowed to join 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. +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.