cuckoo_vars.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import math
  2. def get_b_0(k, epsilon, ell, u):
  3. # plot([(1+(1+u)*epsilon*x)/((1-ell)*x+(1+u)*epsilon*x+1), 0.25], (x, 0, 1))
  4. return ((1+(1+u)*epsilon*k)/((1-ell)*k+(1+u)*epsilon*k+1))
  5. def get_delta_e(phi_e, gamma, K, n, epsilon):
  6. return math.sqrt(abs(math.log(phi_e)*32*epsilon/(gamma*K**2*math.log(n))))
  7. def get_phi_e(delta_e, gamma, K, n, epsilon):
  8. return math.exp(-1*gamma*((delta_e*K)**2)*math.log(n)/(32*epsilon))
  9. def get_delta_age_ell(phi_age_ell, c, K, n):
  10. C=c*math.log(n)
  11. return math.sqrt((2*C*K/n) - (2*math.log(phi_age_ell)/C))
  12. def get_phi_age_ell(delta_age_ell, C, K, n):
  13. return math.exp(((C**2)*K/n) - ((delta_age_ell**2)*C/2))
  14. def get_delta_age_u(u, c, K, n):
  15. C=c*math.log(n)
  16. #delta_age_u**2/(1+delta_age_u)=A
  17. A = ((2*C*K/n) - (2*math.log(u)/C))
  18. #quadratic of the form x^2 - A*x - A = 0
  19. #only one positive root as A is always positive.
  20. root = 0.5 * (A + math.sqrt(A**2+4*A))
  21. return root
  22. def get_phi_age_u(delta_age_u, C, K, n):
  23. return math.exp(((C**2)*K/n) - ((delta_age_u**2)*C/(2*(1+delta_age_u))))
  24. def get_delta_n(gamma, epsilon, K, n):
  25. return gamma*K*(math.log(n))**3/(epsilon*n)
  26. def get_delta_ell(delta_e, delta_age_ell, delta_n):
  27. return delta_e + delta_age_ell - (delta_e * delta_age_ell) - ((1 - delta_e) * delta_n)
  28. def get_delta_u(delta_e, delta_age_u, delta_n):
  29. return delta_e + delta_age_u + delta_e * delta_age_u + ((1 + delta_e) * delta_n)
  30. def get_p_i(phi_e, epsilon, phi_age_ell, phi_age_u, C):
  31. phi_e_honest = phi_e**C
  32. print(phi_e_honest)
  33. phi_e_byz = (phi_e**(epsilon**2))**C
  34. print(phi_e_byz)
  35. p1 = phi_e_honest + 2*phi_age_ell + phi_e_byz
  36. p2 = phi_e_honest + 2*phi_age_u + phi_e_byz
  37. p3 = phi_e_honest + phi_age_ell
  38. p4 = phi_e_byz + phi_age_u
  39. return [p1, p2, p3, p4]
  40. n=10**8
  41. K=20
  42. c=40
  43. C=c*math.log(n)
  44. gamma=1
  45. epsilon=0.2
  46. delta_e = 0.1
  47. delta_age_ell = 0.12
  48. delta_age_u = 0.11
  49. #phi_age_ell_1=0.02
  50. #phi_age_u_1=0.02
  51. #phi_e=5*(10**-30)
  52. #delta_age_u_1 = get_delta_age_u(phi_age_u_1, c, K, n)
  53. #print("delta_age_u is: ", delta_age_u_1)
  54. #delta_age_ell_1 = get_delta_age_ell(phi_age_ell_1, c, K, n)
  55. #print("delta_age_l is: ", delta_age_ell_1)
  56. delta_e_2 = get_delta_e(5*(10**-30), gamma, K, n, epsilon)
  57. print("delta_e_2 is: ", delta_e_2)
  58. delta_n = get_delta_n(gamma, epsilon, K, n)
  59. print("delta_n is: ", delta_n)
  60. delta_ell = get_delta_ell(delta_e, delta_age_ell, delta_n)
  61. print("delta_ell is: ", delta_ell)
  62. delta_u = get_delta_u(delta_e, delta_age_ell, delta_n)
  63. print("delta_u is: ", delta_u)
  64. b_0 = get_b_0(K, epsilon, delta_ell, delta_u)
  65. print("b_0 is: ", b_0)
  66. phi_age_ell = get_phi_age_ell(delta_age_ell, C, K, n)
  67. print("phi_age_ell is: ", phi_age_ell)
  68. phi_age_u = get_phi_age_u(delta_age_u, C, K, n)
  69. print("phi_age_u is: ", phi_age_u)
  70. phi_e = get_phi_e(delta_e, gamma, K, n, epsilon)
  71. print("phi_e is: ", phi_e)
  72. print("phi_e^(epsilon^2) is: ", phi_e**(epsilon**2))
  73. [p1, p2, p3, p4] = get_p_i(phi_e, epsilon, phi_age_ell, phi_age_u, C)
  74. print(p1, p2, p3, p4)