Skip to content

Commit abb6018

Browse files
authored
Merge pull request #4 from AAU-Dat/Related-work
Related work
2 parents f7c964d + d2e1953 commit abb6018

13 files changed

+179
-10
lines changed

report/src/bib/main.bib

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,72 @@ @article{greenwade1993
1717
volume = "14",
1818
number = "3",
1919
pages = "342--351"
20+
}
21+
22+
@article{Whisk2024,
23+
title = {Whisk: A practical shuffle-based SSLE protocol for Ethereum},
24+
author = {George Kadianakis},
25+
year = {2024},
26+
note = {Accessed: 22-10-2024},
27+
url = {https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763}
28+
}
29+
30+
@misc{cryptoeprint:2022/560,
31+
author = {Kasper Green Larsen and Maciej Obremski and Mark Simkin},
32+
title = {Distributed Shuffling in Adversarial Environments},
33+
howpublished = {Cryptology {ePrint} Archive, Paper 2022/560},
34+
year = {2022},
35+
url = {https://eprint.iacr.org/2022/560}
36+
}
37+
38+
@inproceedings{bunz2018bulletproofs,
39+
title={Bulletproofs: Short proofs for confidential transactions and more},
40+
author={B{\"u}nz, Benedikt and Bootle, Jonathan and Boneh, Dan and Poelstra, Andrew and Wuille, Pieter and Maxwell, Greg},
41+
booktitle={2018 IEEE symposium on security and privacy (SP)},
42+
pages={315--334},
43+
year={2018},
44+
organization={IEEE}
45+
}
46+
47+
@article{chung2022bulletproofs+,
48+
title={Bulletproofs+: Shorter proofs for a privacy-enhanced distributed ledger},
49+
author={Chung, Heewon and Han, Kyoohyung and Ju, Chanyang and Kim, Myungsun and Seo, Jae Hong},
50+
journal={Ieee Access},
51+
volume={10},
52+
pages={42081--42096},
53+
year={2022},
54+
publisher={IEEE}
55+
}
56+
57+
@inproceedings{zhang2024springproofs,
58+
title={Springproofs: Efficient inner product arguments for vectors of arbitrary length},
59+
author={Zhang, Jianning and Su, Ming and Liu, Xiaoguang and Wang, Gang},
60+
booktitle={2024 IEEE Symposium on Security and Privacy (SP)},
61+
pages={3147--3164},
62+
year={2024},
63+
organization={IEEE}
64+
}
65+
66+
@inproceedings{eagen2024bulletproofs++,
67+
title={Bulletproofs++: Next generation confidential transactions via reciprocal set membership arguments},
68+
author={Eagen, Liam and Kanjalkar, Sanket and Ruffing, Tim and Nick, Jonas},
69+
booktitle={Annual International Conference on the Theory and Applications of Cryptographic Techniques},
70+
pages={249--279},
71+
year={2024},
72+
organization={Springer}
73+
}
74+
75+
@article{Curdleproofs,
76+
title = {Curdleproofs},
77+
author = {The Ethereum Foundation Cryptography Research Team},
78+
note = {Accessed: 24-04-2025},
79+
url = {https://github.com/asn-d6/curdleproofs/blob/main/doc/curdleproofs.pdf}
80+
}
81+
82+
@misc{cryptoeprint:2016/263,
83+
author = {Jonathan Bootle and Andrea Cerulli and Pyrros Chaidos and Jens Groth and Christophe Petit},
84+
title = {Efficient Zero-Knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting},
85+
howpublished = {Cryptology {ePrint} Archive, Paper 2016/263},
86+
year = {2016},
87+
url = {https://eprint.iacr.org/2016/263}
2088
}

report/src/main.tex

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
\maketitle
1717
\input{sections/00-abstract}
1818
\input{sections/01-introduction}
19-
\input{sections/02-background}
20-
\input{sections/04-experimental-protocol}
21-
\input{sections/05-results}
22-
\input{sections/06-discussion}
23-
\input{sections/07-conclusion}
24-
\input{sections/08-future-works}
25-
\input{sections/09-acknowledgements}
19+
\input{sections/02-related-work}
20+
\input{sections/03-background}
21+
\input{sections/04-approach}
22+
\input{sections/05-experimental-protocol}
23+
\input{sections/06-results}
24+
\input{sections/07-discussion}
25+
\input{sections/08-conclusion}
26+
\input{sections/09-future-works}
27+
\input{sections/10-acknowledgements}
2628

2729
\clearpage
2830
%\printglossary[type=\acronymtype]

report/src/sections/02-background.tex

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
\section{Related Work}\label{sec:related-work}
2+
3+
4+
5+
6+
\subsection{Whisk}\label{sec:related-work-whisk}
7+
Ethereum currently has an improvement proposal suggesting the implementation of a protocol called Whisk~\cite{Whisk2024}.
8+
Whisk is a zero-knowledge Single secret leader election (SSLE) system that Through a zero-knowledge argument called curdleproofs~\cite{Curdleproofs} allows for the verification of the correctness of a shuffle without revealing the input or output.
9+
It is based on the concept of inner product arguments and does not require a honest setup.
10+
It uses elliptic curve cryptography based on the BLS12-381 curve to achieve its goals.
11+
12+
Whisk is designed to be efficient and scalable, making it suitable for use in Ethereum and other blockchain systems.
13+
Whisk is one of the suggested solutions to attacks on the Ethereum network targeting block proposers.
14+
With the help of the zero-knowledge proofs, Whisk helps making the previous public proposer list and order into a system where only the proposer can see if it is their turn to propose a block, and they can proof that to be the case.
15+
16+
17+
18+
\subsection{Shuffling algorithm}\label{sec:related-work-Shuffling-algorithm}
19+
The shuffling algorithm used in curdleproofs has gone though many iterations and improvements in order to increase speed and reduce the size the proof.
20+
This is because the proposer has a limited amount of time to propose a block in each slot, and the addition of the proof to the protocol increases the size of the block the proposers have to create.
21+
This is the reason why the current implementation of curdleproofs has chosen the shuffling algorithm~\cite{cryptoeprint:2022/560} proposed by Larsen et al.
22+
23+
The way the shuffle works is by selecting 2 days' worth of proposers, and then shuffling the proposers over one day's worth of slots to create a new list of proposers for the following day.
24+
In each slot a subset of the proposers are shuffled, and the rest are left unchanged.
25+
26+
Though experiments Larsen et al. has shown that after enough shuffles becomes secrue even in adversarial environments.
27+
They also surgests that their may be room to lower the size of the subsets chosen in each lot without losing the security of the shuffle.
28+
Thereby increasing the speed of the shuffle and reducing the size of the proof being added to the blockchain.
29+
30+
\subsection{Bulletproofs}\label{sec:related-work-bulletproofs}
31+
A big inspiration for the curdleproofs protocol is the use of bulletproofs~\cite{bunz2018bulletproofs}.
32+
Bulletproofs is a type of range proof that uses inner product arguments to prove that a committed value is within a certain range without revealing the value itself.
33+
Bulletproofs is in itself not a zero-knowledge proof system, but with the help of Fiat Shamir~\cite{bunz2018bulletproofs} it can be used to create a zero-knowledge proof.
34+
Bulletproofs also has had a few iterations and improvements to increase the speed and reduce the size of the proof since it was used in curdleproofs.
35+
One of these is Bulletproofs+~\cite{chung2022bulletproofs+} which is a new version of bulletproof that uses a weighted inner product argument instead of the standard inner product argument to achieve a better performance.
36+
Bulletproofs+ is also different because it is zero-knowledge proof by itself unlike the original bulletproofs.
37+
A third version of the bulletproofs is Bulletproofs++~\cite{eagen2024bulletproofs++} which is a even newer version of bulletproofs that uses a new type of argument called the norm argument to achieve a better performance.
38+
Unlike the two other proofs Bulletproofs++ is a binary range proof, which means that even if it is the fastest proof it is not suitable for the curdleproofs protocol due to the binary nature of the bulletproofs++.

report/src/sections/03-background.tex

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
\section{Background}\label{sec:background}
3+
4+
5+
\subsection{Notation}\label{sec:background-notation}
6+
7+
8+
9+
10+
\subsection{Zero-knowledge proofs}\label{sec:background-zkps}
11+
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.
12+
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.
13+
14+
15+
16+
17+
\subsection{Springproofs}\label{sec:background-springproofs}
18+
Springproofs~\cite{zhang2024springproofs} is an inner product argument that aims to allow a more flexible and efficient way of creating zero-knowledge proofs by avoiding the need for papping when working with inputs that are not of the size of power of 2.
19+
20+
Currently, the way to work with inner product arguments is to either only work with input sets that have the size of a power of 2, or to pad the input to the size of the next power of 2.
21+
This leads to either forcing the prover to work with regied sizes of input sets, or to pad the input with zeros slowing down the process and forcing the prover to work with larger sets than necessary.
22+
23+
Springproofs is a new type of inner product argument that allows for the use of arbitrary sized input sets without the need for padding.
24+
25+

report/src/sections/04-Approach.tex

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
\section{approach}\label{sec:approach}
2+
3+
4+
\subsection{Shuffle security}\label{sec:approach-shuffle-security}
5+
The shuffle method proposed by Larsen et al.~\cite{cryptoeprint:2022/560} that was used in curdleproofs is based on the idea of shuffling a list of proposers over a set of slots.
6+
The shuffle itself however is not too complex.
7+
A formal definition of the shuffle is given in~\autoref{fig:shuffle}.
8+
9+
\begin{figure}[ht]\label{fig:shuffle}
10+
11+
\begin{framed}
12+
\[
13+
\Pi(c_1, \ldots, c_n)
14+
\]
15+
\rule{\linewidth}{0.4pt}
16+
17+
\noindent
18+
\textbf{for} $t \in [T]$ \textbf{:}
19+
\begin{itemize}
20+
\item[$S_t$] picks random $\{i_1, \ldots, i_k\} \subset [n]$
21+
\item[$S_t$] computes $(\tilde{c}_{i_1}, \ldots, \tilde{c}_{i_k}) \leftarrow \text{Shuffle}(c_{i_1}, \ldots, c_{i_k})$
22+
\item[$S_t$] publishes $(\tilde{c}_{i_1}, \ldots, \tilde{c}_{i_k})$
23+
\end{itemize}
24+
\end{framed}
25+
\caption{Distributed shuffling protocol.}
26+
\end{figure}
27+
28+
Here the set $(c_1, \ldots, c_n)$ is a set of ciphertexts that are shuffled over $T$ slots.
29+
30+
\subsection{Springproofs}\label{sec:approach-springproofs}
31+
32+
33+
34+
\subsection{implementation}\label{sec:approach-implementation}
35+
36+

0 commit comments

Comments
 (0)