Nice that work on the contract side is almost done. And Alex to be able to get rid of the limited amount of bids is important because this makes the token sell much more accessible. (For a sale like API3 $23M/1000 minimal bid size would be $23’000, very high)
Two things:
Fee:
I’m strongly opposing the idea starting with a fee set to zero:
We start with a decent fee (1%) because lower the fee will be not a problem, but raising is not very well-received.
A fee triages serious costumers from freeloaders. Freeloaders generate a lot of noise but do not help us in any way and even may be a reputation risk.
This is not a DEX, it’s a one-time event. Project, if they only pay fee in the sold token, only have opportunity cost to generate this out of free air.
My experience from my years owning a small business: you have to set a standard. Most costumers will accept the price as set. We better have a fee, and make some form of payback as a discount then having no fee at all.
Bouncer has 1.5% fee on the pair, we have got a reputation, and they are allowing permissionless IDO for shitcoins. (The canceled Aluna Social had plans to use Mesa and Bouncer simultaneously)
Project which are doing token sale on centralized platform pay hefty fees, up to 10%
How we take fee?
For the DXdao taking the fee only in the sold token is an issue because Mesa should fit in an overall strategic play, and this is the play about liquidity.
Move earned fee as liquidity to Swapr
At the end of the auction, the earned fee on the IDO pair is forward to a new created swapr pool. This allows instant trading after the sale closes.
Because we are both DAOs and treasury management is slow, this should be done by the smart contract.
Benefits:
The IDO project having an instant working market
swapr having the chance ending up as the first and deepest pool of new traded coins
This benefits DXdao and GnosisDAO earn trading fee on the trades. Because liquidity is thin and trading volume high, trading fee in early hours of a pool can be quite high.
We can’t sell the fee into the open market anyway. IDO Projects would not like the additional sell-pressure.
GnosisDAO can withdraw their LP token at any time and do with the liquidity whatever they want.
If we take fee, but only on the selling token, we can’t do this. If you have enough capital and speed, you can just do this manual by hand. DXdao can’t be quick because we have to vote on-chain, and we are more limited than GnosisDAO with our capital.
As reference the fee on the API3/ETH pool on uniswap:
I think that the speed argument is not valid, as the dxdao could prepare the funds already beforehand and separate it into another contract, from which it can be called quickly by anyone.
The “capital efficiency” is trade-off against the overall liquidity provided within swapr. If dxDAO would provide their own stablecoin funds + fees to create this markets, then much deeper liquidity can be generated. If you guys want to have this competitive advantage of “first deep pool”, then I guess you guys should do this this to get a better headstart.
Generally, I like the simplicity of just charging one token: the one token the project generated without costs
But if you don’t know the sales price, the DXdao does not know how much capital we need for this. We could send excess capital and then withdraw, a lengthy process for a DXdao. The ratio of the token must be the ratio of the sales price which then is the deployment price for the new pool.
Getting both tokens would be more easy because the ratio is set. It’s just more where the logic for this is done.
Because also with only one side fee, we could start a pool. There is even a way to do this almost instant:
Directly after the settlement we take our part of the fee, and sell half of it for the same price as the closing price, then we start a pool. (My bet is that there are always people who miss the price and buy for closing price after the sale)
Yeah, I totally agree that it would be easier for you guys if our contracts would be doing it already. Though, personally, I don’t think that these are issues that can’t be overcome with an additional “adapter contract” that checks the received fee tokens, the auction price and the reserved stable-tokens and then calculates the amounts to be put into the pool.
Charging tokens on both sides has the disadvantages that we charge “real money” and not just “created tokens” from the customers. I think this is a really strong reason to not charge a fee on both sides, additionally to the lower complexity and saved gas costs.
Not charging fees from investors can also be seen as a copycat protection. We have seen projects asking their community on input about where to conduct their IDO (and taking that feedback seriously). Even if someone cloned the EasyAuction contracts with 0 fee, from an investor perspective there would be no incentive to prefer that version over the original one.
The current spec proposal allows to cancel orders.
This is a nice feature, as it allows to increase the bidding price and it allows to cancel misplaced orders. Though it opens up one possible attack vector: A whale could put in huge orders at ridiculous prices, such that the project seems to be overvalued. In such a case, no one else would try to bid. Then, shortly before the auction ends, the whale cancels all its orders and … buys the IDO token cheaply via orders placed at a lower price.
We could counter this attack, by not allowing cancelations of orders. Alternatively, we could allow only for increasing the bidding price, but not canceling an order completely. Wdygt?
Yeah, I like that. I think @martinkrung proposed something similar. He also mentioned that we could charge a fee for canceling orders shortly before the auction ends.
I like the simplicity of your proposal. I think it is very easy to communicate to customers. Maybe having different “stages” makes auction also more interesting.
I think not allowing cancellations at all might make people too conservative with their bidding.
But agree that allowing cancellation until the auction ends could make it too easy to manipulate.
So a two stage auction seem to be a good compromise although making it more complex.
First stage cancellation is allowed and at the second stage the auction initiator can choose whether to allow cancellation or not and what is the cancellation fee if allowed
While I was developing the backend infrastructure for the orderbook display etc, I also quickly adapted the front-end for displaying the orderbook. It’s hosted on IPFS here ( please use only in dark-mode)
If you wanna give this early prototype a try, you can get some rinkeby-DAI on mesa.eth and participate in the auction.
What about adding the functionality to have a minimum raise amount? Similar to Kickstarter it protects investors in case the amount raised is too small to make the project viable.
Yeah, it wouldn’t be to complex too implement and projects/customers might wanna use it. If there were some customers asking for it, I think we should go for it.