End of Year Dev Update — Roadmap for 2020
2019 has been a very exciting year for our engineering department. We were able to make significant progress with our software offering, for example with IRI, Trinity, individual client libraries and Qubic. We also started new projects along the way. We have built a very capable Rust team working on the next generation of our node software that will transition with us through Coordicide. Most recently, the Hornet team has also released a lightweight Go node that extends our software ecosystem.
We believe next year is going to be even more exciting, as we have quite a few significant changes coming in the first half of next year. The changes are improvements mainly based on collaborations with our research department, as well as building on some of the work they have been doing for Coordicide.
We are excited to share the next milestone in the IOTA protocol, a set of significant Mainnet improvements, all of which will be introduced to the network before Coordicide. These changes will significantly improve the scalability of our Mainnet, and also make building on top of IOTA a much better experience.
Since its inception, IOTA has been using a Winternitz one-time signature scheme (W-OTS), which has its advantages, but also constitutes a drawback with regards to both user and developer experience. We have decided to support both a W-OTS approach as we currently do, but also start supporting an additional signature scheme. All without changing the transaction layout. This will bring the following benefits with it:
- Reusable addresses— the additional signature scheme will support reusable addresses. This means that user-centric experiences can avoid having to work around generating new addresses and ensuring existing addresses are not spent from twice.
- Significant network throughput improvements— the signature size for the additional signature scheme is much smaller than for W-OTS (approximately 40 times smaller). This means that nodes will be able to process and send a substantially larger amount of value transactions with the new signing scheme.
This change will allow developers to make a choice as to what is best for their use case. While IoT-focused use cases may want to stick to W-OTS, more user-driven experiences may choose to instead go with signature scheme that supports reusable addresses.
Setting up and running a node has become a significantly better experience over the past year. Users have today the choice of either using IRI or Hornet when participating in the network. We are aware, however, that there are still some parts of the experience that can be made significantly better — for example, manual neighbor peering degrades the initial node set up experience. It also complicates setting up private networks for experiments and PoCs.
We have decided to make changes, therefore, to the Autopeering module from our GoShimmer prototype and include the functionality on the current Mainnet. This means that nodes will be able to just launch, and the node will take care of finding and connecting to its neighbors automatically. For particular scenarios, it still makes sense to peer manually, so both options will be available.
We are completely rethinking the way we calculate balances and handle conflicts in the network. The new approach allows us to significantly simplify our tip selection algorithm. Not only that, we will be distinguishing between the regular tip selection algorithm for our node software, and what we call a ‘milestone selection algorithm’ that will be used by our Coordinator.
Both of the approaches will make the network much better, with the milestone selection focusing on being able to support as much TPS as possible. You can read about the approaches on our IOTA Cafe forum:
We will be more than happy if you join the discussion on any of these topics.
You can view all the above and many more exciting things coming in 2020 on our brand new research & engineering roadmap.
The roadmap highlights the important milestones within Technological maturity, User adoption, Coordicide, and Qubic all in one place.
We will keep evolving this roadmap in the upcoming weeks to better capture our business-driven objectives as well.
The Bee team has created Sync Network RFC and is working on the Async Network RFC. The design of cryptographic primitives is mostly done. Other RFCs that have been worked on by the team are the are Signing scheme, Sync Tangle, and Async Tangle.
The Bee team is also working on prototype version that it will regularly update with the latest crates so that it can bring the development together in one place. It will also involve community in the effort.
You can find all the RFCs and submit your own in the in their respective GitHub repository.
You can always see what the Bee team is up to in the open Discord channels where the day-to-day team communication happens. See the `bee-dev`, `bee-discussion`, and `bee-rfcs` channels. You can find the meeting minutes for both RFC and development meetings in the meeting minutes repository.
The main focus of IRI in the current weeks is a caching mechanism for transactions, their metadata, and parent transactions. The caching mechanism will improve the performance of the node software and allow it to process more transactions per second.You can learn more about the particular issues here:
We are also working on notably changing the milestone solidification logic. This will make the whole process more efficient. This change also allows us to improve the network confirmation times.
The Qubic team — composed by Thomas, Eric, Jonathan, Donald and Evaldas — met in person during the second week of December. The team discussed the roadmap for the next year and the scope of the project.
At the meeting, Thomas managed to get an initial Linux-based supervisor core running on the FPGA. Eric’s design for the Abra-to-FPGA configuration was finalized and approved, and Eric will start working on the software side of that while Thomas and Jonathan will work on the FPGA related parts. Donald will continue to do hardware research and help with documentation. Evaldas has been steadily improving the messaging layer and has started implementing it on GoShimmer with help from Wolfgang.
This month the Trinity team has been preparing three key releases.
The first of which is Trinity 1.2.0, adding MoonPay integration and allowing Trinity users to purchase IOTA directly from within the wallet. The integration has grown into something very comprehensive and now provides a totally seamless purchase flow.
The second release is Spark, a new experimental wallet. Spark is a web-based temporary burner wallet that should be used with small amounts only. It serves as a great peer-to-peer wallet and has provided a great testing ground for some ideas for Trinity V2.
The final release is Trinity 1.3.0 beta. This version adds a spent address recovery tool and Proof of Work speed ups of 2–3X.
Look out for each of these releases imminently.
The GoShimmer team is currently working on finishing important components that will establish the minimal version of a prototype. Specifically, adding a new version of Autopeering, finalizing ledger state implementation, the tip selection algorithm and adding a rate control mechanism. The prototype will include an API for sending 0 value transactions.
We are close to finalizing the prototype we will be using for validating MAM 1.1 with the community and our partners. We are already in the process of validating some of the scenarios and use cases with current partners.
This effort will ramp up throughout January, when we would like to take the time to ask for everyone’s feedback on the functionality of the new MAM. We will use this feedback for the final implementation of MAM.
We hope that this year has been just as memorable for you as it was for us at the IOTA Foundation. We look forward to 2020 to continue with our work towards the vision of a true Internet-of-Things through the Machine Economy.
We wish you a very happy holiday season and a peaceful and prosperous new year.
As always, we welcome everyone to stop by on Discord— every project mentioned here has a channel (or more) for discussion with the devs!
Follow us on Twitter to keep track of all the latest news: https://twitter.com/iotatoken