Enabling .BCH domains similar to .eth with ENS

I notice that .ETH (using Etherum Name Service) domains generate billions in trade value. Would it be feasible to include .BCH (BCNS?) support next upgrade to enable domain.bch in a similar way?

Apologize for any possible technical misunderstanding on this topic.

Emilie

6 Likes

Interesting idea. You need to campaign for it more to bring it to public attention. I remember one Hackathon project that worked on it.

As I see it, the idea to add name resolution capabilities to BCH may be motivated by:

  1. In case BCH stagnates in popularity: it becomes addamant to add more features to attract users.
  2. In case BCH is already popular enough but has room to scale more: it may provide additional services, like name resolution. By adding new services it only improves the health of BCH by making it even more demanded and liquid. It makes BCH more competitive against alternative coins with name resolution.
  3. Improving the technology and UX of existing decentralized name resolution systems. By adding this feature, the technology itself may be improved by BCH devs if they have better ideas. Also, by being integrated to the other services BCH offers, UX improves.
  4. Providing a more robust ecosystem for a decentralized naming system. Ad-hoc cryptocurrencies that specialize in one service (e.g. name resolution) are more fragile because they have less use cases, less developers, less network effect, less security, etc. By incorporating the service in a mature general-purpose cryptocurrency like BCH, the service benefits from the security and popularity of the network.

I believe that point (1) will not be the case. There are many use cases that BCH can tackle that are of interest to current developers. Only in the event that developers run out of ideas to implement and those becoming unsuccessful would such a necessity of adding name resolution exist. And if that is the case, name resolution only will not save BCH.

Point (2) is quite plausible if it becomes apparent that users stop using BCH because they go to another coin which offers the same use cases plus name resolution.

Points (3) and (4) are of interest to those that care about name resolution. Right now, such users and developers are satisfied by systems such as Namecoin or ENS.

So, I don’t think this is going to happen in the near future. Such a system would be useful for things like mapping names to BCH addresses, but this is already covered by CashAccounts and CashID with a decent enough UX.

I’m writing another comment to give my opinion on current decentralized naming systems.

One thing I do not like about ENS is that it is not truly decentralized since the root is owned by a 4-7 multisig address, which controls all the system. Moreover, ENS scales poorly because it uses smart contracts.

I would instead suggest looking at Namecoin as inspiration, because it is fully decentralized and its codebase is the most similar to Bitcoin (what with being the first altcoin based on Bitcoin). It scales much better since names are just stored in the blockchain.

More differences between the two can be found here.

Now I’m going to mention two potential issues I see with Namecoin.

1. Squatting

These systems suffer heavily from squatting, especially Namecoin since it never had a benevolent dictator, like ENS.

Namecoin names are acquired by making a claim to an unowned name and paying a miner fee; the name is disclosed after it has been mined, otherwise miners would abuse the system. This system is first-come-first-served, which causes high rates of squatting. The mining fee is flat, that is, the fee is the same for all names.

After acquiring a name, the user owns the name forever, and he must renew his ownership once a year or so, by paying another fee. This serves as a recovery mecanism in case the user loses his private keys: if the user does not pay the fee after a year, the name becomes unowned again and up for grabs. Someone may acquire an owned name by buying it from the owner using an exchange.

I’m not that much against squatting: squatters at some point want to make a profit, so they’ll end up selling some of the names at some point.

But maybe there are other systems of name acquisition that have a fairer distribution.

One such system could be by staking and auctioning, instead of paying a flat fee:

  1. Bob stakes an amount of money toward an unowned name; this starts an auction for the name.
  2. The network notifies that this name is being auctioned. The auction lasts a certain time (eg 1 week).
  3. During the auction, any user may offer more money for the name. In that case, the time for the auction resets and another week must pass before the auction finishes.
  4. After noone has made a higher offer during the auction, the name is given to the last bidder, say Alice, and she cannot sell the name for some time or freeze period (eg 1 year).
  5. After the freeze period, Alice may decide to sell the name. Until she sells the name, Alice cannot recover the staked coins.
  6. From here it gets more complicated, as incentives must be taken into account. Should the new buyer be required to stake coins to the name? Which amount? How is renewal made?

This has the advantages that the barrier to purchasing a name is increased by the demand the name has, so squatting is reduced for popular names.

The drawbacks are that it is a more complex system, the auction process is less straightforward for users buying an unowned name, and the incentives are more difficult to follow (if Alice sells the name to another address owned by herself, and no new stake is made, then she did not lose money, only money was freezed for some time).

I think I prefer the flat fee unless someone finds a simple enough but less squatty alternative.

2. Name spaces

The content of a Namecoin name may include IP addresses, PGP public keys, onion site addresses, etc. This allows the same name to have multiple attributes to be used by different apps. However, to allow different users to own the same name but for different purposes, the concept of name spaces was introduced in Namecoin. Name spaces are top level names that are permissionless, cannot be owned by anyone, and in different name space the same names may be owned by different addresses.

By default, when a user acquires a name it belongs to the name space /id/. Alternative name spaces come into existence when a user explicitly chooses it when acquiring the name.

I would propose a different design however: instead of allowing top level name spaces, there would only be plain names at the root.

The names would be more powerful though: they would contain attributes (as they do now) but also other names, converting any name in a sort of directory, and creating an infinite hierarchy.

In the following Namecoin example, name spaces are indicated by /…/, names are in the next level, and each name has several attributes indicated by x: …

There are two different Alice in this example.

/id/ [unowned]
    alice [owned by the first alice]
        ipAddress: ...
    bob [owned by bob]
        pgpPK: ...
/n/ [unowned]
    alice [owned by the second alice]
        bchAddress: ...

In my proposal, this would become:

alice [owned by the first alice]
    ipAddress: ...
bob [owned by bob]
    pgpPK: ...
n [owned by the second alice]
    someOtherAttribute: ...
    alice [owned by the second alice]
        bchAddress: ...
        webSites [owned by the second alice]
            ipSite1: ...
            ipSite2: ...

In the Namecoin approach, the second Alice must:

  1. Check her desired name, and once she sees that it is owned in /id/, choose a different name space /n/.
  2. Acquire the name “alice” in the /n/ name space.

In the hierarchical approach, the second Alice must:

  1. Check her desired name, and once she sees that it is owned, she must acquire any name available, for example “n”.
  2. After acquiring the name “n”, Alice may acquire the name “alice” inside of “n”.

The second approach requires 2 purchases, but the result is the same: someone else could have already owned /n/alice in the first (name-space) approach. The requirement of buying “n” does not decrease the chances of the second Alice getting the name “n/alice”.

By allowing hierarchical names, this opens several possibilities: a project may buy a name “bchGame”, and then it may sell any name inside “bchGame” because the project owns the top level name. The conditions of selling could be permanent or just a lease. This allows creating and managing separate ecosystems and networks fully in control of the owner of the top-level name.

The limit in the number of names that there can be in the same level is determined by the allowed name size. Thus if the maximum size is large enough it would still not be difficult to find a random unowned name to then buy the desired name inside of it.


Worth mentioning:

Namecoin and ENS provide naming systems for what I call “brand names”, that is, names that must only have one meaning and that represent a user or entity uniquely.

However, there are other cases where multiple meanings for the same name are desired, which I call “common names”. Let’s say that I want to implement a decentralized wikipedia. The name “BCH” may have different articles written by different authors. So, when a user searches for “BCH” it can read different viewpoints, without censorship.

Another use is when searching for a file to download, for example the book “the bible” (this surely doesn’t have copyright). The results of the search might show several available files, all with the same name, and the user must choose one of them.

In order to disambiguate among the multiple results, users would vote by staking money in the result they believe is the most accurate, and when searching one would choose the result with the most staked money. Also, by incorporating a web of trust, a user would find which votes are more trustworthy.

More over, one can give additional names to the same file, even if they do not own the file, thus working like tags.

This is exactly what the LBRY blockchain does (except for the web of trust I believe). Its code is based on Bitcoin, so adding such features to BCH is certainly possible.

1 Like

Hi,

This is jeff from NBdomain (nbdomain.com). We have build a decentralised domain system which can:

  1. Support different blockchains( currently on BSV and working on other blockchains as well)
  2. Every domain is a NFT and be minted by the TLD owner.
  3. Fully decentralised once it’s minted.
  4. The domain name can be used as a on-chain DB and updated only by the owner. For example you can resolve ‘xxx@ddd.tld’ to any string.
  5. The domain can also be set as ‘public’ domain, so anyone can update this domain (good for developing decentralised apps).
  6. it can be supported by major browsers.
  7. Tons of more features…

If someone wants to build domains on bitcoin cash, we could help.

Thanks

Congratulations to @Kasumi at MistSwap for creating the LNS system. :slightly_smiling_face:
https://bch.domains/

Emilie

1 Like

@bloodchen @IcyEmilie

It’s good to see more projects like this. I would like to know however a few details regarding both nbdomain.com and bch.domains.

  1. When a name is acquired the first time, where does the fee go? And after the first purchase, is there a fee, beside paying the current owner of the name, and if so, who receives that fee? That is, do the founders of these naming networks receive part of any fee at any point?
  2. Do these networks have a mechanism to prevent squatting (a buyer acquiring lots of cheap names during the initial stages to sell them later at a profit) or a mechanism to prevent fraud (someone acquiring and using a Google or Apple name)? Such mechanisms are only possible in a permissioned and centralized system. Instead in a decentralized system one can only place mild disincentives to reduce these behaviors, but they require much ingenuity. Which approach has each network followed (or just plainly doesn’t tackle these issues)?

It’s great to see some discussions.

  1. Each domain in nbdomain system is a NFT, minted by the TLD creator. Current .b TLD is minted by the nbdomain team. New TLD could be anyone. The user could buy the domain from current owner and then own domain like a NFT. Once sold, only the owner can control the domain.

  2. Each TLD owner could setup a different price policy to prevent domain squatting.

  3. No yearly renewal fee is required for nbdomain.

  4. The resolver of nbdomain is implemented via nbnodes, a permissionless resolver network. It’s like Bitcoin nodes which have incentives for the miner to run the node. There is a small update fee sent to the node owner when the content of one nbdomain is updated.

We are working with different blockchain projects to create domain ( new TLD for new blockchain) on their blockchain, which will give them real use case and more value.

Jeff

Thank you for your reply.

I have a few more questions to be sure I understand:

  1. Does the process of minting a TLD have any cost for the minter? That is, could a few users mint all possible TLDs for free?
  2. How much control does a TLD creator have over the names within that TLD? Can he revoke a name from his TLD that has already been purchased? Can the TLD owner decide which names are available in the first place?
  3. When a user buys a name from a TLD the first time, who receives the money that the user pays to purchase the name?
  4. When a user purchases a name/domain (from a TLD), does the new buyer pay the full price to the previous name owner, or is there an extra fee involved in the purchase? If so, who receives that fee?
  5. When a user purchases a TLD from another user, is there any extra fee involved? If so, who receives that fee?
  6. How many TLDs could there exist? What is the maximum size of characters, and are Unicode characters allowed?
  7. What benefits are there between (1) buying a name from TLD “.b”, and (2) minting or buying a TLD and then using a name from that TLD?
  8. When a user buys a TLD, can the new owner change the TLD policy? Would the existing owners of names within the TLD be affected in some way by a change of TLD ownership?

Before the reply, let me clarify some basic ideas in NBdomain system:

There are basically 4 parties in the system.

  • A. The dev team who build the system and node software.
  • B. The TLD creator, who can collect domain registration fees and decide pricing policy.
  • C. The node owner who runs the node software, similar to the miner in Bitcoin system. let’s just call it ‘miner’
  • D. The end user who will register the domain and pay the fee to TLD creator. And who will use the dApp, then pay updating fee to the miner.

To create a new TLD, B must get consensus from A and C. There is no public process of that yet. Anyone who wants to issue a new TLD need contact NBdomain team. Currently we are working with different blockchain team to issue TLD on that blockchain. It requires the TLD owner to contribute code to features like syncing blockchain data, accepting payment etc etc.

After a TLD is accept , the user can register unlimited amount of NBdomains under that TLD.

If a user updates the content of a domain, he pays a small miner fee to the miner. With more use cases, we believe it will be a good incentive to the miner.

The TLD owner has no more rights over the domains after the 1st sale.

See my comments below:

  1. Does the process of minting a TLD have any cost for the minter? That is, could a few users mint all possible TLDs for free?
    Like I said above, the TLD cannot be minted at will, only the domains can. In general only the party who can contribute a lot to the whole NBdomain ECO system can get consensus from the dev team and the miner.

  2. How much control does a TLD creator have over the names within that TLD? Can he revoke a name from his TLD that has already been purchased? Can the TLD owner decide which names are available in the first place?
    The TLD creator has very limited control. Once the domain is registered, the ownership will be transferred to the new owner. The TLD creator then has no control over it.

  3. When a user buys a name from a TLD the first time, who receives the money that the user pays to purchase the name?
    The TLD owner appointed address will get the payment. It will be enforced by the node software

  4. When a user purchases a name/domain (from a TLD), does the new buyer pay the full price to the previous name owner, or is there an extra fee involved in the purchase? If so, who receives that fee?
    The initial price is decided by the TLD owner. No extra fee is needed

  5. When a user purchases a TLD from another user, is there any extra fee involved? If so, who receives that fee?
    The fee is decided by the current owner of the domain and only he will get the fee

  6. How many TLDs could there exist? What is the maximum size of characters, and are Unicode characters allowed?
    Currently there is no limitation. Unicode shall be fine although not fully tested.

  7. What benefits are there between (1) buying a name from TLD “.b”, and (2) minting or buying a TLD and then using a name from that TLD?
    Like I said above, normal user cannot buy a TLD. In general owning a domain from different TLD will have the same benefits in the system.

  8. When a user buys a TLD, can the new owner change the TLD policy? Would the existing owners of names within the TLD be affected in some way by a change of TLD ownership?
    There is no policy of transferring TLD. The owner of the TLD can use whatever condition he feels happy with. But we don’t encourage change TLD info like payment address etc, it may require soft update of all miner software which may create conflicts since it’s all decentralised

More questions are welcome.

Thanks

Like I said above, the TLD cannot be minted at will, only the domains can. In general only the party who can contribute a lot to the whole NBdomain ECO system can get consensus from the dev team and the miner.

This is a drawback in my opinion; TLDs should be permissionless, as they are in Namecoin for example.

The TLD creator has very limited control. Once the domain is registered, the ownership will be transferred to the new owner. The TLD creator then has no control over it.

That is a good thing. Can the TLD owner/creator decide which names are available within that TLD? For example, can he ban the purchase of names that are not politically correct? What is the limit of names (size of characters, Unicode characters)?

The TLD owner appointed address will get the payment. It will be enforced by the node software

I see this as another drawback. Why should the TLD owner get the payment? Why don’t the miners (who are in charge of securing/running the network) get also the full payment of the first purchase, on top of the fees for updating name resolution?

What does the TLD owner bring to the network beside being the first to become an owner of a huge number of names?

With this system, a single person or small group of people (whoever owns the TLD) will get a potential large amount of money by essentially “squatting on all the names in that TLD.”

Whereas if the miners get the profits, it gets distributed to those who contribute most to securing/running the network.

The initial price is decided by the TLD owner. No extra fee is needed

Can the TLD owner set different prices for different names? For example, the name “dgahgdfs” might be set to be very cheap, but the name “Amazon” could be set to be more expensive.

The fee is decided by the current owner of the domain and only he will get the fee

That’s good.

So in general I don’t like the model chosen by NBdomain because of the method of monetization.

I agree that the dev team should make a profit from their work, but I do not agree that squatting on all the names in the TLD “.b” is the proper way, moreover if they can prevent competition by not issuing more TLDs.

Making a Flipstarter would have been preferrable, but that requires people seeing a very good use case and future for the project.

Edit: another drawback that I see is that the TLD owner can himself buy all the names within that TLD he wants at no cost, because he receives the money he is paying for the purchase. Which means that the TLD owner can buy many of the good names and then set higher prices for those at no cost for him.

Or even the TLD owner could buy, at no cost for him, all the names he doesn’t like and prevent those from being purchased by other users, so that some names would never be used within that TLD.

Thanks for the feedback. Let me take this chance to explain the logic behind this design.

For any naming system, ID or domain, there is one fundamental rule.

The name will worth nothing if no one uses the name

After reviewing bitcoin’s success ( and problems - like BCH’s recent fork ) and most Domain-like projects, including NameCoin, ENS, Unstoppable Domain, HNS etc, etc, we get some insights;

A good system needs not only technically well designed but also economically well designed. To make the system stronger and prosper in the long run, we must make sure each party’s interests are properly aligned with the system.

Back to the TLD creator, who is the direct stake holder of a TLD. they must make sure the ECO system prosper, otherwise the domains in its TLD will be useless. Frankly speaking it’s most challenging part of the system. Giving them the rights to collect a One time sales fee is not overwhelming.

TLD creator is more or less like the miner in bitcoin system who gets free block rewards by POW work. The TLD creator get domain sales rewards by making the TLD more useful. Otherwise no one will buy the domains under its TLD, right?

Technically speaking, each domain is an NFT created by the TLD creator (using its key-pair), on the fly when it’s sold. If you don’t have problem with NFT creator set price of his NFT, you shall not have problem for TLD creator set the domain price.

Speaking about NameCoin, one big problem we see is the mis-designed incentive strategy. I have personally spoken to devs in NameCoin. By design, they will not much return from the project and have to make a living elsewhere. Instead, many domain squatter holds most good names but contribute very little. Although started very early, NameCoin has not deliver what it supposed to deliver.

Another mis-understanding is about the Resolver ( I shall not call it miner which is misleading).
The resolver is not like miner in blockchain system. NBdomain is not a blockchain system. It’s a layer2 decentralised system, more like IPFS+incentives, built on top of the supported blockchain . The security of the system is protected by the crypto algorithm and the underlining blockchain system. For example, domain registrations and updates are verifiable by transactions in the blockchain.

The resolver in NBdomain does not do hashing or POW, which makes the requirements of the resolver not high. A 5$ VPC or a raspberry PI can do the job, which can make the system more decentralised.

The resolver gets fees for providing stable API service (domain resolving, domain updating and more) to the end users. so, it’s un-blockable and anti-censorship.

On the contrary to the TLD creator, the Resolver does not have loyalty to any specific TLD. They work for all supported TLDs .

We understand the worries about new TLDs. The issuing of new TLDs is not the first priority for the team. But later on, some rule could emerge, for example, via a DAO voting or auction or other means.

The most important task is to create Killer apps ( use cases ) that can show the power of the decentralised internet. It’s a challenge for all Web3 projects. Frankly speaking, most Web3 projects are just means to issue a token. The NBdomain team has chosen not to create a token but try to create real values from use cases.

Thanks

Thank you for answering. I’ll give some thought to what you said.

In the meantime, could you also answer the remaining questions or concerns I brought up? Those are:

  • Can the TLD owner/creator decide which names are available within that TLD? For example, can he ban the purchase of names that are not politically correct? What is the limit of names (size of characters, Unicode characters)?
  • Can the TLD owner set different prices for different names? For example, the name “dgahgdfs” might be set to be very cheap, but the name “Amazon” could be set to be more expensive.
  • Another drawback that I see is that the TLD owner can himself buy all the names within that TLD he wants at no cost, because he receives the money he is paying for the purchase. Which means that the TLD owner can buy many of the good names and then set higher prices for those at no cost for him .
  • Or even the TLD owner could buy, at no cost for him, all the names he doesn’t like and prevent those from being purchased by other users, so that some names would never be used within that TLD.

(These concerns do not involve the resolver, only the TLD owner.)

Thank you.

I use TO as abbr of TLD Owner

To your questions:

1&2: The TO can block some domain from buying and he can set price for different names. But he cannot do anything once the name is sold. Please keep in mind, any of the price policies or blacklist will any market impact. TO’s interest are directly related to the success of its domain sale. It has 100% reason to use this flexible to make this TLD more attractive, not the other way.

FYI: .b domain will not block any names from buying. The domains names are released gradually . Now domain with 4 and more characters can be registered.

3&4: The TO does can buy any names at no costs. But that makes no much sense as he can only get income by selling the domains to others.

  1. TO does can keep some good names if he has confidence the names will worth more later. It’s like the miners HODL coins instead of selling. It’s not always the best choice. Consider this as a encouragement to TO to make its ECO prosperous.

Thanks

@bloodchen

A good system needs not only technically well designed but also economically well designed. To make the system stronger and prosper in the long run, we must make sure each party’s interests are properly aligned with the system.

I do not think that this is always the case. Sometimes baking certain incentives into the system makes the system more centralized or with some undesirable properties. For example, the IFP proposed by ABC was not a good idea, even though it purported to add incentives into the system.

If a system has value, it should be able to get funded outside the system, via a Flipstarter for example. If it fails to do so, it may be because the system doesn’t bring enough value to the users, or because of miscommunication or mistrust.

Back to the TLD creator , who is the direct stake holder of a TLD. they must make sure the ECO system prosper, otherwise the domains in its TLD will be useless. Frankly speaking it’s most challenging part of the system. Giving them the rights to collect a One time sales fee is not overwhelming.

It could be a feasible strategy for the TLD creator to make the least effort necessary in order to sell the first names to the weakest hands, and then forget about further developing the system, in case the cost of doing so long-term might not be compensated by the reward.

The current incentives in NBdomains do not guarantee the longevity of the system, only its rollout. Granted, neither is that guaranteed in other systems like Namecoin, but at least the design of Namecoin is more permissionless than with NBdomains.

Speaking about NameCoin, one big problem we see is the mis-designed incentive strategy. I have personally spoken to devs in NameCoin. By design, they will not much return from the project and have to make a living elsewhere. Instead, many domain squatter holds most good names but contribute very little. Although started very early, NameCoin has not deliver what it supposed to deliver.

The Namecoin devs have done little to publicize the project. The team has worked on things like interoperability with certificate authorities, onion site resolution in the Tor browser, and the like. The technical work behind it is quite remarkable, but it is true that Namecoin doesn’t have great marketing or strategy behind.

However, if the Namecoin devs had done similar marketing than other naming projects, and successfully funded the development through crowdfunding, could it have attracted more users? Probably. But the devs have not bothered to do so, and have focused instead on the technical aspects.

Their objective was to develop a decentralized naming system, and so far their model is the best technically speaking. So they are successful in that front.

No decentralized naming system has yet become mainstream, so it cannot be said that Namecoin (or any Namcoin-like system that might be built in the future) has failed, if Namecoin continues to make improvements.

1&2: The TO can block some domain from buying and he can set price for different names. But he cannot do anything once the name is sold. Please keep in mind, any of the price policies or blacklist will any market impact. TO’s interest are directly related to the success of its domain sale. It has 100% reason to use this flexible to make this TLD more attractive, not the other way.

If you look into current centralized systems of any kind, they are successful despite being permissioned, because most users do not look into the technical aspects of the system. So, the TLD owner could ban certain names with little market impact.

What I don’t like is why do we need to pay yearly instead of one time?

Look how LBRY Inc. do this, you can claim a URL with your LBC and that’s it. No monthly or yearly costs. That is how the blockchain suppose to work IMO.

… plus we have those gas fees…

Btw, someone with the handle @asdf2507 on Telegram posted this a while ago:

Hi everyone, I’m really enjoying experimenting with CashTokens and thought I’d share a prototype replacement for LNS/Cash Accounts:
Bitauth IDE

The main goal being that lookup and register operations don’t require special infrastructure, just an electrum server.

Cash Trie

A prototype for an on-chain trie for BCH. Can be a possible alternative to LNS/Cash Accounts, or just a general purpose key-value store. Main advantages are that it doesn’t need any special infrastructure, any Electrum server or block explorer should suffice.

The current configuration is suited for a Cash Accounts alternative. Anyone can claim a particular string key by constructing a terminal node, and then they will have exclusive write access to that key.

A UTXO corresponds to a node in the trie. There are two types of nodes: internal nodes and terminal nodes. Each internal node holds a minting NFT with a commitment containing a bitmask of which child nodes have been constructed. Each terminal node holds a mutable NFT and can be spent by presenting the corresponding immutable owner NFT. How to store data is currently left unspecified. Some options include the commitment of the terminal node, OP_RETURN, output addresses, or even unlocking scripts.

To perform a lookup, one can make an electrum RPC call to blockchain.scripthash.listunspent and look for a UTXO that contains the right NFT. Any UTXO that doesn’t contain the right NFT is freely spendable by anyone.

To register a new entry, a wallet needs to create all the internal nodes if they don’t already exist, and the terminal node. When creating the terminal node, the user specifies an address to receive the owner NFT which grants permission to modify the data stored in the terminal node.

2 Likes