<blockquote>
<p>For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?</p>
</blockquote>
<p>Assuming that a lot of miners don't switch, yes.</p>
<blockquote>
<p>&quot;F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes.&quot;</p>
</blockquote>
<p>You're asking two subtly different questions here.</p>
<ol>
<li>Will I find the next block?</li>
<li>Will I find a block in the next ten minutes?</li>
</ol>
<p>You could find the next block, eleven minutes from now. You could find a block in five minutes, building on a block that was discovered four minutes ago.</p>
<h3>Will I find the next block?</h3>
<p>This is pretty straightforward. If you have 10% of the hashrate, there's a probability of 0.1 that you will find it. If you have p proportion of the hashrate, there's a probability <code>(1-(1-p)^n)</code> that you will find a block in the next n blocks. For 10% hashrate, and 10 blocks, that's a chance of 65%. Far from a sure thing.</p>
<pre><code>p = 0.1
Blocks  Probability of you getting a block
0       0.00000
1       0.10000
5       0.40951
10      0.65132
30      0.95761
50      0.99485
100     0.99997
</code></pre>
<p><a href="https://i.sstatic.net/jczSd.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/jczSd.png" alt="graph of probability of us finding a block" /></a></p>
<h3>Will I find a block in the next ten minutes?</h3>
<p>Block discovery follows a <a href="https://en.wikipedia.org/wiki/Poisson_distribution" rel="nofollow noreferrer">poisson distribution</a>. A poisson distribution represents a bunch of independent events, where one event happening has no effect on it happening in the future.</p>
<p>We want to know the odds of k blocks being found by anyone in a ten minute period, when there is an average of 1 block every ten minutes. Wikipedia already has a <a href="https://en.wikipedia.org/wiki/Poisson_distribution#Examples_of_probability_for_Poisson_distributions" rel="nofollow noreferrer">table for us</a>:</p>
<pre><code>k   P(k)
0   0.368
1   0.368
2   0.184
3   0.061
4   0.015
5   0.003
6   0.0005
</code></pre>
<p>But this isn't quite what we need - if ten blocks are found, there is a much better chance that one of them is ours than if one block is found. Multiply by expression above, and substitute k for n, and 0.1 (our proportion of hashrate) for p.</p>
<pre><code>k   P(k)    P(k)*(1-(1-0.1)^k)
0   0.368   0.0000
1   0.368   0.0368
2   0.184   0.0350
3   0.061   0.0165
4   0.015   0.0052
5   0.003   0.0012
6   0.0005  0.0002
    Sum:    0.0949
</code></pre>
<p>Sum up the last column. We get a 9.49% chance, which is the chance that you will get at least one block in the next ten minutes if you have 10% of the hashrate. But, that doesn't mean that there's a 95% chance of having a block in ten minutes with 100% of the hashrate. It's not linear. If you have 100% of the hashrate:</p>
<pre><code>k   P(k)    P(k)*(1-(1-1.0)^k)
0   0.368   0.0000
1   0.368   0.3680
2   0.184   0.1840
3   0.061   0.0610
4   0.015   0.0150
5   0.003   0.0030
6   0.0005  0.0005
    Sum:    0.6315
</code></pre>
<p>...then you have a 63.2% chance of having a block in the next ten minutes if you have all of the hashpower.</p>
<p>(Our calculations are low by about a twentieth of a percent, because we didn't consider cases like k=7. But I figure this is a good approximation.)</p>

CC BY-SA 3.0
2016-12-18T11:58:14.753Z
I have trouble following your though process on the three last paragraphs. You talk about having a much better chance to find one out of ten blocks, but the tables or following paragraphs don't seem to address that.
Murch
CC BY-SA 3.0
2016-12-19T02:30:39.203Z
@Murch I've made some edits. Mind taking a look?
Nick ODell
CC BY-SA 3.0
2016-12-19T08:21:16.870Z
Ah yes, now it's clearer to me. I've also found a mistake in my own thought process. ;)
Murch
CC BY-SA 3.0
2016-12-17T16:39:37.113Z
2016-12-18T19:21:22.817Z
2020-06-16T11:10:03.350Z
Nick ODell
<blockquote>
  <p>"F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."</p>
</blockquote>

<p>Nick already addressed this, but I'd like to point out that it seems to me that you're misunderstanding something very fundamental about statistics: When you toss a coin, the expected chance to get tails is 50%. Your statement above reads as if you're saying that two coin tosses would have a 100% chance of producing one result of tails. –– That's not true, though.</p>

<p>Obviously, you could get either of the four results for two coin tosses: <code>TT</code>, <code>TH</code>, <code>HT</code>, or <code>HH</code>. Which means, there is a 25% chance to get two tails, a 50% chance to get one tails, and a 25% chance to not get a tails. If you meant "at least one block" that would be a 75% chance for our example, not 100%.</p>

<p>Translated to block discovery this means the following:  </p>

<ul>
<li>Block propagation and validation takes an very small amount of time, so we're assuming you're always working on a valid block.</li>
<li>Finding blocks is completely independent from other blocks being found.</li>
</ul>

<p>Thus, your chance of finding <em>exactly</em> one block in 100 minutes with 10% of the hash rate has the same Poisson distribution as finding <em>exactly</em> one block in 10 minutes with 100% of the hash rate. <em>That you're only trying to discover one block out of ten does not have any influence!</em></p>

<p>Your chance to find <em>exactly</em> 1 block in the time frame where you would be expected to find one block is 36.8% (also see Nick's tables), and it's 63.2% to find <em>at least</em> one block.</p>

<hr>

<p>Just because I had missed that when I first read Nick's answer: Note that your chance of finding one block out of the next <code>n</code> is different from your chance of finding a block in the time frame where <code>n</code> blocks are expected.</p>

CC BY-SA 3.0
2016-12-18T11:43:29.220Z
2016-12-19T08:25:56.810Z
2016-12-19T08:25:56.810Z
Murch
<p>Miners find blocks randomly but also proportionally to the miner's hashrate. How can I best predict and express this 'chance' per mining pool?</p>

<p>For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?</p>

<p>What's the best way to express the notion? I'd like to be able to say something like:</p>

<p>"F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."</p>

<p>Obviously there is never a 100% chance to find a block in the next x blocks, so what's the accepted way of giving a number but also with that undertone of "or maybe never?"</p>

<p>Is there an API or library I can use to calculate/know these 'chance' values over time per mining pool?</p>

<mining-pools><mining-theory><mining-reward><hashpower>
How can I use hashrate distribution to make inferences about when a specific pool will find a block?
ajwest
# How can I use hashrate distribution to make inferences about when a specific pool will find a block?

(Asked by: username_0 on 2016-12-17)

Miners find blocks randomly but also proportionally to the miner's hashrate. How can I best predict and express this 'chance' per mining pool?

For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?

What's the best way to express the notion? I'd like to be able to say something like:

"F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."

Obviously there is never a 100% chance to find a block in the next x blocks, so what's the accepted way of giving a number but also with that undertone of "or maybe never?"

Is there an API or library I can use to calculate/know these 'chance' values over time per mining pool?

**Tags:** mining-pools, mining-theory, mining-reward, hashpower


---

## 2 answers

### Answer by username_1 on 2016-12-17. Score: 2 | Accepted answer

> For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?

Assuming that a lot of miners don't switch, yes.

> "F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."

You're asking two subtly different questions here.

1. Will I find the next block?
2. Will I find a block in the next ten minutes?

You could find the next block, eleven minutes from now. You could find a block in five minutes, building on a block that was discovered four minutes ago.

### Will I find the next block?

This is pretty straightforward. If you have 10% of the hashrate, there's a probability of 0.1 that you will find it. If you have p proportion of the hashrate, there's a probability `(1-(1-p)^n)` that you will find a block in the next n blocks. For 10% hashrate, and 10 blocks, that's a chance of 65%. Far from a sure thing.

```
p = 0.1
Blocks  Probability of you getting a block
0       0.00000
1       0.10000
5       0.40951
10      0.65132
30      0.95761
50      0.99485
100     0.99997

```

[![graph of probability of us finding a block](https://i.sstatic.net/jczSd.png)](https://i.sstatic.net/jczSd.png)

### Will I find a block in the next ten minutes?

Block discovery follows a [poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution). A poisson distribution represents a bunch of independent events, where one event happening has no effect on it happening in the future.

We want to know the odds of k blocks being found by anyone in a ten minute period, when there is an average of 1 block every ten minutes. Wikipedia already has a [table for us](https://en.wikipedia.org/wiki/Poisson_distribution#Examples_of_probability_for_Poisson_distributions):

```
k   P(k)
0   0.368
1   0.368
2   0.184
3   0.061
4   0.015
5   0.003
6   0.0005

```

But this isn't quite what we need - if ten blocks are found, there is a much better chance that one of them is ours than if one block is found. Multiply by expression above, and substitute k for n, and 0.1 (our proportion of hashrate) for p.

```
k   P(k)    P(k)*(1-(1-0.1)^k)
0   0.368   0.0000
1   0.368   0.0368
2   0.184   0.0350
3   0.061   0.0165
4   0.015   0.0052
5   0.003   0.0012
6   0.0005  0.0002
    Sum:    0.0949

```

Sum up the last column. We get a 9.49% chance, which is the chance that you will get at least one block in the next ten minutes if you have 10% of the hashrate. But, that doesn't mean that there's a 95% chance of having a block in ten minutes with 100% of the hashrate. It's not linear. If you have 100% of the hashrate:

```
k   P(k)    P(k)*(1-(1-1.0)^k)
0   0.368   0.0000
1   0.368   0.3680
2   0.184   0.1840
3   0.061   0.0610
4   0.015   0.0150
5   0.003   0.0030
6   0.0005  0.0005
    Sum:    0.6315

```

...then you have a 63.2% chance of having a block in the next ten minutes if you have all of the hashpower.

(Our calculations are low by about a twentieth of a percent, because we didn't consider cases like k=7. But I figure this is a good approximation.)

> **Comments:**
> **username_2**: I have trouble following your though process on the three last paragraphs. You talk about having a much better chance to find one out of ten blocks, but the tables or following paragraphs don't seem to address that.  
> **username_1**: @username_2 I've made some edits. Mind taking a look?  
> **username_2**: Ah yes, now it's clearer to me. I've also found a mistake in my own thought process. ;)  

---

### Answer by username_2 on 2016-12-18. Score: 1

> "F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."

username_1 already addressed this, but I'd like to point out that it seems to me that you're misunderstanding something very fundamental about statistics: When you toss a coin, the expected chance to get tails is 50%. Your statement above reads as if you're saying that two coin tosses would have a 100% chance of producing one result of tails. –– That's not true, though.

Obviously, you could get either of the four results for two coin tosses: `TT`, `TH`, `HT`, or `HH`. Which means, there is a 25% chance to get two tails, a 50% chance to get one tails, and a 25% chance to not get a tails. If you meant "at least one block" that would be a 75% chance for our example, not 100%.

Translated to block discovery this means the following:

* Block propagation and validation takes an very small amount of time, so we're assuming you're always working on a valid block.
* Finding blocks is completely independent from other blocks being found.

Thus, your chance of finding *exactly* one block in 100 minutes with 10% of the hash rate has the same Poisson distribution as finding *exactly* one block in 10 minutes with 100% of the hash rate. *That you're only trying to discover one block out of ten does not have any influence!*

Your chance to find *exactly* 1 block in the time frame where you would be expected to find one block is 36.8% (also see username_1's tables), and it's 63.2% to find *at least* one block.

---

Just because I had missed that when I first read username_1's answer: Note that your chance of finding one block out of the next `n` is different from your chance of finding a block in the time frame where `n` blocks are expected.


---

