Comparison of Blockchain Technologies

Comparison of Blockchain Technologies

There are many Blockchain implementations and it’s important to choose the most suitable one. Therefore, it’s essential to be familiar with the better-known, most robust alternatives backed by the most extensive proven experience in real solutions.

 

In this comparative assessment we will focus on the main Blockchains allowing the programming of smart contracts:

  1. Ethereum
  2. Monax/Hyperledger Burrow
  3. Quorum
  4. Hyperledger Fabric
  5. Corda

 

The first three solutions listed above are based on Ethereum technology.

 

SolutionMaturityEase of DevelopmentPermissioningTransaction  confirmation timePrivacy between nodes
Ethereum43No (1)~12 secNo
Monax/Burrow33Fine-grained permissions (5)“Instantaneous”No
Quorum33Only validators (3)“Instantaneous”Yes
Hyperledger12Fine-grained permissions (5)“Instantaneous”Yes
Corda13Coarse-grained permissions (4)“Instantaneous”Yes

Comparative Assessment Summary (Lowest to highest rating, 1-5)

 

1-Ethereum

Ethereum was the first public blockchain to allow the programming of Smart Contracts (programs using Turing-complete languages) in the block chain itself. This was a revolutionary development, as it allows the creation of algorithms or adding a logic to the transfers.

Two other solutions have been developed based on Ethereum that we will compare later. These add features to Ethereum to complement it in its applications. They are Monax and Quorum.

There are ways of creating private Ethereum networks where access to only certain nodes is allowed, but this means the network will have fewer mining nodes, validators that will look for the hash to validate the blocks, which makes them inefficient, as we will no longer be interested in solving the node confidence issue  – they are private, our own nodes.

All ether movements will be shown on the network, and will be visible to all connected nodes.

Proof of Work

Ethereum is designed for public networks, hence any smart contract, transfer or action relating to it will be visible to all, and the mining nodes that validate the blocks can be located anywhere; these miners validate the transfers using proof of work (brute force to calculate the hash of the block). The average block/transaction validation time is around 12 seconds.

 Privacy

Ethereum implements no privacy on the network, anyone can view everyone else’s transactions.

Permissioning

Ethereum has no permissioning; everyone connecting to the network fulfils the same role (they can deploy contracts…).

Smart contracts

Ethereum was the first network to allow programming of smart contracts, in this case using its own programming language, Solidity. This programming language allows using any kind of logic; it is a Turing-complete machine.

Ethereum solves the problem of being able to carry out high-cost transactions on all nodes, saturating the network or blocking it, by applying a cost according to the code executed in each transaction. This cost is paid with gas, and this gas can be purchased using the Ether cryptocurrency. Smart contracts with a very complex logic, or poorly programmed ones, will have a very high gas cost, because either you pay that cost every time you want to carry out a transaction or else that transaction will not take place.

This “gas-price” approach to the computational cost can represent a problem for certain enterprise networks, since whoever maintains or develops a network must ensure that all the customers have gas available to interact with the contracts.

2- Monax/Hyperledger Burrow

An Ethereum-based network (fork open source) geared to the Enterprise world, allowing easier and more effective creation of a private network.

It makes deployment easier than for an Ethereum private network and, above all, it solves the issue of the wasteful computational expense involved with a proof of work in Ethereum.

Proof of Stake (Tendermint)

Monax introduces a different consensus algorithm, Tendermint, making it more efficient for private networks, as it validates blocks /transactions in under 0.5 seconds. It does so using few validator nodes, as it is based on Proof of Stake and does not require the nodes to carry out a hash calculation. As they are known and identified nodes, they can use a voting system.

Privacy

Monax implements no privacy on the network; anyone can view everyone else’s transactions.

Permissioning

Monax implements complex permissioning; besides having validators, it allows each user to have a defined role, where the actions that user can perform on the blockchain (deploying contracts, registering new users, making transaction calls …) are restricted through fine-grained permissions.

Smart contracts

Monax uses the same core as Ethereum, so both share the same smart contract development language (Solidity). However, there is a difference as regards the computation pricing. The gas system is concealed (it becomes infinite), and thus the network developer or maintainer doesn’t have to worry about making sure users have enough gas to interact with the contracts.

However, it does maintain an execution “gas” limit per transaction, to prevent someone launching a code that could take the validators too long to process.

3- Quorum

An open source private blockchain network developed by JP Morgan from the Ethereum code. Quorum’s essential distinguishing feature is the fact that it allows private transactions between the parties.

Raft-consensus

Quorum introduces a new consensus algorithm (Raft) which, like Proof of Stake, does not require calculation of a hash and validates blocks/transactions in under 0.5 seconds. However, this comes at a cost, as it has no Byzantine fault tolerance. In other words, if this consensus is used, the security has to be provided by the entities themselves to assure that their nodes are not accessible to an attacker.

Quorum offers more consensus mechanisms that in the long run will allow Byzantine fault tolerance, such as QuorumChain, which is programmable through a smart contract and is intended to enable programmable consensus logic.

Privacy

In this case the network is no longer public. It is private, in addition to which privacy between the network nodes is added.

Quorum allows transactions to be carried out privately between network participants, i.e., it allows a transaction to be visible only to a sub-group of participants.

The data of the private transactions never reach non-participating nodes, since instead of using blockchain communication to send these data, a  point-to-point network is used, which works together with the blockchain and allows data to be sent from one node to another, called/provided by Constellation. These data are verified in the blockchain by means of their hashes, but the data are never sent via the “open” network.

Permissioning

Quorum implements simple permissioning, the nodes connecting to the network can only be validators (they “vote” on whether or not a transaction is added to the blockchain) or not, but there are no fine-grained permissions (deploying contracts, registering new users, making transaction calls …).

Smart Contracts

Quorum uses the same core as Ethereum, so both share the same smart contract development language (Solidity). However, there is a difference as regards the computation pricing. The gas system is concealed (it becomes infinite), and thus the network developer or maintainer doesn’t have to worry about making sure users have enough gas to interact with the contracts.

However, it does maintain an execution “gas” limit per transaction, to prevent someone launching a code that could take the validators too long to process.

 

The following Enterprise network solutions are not Ethereum-based and, unlike their Ethereum-based private network competitors, they were originally designed for private networks.

4- Hyperledger Fabric

Hyperledger is a consortium of the Linux foundation, whose purpose is to support different Blockchain implementations. The best known one is Fabric, which is being developed by IBM.

Fabric is a less mature technology than those based on Ethereum, since although the latter modify the original functionality; they are based on a system that has been in operation for several years on the public network. However, Fabric offers a more comprehensive set of functionalities since, being designed from scratch for enterprise networks; it allows adding all these functionalities.

Consensus

Fabric implements a consensus mechanism based on Proof of Stake, i.e., it doesn’t require calculation of a computationally intensive hash, which allows transactions to be confirmed in under 0.5s.

 It provides Byzantine fault tolerance; this is done by means of a stream in which all the participants in the validation validate it, and then it is sent to a “central” node group which classifies the transactions by order of arrival.

Privacy

Fabric implements network privacy, allowing the sending of transactions that will only be confirmed by the group of participants selected.  As is the case for Quorum, only those participants can see the transactions.

Permissioning

Fabric implements complex permissioning. Besides having validators, it allows each user to have a defined role, restricting the actions they can perform on the blockchain (deploying contracts, registering new users, making transaction calls …) through fine-grained permissions.

Smart Contracts

In Fabric, Smart Contracts are currently developed in  GO, although it is flexible and will allow doing so in Python and Java in the future. This flexibility comes at a price, namely that it does not have its own compiler, which increases the level of complexity for the developer and the possibility of errors in the code. For example, the data must be stored in a key/value structure, which it is the developer’s responsibility to carry out.

5- Corda

Created by the R3 consortium, essentially designed to enable secure  communications and agreements for banks and financial companies.

Like Hyperledger Fabric, it is a product designed from the ground up for enterprise networks, generally banks, and it is less mature than Ethereum-based solutions. However, it is not a blockchain as such; it offers most of the features of a blockchain (especially enterprise-oriented ones), but its implementation is different, as it operates more as a point-to-point network with encryption.

Consensus

Transactions on Corda are individually confirmed by each of the participants in a transaction. They can be extended to add regulator/centralising nodes. There is no overall consensus, just consensus between the participants in a given transaction.

Privacy

Corda implements privacy on the network; it is possible to send transactions that will only be confirmed by the group of participants selected, since as it’s not a blockchain and there’s no overall consensus, communications are point-to-point and no-one receives a transaction they are not meant to see.

Permissioning

Corda provides permissioning for registering on the network; since communications are point-to-point, knowing the sendee is a requirement.

 As the aim of Corda is to allow secure communications between entities, having fine-grained permissions hardly adds any value, since each entity will control access to its nodes and will sign its own account.

Smart Contracts

Smart Contracts in Corda are currently developed in KOTLIN (language similar to Java, running on the JVM) and Java.

 

Costs/Licences

All the technologies are currently open source and available fee of charge (as regards software, without any infrastructure or support). Only Monax applies a charge for new versions of its client/SDK libraries. However, the use of its platform /blockchain is free of charge.

 

Communicating with the blockchain

In order to integrate the blockchain with our traditional systems or with a front-end that will allow our clients to interact with it in a user-friendly way, we must use the client libraries available for the various “traditional languages”.

 

In all the technologies reviewed here (save for Corda, which uses a Kotlin library), communication with the blockchain takes place through RPC/http and a client library for NodeJS. Some of them provide other client library implementations (Java…); however, they tend not to have the same level of maturity as the NodeJS library.