-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Currently the mining process is very sensitive to variance. This is due to the fact that mining a block is essentially a question of rolling a die and checking if the result is good enough; if it is, you've mined a block, if it isn't, you roll it again until it is. This has the consequence that the expected value of the amount of necessary rolls is equal to 1/p_success where p_success represents the chance that any roll is a success.
The same expected value for the amount of rolls can be achieved by requiring n rolls to all meet a given lower difficulty threshold instead. In other words, p_partialsuccess = p_success/n. In this new scheme, the variance in time to finding a block is reduced to the variance in time to finding n blocks in the old scheme.
This has a couple of notable advantages.
- Better user experience due to more predictability in confirmation time.
- Difficulty readjustment logic can be vastly improved. For the same amount of resilience to variance as in current Bitcoin, only
2016/nblocks are needed to a difficulty readjustment period. - Mining payout becomes more reliable, and therefore small pools/solo mining becomes more feasible, aiding in mining decentralization.
I have not yet worked out the details of the implementation as I first wanted to collect feedback on the concept, but one implementation could work by making the nonce field n times as long and let every ith (i from 1 to n) partial-hash be calculated over the blockheader including only the first 32*i bits of the nonce field.