As a distributed ledger technology, IOTA provides a trust layer for any devices that are connected to the global Internet.
Through its open network of nodes, IOTA allows you and your devices to:
- Use the network as a source of truth for data
- Transfer value in IOTA tokens
Who is IOTA for
IOTA can benefit many people, including the following important groups.
Anyone who does not trust centralized networks
IOTA networks are peer-to-peer networks where no central authority controls the data. Instead, all nodes hold a copy of it and reach a consensus on its contents.
Anyone who wants to secure their data
Everything in the Tangle is immutable and transparent. Through cryptography, you can prove that data has not changed.
Anyone who values security
IOTA uses quantum-robust signatures to protect the network against the next generation of computing power.
Anyone who wants the freedom to transact
IOTA is free to use. You don’t need to pay a subscription, sign a contract, or have any form of official identification. Even transactions are feeless.
Nodes are the core of an IOTA network. They run the node software that gives them read and write access to the Tangle. This topic covers what nodes do in an IOTA network.
Nodes are responsible for the following:
- Attaching new transactions to the Tangle
- Synchronizing with the rest of the network
- Keeping a record of the balances on addresses
- Deciding which transactions are confirmed
- Selecting tip transactions
Attaching new transactions to the Tangle
When nodes receive a new transaction, they attach it to the Tangle by adding it to their local database.
As a result, at any point in time, all nodes may have different transactions in their local databases. These transactions make up a node’s view of the Tangle.
To distribute the transactions across the rest of the network, nodes synchronize their local databases with their neighbors.
Synchronizing with the rest of the network
Like any distributed system, nodes in an IOTA network synchronize their databases with others called neighbors to form a single source of truth.
When one node, no matter where it is in the world, receives a transaction, it will try to gossip it to all its neighbors. This way, all nodes eventually see all transactions and store them in their local databases.
When a node is sychronized, it then has enough information to decide which transactions it considers confirmed.
Keeping a record of the balances on addresses
All nodes keep a record of the balances of addresses so they can do the following:
- Check that a transaction is not transferring more IOTA tokens than are available on the address
- Respond to clients’ requests for their balance
Only when a transaction is confirmed, can nodes update their record of balances.
Deciding which transactions are confirmed
All transactions remain in a pending state until the node is sure of its validity.
However, even when a transaction is valid, nodes may not be able to make a decision like in the case of a double spend.
When nodes detect double spends they must decide which transaction to consider confirmed and which one to ignore. Nodes do this by using consensus rules that are built into their node software.
Selecting tip transactions
All transactions must be attached to two existing transactions in the Tangle.
To request tip transactions from the Tangle, clients use the node’s
All IOTA node software includes an algorithm for selecting tip transactions. These algorithms aim to select valid tip transactions with the best chance of being confirmed.
The Coordinator is a client that sends signed transactions called milestones that nodes trust and use to confirm transactions. This topic describes the role of the Coordinator.
All nodes use the following simple rule to determine if a transaction is confirmed.:
A transaction is confirmed if it is directly or indirectly referenced by a milestone.
Using this rule, nodes can easily agree on which transactions are confirmed by monitoring the Tangle for milestones. When a node receives a valid milestone, it validates the signature and marks the past cone of any referenced transactions as confirmed.
To make sure that nodes can continue confirming transactions, the Coordinator sends milestones at regular intervals.
Every node in the same IOTA network is hard-coded with the address of a Coordinator. So, whenever nodes see a milestone, they validate it by doing a number of checks, including:
- The milestone came from the Coordinator’s address
- The milestone doesn’t reference any invalid transactions
As a result, if the Coordinator were to ever send an invalid milestone such as one that references counterfeit transactions, the rest of nodes would not accept it.
To allow the Coordinator to sign many bundles whose signatures can still be verified against one address, that address is derived from a Merkle signature scheme.
The Coordinator’s Merkle tree
To generate an address from a Merkle tree, first a number of addresses are generated from a seed, using the process described above.
Each public key has one corresponding private key, making it safe to sign only one transaction for each public key in the Merkle tree.
The total number of public keys that are generated depends on the depth of the Merkle tree in this formula:
In this example, the Merkle tree’s depth is 2, resulting in 4 public keys. As a result, this Merkle tree could be used to sign 4 transactions that prove ownership of the address.
To allow nodes to verify a transaction’s signature where the address is the Merkle root, the bundle must contain the following:
If the rebuilt Merkle root is the same as the transaction’s address, the signature is valid.
For example, a node receives a transaction that was signed with the private key of public key 1.
First, the node verifies the W-OTS to find out public key 1.
Then, the node looks at the rest of the bundle for the following:
- Public key 2
- The hash of public key 3 and 4
Using this information, the node hashes public keys 1 and 2. Then, the node hashes that hash along with the hash of public key 3 and 4 to find the Merkle root.
If the Merkle root is the same as the transaction’s address, the signature is valid.
The Tangle is the distributed ledger in IOTA that contains an up-to-date history of transactions. This topic describes the structure of the Tangle and what makes it immutable.
The Tangle is a single source of truth. Any client, anywhere in the world, is able to send valid transactions to any node, and that transaction will be replicated across the rest of the network to form one version of truth: The Tangle.
Immutablity in the Tangle
To make the Tangle immutable, each transaction in it is attached to two previous transactions by their transaction hashes.
If any of the values in a transaction’s fields were to change, the transaction hash would be invalid, which would also invalidate the transactions that are attached to it.
For example, if transaction 6 instructs a node to withdraw 10 Mi from an address, the past cone of that transaction’s parents must lead to a point where that address is sent at least 10 Mi.
These attachments form a data structure called a directed acyclic graph (DAG). Transactions on the left come first in the sequence. The arrows (also called edges) represent the attachments among transactions. The numbered boxes (also called a vertices) represent transactions. For more information about DAGs, see Directed acyclic graph
To show you what the tangle looks like when everyone uses this random selection strategy (technically called “uniform random tip selection”), we’ve made a visual simulation of it. This simulation generates random tangles, with the very first transaction (called the genesis) on the left and the most recent transactions on the right. The tips are marked with a gray square. When you put your mouse over a transaction, all the transactions approved by it are highlighted in red, and all those which approve it turn blue.
The IOTA token is a unit of value (i, Ki, Mi, Gi, Ti, Pi) that can be transferred over an IOTA network. This topic describes the history of the IOTA token, what makes it valuable, and how it’s counted.
How the IOTA token was created
The IOTA token was launched on the Mainnet in June 2017. At this point, nodes in the network were hard-coded with a total supply of 2,779,530,283 277,761.
This large supply allows each of the billions of devices, which are expected to be a part of the Internet, to have its own wallet and transact with other devices.
Value of the IOTA token
The following attributes give the IOTA token its value:
- It’s finite: The maximum number of IOTA tokens is built into the network and can’t ever be changed
- It’s useful: To transfer value in an IOTA network, you must use the IOTA token
The value of the IOTA token is determined by supply and demand on any of the available markets.