One of the biggest challenges for blockchains right now, if not the biggest challenge, is scalability, or the ability to process more transactions in a shorter period of time.
Bitcoin has struggled to process transactions, and fees have risen accordingly. The same has happened with Ethereum, where the CryptoKitties craze in December 2017 ground the network nearly to a halt for about a week. Ethereum is banking on a switch to proof of stake as a consensus method and sharding to improve network throughput.
However, there is one public blockchain that is already designed with sharding working…
Jump to 👇
That blockchain is Zilliqa, which had its private ICO in late 2017 and a small public offering in January 2018, making it one of the first new tokens of 2018. Zilliqa is the only blockchain that has functioning sharding, which allows the blockchain to scale in a linear fashion as the network grows in size. Currently running on a testnet, Zilliqa expects to launch on main net in the third quarter of 2018.
This is a fundamental change to how a blockchain reaches consensus, as the sharding solution scales alongside the size of the Zilliqa network. In theory, Zilliqa has no limit on the number of transactions per second it could process.
In practice there are limits however, as the number of transactions processed is dependent on the number of nodes in the network. Ultimately however it’s reasonable to think that Zilliqa could process tens of thousands of transactions, and possibly even hundreds of thousands of transactions per second.
The Zilliqa team has also said that the blockchain will ultimately support smart contracts. This is a major technical hurdle, as running smart contracts on a sharded network poses many challenges.
In the remainder of this article I’ll go deeper into the approach Zilliqa is taking regarding both scalability of transactions and smart contracts. And I’ll take a look at the Zilliqa team and its roadmap to see if their vision is feasible.
Solving the Scalability Problem
Scaling Dilemma. Image via Fotolia
One inherent weakness of blockchain technology is its inability to scale well. The problem stems from the fact that as the number of nodes in a network grows, it becomes increasingly difficult to reach consensus.
Looking at a network in terms of people can be helpful to understand the consensus and scaling issue that blockchain’s face:
- If you have a meeting with a small group of people it isn’t difficult to make decisions at all. You may find that some of you don’t agree on everything, but you’ll still easily see how each person feels, and be able to reach consensus.
- When the group of people grows to the hundreds you can still get a good idea of how everyone feels, by polling or some similar method. It starts to become more difficult to count the votes, and you can’t be sure everyone is honest.
- When the group grows to tens of thousands of people, or even millions of people your voting system necessarily grows in complexity, and in the amount of power necessary to make it work. You’ll find more people not acting honestly, and it becomes increasingly difficult to know when or if everyone has voted.
It’s not a perfect analogy for talking about blockchain consensus, but I think you get the point in how it becomes increasingly difficult to reach consensus as a network grows larger and larger. And this is where the scalability issues begin, because network size and network speed are inversely related. So, when one increases the other decreases.
The solutions being explored by most blockchains currently consist of increasing the block size so more transactions can be confirmed in each consensus round, or by moving some information off the blockchain completely.
While these solutions will help the scalability problem in the short-term, they’ll never scale as much as is needed for blockchains to process thousands or tens of thousands of transactions per second. They’re simply a stop-gap measure that doesn’t fix the fundamental problem.
In order to really fix scalability the entire architecture of the blockchain needs to be redesigned so that network size and network speed are no longer inversely correlated.
Zilliqa’s Scalability Solution
Zilliqa is attacking the scalability issue with their own solution that allows more transactions to be processed as more nodes enter the network. It basically rebuilds the blockchain architecture from scratch. The model they’re using has a hybrid consensus protocol that will increase throughput with every additional 600 nodes in the network.
Zilliqa’s blockchain works by dividing the work done on the network, with throughput increasing for every 600 new nodes. This is in theory. In practice they are finding problems with broadcast once the network scales to more than 1 million nodes. However, we are currently nowhere near this level on any existing blockchain. Ethereum, which has the largest network of nodes, currently has roughly 25,000 full nodes.
The Ethereum network, with its 25,000 full nodes, is only capable of processing 15 transactions per second. Zilliqa by contrast has run tests on their private testnet that has reached 1,218 transactions per second with only 1,800 full nodes. If you double the nodes to 3,600 the throughput scales as well to 2,488 transactions per second.
Image Source: Zilliqa.com
Zilliqa Sharding: Divide and Conquer
The potential in these results is astounding, but how does Zilliqa do it?
They are using a solution called Sharding which with Zillqa works by dividing the network into groups of 600 nodes, with each group known as a shard.
For example, when Zilliqa ran the abovementioned test on their testnet with 1,800 nodes these were divided into 3 shards. When increased to 3,600 nodes there are 6 shards. Each new group of 600 nodes creates a new shard in the network.
The shards divide the work being done on the network, with each shard responsible for just a portion of the network transactions. So, if you get 10 shards, each shard is only concerned with processing 10% of the network transactions. And as the network grows, more shards become available, dividing the load further and keeping computing demands for each shard fairly stable.
Each shard creates a microblock with the transactions it processes. All of the shards process these transactions in parallel, and at the end of the parallel processing period, called the DS Epoch by the Zilliqa team, the microblocks are combined to form a full block. That full block is then added to the blockchain.
The DS Committee
Each DS Epoch has a DS Committee as well. This is a small group of several randomly selected nodes which act to manage all the other shards. The DS Committee decides which transactions get assigned to which shards.
And once the microblocks are created, the DS Committee is responsible for creating the full block and committing it to the blockchain.
Consensus Mechanism in Zilliqa
Zilliqa uses a hybrid consensus mechanism consisting of proof of work and Byzantine fault tolerance. Proof of work is not used as it is in traditional blockchain mining. Instead, each node begins by completing a proof of work hash.
Example of BFT Consensus. Source: slideshare
This does not result in any blockchain reward, but instead is used to establish the node identity. By forcing machines to establish their identity, the Zilliqa network avoids any potential Sybil attack, where a bad actor would create multiple identities in an attempt to overwhelm the network.
Once the nodes identity is proven through proof of work, the node can be assigned a shard. Shards find consensus through Byzantine fault tolerance, which is a high-throughput consensus mechanism with finality. Because it includes finality, most of the 600 nodes in the shard must agree on the microblock.
After the microblock has been confirmed and added to the final block, it becomes the only block that is able to reference the block before it. Because of this, forking is not possible in a Byzantine fault tolerance consensus with finality.
There have been other blockchains that are successfully using Byzantine fault tolerance for consensus. These include NEO and Hyperledger, both of which use a version of the proven Byzantine consensus mechanism.
State Sharding for Smart Contracts
It’s fairly straightforward to shard transactions on a blockchain. Transaction verifications are easily assigned to different shards, and each verification stands on its own. Shards have little need to communicate between themselves thanks to the DS Committee.
However this can’t be said for smart contracts and Dapps run on a sharded blockchain. A smart contrac often relies on external sources of data, functions, and other variables. To do this on a sharded blockchain would require potentially massive amounts of communication between the shards. The bandwidth and processing power consumed by this communication would make the benefits of sharding null.
Because of these limitations, the contracts in Zilliqa are focused on functional programming and data flow – at least for the time being. But the team is working on a way to allow for state changes, storage and data checking.
The current state of blockchain technology has led to a widespread opinion that state sharding can’t be made efficient and secure. If contracts were executing separately in sharded states it would leave the network open to all types of potential attacks, as well as cross shard contamination, and possible challenges for reconciliation of transactions.
That said, Ethereum’s sharding solution is a state sharding solution, although we don’t know how far along the initiative is, or when it might be ready for deployment.
In its current state, Zilliqa can still be used by Dapps that require very high throughput and transaction rates beyond what’s capable on other blockchains.
Zilliqa’s Programming Language
Scilla Programming Language. Image via Zilliqa.com
Not only is Zilliqa a new and unique blockchain, but the development team also created a new functional programming language known as Scilla.
Scilla focuses on making functional programming more secure and standardized, and it does this be separating state and function. In other words, it is a programming language that can differentiate between the actual computational work of a contract, and the communication aspects of the contract.
One downside to the Scilla language is that it is not Turing complete, and can’t be used to create applications that require conditional statements and certain types of loops. It does remain subject to formal logical proofs, and this is key to security. It allows users verify a contract is safe before using it, which is one of the keys to widespread adoption.
There is a token for the Zilliqa ecosystem and it is known as a Zilliqa (ZIL). Those familiar with other Dapp platforms like Ethereum and NEO know that the token is necessary as a mining incentive, and as tender for paying transaction fees, but perhaps most importantly as gas for contract execution.
ZIL was created initially as an ERC-20 token on the Ethereum blockchain. This was done because the project needed development funds, but the public main net for Zilliqa hadn’t been released yet. Once the main net is released (scheduled for third quarter 2018) the ERC-20 tokens will be exchanged for native Zilliqa tokens.
Zilliqa began its ICO with a private funding round that raised $12 million in ETH. Soon after the surging price of ETH made the funding received worth more than $20 million, meaning the ICO had reached its hard cap. Zilliqa cancelled plans for a public ICO round, but due to community interest it allocated 4,445 ETH to a January 2018 public sale.
You can currently buy, sell and trade ZIL on a number of exchanges including Binance, Upbit, Bithumb, Huobi.pro, and KuCoin among others. As of mid-July 2018 ZIL has a market cap of $598m and over $23 million in daily trading volume.
The coin has fallen in line with most of the cryptocurrency market and was trading as low 6c as of Jul 13, 2018, but has since recovered slightly to about 8c. Nevertheless, there is obviously great interest in the coin right now, which could be in anticipation of the launch of the main net.
The Zilliqa team is comprised primarily of PhDs in computer science with an academic background. In fact, Zilliqa was born from an R&D project of the National University of Singapore and more than two years of work had a functioning blockchain before the Zilliqa ICO.
The CEO of the project is Xinshu Dong, who completed his PhD at the National University of Singapore. Since then he has been a leading cybersecurity expert, working on a number of security projects for the Singaporean government.
Zilliqa Team. Image via Zilliqa.com
The Chief Scientific Advisor is Prateek Saxena, who received his PhD from the University of California, Berkley. He is currently a professor of computer science at the National University of Singpaore. He was also the professor of Loi Luu, the CEO and founder of the Kyber Network.
The Cypto Lead for the project is a Research Fellow at NUS named Amrit Kumar. He is the holder of a PhD from Universite Grenoble-Alpes.
Finally, there is the Zilliqa advisory board, which includes the following prominent blockchain notables: Loi Luu, Co-founder of Kyber Network; Vincent Zhou, Founding Partner of FBG Capital; Nicolai Oster, Partner at Bitcoin Suisse AG; and Alexander Lipton, Founder and CEO of StrongHold Labs.
Scalability will remain an issue for blockchain technologies for the foreseeable future. While existing blockchain projects are looking for a work-around that likely won’t provide more than a short-term solution, the team at Zilliqa is taking a different approach and tackling the issue head on, with a unique and innovative approach.
While Zilliqa may not have the ultimate solution yet, it is sure to be an important step in blockchain technology, and there’s good chance its development of sharding technology will come into play in numerous future blockchain projects.
Featured Image via Zilliqa.com