Megathread: BNS upgrade discussion

Ever since the launch of Stacks 2.0, the Stacks and BNS community has engaged in discussions for what a BNS upgrade could look like. The BNS Working Group has made an effort to gather these discussions and contribute a set of proposals for discussion.

If you have feedback or something to discuss about a specific proposal, please respond in the respective proposal’s thread. Feel free to respond to this thread with overall feedback and suggestions.

The goal of these proposals is to focus solely on changed functionality. There are other topics, such as how these proposals can be decided on and how a BNS upgrade can occur, but those topics will be introduced at a later date.

Individual topics:

SIP9 Compatibility
More than 1 name per address
Managed namespaces
Registration flow
String data structures
Zonefile resolution
.btc pricing changes

Thank you for sharing this @hank!


Thanks Hank. I’ll read these topics and share my feedback, if any.


Thank you Hank. I’ve made some comments and will continue to review and give feedback.

1 Like

Great work Hank! Left a few comments also. :+1:

1 Like

The only thing need to do is to fix bugs, which not need change the BNS contract itself.

SIP9 Compatibility:

CryptoPunks doesn’t hard fork to support ERC721.


The function isn’t that good. Many attacks in Etherum are caused by approval(e.g., phishing website, forget to cancel approval, approved contract has bug).

Currently, user won’t lost his name even when login in a phishing website. Because if attacker wants to steal his name, post-condistions will show that and user will refuse to sign.
However, if attacker calls the approval function only, user won’t realize that and probably will sign it, which leads to his name stolen.

Besides, marketplace isn’t a big thing. User can buy a name even it’s listed on another marketplace logically, user can also bid names in the marketplace, or upgrade to BNSx for convenience. In the future, there will be an aggregate marketplace probably.

More than 1 name per address:

rainer‘s opinion is convincing. BNS is a namespace ecosystem, rather than only support 1 namespace like ENS.

Managed namespaces:

Many things can be done by deploying a manager contract. It’s not good to add such specific and complex logic, which will also introduce extra attack vector.


  1. Require payment for renewals:
    Can be fixed without change the BNS contract itself.

  2. Set expiration to period after current expiration & Allow paying for multiple renewals at once:
    Probably better, but there are some tradeoffs. On one hand, it can help the namespace owner earn more, and reduce the probability that users forget to renew their names; While on the other hand, suppose situations as below:

    • Namespace owner set a wrong price(too low), then attackers can register/renewal plenty names to expire many years later.
    • Namespace owner wants to change the price 10 times higher for 1D/2D names, but founds that all these names have been renewed to expire many years later.

Registration flow:

The namespace owner can add logic in the manager contract if wants to forbidden front-running.

String data structures:

It’s better, mainly a UX improvement.


Can deploy a zone-file manager contract(if need).

.btc change:

  1. Change the namespace’s lifetime:
    People register and trade .btc with the promise of 5 years renewal period, changing to 1 year is more like robbery. DON’T BE EVIL is a basic principle when make proposals.
  2. Change the pricing formula:
    Need an accurate vote system to make sure the change is fair rather than decided by several people.


A namespace owner can add logic in the manager contract if like. Not need add such complex logic into BNS.

At last, I'd like to point out that(especially for 1-1 vs 1-N):
Anybody can deploy contracts and create his own name system. If it attracts the most people, it will be official certainly.

Do you have a recommendation for how to fix bugs without making changes to the contract? Unless I’m missing something, I’m not sure how you could do something like make payment required for renewals without modifying the contract.

Thanks again @hank for this and to everyone that commented on all the threads.

At tomorrow’s BNS Working Group meeting, let’s plan to discuss next steps and then any remaining time on the call can be used to further discuss the contentious proposals here:

mainly .btc pricing changes and multiple names per address.

We’ll also try to record the call for those that can’t make it.

Meeting details are here: BNS - New Internet Labs

Hey guys, I’m Pedro and I am a blockchain engineer joining the Bitcoin and Stacks ecosystem. This work group interests me, how can I help out? :call_me_hand: