The only thing need to do is to fix bugs, which not need change the BNS contract itself.
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.
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.
Require payment for renewals:
Can be fixed without change the BNS contract itself.
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.
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).
- 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.
- 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.