You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Plonk Protocol: Copy Constraints and Position Vector Optimization
Copy Constraints
The copy constraints in the Plonk protocol ensure that the values of certain variables remain consistent across different columns of the W table. This is necessary for the protocol to correctly verify the computation of a circuit.
The prover uses random numbers $\beta$ and $\gamma$ provided by the verifier to merge and permute vectors, obtaining the multisets $f_i$ and $g_i$, which could be encoded into polynomials:
If $\vec{f}$ and $\vec{g}$ are equivalent, $z_N = 1$. This is verified by ensuring:
$$
z(\omega^0) = 1
$$
$$
z(\omega\cdot X)g(X) = z(X)f(X)
$$
where:
$z_0$ is an initial value of 1
$z_i$ is the value of the copy constraint at step $i$
$f_i$ is a polynomial expression representing the value of a variable at step $i$
$g_i$ is a polynomial expression representing the value of a variable at step $i$
$X$ is a variable
$\omega$ is a generator of the multiplicative subgroup $H$
Position Vector Optimization
The σ vectors only need to use distinct values to mark the permutations, not necessarily increasing natural numbers. If we use H = (1, ω, $ω^2,$ ...), then the polynomial ${id_a}(X)$ will be greatly simplified:
If there are more columns in σ, then we need to choose multiple $k_1, k_2, k_3, ... = g^1, g^2, g^3, ...$ where g is a generator of the multiplicative subgroup T, and $|T|*2^λ = p-1.$
To prove that a circuit output equals a specific public value (e.g., out=99), the simplest method is to use the $q_C$ column with constraints $q_L = q_R = q_M = 0:$
$q_C(X) - q_O(X)w_c(X) = 0$
This method fixes the public values as constants, requiring recomputation of the $q_C(X)$ polynomial if values change, which is inefficient.
Introduce a new column $\phi$ for public parameters, which allow public input changes without affecting other parts of the circuit. The new arithmetic constraint is:
In summary, handling public inputs efficiently in the Plonk protocol involves introducing a dedicated column for public parameters to avoid frequent recalculations of constraint polynomials. Additionally, optimizing position vectors and managing copy constraints with auxiliary vectors and random merging helps ensure the integrity and efficiency of the proof system.