mopro icon indicating copy to clipboard operation
mopro copied to clipboard

Serialize/deserialize ark-zkey

Open vivianjeng opened this issue 2 years ago • 1 comments

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

vivianjeng avatar Apr 24 '24 13:04 vivianjeng

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

vivianjeng avatar Jul 18 '24 15:07 vivianjeng

Performance is too bad

vivianjeng avatar Feb 06 '25 09:02 vivianjeng