A better BNS for Stacks 2.1

The blockchain naming system (BNS) will be upgraded with Stacks 2.1 mainly to fix a bug.

There is the opportunity to improve it even further. The following proposals have been discussed:

  1. Users can hold more than one name (https://github.com/stacksgov/sips/issues/37). This could be similar to redirects in DNS like un.org -> www.un.org
  2. Names are unique across namespaces. Namespace define a set of rules for names regarding fees and expiry, there is no semantic meaning to namespaces, therefore, we should use names without namespaces and make them unique across them. This would be similar to https://handshake.org approach.

If you have more aspects you would like to include in Stacks 2.1 feel free to post below.

Currently, there is no reason why BNS contract is in the genesis boot code other than to make it unique, isn’t it?


Other name systems like handshake or unstoppable domains reserve registered trademarks domains. Should BNS do the same?

We could make BNS names SIP-009 compatible.

1 Like

The reason BNS is in genesis boot code is because it is a core component of the system. Stacks from day 1 has always had naming built-in and to make changes to its rules something that the entire network has to agree on.

This doesn’t make any sense.

  1. Namespaces by definition bound uniqueness of names. If names are unique across “namespaces” you don’t have “namespaces” (plural), you have a single namespace.

  2. The handshake approach, if it hasn’t changed since last time I looked at it, is to sell top level domains (“namespaces”) and then have people run centralized registrars in those namespaces in the same way that Verisign buys “.com,” sells names in that same space and is the authoritative server for that name space. Each TLD is a namespace and names are certainly not unique across them.

  3. Semantic meaning to namespaces is given by apps, not by BNS. Example: The Hiro Wallet treats id namespace names as usernames. Another app or ecosystem of apps may do something different.


I think more than one name per account makes sense. Shared thoughts here: https://github.com/stacksgov/sips/issues/37#issuecomment-920951356

Names are pointers to key pairs so multiple names seems more like they are DNS CNAMES or just regular names with the A/AAAA record set to the same ip address rather than HTTP redirects.

Each TLD is a namespace and names are certainly not unique across them.

friedger.id can be a namespace as well, if I run a subdomain registrar. Not clear to me what the difference is.

Semantic meaning to namespaces is given by apps … Another app or ecosystem of apps may do something different.

So Hiro Wallet “bought” .id and defined its semantics? Should this be part of a SIP? What is the difference between .id and .btc names? Why would I want to own both of them? Only to prevent others from impersonating me? Wouldn’t it be easier if I would just own friedger?

Wouldn’t it be easier to just have one namespace? Or if we have more namespaces we would need a process to define semantics for them.

Namespaces define price and expiration policy. The process of defining this is through the method that creates the namespace.

How developers use names - my understanding of “semantics” - isn’t something you can define in code…it’s something that will naturally develop through convention. Hiro Wallet in this case has started the convention that a name in the .id is a username. It remains to be seen if other developers will adopt this convention or something else. This is something that will evolve naturally.

There was a too heated discussion about 1-to-1 vs N-to-1 name-to-address in BNS.

I just wanted to mention that Facebook, Microsoft and others allow users to login with email OR telephone number (names) to access their account (stx address). Is this a shift in how login will work in the future?

1 Like

BNS namespaces to me, do not provide any benefits other than multiplying the number of possible names.

The price/policy properties are meaningful if the namespace would be .cheap or .eternal. For namespaces like .tel or .btc the price/policy properties are irrelevant. I can define my telephone name as 12345.tel or as my-tel-is-12345.btc.

Developers do not and should not have an impact on which names users own.

Another aspect for improvement would be names for contracts:

What happens if I send a bad name like shittycoin.stx name to 3rd party token contract? It can’t be transferred out and no other name can be attached to the contract. Should all contracts call register a bns name on deployment?