• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Alternative masternode reward curve

illodin

Active member
There is a scenario where taking down some of the other masternodes will increase the rogue masternode's earnings, as the fixed masternode reward (60% of the block reward eventually) is split evenly to all remaining masternodes.

One way to decrease the incentive to attack against other masternodes would be to adjust the size of the masternode reward according to the number of masternodes running. If the reward that is shared between masternodes gets smaller as the number of masternodes decrease, the relative reward of the rogue node will also get smaller.

At this point one might see that the miners would have an incentive to take down as many masternodes as they can, as the masternodes' portion of the block reward would get smaller. The solution would be to have the miners' portion fixed to a percentage of the assumed full block reward, i.e. currently 60%, and eventually 40% in 2016.

Now I don't know what an optimal curve or linear reward formula would be, but here are a couple of simple examples to demonstrate the idea:

BLOCK = current full block reward
MAXMN = maximum number of masternodes that the current coin supply allows
MN = current number or masternodes running
MINER = miner's fraction of the block reward, for example 0.6 means that 60% of the block reward goes to miners
BLOCKMN = block reward that is shared between running masternodes

Linear model:

MN < MAXMN / 5 => BLOCKMN = 0.5 * (BLOCK - BLOCK * MINER)
MAXMN / 5 < MN < MAXMN / 2 => interpolate
MN > MAXMN / 2 => BLOCKMN = BLOCK - BLOCK * MINER

So for example, coin supply is 5 million (so max number of masternodes is 5000), full block reward is 5 DASH, and miners' portion is 60%.

MN < 1000 => BLOCKMN = 1 DASH
MN = 1750 => BLOCKMN = 1.5 DASH
MN > 2500 => BLOCKMN = 2 DASH

Logarithmic model:

BLOCKMN = LOG MAXMN (MN) * (BLOCK - BLOCK * MINER)

Same example numbers again, 5 million coins, full reward 5 DASH, miners' portion 60%.

MN = 500 => BLOCKMN = 1.46 DASH
MN = 1000 => BLOCKMN = 1.62 DASH
MN = 1500 => BLOCKMN = 1.72 DASH
MN = 2000 => BLOCKMN = 1.78 DASH
MN = 2500 => BLOCKMN = 1.84 DASH
MN = 3000 => BLOCKMN = 1.88 DASH

upload_2015-3-26_0-9-33.png


The closer we could get to the ideal that a single masternode's earnings would remain the same no matter how many masternodes there are running, the better that would be. Obviously high and low limits need to be in place, but I can't think of how to better model that right now.
 
I can appreciate the thought that went into this but I think altering the block reward in any way after it has already been changed twice would be a mistake. It definitely gives third parties more firing ammo to continue fudding the forums.
 
It's an interesting take and an idea of "floating" reward. But...
I have to agree with @obolox - this must be 100% bulletproof and reasonable. And it's not imo. At least yet:
- MN count is not 100% identical on every client in network right now -> different reward calculation results -> multiple forks
- there is smth wrong with math (rewards per MN from these examples):
LINEAR:
0.0010000
0.0008571
0.0008000
LOG:
0.0029200
0.0016200
0.0011467
0.0008900
0.0007360
0.0006267
 
It's an interesting take and an idea of "floating" reward. But...
I have to agree with @obolox - this must be 100% bulletproof and reasonable. And it's not imo. At least yet:
- MN count is not 100% identical on every client in network right now -> different reward calculation results -> multiple forks

Yes, reaching consensus on the correct count even with acceptable margin of error is hard.

It's an interesting take and an idea of "floating" reward. But...
- there is smth wrong with math (rewards per MN from these examples):
LINEAR:
0.0010000
0.0008571
0.0008000
LOG:
0.0029200
0.0016200
0.0011467
0.0008900
0.0007360
0.0006267

I don't understand where you get these results. LOG MAXMN (MN) means "base MAXMN logarithm of MN" btw as I can't notate it properly in ascii. Anyway, the exact numbers used here are not important, but the idea itself.
 
....
I don't understand where you get these results. LOG MAXMN (MN) means "base MAXMN logarithm of MN" btw as I can't notate it properly in ascii.
It's "reward per MN (per block on average)" = BLOCKMN / MN
Or am I getting that wrong? :oops:
 
It's "reward per MN (per block on average)" = BLOCKMN / MN
Or am I getting that wrong? :oops:

Ah yea that's right. No your numbers are probably correct, and the math in OP is also correct. Obviously the reward per masternode has to go down when more masternodes join, otherwise we'd start generating 500 DASH blocks again. :) The idea was to diminish the effect even if little.

Compare the numbers of the current model and the linear model:
MN CURRENT LINEAR
1000 0.00200 0.0010000
1750 0.00114 0.0008571
2500 0.0008 0.0008000
 
Ah yea that's right. No your numbers are probably correct, and the math in OP is also correct. Obviously the reward per masternode has to go down when more masternodes join, otherwise we'd start generating 500 DASH blocks again. :) The idea was to diminish the effect even if little.

Compare the numbers of the current model and the linear model:
MN CURRENT LINEAR
1000 0.00200 0.0010000
1750 0.00114 0.0008571
2500 0.0008 0.0008000
That makes sense :smile:
 
Back
Top