0

All things about cryptocurrency are very new to me; however, the more I learn the more exciting it is and the more possibilities I see as an application developer. I'm particularly happy to have made progress understanding smart contracts. Not so happy with learning how to move tokens from one account to another or exchange for different types of tokens. Apparently, one can do this in not so efficient ways and lose or perhaps spend a lot on the transactions. Anyhow, I think I've got a better understanding of that now as well and have been reading about micro-transactions and future plans. While doing so, a new issue became clear. Privacy.

Before I can see family, friends, and businesses widely accepting cryptocurrencies for exchanges, ones I know will want very low transaction costs and very, very good privacy. For example, I don't want my friends knowing that I'm paying a particular doctor, much less having every convenient store gaining access to the same. I don't want strangers knowing how much money I have. Within a day or so of experience, I haven't learned how to maintain privacy and have learned how to see everyone's transactions. How can a person maintain privacy? How can a person regain privacy after entering the ecosystem?

0

In the ZCash cryptocurrency, it is possible to send transactions without knowing how much is in the account (or, indeed, to see the value of the transaction itself). This is possible through the use of a mathematical construct known as a zero-knowledge, succinct non-interactive argument of knowledge (zkSNARK). A zkSNARK allows a third party to verify, using only a small amount of data (succinct) that a particular person knows something (argument of knowledge) without knowing what that knowledge is (zero-knowledge). For example, to prove that I know where there is hidden treasure without revealing the location of the treasure, I can show you some gold doubloons from the treasure chest.

zkSNARKs can be implemented in Ethereum as smart contracts (since Ethereum is Turing complete), but it is currently cost-prohibitive, or at least relatively expensive, due to gas usage. There is work being done to integrate zkSNARKs directly into Ethereum itself, rather than relying on an implementation written for the Ethereum virtual machine. You can read more about it here: https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/

Without using zkSNARKs, one can create multiple wallets (back them up!) and use each address only once. Of course, you can be de-anonymized when you attempt to spend (for example, by looking at patterns of spending behaviour, merging Ethers from multiple accounts, or by watching the IP address that broadcast the transaction, if you are running your own node). You can either work around these limits within the Ethereum ecosystem or you can exchange your Ether for, say, ZCash, send it to a new private ZCash account, and then convert it back to Ethereum. You will, of course, incur conversion fees and have to pay transaction fees for all this.

  • Thanks! While very informative, it does sound like a significant challenge even for enthusiasts, and major barrier to wider adoption. – user11495 Jun 26 '17 at 14:16
  • If/when incorporated into Ethereum itself, it should be pretty straightforward. Just like users don't need to understand that sending an e-mail via a traditional mail client involves things like TCP/IP, DNS, an MTA, an MDA, an MUA, and, of course, the things that underlie those technologies, this complexity can be hidden from users. In fact, I'm sure most people don't even know how a cheque is cashed, under the hood. – lungj Jun 26 '17 at 14:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy