We are nearing the completion of Zilliqa version
5.1.0, which brings another substantial set of improvements and bug fixes to our core protocol. A more complete description of this release should be out soon. In the meantime we can briefly go through a few of these improvements and fixes here, together with the new Scilla updates we have been working on:
First, miners will be happy to know we’re changing up our shard assignment algorithm to minimise the number of unsharded nodes. The existing algorithm requires the composition of full 600-node shards before an additional smaller shard (of at least 500 nodes) is composed out of the remaining nodes. If the minimum shard size of 500 is unmet by the remaining nodes (for instance, if there are only 499 nodes left), then that smaller shard doesn’t get created. The replacement algorithm in version 5.1.0 will instead go with the sharding configuration that results in the least amount of wastage (i.e., unsharded nodes).
On the flip side, we’re also changing the behaviour of the Directory Service committee in the event that no shards are formed. Currently, this causes the DS committee — and, in effect, the entire network — to stop progressing. By allowing the committee to continue with zero shards, new nodes can continue to attempt rejoining the network once it has progressed to the next proof-of-work phase.
Finally, the current version fails to store the DS leader in the event of one or more view changes. This translates into a slower network recovery process as the lookup nodes start with an incorrect view of the latest DS leader. Lookups are responsible for announcing the start of the next PoW phase, which they determine through a signal received from the DS leader. Since their view of the DS leader is incorrect, the first DS epoch after a network recovery operation ends up with no new PoW submissions apart from the ones coming from existing shard nodes.
Over the past two weeks, we have been working on the Scilla-to-Coq transpiler as well as refactoring Scilla as a library. In parallel, we have been working on adding basic primitives to support zkSNARKS. More details follow:
Support for zkSNARKS:, we have been working on adding privacy features to Scilla, specifically support for zkSNARKs. To this end, we have added the required cryptographic primitives as explained below:
- Support for a pairing friendly curve namely Barreto-Naehrig curve `alt_bn128`.
- Support pairing operations.
Most of the implementation for this is already complete and we are resolving some platform specific build issues.
Scilla as a library: We have been working on the Scilla-as-library project. Since this is intended to be used across multiple projects involving the Coq theorem prover, SMT solvers, static analysis and testing frameworks, we are engineering a scilla-based package with well-defined interfaces which we will publish on central software repositories such as the opam package manager. It’s a work-in-progress and we are refactoring the public interfaces to make sure we build a robust and dependable package. As of now we have factored out some monolithic Scilla code into a utilities library and added restricted interface files for previously fully exposed OCaml modules.
Scilla-to-Coq transpiler: The transpiler mentioned in the previous update can now translate a subset of Scilla types and expression: we can now transpile most of the functions of the ListUtil and BoolUtil standard Scilla libraries. We have also been exploring the possibilities of integrating Scilla with the Coq theorem prover at the level of OCaml API or the MetaCoq API.
Scilla teaching material: In preparation for an upcoming Scilla workshop in London, UK, we are working on setting up a repository of teaching material about Scilla, including slides, exercises, and so on.
Summary of bug fixes, refactoring and others:
- Improved String builtins description in Scilla docs
- SocialPay contract refactoring
- Fixed a build issue
For further information, connect with us on one of our social channels: