inner_product_proof.sage 937 B

123456789101112131415161718192021222324252627282930313233
  1. load('../mpc/curve.sage')
  2. load('proof.sage')
  3. load('transcript.sage')
  4. n = 2
  5. Q = [CurvePoint.generator()]
  6. H = [CurvePoint.generator() for i in range(0,n)]
  7. G = [CurvePoint.generator() for i in range(0,n)]
  8. a = [1, 2]
  9. b = [2, 4]
  10. c = [sum([a*b for a, b in zip(a, b)])]
  11. print('c: {}'.format(c))
  12. y_inv = K(1)
  13. G_factors = [K(1)]*n
  14. H_factors = [y_inv**i for i in range(0,n)]
  15. b_prime = [b*y for b, y in zip(b, H_factors)]
  16. a_prime = a.copy()
  17. transcript = Transcript('bulletproof')
  18. proof = Proof(transcript, Q, G_factors, H_factors, G, H, a, b)
  19. g_a_prime = CurvePoint.msm(G, a_prime)
  20. h_b_prime = CurvePoint.msm(H, b_prime)
  21. q_c = CurvePoint.msm(Q, c)
  22. print('g_a_prime: {}'.format(g_a_prime))
  23. print('h_b_prime: {}'.format(h_b_prime))
  24. print('q_c: {}'.format(q_c))
  25. P_res = sum([g_a_prime, h_b_prime, q_c])
  26. print('P: {}'.format(P_res))
  27. verifier = Transcript('bulletproof')
  28. pp, p, _ = proof.verify(n, verifier, G_factors, H_factors, P_res, Q, G, H)