Cutting edge technology like IOTA comes with a lot of technical and administrative hurdles.
We have seen the results of initial quirks when Ethereum (ETH) and it’s DAO were targeted because Solidity, the language behind ETH, was flawed with a bug.
The DAO wouldn’t have happened like this if Solidity wouldn’t have ignored the return value that sends Ether to another account.
Frankly, that wasn’t the end of everything, but maybe that wouldn’t have happened if people would understand the tech behind Ethereum a little bit better.
The biggest advantages of IOTA have been repeated mantra-like: No Blockchain, scalable, decentralized, fast, fee-free, quantum secure. The best option for the IoT.
IOTA is built upon an exotic technology so not surprisingly, people are looking for some explanations.
Since I’m not much of a coder myself, I still have to struggle when our core devs are talking about the directed acyclic graph (DAG), Java, subtangles, milestones, and functions in the IRI.
And I have to admit: The following conceptional article is merely a big theft and plagiarism of thoughts because I loitered through the slack and asked our smartest coders how everything works.
For starters: Look at the Whitepaper for a scientific approach.
FYI: I’m trying to cover the overall important terms but for now, it’s not possible to point out every single feature. If you have specific questions, I recommend you join our slack: https://slack.iotatoken.com/
Same applies for mistakes I made! Please contact me if you find any flaws.
1.) If you want to use IOTA, and to send a transaction, you need to confirm two transactions before you may send yours. This simple rule leads to: the more people use IOTA, the more transactions get referenced and confirmed:
Confirmation rates and timings are getting better, the more people use it, unlike Blockchains.
2.) Compared to traditional blockchains of the 1st and 2nd generation, IOTA has no blocks and therefore no scalability issues the more transactions are conducted and addresses are generated. How so, you may ask?
What specific advantage does IOTA get in terms of scalability, when there are no blocks at all?
IOTA doesn’t need to order values of seeds and addresses in the right order. This “trick” it uses is, that all transactions can be saved on different devices, at different places, unordered, even split. So when you are synching your node, it just iterates through all transactions. The values from all transactions will be grouped into their addresses, even if they are in their previous order or not.
When the Tangle processed all transactions, the addresses (aka ledger) will contain all balances. It only needs to verify that none of the addresses contain negative balances.
This feature gives lots of benefits. For example, MapReduce, a programming model, can be used with this feature, to process large datasets parallel on many devices, also constrained devices. Perfect for a distributed ledger, where countless devices are bound together.
Furthermore: The tangle caches address-balances of a subtangle, to combine them with newly discovered transactions.
A second trick IOTA uses is the appliance of multi transactions. They are made of a diverse number of chained transactions while using the same address.
In addition, these chains are set up that only the first transaction has value, while all following transactions have a zero-value. That means that on top of the fact that there is no necessity of order, there is no necessity of skipping transactions.
In conclusion: Transactions with IOTA can be processed very fast, unordered (Commutative Law / Linearity (a+b = b+a) ) and unfiltered because zero-values are added behind non-zero-value transactions. There is no max-count of transactions in one block like in blockchains and there will certainly be no blocksize-debate.
Eli5: It makes no sense to sort a puzzle just from one corner, piece after piece if you can have multiple eyes looking simultaneously and randomly for the right pieces to form the puzzle, from multiple corners. The more eyes, the faster it gets.
3.) People argue that IOTA has a problem in the future, in hindsight of the growing size of the Tangle. What is happening now to prevent that is a) people have to use PoW, they can’t just spam the tangle without having to pay for it with time and electricity.
b) snapshotting reduces the size of the tangle frequently. For now, manually in coordination with the core devs, later automated and locally.
Keep in mind, that the bottleneck for the speed and usability of IOTA in the future is not confirmation rate or size of the tangle (because storage is getting better and is really cheap already), but bandwidth.
Without a solid infrastructure, the Tangle can be limited in its functionality.
Approval Of Transaction Now And In Post-Coordinator Times
After some dense conversations, I can tell you that the intrinsic approval of transactions is no piece of cake. Therefore I decided to also “explain like I’m five” at least for the latter part.
We basically have two phases of approval.
Now and in times after the coordinator is arranging transactions. As already mentioned, this will ultimately be the case in July 2017, but maybe earlier depending on manual claims by IOTA owners, testing and size of the tangle.
Now the proof of work is done with a Hashcash-similar algorithm, which is also used with Bitcoin. Hashcash is basically an assignment for your node to work and to calculate a missing piece of a puzzle so to speak.
The coordinator is deciding, where the tangle needs to grow and where to coordinate the next steps. The coordinator also marks transactions which are already confirmed. That’s the reason IOTA is not decentralized yet, per definition.
In practice, IOTA is decentralized and could run completely free, without the coordinator, but for now, this system is set up as a protection mechanism against 34% attacks, while the tangle ledger isn’t fully matured and big enough to catch such attacks.
Interesting read: The Transparency Compendium
Approval of transactions in post-coordinator time works with Random Walk Monte Carlo-Methods. That’s a random integral algorithm to jump to random transactions and approve them (to put it simple).
If you are really interested in the function behind Monte Carlo, here is an introduction Video:
The Random Walk Monte Carlo-Method will be enabled once the coordinator is shut down. Then, the IOTA Reference Implementation ( IRI) will be upgraded to the IOTA production Implementation to support the IoT in industrial appliances. An additional step is the usage of the ternary JINN processors.
So all in all, the approving-time depends on the network topology and a number of transactions per second. When the coordinator is shut down, the freed tangle will be operative.
That being said, there is no theoretical scalability-limit and therefore an incredibly fast network.
Further information on Hashcash
I’d like to pin down this lovely stolen “explain like I’m 5-story” about Alice and Bob about spending IOTA within a subtangle or out-of-order tangle to clear things up.
Imagine that Alice sends 10 iotas to Bob, she attaches her transaction to the tangle and in 5 mins Bob spends 7 iotas from these 10. Unfortunately, Alice’s transaction might be attached to some part of tangle that is not widely seen, but Bob’s transaction is picked by 99% of the network right away. It would be a bad idea to make Bob wait just because he had business with a woman from “suburbs”. IOTA allows to include Bob’s transaction and during some period of time the ledger will be inconsistent (because the majority thinks that Bob spent iotas out of thin air), but no one really verifies that the ledger is consistent every single second. 2 mins later Alice’s tx might be adopted by the network and then everything will be fine.
Even more, we can imagine a situation when Alice doesn’t have iotas and promises Bob to pay later, Charlie trusts Bob and can accept his transfer. Later (in a few weeks), when Alice finds iotas and sends them to Bob’s address not only Charlie but the rest of the network accepts that subtangle as part of the global Tangle.
Important: For now, the tangle is not scalable nor allowing out-of-order tangles because the milestone-coordinator is organizing transactions in order to establish the tangle.
Not many information about the ternary JINN processors is public supposedly due to contracts.
A few things, however, are known, for instance, that these chips are the first of their kind and able to disrupt and change big branches of the IoT.
JINN are “general-purpose-processors” with the purpose to conduct thousands of transactions per second.
That is possible because unlike binary processors, they can go into more states:+, – and circulating around zero, so 3 states all in all. These 3 states perform transaction very balanced, which is quite helpful to build a self-organizing and self-sustaining network like the tangle.
A good read about the theoretical advantages of a ternary computer you can find here:
Founder David Sønstebø on JINN: “JINN is a custom made Polymorphic Processing Unit which utilizes asynchronous circuits and trinary logic gates, a component of this is the ‘Curl Hasher’ (essentially a tiny ASIC), this ‘Curl Hasher’ component will be made open source so that any chip manufacturer can add it to their chips trivially. We’re talking a completely negligible amount of logic gates here, so zero extra cost, size trade off or implementation issues”
Cryptography and Quantum Resistance
Quantum computing will be the end of encryption as we know it. Against the background of the global interconnectedness of the IoT, a problem that demands a secure solution.
IOTA has an integrated quantum-resistant algorithm, the Winternitz One-Time Signature Scheme.
The Winternitz hash is known as a post-quantum signature because quantum attacks don’t significantly lower the security given by this hashes.
Dr. Sergui Popov compares IOTA with Bitcoin to explain quantum resistance:
As of today, in average one must check around 268 nonces to find a suitable hash that allows to generate a block. It is known (see e.g. ) that a quantum computer would need Θ(√ N) operations to solve a problem of the above sort that needs Θ(N) operations on a classical computer. Therefore, a quantum computer would be around √ 2 68 = 234 ≈ 17 billion times more efficient in Bitcoin mining than a classical one. Also, it is worth noting that if blockchain does not increase its difficulty in response to increased hashing power, that would lead to increased rate of orphaned blocks. Observe that, for the same reason, the “large weight” attack described above would also be much more efficient on a quantum computer. However, capping the weight from above (as suggested in Section 4) would effectively fence off a quantum computer attack as well, due to the following reason. In iota, the number of nonces that one needs to check in order to find a suitable hash for issuing a transaction is not so huge, it is only around 38 . The gain of efficiency for an “ideal” quantum computer would be therefore of order 34 = 81, which is already quite acceptable (also, remember that Θ(√ N) could easily mean 10√ N or so). Also, the algorithm is such that the time to find a nonce is not much larger than the time needed for other tasks necessary to issue a transaction, and the latter part is much more resistant against quantum computing. Therefore, the above discussion suggests that the tangle provides a much better protection against an adversary with a quantum computer compared to the (Bitcoin) blockchain.
Background: Winternitz OTSS
Concerning a possible attack-vector, that has been discussed lately
First, you should have a look at
Then, take a look at The Tangle is safe, a Commentary
And for those, that are still unsatisfied, let me end with this:
If you’re interested in discussing possible attack vectors, the IOTA Foundation is happy to discuss it and to provide you with funds to test those
scenarios in order to develop a solution.
For now, no attack vector has been proven successful.
I hope I provided some interesting information.
Have a good week,