Monday, September 10, 2018

Upside-down world of Cryptocurrencies

This is a repost of my Medium blog post
Cryptocurrencies are projects that aim to create new digital currencies that exist on its own without the need for a government agency to back it up and provide validity. The software ensures that the currency cannot be duplicated or spend multiple times like copy-pasting files on a computer. The software system of the cryptocurrency is a distributed system that resides on multiple systems that communicate among themselves. This means that even if some parts of the systems are taken down, the cryptocurrency would still exist.
To achieve these amazing feats, cryptocurrencies are using cryptographic functions on a shared transaction ledger and by turning the financial transaction practices upside down.
The ledger that cryptocurrencies use to store their transactions is called a Blockchain. As the name indicates, Blockchain consists of blocks that stores transaction records and one block links to another in such a way that the link cannot be changed without invalidating the ledger. Each block on the blockchain is added by an entity called the miner after ensuring that the cryptocurrencies are owned by the person spending this. To verify if a person owns the currencies they are spending, the miner will have to verify the previous transactions of that account. To facilitate this the transaction data will have to be made public. The entire blockchain ledger of BitcoinEthereum or any other cryptography (except zCash) are public.
This is in stark contrast to the financial transaction world we are accustomed to. The transaction data of any bank account is private information that cannot be accessed without the consent of the account holder. Imagine publishing the transaction history of an account worth $1.45 billion to the public. This would be an unthinkable act for most of us but this is status quo in the cryptocurrency world. For instance, the Bitcoin address 3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r holds 226,204.75807475 BTC which is worth 1,452,890,055.66 USD (as of 8th Sept 2018). You can also see the entire transaction history for the above account by click on the above link.
Cryptocurrencies projects had to sacrifice privacy for their existence and to compensate for the lack of data privacy they let go of the idea of identity. All accounts or address are text like 0x4f37281c4de485c44a56cb04894f8bca931dc125 which is an Ethereum account or the Bitcoin address given above. These addresses/accounts are alphanumeric text that maps to the public key of a private key public key pair which would be used to spend the cryptocurrencies in the addresses/accounts.
Keeping the transaction data public and having anonymous or pseudo-anonymous addresses may be acceptable to the early adopters of cryptocurrencies but it can prove to be a major huddle in mass adoption of the technology. In my opinion, any cryptocurrency that wants to be the digital currency of the future should address this drawback. One option available is the implementation of zkSNARKs (zero-knowledge Succinct Non-interactive ARgument of Knowledge) which is a cryptographic method that enables the encrypted transaction to be validated without the verifier knowing the details of the transaction amount. Even though this sounds more like cryptographic dark magic but it has been used in the implementation of zCash. So it is not something that just resides in the theoretical realms of cryptography. We can hope that other cryptocurrencies would implement a version of zkSNARKs. Once data privacy is addressed, providing identity service may not be such a big challenge, as it can be addressed through smart contracts or dApps.