PPLNS error correction
Posted: Wed Feb 03, 2021 2:09 pm
There is a PPLNS mining error that was resolved a few weeks ago, but which continues to affect some customers.
The original cause of the problem is that we incorrectly believed that PostgreSQL treats NULL values as unique, when a unique constraint is used on a table. That led to many rows being inserted for coins where a PPLNS block had never been found. Chris resolved this issue in mid-December and released the changes. At that point, as we just discovered, new customers and customers who were mining coins where at least one block had previously been found were credited correctly.
However, Chris also discovered this week that a small number of customers who at the time were mining a coin that had never had any blocks previously found, but since which a PPLNS block was found, were still being assigned shares to the first round that had already been paid. As a result, these customers' shares would never be paid.
Chris is working on a two-step approach to address this issue. First, he will backup and erase the first round work for all customers affected by the issue. Then, he will try to determine how, if it is possible at all, to credit the affected miners for the time they were credited for the first round after the round had already completed.
Unfortunately, we don't know if there is sufficient data to determine the correct payout amounts for these customers, and this is by far one of the most complex issues Chris has ever investigated. We do know that no money was actually lost, as the customers were mining the correct blocks. Chris is going to retrieve very old backups to see if they have better information available, which may take a week.
We apologize for the delays in resolving this issue. No customers are currently being affected by any PPLNS mining issues, and all future earnings are correct. The only problem is in determining how much money was incorrectly applied to a finished round for this subset of customers.
The original cause of the problem is that we incorrectly believed that PostgreSQL treats NULL values as unique, when a unique constraint is used on a table. That led to many rows being inserted for coins where a PPLNS block had never been found. Chris resolved this issue in mid-December and released the changes. At that point, as we just discovered, new customers and customers who were mining coins where at least one block had previously been found were credited correctly.
However, Chris also discovered this week that a small number of customers who at the time were mining a coin that had never had any blocks previously found, but since which a PPLNS block was found, were still being assigned shares to the first round that had already been paid. As a result, these customers' shares would never be paid.
Chris is working on a two-step approach to address this issue. First, he will backup and erase the first round work for all customers affected by the issue. Then, he will try to determine how, if it is possible at all, to credit the affected miners for the time they were credited for the first round after the round had already completed.
Unfortunately, we don't know if there is sufficient data to determine the correct payout amounts for these customers, and this is by far one of the most complex issues Chris has ever investigated. We do know that no money was actually lost, as the customers were mining the correct blocks. Chris is going to retrieve very old backups to see if they have better information available, which may take a week.
We apologize for the delays in resolving this issue. No customers are currently being affected by any PPLNS mining issues, and all future earnings are correct. The only problem is in determining how much money was incorrectly applied to a finished round for this subset of customers.