When a name expires, it goes through a 90 day grace period, after which it becomes available for general registration. To prevent it becoming a race to register, a ‘temporary premium’ is attached, starting at $2000 and diminishing to 0 over 28 days. Done properly this results in a dutch auction for the name.
When the premium was set, $2000 was roughly the 98th percentile of all auction prices for the short name auction, and seemed like a reasonable starting price. Today, we’re seeing multiple reports of names, particularly 3 character names, being snapped up by bots the moment they become available at the maximum premium.
Long-term we can improve the mechanism by setting the initial premium based on the base price of the name (so 3 letter names start off more expensive than 5+ letter names), and by introducing a nonlinear pricing curve (for example, having the price diminish by 1% per hour for 28 days). In the short term, however, I’d like to propose setting the initial premium to a much higher value, which we can do with a simple transaction from the DAO account.
Setting the price will require some research. We need a distribution of sale prices on the secondary market, and some indication of when in the premium period names get bought - and how many get bought more or less instantly.
Is anyone up for researching either of these, so we can start to formulate a sensible start price?
There is a LOT of great discussion on this on a recent Twitter thread. I’ll point to my threads in the discussion:
I think after everything I find myself agreeing that a Dutch auction is still the best and most fair option we have here. Or it’s the worst option except for all the others
I think we should just go with 50kUSD as start with linear decrease
that is same mechanism, but it will make the “dynamics” more sticky, more glued sort of, and will reduce the pace for everyone on the market, raise the bar above highest expectation and have some future proofness
If the price is set at a point significantly above the ceiling for speculative buying/sniping it will reveal the point at which buyers are willing to enter the market (without relying on secondary market data) and create a lag that ensures everyone has a fair sho
Using bigquery I identified a total of 2798 names that were bought during the temporary premium period. 340 of those (12%) were bought in the first hour they became available. A histogram (hours since release on the x axis, count of names registered in that period along the y axis) makes the situation clear:
The spikes each August correspond to when a lot of names that were first registered under the initial auction registrar exit their grace period.
To me this clearly shows we need to increase the maximum premium, and in the longer term, use a nonlinear function for the auction, since many names get sold at the lower end of the curve.
Determining exactly what the start price should be is trickier; I’m going to try to merge this with opensea swap events and see what I can learn from that.
I suggest making the price decline non-linear so that it can basically start at infinity, and then ramp down to 0. The price should also step down by the smallest possible increment, maybe every .001 second. Price should match demand which is organic and has no upper bound.
I was only able to find a dozen examples of flips using onchain data:
Row
label
start_time
delay
price
transfer_time
transfer_delay
flip_price
1
top
2021-03-08 22:43:12 UTC
23
2639.06
2021-06-14 12:28:43 UTC
140505
8912.87
2
finanzamt
2021-04-06 08:58:31 UTC
5
2010.80
2021-06-20 15:28:51 UTC
108390
20.86
3
punk
2021-05-01 11:46:10 UTC
4
2159.60
2021-07-15 14:53:56 UTC
108187
85636.96
4
somniumspace
2021-08-12 07:10:32 UTC
3
2002.15
2021-12-19 12:50:08 UTC
186099
12524.11
5
boy
2021-09-08 17:51:00 UTC
2
2638.42
2021-11-19 08:19:03 UTC
103108
51920.75
6
pig
2021-09-08 18:11:40 UTC
2
2643.25
2021-10-10 23:42:12 UTC
46410
3485.31
7
she
2021-09-08 21:29:11 UTC
2
2645.49
2021-11-02 16:34:26 UTC
78905
17401.93
8
she
2021-09-08 21:29:11 UTC
2
2645.49
2021-10-14 18:18:53 UTC
51649
1740.19
9
our
2021-11-17 05:54:51 UTC
2
2644.44
2022-01-04 19:52:45 UTC
69957
11641.55
10
titties
2021-12-09 22:35:40 UTC
2
2010.89
2021-12-20 16:55:25 UTC
15499
4185.10
11
pop
2021-12-22 17:07:35 UTC
0
2640.85
2022-01-02 05:37:57 UTC
15150
40113.83
12
ian
2021-12-31 10:51:34 UTC
0
2639.33
2022-01-01 02:04:31 UTC
912
22758.63
‘delay’ and ‘flip_delay’ are in minutes, and prices are in USD at the time the name was reregistered. The top flip price was punk.eth for $85k, and in total the profit from these 12 flips adds up to ~$231k USD.
Obviously there are names that have been bought and listed but not sold yet - but I can’t fetch those purely with onchain data.
It’s also worth noting that although short names are disproportionately represented here, they’re not exclusive; ‘somniumspace.eth’ went for $12k.
Based on this, and our short term abilities, I’d personally recommend upping the initial premium to $100k. That gives a decay rate of $150/hr, which still gives a reasonable time period for buying lower value names as they reach the end of the period.
I agree - though I think an exponential is more viable, having the price start at, say, $10M, and diminish by 2% per hour gives a final premium of $12. Steps would be continuous, of course, rather than once per hour.
However, developing and deploying this will take time, and we should start by doing the thing we can do right away - bump the start price for the linear auction.
The goal I think should always be that a name is never bought using a bot in the first second. I am not sure that $100k is large enough to guarantee this over the next couple years. It’s a lot better than $2K, but I can easily make a case for how many names that are possibly going to expire soon are already worth more than that to a bullish investor.
It’s not, but we need a price that doesn’t make the lower end go by too quickly, and that we can implement now. A longer term solution is to use a nonlinear function.
I would rather settle on an amount that makes sense numerically; we can’t expect everyone in the DAO to educate themselves on the details of the secondary market. Given the information we have, $100k is above any of the flips we’ve seen, but not so far above it as to be outrageous. $50k would be enough for all but two of the flips.
It’s a trade off for sure, but I think bots beating out users on the app is the main issue. I have experienced it and it really sucks, and it’s what people are complaining about on twitter.
The important part I wanted to point out here is: As part of this, I would propose also expanding on “ensure everyone has a fair opportunity” in the UI as well to make it clear why the initial price is so high. Maybe explain what a Dutch auction is, link out to a core team blog post / wiki articles / etc.
Like: “1 MILLION DOLLARS?!?! ENS has just been taken over by greedy devs!”
Try to preemptively address the complaints that I can already see coming, through good documentation and UI.
To add to @nick.eth’s point on using non-linear pricing, I’ve made a desmos calculator where you can change some variables for a potential exponential function. I’ve set the default values to what I think might be a good function to use.
I imagine there is increased gas cost for using a complicated exponential.
Would a good tradeoff be to do two piecewise linear functions? First dutch auction would be one hour and be from the high prices discussed down to maybe the current premium of $2000. Then the rest of the time period is the much slower linear decay in premium?