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 nonces 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.


1 Answer 1


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.

  • 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
    Oct 9, 2019 at 15:34

Not the answer you're looking for? Browse other questions tagged or ask your own question.