UPDATE: If you are running a GRC wallet on Windows OS and want to help, please follow the instructions here.
As most of you will be aware by now, we have been waiting on the current Gridcoin superblock for almost 112 hours. Given that we expect superblocks every 24-48h, this is severely out of the ordinary. The problems with a late superblock were detailed by @Erkan in a previous post on this sub, where he placed a bounty on solving the problem:
$GRC bounty -> help us create a superblock (no superblock for 99h)
To summarise, the lack of a superblock:
- Stops newcomers having their CPID properly included in the neural network
- Means magnitude will not be updated, so users cannot be rewarded for their research fairly
The Problem
The late superblock appears to be attributable to the massive influx of newcomers into the Gridcoin network, which the current superblock system is not equipped to deal with. Before we delve into that, lets have a look at how a superblock is created:
Every 24 hour period, a quorum (group of nodes) is selected at random. Only Windows users can be a part of the quorum. The job of the quorum nodes is to download project data from the BOINC project servers. They then hash this data, and compare hashes.
If the hashes of most of the quorum (I am uncertain of the cutoff) agree, then one of the quorum members needs to stake a block on the Gridcoin blockchain to add the next superblock.
The influx of newcomers to the network has had unforeseen consequences that stopped both of the above two steps in generating a superblock from functioning as intended:
Due to the huge influx of new users, the number of CPIDs in the network changes rapidly. It is likely that as a result, when the quorum members download the data from the project servers, the first and the last connection may not get the same data set. This results in mismatched hashes, which yields a hung quorum as observed yesterday.
Hash : number of nodes from quorum that agree on hash; percentage
21bf4d42dc4f5dacef7daba2ab54c196 : 36; 39.46%
567d6a9e3c7451f7673c4d05bc4bdc8b : 31; 33.39%
b4b529630837104782408a0bb5cfdbad : 25; 27.13%
As a result of this, there is no consensus between the quorum nodes and no superblock can be generated at all.
If the hashes do match, and thus quorum consensus is reached, the quorum is unlikely to be able to stake. Most PC users have Windows as their OS, which means the huge influx of members into the Gridcoin community has created many new wallets with a very low chance to stake a block. A wallet with a low chance to stake a block is one with both a low balance (for POS staking), and a low magnitude (for POR staking). The most recent quorum appears to have fallen into this category, as they reached consensus but failed to stake a superblock:
213472e4b11ea3170e1a01323f309576 : 29; 99.97%
Due to both these problems being highly likely in any round of generating a new superblock, it will take a long time for a superblock to be generated from now on out. This is a scaling issue that we will need to address as a community.
The Proposed Solution
We can address the above problem in a myriad of different ways, but to allow for better scalability I would suggest:
Excluding any CPIDs less than an hour old from the BOINC project servers' data before carrying out the hash. This will reduce the likelihood of a hung quorum.
Adding a DPOR weight requirement to be selected for the quorum. This ensures that once the quorum does reach consensus, there is a relatively high likelihood of a member to stake and generate the new superblock.
The Bigger Picture
Every cryptocurrency suffers through issues, which comes with being part of the bleeding edge of technology (such as blockchain tech). @Vortac elgantly summed this up on Reddit:
Crypto is still far away from being even close to 100% reliable and Gridcoin is not an exception. In fact, I would say it's comparable to the biggest networks out there, on the reliability metric.
Overcoming scaling issues like this will take Gridcoin to new highs. These problems were born from massively increased enthusiasm and a huge influx of members. They are good problems to be facing and to overcome.
I would like to thank IFoggz, Mercosity, Bullshark, NateOnTheNet, Barton26 and Ravon for taking part in our discussions to work out the cause of the superblock issues, and will leave you in the hands of our GRC IRC bot: