Registration duration as a price signal


At the workshop last Friday, Cigdem Sengul suggested a novel new way of determining rent prices: by measuring registration period. We would set a target registration period - say, 2 years - and use negative feedback to adjust the prices to target that. As a result, registrations for short periods would reduce the cost-per-year for a domain, while registrations for long periods would raise it.

Implemented well, this seems like it will provide a good, authority-independent means of setting rent price. There’s a few properties that seem desirable:

  1. Repeatedly extending a domain’s registration should have equivalent effect to extending it once to the same total length. Eg, 10 extensions by 1 year should have equivalent effect on the price to 1 extension by 10 years.
  2. The effect on the price should be order-independent: The price after a 10 year extension followed by a 1 year extension should be the same as the price after a 1 year extension followed by a 10 year extension.
  3. Registering domains for short periods in order to reduce the price should be unaffordable.

At a glance, #1 can likely be implemented by either subtracting the effect of the remaining duration from the price before adding the new duration, or by treating the price as the area under the curve between the current expiry date and the new expiry date, and integrating.

Does this seem like a good mechanism? Any thoughts on other desiderata, or how this can be structured mathematically?

Determining a fair rent model

Generally I like the idea.

  1. & 2) sound fair. But should only be like that if they are extended within the same price cycle? E.g if i renew one one year this price cycle, and then 9 years the next, the price cycle would only take into account the 9 year renewal this cycle. The prices will be different each cycle so the algorithm should reflect that?

  2. How do we define unaffordable? What is the attack vector? Is it just when someone renews a ton of short term domains to bring the price down so he can setup his domains for long term?

It doesn’t make sense to make 1 month rental more expensive than a year of rent, so it could only be equal to or less than the price of a year. I guess it would also depend on how the rental algorithm determines the price

Other things i’ve been thinking about is:

  1. How quick of a feedback loop should we have? If it’s too long the ETH price could be volatile enough to make domains too cheap or too expensive. A year seems too long. Somewhere around 2-6 weeks comes to mind as a gut reaction. Even if it becomes unaffordable in the short term, you could wait a few weeks for the algorithm to adjust the price

  2. Can the feedback duration be changed in the future? I guess this would be a centralised solution, but if we don’t leave this in how do we know if we have the most suitable duration first time around.

  3. Could the duration self regulate based on rolling averages of the rent. If the volatility is low, then the duration becomes progessively longer each time?


I’m envisaging price as being continuously variable. If the other properties are satisfied, then it doesn’t matter what order you apply registrations in, so it shouldn’t matter how long ago you last renewed when assessing the impact a new renewal has on the state.

The attack vector is someone who owns a lot of names registering a lot more for a short period solely to drive the price down so they can renew the ones they actually want for a lower fee. ‘Unaffordable’ here means that we can either state that it’s never cost-effective to do that, or that it requires you to own a very large number of names before it’s cost-effective to do so.

I was also assuming that price would be linear - it’s $x per year, regardless of how many years you extend by.

This will definitely need simulation and tweaking. I agree that we should make the rate factor something that can be adjusted, at least in the short-term.

That gets a bit tricky - how quickly do you make the rate of change adapt? You end up with higher and higher level knobs to adjust, which are harder to reason about.


This could get overly complex quite easily. I like a simple approach of something like:

  1. Calculate average duration for domains registered within a time window (eg 2 weeks)
  2. If it’s greater than X years/months, ratchet cost up by y%
  3. If it’s let’s than Z years/months, ratchet cost down by y%. (Z is less than X)
  4. If it’s between Z and X then do nothing.
  5. If there are less than some low number of domains registered than ratchet cost down by y% regardless.

It’s pretty blunt and may take a while to respond, but I think the main issue is dealing with orders of magnitude change in price over long period.


There’s a whole field dedicated to this - feedback control. What you’re describing is pretty close to a proportional controller.

I’m presently reading Feedback Control for Computer Systems; hopefully it’ll provide some useful material.


I really like this scheme, as it encourages stability of the system: we want people to have domains for years. While I agree that 2 years seem a good goal of the system right now, I would argue that we should slowly increase that to 4 years as the system gets more stable.

But how would the price be paid? If I register for 5 years, am I paying the current year rent * 5 or will I be locking up ether and the rent will slowly be subtracted over a period of 5 years?

Because if it’s the former, then I fear this would become a bet on the price of ether, not on how likely you will still want that domain after a few years.

But if it’s the latter, my fear is that I don’t really see any correlation to volatility, specially if the volume of renewals and registrations is low. Let’s say I registered a domain for 2 years at a rate of 0.001 ether when Eth price was $1000, so equivalent of $10 per year. If Ether dropped to $200, is there a huge incentive for people to start registering longer names because it’s now “cheaper”? Or if suddenly the price of a domain raises from $10/year to $100/year just because price volatility, is there a large movement of people registering shorter duration of names?

I would argue that the opposite would happen: if the price of ether correlates somehow to the amount of faith people have in the future of the ecosystem and the amount of users, then a rising price would correlate with people wanting to register names for longer duration, while a falling price would mean less people registering names at all, or registering them for only a few years. Which begs the question: if few people are registering names the quality of the “duration” signal becomes sparse and unreliable, which in itself could be a signal, so maybe there’s a threshold for low amount of registrations that would start applying a discount on the price?


It has to be the former, realistically. People won’t want to deposit funds if they don’t know how fast it’s going to be burned. Charging at renewal time and making rent non-transferable also simplifies the system, since you don’t have to worry about people doing arbitrage or speculation.

I don’t think that’s a problem, as long as it also regulates rent prices to a reasonable range.


Hello Nick,
Thank you for the write-up. Yes, it captures my idea.
I was also thinking about how to adjust the feedback interval. Indeed, use of control theory would be relevant.
The first thought that came to my mind was TCP-like control, i.e., the way TCP controls RTTs, a moving average of durations can be calculated. Then, the way TCP calculates RTOs, the feedback interval can be selected to make a price adjustment.

For the specific price adjustment, the variation from the desired duration length (delta) can be used as the adjustment factor. I will try to go back to my control theory books if you do not come up with it sooner.


But people don’t want to pay something for a year and risk it being 10x the price. So even if I’m 100% sure that I want to own a name for 10 years, if I believe there’s a chance ether price is going up, then it makes financial sense to register it for short durations and then keep renewing it, via a bot, so you’re losing the signal.

What about a middle ground? By depositing a yearly rent * N in ether, you are guaranteed to own that name for N years. During that period the year price is adjusted and recalculated and if in the end the yearly price falls down (either due to fluctuation of ether price or due to lower demand for ens domains) then you get the difference back?

If you believe in the long term value of ENS and Ether, then you have an incentive to make long registration periods, because you’re guaranteed to take some back if your bet is wrong. If you’re not sure about either, then you have an incentive for a shorter period. If people are losing faith in the system, the price goes down, if they are optimistic, the price goes up.

I’m not sure it won’t end up creating wonky incentives: I believe there will be a positive correlation between ether price rising and adoption of ENS (more people joining the ecossystem, more users needing names, more apps, more people buying things in it, more need for ENS) which might mean that as ether price rises, the ether cost of domain rent will also go up, meaning that prices will raise exponentially, which is an undesirable property IMHO.


I don’t think that’s the case. If people think the price of ether will go up, they should buy more ether. They shouldn’t react by not registering domains - they can always replace ether they spend on that, the same as they can buy more ether.

That would provide an effectively free way to manipulate the price - just register lots of domains, then claim your fees back.

On the other hand, Ithinking more about using duration as a price signal, I’m not so confident it’ll be stable. If, say, everyone registered for a year all the time, that would continuously drive the price down - and it’d be self-reinforcing, since knowing that, nobody would want to register for longer, since it’ll be cheaper next week. Likewise, if everyone registered for a long period, people would continue to do so, as they would then always expect the price to go up.