One of the most asked questions in various crypto-related chats is how Proof-of-Importance works. There's already an article on that, so you should read that article here if you haven't already. After learning what PoI is, most people will then ask the next logical question: "How do I get importance?"
This concept can generally be simplified down to the fact that the use of the network is rewarded, as opposed to only your stake or mining power. This article aims to go more into detail about the importance calculation formulas, while avoiding complicated math and cryptography concepts.
In order to increase your PoI score, send more transactions to more people. This will result in a net loss of money, but your PoI score will go up. There are protection measures in place to ensure that won’t allow you to profit by artificially inflating your score.
So, just use the network honestly and normally, and you won’t have any troubles.
Eligibility to Have any Importance
In order to have an importance score in the first place, you're going to need at least 10,000 vested XEM. This means that you need more than 10,000 XEM to harvest due to how vesting works. As you know, 10% of your non-vested XEM becomes vested every 24 hours. This means that with 10,000 XEM you will approach, but never reach the required value.
The total XEM supply is 8,999,999,999 XEM, which means that the theoretical maximum number of accounts that can have non-zero importance is 899,999. The actual number of accounts harvesting will be a lot less though, since many people will hold more than 10,000 XEM.
As XEM becomes popular, and network usage increases significantly, the required balance could decrease through a hard fork in order to allow more people to harvest.
Parts of the Importance Calculation
There are a couple of numbers involved with the importance calculation. The following is how they are calculated.
Single Transfer Scores (Outlink Matrix)
For every eligible user (10,000 vested XEM or more), the chain finds all of the transactions the account made that meet the following criteria.
- Sent at least 1000 XEM
- Happened in the last 30 days (43,200 blocks)
- Were sent to another eligible user (10,000 vested XEM or more)
Then, it takes each of the transactions sent from person A to B, and does a little bit of math. The math may be pretty complicated for the average Joe, but it essentially takes into account how much was sent, and how long ago it was sent.
As seen in this chart, the importance of the transaction goes down (decays) over time. A transaction made 1 day ago is much more valuable to your importance score than a transaction made 20 days ago.
The network then calculates a number using this information as well as some complex mathematical formulae. This number gives a score to all the transfers that occurred from person A to B. Then it repeats this process for person A to C, person A to D, and so on depending on how many people received XEM from person A.
Now that it has all these scores between people, it needs to do even more math! Taking into account all of the initial single-transfer scores, it generates a number known as the NCDawareRank. The math works similarly to PageRank, Google's algorithm for determining which results are on what page of Google.
The NEM Technical Reference has nearly four pages on all of the math that it does, and a high understanding of math is recommended when reading the technical reference.
The final score is then calculated taking the following things into account.
- Total Vested Amount of XEM
- Math-ified (temporally weighted) Net XEM
- NCDawareRank Score
- Various Algorithms
So, as has been simplified, transactions are very important in your importance score - so transacting normally will definitely help your importance score.
There are a couple of attacks that need to be prevented in a system like this, so this section lists some of them, as well as how NEM fixes these problems.
In the Sybil attack, the attacker creates multiple accounts in order to gain control of the network.
In NEM, accounts are rewarded for harvesting blocks, and accounts with higher importance scores can harvest more blocks. Someone trying to carry out a sybil attack may try the following:
- Sending transactions between accounts to boost the NCDawareRank score
- Sending transactions to random accounts, also controlled by the attacker
- Sending XEM in a loop to boost the single transfer score. (See loop attack section for more.)
NEM defends against these attacks by using the following strategies:
- In web pages, PageRank is abused by creating 'backlinks' from lots of other sites in order to make them appear more popular. A part of that algorithm was modified in NCDawareRank to make this type of thing less valuable.
- Your XEM balance is vested slowly, so it would take a long time for an attacker to obtain a lot of XEM and then immediately attack.
- Use the net loss of the account in the calculation for score. This makes it so that an account that sends 10,000 XEM and receives it back is less important than one that sends it and receives nothing.
- As seen in the graph in the single transfer score section, the value of sent XEM in relation to importance decreases over time. This means that an attack like this will only give a temporary boost in score, rather than a long term one.
- Various mathematical tweaks, that you can read about in the technical reference - but may be hard to understand for the average Joe.
All of these strategies combined makes it foolish for an attacker to try to artificially boost their importance without actually being more important on the network.
In this attack, the attacker sends XEM in a loop through their accounts. Because of the aforementioned reasons, this will not work, and could even hurt the attacker's overall harvesting earnings.
There are a couple of mathematical tricks to this, but these graphs sum it up nicely.
In all of these graphs, the honest account is someone who is keeping their 800 million XEM in one account, and the Sybil attacker is keeping their 800 million XEM using various strategies. The x axis represents the amount of attacker controlled accounts on a log scale (each line = 10x previous line).
In graph A the attacker is looping their XEM, and they only gain a 4% increase - while losing a lot of XEM in fees, possibly making less XEM than the honest account.
In graph B, the attacker puts XEM in attacker-controlled accounts, and then sends all the XEM to their main account, but only gains a 7% boost for a short while. After that the attacker goes back to near their old limits, and lost a lot in transaction fees.
In graph C, the attacker sends XEM to accounts that they own at random. This makes the attacker lose more in fees than any other method, but is the most effective in increasing the attacker's score, with a 7% increase after 100 eligible accounts - but it doesn't matter since they probably lost a lot of fees (which are distributed to other harvesters anyway) in the first place. If the attacker gains nothing, there's no reason for them to carry out the attack.
The NEM importance system is a robust system used to calculate how important an address is. It is very hard, if not impossible to game the system, and when you do manage to do it, you lose more money than you would otherwise have gained. So the answer to the initial question is simple: if you want a higher importance score, then transact more, and transact honestly and normally.