Exclusive Interview with MicroHash, let’s talk about Ict
Last year we had the opportunity to interview MicroHash (Lukas Tassanyi) who explained to us about Qubiota, one of the first Ecosystem’s projects related to Qubic.
A couple of months ago, Lukas became part of the IOTA Foundation team and has been actively working on IOTA Controller AgentT (Ict) development.
On this occasion we wanted Lukas to help us understanding a bit more about what Ict does and will do and how it enables Economic Clustering. So, if you’re interested in learning more about this topics, you can’t miss this interview.
Content Coordinator & Writer
In our last interview you weren’t part of the IF yet. Could you describe how a day at work is now that you are part of IF?
I really enjoy working at the Foundation. Since I‘m working remotely, I have a lot of freedom in regards to how I manage my time and can basically work from anywhere where I have internet access. My work day consists of checking in on the ict channels on Discord to help, find out about bugs, discuss various concepts with the community and the team. But obviously the vast majority of time is spent on coding: figuring out how to tackle a required feature or technical problem and implementing the solution.
Due to time zone differences, work mixes a lot into other daily activities as well. It‘s quite common that someone tries to initiate a technical conversation with me in the middle of the night. But you get used to that after some time , haha.
We would like to take this opportunity to understand as much as possible about the things you are working on. How would you introduce Ict?
Ict – short for Iota Controlled agenT – is our IOTA node implementation built specifically for edge devices in the Internet-of-Things. In contrast to IRI, the standard IOTA full node software, Ict is much more lightweight in design. This allows even weak devices with low computational resources to connect to the IOTA network and operate on the Tangle – a very important step towards IOTA‘s end vision for the Internet-of-Things.
Although Ict will define the final IOTA protocol – which IRI will adjust to at some point in the future, Ict is still in a very experimental state. It‘s a fastly developing prototype currently being built by the Omega-Team. Once the development transitions to the Alpha team, it will be rebuilt in a more efficient language with a higher focus on performance to meet the demands of edge devices.
Ict does not store the entire Tangle history. Instead, it is intended for nodes with a specific use case. Based on that use case, it filters through all incoming transactions and only considers those relevant for the application. These applications are realized through custom modules which are plugged into Ict. They communicate with the Tangle through a minimal and simplified interface – the IOTA eXtension Interface (IXI). Hence these plugins are called IXI modules. Examples for existing IXI modules are CHAT.ixi [https://blog.iota.org/chat-ixi-using-ict-for-permissionless-chat-on-the-iota-tangle-59ce6c5b95fb] (a dezentralized chat running on the Tangle), the community-built Report.IXI [https://github.com/Trifel/Report.ixi] (an Ict network monitoring tool) and EC.ixi [https://github.com/iotaledger/ec.ixi].
What is Economic Clustering and why is it necessary for IOTA to become the backbone of IoT?
Economic Clustering or short EC is the consensus mechanism used for Ict. Due to the limited computational resources of edge devices in the Internet-of-Things, we cannot expect every Ict node to validate the entire ledger themselves. Instead, Economic Clustering allows Ict nodes to „follow“ the opinion of other nodes.
Those latter nodes are called Economic Actors. They publicly tell the network how confident they are that a specific part of the Tangle is confirmed. That confidence can reach from 0% to 100% and will be adjusted constantly. Depending on which actors you follow, you are part of a different Economic Cluster. Each cluster comes to their own consensus and therefore their own ledger.
Other Ict nodes rely on multiple of these actors to estimate the probability that a specific transaction confirmed in their cluster. As such, these actors can be compared to a distributed coordinator. However, everybody can maintain their own actor to do the ledger validation themselves if they are running Ict on a more powerful device.
How would you explain, in a not technical way, how Ict contributes to build EC?
Ict itself makes it possible for custom plugins (the IXI modules) to talk to and listen to the Tangle. This happens by sending new transactions to the network, looking up existing transactions or analyzing incoming transaction as soon as they are received.
EC is built on top of Ict as such an IXI module, hence it is called EC.ixi. The IXI, actors in EC.ixi can issue new transactions to the Tangle. These transactions, called markers, state how likely a certain Tangle is confirmed. Other nodes use EC.ixi to listen to the Tangle and find these markers. This way EC can simply utilize the Tangle to transfer data from one node to another without the need to know how Ict works on a lower level.
Could you provide an Ict use case in real life?
Sure. I think the most illustrative one might be a car. Imagine a highway with many cars from a multitude of different manufacturers. If you want to let them communicate, they need a shared underlying protocol. The IOTA Tangle offers exactly this a permissionless, lightweight way with data-integrity and feeless value transfers directly implemented.
Now those cars have little reason to run a heavy full node. After all, they try to solve domain specific problems (e.g. prevent traffic issues and improve efficiency). Therfore they only care about a very tiny subset of transactions. With Ict they can hook into the entire stream of transactions and find those transactions relevant. This will be mostly those transactions issued by cars nearby with content that can be interpreted.
For example, your car might agree with the car behind to let it drive in behind in very close distance to decrease the air resistance. This is called „platooning“ and as a result, the other car will waste significantly less fuel or electricity and can reward your car with a part of these savings by streaming micro-payments through an IOTA Flash channel back to your car‘s wallet.
Due to the use of Ict, your car can decrease the resources used to run a node enourmously. While this might not be that big of a deal for a car, weaker devices (sensors, toasters, drones etc.) would certainly benefit even more of any resource reducations.
We recently read about Ict 0.6, what are the improvements and features that had been achieved in this new release?
The most important feature that comes with 0.6 – although as a separate IXI module – was Bridge.ixi [https://blog.iota.org/introducing-ict-0-6-and-bridge-ixi-9c5168a16b07] developed by Samuel. Until now IXI modules could only be written in Java, but Bridge allows you to finally write IXI modules in almost every other major programming language and opens the door to Ict for many developers.
Besides improving the general security and efficiency of Ict, the other major feature is EEE – short for Environment Entity Effect.
What is EEE (Environment Entity Effect)?
EEE is an event-driven architecture in Ict which allows „entities“ such as IXI modules, to issue „effects“ (usually character sequences) to a specific place, called „environment“. Other entities can subscribe to these environments to receive all effects submitted to them. This infrastructure is quite powerful and makes it possible for different IXI modules to communicate with each-other. If you are developing an IXI module, you should definitely look into it. But it is all running behind the scenes. So don‘t worry: if you simply want to use a module, you won‘t even have to know that it exists.
What are the next goals?
Now that the first iteration of EC has been released as Proof-of-Concept, it is all about stabilizing and scaling it during the next iterations until we can run real clusters in the Ict network. Other than that we want to improve the general user and developer experience by further improving the IXI and making node maintainance even simpler through auto-peering.
While a first coordinated auto-peering solution called „IcTinder“ already is in closed alpha, we want to decentralize that process in the future. Once the Ict code base has sufficiently matured and we have gone through all high priority development tasks, we are going to implement a decentralized auto-peering.ixi.
Any final thoughts?
There is one integral component of Ict that should not stay unmentioned: the community. The community engagement around Ict is incredibly strong and helps the development process immensily. There are so many community members setting up their own Ict nodes, reporting any emerging issues, helping each other and excitingly following and discussing the development progress. If you want to stay in touch with the community around Ict and the technical progress, I can only recommend to rank yourself as „ict-testing“ on Discord and check out the ict channels (#ict-discussion, #ict-help and #ict-dev). There is so much happening and you can certainly waste quite some time over there.