Hi everyone, here is the first of the promised status updates about the Qubic project. Our goal is to send out a status update on the 3rd of every month.
Last month was a milestone to us because we were finally able to unveil what this mysterious Q project was that had been hinted at for so long. On June 3rd we went live with the Qubic website, which explained in more detail what we are trying to achieve with the Qubic project.
Of course this immediately resulted in new questions, of which probably the most asked question was what time line to expect. Therefore we worked on a road map for Qubic, which was completed a few weeks ago, but due to our still limited resources the web site has not been updated with this road map yet. Expect a road map in the near future that looks similar to the one on the Trinity website. For now we will include the Qubic road map further down in this update.
We were also originally planning an AMA for Qubic in June, but because we wanted the road map to be publicized first we have had to delay that as well. We are currently in the process of picking a date when every participant is available. We’re looking at the week of July 16th for the AMA and our goal is to set the final date this week.
Progress made in the month of June
The Qubic project is roughly separated into 2 major developments, that are interdependent:
- The Qubic protocol
The first part of the month the focus was on the layout of the Tangle messages and the structure of the local Q-Tangle, that will hold a local copy of all Qubic-related transactions.
- The Abra language
Our focus the second part of the month was on finalizing the definition of Abra and starting on the Abra compiler. A lot of progress has been made on the source code parser. Our current goal is to finalize the compiler first and get some initial documentation ready, so that it will be possible to work on the different parts that depend on Abra being finalized in parallel. Another goal is to provide the ability to run Abra in a controlled environment, so that we get to a point where the community can start playing with the language.
Apart from working on these code parts we have also started on a whitepaper-like document that will go in more detail about the mathematical aspects of Qubic.
The Qubic Road Map
As promised now follows the Qubic road map. As stated above we have grouped the sub-projects in 2 major categories: the Abra language and the Qubic protocol. There are no hard dates yet. The main purpose of the road map is to provide you with an idea of what’s in store and what the scope of the project is.
Note that this is not the final road map by a long shot. Things may still change along the way, and there are lots of other ideas still laying around. Our focus will be on getting a Proof of Concept (PoC) version out as soon as possible. The items marked as future extension will most likely not be part of this PoC.
The Abra Language
The reference documentation for the Abra language and its standard libraries.
A compiler that compiles Abra source code into a qubic.
Abra support library
A library of standard Abra functions.
An interpreter that can run a compiled qubic on any platform.
Qubic to x86 compiler
A compiler that can cross-compile a qubic into x86 code that can be run directly.
Qubic x86 support library
A library that maps some of the standard Abra functions to more efficient x86 equivalent. These will mostly be low-level functions that can be optimized by using specific x86 instructions.
Qubic to FPGA compiler
A compiler that can cross-compile a qubic into Verilog code that can be loaded and run on an FPGA directly.
Qubic FPGA support library
A library that maps some of the standard Abra functions to more efficient Verilog equivalent. These will mostly be low-level functions that can be optimized by using specific Verilog instructions.
Abra development environment
Development environment that facilitates programmer-friendly creation of Abra code.
The Qubic Protocol
A whitepaper-like document exploring the mathematical properties of some parts of the Qubic protocol.
The reference documentation for the Qubic protocol.
Implementation of reliable timestamps for use in various parts of the Qubic protocol.
Qubic URI processor
Implementation of URI processor to handle accessing of external data.
Definition, documentation and implementation of all Qubic-specific transactions.
Separate localized tangle optimized to support Qubic protocol. The Q-tangle will only contain the transactions relevant to the Qubic protocol. This part will hook into the Tangle message stream and filter out Qubic transactions.
The parts of the Qubic protocol that handle everything assembly-related. This includes creation and maintenance of assemblies by defining assembly and epoch parameters.
The parts of the Qubic protocol that handle everything related to quorums.
This includes the oracles committing and revealing results and coming to consensus about the quorum. It also includes the qubic owner validating the quorum result.
The parts of the Qubic protocol that handle everything related to rewards. This includes the qubic owner side that determines to pay how much to which oracles. It also includes the oracle side that keeps track of actually being paid.
Qubic resource test
The parts of the Qubic protocol that handle everything related to the resource test phase. This includes defining a Proof of Work qubic that can function as an initial implementation. It also includes the part of the Q-node that runs the resource test, posts the results, and agrees on the weighing factors.
Core part of the Q-node that handles triggering of events and schedules and runs qubics.
An IOTA full node that integrates the ability to run the Qubic protocol.
Non-trivial example use case of the Qubic protocol running on the Tangle.