Просмотр исходного кода

get root of unity for 2-adic subgroup within vesta base field Fq, which has an order of 32

narodnik 5 лет назад
Родитель
Сommit
354c4ffd99
1 измененных файлов с 25 добавлено и 0 удалено
  1. 25 0
      scripts/halo/plonk.sage

+ 25 - 0
scripts/halo/plonk.sage

@@ -0,0 +1,25 @@
+q = 0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001
+K = GF(q)
+
+# The pallas and vesta curves are 2-adic. This means there is a large
+# power of 2 subgroup within both of their fields.
+# This function finds a generator for this subgroup within the field.
+def get_omega():
+    # Slower alternative:
+    #     generator = K.multiplicative_generator()
+    # Just hardcode the value here instead
+    generator = K(5)
+    assert (q - 1) % 2**32 == 0
+    # Root of unity
+    t = (q - 1) / 2**32
+    omega = generator**t
+
+    assert omega != 1
+    assert omega**(2**16) != 1
+    assert omega**(2**31) != 1
+    assert omega**(2**32) == 1
+
+    return omega
+
+omega = get_omega()
+