Analyzing Proof of Importance and its correlations


The discussion of the actual affect of the importance calculation compared to pure proof of stake has come up quite a number of times over the years, without there ever being a real answer to the question. This question has come up more in recent times, due to the potential of launching catapult with different consensus mechanisms.

Someone in the community has taken up the challenge to analyse the PoI algorithm. They have developed a script that outputs some interesting information, which they have given me to share on their behalf. My not being a python developer, i asked @crackTheCode if he would be able to get the script to run and he did after some minor data set issues were resolved. Thanks bader.

The code, graphs, raw data and formatted data can be found here

Below is a graphical view of the output of the script:

And this is the non-graphical output for any of you that might be curious:

PoIvsPoS_Catapult_NIS1.pdf (26.9 KB)

Also thanks to @pawelm for (unwittingly) providing the raw data for this analyses. :wink:

Misha Granin for Vice President (at least for a day, so we all can create NEM Foundation 2.0)

Nice work but I got no clue what those graphs are telling me.

I think the most meaningful comparison would be to actually re-calc importance scores for a good chunk of accounts and comparing those. POS implementations vary just using the catapult formular should give us some insights.


So, based on the graph top right, it looks as though the larger the balance of an account, the lesser effect that the PoI aspect of the consensus algo has on an accounts importance. ie. an account with 500k xem vested balance that has never been active would have an importance of roughly 90% of what it would, had pure proof of stake been used, and an account with 50k xem that has never been active would lose 10% its importance vrs PoS, or close to double its importance should it be highly active.

The effect of PoI on large accounts can be confirmed by looking at the POST V1 fund in the rich list, which has an importance of about ~0.09 and is why i first asked about the actual effect of PoI vrs PoS.

It makes sense that smaller accounts would see an unequal gain in importance vrs much larger accounts, because all large accounts can lose importance but only accounts with >10k xem balance can gain importance. so there is an uneven redistribution of any lost importance, all other things being equal.

The question id ask about this is, is the effect of PoI actually worth having a resource intensive algorithm to calculate it? And, if we increase the effect of importance calc vrs stake, what are the potential risks/ramifications?

Personally i don’t think a 10% hit for a dead account with 10% of the supply is enough of a hit. It should deteriorate much much more because in its inactive state, its worthless to the network, but that could be an issue.

If the much larger, and usually much more dormant accounts, lose say, 60% of their importance to the smaller/active accounts, its increasing the risk of a 51% through redistribution of importance to other coins, therefore requiring far less xem to perform an attack, simply because larger accounts go dormant.

Of course we cannot enforce that the larger accounts be active, so increasing the effect of importance vrs stake would in turn increase the potential risk of a 51% attack. Even now, you need <50% of all coins to do a 51% attack due to the redistribution of importance. The more you decrease the effect of stake vrs importance, the more you increase 51% attack risk, which is why i suspect the core devs kept it to a maximum correlation of 0.1. So i also suspect we cannot increase the effect of PoI because of the potential increased risk of 51% attack.

So really, we are actually trading security for inclusiveness. Although PoI is more egalitarian, as it was intended to be, its actually less secure from what i can tell and a lot more resource intensive than PoS while not actually having enough of an effect to be as egalitarian as it was initially envisioned to be, and for that reason i would suggest that catapult be launched with pure proof of stake vrs PoI.

To top it off, PoI is going to need a complete port to C++ while there is already a C++ PoS implementation (ProximaX already has this done for all those who are giving out about proximaX) that can be adopted - reducing demands on dev time before catapult launch.

This is mostly just my brain dumping so please someone correct me if any if i’m off base on any of this.


So the 500k has 90% of the POS equivalent and the 50k loses 10% of it’s POS equivalent…so both 90% then ?

imho nope.


Yeah, just worded crappy… ^^

Either way, Im betting a 50K account might lose at most 0.1 of its importance, but gains a heck of a lot more. I cant see the algo causing smaller accounts to lose more than what the biggest accounts can. The numbers in the data corroborate this i think. If you look at smaller accounts, the correlation is waaaay in excess of 10% in some cases. Not sure if im reading that bit right though.


Thanks, really nice inside into PoI, I hope this data could be useful when the process of deciding about Catapult’s consensus occurs!


Thanks for the insight and sharing your knowledge and view on this. Good point to keep in mind.


I think if we’re already thinking about dumping POI then I think it should also be evaluated whether 60s blocktimes are still considered ideal. A lot of research has happend on the security of blockchains since nem was released and not taking all of that into account would be a damn shame.
The question we should be asking is not just “is POI worth the hassle”, it’s what consensus algorithm achieves the desired security while giving the best possible exprience to participants in the network (and I’m betting that POI is not going to be the answer to that question).