Increasing the temporary premium start price

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?

7 Likes

there is this of the top of my head

2 Likes

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 :slight_smile:

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

2 Likes

I like this.

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

Some stats:

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 number of names bought during the temporary premium period has lately been on the uptick:

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.

2 Likes

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.

2 Likes

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.

We can have a vote then and just give people some options. Maybe $250K, $100K, and $50K?

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.

Absolutely - but I don’t think that will be a problem if we set the price to $100k while we develop a nonlinear pricing oracle.

I put some additional thoughts on the Twitter discussion about this: https://twitter.com/serenae_fansubs/status/1478853162333261833

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.

2 Likes

Absolutely. This is a good point, and something we should definitely head off at the pass.

2 Likes

UD have lots of domains listed for high prices.

So I don’t think it’s an issue.

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?