Zilliqa is a new blockchain platform that is using the technology of sharding to scale to thousands of transactions per second as the number of nodes in the network increases. Zilliqa is built from the ground-up to be a more secure environment for high-throughput smart contract applications.
In Q1 2018, we launched the world’s first working implementation of sharding in Zilliqa Testnet v1.0 with 1,000 nodes (4 shards).
Today, the team at Zilliqa is proud to announce that we have hit a major technological milestone on the road to the launch of our mainnet, scheduled for Q3 of this year, by unveiling the Zilliqa Testnet v2.0 which we have assigned the codename “D24.” D24 is a popular durian variety prized for its creamy texture and bittersweet taste.
In D24 we are unveiling a number of exciting features, including a working environment for developers to begin testing our new, secure smart contract programming language — Scilla. D24 will also allow developers to begin testing smart contract applications live on a testnet.
Specific features in D24 include:
- Documentation to begin programming applications in Scilla.
- Scilla Blockchain Integrated Development Environment (IDE), an integrated environment connected to a dedicated blockchain testnet, where users can a) write smart contracts, b) upload them to the blockchain, c) send messages to smart contracts and d) receive messages from them. The link to the wallet with smart contract functionality is available at https://wallet-scilla.zilliqa.com and the explorer for the dedicated Scilla testnet at https://explorer-scilla.zilliqa.com.
- Scilla Interpreter Integrated Development Environment (IDE) where developers can write their Scilla programs and upload them to the dedicated Scilla testnet with the Blockchain IDE as above.
- An upgraded version of our existing testnet (1000 nodes) https://explorer.zilliqa.com and wallet https://wallet.zilliqa.com
- Opening up the testnet for new nodes to join https://docs.google.com/forms/d/e/1FAIpQLSesn-MxThl4ocKCrjUYSPGc463E7-1I1O1v_GGccYbqfFr7zg/viewform
Before we get into details, I would like to take this opportunity to thank our development team for their outstanding dedication and hard work. We have assembled an incredible technical team that has been able to tackle tough problems we have encountered along the way. Zilliqa is being built from the ground-up and the team has constantly been proving that they can innovate and execute with excellence and to deadline.
Scilla IDEs and Scilla Testnet
Two of the main foundations that brought together our team to build Zilliqa were to solve the scalability issue in blockchains and also to create a secure environment for developers to build smart contract applications.
In the blockchain world today there are major fundamental flaws with the way existing smart contract applications have been built. In fact, with a better design of the underlying smart contract programming language, we could have prevented many of the famous accidents in recent blockchain history — namely the DAO hack and the Parity bug. This was one of our motivations for creating Scilla, our new and more secure intermediate-level smart contract programming language that will power applications on Zilliqa’s high-throughput blockchain.
In today’s release we are introducing two modes for anyone to start programming and testing with Scilla. The details on how to use these two modes are documented at https://scilla.readthedocs.io/en/latest/scilla-trial.html. Here is a brief introduction to both:
- Blockchain IDE: The first one is an integrated environment connected to a dedicated blockchain testnet, where users can a) write smart contracts, b) upload them to the blockchain, c) send messages to smart contracts and d) receive messages from them. This blockchain IDE allows developers to test Scilla in a ‘live’ environment with (nearly) all of the features of a blockchain. To test smart contracts, users will need testnet ZIL tokens to pay for gas, which can be requested here: https://docs.google.com/forms/d/e/1FAIpQLSc2QaNq8nBK1s5IcwTLgvxMD7caTaurVaVuuuteB7okqaMitw/viewform. The link to the wallet with smart contract functionality is available at https://wallet-scilla.zilliqa.com and the explorer for the dedicated Scilla testnet at https://explorer-scilla.zilliqa.com.
- Interpreter IDE: For more adept users who would like to get more hands-on with Scilla programming, they are encouraged to refer to https://scilla.readthedocs.io/en/latest/scilla-in-depth.html and try out our Integrated Development Environment for Scilla. Note that this serves as a simple testing environment, and it is not connected to any blockchain network. Scilla developers can write their Scilla programs here, run tests with the simulated functionality, and then upload them to the dedicated Scilla testnet via the blockchain IDE mentioned above.
To begin with, we have included five example smart contracts that demonstrate how applications are built in Scilla:
HelloWorld: This is a simple contract that allows a pre-defined account to set a welcome message which can be retrieved.
Crowdfunding: Crowdfunding implements a Kickstarter-like campaign where users can donate funds to the contract. If the campaign is successful, i.e., enough money is raised within a given time period, the raised money can be sent to a pre-defined account. Else, if the campaign fails, contributors can take back their donations.
Zil-game: This is a two-player game where the goal is to find the closest pre-image of a given SHA256 digest. A game for the computer geeks!
FungibleToken: A fungible token contract that mimics an ERC20-style fungible token standard.
OpenAuction : A simple open auction contract where bidders can make their bid and the highest and winning bid amount goes to a predefined account. The remaining bidding amounts can be claimed back by the corresponding bidders.
Detailed Scilla Documentation
Please refer to the extensive documentation we have created that outlines the design architecture, features, and how to build actual applications using Scilla. It provides in-depth explanations, details, and everything else developers will need to get started.
Check out the Scilla documentation here:
Testnet v2.0 Improvements
We have included in this release of the testnet major improvements to the infrastructure, including stability, mining, dev-ops and smart contract support.
For stability, we have implemented persistent storage using levelDB, recovery of normal/DS/lookup nodes and the view-change mechanism to replace malicious nodes. In this released version, any node has the capability of re-joining the network at the next DS epoch when it gets out of sync or disconnected from the system. We also optimized the persistence storage to increase efficiency and reduce storage capacity as much as possible. We further improved the mechanism of view change, which happens when the protocol cannot proceed to reach consensus for a period of time and triggers a timeout. When there is a timeout, the DS committee will run the view-change protocol to agree on the the new DS leader to resume the protocol.
For mining, we’ve finished the implementation for nodes (or miners) to join the testnet as normal nodes or DS nodes during the period of pow1/pow2. We reward all the nodes including DS and shard nodes through their involvement in the consensus protocol. Specifically for each transaction epoch, nodes that participate more actively in the consensus protocol (through signature count) are rewarded with more tokens. With the implementation of NAT resolver, now we support new nodes to join us with/without public IP addresses. Further, we’ll release our docker image and instructions for users soon.
For dev-ops, we containerized our main project Zilliqa. As a result, we can easily launch a 20- to 1000-node Kubernetes cluster on our cloud provider and are running an internal large-scale Zilliqa testnet on it. We also refactored our logging system to be asynchronous, thread-safe, crash-safe and runtime configurable, by using g3log.
On smart contract support, we have refined the implementation of transaction / account to support smart contracts. We’ve finished implementing the first version of an interpreter to run Scilla contracts. The reference interpreter is being developed in OCaml. The current version supports a subset of the language specification that is sufficiently expressive to support non-trivial contracts such as Kickstarter and a multi-player commit and reveal game. We’ve implemented the first version of the Scilla wallet (https://wallet-scilla.zilliqa.com) that allows end users to deploy smart contracts and invoke transitions on our testnet. A blockchain IDE is connected with the backend blockchain infrastructure through several APIs.
Come and try out our new testnet and please fill out the form here to receive test tokens, https://docs.google.com/forms/d/e/1FAIpQLSc2QaNq8nBK1s5IcwTLgvxMD7caTaurVaVuuuteB7okqaMitw/viewform
Opening Up the Testnet for New Nodes to Join
In D24, we are opening up our testnet to start inviting external nodes to join the testnet. At this stage, the nodes will still be running the Zilliqa code on CPUs. In the near future, we plan to switch to GPU scripts for running the proof of work part in GPUs, while other components in CPUs. Nodes running for the testnet will be awarded testnet tokens as they participate in the consensus.
NOTE: The tokens awarded to the nodes in the testnet are testnet tokens, and they ARE NOT ZIL ERC-20 tokens.
If you are interested in running a node on the Zilliqa testnet, please register here, https://docs.google.com/forms/d/e/1FAIpQLSesn-MxThl4ocKCrjUYSPGc463E7-1I1O1v_GGccYbqfFr7zg/viewform
We will soon be releasing the details on how to run a testnet node, including a docker image.
Recently, we announced the Zilliqa Ecosystem Grant Programme — a $5M USD fund for building tools and dApps on the Zilliqa platform. So far we have received several promising submissions. Thank you for your support!
If you would like to take on the challenge to build good toolchain for Zilliqa or have a dApp project or an idea to leverage the high throughput and high security, we will be happy to go over the technical details with your team. Join our Gitter channel at https://gitter.im/Zilliqa/ecogrant.
Summary of Testnet & Scilla Web Links
Zilliqa testnet v2.0 wallet: https://wallet.zilliqa.com
Zilliqa testnet v2.0 explorer: https://explorer.zilliqa.com
Zilliqa testnet v2.0 address registration for test tokens: https://docs.google.com/forms/d/e/1FAIpQLSc2QaNq8nBK1s5IcwTLgvxMD7caTaurVaVuuuteB7okqaMitw/viewform
Zilliqa testnet v2.0 new node joining registration: https://docs.google.com/forms/d/e/1FAIpQLSesn-MxThl4ocKCrjUYSPGc463E7-1I1O1v_GGccYbqfFr7zg/viewform
Scilla testnet wallet (also the blockchain IDE): https://wallet-scilla.zilliqa.com
Scilla testnet explorer: https://explorer-scilla.zilliqa.com
Scilla interpreter IDE: https://ide.zilliqa.com/
Scilla documentation: https://scilla.readthedocs.io/en/latest/
As always, to learn more about Zilliqa or to discuss technical aspects of the project, feel free to connect with us through any of our official channels below:
Gitter: https://gitter.im/Zilliqa/ecogrant (Ecosystem Grant channel)