EspressoSystems / jellyfish

A Rust Implementation of the PLONK ZKP System and Extensions
https://jellyfish.docs.espressosys.com
MIT License
408 stars 106 forks source link

ADVZ share duplicates payload data #659

Closed ggutoski closed 2 months ago

ggutoski commented 3 months ago

This is bad because it doubles the communication size.

Shares are constructed here:

https://github.com/EspressoSystems/jellyfish/blob/92714a4cc509fac07b8e8fc321fc0271c5dbe6b6/vid/src/advz.rs#L923-L932

The first copy of payload data is evals, which is what we use everywhere in ADVZ.

The second copy is hidden deep inside evals_proof. The call to lookup returns a MerkleProof, which contains a copy of the payload data as described in #658 .

One of these copies must be eliminated. If we do not remove it from MerkleProof as suggested in #658 then ADVZ should extract the data from there instead of storing an independent copy in Share struct. cc @mrain