This commit is contained in:
Philip White 2025-03-30 12:42:33 -05:00 committed by GitHub
commit cb4465f872
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -47,6 +47,7 @@ using namespace epee;
#include "cryptonote_config.h"
#include "misc_language.h"
#include "file_io_utils.h"
#include <cmath>
#include <csignal>
#include "checkpoints/checkpoints.h"
#include "ringct/rctTypes.h"
@ -1804,14 +1805,17 @@ namespace cryptonote
static const unsigned int seconds[] = { 5400, 3600, 1800, 1200, 600 };
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]);
for (time_t ts: timestamps) b += ts >= time_boundary;
const double p = probability(b, seconds[n] / DIFFICULTY_TARGET_V2);
MDEBUG("blocks in the last " << seconds[n] / 60 << " minutes: " << b << " (probability " << p << ")");
// expected qty of blocks in the time measured = (time measured) / (expected time per block)
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)
{
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;
if (block_rate_notify)