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.