Hello Stackers,
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.
BNS Bugs to Fix
Names can be renewed for free
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 thestx-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 new owner argument does not work
The 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 update-name-ownership
function.
Remove incorrect info in comment on line 728
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.
Improvements
Make BNS conform to SIP-0009 NFT standard
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.
Implementation & Deployment
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.