Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Small fixes #18

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 10 additions & 10 deletions from0k2bp.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1566,9 +1566,9 @@

But for the case $600 = 10 \times 10 \times 6$ - we first ``chunk'' in 10s, then
again in 10s, leaving only 6 components for the final step. That
requires revealing $2\times 10-1 = 19$ commitments at each of the two reducing
requires revealing $2\times (10 - 2) = 18$ commitments at each of the two reducing
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we can clarify this and the next bit of arithmetic via #19 but also 2 x (10-2) is not 18 :)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My true (in)ability is exposed!

steps, along with 6~scalars in the final step (and again subtract 1 for
the starting $A$). That'd be only 43 items instead of 600.
the starting $A$). That'd be only 42 items instead of 600.

So far so good -- it clearly saves space, but we've left a big hole in
the argument; does this actually have \emph{knowledge soundness}?
Expand Down Expand Up @@ -1863,7 +1863,7 @@
receive back a challenge $x$, both sides recalculate $C'$, continue until a
final step (each step a halving and a new $L, R$), and in the last step reveal
scalars for the now single values $a, b$, and the Verifier makes the final
check that $C^{*} = a^{*}b^{*}G + a^{*}G_1 + b^{*}H_1$, where * indicates the $\log_2n$-th transformed values.
check that $C^{*} = (a^{*} \cdot b^{*})G + a^{*}G_1 + b^{*}H_1$, where * indicates the $\log_2n$-th transformed values.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe these are now single values not vectors (as per previous line), so we don't want a dot product here. Admittedly it does look really crappy using a * superscript here, though.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right. When I was first reading this, I thought the protocol could end on vectors of length 2, for which you would need the dot product. I think the number of messages stays the same, but I think I invented that out of thin air.


As we mentioned at the start, to tweak this to create an argument of
knowledge that a given $z$ is the inner product of the committed vectors,
Expand Down Expand Up @@ -2143,7 +2143,7 @@
can see that this requires:
\begin{align*}
& \textbf{H}' = \textbf{y}^{-n}\textbf{H} \\
& P = A + xS -zG + \left(z\textbf{y}^n + z^2\textbf{2}^n\right)\textbf{H}' \\
& P = A + xS -z\textbf{G} + \left(z\textbf{y}^n + z^2\textbf{2}^n\right)\textbf{H}' \\
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

z is committed to via a single generator G. Whereas the vector (bolded)G is used as a shorthand. See eqns (2), (3), (4) earlier on.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you might be confusing the inner product proof (which has zG) with the range proof (which has z\vec{G}). We need z\vec{G} to extract a_L and a_R (see "Then consider coefficients of G:").

& P \stackrel{?}{=} \ \mu H + \textbf{lG} + \textbf{rH}' \\
\end{align*}

Expand Down Expand Up @@ -2334,7 +2334,7 @@
\textbf{Stage 1}: Openings of $\alpha, \rho, \textbf{a}_L, \textbf{a}_R, \textbf{s}_L, \textbf{s}_R$

Remembering that P is defined as $\mu H + \textbf{lG} + \textbf{rH}'$, and noting its construction by the
verifier as $P = A + xS -zG + \left(z\textbf{y}^n + z^2\textbf{2}^n\right)\textbf{H}'$, we will compare the two. For the first challenge $x_1$, this
verifier as $P = A + xS -z\textbf{G} + \left(z\textbf{y}^n + z^2\textbf{2}^n\right)\textbf{H}'$, we will compare the two. For the first challenge $x_1$, this
will look like:
\[P_1 = \mu_1 H + \textbf{l}_1\textbf{G} + \textbf{r}_1\textbf{H}' = A + x_1S -z\textbf{G} + (z\textbf{y}^n+z^2\textbf{2}^n)\textbf{H}'\]
Do likewise for $x_2$. Now consider the ``coefficients'' (recall the idea
Expand All @@ -2353,11 +2353,11 @@
And finally for $\mathbf{H}'$ (note that these curve points are fixed for fixed $y$, as
here):
\begin{align*}
& \textbf{l}_1 = \textbf{a}_R + x_1\textbf{s}_R +k \\
& \textbf{l}_2 = \textbf{a}_R + x_2\textbf{s}_R +k \\
& \textbf{r}_1 = \textbf{a}_R + x_1\textbf{s}_R +k \\
& \textbf{r}_2 = \textbf{a}_R + x_2\textbf{s}_R +k \\
&\textrm{solve:}\quad \textbf{a}_R, \textbf{s}_R \\
\end{align*}
where $k$ is just the remaining terms for $\mathbf{H}'$, and is constant.
where $k$ is just the remaining terms for $\mathbf{H}'$, which are constant.

Now we have explicit openings for $\alpha, \rho, \textbf{a}_L, \textbf{a}_R, \textbf{s}_L, \textbf{s}_R$.

Expand Down Expand Up @@ -2434,7 +2434,7 @@
the inner product proof were:
\begin{align*}
& \hat{t}G + \tau_x H \stackrel{?}{=} \quad z^2V + \delta(y, z) G + xT_1 + x^2T_2 \\
& A + xS -zG + \left(z\textbf{y}^n + z^2\textbf{2}^n\right)\textbf{H}' \stackrel{?}{=} \ \mu H + \textbf{lG} + \textbf{rH}' \\
& A + xS -z\textbf{G} + \left(z\textbf{y}^n + z^2\textbf{2}^n\right)\textbf{H}' \stackrel{?}{=} \ \mu H + \textbf{lG} + \textbf{rH}' \\
\end{align*}
Remember that the public commitment $V$ is only checked in the first of the
above two equations; so forging that equation successfully is the main
Expand All @@ -2445,7 +2445,7 @@
the commitment $P$, we can choose random $A, \mu, \textbf{l}, \textbf{r}$ in addition to the other random
values already mentioned, and ensure that $\hat{t} = \textbf{l}\cdot \textbf{r}$, and set the commitment $S$ to
value:
\[S = x^{-1}\left(\mu H + zG + \textbf{lG} + (\textbf{r} -z\textbf{y}^n -z^2\textbf{2}^n)\textbf{H}' -A\right)\]
\[S = x^{-1}\left(\mu H + z\textbf{G} + \textbf{lG} + (\textbf{r} -z\textbf{y}^n -z^2\textbf{2}^n)\textbf{H}' -A\right)\]
Then the transcript $((A, S^*), y, z, (T_1^*, T_2), x, (\hat{t}, \mu, \tau_x))$ will verify, where we use * to indicate calculated
values, and all other values are randomly selected, if we create
additional random vectors $\mathbf{l}, \mathbf{r}$ such that their dot product is $\hat{t}$.
Expand Down