Welcome to the Dash Forum!

Please sign up to discuss the most innovative cryptocurrency!

Extreme Dash block rewards

Discussion in 'Development Tech Discussion' started by Steve Sokolowski, Apr 2, 2019.

  1. Steve Sokolowski

    Steve Sokolowski New Member

    Joined:
    Feb 19, 2017
    Messages:
    17
    Likes Received:
    21
    Trophy Points:
    3
    On the second day of the past two months, we've noticed a short period of extreme Dash block rewards, which cost us about $10,000 in losses. The problem is so significant that I'm going to have to spend the day today writing a new failsafe to disconnect Dash miners when this issue occurs.

    Here is the data we recorded:

    Code:
    originally_created, sell_price, difficulty, block_reward, buy_price, transaction_fees, orphan_rate
    "2019-04-02 02:01:00.806696-04"    "0.0251210000000000"    "56909659.8476522"    "6178.04002672"    "0.0253722100000000"    "0.00083018"    "0.00876095"
    "2019-04-02 02:00:58.096204-04"    "0.0251210000000000"    "56909659.8476522"    "6178.04002672"    "0.0253722100000000"    "0.00083018"    "0.00876095"
    "2019-04-02 02:00:58.093935-04"    "0.0251210000000000"    "56909659.8476522"    "6178.04002672"    "0.0253722100000000"    "0.00083018"    "0.00876095"
    "2019-04-02 02:00:57.436737-04"    "0.0251210000000000"    "56909659.8476522"    "6178.04002672"    "0.0253722100000000"    "0.00083018"    "0.00876095"
    "2019-04-02 02:00:57.432117-04"    "0.0251210000000000"    "56909659.8476522"    "6178.04002672"    "0.0253722100000000"    "0.00083018"    "0.00876095"
    "2019-04-02 02:00:13.455654-04"    "0.0251210000000000"    "56909659.8476522"    "6178.04002672"    "0.0253722100000000"    "0.00083018"    "0.00876095"
    "2019-03-02 17:54:59.113001-05"    "0.0214730000000000"    "87919859.2583976"    "6171.64619072"    "0.0215151700000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:21.684732-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:21.680761-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:21.673708-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:20.450875-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:20.439915-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:19.782113-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:50:19.779452-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:49:35.973273-05"    "0.0214710000000000"    "87919859.2583976"    "6171.64619072"    "0.0216857100000000"    "0.00098229"    "0.01201923"
    "2019-03-02 17:45:50.92341-05"    "0.0214880000000000"    "87919859.2583976"    "6171.64619072"    "0.0214950000000000"    "0.00098229"    "0.01201923"
    These times are always Eastern. Most of the time, the block_reward of Dash is much lower, and then there are these periods where the reward jumps to these ridiculous numbers. Is it possible that there is a Dash client bug, or am I simply seeing an error in our dash.conf file that is causing the daemon to spit out such high values?
     
  2. UdjinM6

    UdjinM6 Official Dash Dev
    Dash Core Team Moderator

    Joined:
    May 20, 2014
    Messages:
    3,637
    Likes Received:
    3,536
    Trophy Points:
    1,183
    These blocks with 6k+ DASH supply are so called superblocks - blocks in which proposals are paid.

    EDIT:

    When next block to be mined is a superblock `getblocktemplate` should have `superblock` array filled with items you must include in coinbase tx outputs, just like you must include `masternode` items normally.
     
    • Like Like x 1
    • Agree Agree x 1
  3. nmarley

    nmarley Administrator
    Dash Core Team Moderator

    Joined:
    Jun 28, 2014
    Messages:
    366
    Likes Received:
    424
    Trophy Points:
    133
    Hi Steve,

    To add to what UdjinM6 said, the superblocks occur about once a month at block height % 16616. You can know when to expect them by checking "getgovernanceinfo".

    Code:
    /app/dash-cli -conf=/app/dash.conf getgovernanceinfo
    {
      "governanceminquorum": 10,
      "masternodewatchdogmaxseconds": 3600,
      "sentinelpingmaxseconds": 3600,
      "proposalfee": 5.00000000,
      "superblockcycle": 16616,
      "lastsuperblock": 1046808,
      "nextsuperblock": 1063424
    }
    
     
    • Informative Informative x 1
  4. Steve Sokolowski

    Steve Sokolowski New Member

    Joined:
    Feb 19, 2017
    Messages:
    17
    Likes Received:
    21
    Trophy Points:
    3
    The huge value caused us to devote all hashrate to Dash and find this block, but it was rejected by the network, probably for the reason you stated.

    1. How much of that reward goes to the miner? Is all that money allocated to thousands of addresses and the miner just gets the normal reward?
    2. How can I get the Dash client to send this type of block template in regtest mode, so that we can add support for these blocks?
     
  5. UdjinM6

    UdjinM6 Official Dash Dev
    Dash Core Team Moderator

    Joined:
    May 20, 2014
    Messages:
    3,637
    Likes Received:
    3,536
    Trophy Points:
    1,183
    1. Most of the money go to proposals of course. You can calculate miner reward as "coinbasevalue - sum(superblock[amount]) - sum(masternode[amount])". See https://github.com/unomp/node-merged-pool/blob/master/lib/transactions.js#L134-L197 as an example.
    2. It's probably going to be hard to emulate this in regtest cause you need masternodes to vote on proposals for this kind of block to be produced. You can use testnet instead - superblocks are generated every 24 blocks there.
     
    • Like Like x 1
  6. Steve Sokolowski

    Steve Sokolowski New Member

    Joined:
    Feb 19, 2017
    Messages:
    17
    Likes Received:
    21
    Trophy Points:
    3
    Thanks for your help! I decided that, because regtest is so difficult, I would just surround this code by a try/catch block. If the parsing isn't right, Dash will be in error and the superblock won't be mined by us, but either way no more money will be lost.

    The Dash community is always helpful. One of the reasons you have so many pools mining Dash is because people are available to answer simple questions like these. The importance of documentation should never be underestimated.
     
    • Like Like x 3