Welcome to the Dash Forum!

Please sign up to discuss the most innovative cryptocurrency!

Alternative masternode reward curve

Discussion in 'Development Tech Discussion' started by illodin, Mar 25, 2015.

  1. illodin

    illodin Member

    Joined:
    Apr 26, 2014
    Messages:
    122
    Likes Received:
    71
    Trophy Points:
    78
    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.
     
  2. oblox

    oblox Well-known Member

    Joined:
    Aug 6, 2014
    Messages:
    1,032
    Likes Received:
    537
    Trophy Points:
    183
    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.
     
  3. xxxsexygirls

    xxxsexygirls Member

    Joined:
    Nov 26, 2014
    Messages:
    44
    Likes Received:
    20
    Trophy Points:
    48
  4. UdjinM6

    UdjinM6 Official Dash Dev
    Dash Core Team Moderator

    Joined:
    May 20, 2014
    Messages:
    3,637
    Likes Received:
    3,536
    Trophy Points:
    1,183
    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
     
  5. illodin

    illodin Member

    Joined:
    Apr 26, 2014
    Messages:
    122
    Likes Received:
    71
    Trophy Points:
    78
    Yes, reaching consensus on the correct count even with acceptable margin of error is hard.

    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.
     
  6. UdjinM6

    UdjinM6 Official Dash Dev
    Dash Core Team Moderator

    Joined:
    May 20, 2014
    Messages:
    3,637
    Likes Received:
    3,536
    Trophy Points:
    1,183
    It's "reward per MN (per block on average)" = BLOCKMN / MN
    Or am I getting that wrong? :oops:
     
  7. illodin

    illodin Member

    Joined:
    Apr 26, 2014
    Messages:
    122
    Likes Received:
    71
    Trophy Points:
    78
    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
     
    • Like Like x 1
  8. UdjinM6

    UdjinM6 Official Dash Dev
    Dash Core Team Moderator

    Joined:
    May 20, 2014
    Messages:
    3,637
    Likes Received:
    3,536
    Trophy Points:
    1,183
    That makes sense :)