What is a Solver?
At the heart of the CoW Protocol there are solvers. In essence, a solver is a computer program that takes the orderbook as input, then computes the prices and traded amounts of all orders and liquidity sources (AMMs) that make the best possible overall trading experience. This problem, known as the batch auction problem, is an interesting and challenging optimization problem for which there is not a perfect algorithm for (and most likely will never be).
In the spirit of decentralization, on CoW Protocol multiple independent solvers compete for finding the best solution to the batch auction problem. Every few seconds, a round of the competition takes place, giving participating solvers the chance to solve a batch reflecting the most recent orderbook state. The solver that outputs the best solution is rewarded, and thus its solution is the one to be settled on-chain.
This reward aims at incentivizing the development of CoW Protocol solvers. More specifically, the challenge is to write a solver that finds good solutions to the batch auction problem. A good solution must comply with the solution specification, and should map to a good objective value - both of which will be formally verified by the protocol.
There are different avenues to explore for designing a solver that is competitive, including, but not limited to:
- Developing an efficient optimization algorithm
- Identifying and solving special problem instances that are easy to solve
- Considering more liquidity sources (AMMs) in addition to those that are supplied
- Integrating external dex-aggregators / market makers
Landscape of Solvers
In the spirit of decentralization and transparency, CoW Protocol maintains comprehensive dashboards on Dune analytics detailing the performance of all solvers that have participated in the solver auction.
Solvers that have participated to date: