Zilliqa Project Update #12
— Driving Adoption, Testnet Improvements
A Quick Statement About Comment Bots and Spam: It has come to our attention that there have been lots of people (or bots) commenting on social channels promoting Zilliqa, especially on YouTube. We have never and will never use this as a marketing tactic. Our position has always been to build a technology that speaks for itself, but we are also aware that marketing is important and we are taking steps to roll out adoption programs, build Dapps, encourage development, drive grassroots education and much more. However, spamming with comments or messages is definitely something we do not do or condone. While we truly appreciate and genuinely care deeply about the enthusiasm in our community, we ask that we should all be respectful of content producers and not spam anyone with information about Zilliqa — it becomes counterproductive for everyone. Also, to be clear, Zilliqa has never and has no plans to do airdrops. Any entity claiming to be giving away free ZIL tokens as part of an airdrop is fraudulent.
Hello everyone. Last week, we unveiled Testnet v2.0 which was a major milestone on our way towards launching the Zilliqa Mainnet in the next 3 months. With this release, we introduced the first Integrated Development Environment (IDE) for Scilla that allows people to begin building and testing smart contract applications on Zilliqa. Here is a tutorial on how to use the Scilla IDE.
Scilla has been designed to be more secure for building smart contract applications than current alternatives. When we began the planning process of building our scalable sharding blockchain platform (Zilliqa), we felt that there were serious security vulnerabilities with existing smart contract development languages that would be a major issue for mainstream adoption long term. Hence, we decided to also create a smart contract programming language to accompany our platform.
If you are interested in learning more from a technical perspective about the issue of smart contract vulnerabilities, please check out this paper released earlier this year by Prateek Saxena (Chief Scientific Advisor at Zilliqa), Ilya Sergey (Advisor), Aquinas Hobor (Advisor), and others: https://arxiv.org/pdf/1802.06038.pdf
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/ (Dev-related topics including the Ecosystem Grant)
Etheremon Team Testing Zilliqa
Last week, EMONT Alliance, creators of Etheremon, one of the most popular games on Ethereum, announced they would be moving their ‘battles’ off the Ethereum blockchain and have begun working with Zilliqa for a potential long-term collaboration.
Until now, Etheremon has run directly on the Ethereum blockchain and combines with virtual reality to create creatures that are completely unique and owned by the users because they exist as immutable records on the blockchain. However, this requires transactions to occur on the blockchain to record changes to characters or changes in ownership of the creatures. EMONT Alliance also has a new game EMONT Frenzy (http://frenzy.emontalliance.com/#/), an underwater battle game which has become difficult for users to play due to high gas fee requirements.
Gaming is viewed as one of the big potential applications for blockchain because it gives game developers the ability to directly incentivize gamers with rewards and also offers true ownership of in-game assets, even if the game were to be discontinued. We feel that games are a good fit for the Zilliqa platform because of our high throughput and low transaction costs.
We are working closely with the EMONT Alliance team and look forward to keeping everyone posted on our technical progress.
In the most recent session of the Blockchain Technical Reading Group initiative we are supporting, Amrit spoke on traceability in Monero — a privacy-preserving blockchain. This was the paper that was published by Amrit and other researchers which showed that in 88% of cases, the origin of the funds can be easily determined even in privacy-preserving blockchains like Monero.
We also hosted the winner of our Infographic Contest #zilliqacontest CyberiusDigital at our office. You can view the winning infographic here.
Xinshu shared on blockchains and how enterprises can adopt the technology at a session hosted by Surbana Jurong, a Singaporean government-owned company focusing on infrastructure and urban development.
We will be holding a series of events in China and Korea in the coming weeks.
Shanghai Zilliqa Meetup
Venue: Ocean Tower L29, 550 Yanan East Road, Huangpu, Shanghai
Seoul Zilliqa Meetup (with Kyber Network, Quantstamp and others)
Venue: 346 Gangnam-daero, Seoul
For the past two weeks, we’ve been working round the clock to give final touches to our testnet v2.0. We’ve added new features to Scilla interpreter, improved the stability of the system, reduced the network communication overhead using state-delta forwarding, and enhanced the security protection of testnet.
In the last two weeks, we have added several new features to the interpreter. One important addition is that the output of the interpreter now reflects the successful execution of accept statement. You may read more about Scilla statements in the language documentation. Recall that any incoming funds to a contract has to be explicitly accepted within a transition. Without an explicit accept, incoming funds are returned to the invoker. Output of the interpreter now has a mandatory boolean field _accepted to reflect acceptance or rejection of incoming funds. In the current implementation, either the entire incoming amount is accepted or none. With this information in the output, it becomes much easier to handle account balances post contract invocation.
Our Scilla built-in library is growing as we are adding more utility functions to it. For instance, we now have a map_to_list built-in, to convert Map entries to a list of (key, value) Pair, a function to convert a Uint32 to a value of type Nat and a bunch of other integer conversion utilities.
We have also added checks in the JSON parser to ensure that the passed input state variables, blockchain variables and message parameters match their corresponding definitions in a contract. Earlier, it was possible to pass an immutable parameter during initialization that was not defined in the contract. The interpreter did not have proper validation checks to report such errors.
Thanks to our community members on Gitter, we identified that algebraic data types (ADTs) such as Pair and Map were not correctly serialized in the output JSON generated by the interpreter. We have fixed these issues and have improved the type support for ADTs and Map in JSON parsing and printing. JSONs for Map and ADT now contain complete type information of their contents.
Debugging Scilla contracts is currently not an easy task. To improve upon this, we have initiated the implementation of a tracer for the interpreter. Once the tracer is implemented, it will become easier to identify errors or bugs in a contract.
Last but not the least, we have also been working on Scilla documentation which is now available at https://scilla.readthedocs.io. Do give it a read and help us improve it by contributing to the public Github repository: https://github.com/Zilliqa/scilla-docs.
For stability, we have implemented and refined the logic in multiple places to support new-node joining and old-node recovery in the testnet. We replaced busy-wait with condition variables, e.g., in the code that performs synchronization of account states and the consensus protocol. We also refined the logic for properly handling multiple corner cases for node rejoining. To improve the efficiency of forwarding transactions to other nodes, we optimized the protocol for sharing transactions, by combining multiple transactions into one message. To support rejoining feature for recovery, we added checkpoints to allow nodes to rejoin from its last failure state. To cooperate with view change, we implemented extra logic to enable a DS node to rejoin after view change in the new DS epoch.
To reduce the communication overhead across shards, we let nodes in a shard forward the changes of account states (state delta) to the nodes in other shards. At the same time, the proposed microblock and finalblock contains the hash of the changes, thus the nodes in the other shards can easily validate the correctness of the received state delta. With the correct delta, the nodes can update their local account states. Compared to the previous way of forwarding transactions directly to other shards, the current method saves a lot of communication cost by transmitting smaller-sized messages. It also reduces computation overhead, as the recipients don’t require to execute the transactions again to update their accounts states, but verify the delta and update the states.
On the security side of testnet, we implemented SafeMath library to avoid integer overflow of mathematical operations. We ask all nodes sending PoW solutions to send a signature and DS nodes will verify the signature and mixhash to prevent DoS attacks. We have added a whitlelist of IPs and DS nodes will not accept PoW submissions if the corresponding IPs do not belong to this list. Analogous to Bitcoin and Ethereum, nodes will periodically and automatically update this list to exclude potentially malicious nodes like DoS attackers.
A summary of the other enhancements is given below.
- Updated the serialization and deserialization functions for transaction and states regarding the latest update of Scilla.
- Applied conditional variable on transaction and state delta forwarding.
- Converted all blocknum datatype from uint256_t to uint64_t, to reduce memory usage.
- Replaced push_back with emplace_back to improve efficiency.
- Added https support and legitimate certificate for Kubernetes testnet in production use.
- Added Vagrantfile to the testnet tooling to provide standard working environment.
- Added ERROR state in consensus with the related exception handling functions.
- Cleaned excessive logs.
- Major fixes to smart contracts in wallet UI.
- Added immutable variables to contract UI.
- Updated js-lib API docs and examples.
New Zilliqa Team Members
Please welcome two new team members, Edison Lim and Sheng Guang.
Edison Lim, Blockchain Application Developer
Master of Information Security, Carnegie Mellon University, USA
Edison is a software engineer with specialization in blockchain application development, web development and cyber-forensics. Before joining Zilliqa, he wrote his graduate thesis paper titled “Security Analysis of Permissioned Blockchain Systems”. Edison is also trained in cyber-forensics and incident response by US-CERT while he was pursuing his graduate studies in the US. He is a recipient of the National Infocomm Scholarship from Singapore. Before graduate school, Edison graduated with B.Sc (Summa Cum Laude) from Singapore Management University. He has previously worked in management consulting and data science position.
Shengguang Xiao, Core Developer
Master of Mechatronic Engineering, Chong Qing University, China
Shengguang has over 9 years of experience in software development, with a focus on language parser, signal processing, image processing and multi-threaded software systems. During his former role at Keysight technologies, he has developed language parser for ICL and PDL and automatic test generator for IEEE 1687 standard. Before joining Keysight, Sheng Guang worked in ASM Technology Pacific for 6 years. He developed new AOI (Automatic Optics Inspection) product using high speed camera and advanced vision algorithm to find defect units in IC manufacturing. The product is being used by more than 20 factories worldwide.
We are actively interviewing and seeking to bring on high quality members to help Zilliqa achieve its maximum potential. We’re looking for programmers with deep C++ experience, compiler engineers, and associates and executives in business development. Please reach out if you feel you can bring value to the growing Zilliqa ecosystem!
Zilliqa in the News
EMONT Alliance partnership: https://ambcrypto.com/zilliqa-zil-working-emont-alliance-set-advance-gaming-world/
Zilliqa mentioned in TechCrunch as our advisor Evan Cheng becomes Director of Engineering, Blockchain at Facebook: https://techcrunch.com/2018/07/05/bookchain/
Testnet v2.0 Coverage:
An article highlighting the academic roots of Zilliqa: https://www.techinasia.com/team-academics-built-billiondollar-blockchain-startup-singapore