Technical Update 24 September 2019

We are two weeks into Zilliqa version 5.0.0, and so far the major update is working smoothly and as expected.

Technical Update 24 September 2019

Greetings everyone,

We are two weeks into Zilliqa version 5.0.0, and so far the major update is working smoothly and as expected. There have been some minor issues that need addressing, and the team is actively working on it. Below we have outlined two of the more substantial issues.

Core Tech

First, a fix version 5.0.1 was released shortly after the mainnet upgrade. This version is directed at our seed nodes, and does not affect regular mining nodes. Seed nodes normally have a dedicated thread that periodically transmits transaction packets up to our lookup nodes, who in turn dispatch the packets to the shard network for eventual processing. In some startup situations, it turns out that this thread was not properly started, so we quickly introduced the fix for it into the mainnet.

Secondly, we have been dealing with the capability of shard nodes to process smart contracts under stress conditions. Even with the improved Scilla-IPC execution, there are still instances when shards are unable to reach consensus at the microblock level due to the variability of processing times between nodes. This may very well indicate that a significant number of nodes are running below the recommended minimum system requirements. To address this, we have introduced a system checking feature in our code to be able to more actively bring to the attention of miners any unsatisfied requirements on their machines. This check has been merged to our codebase and will be eventually introduced into the mainnet as well.

Scilla Updates

Multisig Wallet: Following a security audit of the multi-signature wallet contract in our test suite, we have been working on a new and improved version of the contract. This new version is currently going through thorough internal testing.

Compiled Scilla Backend: We recently wrote about a compiled backend for Scilla. As the first phase of the project, we’re working on a compiler that translates Scilla down to LLVM-IR. Over the past few months, we have added code simplification passes such as simple dead code elimination, monomorphize and closure conversion. More recently we are working on simplifying pattern matches so that they can directly be translated to C-like switch statements. At a later point, we plan to describe each of these compiler passes in more detail as a blog post. For now, we refer the interested reader to Chapter 5 of the book “The implementation of functional programming languages” for more details on this particular compiler pass (pattern match simplification).

Scilla as a library: We have started refactoring Scilla to make its components available to community developers as an OCaml library. We plan to give access to the parser, typechecker, and some other components as well. Using already existing tools like js_of_ocaml we can reuse Scilla implementation in web-compatible environment: browsers and VS Code editor immediately spring to mind. Some other ongoing internal projects like Scilla-to-Coq transpiler and the Scilla backend project will benefit from this move. Additionally, making Scilla more modular will result in a higher level of robustness of the project.

Nix package manager: Scilla’s dependencies are now available from the gaining popularity Nix package manager. This facilitates the development and we hope will attract more community members to make their contributions to Scilla. Setting up the development environment based on opam package manager may be challenging and by providing more tools we strive for making Scilla available for a greater number of computing platforms.

Scilla-to-Coq transpiler: Following our formal verification roadmap, we set to implementing one of important technical steps towards ensuring the user can embed the existing Scilla code into the Coq proof assistant to be able to formulate the specification of the contract at hand and prove that the implementation corresponds to the specification. The embedding process will be carried on automatically using the transpiler tool. Right now we are focusing on transpilation of the pure fragment of Scilla.

For further information, connect with us on one of our social channels: