Continuous Clearing Auction

NoirCon 3 at Devconnect Argentina 2025 · 20 Nov 2025 · 29:48

Kite Liu argues that opaque, extractive token launches and onchain mechanisms rewarding timing or sophistication weaken fair price discovery. His proposed continuous clearing auction takes each bidder’s budget and maximum price, spreads demand across future blocks, and repeatedly clears released supply where aggregate demand matches it. In a simplified four-block example, early bidders pay less on average, while waiting reveals bid information at a claimed price cost; anti-sniping and incentive compatibility remain presenter claims.

Speakers

Topics

From NoirCon 3 at Devconnect Argentina 2025, hosted by Aztec Network.

Transcript

Good morning, GMGM. Thank you everybody here for taking choosing to spend your time at our third inaugural Noacord. Okay. Hello. Hello. Hello. Um hello everyone. Um my name is Kite. I'm a research scientist at Unisop Labs. I'm very excited to share with uh continuous clearing auctions with you guys today. Um we are very excited about continue clearing auction because we are really exploring this new mechanisms for this new price discovery ways and and fair onchain participations.

Um the the the issues with new and low liquidity tokens are um looking to build liquidity but this is primarily occurring on uh centralized exchanges before um with extractor fees. We have talked to um a lot of teams um that are that have in the past listed on centralized exchanges um centralized exchanges can charge up towards 10% of the token supply um just to work with them. Um this is in in separations of the professional market makers deal. Um the pro the professional market makers also ask um to take a large econ uh e economic gains from these teams. Um the

initial liquidity is often provided by these market makers. Um usually they do this system that they have um the team is going to loan some of tokens to towards these market makers and they're trying to ma manage the the initial u price um uh when it's listing on centralized exchange. Um but the issue is the market makers basically is in the role of dumping the tokens. Whenever there are any buy pressures um they're just going to sell the tokens for these teams. Um, it's also very OPAC in uh agreements that these are all of the details with the 10% I just told you, the the market makers deals. These are all OPAC agreements. Um, it's often unclear what's the details between uh

behind the launch. Um, usually this is biased towards insiders. Um, and there's just like a lot of uh uncleared um agreements behind the scenes. So these old pack markets with extractive middlemans. Um so ideally onchain solves this right. Um however what we uh what we do see um is there out of the all the current onchain liquidity bootstrapping models there are all shortcomings. Um let me try to go through them one by one. Uh when we when we think about airdrops um I guess the first word I'm thinking is like bot farming uh immediate dumping zero price discovery.

Um so there are academic research that are published in um um top finance journals um study all these air uh in in the in the past of the uh airdrop events. Um so what they found is that all of these airdrop events usually ends up with at the beginning of the market up to twothirds of the tokens are dumped immediately. Um usually these are not longtime users. These uh the average whole time of these tokens that got aird dropped is very short. Um and these really disrupt the market when the market actually hits uh starts the secondary markets and uh these airdrop because these are uh zero price uh zero price cells um

what happened is that whatever launch price of the market uh is not market tested that means that it's going to be highly dis disrupted um so airdrop is really not a good way to launch tokens. Uh when we think about fixed price sales, these are these are more common. Um these are all the common IPOs that we see these days. Um but but if we really think about price uh fixed price cells, the the the one issue with fixed price cells is what is that fixed price should be? Uh I think that might be the hardest question for some of these teams to ever uh do these cells uh is that what the price should be. Um there are two scenarios almost only two scenarios. You can argue that there's three. Uh the one scenario is if you overpric the token, right? If

you overpric the tokens, what happen is that people will not like to buy at this fixed price, but it's already fixed. So you can't there's nothing you can do. Uh then what's going on is going to you're going to be a lot under subscribed. um this is this is what happened these days that the the the large 1L that we're they were looking at that that they um their valuation is very high and then they're they they're they're having troubles um to subsc uh to fully subscribe to the 100%. Now the second scenario is that what happen if you under uh underpric it right? If you just price it super cheap um like what we see in the mega ease example they just price everything super cheap. What that would happen is that it will be super highly oversubscribed um

people would uh will commit so many e into these uh cells which is very inefficient systems and people who want to actually buy these tokens at a higher price are not able to do it. Um so um you can argue there's a third case that the fixed price the price is exactly at demand. Um you can almost imagine I have a I have a price lane here and then somewhere in the middle there's a perfect point and then you are throwing a dart and then it hits the perfect perfect point. It's very hard. It's never happened. Um so so that's the issues with fixed price. Uh you either overpric it or you uh underpric it which cause under subscription or over subscription.

Now there are other methods uh for example Dutch auctions. Um in Dutch auctions um these are slightly more complicated at auctions that the usually the price goes from up to down. The price uh drops over time. Um some people do um uniform price clearing. Some people do um pay as you go prices. Um but in general these types of auctions are very complicated. um in the equilibrium in the economics uh game theory you know strategies um that the idea is that you want to wait you want to wait until more informations comes in to make your informations um one example is that uh when Google did their IPO they did this kind of um Dutch auctions

um fixed price everyone just put their bid in um it's kind of like a Dutch way and then at the end they were clear at the same price the issue with that and there's research paper on about this is that with these kind of uh auction people only uh people just wait until the last seconds because there's really no incentive for them to review information early on. Uh that creates a problem because that's an in inefficient uh information re uh re uh review. Um so what that means is that these are real people are usually doing strategic waiting. These are professional uh what dominates these auctions. Um so that's the issues with Dutch auctions. And then we have our um lovely bonding curves um that that u a lot of the onchain methods

are trying to solve. Um the issue with those is that they are one-time settlement. Um that means they're very easily be exploited by MVVs. These are very timesensitive. We see on pump.com the seconds uh a market opens there's a bots coming in whenever someone buys they dump on them uh immediately. So these are all the the common thread of all of these methods we see is that these existing mechanism rewards timing and rewards some kind of sophistications over genuine valuation genuine belief uh on on the projects uh on these liquidity. Um so these create opportunity for for manipulations um very easy for people um uh to manipulate this market such that we it's really

hard to get immediate sustainable liquidity once we finish these initial liquidity bootstrapping. So that's why we have um come up with the CCA the continuous clearing auctions. Um so what we want is we want a better onchain approach which we want to prioritize fairness uh transparency credibility price discovery onchain liquidity and decentralizations. So what we mean for each of them is uh we we want these competitions these auctions to be on valuations not just time um or or technical sophistications. We just want uh at this level we want the fairness that everyone has a fair evaluations of the tokens. If the clearing price is going to below them,

they should be able to get the tokens. Um, there should be transparency. There should be real-time visibility into price discovery. We don't want off-chain settlements. We we want onchain uh information that people can actually see the transparent information all the time. We want credible price discovery. Whatever price set in those fixed price um cells are very opaque. We have no idea how these prices comes up. But but in in CCA we're going to find the final price reflects the actual demand that goes into this auction. Uh and there's there shouldn't be any manip manipulation on that price. Um we want it to be we want at the end of the day there will be onchain liquidity the secondary market that that we have a deep liquidity. Um that's why we want

some seamless trading uh with sufficient deps into uh onchain trading liquid uh environment and we want some decentralizations. We want no gate gate uh gatekeeping. Um so this is why uh this is what this unis swap CCA protocol has delivers. Um we claim that we we we we will fit all of these. And then in order to to tell you how we do that um let's maybe walk you through a very simple simplified um example uh of how this auction actually works. All right, let's imagine this is our setup. Um the token team is supplying a thousand tokens over a four four block auction. So this is only four block. Let's simplify this. Uh the team

is supplying a thousand tokens. We have four blocks. Each blocks has 250 tokens. Okay. So in the first block we're going to try to clear 250. The second block 250. Third block three 250. And then the last one is say. All right. So that's so that's our setup. That's from the team side. uh what the users uh need to do what these user action is that they are going to at any time of these auctions they are going to bid with their budget and their max willingness to pay price. Um so here for example we have Alex is saying okay I my my budget is $800 uh and I would like to buy um participate in this um if the price is under three.

All right. So, so that's what Alice that's all Alice has to do. All the rest are going to be the protocol mechanics. Okay. All the rest is going to be handled by the smart contract. So, what does the smart contract do? What does the protocol do? The protocol is first going to spread across all future auction blocks for Alice. What that means is that there are four blocks remaining in the auction. uh what the auction uh what the what the protocol is going to do is it's going to split the 800 LS budget into 200 200 200 200 each with the same max price of $3. Now where do I got the 200 from? So the $3 is the same max price that Alice has been saying about $3. Uh where does the 200 come from? The 200 is I I write 800*

1/4. Now, now 800 is the 800 we see that Alice's budget is, but where does the 1/4s come from? So the 1/4s is basically there's a thousand tokens from the team. 250 is going to sell in this uh period. Then basically that's one/4s of the tokens that the team is going to supply. That's where we got 14. So that's that's how we split um Alice budget $800 budget into four into four 400s across four different blocks. Um okay. Now uh what the protocol is going to do is protocol is going to define Alice ask in this block. Okay.

Now let's zoom in um let's really zoom in to that first block. Okay. We're we're only looking at that first block where there's 200 uh budget and then 3500. What happens there? Let's define the ask. Let's define the um what Alice is asking. Okay. Let's imagine it's a little blurry, isn't it? Um okay. Let's look at this point. What this point means is that if we're going to settle at $1, Alice budget is $200. That means Alice would like to get 200 tokens.

If the price end up to be $1, Alice won 200 tokens. Uh what about if the price is $2, which is this point? If the price is $2, then Alice has a budget of 200. Then Alice won 100 tokens, right? So it's just we're we're just expressing that in every single point what happened what what does Alice want and remember Alice says I would not participate if the price is above three okay so so at any point point down there that says the price is more than three like say $4 then Alice want nothing right Alice do not want to buy anymore because the price is way too high now okay so we can draw this nice line um that says for every single point that is

a price with some some tokens numbers that want. All right. So, so this line is simply as the the price times the price times the quantity equals to uh equals to the uh the budget budget Alice has. Okay. So, this is Alice. Um and we can nicely define Alice's want. Um let's let's say there's a second person, right? The the there's a Bob also bids in this auction. Bob has a lower budget, $600, but Bob uh is uh thinking that the fair price should be $4. So Bob says, you know, if the price is going to above $4, I'm not going to participate. But if the price is below $4, I'm willing to buy. Um so similar to

what we do to Alice uh that we draw this little uh pink line, we can also draw the line for Bob, which is Bob's willingness. Uh at at each point, at each price, we can know how much Bob wants. Um so the protocol again the protocol has handled all of these the the the user doesn't have to do any of these. The user only have to specify their budget and their max price. Then the what the protocol is going to do is because we know each person's uh want right we we we can welly define each person's want. We can define what aggregate want is. What that means is that is for example if we look at that $1 mark again right? So at let's $2 mark at $2 what happens? What what if the

price is at $2? Alice want 100 units and Bob wants um 75 units. So the total of two of them they want 175 units of tokens. Um so we can define these all once uh in this black line. Basically um if the price is above $3 then only Bob's once is there otherwise we have both of them. All right. So we can define these in the protocol. Um this is how we aggregate all the active bit bits in this block. Again this is only the first block in this this first block and this will be the overall demand for this block in for Bob and Alice.

So now recall that what what we have is we're going to we have this supply from the team, right? The team says there's a thousand tokens. We're going to we're going to uh split them into 250 250 250 250. Now in this uh block in this first block how many tokens do we want to release is 250. Right? So we're going to cross reference the supply in this block which is that blue line I'm drawing right now. That's how much how many tokens we're going to release in this in this block. So you will find a nice intersection point on this graph. It's always well defined intersection point.

um it's it's guaranteed it always exists um for for for for any demand and supply curve that looks like this. Um and you can find this nice little point uh is at 1.4. What that means is that if we set the price at $1.4 4. Then people want to want aggregate want is 250 units and um the supply is also 250 units and then we find a perfect equilibrium price that the demand and supply just perfectly match with each other at this point.

Again, this is only for block one. Um so what happened in this block one would be um this is a lot to read. I'm just going to describe you what's happening. Uh in this first block, we have Alice and Bob. They want some they they put in some budgets. They put in some max price. Uh we the the protocol mech uh the protocol will try to find a price that clears all the tokens. And that clearing price will be $1.4. In this case, Alice is going to spend all her $200. $200 in this period. And then uh she's going to get 142 point something tokens.

And then Bob is going to get 107 point something something tokens. Um and the total of them is going to be um 250 tokens. So this is what happen in this one block and then the protocol is going to say let me continue doing that until we run the full auction. Right? So so in each of the block what I just described happens uh with uh at the protocol level. Uh we're going to try to find a clearing price. We're going to clear these tokens to these users. Um something I want to point out at some point um for example at this block three at some point maybe we find that the clearing price has to be above $3. Uh what that means is that that's above

Alice wants right so so at some points Alice will stop getting filled because the clearing price is above her um max willingness to pay. But re uh if you look at the um the columns uh the the the rows before, you can still see that Alice got some fillings before we went out of her range. So, she's going to still get some um tokens uh when we were clearing uh below his maximum willing to pay. I'm not going to go through all the details uh in this table, but I just want to skip to here. um the mechanism the the smart contract is going to do it for every single block um that we see uh that we have in the

auctions. So so the the the actual usually the auction is going to be uh much longer than only four blocks within a minute. Um so usually that's going to be a much longer. So, so our our smart contract uh engineers are are are are brilliant to to design the system such that it's very efficient to to run all of these um demand and supply I just described to you uh very efficiently solving on on chain. Now this is the result of this auction if if we run all of the four uh blocks later. So what happened is that you can see um Alice uh want 800 budget was $800. She only got to spend 400 because at some point right

the the filling price is above Alice want so we stop filling Alice. Um but she still got to spend $400. Uh she still got 233 tokens uh as some lower price. So something I want to highlight of this result is that um lower bits um still get low allocations, right? Like like I explained, Alice still gets some allocations um even though she has low valuations um and it went over her price um mid auctions. Um the second thing is that if you bid early um there there's this early bidding incentive um that if you bid early, you're more likely to clear those lower prices. um clearings.

So, your average price is going to be lower. If you look at Alice and Bob's price here, um they're they're being lower than Carol and Dave, which um Cara and Dave enter in block two and three. So, they enter later in the auctions. Um that's why this Alice and Bob get a better average price because they enter early. That's the early incentives, early bidding incentives. Um, another thing we want I want to point out is that for the large but uh but late group, right, if the Dave entered at the last um maybe the third block uh w with a huge order of $12,000. Um so these if if you want to think about them as like whales

um if they want to hold their information until the very last minute uh what would happen is that their clearing price they will still get the tokens but their clearing price is going to be uh above the early arrival uh arrivals of uh Alice and Bob. Um so they can't really dump uh at this point if they if that's what they're doing uh wait until the last minute try to snipe or try to like place in a big um order and then try to dump on people. So that's not something they can do in this auction. Um so that's the overall um of how like one auction will do. Uh most of it is uh how the um protocol uh is going to handle this. Um the user only have to specify um uh their budget and their max price. Uh and from the team um

perspective all they need to do is to specify um some of the parameters we have set for the auctions like for each block how many uh tokens are getting released how long the tok uh how how long the release period should be. Um so overall um these are very uh incentive compatible which means that if you have a if you have some informations about the fair value of these tokens and then you you should probably be just be um truthfully uh reporting those um um yep. Okay, cool. So any questions?

>> Yes. How come? >> Right. Great question. Okay, cool. So, um let's take this graph as an example. I was saying that, hey, let's uh clear at 1.4. Um but Alice is willing to pay at $3, right? Um so why don't we just clear at $3. Um so the issue with that is that if um if we're clearing at $3, um Alice has a budget of $200 in this in

this block. So uh so we will give Alice um 66 tokens. Okay. Okay. And then how about Bob? Bob hasund and something $150 and at $3 then we give them 50 tokens. So that's a total of 116 tokens but then we have more tokens that we will that we want to release which is 250 than the ones that we can actually go out. Um so that's why we don't clear at the highest price possible but at a price that's such that demands perfectly match supply.

Oh, I see. >> Okay. Right. So, uh I'm let me try to rephrase and then you tell me if I'm correct. Um how do we actually do the search in the smart contract? >> Okay. Uh do you want to take this question Eric? Hi. Um, I don't know if this works, but I can just speak loudly. Um, I'm an engineer at swap. So, we work on this together. Um, the search is done every time something new.

Uh, you can see that from K's example, the the actual curve only changed when Bob joined. But if Alice is the only participant, the curve doesn't change. So when somebody new enters the auction, we basically take the current price. We know that the next price will tend to be closer to the current price than some arbitrary price in the future. So we basically look we look at the points on the graph where people have specified their max willingness to pay and we just check can we move the price up to there and if we can then we keep going. If we can't then we find a price in between and we basically show that um the operation is O of N on the number of

discovered prices in the auction um not on the number of participants. All right. Thank you, Eric. Um, any

other questions? >> This is the point of time you're wondering if you just explain it too well or it you explain it really bad such that no one can even answer ask a question. >> Yes. >> What would the ideal strategy be as >> um I think the ideal strategy should be if you have some understanding of what you think the fair value is. uh like you have this I idea of what the max price should be you should try to bid early in the auctions um if you don't um uh I guess there's two options one is that you can wait and see some information comes in you can see some other people's

bids coming in that's some information revealed to you and then you no more now no more informations about this auction then you can enter the auctions with submax price or um um however there's a trade-off with waiting and that's because there's a incentive to early bits. Um, and if you wait the the average clearing price will be higher, but that's the kind of the cost for you to uh receive informations from other bits. Um, but if you already know what the fair evaluation or the max willingness to pay price you have, it's just to enter as uh as early as possible.

>> Yes. >> Yes. uh Aztec is uh currently doing for their uh token distributions um using CCA. >> It it what is it? It is solidity is solidity. Uh yes there. Right. Okay. So, uh to answer the first question, the first question was uh what's the idea behind why do we do it like multiple ones but not just at once.

Um so, so the idea is that if we all do it at once like that kind of like collapsed to like a um standard uniform price auctions, the issue there is that you would never have people enter the auction before the last second, right? because there's really no benefits for you to enter the auction early. Um so there's really no informations to learn anything about and everyone just wait until last minute. Uh so there's a couple of issues with that. First issue is you will have this gas wall um that people are trying to get into the last minute and then imagine a well just come in the last minute. You would have thought that you got some clearing price but someone just bits and then the price just skyrocks and he was like I don't really want to do this. Um so that's

one. Uh and then the second thing is because of this because everyone trying to do it at last minute in in the game theory uh outcomes then uh the price uh discovery is really inefficient uh because your information is not coming in uh continuously smoothly but all at once. Um so that's the that's the reason why we want to do this like multiple ways and and continuously. Uh now the second part of question you ask why can we do something like continuous like why does this blocks? So these is just an simple examples of what what what happens. Um but uh for like four discrete blocks um but but in reality when you when you actually launch what uh Aztecs are doing right now it should

everything should be continuously um that means that every single block is like a a small uh percentage but it continuous be clearing uh some and then everyone's demand is also uh spread across all the time uh in between this auction. Yes. Yes. A block in the auction right here is just a block in Ethereum. Um and if you do it on Uni Chain, it'll be just a block on Uni Chain which is going to be very fast. All right. I think I'm on time. Thank you everyone from from attending. Uh you can find me uh and then chat we can chat offline if you have any other questions.

Thank you.