A Primer on IOTA (with Presentation)
I recently gave an introductory presentation to IOTA at the IoT and Blockchain meetup in Berlin. Since this meetup was recorded (and the video will be available on Youtube soon), I thought I would write up a quick blog post that accompanies the presentation so that other people can read through it and have an overview of what IOTA is, where we come from and where we’re going. If you want to hold a presentation about IOTA at a local meetup, feel free to use the content below, or even reach out to us so we can provide further assistance.
This blog post will be a bit more comprehensive (expect a ~15min read), but it’s clearly divided into sections so you can just skip the ones which are not relevant to you. Here’s the presentation:
IoT and Blockchain: A relationship that makes sense?
The exploration of Blockchain-related use case has been actively pursued by pretty much everyone in this space (corporates, startups, researchers, individuals) over the last 4 years. One of the areas that most excites us and many others is the Internet of Things. Not only has IoT a tremendous potential since it’s going to be everywhere (after all, it’s an ubiquitous computing and sensor platform), but it also has a whole range of problems where distributed ledgers could be the solution.
We’ll write an in-depth blog post on “Why IoT Needs a Ledger”, but the obvious reasons are: M2M Payments, Security of Things (including identity) and automated execution of processes.
Blockchain: We’re not quite there yet
The simple reality when it comes to Blockchain + IoT (or Blockchain and anything else), is that we’re simply not there yet. The technological limitations are apparent to everyone (including consultants) at this point. The two major problems that I want to elaborate on in this post are scalability and transaction fees.
In Bitcoin we’re already seeing the consequences of a protocol that is inherently limited, but is (intended to) being used by a wider audience. Over 200.000 transactions were unconfirmed at the time of writing. This is cumbersome for users, and means that the majority of use cases cannot be executed, simply because you will never get your transactions through. If you’re a large corporate, you don’t want to wait, pay a higher fee, or bear with the uncertainty of not getting your transactions through.
Now all of us are obviously excited about permissionless distributed ledgers and their potential especially in the corporate world, which has up until now only adopted private Blockchains for their use cases. The biggest issue next to scalability is transaction fees (they are largely intertwined). Bitcoin’s mean transaction fees have already risen above $1. The question of “Who is going to pay for it?”, arises regularly. Especially when it comes to micropayments and enabling a thriving Machine Economy, this question is no longer just a disadvantage listed on a Powerpoint presentation; but it’s a prohibitive factor that renders many of the use cases useless.
Having uncertainty about how much money you will end up receiving in a monetary transaction means that you have uncertainty if your business model even works (after all, you want to make a profit..). How much money will you end up making from selling one resource (e.g. electricity, bandwidth, computation) from one machine to another, when transactions fees are often unpredictable?
Even though we’re seeing a lot of R&D in this area, the overall conclusion is that Blockchain is not production ready, and most of the use cases that are being discussed right now cannot be executed at scale. Every technology in this space today is a Proof of Concept — even Bitcoin.
The Story behind IOTA
All of the founders of IOTA (David Sønstebø, Sergey Ivancheglo, Serguei Popov, Dominik Schiener), have been in the Blockchain space since 2010 to 2011. IOTA itself came out of a stealth hardware startup, which is working on a new trinary microprocessor with working title ‘Jinn’. One of the major differences of our origin stories vs. other projects is that IOTA came out of real necessity. It was not the drive of creating a fancy new DAG technology that initiated the project, but the apparent problem of transactional settlement for the Internet of Things, and the lack of existing solutions out there today.
Because we’ve been in this space for so long and have actually pioneered some of the first “Blockchain 2.0” technologies (such as the first full Proof of Stake Blockchain called Nxt, which had features such as a decentralized asset exchange, name registry and many more), we realized early on that we need to start from scratch to meet the challenging demands of the Internet of Things. With that in mind, the Tangle was born.
The main innovation behind IOTA is the Tangle. It’s a novel new distributed ledger architecture that is based on a DAG (Directed Acyclic Graph). One might refer to it as a “Blockchain without Blocks and the Chain” (semantically, it’s not really a Blockchain).
At its core, the Tangle still has the same underlying principles as a Blockchain: it’s still a distributed database, it’s still a P2P Network and it still relies on a consensus and validation mechanism.
But, if we are to summarize the main differences between the Tangle and the Blockchain, the two most apparent ones are how the Tangle is structured (a DAG), and how we achieve consensus.
In IOTA there are no “blocks” in the classical sense. Instead, a single transaction references two past transactions. This referencing of transactions is seen as an attestation: with your transaction you attest directly that two transactions, and indirectly that a subsection of the Tangle are valid and conform to the protocols rules.
Instead of a smaller subset of the network being responsible for the overall consensus (miners / stakers), the entire network of active participants (i.e. devices making transactions), are directly involved in the approval of transactions. As such, consensus in IOTA is no longer decoupled from the transaction making process: it’s an intrinsic part of it, and it’s what enables IOTA to scale without any transaction fees.
The transaction making process in IOTA is a simple, 3 step process:
- Signing: You sign the transaction inputs with your private keys
- Tip Selection: MCMC (Markov chain Monte Carlo) is used to randomly select two tips (i.e. unconfirmed transactions), which will be referenced by your transaction (branchTransaction and trunkTransaction)
- Proof of Work: In order to have your transaction accepted by the network, you need to do some Proof of Work — similar to Hashcash (spam and sybil-resistance)
Once you’ve done that, your transaction will be broadcast to the network. Someone else will come along, choose your transaction in the tip selection process and validate it. And just like that, your transaction is confirmed.
Consensus in IOTA
As with any Distributed Ledger the question is: how does the network agree on the current state? With that question, we directly also tap on the “double-spending problem” (which probably confuses most people with IOTA)
Lets take a look at the colored Tangle picture above. Green blocks: transactions on which consensus was achieved (i.e. transaction finality with some security guarantees); red blocks: transactions where we are still uncertain on their full acceptance; grey blocks: tips (unconfirmed transactions).
Goal of any transaction is it to be green — you want it to be confirmed and accepted by the entire network. The question is, how do you go from grey, to red, to green? Without going into discussion on the CAP Theorem and the concept of eventual consistency, let me explain.
When we look at the picture, the main difference of the green and the red blocks, is that the green blocks are indirectly referenced by all the grey blocks. This means that for every confirmed transaction, there is a direct path leading to it from a tip. As such, it is quite easy to determine the confirmation level of your transaction: we execute the MCMC algorithm N times, the probability of your transaction being accepted is therefore M of N (M being the number of times you land on a tip that has a direct path to your transaction).
As a merchant, in IOTA you have complete freedom to decide with what probability you will start accepting transactions. If you are happy with 51% probability, you execute MCMC 100 times, and if 51 times or more there is a path, you accept the transaction and exchange goods. For high value transaction you can increase this threshold to 99 or even 100.
Once you have understood this concept of transaction finality in IOTA, you will start appreciating the simplicity and beauty of this system. It’s completely self-regulating and ensures both scalability and security.
Lets dive into some of the main features of IOTA, so you better understand why IOTA is so awesome.
Because IOTA achieves consensus on the validity of transactions without the involvement of any miners, we also have no transaction fees to pay. IOTA is the first transactional settlement protocol that enables you to transact even sub-cent values Peer-to-Peer without any transaction fees for either the sender or the recipient. As such, we really perceive IOTA to be the backbone of all current and future micropayment and nanopayment use cases.
IOTA was designed to enable transactional settlement at scale. Since consensus is parallelized, and not done in sequential intervals of batches as in Blockchain, the network is able to grow and scale dynamically with the number of transactions. The more transactions are made, the more secure and the more efficient the Tangle gets.
Some of our most recent stresstests have already shown Confirmed Transactions Per Second above 100 in smaller networks of less than 250 nodes, with confirmation times of 10seconds or less. A much larger stresstest is coming up soon.
The beauty of the Tangle is that you can fluidly branch off and back into the network. This partitioning is key in being adaptive to the rigorous requirements of an asynchronous IoT environment. There is no such thing as always-on connectivity, as such you need to be able to make transactions and secure data even in an offline environment. IOTA makes it possible for a cluster of devices to branch off and still make transactions in an offline environment; utilizing different communication protocols (ZigBee, Bluetooth LE, etc.) for the P2P communication. More on some specific use cases in Supply Chain and Mobility later.
The main reason why IOTA was created is to enable and to be the backbone of the Machine Economy. We envision a future where Machines trade resources (computation, electricity, storage, bandwidth, data etc.) and services with each other without the involvement of any third party — purely Machine-to-Machine. As the Internet of Things starts unleashing itself, the need for “Smart Decentralization” is apparent.
I will leave this as a cliffhanger here, as we have a larger blog post all about the vision of IOTA coming up very soon (will link to it here once ready).
IOTA’s unique feature of feeless transactions enables a plethora of use cases that are not possible on any other platform. Not only do we enable true micropayments (send 1 cent, receive 1 cent), but we also improve existing and enable new data integrity use cases. With the introduction of more IXI modules we will further increase the usability and the use cases enabled by IOTA.
The main industries where we are running case studies are Mobility, Energy, Smart Cities and Infrastructure (such as smart grids). Even though we mainly focus on the Internet of Things and the Machine Economy, IOTA is well suited for payments between humans as well. Especially if we look at remittances, where we want to be able to transact even a few dollars from Country A to Country B; IOTA has a unique offering.
We will be writing follow-up blog posts on all the specific use cases. This way readers will get an in-depth overview of what we do. The use cases which we are currently developing with our corporate partners will also be written about and explained in more details with case studies soon.
The Core Team has been working on IOTA and its ecosystem since summer 2015. Over the course of the past 2 years, we have further refined and optimized the Tangle concept. Especially the launch of the main network on July 11th 2016 has given us great insight to optimize the core client. The IOTA Reference Implementation is written in Java and is available on Github.
To make IOTA ever-more user-friendly, we have also developed a GUI Client which amongst other things, has dedicated GPU and light-wallet support. In order to truly foster the ecosystem, we have also setup a dedicated “Learn” hub, where developers can publish tutorials for their IOTA-powered applications. This is a source of resources for developers intending to get started.
Overall, we have so far facilitated more than 2.5m txs on the main network (with more than 30million on our respective testnets). This has enabled some $100m+ to be transacted, purely Peer to Peer without any transaction fees.
As we truly aim at scalability, we have setup a framework that makes it possible to launch AWS and Azure instances on the fly, and simulate a network of nodes transacting with each other. From these stresstests we’ve already gotten some early results (as shown in the screenshot above), and we’re currently preparing for a much larger stresstest where we aim at achieving 1000TPS.
The IOTA Foundation
IOTA itself, and all the technologies that we will build on top and alongside it, are governed by the non-profit IOTA Foundation. The IOTA Foundation will be a “gemeinnützige Stiftung” based in Berlin, Germany focused on developing and standardizing new DLT-based technologies. We truly believe in the vision of a Machine Economy; as such we need to foster a thriving ecosystem that encourages interoperability and permissionless innovation.
The Foundation acts as a neutral party that helps in executing and achieving our vision. More information about the Foundation, its members and the governance structure will be published over the coming weeks. Needless to say, we are in this for the long-run.
Focus over the next few months will it be to develop additional core clients and to extend IOTA’s potential via IXI (IOTA eXtensible Interface). The development of the Go, Rust and C++ client has already started, and will be completed by Summer. Major emphasis will be put on optimization and making the core client more adaptive to specific deployment environments. Our goal is it to make IOTA production ready by the end of the year.
Masked Authenticated Messaging (MAM) makes it possible to have a secure, encrypted and authenticated data stream on the Tangle. As a first in this space, we ensure both data integrity and encrypted data blobs on our distributed ledger. This means that only certain parties with the proper authorization can read the data stream. With MAM we are already developing use cases aimed at supply chain and sensor data integrity.
Our approach to Oracles will make it possible to directly form oracles on top of IOTA. This is unlike anything that’s currently being used in this space. With our Oracle platform we not only aim at connecting the physical world with IOTA; but we also want to enable true interoperability with all other Blockchain platforms.
The simulation framework that we’ve been working on over the last few months is going to be published in June. This framework will make it possible to simulate a global, clustered Tangle environment and gain concrete insights on network propagation, transaction finality and confirmation rates. In addition to that, we’ve implemented and simulated the attacks from the Tangle whitepaper.
We are not maximalists and believe in the future of purpose-specific technologies. Because of that, we are working actively on interoperability with existing Blockchain technologies and communities. Right now the main focus is on EVM-based Blockchains (Ethereum, RSK, Qtum) and Hyperledger. With the release of our new Oracle platform we envision true interoperability with many more projects in this space.
One of the first initiatives aimed at building an ecosytem around IOTA is our recently announced Ecosystem Fund. Together with a few dedicated community members and key partners, the Foundation has set aside more than $2m that will be used to fund the development of use cases and prototypes, active research for IXI modules and general projects that help in increasing awareness and understanding around IOTA.
If you are interested in applying to the fund, please head over to the official announcement, which has further instructions.
IOTA is one of the most innovative projects in this space. The Core team is dedicated and committed to bring IOTA millions — if not billions — of devices and watch our vision of a Machine Economy unfold. There are many more announcements especially with our corporate partners which will be announced over the course of the next few months, alongside the introduction of new IXI modules and other protocols which we’re developing.