IOTA is a revolutionary new transactional settlement and data transfer layer for the Internet of Things. It’s based on a new distributed ledger, the Tangle, which overcomes the inefficiencies of current Blockchain designs and introduces a new way of reaching consensus in a decentralized peer-to-peer system. For the first time ever, through IOTA people can transfer money without any fees. This means that even infinitesimally small nanopayments can be made through IOTA.
IOTA is the missing puzzle piece for the Machine Economy to fully emerge and reach its desired potential. We envision IOTA to be the public, permissionless backbone for the Internet of Things that enables true interoperability between all devices.
When it comes to comparing IOTA (or more specifically, the Tangle) with Blockchain, there are many differences as they are two completely distinct architectures built on the same principles. For those interested in a comprehensive comparison of Tangle vs. Blockchain, you can expect a detailed blog post from us soon. For this FAQ, I want to emphasize on two of the main differences of Tangle and Blockchain.
Instead of being structured as a sequential chain where blocks are added in regular intervals, the Tangle is based on a DAG (Directed Acyclic Graph). Through this, IOTA is able to achieve high transaction throughput (by parallelizing validation) and no transaction fees on transactions. As the Tangle grows and more participants make transactions, the overall system becomes more secure and faster, with confirmation times / transaction finality going down.
The way consensus is achieved in a Blockchain is through a very rigorous mechanism, that requires multiple parties to "race" against each other in an attempt to add the next Block to the Blockchain and get the block reward / transaction fees. Because of this, consensus is decoupled from transaction generation and is largely performed by a smaller subset of the network, oftentimes with a high entry barrier (as is the case in Bitcoin) which leads to further centralization.
In IOTA, every participant in the network making a transaction also actively participates in the consensus. More concretely, you are referencing two transactions directly (branch and trunk transactions) and other transactions in the sub-tangle indirectly. Through this, validation is parallelized and the network stay completely decentralized, with no miners to delegate trust to or having to pay a transaction fee.
IOTA uses hash-based signatures (https://www.imperialviolet.org/2013/07/18/hashsig.html) instead of elliptic curve cryptography (ECC). Not only is hash-based signatures a lot faster than ECC, but it also greatly simplifies the overall protocol (signing and verification). What actually makes IOTA quantum-secure is the fact that we use Winternitz signatures. IOTA's ternary hash function is called Curl.
This is achieved through IOTA's unique approach to consensus. In IOTA there are no miners / validators to pay a transaction fee to, in order to have ones transaction validated and included in the next blog. Instead, consensus is completely decentralized with each network participant that makes a transaction, directly and indirectly confirming past transactions. Because of the effort required in this consensus (which is the tip selection and the computational requirements for a transaction), you have to pay no transaction fees.
IOTA currently does two things really well: transactional settlement (especially micropayments) and data integrity. Through these two features you can derive most use cases that make sense and are most of the time, only possible with IOTA. More features (such as Oracles, Smart Contracts, etc.) are on our roadmap and will be added in the near future.
The main focus of IOTA is the Internet of Things, with machines paying each other for resources, services or access. This includes smart cities, smart grids, infrastructure, supply chain etc. where IOTA makes certain use cases possible. On this blog you will continue to find more concrete examples of what you can do with IOTA. Look out for a tutorial in your preferred programming language, or even write one yourself.
IOTA's main features (in its current form) are feeless micropayments and secure data transfer and data anchoring. With these two features, combined with IOTA's scalability and partition tolerance we can derive a plethora of use cases which are mostly only possible with IOTA.
The primary focus area is obviously the Internet of Things, especially in areas such as Smart Cities, Infrastructure and Smart Grid, Supply Chain, Transportation and Mobility. Apart from that, IOTA can also function as the backbone for any peer to peer transactional settlement needs, such as web payments or even remittances.
Making a transaction is basically a 3-step process:
In IOTA there are two types of transactions: one where you transfer value (and thus, have to sign inputs), and ones where you simply send a transaction to an address with no value transfer (e.g. a message). Constructing a bundle is fairly simple and is taken care of by all the libraries that we have released so far. When it comes to signing the transaction inputs, that is also taken care of by the libraries and it's all done client side. This means that you never have to worry that your private key or your seed gets sent to somewhere else.
The tip selection is a process whereby your local tangle is traversed to figure out two randomly chosen transactions which will be validated by your transaction. These two transactions will be added to your bundle construct and are called branchTransaction and trunkTransaction.
Once the bundle is constructed, signed and the tips are added to the bundle, you have to do a little amount of Proof of Work for each transaction in the bundle. As such, every transaction in a bundle requires a nonce in order to be accepted by the network. Main purpose of this Proof of Work is sybil-resistance and spam-resistance.
After all these 3 steps are completed, you can broadcast the transactions to your neighbors and wait for it to be accepted by the network.
You should not compare IOTA Proof of Work, with the Proof of Work mechanism that is commonly used by Blockchains (e.g. Bitcoin). IOTA's Proof of Work is directly comparable to Hashcash, as it serves a similar purpose to prevent spam, and in our case, also to prevent sybil-attacks. Because of the way consensus is achieved, there is no way to earn IOTA's through the computational effort required for making a transaction. As such, there is no "mining". One can argue that you're being directly rewarded by having no fees on your transaction.
The total supply of IOTA is (3 ** 33 - 1) / 2. Which equals to exactly 2779530283277761 tokens.
All IOTA's which will ever exist were created with the genesis transaction. This means that the total supply of IOTA's will always stay the same and you cannot "mine" IOTA's.
The Tangle (read the whitepaper here) is a directed acyclic graph (DAG) as a distributed ledger which stores all transaction data of the IOTA network. It is a Blockchain without the blocks and the chain (so is it really a Blockchain?). The Tangle as implemented in IOTA is the first public distributed ledger to achieve scalability, no fee transactions, as well as quantum-computing protection. Contrary to today’s Blockchains, consensus is no-longer decoupled but instead an intrinsic part of the system, leading to a completely decentralized and self-regulating peer-to-peer network.
IOTA is based on trinary instead of binary (long story). The way we represent trytes is in uppercase latin letters and the number 9 ([9A-Z]). So whenever we speak about tryte-encoded, you know that it's a string that only contains 9A-Z (e.g. 'ABFDSGFDS9').
Tryte-encoded string consisting only of uppercase latin letters and 9's ([9A-Z]) which is used to deterministically generate private keys with. The maximum security length for seed is 81-trytes (81 chars). You should keep your seed safe and not share it with anyone.
Two transactions which were directly referenced (and thus validated) by another transaction.
Transactions which are bundled (grouped) together during the creation of a transfer. Bundles are connected directly via the trunkTransaction.
Nonce (number generated once) is a 81-tryte hash that is output of the Proof of Work hashing once the target value has been reached. Every transaction must have a nonce for it to be accepted by the network.
At the time of writing, IOTA has a reference implementation written in Java which is available here, together with all installation instructions: https://github.com/iotaledger/iri. C++ and Rust are currently under development.
The official IOTA GUI is available here: https://github.com/iotaledger/wallet/releases simply choose the right executable for your operating system. You can find further instructions about the Wallet here, and here.
We also have a Mobile Wallet for Android (iOS support coming soon), further instructions are here.
In case you fancy something simpler, you can also use Nostalgia, which is a barebones UI.
The IOTA GUI makes it possible to choose between Full Wallet, and Light Wallet. The Full Wallet automatically runs an IRI (IOTA Reference Implementation) instance in the background, which in turn means that you need neighbors in order to participate in the network and be synchronized. If you run the full wallet, you have no "trust requirements", as you are completely and independently participating in the network.
The Light Wallet makes it possible to connect to a remote node (whether it is your own node, or someone else's), and it's uses to get the latest state of the network, most importantly branch/trunk transactions which are required for making a transaction. When running a Light Wallet, it should be noted that your seed never leaves your wallet, and all the sensitive work (such as signing) is done client-side.
When interacting with any of the libraries which are supported by the IOTA Foundation, you can be made sure that your seed will never leave your side. All the essentials, such as signature generation, validation and so forth is done client-side, meaning that it's done locally on your environment. As such, your seed is never sent to your remote node and you don't have to worry about any security issues.
At the time of writing, there is no way of running a private Tangle - yet. The IOTA Foundation is currently establishing a framework with a set of tools that will enable you to run your own private Tangles. Currently you can use the Mainnet and Testnet, which should be well suited for any of your testing purposes.
Rebroadcasting is basically sending the exact same transaction to all of your neighbors again. Most of the time, apart from a situation where you're sure that your neighbors didn't get your transactions, replay is more useful to get your transaction accepted by the network.
Replay is the process by which you "re-attach" your transactions to a different part of the Tangle, in the hopes of getting your transaction accepted. As such, you are completely redoing the transaction process (tip selection and Proof of Work).