Nova implementation
The R1CS structure consits of sparse matrices
$l$ : instance length$m - l - 1$ : witness length$x$ : instance$W$ : witness$Z$ :$(W, x, 1)$
$E$ : error vector$u$ : scalar$x$ : public inputs and outputs$Z$ :$(W, x, u)$
The R1CS instance can be expressed as a relaxed R1CS instance by
$pp_W$ : commitment vectors for$W$ size$m$ $pp_E$ : commitment vectors for$E$ size$m - l - 1$ $(\overline E, u, \overline W, x)$ : committed relaxed R1CS instance$u$ : scalar$x$ : public inputs and outputs$\overline E$ :$Com(pp_E, E, r_E)$ $\overline W$ :$Com(pp_W, W, r_W)$
$E$ : error vector (0 when the R1CS is initalized)$u$ : scalar (1 when the R1CS is initalized)$W$ : witness$x$ : instance
if
$\overline E = Com(pp_E, E, r_E)$ $\overline W = Com(pp_W, W, r_W)$ $(A · Z) ◦ (B · Z) = u · (C · Z) + E$
A folding scheme for
$g$ : probabilistic polynomial time generator algorithm$K(pp, s) \rightarrow (pk, vk)$ : On input$pp$ and common structure$s$ between instances to be folded, outputs a prover key$pk$ and a verifier key$vk$ $P(pk, (u_1,w_1),(u_2,w_2)) \rightarrow (u,w)$ : On input instance-witness tuples$(u_1,w_1)$ and$(u_2,w_2)$ outputs a new instance-witness tuple$(u,w)$ of the same size$V(vk,u_1,u_2) \rightarrow u$ : On input instances$u_1$ and$u_2$ , outputs a new instance$u$
An IVC Scheme with Proof Compression
$G$ : output$pp \leftarrow G(1^λ)$ $K(pp,(A,B,C))$ :$vk \leftarrow p(pp,s)$ and$pk \leftarrow (pp, (A,B,C), vk)$ ; output(vk, pk)$P(pk,(u_1,w_1), (u_2,w_2))$ :$r \leftarrow p(vk,u_1,u_2,\overline T)$ output result$V(vk,u_1,u_2,\overline T)$ :$r \leftarrow p(vk,u_1,u_2,\overline T)$ output result$p$ : cryptographic hash function
For vectors over
$pp \rightarrow Gen(1^λ,m)$ : Sample$g \rightarrow R \mathbb G^m, h \rightarrow R \mathbb G$ . Output$(g, h)$ $C \rightarrow Com(pp, x \in \mathbb F^m, r \in \mathbb F$ : Output$h^r·\prod_{i\in [0,...,m]}g_i^{x_i}$