IOTA 2.0 – Coordicide
In this topic all articles and explanations about the Coordicide are collected.
Tangle 2.0
IOTA does not work according to the traditional blockchain technology, but works with the innovative concept of a “Tangle”. The Tangle is the distributed ledger in IOTA. It contains the current transaction history. The Tangle is the single source of truth. Any client around the world can send valid transactions to a Node. This transaction is replicated throughout the network to form this single version of the truth.
Note: If you are looking for the technical deep dive you will find it in the IOTA Wiki.
The IOTA architecture includes the following basic components:
- Clients: users of an IOTA network (wallets, apps, etc.) that send transactions to nodes to attach to the tangle.
- Nodes: Connected devices responsible for ensuring the integrity of the Tangle. These devices form an IOTA network.
- Tangle: An attached data structure. The Tangle represents a growing, partially ordered set of messages that are connected by cryptographic techniques and replicated to all Nodes in the peer-to-peer network. The Tangle enables the ledger state (the general ledger formed by the transactions contained in the messages), as well as the ability to store data.
In mathematical terms, the Tangle is a Directed Acyclic Graph (DAG).
- A set of transactions / messages is connected by paths.
- Each of these paths has a unique direction, so it is a directed graph.
- If a path can never be found that returns to its starting point, the graph is acyclic (circular paths would be cyclic).
In the image above we can see what the Tangle looks like. In this representation of the graph, the messages are shown as squares and the arrows (called edges) between the messages are references. On the left side of the graph are the older messages, while on the right side of the graph there are the newly attached messages.
Messages reference up to eight previous messages. They can be in one of three different states:
- Confirmed (green): messages are considered confirmed if they were directly or indirectly referenced by the tips (white), there is consensus on these messages.
- Pending/unconfirmed (white): These are messages waiting to be referenced.
- Tip (grey): Tips are newly attached messages that have not yet been referenced by other messages.
Blockchain Data Structure
Blockchain data structure consists of a chain of sequential blocks, with each block containing a limited number of transactions. Consequently, new transactions can only be appended at one point: A block at the end of the chain. Because of this limitation, blockchain networks often experience slow confirmation times. This limitation is referred to as the blockchain bottleneck.
Tangle Data Structure
Tangle data structure is a directed acyclic graph (DAG) where each transaction is attached to up to eight previous transactions. Instead of being limited to a single place to append new transactions, you can append transactions anywhere in the Tangle, resulting in a chaotic order in which all transactions run in parallel. This mode of operation will allow for upwardly open scaling, since as the number of transactions increases, so do the confirmation rates, rather than moving in exactly the opposite direction, as is currently the case with classic blockchains.
Components of the protocol (IOTA 2.0)
This section contains a description of the interaction between the components of the GoShimmer protocol. The protocol can be divided into three main elements:
- A P2P overlay network (Network Layer).
- An immutable data structure (Communication layer)
- A consensus mechanism (Decentralized-Application-Layer).
Similar to other architectures, the upper layers build on the functions of the layers below. The definition of the different layers is simply a matter of creating a clear separation of concerns.
Network Layer
The network is managed by the modules of the Network Layer, which can be characterized as a pure P2P overlay network, meaning that it is a system running on top of another network (e.g. the Internet) where all nodes have the same roles and perform the same actions (as opposed to client-server systems). GoShimmer’s Network Layer consists of three basic modules: the Peer Discovery module (which provides a list of nodes actively using the network) and the Neighbor Selection module (also known as autopeering), which selects peers. Finally, P2P communication manages a node’s neighbors, which are selected either via autopeering or manual peering.
Communication Layer
The Communication Layer deals with the information passed through the Network Layer, which is contained in objects called Messages. This layer forms a DAG with messages as vertices called Tangle. The Tangle is a replicated, shared and distributed data structure formed by a combination of deterministic rules, cooperation and (either direct or virtual) voting via OTVFPCS and consent weight based finality. Since nodes have finite capacities, the number of messages that the network can process is limited. Therefore, the network can become overloaded, either simply due to honest heavy usage or due to malicious (spam) attacks. To protect the network from stalling or even becoming inconsistent, the rate control (currently a static PoW) and congestion control modules control when and how many messages can be passed via Gossip protocol.
(Decentralized) Application Layer
Above the communication layer is the application layer. Anyone can develop applications that run on this layer. Nodes can choose which applications they want to run. Of course, these applications can be interdependent. There are several core applications that must be run by all nodes, such as the value transfer applications that maintain ledger state (including advanced output types), and a scarce resource called Mana that serves as a Sybil protection mechanism. In addition, all nodes must run the so-called consensus applications that regulate timestamps in messages and resolve conflicts. The consensus mechanism implemented in GoShimmer is leaderless and consists of the following components:
On Tangle Voting (OTV): on tangle voting uses the underlying data structure itself as a voting mechanism. Each message issued by a node already contains the opinion of that node, since it issues certain funds belonging to a certain reality (see also Parallel reality ledger state). Moreover the node also approves 2 or more other messages in the Tangle that also belong to a certain reality. So the opinion of the issuing nodes is already known without having to ask them.
On Tangle Voting with FPCS (Fast Probabilistic Consensus on a Set): this is a mechanism for breaking metastability, which can be used in addition to OTV (On Tangle Voting). Generally, in IOTA 2.0, reaching a high approval weight is the finality criterion. If the approval weight is high enough, the message / transaction is finalized. With OTVFPC the initial opinion is created with OTV. If after some time the opinions of the nodes are still split, for whatever reason, FPC is activated to break this metastable state. The finality of value transactions should be achieved faster this way.
Approval Weight works similarly to how the longest chain rule in the Nakamoto consensus (i.e. heaviest branch) provides finality for branches and messages.
You can find information about the life of a message and the life of a transaction on iotaprices.com
Official Sources
Terminology
Introducing Pollen, Nectar and Honey – IF
Coordicide
Chapter 1: IOTA as scalable DLT – IF
Chapter 2: IOTA post-Coordinator – IF
Coordicide Alphanet – IF
Coordicide Grant: University of Padua – IF
Mana
Fast Probabilistic Consensus (FPC)
Consensus in the IOTA Tangle — FPC – IF
Fast Probabilistic Consensus Simulator – IF
Berserk detection in the FPC – IF
Testnet
Introducing Pollen – IF
Get your own Node – AWS
IOTA 2.0 DevNet (Nectar) – The Era of IOTA’s Decentralization Starts Here – IF
Misc.
Identities and Sybil protection in IOTA – IF
Explaining the IOTA Congestion Control Algorithm – IF
Autopeering – Part 1 – Part 2 – IF
Last Updated on 16. October 2021