This is a crosspost with zkresear.ch/t/fast-fourier-inspired-sangria.
Introduction
Sangria is the folding protocol for Plonk prover. In the original model, the prover works iteratively and merges a new execution trace with an execution trace accumulator.
Here we will show, how to build an optimized folding process, requiring only 2 or 1 scalar multiplications per folding on the verifier side.
Original Protocol
Accumulated instance and witness:
Un′:=(Xn′,un′,Wn′,En′),
Wn′:=(Wn′,en′,rWn′,rEn′)
Iteration instance and witness:
Un:=(Xn,un,Wn,En),
Wn:=(Wn,e,rWn,rEn)
Where W=Com(ppW,W,rW), E=Com(ppW,e,rE).
We use a relaxed Plonk gate equation:
C(a,b,c,u,e)=abqM+qCu2+(aqL+cqO+bqR)u+e
- Prover send to Verifier Tn=Com(ppW,tn,rTn),
Introduction
Sangria is the folding protocol for Plonk prover. In the original model, the prover works iteratively and merges a new execution trace with an execution trace accumulator.
Here we will show, how to build an optimized folding process, requiring only 2 or 1 scalar multiplications per folding on the verifier side.
Original Protocol
Accumulated instance and witness:
Un′:=(Xn