1
0
Fork 0
mirror of synced 2025-09-24 04:40:05 +00:00

refactor constants

This commit is contained in:
dark64 2021-04-13 14:41:29 +02:00
parent 6a1952c771
commit 98f697b3d0
8 changed files with 2073 additions and 2083 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,9 @@
// https://eprint.iacr.org/2019/458.pdf
def ark<N, C>(field[N] state, field[C] c, u32 it) -> field[N]:
from "./constants.zok" import poseidon_c
from "./constants.zok" import poseidon_m
def ark<N>(field[N] state, field[497] c, u32 it) -> field[N]:
for u32 i in 0..N do
state[i] = state[i] + c[it + i]
endfor
@ -13,7 +16,7 @@ def sbox<N>(field[N] state, u32 f, u32 p, u32 r) -> field[N]:
endfor
return state
def mix<N>(field[N] state, field[N][N] m) -> field[N]:
def mix<N>(field[N] state, field[7][7] m) -> field[N]:
field[N] out = [0; N]
for u32 i in 0..N do
field acc = 0
@ -24,8 +27,8 @@ def mix<N>(field[N] state, field[N][N] m) -> field[N]:
endfor
return out
def main<N, C, M>(field[N] inputs, field[C] c, field[M][M] m) -> field:
assert(N > 0 && N <= 6)
def main<N>(field[N] inputs) -> field:
assert(N > 0 && N <= 6) // max 6 inputs
u32 t = N + 1
u32[8] rounds_p = [56, 57, 56, 60, 60, 63, 64, 63]
@ -33,6 +36,9 @@ def main<N, C, M>(field[N] inputs, field[C] c, field[M][M] m) -> field:
u32 f = 8
u32 p = rounds_p[(t - 2)]
field[497] c = poseidon_c()[t - 2]
field[7][7] m = poseidon_m()[t - 2]
field[t] state = [0; t]
for u32 i in 1..t do
state[i] = inputs[i - 1]

View file

@ -1,7 +1,5 @@
from "hashes/poseidon/constants" import poseidon_c_1
from "hashes/poseidon/constants" import poseidon_m_1
import "hashes/poseidon/poseidon" as poseidon
def main(field i) -> field:
field output = poseidon([i], poseidon_c_1(), poseidon_m_1())
field output = poseidon([i])
return output

View file

@ -1,7 +1,5 @@
from "hashes/poseidon/constants" import poseidon_c_2
from "hashes/poseidon/constants" import poseidon_m_2
import "hashes/poseidon/poseidon" as poseidon
def main(field[2] i) -> field:
field output = poseidon(i, poseidon_c_2(), poseidon_m_2())
field output = poseidon(i)
return output

View file

@ -1,7 +1,5 @@
from "hashes/poseidon/constants" import poseidon_c_3
from "hashes/poseidon/constants" import poseidon_m_3
import "hashes/poseidon/poseidon" as poseidon
def main(field[3] i) -> field:
field output = poseidon(i, poseidon_c_3(), poseidon_m_3())
field output = poseidon(i)
return output

View file

@ -1,7 +1,5 @@
from "hashes/poseidon/constants" import poseidon_c_4
from "hashes/poseidon/constants" import poseidon_m_4
import "hashes/poseidon/poseidon" as poseidon
def main(field[4] i) -> field:
field output = poseidon(i, poseidon_c_4(), poseidon_m_4())
field output = poseidon(i)
return output

View file

@ -1,7 +1,5 @@
from "hashes/poseidon/constants" import poseidon_c_5
from "hashes/poseidon/constants" import poseidon_m_5
import "hashes/poseidon/poseidon" as poseidon
def main(field[5] i) -> field:
field output = poseidon(i, poseidon_c_5(), poseidon_m_5())
field output = poseidon(i)
return output

View file

@ -1,7 +1,5 @@
from "hashes/poseidon/constants" import poseidon_c_6
from "hashes/poseidon/constants" import poseidon_m_6
import "hashes/poseidon/poseidon" as poseidon
def main(field[6] i) -> field:
field output = poseidon(i, poseidon_c_6(), poseidon_m_6())
field output = poseidon(i)
return output