Extreme Dash block rewards

Steve Sokolowski

New Member
Feb 19, 2017
17
21
3
37
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?
 

UdjinM6

Official Dash Dev
Dash Core Team
Moderator
May 20, 2014
3,637
3,536
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
Reactions: tungfa

nmarley

Active Member
Jun 28, 2014
366
424
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
}
 

Steve Sokolowski

New Member
Feb 19, 2017
17
21
3
37
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.
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?
 

UdjinM6

Official Dash Dev
Dash Core Team
Moderator
May 20, 2014
3,637
3,536
1,183
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?
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
Reactions: tungfa

Steve Sokolowski

New Member
Feb 19, 2017
17
21
3
37
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.