Skip to content

Commit

Permalink
scripts: assert non-sparsity of mimc polynomials
Browse files Browse the repository at this point in the history
  • Loading branch information
dtebbs committed May 11, 2021
1 parent 52b2111 commit d440b2b
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions scripts/mimc_constraints.sage
Original file line number Diff line number Diff line change
Expand Up @@ -63,26 +63,55 @@ def output_valid_configs_and_constraints(r):
# output_valid_config_and_constraints(r, log_2_r, 23)


def check_polynomial(r, e):
"""
Check that the polynomial representing a mimc round is not sparse (in fact,
it follows immediately from the binomial theorem that no coefficients can
be zero for r prime, so this is essentially a sanity check).
"""
Fr = GF(r)
Frx.<x,k> = PolynomialRing(Fr)
mimc_poly = (x + k)^e
coeffs = mimc_poly.coefficients()

assert len(coeffs) == e + 1
assert 0 not in coeffs
print(" POLYNOMAIL has no zero coefficients")


# BW6-761
print("BW6-761:")
output_valid_configs_and_constraints(
r=258664426012969094010652733694893533536393512754914660539884262666720468348340822774968888139573360124440321458177)
check_polynomial(
258664426012969094010652733694893533536393512754914660539884262666720468348340822774968888139573360124440321458177,
17)

# MNT4
print("MNT4:")
output_valid_configs_and_constraints(
r=475922286169261325753349249653048451545124878552823515553267735739164647307408490559963137)
check_polynomial(
475922286169261325753349249653048451545124878552823515553267735739164647307408490559963137,
17)

# MNT6
print("MNT6:")
output_valid_configs_and_constraints(
r=475922286169261325753349249653048451545124879242694725395555128576210262817955800483758081)
check_polynomial(
475922286169261325753349249653048451545124879242694725395555128576210262817955800483758081,
17)

# BLS12-377
print("BLS12-377:")
output_valid_configs_and_constraints(
r=0x12ab655e9a2ca55660b44d1e5c37b00159aa76fed00000010a11800000000001)
check_polynomial(
0x12ab655e9a2ca55660b44d1e5c37b00159aa76fed00000010a11800000000001, 17)

print("ALT-BN128:")
output_valid_configs_and_constraints(
r=0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001)
check_polynomial(
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, 17)

0 comments on commit d440b2b

Please sign in to comment.