Idea for better handling the next hard fork

Ryan Taylor

Well-known member
Foundation Member
I have spent a lot of time noodling on the problems and potential solutions to our inability to get the community of miners and pool operators to convert and start paying the masternodes.

Situation as I understand it:
The most recent hard fork failed because too many pools and miners failed to update to the latest version. The solution thus far has been to do a "spork" and hold off on the hark fork enforcement until such time as the (vast?) majority of blocks are being mined on the "honest" current version that shares 20% of rewards with the masternodes. Doing so sooner than that risks slow pruning of the blockchain and potential forking.

Complication:
Unfortunately, we are now more than a week into our "conversion" and only about 50% of the blocks are being mined "honestly". Worse, it seems to be stable at 50% with no sign of improvement. Plus, miners are actually disincentivized from mining on an "honest" pool. They can make more money elsewhere. We could continue to "hunt" for pools that aren't upgraded and shame them. But there is certainly no guarantee that in late July, when it's time to pull the trigger on the hard fork, that we won't find ourselves exactly where we are now... without the ability to hard fork without destabilizing the network.

Potential resolution:
We need a way to financially incentivize workers to mine on an honest pool, while ensuring that the majority of blocks being mined are accepted by the network (thus keeping the network stable while penalizing the non-compliant). I think I have a solution, but someone on the dev team smarter than me will need to validate this.

The problem with "enforcement" is that it is binary. Either we reject 100% of blocks that fail to pay masternodes, or we accept 100% of blocks that fail to pay masternodes. If you find a way to reject at least 25% of blocks that fail to pay masternodes, I believe it would incentivize non-compliers to upgrade, while vastly improving the stability of the network.

Here's how I imagine a scheme like this could work. Each hash result ends in a letter or number. That's 26 letters and 10 numbers for a total of 36 possibilities. This number cannot be controlled by the miners. It just is what it is. The honest network could simply reject at least 20% (or more) of the non-compliant blocks by, for example, rejecting only those blocks that end in a number (about 10 / 36 = 27.7% of them) and also fail to pay masternodes.

In a scenario where 50% of blocks are paying and 50% are non-paying these are the numbers:
<% of blocks accepted by the network> = 50% + 50 * (100% - 27.7%) = 86.1%
Since the vast majority of even the "dishonest" blocks are accepted by the network (much like the situation we have today at 100%), the network should remain stable... certainly much more stable than the previous hard fork attempt.

From the miners perspective:
I could continue to keep 100% of my spoils which means 5 DRK * (100% - 27.7% rejected) = 3.6 DRK reward on average
Or I could mine honestly and keep 80% of spoils which means 5 DRK * (100% - 20% to masternodes) = 4 DRK

Miners would finally be financially incentivized to upgrade and the network would never need to fear another hardfork again!

Would this work? Is there another / better way to "ease" into full compliance that ensures stability AND creating incentives for everyone in the community to do the right thing?
 
The problem with "enforcement" is that it is binary. Either we reject 100% of blocks that fail to pay masternodes, or we accept 100% of blocks that fail to pay masternodes. If you find a way to reject at least 25% of blocks that fail to pay masternodes, I believe it would incentivize non-compliers to upgrade, while vastly improving the stability of the network.

Even if you're only rejecting 25%, that's still blocks that one part of the network will consider valid, and another part won't. We'd have forks sprouting again.
 
Even if you're only rejecting 25%, that's still blocks that one part of the network will consider valid, and another part won't. We'd have forks sprouting again.
Yes, but wouldn't we have that issue regardless, even with "enforcement"? The question is wouldn't it make it easier to keep the bad branches "pruned" and stabilize the network, since there will be a greater share of the blocks getting accepted versus a binary "enforcement" being turned on? I'm just trying to find a way to increase the stability from a hard fork without giving bad actors a "free ride" on their MN payments the way they are getting now.
 
Back
Top