How to properly assess the health of IOTA's tangle.

in #iota6 years ago (edited)

Difficulty in discerning confirmation rates

Recently I have seen a lot of discussions about how healthy IOTA's network is at any given point. Many of the conclusions argued for seem to come from a lack of ability to use existing tools and accurately tell confirmation rates. I want to take a minute to go over what factors are important to assessing the health of the network and how to get them.

What makes a healthy network

Not all transactions try to get confirmed. Some transactions place themselves too low to ever be considered for confirmation (like a block in block-chain not being placed at the top of the chain), or use tip selection methods that decrease their own chances of confirmation. Luckily these transactions do not affect the confirmation rate of transactions that are trying to get confirmed. Because of this, if you want to tell how likely it is at current for your transactions to get confirmed, you should only look at current confirmation rates of transactions that are trying to get confirmed.

https://tanglemonitor.com/ is a great tool for assessing the general health of the network. It has an "Avg. eff. conf.ratio" indicator at the top, which displays the confirmation rate of all newly received transactions older than the average time it takes to get confirmed. It also has an "Avg conf.ratio" indicator but this one is less accurate considering it includes transactions that have not had time to confirm yet (younger than the average confirmation time) into it's average.

While this website gives a good way of seeing confirmation rate of all new transactions, it does not provide a way to distinguish which transactions are trying to get confirmed and which are not. This begs the questions, how does one tell the confirmation rate of only transactions which are trying to get confirmed?

Flawed methods

So we now know not to take the confirmation % indicator of tangle-monitor at face value, and we want to only assess the confirmation % of transactions who are actually trying to be confirmed.

There are a few ways to try and ignore transactions that are not getting confirmed. For instance all transactions with the address SIDETANGLE9ROCKS99999999999999999999999999999999999999999999999999999999999999999

have a 0% confirmation rate, so they should probably be ignored, which can be done on tangle-monitor by hitting the "X" left of their address name. It would be exceedingly difficult to find and sort out all bad actors this way. What makes it even more difficult is some spammers choose to randomize their address before they send each transaction, meaning you cannot just tell tangle-monitor to sort out a certain address.

Doing your own healthy spam

Doing your own spam is one of the best ways to tell the confirmation rates of the tangle since you can assure that all the transactions you try and send out are following the recommended tip selection algorithm and trying to be confirmed.

https://github.com/iota-tangle-io/dtlg provides a spammer with an intuitive user interface. It asks for the address of an IOTA full node before starting spamming. Many healthy nodes can be found here https://iota.dance/

For this demonstration I chose "https://wallet2.iota.town:443" as my node because it is using the latest IRI: 1.5.3 and wasn't being used by many other spammers at the time of my selection.

Using the spammers user interface I made my transaction's address and tags start with
"CONFIRMTEST" so I will be able to assess my transaction's confirmation rate using tangle-monitor.

After spamming for a while, stopping the spammer and waiting 4.2 minutes (the average time tangle monitor says it currently takes transactions to get confirmed) to make sure I gave all my transactions a change to get confirmed, I found that my transactions had a 65.2% confirmation rate.

This is relatively higher than the 51% "Avg. eff. conf.ratio" that tangle-monitor displayed at the top. From this we can assess that 65.2% confirmation rate is a confirmation rate which successfully ignores transactions that are intentionally not trying to be confirmed.

It's worth noting that there are some parts in tangle-monitor where all transactions placed at a certain point in time did not get confirmed, leaving black streaks on tangle-monitor's chart. This is something that could probably be improved upon, but overall a 65% confirmation rate in the network is healthy.

Conclusion

Due to IOTA's tangle-architecture being more complex than Blockchain, it can be difficult for people to accurately assess the likely-hood of their transactions getting confirmed. Tangle-monitor's confirmation rate should only be seen as a minimum confirmation rate that healthy transactions are experiencing, because it includes transactions that are intentionally not trying to be confirmed in it's average. The methods I have detailed above provide quite an accurate way of telling how likely it is for your transactions to get confirmed after the average confirmation time. The lower the average confirmation time in the network the better and this should also be considered in determining network health, but high confirmation % is usually more prevalent to user experience.

It is worth noting that IOTA is not a completely finished protocol yet. It has had and will surly have a few more growing pains on it's way to becoming a finished protocol, but it is currently preforming moderately well.

Sort:  

I have seen misinformation on both sides. There are people who constantly say IOTA is a failure and not working because of one bad past experience they had, as well as IOTA supporters who continually deny when the tangle is actually unhealthy and having issues because they are quick to point out that tangle-monitor can be misleading, even though the network was actually a huge mess at the time. This can hopefully provide a way to help clear some of that up.

Im quite forgiving of all the problems I had with IOTA, its new tech, things go wrong.

I didnt look in for a while, so I might be out of date, but the single most disappointing thing about IOTA is that it doesnt work on IoT devices. All I hear is about Trites, and the fact that every IOT device in the world is going to need a hardware swapout...

I’m a little confused in that 65% is considered good? If I was to send a transaction and not have 100% certainty the transaction would eventually be confirmed with a shared consensus and irreversibility by everyone involved, how could I trust the network with financial transactions? What am I missing?

Basic explanation

In Bitcoin once you submit a transaction with a transaction fee, there is not a 100% chance your transaction will be added to a block before it is forgotten by all nodes. If the fee is too low the transaction might never be confirmed. Once your transaction is confirmed in a block however, it's immutability is pretty certain. that certainty increases as more blocks are made on top of the one that contained your transaction. IOTA is the same way.

More thorough explanation

After the average confirmation time (in the case above, 4.2 minutes) a transaction has a (in the above case) 65% chance to be confirmed. Currently due to the milestone, once a transaction is considered confirmed, consensus is made and there is no chance of that transaction being unconfirmed.

In IOTA transactions are permanently recorded whether they are considered confirmed or not. This is similar to how in Bitcoin, every mined block is saved even if that block is not part of the longest chain and is considered unconfirmed. Once a transaction is confirmed, new transactions are continually placed on top of it, allowing for consensus to be made through Proof of Work, even though currently consensus is made via a milestone transactions.

If your transaction is left unconfirmed after the average confirmation time, users can simply do the necessary proof of work required and re-attach their transaction at the top of the tangle again. Wallet software like the Trinity wallet does this automatically if you are using the wallet, background re-attaching will be added soon so that this is done even when the application is closed as well.

For further details, a basic technical explanation of IOTA's consensus algorithm can be found here:

Since I used Bitcoin for most of my comparisons, here's my favorite technical explanation of it as well:

Thanks for the explanation and links to further information. I do like how newer wallets will keep trying to ensure a transaction does get confirmed eventually, but it certainly feels... weird. :)

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

Congratulations @logan-king! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of comments

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

How do you think @logan-king what will happen next?

Congratulations @logan-king! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 3 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!