|
|
@@ -156,3 +156,40 @@ r_x_1 = r_x_y(y=K(1))
|
|
|
t_x_y = r_x_1 * r_prime_x_y - k_y
|
|
|
print(t_x_y.constant_coefficient())
|
|
|
|
|
|
+# Section 6, Figure 2
|
|
|
+#
|
|
|
+# zkP1
|
|
|
+# 4 blinding factors since we evaluate r(X, Y) 3 times
|
|
|
+# Blind r(X, Y)
|
|
|
+for i in range(1, 4):
|
|
|
+ blind_c_i = K.random_element()
|
|
|
+ r_x_y += x**(-2*n - i) * y**(-2*n - i) * blind_c_i
|
|
|
+# Commit to r(X, Y)
|
|
|
+
|
|
|
+# zkV1
|
|
|
+# Send a random y
|
|
|
+challenge_y = K.random_element()
|
|
|
+
|
|
|
+# zkP2
|
|
|
+# Commit to t(X, y)
|
|
|
+
|
|
|
+# zkV2
|
|
|
+# Send a random z
|
|
|
+challenge_z = K.random_element()
|
|
|
+
|
|
|
+# zkP3
|
|
|
+# Evaluate a = r(z, 1)
|
|
|
+a = r_x_y(x=challenge_z, y=K(1))
|
|
|
+# Evaluate b = r(z, y)
|
|
|
+b = r_x_y(x=challenge_z, y=challenge_y)
|
|
|
+# Evaluate t = t(z, y)
|
|
|
+t = t_x_y(x=challenge_z, y=challenge_y)
|
|
|
+# Evaluate s = s(z, y)
|
|
|
+s = s_x_y(x=challenge_z, y=challenge_y)
|
|
|
+
|
|
|
+# zkV3
|
|
|
+# Recalculate t from a, b and s
|
|
|
+k = k_y(y=challenge_y)
|
|
|
+t = a * (b + s) - k
|
|
|
+# Verify polynomial commitments
|
|
|
+
|