Second price auction is broken for small orders since CIP-74

Thanks a lot to both @tokenwood and @marco_at_quasi for kickstarting the discussion (see also this post by @marco_at_quasiThoughts about second price auction in case of reverts ). I would suggest we try to keep the discussion in this thread and not split it into two separate ones.

Preliminary thoughts

A few preliminary thoughts on my end. Disclaimer: I am still trying to get a better understanding of the implications of CIP-74, and so i will share some thoughts, but nothing very conclusive yet.

Truthfulness

I will start by questioning this statement

This is not a second price auction anymore, it’s a first price auction.

The goal has always been to have solvers truthfully report their evaluations and not making them guess/try to learn what the competition is doing. I would argue this hasn’t changed with CIP-74. Say I am solver and I see an order that I can settle with onchain liquidity and generate $10 of surplus. If I know the rules of the game, and I am aware my solution will revert with 50% chance, I claim that my true evaluation is not $10, but rather it is $5.

What I want to claim here is that truthfulness doesn’t really mean completely disregarding the fact that nothing will move onchain, and it also doesn’t mean that I am optimistic and hope that losses/reverts/slippage here and there will be mitigated by me getting rewarded on other auctions. If I view each auction independently, then, as is also mentioned in the original post, I want to ensure my expected profit is non-negative. I don’t know the competition, i don’t control it, and ultimately, i shouldn’t care about it. I would even say that I should make a worst-case assumption of perfect competition, i.e., no rewards. In that case, i should bid such that even with zero rewards, i should be fine on average.

Of course, I acknowledge here that estimating the probability of getting negative slippage, or ultimately a revert, is a hard problem, but nevertheless, by only focusing on these and not caring about the competition does help maintain this sense of truthfulness.

Concretely, I would rewrite your original condition by setting base reward equal to zero. The penalty is capped by max(-0,01, -my_score), and so everything then is “controlled” by the solver and not the competition.

To make my point even more explicit, I would urge you to think of the case where the rewards would always be negative; ie. assume as a thought experiment that for every batch you settle, you need to pay 1 dollar to the DAO. Even then, one would claim that truthfulness doesn’t break; you should still aim for non-negative expected profit, which would simply mean that you need to reduce your bid by (at least) 1 dollar.

I feel this is an aspect that is still missing from certain solvers, although again, i acknowledge this is still not an easy evaluation to do, and also solvers can become carried away by more aggressive solvers that disregard this aspect. Nevertheless, I claim that more accurate (which in many cases would mean more conservative) bids, could lead to solvers winning fewer auctions but also becoming way more sustainable.

Impact on users

In practice, solvers have to set fees even higher to generate profit and be able to cover their costs. These fees will be reflected in prices offered to users which affects cowswap competitiveness.

I fully agree with that, and this is something that we should definitely think seriously about. Per batch viability on the protocol and solver side means that we push more costs to the users. I would still hope that our competition is efficient enough so that the impact would be minimal, and the benefits (very reliable and good executions on the vast majority of token pairs and volumes) would outweigh a small fee for the service provided.

Competition sustainability

At a high level, as @marco_at_quasi stated, the goal of the CIP was to finally get to a place where the competition over all chains the protocol is operating on is sustainable and is not a gamble, from the DAO’s point of view. And unfortunately, this has not been the case prior to CIP-74, where we observed profits in certain chains combined with significant losses/subsidies on other chains.

Of course, strong competition and good executions is still the primary goal, and I hope the CIP is not perceived as just a revenue-maximizing process.

Slippage

Regarding your points about slippage, I think it’s a very interesting topic and there might be more to look into. From a quick query we did, it seems that average you computed doesn’t apply uniformly to all solvers. Some solvers seem better at handling slippage than others, and this might have to do with: more conservative bidding, faster executions (first block instead of second or third for mainnet), reduced usage of buffers, trading meme tokens vs tokens with lower volatility etc. So I cannot really draw any confident conclusion from your query.

Concentration of rewards

This seems to be indeed a valid concern. We definitely not view 2-3 solvers as the only ones worthy of rewards; such a view is very dangerous as it can lead to centralization and in the long run, reduced and worse competition.

Next steps

Given your findings, as the core team, we commit to digging very seriously into all the data we have, so as to gain a better understanding of which buckets of trades (token pairs, volumes etc) have been more negatively affected by CIP-74, and try to work out a solution with solvers. If needed, a revision of CIP-74 will be executed by end of January or early February the latest. Specifically, we will definitely take the following into consideration:

  • modifying penalties
  • allocating part of revenue to bring back consistency rewards that will reward solvers that reliably provide good (even if they are not winning) bids.
  • making the auctions even faster so as to reduce the effects of volatility.

Comment on @marco_at_quasi’s post and suggestion on reference score

Given what i mentioned above, the reference score should, ideally, already account for the revert probability, in the sense that each solver should bid its expected score and not the “full score”. In practice, this doesn’t happen, but still, as a solver controls their own bids, by incorporating this revert risk into one’s bid, one can ensure that on expectation they do not lose.

1 Like