Let's create The Zcasher Wish List

I would like the viewing key to be discontinued, giving greater privacy and without the possibility of showing what happens with the wallet.

discontinuation of both the viewing key and the discontinuation of the transparent wallet. discontinue both.

This is interesting. Would you mind elaborate a bit more on what this would mean?

I disagree with this. The viewing key is a great feature of Zcash that allows use cases like the delegation of chain monitoring used for sales in ZGo, and also auditing/voting use cases like the ones I described in A proposal for a Zcash DAO.

2 Likes

Even if viewing keys were removed, it would still be possible to reveal the wallet’s transaction history by disclosing your full spending keys (seed phrase), so removing viewing keys from the protocol won’t do what you want. It sounds like you might be asking for forward secrecy properties, where even if a wallet gets fully compromised at a point in time (all of its keys and seed phrase leaks), it’s still impossible to recover information about past transactions. In other words, a feature that lets you prevent even yourself from accessing your past transaction history.

2 Likes

The viewing key is very interesting, but I believe it reveals more information than it should. As Zcash becomes more recognized and its value reaches levels like Ethereum and Bitcoin, governments, already watching, will at some point start requesting the Zcash viewing key. I believe this could be an abuse, allowing the government to know everything in real time. I believe the ideal would be to grant fewer powers and create a new audit mechanism that allows me to only show what I want to show. The government doesn’t need to know that I spent Zcash buying services or goods; the government doesn’t need to audit everything. If privacy is the principle, I would easily lose my privacy to the government once it forces everyone to provide the viewing key. In practice, the government would know everything in real time, and I would hide it only from others who don’t have the viewing key.

This is a very delicate matter; it could be the difference between success and failure. Without auditing, everything would be very nebulous, but with auditing, it would be easier to avoid regulatory oversight. Removing the view key could hinder future agreements with governments, but maintaining the view key would leave Zcash with a loophole that wouldn’t be as private as it should be. Removing the view key could compromise future functionality, even use cases for developing something more complex and innovative. Perhaps this idea of removing the view key isn’t viable.

1 Like

On second thought, I believe the visualization key should be maintained.

3 Likes

Zcash could have a kind of DNS in Zcash addresses, with a simplified and more human-like key, such as an email address, phone number, domain, or website subdomain—something more understandable and easy to remember. This way, companies could publish a more human-like address to receive ZEC, or enthusiasts, even knowing the risk of losing privacy (if a phone number is included). The system could identify the public key through a resolution of registered names, charging a fee for such registration.

I don’t like the whole flow of first running a full node, then a lightclient wallet, then failing to find a nice client library to interface with it, with almost 0 content around it!

Here is what the devex should look like:

  • There are rate limited, highly available hosted full-nodes available for mainnet and testnet
  • A really nice, ethers-js or alloy like client libraries available in js and rust atleastr, where a dev can interface and send their first transaction in less than 5-10 minutes of hacking
  • A cookbook around how to “program” with zcash!

zcash will get better, as it will become more and more easier for an average developer to script it, the way it is for Ethereum right now!

4 Likes

If you want to create programs (in Haskell) the interact with Zcash, this is actually quite possible with Zenith, though not explicitly documented.

  • Download Zebra
  • Download Zenith source
  • Build environment (nix develop)
  • Use interactive Haskell REPL to tinker (cabal repl)

Might have to put together a blog post on how to use Zenith to tinker with Zcash.

If you want to interact with Zcash programmatically in any language, you can use the Zenith RPC server:

Screencast

3 Likes