In this post, I am going to try and be unbiased towards any one protocol, and give an overview of the different blockchain protocols from a developer’s point of view as we enter 2017. Since there are so many different sidechains for Bitcoin, and different implementations for Ethereum, I won’t be able to cover the entire gamut, but I will try to cover most of the major standalone implementations at least.
Please note that I am just trying to give a non-partisan view on the technology and the challenges in general. I do not necessarily agree or disagree with any of the views or criticisms levelled against them.
Here’s the list of the implementation I am going to cover –
- Hyperledger Fabric
- Intel Sawtooth
Let’s start with the “first” blockchain — Bitcoin
Bitcoin blockchain was first introduced by Satoshi Nakamoto in his white paper back in the year 2008. While Bitcoin as a cryptocurrency has caught the attention of the mainstream media, as a developer, far more interesting is the underlying technology — Blockchain! This is where it all started. Bitcoin was a great innovation, because it solved two fundamental problems in a decentralized manner — preventing double spend and decentralised trust!
Bitcoin blockchain uses UTXOs (Unspent Transaction Outputs) mechanism. The main components of a Bitcoin transaction are Transaction ID, Descriptors and meta data, Inputs and Outputs. Every transaction will receive some input and generate some outputs. Along with this, you can also embed some data in the transaction, in a field called OP_RETURN. This field has been used for many innovative use cases, from writing graffiti on the blockchain, to putting your marriage certificates on the blockchain to the introduction of Colored Coins.
Over the years, as the Bitcoin network has proliferated, and the number of people using Bitcoin has increased, we have seen a significant increase in the number of transactions on the network. But the network has been unable to scale efficiently along with the increasing number of TXNs, which has led to a significant block time, around 10–15 minutes on an average. there have been several attempts to solve this issue —
- Increasing the block size
- Payment channels
- Decreasing the transaction data size
Segwit (Segregated Witness)
While there were a lot of discussions and debates going on about increasing the block size of the Bitcoin blockchain itself, in a Scaling Bitcoin conference in Hong Kong in December 2015, one of the Bitcoin lead developers, Pieter Wuille, presented the idea of Segwit at that conference. It was an interesting innovation which proposed to remove the signature data from transactions and send it separately, thus increasing the capacity of the blocks to carry more transactions.
In this case, the word ‘segregated’ actually means separation, and the word ‘witness’ stands for signature data. When the signature data is removed from the transaction data, it is estimated that the size of transactions will reduce by 40%, enabling more transactions to fit in a single block. While Segwit itself cannot be the only solution for Scaling Bitcoin, when it is used in combination with other solutions like Payment Channels and/or maybe increasing the block size, it will definitely help make Bitcoin able to handle more transactions and use cases.
Now, considering this awesome innovation, one might question why this isn’t being already implemented? The reason is that, as written in the code of the Segwit release, it will be activated fully only once there is an adoption by 95% of the miners, and then a grace period of 2016 transaction blocks. As of December 2016, roughly 30% of the nodes were on Segwit.
Although this is a really innovative solution, some people have opined their reservations about it.
“Even with Segregated Witness, the network will reach a point where it needs to scale again,” — Jacob Donelly, in an article in Bitcoin magazine
Zcash is the latest shiny thing in the land of Bitcoin and blockchains. Personally, I have always been fascinated by Zero-Knowledge proofs, and Zcash is one of the best embodiments of this technology. Another non-technical challenge of Bitcoin, and one of the criticisms by users has been the public nature of the transactions. All the transactions can be traced back to an originating address (unless you go through a mixing service or some other mechanism) and this can lead to a lot of problems, like revealing how much assets you own. Also, there’s the issue of using ‘tainted Bitcoins’ — the Bitcoins which have been used for illegal or shady purposes before.
Zcash is a decentralized and open-source cryptocurrency that offers privacy and selective transparency of transactions. Zcash payments are published on a public blockchain, but the sender, recipient, and amount of a transaction remain private.
The implications of this are enormous! Now you have a way of transferring assets on the blockchain without revealing all your personal information. It is built on top of Bitcoin Core’s codebase and the major improvement is the addition of privacy. Without revealing the details of the transactions, the users simply prove that the transactions are balanced out, and they’re not double spending. They use a zero-knowledge proof contruction called Zk-SNARK. This might seem like magic, so let me try and explain Zero Knowledge Proofs in a couple of sentences —
Essentially, a Zero Knowledge Proof is a way in which a “prover” is able to verify a certain truth so that he doesn’t reveal the secret used to prove to the “verifier”. One of the real world examples of this can be a way to “prove” to a website that your login password is the right password without actually revealing the cleartext password to the server itself (which usually hashes the password and compares it with the hash stored in the database).
You can find a wonderful explanation of Zero Knowledge Proofs at this blog by Prof. Matthew Green from John Hopkins University.
Obviously, Zcash hasn’t been without its problems. Some people have criticized it as being a “corporate” coin, with the mining and deployment centralized with the founding team. Also, there are concerns about the Master private key which is accesible to the six members of the founding team.
Etheruem is a blockchain which was the brainchild of Vitalik Buterin, and the first public implementation, called Frontier was released in mid-2015. Etheruem has a Turing-complete virtual machine called EVM. The major improvement over the Bitcoin blockchain is the native ability to write Smart Contracts. Ethereum has several languages which can accomplish this — Solidity, Serpent, LLL, etc. although Solidity is currently the most supported language by the community.
Ethereum has been seeing a growing interest from the community and the industry itself. It also has its native currency called Ether, which is traded on exchanges. A major innovation in Ethereum is the relative simplicity of deploying smart contracts which have been used to create ‘tokens’, which represent certain physical assets like Fiat currency, Gold, company shares, computational hours, to name a few. There are also many companies who have done ICOs (Initial Coin Offering) on Etheruem which is similar to an IPO, but with Ethereum’s tokens.
The challenges faced by Etheruem are in a way similar to that of Bitcoin, namely scalability and “wide” adoption from entprises. Etheruem is trying to solve the problem of scalability by adopting a new consensus algorithm called Proof-of-Stake, which will be in a release called Serenity, the final phase of development. But before that, in 2017, we will see the release of Metropolis, which will be a major landmark in Etheruem development. It has to do with simplifying the client implementations, thus making it easier for non-technical people to deal with Etheruem and also improving the security logic in Smart Contracts. The other challenge – adoption by enterprises – is solved by implementations like Eris.
Eris is a platform for building, testing, maintaining, and operating ecosystem applications with a blockchain backend. Eris makes it easy and simple to wrangle the dragons of smart contract blockchains.
Eris is built on top of EVM, but with a different consensus algorithm by Tendermint, which is Proof-of-Stake. Most of the enterprises who want to adopt Ethereum as a private blockchain are currently using Eris, which is being developed by the company Monax. It provides a permissioned layer on top of Ethereum, thus enabling the enterprises to set up and use a private blockchain network.
Ripple is a blockchain technology, which focuses on settlement and financial applications of the technology. It has been built from ground up so that it can integrate easily with banks’ existing infrastructure, without much integration overhead.
Ripple’s distributed financial technology enables banks to send real-time international payments across networks.
Ripple is a private company, which has been developing this protocol for a few years now, and they have raised some substantial rounds of funding. They are also seeing good adoption in banks and financial institutions. The basic protocol is called Interledger Protocol (ILP), which enables banks to send payments across different ledgers and networks globally. They also have a cryptocurrency with the same name (XRP), which is the third largest in terms of market capitalisation, just behind Bitcoin and Ethereum.
There is also a concept of ILP validators in a Ripple network. The banks have an option of choosing their own centralised ILP validators or else relying on a network of ILP validators already present in the network which rely on a BFT consensus algorithm. While ILP validators provide a central truth and validate the transactions, they also maintain the privacy of the transactions. They just make sure that certain “crypto-conditions” are met. In this instance, whether the funds are available for transfer or not. You can find more information about ILP validators in this ILP white paper.
Just to make things clear, Hyperledger project is an incubation project for different Distributed Ledger Technologies (DLT) by the Linux Foundation. This project currently has three implementations in incubation — namely, Fabric, Sawtooth and recently Corda. While Fabric is the implementation by IBM, Sawtooth is being developed by Intel and Corda by R3.
In this section I am going to talk about the implementation by IBM called Fabric. Fabric is essentially a private version of the blockchain, in which the nodes in the network form a private chain and share the data. This blockchain is being primarily used by enterprises for conducting POCs and solve the different problems existing in the enterprise ecosystem. Fabric is an open-source protocol and developers can contribute to the development. It is about to release a v1.0 (mostly Q1-Q2 2017) wherein there will be major changes in the protocol, including the consensus algorithms.
Currently, it has three main modules — Membership services, blockchain services and chaincode services. Membership services is the place where any new member has to register while joining the network. This acts like a Certificate Authority (CA) and maintains and blacklists the different nodes. Blockchain services has the consensus module, the actual ledger service and the P2P protocol. The chaincode services module contains the “chaincode”, which are Smart Contracts in dockerized containers.
The entire architecture of Fabric is modular and you can plug and play different modules in the system. For instance, you can either have a NOOPS (a single validating peer without a need for consensus) or use PBFT consensus algorithm. Another advantage is that, you can write the chaincode using JAVA or Golang, which are familiar to most of the developers instead of learning new languages like in the case of Etheruem.
Corda is an implementation of the DLT developed by a company called R3. While they were developing it independently earlier, they became a part of the Hyperledger project later on. In November 2016, they open-sourced the code of the project. This implementation is based on the UTXO model, similar to Bitcoin as opposed to Ethereum.
“We don’t have blocks and we don’t have a chain”
-Tim Grant, CEO, R3 Lab and Research Center
In Corda, there is a concept of state changes and transactions instead of blocks and a chain. Corda aims to achieve much more scalability and address the privacy concerns that are required by banks and other financial institutions by including “Notaries” in their network. Notaries essentially perform the function of miners, but without the overhead of performing expensive Proof-of-Work algorithms. They validate all the transactions and only once its timestamped by a notary can it be included in the immutable chain. Notaries can either be centralized (eg. R3 nodes themselves or Central banks) or they can be distributed (in this case they will use a consensus algorithm, mostly PBFT, and there would be a trade off with scalability). In Corda, you can write the Smart Contracts using Java and Kotlin.
According to their documentation, this ledger is specifically meant for Financial applications, and all other non-financial applications are outside the scope.
Sawtooth Lake is an implementation of Hyperledger project being developed by Intel. It is an open source project with an Apache license.
Sawtooth Lake is currently in its version 0.8 and is considered an experimental version. It is NOT advised for use in security sensitive applications in its documentation.
It provides a “Nakamoto consensus” algorithm called PoET (Proof of Elapsed Time) which can be executed in a Trusted Execution Environment (TEE) such as Intel® Software Guard Extensions (SGX). In a way, the principle is similar to that of Bitcoin, wherein the first validator to win the “lottery” (in case of Bitcoin, solving a cryptographic puzzle) propagates the block. But in case of Sawtooth Lake, the validators request for a ‘wait time’ from a trusted function, possibly a secure processor and the validator with the shortest wait time wins the lottery for that round. It is also called a “proof of processor” algorithm. It has a concept of “transaction family” for representing the data model and the ledger services. While they expect the users to implement their own transaction family services, they also provide some service out of the box. Another Bitcoin scalability technology, TEECHAN also plans to use such a TEE.
Challenges for Hyperledger implementations
Some of the challenges facing Hyperledger in general are the maturity of the technology itself. Compared to Bitcoin and Ethereum, there is a lesser adoption from the wider community outside the enterprises themselves or their developer community. While protocols like Bitcoin and Ethereum have been around for a few years and survived major changes and attacks on its code, Hyperledger protocols are relatively newer and hence there might be some unknowns when it comes to scalable production grade applications.
If you want to discuss more about how your company can leverage blockchain and work on the different use cases, you can visit my company’s website at https://attores.com.