BNS Upgrade: renewals

This post is part of a larger effort to discuss potential features to be included in an upgraded version of BNS. Please see the megathread for more information.

Proposal: Implement the following changes to renewal functionality:

  • Require payment for renewals
  • Set expiration to period after current expiration
  • Allow paying for multiple renewals at once

Require payment for renewals

The current BNS contract doesn’t actually require any STX to be spent when renewing a name. This is not the intended functionality of the contract, but is a result of a missing call to stx-burn?.

This results in renewals being free, except for the transaction fee.

In addition to a good pricing formula, requiring payment for renewals is key to maintaining a fair market. Without paid renewals, the market for names is too heavily favored to early users, especially those who intend to “squat” names.

The proposed change is to implement the originally intended renewal fee structure, but to actually burn the STX required. The price of renewal will stay the same, which is that the price of renewal is the same as the cost of registration.

Set expiration to period after current expiration

In BNS, each namespace has a “lifetime” property, which refers to the length of time (in blocks) until a name expires.

The current logic for changing a name’s expiration after renewal is to set the new expiration to be now + lifetime. This proposed change would set the new expiration to be current_expiration + lifetime.

As an example, using the .btc namespace, which has a lifetime of ~5 years:

  • Alice registers alice.btc in 2023. The name will expire in 5 years (2028)
  • After 1 year (in 2024), Alice renews the name

In the current BNS contract, Alice’s new expiration will be in 2029 (2024 + 5). This proposal would change this logic, such that Alice’s new expiration would be 2033 (2028 + 5).

The reasoning for this change is that it removes the pressure of waiting until expiration to renew a name. Currently, a user who proactively renews a name is “punished” by needing to renew a name sooner than a user who waits until the last second. Incentivizing earlier renewals should result in less accidental expirations.

Allow paying for multiple renewals at once

As explained in the previous section, when a user renews their name, the name’s expiration is based on the time of renewal. If a user pays for a renewal twice in the same day, the second renewal makes no difference to their final expiration.

By allowing users to pay for multiple renewals at once, this should result in a similar result of lessened accidental registrations.

This is the way to go.

All makes sense Hank, my 2 cents below:

Decided to delete this as I’ve repeated myself and more of the discussion on fees/renewals is taking place here: BNS Upgrade: .btc pricing changes - Renewals comments also Hank.

Agree with multiple renewal & renewing early logic.

I also think the STX fee for BNS 2.0 shouldn’t be burnt, I think it should go toward the BNS DAO to help fund initiatives, marking campaigns, development etc etc. There should be a degree of autonomy that isn’t wholly reliant on Stacks/Stacks Team.

I’m personally not a fan of renting Domains/Identities as Web3 is about ownership and you don’t own something you have to renew. That being said. I don’t have an issue leaving BNS under a renewal model and increasing the fees for renewals. My only input is that current users terms should be honored, as that was the agreement was when purchased.

I’m on board with all of these. Users expect multiple renewals to be additive.

YES! This is incredibly stressful and punitive for users. Let’s fix it!