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 476186b commit 4a4aed5
Showing 1 changed file with 31 additions and 10 deletions.
41 changes: 31 additions & 10 deletions scripts/mimc_constraints.sage
Original file line number Diff line number Diff line change
Expand Up @@ -63,26 +63,47 @@ 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>2 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(f" POLYNOMIAL with e={e} has no zero coefficients")


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

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

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

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

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

0 comments on commit 4a4aed5

Please sign in to comment.