CHAT.ixi — Using Ict for Permissionless Chat on the IOTA Tangle
The full article was originally published by Lukas Tassanyi on Medium. Read the full article here.
The Iota Controlled agenT (Ict) is a project being developed by the IOTA Foundation Omega Team. To most in the community, Ict appears rather abstract, futuristic and difficult to fully grasp. This is why Samuel and I have decided to release CHAT.ixi, a chat app running on Ict. As a tangible proof-of-concept, it gives Ict a face and showcases what the IOTA eXtension Interface (IXI) is capable of.
On the surface, CHAT.ixi is really no more than just another chat application. But there’s more! Things get more interesting once you look deeper into the tech surrounding it. CHAT.ixi runs on the Iota Controlled agenT (Ict) network. Ict is a lightweight IOTA node designed for the Internet-of-Things.
The Ict network provides an experimental Tangle testnet. So this chat is actually running over a Tangle similar to the IOTA mainnet. But well, who cares? In the end this is just another nerd thing, isn’t it?
It is important to understand the implications of choosing an immutable and permissionless data-integrity protocol, the Tangle, as infrastructure for a chat. In CHAT.ixi, there are neither rules nor moderators who enforce them. Obviously, this poses certain risks one has to understand before using it. Simultaneously, however, there are immense opportunities for those whose opinions are otherwise restricted or suppressed.
While large companies capitalize on the middleman role within our communication, we are forced to put more and more trust into third parties and become increasingly dependent on them. The Tangle on the other hand is free to use. There are no ads in CHAT.ixi. And no data is collected except for the messages you send on purpose.
With an underlying protocol that is largely distributed by design, you don’t have to rely on a central hub taking care of your data. Due to the Tangle’s inner workings, messages on the Tangle cannot be tampered with.
So what’s is this Ict thing?
Iota Controlled agenT (Ict) is an experimental IOTA node for the Internet-of-Things (IoT). In contrast to our current rather static Internet, the IoT will be full of tiny devices directly connected to each other in a dynamic mesh network. Some of these devices will move around, or suddenly turn off or on. Such a constantly changing environment requires a data integrity protocol with enough redundancy to deliver messages and make data accessible, despite the unpredictable nature of the network.
Becoming a standard protocol for the Internet-of-Things has always been the vision of IOTA. However, most of what is colloquially referred to as IoT currently, exists comfortably in a Cloud infrastructure within regular Internet architecture. In the last few years, we have started to see the emergence of the “true” IoT at the edge of the network (also referred to as the Fog), where technological resources are not abundant. IOTA is not merely accommodating this new frontier, but aims to actively shape it with security and immutability as basic criteria. Instead of waiting for the edge network to grow and then retrofit it, the IOTA Foundation is aiming to build its own IoT microcosm, with Ict as a fundamental building block.
The Internet-of-Things is a prominent driver of the fourth industrial revolution. Just as its precursor, the digital revolution, there will be radical changes transcending all aspects of our daily life. For instance, we are shifting our perception of ownership. With emerging trends like car or bike sharing, we are moving towards a world full of services. And this is where Ict plays its role, providing a platform for services.
The Ict core client itself will remain lean, providing basic functions such as a gossip protocol and data integrity. The really interesting part however, is IXI.
IXI – interfacing to the IoT
IXI, short for Iota eXtension Interface, is an interface for applications utilizing the Tangle. The interface is kept rather slim and modular by design, in order to decouple those apps, called IXI modules, as much as possible from the underlying Ict communication protocol. These IXI modules do not need to know how transactions are technically exchanged between the Ict nodes. All they want to see are the actual transactions happening.
By abstracting away from the communication layer, IXI gives developers easy access to the Tangle and provides them with a tolerant protocol, so that they can implement apps based on their ideas rather than adjusting their ideas to match the complex network properties of IoT. Most importantly, they do not have to reinvent the wheel by each developing their own communication solutions, resulting in a multitude of different and incompatible protocols. The lack of compatibility standards currently is one of the major issues of the Internet-of-Things. And Ict provides a solution.
CHAT.ixi extends the IXI module template which connects to the Ict. This template was designed to facilitate the development of modules. The interface is kept lightweight, while giving access to the entire relevant Tangle functionality. Remote Method Invocation (RMI) currently provides the link between Ict and the IXI module.
As the very first command-line chat module (see repository) proves, diverse IXI applications can be realized with very few lines code. In order to demystify IXI and showcase what it is actually capable of, Samuel and I decided to put more effort into this chat app. These past few days we have worked very hard to get this proof-of-concept into shape.
The signature scheme uses RSA – an asymmetric cryptographic algorithm that can be used for encryption as well as digital signatures. Each participant owns a key pair consisting of a private and a public key. The private key is used to sign messages while the public key allows other users to verify those signatures and authenticate the origin of a message.
While the username can be chosen freely, the hash of the public key (called the user id) is unique and allows users to identify each-other. You can add a user’s id to your contact list to mark their messages with a white border allowing you to spot impersonation attempts more easily. Additionally, each user’s profile picture is an identicon derived from the user id.
There are more than a eighty seven quintrigintillion (8.7×10¹¹⁵) different channels to chat. This is because each channel is internally realized by a specific IOTA address to which the chat module listens and sends messages. You can even see who is online because the web GUI will regularily submit a heartbeat transaction, notifying other users that you are there to chat. Finally, to set our priorities straight, we also added support for emojis. 😉
A frequently asked questions about IOTA is “Why should anyone run a node?”. CHAT.ixi highlights the incentive to maintain a well-connected Ict: because such a node is required to properly connect to the Tangle and use all the IXI modules utilizing it. Now that you probably want to try CHAT.ixi yourself, simply follow the instructions given in the official repository.
Ict vs. IRI — What’s the difference?
The IOTA Reference Implementation (IRI) is the reference software currently used to run IOTA full nodes, and is one of the main projects being developed by the Foundation’s Alpha Team. While Ict and IRI both aim to do the same: provide an IOTA protocol, they do so for different environments. IRI is designed with the current Internet in mind, while Ict is intended for the future Internet-of-Things.
Most succinctly, IRI is the current working and well-tested full node software. Ict is an experimental concept in its infancy. Since there are real funds at stake, there is a long way to go before Ict could possibly replace IRI. For the near future Ict may provide a testbed for many proofs-of-concept, which would be more complex to implement into the large IRI code base. Furthermore Ict does not rely on a coordinator, which brings it closer to the end vision of IOTA, and makes it a great tool for testing other consensus mechanisms.
What are the expected final components of Ict?
- Gossip Protocol — to receive and forward IOTA transactions, plus validation of signatures etc., similar to what IRI is currently doing.
- IOTA eXtension Interface (IXI) — a simplistic interface as a modular approach, to make the Ict core client extensible with various plugins and applications — the “IXI modules”.
- Swarm Logic — to achieve shared goals in a swarm, where individual Icts adjust their level of redundancy, to filter out transactions not relevant for that goal.
- Economic Clustering — will be the only consensus mechanism integrated into the Ict core client. Other consensus mechanisms must be implemented as IXI modules running on top.
Ict — Development & Road Map
In the three weeks since commencing development on the current Ict code base, the basic gossip protocol and IXI have been implemented. Also, a first spam protection mechanism and pruning of old transactions have recently been enabled with the most recent version. CHAT.ixi, as a first proof-of-concept, is up and running, and proves that things are working as expected. We are working towards bringing Ict into a stable and reliable form by mid 2019.
Roadmap for Q1/Q2:
- improve IXI’s general interface design
- extend IXI module support beyond Java to other languages
- increase reliability and secure Ict against basic attack vectors
- finish the protocol specification by implementing signatures etc.
- build an ecosystem of IXI modules around Ict
Stay up to date with Ict development in the #omega-ict channel (Development category) of the official IOTA Discord. To try CHAT.ixi for yourself, simply follow the instructions given in the official repository.
For now, we wish you a fantastic start to the New Year.