<p>Something that is very similar to what you describe is the concept of "Uncle Blocks" used in Ethereum. Even there, though, there are no partial blocks and nobody would continue to mine on a "half-finished" block. Ethereum has significantly shorter block intervals which causes multiple blocks at the same height to be found often and allowing to reference them as uncle blocks mitigates the waste of that to a degree. Introducing progress into mining is problematic, because it biases mining success towards miners with more hashrate.</p>

CC BY-SA 4.0
2019-10-09T15:34:46.847Z
I now read about Ethereum Uncle Blocks, and how their miners are being rewarded, but these blocks are not considered valid - i.e. the transactions will still be stuck in the mempool.
Surely there is a way to introduce progress into mining without creating unfair bias to miners with more hashrate. I will edit my question to a different algorithm for that.
Oren
CC BY-SA 4.0
2019-10-09T15:02:42.910Z
2019-10-09T15:02:42.910Z
Murch
<p>I'm new to blockchain technology so I'm sorry if I'm using wrong terminology. This is not a Bitcoin question, but a general blockchain question.</p>

<p>Imagine a theoretical blockchain that uses gradual proof-of-work - instead of finding a single <code>nonce</code> that gives a hash smaller than the <code>target</code>, you have to find 10 <code>nonce</code>s that give hashes that are smaller than <code>target * 10</code>.
(Edit: more complicated algorithm can be used, for example the first hash includes the block-header and the first nonce, the second hash includes the 
block-header, the second nonce, and the previous hash, etc. - so calculating the hashes must cannot be done in parallel).</p>

<p>If you discovered 9/10 good nonces, you will try to find the last nonce even if some other miner has already published a complete block.
This kind of blockchain will encourage arbitrary mining forks - where two miners publish a mined block with the same previous-block-hash (i.e. the same index in the chain), which looks like:</p>

<pre><code>B1  ←-  B2  ←-  B3  ←-  B4
                ↑
                +-----  B4'
</code></pre>

<p>The way current blockchains (that I know of) solve this problem is by letting the miners pick which of the forks to continue, and because only the longest blockchain is the "true blockchain", all the miners will eventually work on a single fork, and all the work that was done on the other forks will go in vain.</p>

<p>Now imagine that each block could have contain more than 1 previous-block-hash. For example, a new miner could try mining a block like:</p>

<pre><code>B1  ←-  B2  ←-  B3  ←-  B4  ←-  B5
                ↑               |
                +-----  B4' ←---+
</code></pre>

<p>With one important condition: the transactions in B4 must not contradict the transactions in B4' (no double-spending, etc.). Assuming there are many unrelated transactions in the mempool, this will be a very common scenario.</p>

<p>Miners can even be incentivised to include more previous-block-hashes in the next block. For example, if the miner of B4' notices that B4 was already published, he can offer to pay some fee to the following miners (of B5) that include B4' too.</p>

<p>This algorithm will be much more power efficient (in the case of a gradual proof-of-work) because miners can keep mining the same block even if some other miner already found a good block. It can mine more transactions in parallel without increasing the block size. It is different than choosing an easier hash function (for the proof-of-work), because it has no effect on the blockchain's length or growing speed.</p>

<p>Do you know of any proof-of-work blockchain/cryptocurrency that does something similar, like a blockchain that can split and merge? I know that IOTA is not using blockchain at all, but I never delved into the details.</p>

<p>Thanks</p>

<blockchain><blockchain-fork><proof-of-work><alternatives>
A Blockchain that merges mining forks and could be more power-efficient?
Oren
# A Blockchain that merges mining forks and could be more power-efficient?

(Asked by: username_0 on 2019-10-09)

I'm new to blockchain technology so I'm sorry if I'm using wrong terminology. This is not a Bitcoin question, but a general blockchain question.

Imagine a theoretical blockchain that uses gradual proof-of-work - instead of finding a single `nonce` that gives a hash smaller than the `target`, you have to find 10 `nonce`s that give hashes that are smaller than `target * 10`.
(Edit: more complicated algorithm can be used, for example the first hash includes the block-header and the first nonce, the second hash includes the
block-header, the second nonce, and the previous hash, etc. - so calculating the hashes must cannot be done in parallel).

If you discovered 9/10 good nonces, you will try to find the last nonce even if some other miner has already published a complete block.
This kind of blockchain will encourage arbitrary mining forks - where two miners publish a mined block with the same previous-block-hash (i.e. the same index in the chain), which looks like:

```
B1  ←-  B2  ←-  B3  ←-  B4
                ↑
                +-----  B4'

```

The way current blockchains (that I know of) solve this problem is by letting the miners pick which of the forks to continue, and because only the longest blockchain is the "true blockchain", all the miners will eventually work on a single fork, and all the work that was done on the other forks will go in vain.

Now imagine that each block could have contain more than 1 previous-block-hash. For example, a new miner could try mining a block like:

```
B1  ←-  B2  ←-  B3  ←-  B4  ←-  B5
                ↑               |
                +-----  B4' ←---+

```

With one important condition: the transactions in B4 must not contradict the transactions in B4' (no double-spending, etc.). Assuming there are many unrelated transactions in the mempool, this will be a very common scenario.

Miners can even be incentivised to include more previous-block-hashes in the next block. For example, if the miner of B4' notices that B4 was already published, he can offer to pay some fee to the following miners (of B5) that include B4' too.

This algorithm will be much more power efficient (in the case of a gradual proof-of-work) because miners can keep mining the same block even if some other miner already found a good block. It can mine more transactions in parallel without increasing the block size. It is different than choosing an easier hash function (for the proof-of-work), because it has no effect on the blockchain's length or growing speed.

Do you know of any proof-of-work blockchain/cryptocurrency that does something similar, like a blockchain that can split and merge? I know that IOTA is not using blockchain at all, but I never delved into the details.

Thanks

**Tags:** blockchain, blockchain-fork, proof-of-work, alternatives


---

## 1 answers

### Answer by username_1 on 2019-10-09. Score: 3 | Accepted answer

Something that is very similar to what you describe is the concept of "Uncle Blocks" used in Ethereum. Even there, though, there are no partial blocks and nobody would continue to mine on a "half-finished" block. Ethereum has significantly shorter block intervals which causes multiple blocks at the same height to be found often and allowing to reference them as uncle blocks mitigates the waste of that to a degree. Introducing progress into mining is problematic, because it biases mining success towards miners with more hashrate.

> **Comments:**
> **username_0**: I now read about Ethereum Uncle Blocks, and how their miners are being rewarded, but these blocks are not considered valid - i.e. the transactions will still be stuck in the mempool. Surely there is a way to introduce progress into mining without creating unfair bias to miners with more hashrate. I will edit my question to a different algorithm for that.  

---

