zkmopro / mopro

Making client-side proving on mobile simple.
Apache License 2.0
103 stars 28 forks source link

Serialize/deserialize ark-zkey #130

Open vivianjeng opened 2 months ago

vivianjeng commented 2 months ago

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