Pārlūkot izejas kodu

sonic: add sonic protocol steps to sage version

narodnik 5 gadi atpakaļ
vecāks
revīzija
76cb1e37c0
1 mainītis faili ar 37 papildinājumiem un 0 dzēšanām
  1. 37 0
      scripts/halo/sonic.sage

+ 37 - 0
scripts/halo/sonic.sage

@@ -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
+