فهرست منبع

halo1: polynomial commitment over ring example

narodnik 5 سال پیش
والد
کامیت
d890d902fc
1فایلهای تغییر یافته به همراه10 افزوده شده و 2 حذف شده
  1. 10 2
      scripts/halo/groth_poly_commit.sage

+ 10 - 2
scripts/halo/groth_poly_commit.sage

@@ -39,7 +39,9 @@ def dot_product(x, y):
             result += int(x_i) * y_i
             result += int(x_i) * y_i
     return result
     return result
 
 
-def create_proof(a, x):
+def create_proof(p, x):
+    a = np.array(p.coefficients())
+
     x = np.array([x**i for i in range(len(a))])
     x = np.array([x**i for i in range(len(a))])
     # Evaluate the polynomial
     # Evaluate the polynomial
     z = a.dot(x)
     z = a.dot(x)
@@ -142,10 +144,16 @@ def verify_proof(proof, x):
 
 
     return True
     return True
 
 
+R.<x> = LaurentPolynomialRing(Scalar)
 a = np.array([
 a = np.array([
     Scalar(110), Scalar(56), Scalar(89), Scalar(6543), Scalar(2)
     Scalar(110), Scalar(56), Scalar(89), Scalar(6543), Scalar(2)
 ])
 ])
+p = 0
+for i, a_i in enumerate(a):
+    p += a_i * x**i
+print(p)
 xx = Scalar(77)
 xx = Scalar(77)
-proof = create_proof(a, xx)
+proof = create_proof(p, xx)
 assert verify_proof(proof, xx)
 assert verify_proof(proof, xx)
+assert proof.value == p(xx)