Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bitcoin;
- import static java.lang.Math.exp;
- import static java.lang.Math.pow;
- public class AttackerSuccessProbability {
- public static double AttackerSuccessProbability(double q, int z)
- {
- // p = probability an honest node finds the next block
- 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;
- }
- public static void main(String[] args)
- {
- // q = probability the attacker finds the next block
- double qs[] = {0.1, 0.3, 0.5};
- for( int j = 0; j < qs.length; j++) {
- double q = qs[j];
- System.out.println("q=" + q);
- for (int z = 0; z < 10; z++) {
- System.out.println(String.format("z=%d, prob=%f", z, AttackerSuccessProbability(q, z)));
- }
- System.out.println("");
- }
- }
- }
Add Comment
Please, Sign In to add comment