以下は、ビットコインのホワイトペーパーからのものです。目標は、攻撃者が幸運に恵まれ、z 個のブロックを上書きできる確率 (P) を計算することでした。q は、制御下にあるネットワークのパーセンテージです。
ここから逆算して、成功確率 P を考慮して x ブロックをロールバックするために攻撃者が制御しなければならないネットワークの割合を計算することに興味があります。
これは可能ですか、それとも私はこれを奇妙に考えていますか?
コードで p ではなく q を解くことをどのように表現しますか?
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;
}
}