Remove `blocksRot` parameter
Walking through http://www.coindesk.com/9-biggest-screwups-bitcoin-history/, I could remember the AuroraCoin initiative where we put 2-3 comments on their forum to warn them about spacetime asymmetry. This is article points out the failure of AuroraCoin, arguing after the coins were issued, most of users did not invest their computer securing the blockchain, leading to a security issue because few power was required to control the blockchain.
I do not want such thing, and of course we have some differences which modifiy slightly the problem for us:
- users might add their computer just to secure their future UDs
- Duniter is not just CPU power, but requires personal signature
But if you look at the protocol parameters, you could see blocksRot
parameter which deals with the individual PoW difficulty.
Basically, it says:
Let's look at the
blocksRot
last blocks to define the number of last different issuers of blocks.
The problem is: blocksRot
is a constant. Maybe we don't need such thing, and just have a dynamical value, for example each time a new issuer is detected (by computing & sharing a valid new block) then the "blocksRot
" value would be incremented by 12
.
So if we start the blockchain, blocksRot = 12
as long as only one user computes blocks. If a second user joins the computing party, then blocksRot = 24
. If, for any reason a third person joins, then blocksRot = 36
. And if one of the 3 people stops computing blocks and no more appears in the blocksRot
blocks (36), then blocksRot = 24
from that moment.
Why this number of 12
? Well why not, also this might be linked to this article about web of humans.
I don't know if such an algorithm will be enough, but for sure a static number is an open door to exploits.