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…
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. After running on its testnet for most of 2018, the highly anticipated Zilliqa mainnet was launched in January 2019.
Benefits of Zilliqa Public Blockchain. Image via Zilliqa.com
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, Zillqa 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. As of August 2019, the network is capable of processing 2,828 transactions per second. 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.
Zilliqa: Solving the Scalability Problem
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. And this needs to be done with security still in mind. The security of the network shouldn’t be compromised in order to achieve greater speed and throughput.
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.
Example of Scaling Capacity on Zilliqa. Image via Zilliqa.com
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. The network has been able to scale to 2,828 transactions per second successfully.
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.
Zilliqa with Divide & Conquer. Image via Zilliqa.com
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.
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.
Example of BFT Consensus. Source: slideshare
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 are an increasing number of 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 running on a sharded blockchain. A smart contract 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.
Assignment for Payment Transactions. Image via Zilliqa blog
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.
After nearly two years of work, Zilliqa released smart contracts on June 10, 2019. This allows developers to write and deploy smart contracts on the Zilliqa blockchain using the safe-by-design smart contract language Scilla. The smart contracts come with a number of impressive features:
- The Scilla language comes with static analyzers that will check for bugs within each contract before they go live.
- Scilla comes with its own library of standard operations, removing the need to rely on external programming libraries.
- Scilla is balanced between tractability and expressivity, enabling formal reasoning regarding contract behavior.
- There is a very clean separation between different operational components such as communication with other contracts and computations. This will prevent hacking incidents such as the Parity or DAO hacks.
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 be used by Dapps that require very high throughput and transaction rates beyond what’s capable on other blockchains.
Zilliqa’s Programming Language
Not only is Zilliqa a new and unique blockchain, but the development team also created a new functional programming language known as Scilla.
Zilliqa’s smart contract language, Scilla, is safe by design and addresses several known security vulnerabilities in existing languages. As a functional programming language that allows for static checks and formal verifications, developers will also be able to easily conduct thorough checks to ensure that their smart contracts behave as intended.
Advantages of Scilla over Solidity Smart Contracts. Image via Zilliqa
Scilla focuses on making functional programming more secure and standardized, and it does this by 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 to verify a contract is safe before using it, which is one of the keys to widespread adoption.
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 team has undergone some changes in the past 18 months, with the former CEO Xinshu Dong and the former Chief Scientific Advisor Prateek Saxena both stepping down from active roles at the project and joining the Board of Directors and becoming advisors to Zilliqa.
In their absence, the former Crypto Lead and a co-founder of the project, Amrit Kumar, has stepped up and taken on the role of President and Chief Scientific Officer for Zilliqa. Amrit Kumar has a Ph.D. from Universite Grenoble-Alpes. In addition to his role at Zilliqa, he is also a research fellow at the National University of Singapore.
Finally, there is the Zilliqa advisory board, which includes Zilliqa founders Xinshu Dong and Prateek Saxena as mentioned above, as well as the following prominent blockchain notables: Loi Luu, Co-founder of Kyber Network; Vincent Zhou, Founding Partner of FBG Capital; and Alexander Lipton, Founder and CEO of StrongHold Labs.
The Zilliqa Community
Zilliqa has a very large and active community, which should help support the continuing growth of the project. The Telegram live-chat channel has nearly 25,000 members, and the Zilliqa Twitter account has over 66,000 followers.
On Reddit, where crypto-enthusiasts are particularly active, the sub-Reddit for Zilliqa has more than 10,000 readers, daily updates and a good number of comments showing just how active and involved the community is. This type of community involvement is one of the strengths of Zilliqa and will help to carry it forward.
There is a token for the Zilliqa ecosystem and it is known as a Zilling (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. Following the January 2019 release of the mainnet, the native ZIL tokens have been issued, and users are required to exchange the ERC-20 ZIL tokens for native ZIL tokens.
This can be done easily by depositing the ERC-20 ZIL tokens with a participating exchange (the list can be seen here) and then withdrawing the native ZIL tokens to a wallet that is compatible with native ZIL tokens.
This token swap procedure will eventually end and the ERC-20 ZIL tokens will become obsolete, so users are encouraged to exchange ERC-20 ZIL tokens for native ZIL tokens as quickly as possible.
ZIL Price History. Image via CMC
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 canceled plans for a public ICO round, but due to community interest, it allocated 4445 ETH worth of ZIL to a January 2018 public sale. That public sale ended on January 4, 2018, and raised $22 million with tokens sold for $0.00381 each.
Like nearly every cryptocurrency ZIL has gone through massive ups and downs. Following the January 2018 ICO, the ZIL token saw its value rising strongly, finally reaching an all-time high of $0.231489 on May 10, 2018.
As the cryptocurrency bear market took hold the token fell quickly from that high and has traded steadily lower since August 2018. As of August 21, 2019, the ZIL token was at its all-time low of $0.006943. Fortunately for early investors, this is still nearly double the January 2018 ICO price.
Buying & Storing ZIL
The liquidity at these exchanges is well spread out which means that trading is not reliant on a single exchange. You also have decent levels of liquidity on each of the exchange order books. This means that you can get easy execution for your orders with relatively little slippage.
There are a number of Zilliqa wallets that have been released and can be used for the native ZIL tokens. The top recommendation from the Zilliqa team is the Moonlet wallet, which is a blockchain agnostic wallet that supports both Ethereum and Zilliqa chains.
It is recommended as it has been audited by BitSentinel and has gone through a bug bounty program on BugCrowd. The Trust wallet also supports Zilliqa, as does the hardware wallet Ledger.
Development & Roadmap
So, how far along in the development is the Zilliqa protocol?
Well, this can sometimes be hard to determine as projects often tend to overstate the amount of work that they are getting done.
However, one of the reliable ways to measure this is to take a look at the coding activity in their public code repositories.
Therefore, I decided to jump into the GitHub for Zilliqa and measure the amount of code that the developers were pushing. Below are the total number of commits over the past year for their two most active pinned repos.
Code Commits over 12 months for Select Repos
As you can see, there has been quite a bit of activity here and the developers have been pushing a decent amount of code. You should also note that there are another 16 repos with varying levels of activity.
This is about in line with some of the other projects that we have seen. This level of development also makes sense when viewed in conjunction with the broader roadmap.
Below are some of the most exciting milestones which still lay ahead of the project.
- Q3 2019: Core protocol refactoring
- Q3 2019: Scilla Enhancements
- Q4 2019: Broader support for higher level languages
It will be interesting to see whether the developers are able to keep to these milestones. If you wanted to keep up to date with the development then keep your eyes on their official blog.
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