6 min read

Technical Progress Update May

Technical Progress Update May
Screenshot Github Iotaledger

[ - by ID.iota]

Dear #IOTA Community,

I am thrilled to present you with the first monthly update on the ongoing development efforts on the IOTA 2.0 node software. It brings me great joy to share these updates with you through the esteemed platform of Tangleverse Times magazine. With each passing month, our community project continues to progress, evolve, and achieve new milestones.

In this edition, we will delve into the recent developments around the IOTA 2.0 node software and try to cover the differences between the GoShimmer Node Software and the recently introduced iota-core node software.

The information provided in these updates comes from the official IOTA GitHub (https://github.com/iotaledger) and the IOTA discord server (https://discord.iota.org). The interpretation of that information, however, does not represent official information from the IOTA Foundation. While we strive to ensure the accuracy and reliability of the content, it is important to note that the updates reflect community perspectives. For official announcements and statements, please refer to the IOTA Foundation's official channels and communications.

So, without further ado, let's dive into the progress made during this month, showcasing the dedication that characterizes the exceptional team at the IOTA foundation.

Let's start by talking about the latest buzz in town. You might have heard about the MVP-Release cancellation. So, here's the scoop: many community members were super hyped since January for the release of a Minimum Viable Product (MVP) for the GoShimmer node software. But guess what? The IOTA Foundation dropped the bombshell and scrapped MVP. Well, at least very likely 😅 They've made it crystal clear that their top priority is going all-in on the IOTA core implementation, while everything that distracts them from delivering the iota-core node will be abandoned (including a GoShimmer MVP release).

Let me break down all those technical terms for you. Currently, the IOTA network relies on a node software called Hornet, which runs the Shimmer L1. To enable native tokens, NFTs, and voting on the base layer, Hornet utilizes the Stardust Virtual Machine. However, this base layer still depends on a centralized coordinator that approves transactions and milestones in the tangle. Although the coordinator cannot modify transactions or accounts, it poses a centralization risk as it can be turned off.

To address this centralization risk, the IOTA Foundation is working on a fully decentralized node software to eventually disable the coordinator and achieve Coordicide. As a proof of concept, the research engineering team developed GoShimmer, a prototype node software demonstrating the feasibility of the Coordicide ideas. However, GoShimmer lacks important features compared to Hornet. While it can process transactions without a coordinator, it does not support NFTs, L2 solutions, or native tokens as it doesn't have the Stardust VM implemented.

Let's discuss the reason behind the cancellation of the GoShimmer MVP by the IOTA Foundation. It seems they were satisfied with the progress made during the development of GoShimmer and had confidence in the success of their Coordicide ideas and implementation. Faced with two choices, they could either fine-tune GoShimmer, release an MVP, and address any bugs found during public testing, or capitalize on their knowledge and experience to create a new, production-ready node software called iota-core.

To expedite the process, they decided to proceed directly with the iota-core implementation, which would undergo testing regardless. Some may argue that it would have been safer to thoroughly test GoShimmer first before moving on to iota-core. However, as a non-expert in the field, I trust in the expertise of the team and their decision-making.

Despite the strong reactions, a majority of the community reached a consensus that prioritizing the iota-core implementation was the best course of action to achieve a decentralized shimmer network swiftly.

Now, let's shift our attention away from the MVP controversy and focus on the actual developments. So, what has unfolded recently, and what lies ahead for the iota-core node? Before we delve into that, let's have a quick refresher on what iota-core represents. It is poised to become the very first fully decentralized node software protocol, specifically designed for the mainnet. As a replacement for the Hornet node, iota-core will be responsible for running the Shimmer network initially, and in the future, it will also power the entire IOTA network.

In order to achieve those goals, the team started to set up a very basic node including a proof of authority committee already running and then continued from there to implement tooling and testing. So, a month ago, we already had a very basic and raw iota-core node. Following that, the ongoing parallel efforts that are being done day by day by the development team are:

1. Implementation of the Mempool (reality-based ledger, see this link for the research supporting it: https://arxiv.org/abs/2205.01345)

The Mempool, which serves as a reality-based ledger, will undergo adjustments to adopt the "in-memory paradigm." This change towards in-memory processing of all different parts of the node protocol has recently led to significant performance improvements for the ConflictDAG in GoShimmer. It's important to note that this adjustment is new to IOTAcore and cannot be directly copied from GoShimmer and therefore did require more extensive changes and additional work.

A quick check with GitHub shows, that PR#53 “Mempool implementation” and PR#84 “Conflict propagation in Mempool & test fixes” have been reviewed and merged by the team already. So that leads to the conclusion that they have a working implementation and that the first point on this list is done. 🟩

2. Accounts and Mana:

First, iota.go is modified to support accounts on the UTXO level. Furthermore, commitments towards accounts/mana are implemented into iota-core. The changes that happen within the UTXO definitions are specified and written down for a new TIP.

This helps us to understand how the team is trying to implement mana to manage congestions and implement scarcity within the network. It seems like they are trying to solve it through accounts on UTXO level. While this is super-speculative from my side, it shows how far all teams working on iota 2.0 have come and how all pieces of the puzzle seem to come together. I am eager to learn more and put it together for you in a coming update as soon as we hear from them.

In GitHub we see some activity in the iota.go repository implementing the necessary changes to support the newly created iota-core node and furthermore, implement the UTXO accounts. Those changes are visible in the branches (serix-iota-core, serix-iota-core-accounts) and the PRs (#428, #426) of iota.go.

Those efforts are pretty much ongoing and likely still depend on inputs from the protocol research team. We have to wait for the next month to see where we are going. 🟨

3. APIs:

The team is defining the core API structure around iota-core and is implementing some of the already existing functionalities. The efforts to establish a set of Core APIs have been bundled in PR#7, PR# 36, PR#72. All PRs have been reviewed and are merged.

While this does not mean that we have a complete set of APIs yet and that we can cross this line off the list, it certainly shows that the team is making great progress and very likely has a working version in their hands right now. 🟨

4. Bringing the Stardust-VM, Mempool, hornet ledger state and the ConflictDAG together.

With finalization of these efforts, we will see Stardust-ready transactions run on the fully decentralized iota-core protocol. And where are we? We are green! 🟩

As already said for point one, all Mempool implementation PRs have been merged into the code base. Additionally, we can also spot on GitHub, that the ledger state has already been ported and adapted from hornet. The corresponding PR#67 is merged since last week. That leaves us with the ConflictDAG-PR and I am happy to tell you that we got this baby over from GoShimmer just yesterday. Check PR#92 for any further details.

What does this mean? Well, the team is likely testing the shit out of it at the moment, but I think we can assume that the first Stardust-Transactions are already being sent and received on the hidden test networks of the foundation 😎.

5. Testing

This is the last point Jonas named, and it is the least spectacular one. Well, as always, the team needs to test what they have been building and in order to do that, they need to design, implement and run those tests. We have separate testing PRs as well as tests that come with the modules that are being ported from GoShimmer. So progress is visible but hard to report on, since this is usually always a back and forth.

This wraps up the latest developments in the past month for the IOTA 2.0 node development activities. I do appreciate your time in reading this update and extend our gratitude to Tangleverse Times for publishing it and making those monthly updates possible.

We value your feedback greatly and would love to hear your thoughts. Please share with us any suggestions for improvement, your opinions on the first update, and any other insights you'd like to see covered in future editions.

Thank you for your continued support, and let's keep advancing together towards the exciting future of IOTA.