-
Notifications
You must be signed in to change notification settings - Fork 2
/
intro.tex
23 lines (18 loc) · 3.5 KB
/
intro.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
\section{Introduction}
Cryptocurrencies have seen a significant increase in usage in recent years. In 2008, Bitcoin was introduced to the world~\cite{bitcoin}.
Along with the whitepaper, a piece of software implementing the cryptocurrency was released that contained a single user-facing application---the wallet. The wallet allowed users to interact with the cryptocurrency, to send it to others and receive it. For a while it seemed that money transfer between individuals was the sole purpose of a cryptocurrency. With the rise of applications such as Colored Coins~\cite{coloredcoins} built on top of Bitcoin, and ultimately Ethereum~\cite{buterin,wood2014ethereum}, wallets had to fill more roles than just money transfer. However, looking at the majority of wallets in the wild today, money transfer between individuals appears to remain their central role.
Wallets on the surface seem relatively unchanged throughout the years. Their user interface is usually simple and intuitive, and nowadays they are ubuquitous. There exist desktop wallets, mobile wallets, and hardware wallets. With the plethora of cryptocurrencies coming to exist in the recent years, many solutions have been developed to support them.
Due to the multitude of supported platforms for wallets, and the requirements for efficiency and ease of use, wallet developers have devised different ways of implementing them.
Usability is one of the most important obstacles in the adoption of cryptocurrencies~\cite{meiklejohn2018top}.
One of the main problems wallet developers have been faced with is the blockchain size~\cite{meiklejohn2018top,sok}. Simple Payment Verification (SPV), originally mentioned in the Bitcoin whitepaper~\cite{bitcoin} has been frequently leveraged in order to build wallets which are light on storage and network communication. Some very popular wallets are based on it, but the nuances of each of these protocols are hard to find and do not appear in literature.
With the advent of Ethereum and its account model, new ways of designing wallets appeared that also have not made their appearance in literature. Finally, private cryptocurrencies such as ZCash and Monero have appeared in recent years, for which different wallets have been built. The techniques and challenges faced by these wallets differ from the ones already discussed, but also do not appear in literature.
Unfortunately until today no exposition of all proposed solutions exists. This has led to wallets in the market that may be insecure or have varying assumptions that may seem unlikely.
\paragraph{Our contributions.} In this work, we:
\begin{itemize}
\item Define the purpose of a cryptocurrency wallet: to create and broadcast valid transactions, to know the balance and to know the transaction history in~\cref{model}.
\item Provide detailed descriptions of how wallets in practice work for transparent cryptocurrencies in both the UTXO (\cref{transparent-utxo}) and account (\cref{transparent-account}) models.
\item Describe existing solutions for wallets for private cryptocurrencies in the UTXO model in~\cref{privacy}.
\item Define for the first time the functionality of superlight clients, which are commonly conflated with superlight wallets in~\cref{superlight}.
\item Provide constructions for superlight wallets based on a superlight client for transparent (\cref{superlight-ideal}) and private (\cref{superlight-private}) cryptocurrencies.
\item Compare all wallet protocols on their performance and security characteristics in~\cref{comparison}.
\end{itemize}