Opcode based anonymous domains and identities on zcash

Hey there zcash community!

I am wandering here and there now discussing the foreseeable future of decentralized dns, as in my opinion this is extremely huge problem blockchain nicely solved. Strangely, nobody is talking about it to this day.

As many of you probably know, namecoin has been running for longer than any other coin beside Bitcoin, but due the Satoshi’s recommendation to design it as separate blockchain, it was later forgotten for the time being.

Good news, the small team that operates the project is nearing the point where the world will probably see this whole stuff in action in a form of Namecoin name resolutions in Tor Browser. It’s currently an experimental alpha and available in Tor’s gnu nightly builds but as I have been observing this work for quite some time, I can say we have never been closer to tor addresses being hidden under nice human readable names.

The tech is basically a stripped out version of electrum (~3mb, kudos to Jeremy Rand’s hard work) with name look-up support integrated into a browser + a cluster of dedicated electrumx servers that do the job. Client connects to servers through tor, and because names can be verified through spv this whole setup is quite robust and lightweight.

That said, my vision is that despite namecoin may support many TLD zones, their only focus is on .bit one, and it will likely remain like so in the future. If that vision is close to what will happen, I see like many utxo-based blockchains will look to integrate the same functionality and provide alternate TLD with different features.

One of the first to come in mind is obviously zcash. This whole functionality is basically three opcodes plus some glue. If integrated, zcash will allow for truly anonymous domain names, which will bring a huge benefit for the open and private web.

As the whole setup is based on electron, it will not be that hard to have a “multicurrency” electrum name-resolver. I can easily imagine firefox/brave catching up to the game. That way we will slowly star our journey away from icann.

Besides anonymous domains, decentralized id’s comes very handy solving the nasty UX problem of crypto-addresss.

P.S. Zcash is also a very special place to close the @zooko’s triangle. You Can Have It All!

4 Likes

I love this idea.

We use Zcash to register secure, human readable names for users and communities in Zbay, by sending encrypted memos to an address whose viewing key has been made public.

This might be a great start to some more general “Znames” or “ZNS” approach and I would love to make it a standard. I think Zecwallet was interested in this too.

Would you like to collaborate on a ZIP?

3 Likes

Would you like to collaborate on a ZIP?

I have little experience in such collaborations but would be absolutely glad to help as much as I can.

I suppose one question I have is, what are your requirements for such a system?

The version of this that we have working now can require a fee for registrations, and can require renewal fees, but there’s no bidding market or anything like that.

How would you expect such a system to work?

Also, what else would these names be used for?

The version of this that we have working now

Where I can read the specification of what you describe? I am not familiar with the system but I suppose it’s kind of higher-level protocol on top of zcash? That way, to resolve a name you need some kind of ‘indexer’, and you can only prevent conflicts on that indexer’s level.

Namecoin’s opcode names are kind of miner-validated colored coins. Name collisions are guaranteed not to happen, and the look-up is spv friendly and thus trust-less.

How would you expect such a system to work?

I believe the simplest approach could be just to backport the implementation from namecoin. I think it’s rather stable considering almost ten years of history but it will require extensive testing if we decide integrating it (for potential scalability issues etc)

In Namecoin, the cost of name registration is 1/100 of a coin to be burnt, and the registration is valid for 35999 10-minutes blocks. Besides transaction fees, all subsequent operations are currently free, including name-transfer (which is not the best behavior). There is no bidding market, this belongs to higher-level implementations and not the consensus layer.

I strongly believe that the cost of registration should be much higher to prevent squatting of short names (which happened on namecoin). Anyway, all these parameters are subject to further debate.

Also, what else would these names be used for?

Besides domains, the obvious use cases are user identities that can be used anywhere from centralized social networks to cryptocurrency wallets, but most intriguing (in personal opinion) is the use in on-chain social networking protocols similar to Memo on Bitcoin Cash or Peepeth on Ethereum. Coin wallets get an instant benefit in usability though – you basically can initiate a private send by typing something like z/username and hitting ‘send’.

It’s simple enough and we’re early enough in the project that we haven’t written a spec for it yet.

We have an address whose viewing key we include in every client. And whoever sends a properly formatted encrypted memo to the address registers the name. The client builds its own notion of names from the messages at this address and their ordering.

In the light wallet scenario, where syncing from the beginning of the blockchain isn’t necessary and would be time consuming, we ship the most recent state of this address with the app, and give users the option of re-syncing to verify it.

You can try it out here: https://zbay.app and I’m happy to answer other questions.

This has many advantages over our naive approach. How would this work in Zcash. When you say “three opcodes plus some glue”, what do you mean?

How different is the lightwallet setup for namecoin relative to the existing Zcash lightwallet setup?

These slides are super interesting: https://www.namecoin.org/resources/presentations/36C3/Adventures_and_Experiments_Adding_Namecoin_to_Tor_Browser_36C3_CDC.pdf

It seems that addressing anonymity for the name registrant is still an open issue that they’re working on. Should we propose to Jeremy that Zcash be used instead of, or in addition to, Monero for the entity purchasing the name?

1 Like

One thought is, as long as there’s a library that lets you buy names natively with Zcash, we can use whatever library and endpoints Tor is using to resolve names, and we’ll be in the same place.

And this is all stuff I’m really excited about too! Especially the idea of sending to a human-readable username, which you can currently do in Zbay!