Serialize/deserialize ark-zkey
Problem
Previously we use ark-zkey to decrease zkey size and loading time ark-zkey
But then we use new_unchecked to fix circom-compat zkey loading time
https://github.com/zkmopro/mopro/issues/25#issuecomment-2067880755
and ark-zkey serialization/deserialization is much more slower than the current load_zkey
Now we use zkey for mopro but ark-zkey is still doable and possible to decrease zkey size
Approaches
Serialization
could be
key.serialize_uncompressed
key.serialize_compressed
Deserialization e.g. https://github.com/arkworks-rs/circom-compat/blob/170b10fc9ed182b5f72ecf379033dda023d0bf07/src/zkey.rs#L328
Acceptance criteria
load arkzkey from ark-zkey and replace load_zkey in mopro-core
18th July Updates:
The performance between compressed and uncompressed zkey differs too much
The table shows to deserialize a bn254 G1Affine element
| method | time |
|---|---|
deserialize_compressed_unchecked |
599.791µs |
deserialize_uncompressed_unchecked |
7.375µs |
The compressed one took ~100x time to deserialize
Performance is too bad