During our last BNS Working Group meeting we decided to put forward a Proposed SIP to fix bugs and make improvements in the current BNS naming contract and make what we think will be non-controversial improvements to BNS for the Stacks 2.1 hard fork.
We will post future Proposed SIPs for what we believe are more controversial improvements that some of us believe should also be included in the Stacks 2.1.
Many of us also have a vision for BNS of something much more than it is today. We also hope that this Proposed SIP will be a starting point to discuss what we want to see from the future of BNS and who is interested in working on it.
When BNS names are registered, STX tokens are burned to pay the registration fee for the name.
When names are renewed, it is intended for registration fee to be burned again. This is currently not happening because the
name-renewal function is missing a call to the
stx-burn function. Currently names can be renewed for “free” by only paying the transaction fee for the contract call.
As it exists today, the
name-renewal function takes an argument for the number of STX to burn and checks to make sure that the tokens to be burned are adequate. After doing that check, it does nothing further with the tokens. We proposed fixing the
name-renewal function by adding a call to
stx-burn to burn the tokens.
name-renewal function takes an optional
new-owner argument to allow the name to be transferred to a new owner upon renewal. Currently, this argument does not function as described. It currently checks if the
new-owner can receive a name but then fails to call the
The comment on the
name-renewal function provides the following example:
; Depending in the namespace rules, a name can expire. For example, names in the .id namespace expire after 2 years.
This examples says that names in the
.id namespace expire every 2 years when in fact they expire approximately every 1 year. This comment has caused a large amount of confusion as name owners thought that they had an extra year before needing to remove this name. Propose removing this example from the comment.
Names are the original NFTs. Conformation to the SIP-0009 NFT standard would make BNS names behave the same as other NFTs in our ecosystem, simplifying wallet, tool and application development.
Given that many users of the ecosystem have hardcoded the BNS contract’s address and the challenges behind migrating state from one contract to another, we propose that these changes be made by hard forking the existing BNS contract at the existing address in a way similar to the way updates to the POX
contract → consensus algorithm were deployed and that this occur with the network upgrade to Stacks 2.1.