Thoughts and Hopes on Issues of IOTA

in iota •  7 years ago  (edited)

This article isn’t written as unfounded praise or vicious criticque of IOTA, it’s my vehicle of thought. When I started reading into blockchain technology, mainly by browsing Bitcoin Wiki, Ethereum Wiki and even the Ethereum Source Code, I was baffled about the ingenuity of this approach to decentralized trust. After I have read about the Tangle of IOTA, I got even more excited.

The following lines are a medium for reasoning about questions I’ve got regarding IOTA when I started learning and understanding this new technology.

Infinite Scalability - Is the impossible possible?

I’ll be honest to you, infinit scalability sounds like bullshit to me and I think it’s only perpuated by authors who do not think it through.

But why do people argue there is infinte scalability and the Tangle is able to provide it? The idea is simple: Every actor in the IOTA network has to validate two transactions when they want to send a transaction.

Means, the more transactions are send, the faster transactions are validated. Simple, clever and everybody understands it. That seems to be the main reason everybody and their aunt put this fact and the infinite scalability claim in their article.

Udi Dahan worte a blog post on system architecture called The Myth of Infinite Scalability and he summarized the problem perfectly in only two sentences:

Be careful not to optimize for only a single dimension – reality is a whole lot more complex.

There are so many other things to deal with as a system scales.

— Udi Dahan

IOTA - An almost decentralized Ledger

The cheapest and most obvious flaw and scaling issue in IOTA is the coordinator. Basically, the coordinator issues transactions, so called milestones. Every transaction directly and indirectly referenced by milestones count as confirmed.

milestone Transaction and Unconfirmed Transactions

Why use a coordinator node in the first place? The problems seem to be adressed quite well by the overall IOTA consensus protocol. As far as I’m able to assess the problems, the overall stability of the network is reliant on the amount of full nodes and the amount of transactions.

In a perfect world, we’d got an infinite amount of full nodes with infinite processing power and network speed. In this scenario, a high amount of malicious crafted transactions wouldn’t harm the network. It wouldn’t be possible to stale valid transactions as enough fair playing validators would take care of them.

Problem is, we’re not living in a perfect world.

Zero transaction costs mean zero attack costs

One of the biggest advantages of IOTA is also one of its biggest weaknesses. Why do Bitcoin and all of the other PoW-Blockchains have transaction costs? For two basic reasons:

  1. Providing an incentive for miners

  2. Disincentivize attackers based upon malicous transaction volume

To summarize the reason in two words: game theory.

Because of the young age of IOTA, there isn’t a big enough set of full nodes to trust the network to be reseliant against attacks. The coordinator tries to fix that. It prevents the network from being overtaken by malicious players.

Three months ago, we had to learn that that’s still not 100% working, when a spam attack clocked the network with transactions containing the message COORDINATOR9SUCKS99999999.

Graph of TPS while coordinator was under attack
Image taken from Redit-Post: This is why we can't have nice things

I have not seen any plans on how to fix that because it’s first and foremost a structural problem. Some people claim it's the fault of the coordinator, some people claim it's about the small set of full nodes and how they synchronize. I suspect it's the full nodes problem - so, how could we motivate people to setup full nodes?

What’s validation anyways?

As said before, every transaction requires the sending full node to validate two other unconfirmed transactions - so called tips. To select them, the IOTA reference implementation iri defines this simple algorithm

  1. Start from the latest milestone.

  2. Follow the unconfirmed transactions till you reach an transaction without any successors (that’s a tip). If a transaction has multiple successors, it’s chosen by random (random walk).

  3. Choose last found transaction.

This is done twice. When I read about this algorithm, my first intuition was that those would mean that a node has to iterate through a lot of transactions, which would make it quite cumbersome, slow and prone to diverging tangle branches.

In practice, the coordinator keeps the set of transactions relevant for the algorithm relatively small because only transactions issued after the most recent milestone traversed. Means, the coordinator plays also a central role in preventing this set from getting to big and unstructured.

The coordinator issues a new milestone each minute. All this meassures keep the footprint relatively small. A node seems to work fine with less than 4GB RAM total memory for the JVM process and when I’ve looked at it, it only used around 1GB. That’s not a small footprint, but it’s also not a huge one.

Additionally, the network is cleared from time to time. A snapshot throws the tangle in the trash but keeps the latest account states. This way the amount of transactions to iterate through shrink even more.

To sum my findings up: I was wrong. All issues my intuition told me regarding tip selection are addressed by the coordinator and the tangle protocol. Setting up a node does not require powerful machines. A regular 500 bugs home pc should be fine.

Coordinator - Architectural problems?

Still, I do see problems and I hope they will be addressed as soon as the decentralized coordinator solution is revealed. I still see two problems with IOTA.

  1. No incentive for setting up full nodes

  2. It seems to me that the coordinator isn’t a 100% optimal working solution, but removing it seems to have many other problems and consequences which are hard to estimate.

I’m looking forward to the open sourced and decentralized coordinator solution. But still, I have to admit that IOTA does not 100% convince me. In my opinion, there's something missing in the overal concept to make it run smoothly. The transaction volume is growing nevertheless and some people derive a growing user base from that.. Maybe I’m missing a piece of the big picture and everything's fine .

If you do have evidence that's the case, please don’t hesitate to point me to the sources to learn about it.

Update: Apparently they're testing a new algorithm for tip selection. (Source. Reddit) Seems to improve the situation but not fix everything

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @kryptokurs! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You published your First Post

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Do not miss the last announcement from @steemitboard!

Congratulations @kryptokurs! You received a personal award!

1 Year on Steemit

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @kryptokurs! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!