Skip to content

Commit 8030d23

Browse files
committed
Done
1 parent a83daa9 commit 8030d23

File tree

1 file changed

+99
-1
lines changed

1 file changed

+99
-1
lines changed
Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,101 @@
11

22
\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

Comments
 (0)