x 3 лет назад
Родитель
Сommit
a532230693
1 измененных файлов с 53 добавлено и 0 удалено
  1. 53 0
      script/research/zk/ecip/row-construct.sage

+ 53 - 0
script/research/zk/ecip/row-construct.sage

@@ -0,0 +1,53 @@
+p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
+r = 115792089237316195423570985008687907852837564279074904382605163141518161494337
+Fp = GF(p)  # Base Field
+Fr = GF(r)  # Scalar Field
+A = 0
+B = 7
+E = EllipticCurve(GF(p), [A, B])
+assert(E.cardinality() == r)
+
+K.<x> = PolynomialRing(Fp, implementation="generic")
+L.<y> = PolynomialRing(K, implementation="generic")
+M.<z> = L[]
+eqn = y^2 - x^3 - A * x - B
+
+B0 = E.random_element()
+B1 = E.random_element()
+
+# Base 3 representation
+d0 = [ 1, -1, 0,  0, 0]
+d1 = [-1, -1, 0, -1, 1]
+
+e0 = sum(d0_j*(-3)^j for j, d0_j in enumerate(d0))
+assert e0 == 4
+
+e1 = sum(d1_j*(-3)^j for j, d1_j in enumerate(d1))
+assert e1 == 110
+
+# We will prove this statement
+Q = 4*B0 + 110*B1
+assert Q == (
+    (-3)^0 * ( B0 - B1) +
+    (-3)^1 * (-B0 - B1) +
+
+    (-3)^3 * (-B1) +
+    (-3)^4 * (B1)
+)
+
+Q5 = E(0, 1, 0)
+Q4 = -3*Q5 + B1
+Q3 = -3*Q4 - B1
+Q2 = -3*Q3
+Q1 = -3*Q2 - B0 - B1
+Q0 = -3*Q1 + B0 - B1
+assert Q0 == Q
+
+a0 = (-3)^0
+b0 = (-3)^1
+assert e0 == a0 - b0
+
+a1 = (-3)^4
+b1 = (-3)^0 + (-3)^1 + (-3)^3
+assert e1 == a1 - b1
+