While IOTA 2.0 is a complex protocol with various modules, its core idea is actually quite simple. This post summarizes how IOTA 2.0 achieves consensus and maintains the ledger.
Data and transactions are contained in objects called messages. Every message must reference two to eight other messages. Thus the collection of all messages, called the Tangle, is an ever growing DAG, or a directed acyclic graph.
Currently, the Chrysalis network is governed by the coordinator, a centralized node run by the IOTA Foundation. The coordinator states which transactions and data are included into the ledger, i.e. the list of token balances of all users. To be fully decentralized, we will remove the coordinator in version 2.0 of the IOTA protocol. In the Coordicide project, we designed the new protocol which will kill the coordinator.
Without the coordinator deciding which transactions to include, a valid message must have a consistent history without any conflicts. So when conflicts arrive, the Tangle forks into different branches. The upcoming IOTA 2.0 protocol must do two things:Decide which branches will survive. Record this decision for new nodes joining the network later.
This allows the IOTA protocol to maintain a consistent ledger where everyone’s balance is always available.
Consider the following example: Dom has 5 MIOTA. First, via transaction A, he sends these 5 MIOTA to Navin. Then, Dom accidentally (or intentionally) sends these same 5 MIOTA to Serguei in transaction B. Now we have two conflicting transactions, A and B, and the Tangle forks into three branches: Branch 1 which includes transaction A to Navin, Branch 2 which includes transaction B to Serguei, and Branch 3 which rejects both transactions to Navin and Serguei.
The protocol must decide between the following:Branch 1, including transaction A to Navin, will be rejected, giving Serguei the 5 MIOTA Branch 2, including transaction B to Serguei, will b...