inner_product_proof.sage 804 B

1234567891011121314151617181920212223242526
  1. load('../mpc/curve.sage')
  2. load('proof.sage')
  3. load('transcript.sage')
  4. n = 4
  5. Q = [CurvePoint.random()]
  6. H = [CurvePoint.random() for i in range(0,n)]
  7. G = [CurvePoint.random() for i in range(0,n)]
  8. a = [K(random.randint(0,p)) for _ in range(0,n)]
  9. b = [K(random.randint(0,p)) for _ in range(0,n)]
  10. c = [sum([a*b for a, b in zip(a, b)])]
  11. y_inv = K(random.randint(0,p))
  12. G_factors = [K(1)]*n
  13. H_factors = [y_inv**i for i in range(0,n)]
  14. b_prime = [b*y for b, y in zip(b, H_factors)]
  15. a_prime = a.copy()
  16. transcript = Transcript('bulletproof')
  17. proof = Proof(transcript, Q, G_factors, H_factors, G, H, a, b)
  18. P_res = sum([CurvePoint.msm(G, a_prime), CurvePoint.msm(H, b_prime), CurvePoint.msm(Q, c)])
  19. verifier = Transcript('bulletproof')
  20. pp, p, _ = proof.verify(n, verifier, G_factors, H_factors, P_res, Q, G, H)