Следующее из Биткойн-бумага. Цель состояла в том, чтобы вычислить вероятность (P), которой злоумышленнику может повезти, и переопределить z количество блоков, где q — это процент контролируемой сети.
Я заинтересован в том, чтобы отойти в обратном направлении от этого и вычислить процентную долю сети, которую злоумышленник должен будет контролировать, чтобы откатить x блоков при некоторой вероятности успеха P.
Это возможно или я думаю об этом странно?
Как бы я представлял решение для q вместо p в коде?
Converting to C code...
#include <math.h>
double AttackerSuccessProbability(double q, int z)
{
double p = 1.0 - q;
double lambda = z * (q / p);
double sum = 1.0;
int i, k;
for (k = 0; k <= z; k++) {
double poisson = exp(-lambda);
for (i = 1; i <= k; i++) {
poisson *= lambda / i;
sum -= poisson * (1 - pow(q / p, z - k));
}
return sum;
}
}
Задача ещё не решена.
Других решений пока нет …