Fair by Design: How Combinatorial Batch Auctions Will Power the Next Era of DeFi

EthCC[8] · 2 Jul 2025 · 17:59

Jacopo Buriollo presents fair combinatorial batch auctions in CoW Protocol. The presentation discusses the upgrade’s intended effects on throughput, execution fairness and modular intent-based trading.

Speakers

Topics

From EthCC[8], hosted by Ethereum France.

Transcript

Hi everyone, I'm Yakopo. Uh today I'll walk you through a major upgrade on how we execute trades uh on chain uh fair combinatorial batch auctions. This is actually more than a new mechanism. Uh it's about embedding fairness and scalability right into defy core. Okay, here's what we will cover. Um first of all uh we will see why execution in D5 still needs work. Uh after that we'll see what cow protocol and intentbased trading are and why auctions are core for fair execution.

And after that we'll look at the limits of traditional batch auctions and how fair combinatorial batch auctions actually solve them. And finally uh we will see what this unlocks for the future of traders solvers and defy in general. So let's say that first of all if you look at the big picture uh execution in DeFi is kind of messy messy right in defi is maturing we have more trades we have more chains faster chains we have like more complex needs but uh under the hood uh as I said execution still has some flaws we have me that is extracted at user's expense

uh we have liquidity that is cloed and the way trades settle uh can be let's say less than fair right as defi scales we need to actually embed fairness efficiency and throughput right into the infrastructure right it has to be like core to our infrastructure and not just afterthoughts so what is cow protocol well cow protocol is an intentbased dex aggregator what it means is that users tell us what they want to do or what they want to achieve for example I don't know swap ing ETH for USDC but they don't tell us how they want to achieve that right they don't specify a execution path right what happens next

normally is that solvers compete to fulfill that uh that intent right and they try to actually they do shoulder all the complexity of it right so they take care of routing me risks slippage uh gas Right. And um this basically means that they provide the experience a trading experience that is fair that is secure because it's ME protected as I said that is optimized because it gives surplus backs to traders. It we have a uniform clearing price and we have the possibility of having peer-to-peer

matching. Right? That basically is what we call a coincidence of wants. That's by the way our name cow right at the at the heart of this uh there is the auction logic and we will talk about the auction logic uh in a bit. So um let's first start uh let's first speak about intent right uh and intent based trading I would say like intentbased trading is about abstraction uh instead of users um micromanaging swaps what they do is they tell us okay I want to swap 100 uh USDC for a certain amount of ETH right so they basically specify a buy token a sell token the amount they want to buy

and or sell and uh a slippage threshold basically right what happens next as I was mentioning is solvers pick up this intent and they find the best way to fulfill this intent so the best execution and providing the the traders let's say the best the best possible outcome of course this unlocks composibility and uh and modularity right intents can be matched against dexes against uh chains and and bridges and uh even against asset types basically paving the way for programmable finance.

Who are these solvers that we have been talking about? Uh well solvers are basically uh bots right that are scanning the ecosystem to find the best way to actually execute a bid and fulfill an intent. As I said, they shoulder that complexity including the execution logic and they have one goal which is normally maximizing surplus for for users. Why? Because if they do so they have higher chances of winning an auction and if they win an auction they get rewards.

It's basically a competitive game with high alignment. So what are these auctions? Well, it it's basically we are now talking of how these intents get executed, right? So, um or or if you want, how do do we determine which solver gets the right to execute the term a certain intent and that's when auctions enter the stage, right? In the end, auctions are the core mechanism that cow protocol uses to ensure that users are protected and get a good deal.

Moreover, uh instead of executing trades one by one, we normally batch them and solve them collectively. This is what a batch auction is basically, right? Um and this normally allows for matching and price improvements that would be otherwise kind of impossible with traditional dexes. Solver bid on on one batch and uh and the best one basically wins. Yeah. So why going through all this trouble uh with auctions? Well, because auctions allow to find the best execution path and price for a given intent. They have ME protection and uh they ensure fairer execution, right?

They are basically and simply more fair than first come first served or AMM models right? However, uh cow protocol original design had some limits um which were like it was efficient but only for a single winner per batch as I said right so that led to underused capacity missed opportunities and um sometimes also like some fairness challenges right uh let's let's unpack these limits a bit more so first of all we had a single winning solution right only one solver could win this meant that sometimes good opportunities and good outcomes were left behind. Uh on top of that surplus was somehow skewed, right? Certain

trades uh benefited more than others and uh above all we had to run a kind of complex expost fairness check or fairness test check that is called EBBO after every auction. Right? It worked but it wasn't scalable or transparent enough. So let's look at how let's say a old auction works, let's say, right? And um basically we have a batch of orders. We've have Emily that wants to swap ETH for USDC. We have Edith that wants to go the other way around and swap USDC for ETH. We have Chiao that wants to swap one inch for cow. And we have Renee that

wants to swap ETH for a I really hope you like rhymes because it took a while to find the right names that were rhyming with those tokens. So uh yeah so in a traditional auction what happens is we have solver A that bids on the first three orders right on Emily, Edith and and Chiao and wins. However, we had solver B that had a better execution for order three, for Chiao's uh intent. And we have solver C that had also a B for Rene's uh intent, right? But both solver B and solver C got ignored. Why? Because we have a single winner constraint we said, right? So only one solver can win.

So you can see the problems here, right? We have some surplus that is missed missing because of course solver B had a better execution. We have a lower total throughput because some orders didn't get executed and we have also to perform now a post facto fairness check in particular for order three the one where we had a better execution and a better outcome that was not considered so I think it's pretty clear why we needed a change right uh cow protocol is expanding across chains as you probably heard the last few days and is managing more and more uh trading intents So there is the need for of course more throughput, more fairness in how we

distribute surplus and more decentralization. The single winner constraint was kind of held in the protocol back, right? It was time for something better, something fairer by design and that's why cow protocol built uh fair combinatorial batch auctions. Let's see how fair combinatorial batch auction work. Uh sometimes we call them FCBAs. So but yeah I I'll try to say the long name you know. Um yeah so in in a fair combinatorial batch auction solvers bid and submit multiple bids right and on individual or batch trades. Then these bids are basically compared um like the outcome of these bids is

compared against a fairness benchmark what we call a reference outcome right and uh only if uh a bid right an all traded let's say a batched bid uh provides a better outcome compared to all individual trades in that batch it is eligible to win then from the surviving bids right uh multiple solvers can win. Actually, multiple solvers can win the same auction as long as they meet this fairness criteria. Before I move on, let me pause for a second and explain a bit better how this reference outcome works. So the the reference outcome is basically um uh let's say a benchmark constructed on the

best bits that we can have on individual token pairs and direction. So let's say no batching or combining happened. what would be the best execution on each individual trade on its own. Right? Once we have that, what we do is when a solver submits uh a new batched bid, let's say the one where we had order one, two, and three combined earlier, like in the example I showed you earlier. This bid is only accepted if the reference outcome across all token pairs in that bid is actually beating basically the outcome that you will have in each individual trade alone. Right?

So this way batching can never make a trade worse off than it would have been if it was just executed alone. Maybe to to explain this a bit better I can jump back to the previous example. Right? So what happens here is we had solver A that made a bid on order 1, two and three and solver B had a better execution for order three. So Chiao that was the the one that let's say manifested that intent uh for order three um got a disadvantage here right with fair combinatorial batch auction this couldn't have been possible because solver A with this bid would probably been filtered out in the sense that it

wouldn't have a best outcome for all orders included in that batch and we can actually see what happens in practice here right So we still have solver, it's the same batch. So we still have solver A beating on orders 1, 2, and three, Emily, Emily, Edith, and Chiao. But it gets disqualified for the reason I said earlier. There is a better uh execution for Chiao's uh trade, right? Solver A can still win the coincidence of wants between Emily and Edith. You can see there are the same token pairs in different directions. So it's a coincidence of once, but this time solver B actually wins Chiao's order, right? Order three. and solver C wins Renee order. Right? So you can see the

the advantage that we have here with FCBA. We have a higher total surplus of course because we have the best outcome possible. We have more trades that are executed. So we have a higher throughput and we don't need any post factor fairness check. This is just a clear multisolver win. So uh you can say basically that um in FCBA uh fairness is not just a patch is is the design right it's encoded in the design solvers are rewarded based on how better outcome they provide compared to the to the baseline trades in the same direction right token direction get the same price like so you have we have a

uniform price there and hook logic and fees and gas costs are accounted for what about the EBBO that fairness check that I was mentioning earlier? Well, that that becomes obsolete in the sense that fairness now is checked before execution and not after, right? And this is in theory. By the way, in in tests, we have already noticed that like fair combinatorial batch auctions are bringing 33% more order throughput. That means that cow swap is faster. Now um that's especially true by the way in um volatile times right when there is high congestion. Imagine this as a highway with high traffic and basically you are

suddenly adding another lane. Of course this way you can actually move from point A to B faster. On top of that we have 25% more solver rewards. So this is kind of interesting right because in the end what we are providing is a surplus distribution that is more equitable. We have stronger incentives for solvers that increases both competition and quality and we are laying the foundation for a unified order book across all chains which is quite important.

So basically fair combinatorial batch auctions are breaking the winner takes all mold right if if you want to put it this way they are encoding scalability and fairness right into the mechanism they are just not more efficient they are more just yeah I'm a marketing guy so I had to make this one sorry uh yeah um anyway this is kind of crucial as defi grows right because users won't just want like fast and cheap we can we can still achieve but they will start to demand also fair and transparent.

So what does this mean on the ground? Well, it means that for traders we have better prices and consistent execution and and outcomes, right? For solvers, we have more ways to win and smarter bidding strategies. And for protocols, we have a sustainable way to scale without compromising on fairness or decentralization. Um, and we are only scratching the surface here actually, right? Because fair combinatorial batch auctions enable future ready features like crosschain auctions, like multi-user trade optimization or modular auction logic. Right? These are actually the building blocks of the next generation defy stack which is

composable which is intentbased and which is like fair. Okay. So what's cow protocol long-term vision? Well to make execution in defy not just performant but principle. Cow protocol wants to be intent aware wants to be fair by default. It wants to be modular and scalable, right? Fair combinatorial batch auctions aren't just a feature are let's say the way cow protocol sees the future of defy for the next decade. I would say to wrap it up um let's say that DeFi promised open markets right let's say

that openness is not enough uh we need to somehow embed fairness right into the the infrastructure right with fair combinatorial batch auctions we are actually embedding fairness and efficiency where it matters the most which is the the auction itself we are building a future where rules don't just just allow for good outcomes, but uh they guarantee them. Thank you. By the way, I've I've been told uh that and I know that cow is hiring. We are hiring for different roles, right? Uh in

particular, we are hiring for Rust engineers. So if you are a Rust engineer or you know Rust engineers this this is a very good time to raise your hands or speak with me or we have our HR lead Maria which is great by the way so you can chat with her even if you're not a Rust engineer if you're good talent this is a good time to to talk with our HR. Thank you everybody. [Applause] I could fall down.