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
The Proof-of stake protocol works in epochs of 32 slots, where each slot is 12 seconds long.
67
67
In each slot a proposer is chosen to propose a block thereby allowing the network to reach consensus on the state of the blockchain.
68
68
69
-
The proposer DoS attack is a type of attack that targets the block proposers making them unable to propose blocks.
70
-
An adversary can use the proposer DoS attack to prevent a proposer from receiving rewards, gotten from proposing a block, and increase their own rewards~\cite{EthereumSSLE2024}.
71
-
As a response to the proposer DoS attack, Ethereum has proposed a new protocol called Whisk~\cite{Whisk2024} as an attempt to mitigate the attack.
69
+
The proposer~\gls{dos} attack is a type of attack that targets the block proposers making them unable to propose blocks.
70
+
An adversary can use the proposer~\gls{dos} attack to prevent a proposer from receiving rewards, gotten from proposing a block, and increase their own rewards~\cite{EthereumSSLE2024}.
71
+
As a response to the proposer~\gls{dos} attack, Ethereum has proposed a new protocol called Whisk~\cite{Whisk2024} as an attempt to mitigate the attack.
72
72
An attack on the Ethereum network that was discovered by Heimbach et al.~\cite{heimbach2024deanonymizingethereumvalidatorsp2p} is the deanonymization attack on validators.
73
73
In our preliminary work~\cite{ouroldpaper}, we have shown that the attack is still possible to perform on the Ethereum network, and using the attack, a proposer~\gls{dos} can be performed.
74
74
75
75
76
-
Whisk is a zero-knowledge Single Secret Leader Election (SSLE) system that uses a zero-knowledge argument called Curdleproofs~\cite{Curdleproofs} to verify the correctness of a shuffle without revealing the input or output~\cite{10.1145/3419614.3423258}.
76
+
Whisk is a~\gls{zk}~\gls{ssle} system that uses a~\gls{zk} argument called Curdleproofs~\cite{Curdleproofs} to verify the correctness of a shuffle without revealing the input or output~\cite{10.1145/3419614.3423258}.
77
77
Whisk works by selecting a list of 16,384 validator trackers and shuffles them over 8,192 slots ($\sim$1 day).
78
78
Then 8,192 proposers are selected from the shuffled list to propose blocks for the next 8,192 slots while a new list is being shuffled.
79
79
This way a new list of proposers is created every day.
80
-
After each shuffle, Whisk uses a zero-knowledge proof to prove that the shuffle is correct.
80
+
After each shuffle, Whisk uses a~\gls{zkp} to prove that the shuffle is correct.
81
81
This is so that the proposer can prove that they are the correct proposer for the slot without revealing their identity, thereby mitigating the proposer~\gls{dos} attack because of the identity of the upcoming proposers being hidden now.
82
82
83
-
Curdleproofs is a zero-knowledge proof system that allows a prover to prove knowledge of a shuffle without revealing how it shuffled the elements.
84
-
It does so by using three different zero-knowledge proofs, with one of them relying on two more zero-knowledge proofs.
83
+
Curdleproofs is a~\gls{zkp} system that allows a prover to prove knowledge of a shuffle without revealing how it shuffled the elements.
84
+
It does so by using three different~\glspl{zkp}, with one of them relying on two more~\glspl{zkp}.
85
85
The overview can be seen in~\autoref{fig:curdleproof-protocol}.
To mask the ciphertexts, each prover, besides permuting the set, multiplies all ciphertexts by a scalar, $k$.
155
156
This is for randomization purposes, making it harder for adversaries to track the ciphertexts~\cite{Whisk2024}.
156
157
Also, all validators are still able to open their commitments if they are chosen as block proposers, even after several randomizations.
157
-
So, the goal of the Same Scalar argument is to prove the existence of the scalar,$k$, such that the commitment of the permuted set is equal to the commitment of the pre-permuted set multiplied by $k$.
158
+
So, the goal of the Same Scalar argument is to prove the existence of the scalar,~$k$, such that the commitment of the permuted set is equal to the commitment of the pre-permuted set multiplied by $k$.
Curdleproofs is a zero-knowledge proof system, which means that it allows a prover to convince a verifier that they know a secret without revealing the secret itself.
163
-
Within the context of Ethereum it could be the ability to convince someone that a transaction is valid without revealing information about the transaction such as the value of it.
163
+
Curdleproofs is a~\gls{zkp} system, which means that it allows a prover to convince a verifier that they know a secret without revealing the secret itself.
164
+
Within the context of Ethereum, it could be the ability to convince someone that a transaction is valid without revealing information about the transaction such as the value of it.
164
165
In Whisk, it uses Curdleproofs to prove the validity of a shuffle.
165
166
166
167
\begin{definition}[Zero-Knowledge Argument of Knowledge]
Definitions for knowledge-soundness, completeness, and~\gls{hvzk} can be found in~\autoref{sec:appendix}.
171
172
173
+
Two of the three proofs in Curdleproofs are~\glspl{ipa}.
174
+
These are also~\glspl{zkp}, and will be the focus of this paper.
175
+
Hence, we provide a definition on~\glspl{ipa}.
176
+
177
+
\begin{definition}[Inner Product Argument]
178
+
Takes as input two binding vector commitments $C=\mathbf{c}\times\mathbf{G}\in\mathbb{G}$ and $D=\mathbf{d}\times\mathbf{G'}\in\mathbb{G}$ to the vectors $\mathbf{c},\mathbf{d}\in\mathbb{Z}_p^n$ and $z\in\mathbb{Z}_p$.
179
+
The goal is to prove that $z=\mathbf{c}\times\mathbf{d}$.
180
+
The argument has logarithmic communication by halving the dimensions of $\mathbf{c}$ and $\mathbf{d}$ in each iteration.
\begin{lstlisting}[language=Python,mathescape=true,label={lst:schemefunc},numbers=right,caption={Scheme function \textbf{\textit{f}} used in CAAUrdleproofs},captionpos=b,frame=single]
27
+
\begin{lstlisting}[language=Python,mathescape=true,label={lst:schemefunc},numbers=left,caption={Scheme function \textbf{\textit{f}} used in CAAUrdleproofs},captionpos=b,frame=single]
The construction can be seen in~\autoref{lst:ipa-prover}.
68
68
69
69
\begin{figure}[!htb]
70
-
\begin{lstlisting}[language=Python,mathescape=true,label={lst:ipa-prover},numbers=right,caption={Prover computation for CAAU-IPA in CAAUrdleproofs},captionpos=b,frame=single]
71
-
$\textbf{Step 1:}$
70
+
\begin{lstlisting}[language=Python,mathescape=true,label={lst:ipa-prover},numbers=left,caption={Prover computation for CAAU-IPA in CAAUrdleproofs},captionpos=b,frame=single]
Again, the originally proposed verifying protocol has been modified according to Springproofs, which is seen in~\autoref{lst:ipa-verifier}.
150
150
151
151
\begin{figure}[!htb]
152
-
\begin{lstlisting}[language=Python,mathescape=true,label={lst:ipa-verifier},numbers=left,caption={Verifier computation for CAAU-IPA in CAAUrdleproofs},captionpos=b,frame=single]
153
-
$\textbf{Step 1:}$
152
+
\begin{lstlisting}[language=Python,mathescape=true,label={lst:ipa-verifier},numbers=right,caption={Verifier computation for CAAU-IPA in CAAUrdleproofs},captionpos=b,frame=single]
\begin{lstlisting}[language=Python,mathescape=true,label={lst:ipa-verifier-optimized},numbers=left,caption={Optimized verifier computation for CAAU-IPA in CAAUrdleproofs},captionpos=b,frame=single]
0 commit comments