Merge pull request #5317

1730a44f core: improve block rate monitor trigger probabilities (moneromooo-monero)
This commit is contained in:
Riccardo Spagni 2019-04-01 17:28:55 +02:00
commit 55d7eb06a8
No known key found for this signature in database
GPG Key ID: 55432DF31CCD4FCD
1 changed files with 17 additions and 1 deletions

View File

@ -1784,12 +1784,28 @@ namespace cryptonote
return f; return f;
} }
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
static double probability(unsigned int blocks, unsigned int expected) static double probability1(unsigned int blocks, unsigned int expected)
{ {
// https://www.umass.edu/wsp/resources/poisson/#computing // https://www.umass.edu/wsp/resources/poisson/#computing
return pow(expected, blocks) / (factorial(blocks) * exp(expected)); return pow(expected, blocks) / (factorial(blocks) * exp(expected));
} }
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
static double probability(unsigned int blocks, unsigned int expected)
{
double p = 0.0;
if (blocks <= expected)
{
for (unsigned int b = 0; b <= blocks; ++b)
p += probability1(b, expected);
}
else if (blocks > expected)
{
for (unsigned int b = blocks; b <= expected * 3 /* close enough */; ++b)
p += probability1(b, expected);
}
return p;
}
//-----------------------------------------------------------------------------------------------
bool core::check_block_rate() bool core::check_block_rate()
{ {
if (m_offline || m_target_blockchain_height > get_current_blockchain_height()) if (m_offline || m_target_blockchain_height > get_current_blockchain_height())