Hey everyone, sorry for the small delay in getting this status update out. We will still call it the February 3rd status update because I did not have the heart to ask Sabri to redo this gorgeous image. Did you know that Sabri provides a fresh image for every status update? He is responsible for most of the house style and doing such an amazing job at it. Funny in a way that the person responsible for our visuals is one of our least visible team members.

Anyway, January was a month of steady progress. A number of components are coming together nicely and we are getting more and more community involvement.

Ict

The component that has (deservedly) received most attention is Ict. Thanks to Lukas and a lot of community feedback there is a pretty stable code base now, and the number of Ict nodes has grown to over 400. There have been questions what exactly the purpose of Ict is, and rather than formulating my own answer I will give you this great description provided by one of our community members, lambtho:

IXI

On the IXI front Samuel has delivered a first version of graph.IXI, which is one of the components that is needed to get the final Qubic implementation working. It will allow a transaction bundle to refer to an arbitrary number of data pieces instead of only being limited to the usual two transactions.

Last week Samuel also started on another important component that is necessary to properly implement Qubic, the timestamping.IXI. This IXI module will be used to determine timestamps on the Tangle with high confidence level and will be based on this paper by our own Serguei Popov.

FPGA

On the FPGA/ASIC implementation of the Qubic Computation Model, Donald and Eric worked together to have the Qupla interpreter finally emit Verilog source code that can be compiled by the Verilog tools without any manual changes, which is a milestone that removes a lot of manual labor after each new iteration of code generation. Donald is now looking into some of the practical aspects of the FPGA implementation, like how to get huge trit vector data into and out of the FPGA over a limited amount of input and output pins.

Qupla

The Qupla interpreter continued to grow as well. First, the code base was reorganized to better group functionality and make it more understandable. Then we removed the need for explicit template instantiation. The interpreter will now automatically determine which functions from which templates need to be instantiated, which results in cleaner code and removes a headache for the Qupla programmer.

The interpreter is now able to generate correct tritcode according to the Abra specification, and is also able to read back and run this Abra tritcode. The interpreter can also generate and read back a separate tritcode block that contains symbolic information about the Abra tritcode. This should allow us, in the future, to debug and test code after it has been deployed on the Tangle.

Another feature that was added allows the programmer to debug the separate components that make up an application that works according to the Qubic Computational Model (QCM). The interpreter can emulate the functionality of the Supervisor process locally. This allows for end-to-end debugging of your Qupla code before it is deployed to the Tangle.

To demonstrate the new functionality and give a preview of how the QCM allows for very flexible combining of functionalities we created a Proof of Concept (PoC) implementation of Conway’s Game of Life in Qupla. A single Game of Life (GoL) engine services multiple GoL grid viewers that can be dynamically configured to show either a shared grid or to show a unique private grid. We intend to build out this PoC to show off more features of the QCM and at the same time be able explore the possibilities of the QCM.

Community

We would like to thank the community for stepping up their game this month. Not only did we receive several bug reports (all fixed!) and some really good suggestions for improvements, but there were also several people who started playing with Qupla and implemented some functions that could be added to the Qupla libraries and Qupla examples. These implementations in turn triggered several ideas on how to improve the Qupla language and library code.

So please keep having fun with it, share your ideas, and turn this project into a success by co-creation and collaboration.