|
1 | 1 |
|
2 | 2 | \section{Curdleproofs Weighted Inner Product Argument Modification Attempt}\label{app:curdleproofs-weighted-inner-product-argument-modification-attempt}
|
3 |
| -We have made code for the~\gls{ipa} in the Curdleproofs repository which actually works with Bulletproofs+' Weighted Inner Product Argument. |
| 3 | +In the following, we will show our unsuccessful attempt in trying to convert the~\gls{dlipa} into a~\gls{wipa}. |
| 4 | + |
| 5 | +Before this, it should be mentioned that we have made code for the~\gls{ipa} in the Curdleproofs repository which actually works with Bulletproofs+' |
| 6 | +Weighted Inner Product Argument. |
| 7 | +Both the prover and verifier work. |
| 8 | +The problem is connecting it to the rest of the Curdleproofs protocol. |
| 9 | + |
| 10 | +First, the~\gls{dlipa} stems from the grand product argument that it has been converted from. |
| 11 | +Hence, it would make sense to try and modify the structure of this. |
| 12 | + |
| 13 | +The grand product argument compiles the grand product $p$ down to an equation that can be expressed as an inner product~\cite{Curdleproofs}. |
| 14 | +The equation is: |
| 15 | +\begin{align} |
| 16 | + p\beta^{\ell}-1=\sum_{i=1}^{\ell}c_i(\beta^i b_i-\beta^{i-1}) |
| 17 | +\end{align} |
| 18 | +This can be seen as the inner product $z=\mathbf{c}\times\mathbf{d}$, where $z=p\beta^\ell-1$ and $d_i=(\beta^i b_i-\beta^{i-1})$,~$i\in[1,\ell]$. |
| 19 | + |
| 20 | +We will now follow the exact same conversion from grand product to inner product as in Curdleproofs. |
| 21 | +This includes four steps; \textit{separate}, \textit{compress}, \textit{rearrange}, and \textit{compile}. |
| 22 | +But instead of converting from the grand product $p=\Pi_{i=1}^\ell b_i$, we try the conversion with $p=\Pi_{i=1}^\ell b_i^{y_i}$. |
| 23 | +Here, $y$ is a Vandermonde vector of challenges, e.g., $y=\{y^0,y^1,\dots,y^{\ell-1}\}$ |
| 24 | + |
| 25 | +\subsection{Separate}\label{subsec:separate} |
| 26 | +The grand product $p=\Pi_{i=1}^\ell b_i^{y_i}$ has $\ell-1$ multiplication, which we separate into $\ell+1$ checks |
| 27 | +\begin{align} |
| 28 | + c_1=1^{y_0}\land c_{i+1}=b_{i}^{y_{i}}c_i,\text{ }i\in[1,\ell)\land p=b_{\ell}^{y_{\ell}}c_{\ell} |
| 29 | +\end{align} |
| 30 | +As explained by Curdleproofs, the final check $p=b_{\ell}^{y_{\ell}}c_{\ell}$ enforces the grand product $p=\Pi_{i=1}^\ell b_i^{y_i}$. |
| 31 | +\subsection{Compress}\label{subsec:compress} |
| 32 | +All equations are combined into a single polynomial to ensure that they hold |
| 33 | +\begin{align} |
| 34 | + 0&=(1-c_1)+(b_{1}^{y_{1}}c_1-c_2)X+(b_{2}^{y_{2}}c_2-c_3)X^2+\\ |
| 35 | + &\dots+((b_{\ell-1}^{y_{\ell-1}}c_{\ell-1}-c_\ell))X^{\ell-1}+(b_{\ell}^{y_{\ell}}c_{\ell}-p)X^{\ell} |
| 36 | +\end{align} |
| 37 | + |
| 38 | +\subsection{Rearrange \& Compile}\label{subsec:rearrange} |
| 39 | +Now, this next step is where the equations start to create problems. |
| 40 | +In Curdleproofs they rearrange the $\mathbf{c}$ terms. |
| 41 | +For example, if the shuffle size was 3, the equation would become |
| 42 | +\begin{align} |
| 43 | + c_1(Xb_1-1)+c_2(X^2b_2-X)+c_3(X^3b_2-X^2) |
| 44 | +\end{align} |
| 45 | +Or equivalently by using the values of each equation in $\mathbf{c}$ |
| 46 | +\begin{align} |
| 47 | + 1(Xb_1-1)+b_1(X^2b_2-X)+(b_1b_2)(X^3b_3-X^2) |
| 48 | +\end{align} |
| 49 | +This can also be stated as |
| 50 | +\begin{align} |
| 51 | + \sum_{i=1}^{\ell}c_i(X^{i}b_{i}-X^{i-1}) |
| 52 | +\end{align} |
| 53 | +Simplifying this equation, one gets |
| 54 | +\begin{align} |
| 55 | + b_{1}b_{2}b_{3}X^3-1=pX^{\ell}-1 |
| 56 | +\end{align} |
| 57 | +By the Schwartz-Zippel Lemma, as explained by Curdleproofs, the following inner product holds with overwhelming probability if at a random point $\beta$: |
| 58 | +\begin{align} |
| 59 | + p\beta^{\ell}-1=\sum_{i=1}^{\ell}c_i(\beta^{i}b_i-\beta^{i-1}) |
| 60 | +\end{align} |
| 61 | +Or just $z=\mathbf{c}\times\mathbf{d}$. |
| 62 | + |
| 63 | +Now we will try to do the same thing with our equations, that include the weights $\mathbf{y}$. |
| 64 | +Keep in mind, for the~\gls{wipa} to work, we need the following structure: |
| 65 | +\begin{align}\label{eq:structure} |
| 66 | + \sum_{i=1}^{\ell}c_i\cdot d_i\cdot y_i |
| 67 | +\end{align} |
| 68 | +Hence, in the following conversion, that structure is our goal. |
| 69 | + |
| 70 | +Following the compression from the previous section, we will therefore see, if it have the structure of~\autoref{eq:structure} after the rearrangement and compilation. |
| 71 | +Again, we use size 3 for the example. |
| 72 | +As in the Curdleproofs case, we rearrange the $\mathbf{c}$ terms to be |
| 73 | +\begin{align} |
| 74 | + c_1(X b_1^{y_1}-1)+c_2(X^2 b_2^{y_2}-X)+c_3(X^3 b_3^{y_3}-X^2) |
| 75 | +\end{align} |
| 76 | +Again, we insert the values of $\mathbf{c}$. |
| 77 | +\begin{align} |
| 78 | + 1(X b_1^{y_1}-1)+b_1^{y_1}(X^2 b_2^{y_2}-X)+(b_1^{y_1}b_2^{y_2})(X^3 b_3^{y_3}-X^2) |
| 79 | +\end{align} |
| 80 | +This simplifies down to |
| 81 | +\begin{align} |
| 82 | + b_1^{y_1}b_2^{y_2}b_3^{y_3}X^3-1=pX^{\ell}-1 |
| 83 | +\end{align} |
| 84 | + |
| 85 | +Unfortunately, this does not match the structure that we set as our goal in~\autoref{eq:structure}. |
| 86 | + |
| 87 | +Instead, we can try to work directly from the given structure shown in~\autoref{eq:structure}, and see what we get. |
| 88 | +We now use $p=\Pi_{i=1}^\ell b_i$. |
| 89 | +\begin{align} |
| 90 | + \sum_{i=1}^{\ell}c_i(\beta^{i}b_i-\beta^{i-1})y_i |
| 91 | +\end{align} |
| 92 | +Here, a problem arises. |
| 93 | +If we still look at the example with shuffle size 3, |
| 94 | +\begin{align} |
| 95 | + 1(Xb_1-1)y_1+b_1(X^2b_2-X)y_2+(b_1b_2)(X^3b_3-X^2)y_3 |
| 96 | +\end{align} |
| 97 | +we are not able to simplify this equation. |
| 98 | +This means that the verifier would need to know the values of $\mathbf{c}$ and $\mathbf{d}$ to compute~$z$. |
| 99 | +This breaks zero-knowledge, so the conversion is not useful. |
| 100 | + |
| 101 | +Hence, we believe bigger protocol changes are needed if one wants to implement the~\gls{wipa} in Curdleproofs |
0 commit comments