Zilliqa Project Update #7 — Preparing for Events, Upcoming Initial Release of Scilla

Hello everyone! Every week, there is growing enthusiasm for what our team is building at Zilliqa. The community of Zilliqa supporters is growing and, most importantly, we feel that it’s one of the strongest and healthiest communities in all of blockchain. We are glad to share our latest progress with everyone in our community!

Our goal is to build a better blockchain infrastructure — one that is scalable, safe, and secure. One of the key pieces of this puzzle is to fix the major security issues with current smart contracts. Our solution to this problem is a new smart contract language called Scilla, that will allow developers to more easily develop smart contract applications that are safe, secure and scalable. Future functionality will allow anyone to be able to port their existing Solidity applications over to Scilla.

We are preparing to release the first version of Scilla to the world at an upcoming Zilliqa event in Singapore on May 23 (see below for details).

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:

Telegram: https://t.me/zilliqachat

Slack: https://invite.zilliqa.com/

Twitter: https://twitter.com/zilliqa

Reddit: https://www.reddit.com/r/zilliqa/

Github: https://github.com/Zilliqa/zilliqa

Gitter: https://gitter.im/Zilliqa/

Community Updates

Pavel Bains, CEO of Bluzelle joined us on the Zilliqa Telegram channel on 16 April for an AMA session on the Bluzelle-Zilliqa partnership. You can read more about the session here. We expect to have part of our smart contract layer ready around June and will look to test sample dApps on the Bluzelle platform.

En Hui spoke at the Ginco launch event. Ginco is a mobile wallet that supports cryptoassets including ZILs.

En Hui speaking at the Ginco launch alongside Etheremon

We have also started our Korean channels on Telegram and Kakao.

To promote a greater understanding of blockchain, we are supporting the Blockchain Fundamentals Technical Reading Group initiative in conjunction with the National University of Singapore. This group aims to introduce key technical topics in the blockchain space through presentations and readings. Yaoqi and Amrit will be presenting at upcoming sessions on Scalability (May 17) and Traceability (June 28) respectively.

The Blockchain Fundamentals Technical Reading Group at the Zilliqa office

Infographic Contest Winner

Congratulations to Cyberius Digital for creating the winning entry for the Zilliqa Infographic Contest. Check out the winning entry here: https://www.cyberius.com/zilliqa-in-a-nutshell-infographic/

A huge thank you to everyone who participated. It was a huge success. You can view all of the entries on Twitter by searching for: #ZilliqaContest

Partnership with Genaro

We are happy to announce that future DApp developers on Zilliqa will have the possibility to use Genaro as the backend distributed storage provider. With API support from Bluzelle and Genaro, DApp developers can now choose their preferred storage provider.

Upcoming Events

The month of May will be a very busy month for Zilliqa with us being involved in events around the world, including 1–3 May in Singapore (World Digital Assets Summit), 6–7 May in Wuhan, China, 15 May in New York, 16 May in Singapore (Tech in Asia Singapore 2018 Blockchain Stage), 17 May in Stockholm, Sweden (Bloxpo) and most importantly our major meetup in Singapore on 23 May:

Zilliqa Major Meetup in Singapore

Date: 23 May

Location: The Metro @ The Bridge, Singapore

Most importantly, we are hosting a major meetup in Singapore where we will be sharing more on our progress, which partners are coming onboard and a preview of our new smart contract language Scilla. To attend, register via meetup:

https://www.meetup.com/Ethereum-Singapore/events/249733843/

Media mention of this event: https://hype.codes/zilliqa-holding-meetup-singapore

For more details of our events in May, here is a list of where we will be:

https://gist.github.com/AmritKumar/471238cac51362120fa15a6236be8990

In the past two weeks, we distributed test tokens for the second round to allow community members to test the Zilliqa wallet and explorer. We thank community members for their help in testing the tools.

Meanwhile, our tech team has deployed more recovery mechanisms to resolve stability issues and added more features to improve the usability for developers such as the optimization of the logging system.

Main Protocol

We have been working on various features, e.g., recovery of nodes, new node joining, optimization of logging system and enhancement of the consensus protocol. For the first two (recovery and new node joining), we refined the underlying protocol to improve efficiency and reduce code redundancy. We conducted integration tests for the revised protocol of new node joining on AWS.

We also tested rejoining of DS (Directory Service) nodes both locally and on AWS, and further improved the joining process. In the meantime, we also considered the recovery of lookup nodes in the event they are out of sync due to various reasons. We implemented the RSync functionality to fetch the missing transaction bodies from other lookup nodes to ensure the consistency of block/transaction history for the recovered nodes.

Improved Logging System

We have refactored our logging system to be asynchronous, thread-safe, crash-safe and runtime configurable, by using g3log. Now our system has 3 logging levels, i.e., INFO, WARNING and FATAL, respectively. INFO is used for general debugging message/ dump data. WARNING is for issues that would not impact program to continue. FATAL is used when the system has any severe errors and has to stop due to critical abnormal behaviors. Our logger will stop the system and then dump the call stack into the log file. The basic usage is shown below:

  1. LOG_GENERAL(level, msg) Ex: LOG_GENERAL(WARNING, “This is debug message for LOG_GENERAL.”);
  2. LOG_EPOCH(level, epoch, msg) Ex: LOG_EPOCH(INFO, “23”, “This is debug message for LOG_EPOCH.”);
  3. LOG_PAYLOAD(level, msg payload, max_bytes_to_display) Ex: LOG_PAYLOAD(INFO, “This is debug message for LOG_PAYLOAD.”, payloadArray, 100);

Handling Subtle Cases

For the consensus protocol, we have improved the algorithms to handle multiple subtle cases. First, we replaced sleep-and-wait with conditional variable for microblock consensus announcement. The previous timing-based implementation periodically checks if it’s ready to process microblock consensus protocol. However, the sleep time is excessive - which results in the nodes getting stuck in a sleep-and-wait cycle, which eventually results in 1) a missing block (when the node becomes a shard leader) and 2) checking of state root fails, which causes the node to be eliminated from the network. We have applied conditional variable to revise the logic to be triggered by a proper event, thus avoiding the timing issue.

Second, we able to handle situations where various consensus messages are received in an out-of-order manner. We adjusted the timing for the leader to send multi-signatures, which allows non-leader nodes to complete the state transition in the consensus protocol.

A summary of the tasks accomplished on the main protocol is listed below:

  1. Bug fixes, including inappropriate usage of broadcasting in lookup and unnecessary producer/consumer mutex etc.
  2. Implemented and tested additional commands in the AWS script for testnet operations.
  3. Improved and tested Zilliqa-Daemon for recovery of shard node, DS node, and lookup node both locally and on AWS.

Wallet and Block Explorer

We have received multiple reports that community members have transferred the ERC20 interim ZIL tokens to our Web Wallet. As such, we have added text warnings for our wallet on different pages. Since our ERC20 interim ZIL tokens and test tokens in the testnet are non-convertible and unrecoverable, please DO NOT send any ERC20 tokens to our testnet wallet.

We have also added multiple new APIs and features into our wallet and explorer. A summary of improvements on the wallet and block explorer is given below:

  1. APIs for sharding structure, the number of transactions for DS Epoch and Tx Epoch.
  2. Supported both development and production environments for explorer/wallets, for easier development/debugging
  3. Connected explorer to specific lookup nodes
  4. Added text warnings for web wallet
  5. Fixed multiple callback functions for JS library

Join Zilliqa!

We are actively interviewing and looking to bring on high quality members to help Zilliqa achieve its maximum potential. We’re actively looking for programmers with deep C++ experience, compiler engineers, and associates and executives in business development. Please reach out if you feel you can add value to the growing Zilliqa ecosystem!

Zilliqa in the News

Coin Telegraph gets Xinshu’s opinion on the importance of security of smart contracts: https://cointelegraph.com/news/bitcoin-headed-for-100000-or-100-ceos-big-investors-and-harvard-economist-predictions

Coverage of the Zilliqa Testnet: https://coinjournal.net/zilliqa-token-surges-33-following-testnet-release-of-blockchain-platform/

https://www.investinblockchain.com/zilliqa-releases-public-testnet/

Zilliqa overview: https://unhashed.com/cryptocurrency-coin-guides/what-is-zilliqa-zil/

Xinshu’s interview with Crypto Beadles: https://www.youtube.com/watch?v=QltJPp694u4

Zilliqa overview in Japanese: https://magazine.ginco.io/post/dapps_zilliqa/