Guest User

Untitled

a guest
Jan 22nd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. package bitcoin;
  2.  
  3. import static java.lang.Math.exp;
  4. import static java.lang.Math.pow;
  5.  
  6. public class AttackerSuccessProbability {
  7.  
  8. public static double AttackerSuccessProbability(double q, int z)
  9. {
  10. // p = probability an honest node finds the next block
  11. double p = 1.0 - q;
  12. double lambda = z * (q / p);
  13. double sum = 1.0;
  14. int i, k;
  15. for (k = 0; k <= z; k++)
  16. {
  17. double poisson = exp(-lambda);
  18. for (i = 1; i <= k; i++)
  19. poisson *= lambda / i;
  20. sum -= poisson * (1 - pow(q / p, z - k));
  21. }
  22.  
  23. return sum;
  24. }
  25.  
  26. public static void main(String[] args)
  27. {
  28. // q = probability the attacker finds the next block
  29. double qs[] = {0.1, 0.3, 0.5};
  30.  
  31. for( int j = 0; j < qs.length; j++) {
  32. double q = qs[j];
  33.  
  34. System.out.println("q=" + q);
  35. for (int z = 0; z < 10; z++) {
  36. System.out.println(String.format("z=%d, prob=%f", z, AttackerSuccessProbability(q, z)));
  37. }
  38. System.out.println("");
  39. }
  40. }
  41. }
Add Comment
Please, Sign In to add comment