BNS is not the only naming system in wide-spread use, nor is it the only decentralized naming system that implements human-readable, globally-unique, and strongly-owned names. This page describes some other naming systems in comparison to Blockstack:
Blockstack vs DNS
Blockstack and DNS both implement naming systems, but in fundamentally different ways. Blockstack can be used for resolving host names to IP addresses, but this is not its default use-case. The Blockstack Naming Service (BNS) instead behaves more like a decentralized LDAP system for resolving user names to user data.
While DNS and BNS handle different problems, they share some terminology and serialization formats. However, it is important to recognize that this is the only thing they have in common—BNS has fundamentally different semantics than DNS:
Zone files: Blockstack stores a DNS zone file for each name. However, the semantics of a BNS zone file are nothing like the semantics of a DNS zone file—the only thing they have in common is their format. A “standard” Blockstack zone files only have
TXTresource records that point to the user’s application data. Moreover, a Blockstack ID has a history of zone files, and historic zone files can alter the way in which a Blockstack ID gets resolved (DNS has no such concept). It is conceivable that an advanced user could add
AAAArecords to their Blockstack ID’s zone file, but these are not honored by any Blockstack software at this time.
Subdomains: Blockstack has the concept of a subdomain, but it is semantically very different from a DNS subdomain. In Blockstack, a subdomain is a Blockstack ID whose state and transaction history are anchored to the blockchain, but stored within an on-chain Blockstack ID’s zone file history. Unlike DNS subdomains, a BNS subdomain has its own owner and is a first-class BNS name—all subdomains are resolvable, and only the subdomain’s owner can update the subdomain’s records. The only thing BNS subdomains and DNS subdomains have in common is the name format (e.g.
foo.bar.bazis a subdomain of
bar.bazin both DNS and BNS).
Blockstack vs Namecoin
Namecoin also implements a decentralized naming service on top of a blockchain, just like BNS. In fact, early versions of Blockstack were built on Namecoin. However, it was discovered that Namecoin’s merged mining with Bitcoin regularly placed it under the de facto control of a single miner. This prompted a re-architecting of the system to be portable across blockchains, so that if Blockstack’s underlying blockchain (currently Bitcoin) ever became insecure, the system could migrate to a more secure blockchain.
A feature comparison can be found at the end of the Blockstack Naming Service document.
Blockstack vs ENS
ENS also implements a decentralized naming system on top of a blockchain, but as a smart contract on Ethereum. Like BNS, ENS is geared towards resolving names to off-chain state (ENS names resolve to a hash, for example). Moreover, ENS is geared towards providing programmatic control over names with Turing-complete on-chain resolvers.
BNS has a fundamentally different relationship with blockchains than ENS. Whereas ENS tries to use on-chain logic as much as possible, BNS tries to use the blockchain as little as possible. BNS only uses it to store a database log for name operations (which are interpreted with an off-chain BNS node like Blockstack Core). BNS name state and BNS subdomains reside entirely off-chain in the Atlas network. This has allowed BNS to migrate from blockchain to blockchain in order to survive individual blockchain failures, and this has allowed BNS developers to upgrade its consensus rules without having to get the blockchain’s permission (see the virtualchain paper for details).
Summary feature comparison
The following feature table provides a quick summary how BNS differs from other naming systems
|Globally unique names||X||X||X||X|
|Names are enumerable||X||X|
|Registration times||1-2 hours||~1 week||~1 day||1-2 hours|
|Subdomain registration times||1 hour (instant with #750)||varies||instant||~1 hour|
|Anyone can make a TLD/namespace||X|||||
|TLD/Namespace owners get registration fees||X||X|
|TLD/Namespace can be seeded with initial names||X||X|
|Portable across blockchains||X||N/A|
|Off-chain name state||X||X||N/A|
|Turing-complete namespace rules||X||X|
|Miners are rewarded for participating||||N/A||X|
 Requires support in higher-level applications. These systems are not aware of the existence of namespaces/TLDs at the protocol level.
 Blockstack Core destroys the underlying blockchain token to pay for registration fees when there is no pay-to-namespace-creator address set in the name’s namespace. This has the effect of making the blockchain miners’ holdings slightly more valuable.