The Algorithm of Probability for Node Selection

The Issue

Probably the most asked question is, is my Node still running?
People get nervous when no earnings show up on a daily or weekly basis.
Unfortunately, that is how it is. The more nodes come online, the more the competition to get selected increases.

My personal longest time of not earning, for one Node, is 23 days. My Node was perfectly fine though.

Estimate your Chances

The probability for a Node to be selected to earn in x days, can be calculated using the following formula:

k = number of validators to be rotated each epoch (4)
m = number of shards (8)
S = number of staked nodes (~1,300)
x = number of days

1 - (1 - km/S) ^ (6x)

Using the formula on the current situation generates the following results

Number of Days Probability of being selected in x days
1 13,89%
2 25,85%
3 36,15%
4 45,02%
5 52,65%
6 59,23%
7 64,89%
8 69,77%
9 73,97%
10 77,58%
11 80,70%
12 83,38%
13 85,69%
14 87,68%
15 89,39%
16 90,86%
17 92,13%
18 93,22%
19 94,16%
20 94,98%
21 95,67%
22 96,27%
23 96,79%
24 97,24%
25 97,62%
26 97,95%
27 98,24%
28 98,48%
29 98,69%
30 98,87%
31 99,03%
32 99,16%
33 99,28%

@Jamie Thanks! :+1:
This question is asked by everyone!
I would be grateful if you would add information about the fact that on average every month everyone will get the same!


I am not a fan of repeating the same information everywhere.
Instead I added the link to a post that explains the process of being selected, which also holds that information. The time span for Nodes to earn more or less the same is a bit longer than one month.
Thanks for bringing it up.


Greatly explained Jamie lets go!


@Jamie What would you recommend to calculate your probability for being selected if you had more than one node? Should we just take the entire formula times number of nodes?

I threw together this sheet in case others want to check up to date probability.


Although I can do math, chance calculations confuse me.

Since these are independent events, I think the “times x” only works when x nodes are at the same number of days not earning, which will be very unlikely.

I would go with the average of the percentages. It is still a number though, your 30% chance node could be selected to earn earlier than your 75% chance node.


Suppose, I am at 20th day of non selection.
I hit unstake node button.
Now, to get selected for getting unstaked, am I still at a probability of ~95% as per this chart, or am I penalized and the probability counter starts at 0?

Second question. When I unstaked, the unstake tx completed within minutes, but the node is still showing status of ‘Umstaking’. I guess this is expected process right?

Being selected to earn is random, probability doesn’t change when you unstake. Probability isn’t certainty. As stated above, a node with 30% probability can still be selected sooner than a node with 99% probability.

Unstaking isn’t likely to happen this quickly. Did you see the PRV show up in your account?

No i dont see the 1750 PRVs in my wallet.

Here is the tx:

Here, the Node Status:

When you said the unstake transaction took minutes, I assumed the unstake process. Guess you only meant “telling the system I want to unstake this node” took minutes.

In that case, yes, this is normal behavior.

Even though you selected unstake, your node still has to be selected one more time before it actually releases your funds. At least for pnodes. Not sure about vnodes.

For the network, a node is a node. Same “waiting for to be selected” step applies.

1 Like

Thanks everyone for the clarification.
But looks like I am going to break the record. This node got selected last on 9th Feb. I unstaked on 27th Feb, still waiting.

The record is about 60 days!

Looks like the chart in this post needs an update then!

No, the chart is correct. After 33 days probability stays the same.

1 Like

There is about 2800 validators now

I unfortunately hold the record at 65 days.

1 Like

Ah yes, I thought @krauq was referring to the days maxing at 33. Good point, both of you.

@Stradimarius @krauq
I have added new info and the option to tweak the variables here