Page 1 of 1

Ownership of whole name spaces

Posted: Thu Dec 13, 2018 6:01 pm
by domob
In some situations, it could be useful to have a notion of "owned namespaces" (not just names). In other words, if I owned "domob/", then only I should be able to register or update any name in "domob/". Everyone else should still be able to look them up.

Obviously, this is not possible with Namecoin as it is (and straight-forward lookups). But it would be possible to implement a scheme like this based on Namecoin as it is, but with a custom lookup procedure. It could work like this:
  1. To claim ownership of the namespace, I register a name like "ns/domob".
  2. Every day, I choose a secret nonce value N_i (for day i). I also update "ns/domob" to reveal the last day's value N_(i-1).
  3. To register a name "domob/name" at day i, I would compute hash(N_i | name) and register that on the Namecoin network instead. Since only I know N_i in cleartext on day i, noone else can register names in that scheme. (And it is very unlikely that the name would already be taken.)
  4. After N_i has been revealed on day i+1, everyone can redo the computation to look up "domob/name". They know for sure that only I could have registered the name, since I revealed the nonce through "ns/domob".
In particular, the lookup procedure would be to try all already-revealed nonce values for "ns/domob", until one yields a name that is registered and was registered before that nonce was revealed.

This registration is "slow" in the sense that names can only be looked up after revealing the used nonce, so they take a day (or whatever time interval is chosen) to be accessible publicly. Also the lookup is not straight-forward, as different nonce values have to be tried.

This can be optimised by having a "tree structure", though - there could be nonces that are updated daily, monthly and yearly. The yearly nonces are tried first, which is quick as there are only a few. If the name is not found, only the monthly nonces since the last revealed yearly one are tried, and then the daily ones in the same manner. That way, each name registration is actually reflected in three names on the Namecoin network - but each lookup only needs to try at most 50 or so name lookups (which is fine when done locally at least).

Does that sound like a reasonable protocol? Or does anyone else have ideas for how to do "owned namespaces" in a more efficient / simpler form?

Re: Ownership of whole name spaces

Posted: Wed Dec 19, 2018 2:47 am
by mjgill89
Instead of an incremental method such as you have detailed, could their be an option to hash numerous nonces with their respective names in one nmc transaction? Hash 1(2(3)) etc.

It could mean less blockchain bloat and less fees for those maintaining a namespace.

Re: Ownership of whole name spaces

Posted: Wed Dec 19, 2018 7:01 am
by domob
Yes, you can use a hash chain instead. But I'm not actually sure how that would simplify things or reduce blockchain usage, to be honest. You still need to reveal the next preimage from the chain every day, just as if you had generated random commitments.

Or perhaps I've misunderstood your proposal - can you give more details of what you are thinking about?

Re: Ownership of whole name spaces

Posted: Wed Dec 19, 2018 12:10 pm
by mjgill89
I may have misunderstood your original passage. With this said, when you say 'reveal the next preimage from the chain every day'... could there not be numerous sequential nonces as values in ns/domob, set at one point in time, in one transaction and revealed at the same time to be unraveled in order. My motivation is for someone currently using clearnet dns that already has a set namespace and would preferably like to setup that namespace in one(or very few) nmc transaction/s. My thoughts are based in a reality where nmc transaction/registration fees are much higher than now.

Re: Ownership of whole name spaces

Posted: Thu Dec 20, 2018 5:51 am
by domob
So here's my understanding of what you said: If you want to get a chain of nonces and hash commitments, you can do something like H(H(H(N))), then revealing N will reveal all of them. But in the situation I described, you don't need actual hash commitments, and you want to reveal one nonce at a time rather than many at once.

So I think you cannot really get around to revealing one nonce every day, independently of how you created them. (Of course, you only need to reveal if there have been any transactions on that day which you want to make visible. So depending on how active your namespace is, you may only need to create transactions infrequently.)