mirror of
https://github.com/monero-project/monero.git
synced 2024-12-25 11:49:27 -05:00
Clarify warning about too-few blocks
Today, the warning about too-few blocks is not clear about what happened versus what was expected; that's the main thing I want to address. Clarifying this makes the message somewhat longer, so I reduce its length by removing some redundant or meaningless (IMO) reasons for the symptoms.
This commit is contained in:
parent
b089f9ee69
commit
a4cfebcd1b
@ -47,6 +47,7 @@ using namespace epee;
|
|||||||
#include "cryptonote_config.h"
|
#include "cryptonote_config.h"
|
||||||
#include "misc_language.h"
|
#include "misc_language.h"
|
||||||
#include "file_io_utils.h"
|
#include "file_io_utils.h"
|
||||||
|
#include <cmath>
|
||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include "checkpoints/checkpoints.h"
|
#include "checkpoints/checkpoints.h"
|
||||||
#include "ringct/rctTypes.h"
|
#include "ringct/rctTypes.h"
|
||||||
@ -2048,14 +2049,17 @@ namespace cryptonote
|
|||||||
static const unsigned int seconds[] = { 5400, 3600, 1800, 1200, 600 };
|
static const unsigned int seconds[] = { 5400, 3600, 1800, 1200, 600 };
|
||||||
for (size_t n = 0; n < sizeof(seconds)/sizeof(seconds[0]); ++n)
|
for (size_t n = 0; n < sizeof(seconds)/sizeof(seconds[0]); ++n)
|
||||||
{
|
{
|
||||||
unsigned int b = 0;
|
unsigned int b = 0; // quantity of blocks between `time_boundary` and `now`
|
||||||
const time_t time_boundary = now - static_cast<time_t>(seconds[n]);
|
const time_t time_boundary = now - static_cast<time_t>(seconds[n]);
|
||||||
for (time_t ts: timestamps) b += ts >= time_boundary;
|
for (time_t ts: timestamps) b += ts >= time_boundary;
|
||||||
const double p = probability(b, seconds[n] / DIFFICULTY_TARGET_V2);
|
// expected qty of blocks in the time measured = (time measured) / (expected time per block)
|
||||||
MDEBUG("blocks in the last " << seconds[n] / 60 << " minutes: " << b << " (probability " << p << ")");
|
const double b_exp = seconds[n] / DIFFICULTY_TARGET_V2;
|
||||||
|
const double p = probability(b, b_exp);
|
||||||
|
MDEBUG("blocks in the last " << seconds[n] / 60 << " minutes: " << b << " (probability actual " << p << ", expected >=" << threshold << ")");
|
||||||
if (p < threshold)
|
if (p < threshold)
|
||||||
{
|
{
|
||||||
MWARNING("There were " << b << (b == max_blocks_checked ? " or more" : "") << " blocks in the last " << seconds[n] / 60 << " minutes, there might be large hash rate changes, or we might be partitioned, cut off from the Monero network or under attack, or your computer's time is off. Or it could be just sheer bad luck.");
|
const long b_min_exp = std::lround(threshold * b_exp); // lower bound on blocks we expect during measurement
|
||||||
|
MWARNING("There were " << b << (b == max_blocks_checked ? " or more" : "") << " blocks in the last " << seconds[n] / 60 << " minutes, while we expected >=" << b_min_exp << ". There might be large hash rate changes, we might be partitioned, cut off from the Monero network or under attack, or your computer's time is off.");
|
||||||
|
|
||||||
std::shared_ptr<tools::Notify> block_rate_notify = m_block_rate_notify;
|
std::shared_ptr<tools::Notify> block_rate_notify = m_block_rate_notify;
|
||||||
if (block_rate_notify)
|
if (block_rate_notify)
|
||||||
|
Loading…
Reference in New Issue
Block a user