diff options
author | Antoine A <> | 2022-09-19 00:11:58 +0200 |
---|---|---|
committer | Antoine A <> | 2022-09-19 00:11:58 +0200 |
commit | 9cdf73e4a123314654e8a9a7f56b7b0edc9d8cd6 (patch) | |
tree | 4bb003cb7c085a34c440dd65a57153275b5c27bd /pres-brains22/presentation.tex | |
parent | 9631a533eeca6c0c36887832665f2ac14bd60615 (diff) | |
download | depolymerization-9cdf73e4a123314654e8a9a7f56b7b0edc9d8cd6.tar.gz depolymerization-9cdf73e4a123314654e8a9a7f56b7b0edc9d8cd6.tar.bz2 depolymerization-9cdf73e4a123314654e8a9a7f56b7b0edc9d8cd6.zip |
BRAINS2022 presentation draft
Diffstat (limited to 'pres-brains22/presentation.tex')
-rw-r--r-- | pres-brains22/presentation.tex | 448 |
1 files changed, 448 insertions, 0 deletions
diff --git a/pres-brains22/presentation.tex b/pres-brains22/presentation.tex new file mode 100644 index 0000000..72050a1 --- /dev/null +++ b/pres-brains22/presentation.tex @@ -0,0 +1,448 @@ +\documentclass{beamer} + +\usepackage{tikz} +\usepackage{ragged2e} + +\apptocmd{\frame}{}{\justifying}{} + +\usetikzlibrary{positioning,fit,patterns} + +\title{Depolymerization} +\subtitle{Integrating GNU Taler with blockchain-based cryptocurrencies} +\author{Antoine d'Aligny} +\institute{Bern University of Applied Sciences} +\date{\today} +\titlegraphic{\includegraphics[width=2.5cm]{../docs/media/taler.png}} + + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame}{GNU Taler}{Overview} + \begin{columns} + \column{0.5\paperwidth} + \begin{tikzpicture}[ + rect/.style={circle, draw=black}, + sym/.style={-stealth, shorten >= 2pt, shorten <= 2pt} + ] + % Taler payment system + \node[rect](1) {Exchange}; + \node[rect,below left=1.5cm and 0.7cm of 1](2) {Customer}; + \node[rect,below right=1.5cm and 0.7cm of 1](3) {Merchant}; + + \draw[sym] (1) -- node [midway, above, sloped] {\tiny Withdraw coins} (2); + \draw[sym] (2) -- node [midway, above, sloped] {\tiny Spend coins} (3); + \draw[sym] (3) -- node [midway, above, sloped] {\tiny Deposit coins} (1); + + % Settlement layer + \node[left=2cm of 1](E1){}; + \node[right=2cm of 1](E2){}; + \draw[sym] (E1) -- node [midway, above] {\tiny Deposit money} (1); + \draw[sym] (1) -- node [midway, above] {\tiny Withdraw money} (E2); + + % Auditor + \node[above= of 1](A){Auditor}; + \draw[sym] (A) -- node [midway, right] {\tiny Verify} (1); + + % Separator + \node[below=1mm of E1] (S1S) {}; + \node[below=1mm of E2] (S1E) {}; + \node[above=6mm of E1] (S2S) {}; + \node[above=6mm of E2] (S2E) {}; + + \draw[dotted] (S1S) -- (S1E); + \draw[dotted] (S2S) -- (S2E); + + \node[below right=-2mm and -1.5mm of S2S] {\tiny{\emph{Settlement Layer}}}; + \node[below right=-2mm and -1.5mm of S1S] {\tiny{\emph{Taler payment system}}}; + \end{tikzpicture} + \column{0.47\paperwidth} + + + \begin{block}{Taler payment system} + \begin{itemize} + \item Tokenization + \item Blind signatures (privacy) + \end{itemize} + \end{block} + \begin{block}{Settlement layer} + \begin{itemize} + \item Designed for fiat currencies + \item BTC and ETH ? + \end{itemize} + \end{block} + \end{columns} +\end{frame} + +\begin{frame}{GNU Taler}{Blockchain settlement layer} + \begin{center} + \begin{tikzpicture}[ + rect/.style={rectangle, draw=black, minimum width=30mm}, + sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt}, + block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, + ] + + %% Architecture + \node(Tt){Taler}; + \node[rect,below=0cm of Tt](Tc){Exchange}; + \node[rect,fit={(Tt) (Tc)}](T){}; + + \node[rect,below=7mm of Tc](D) {\textbf{Depolymerization}}; + + \node[rect,below=7mm of D](Bc){Node}; + \node[below=0cm of Bc](Bt){Blockchain}; + \node[rect,fit={(Bt) (Bc)}](B){}; + + \draw[sym] (T) -- (D); + \draw[sym] (D) -- (B); + + %% Blockchain + \node[block,right=8mm of B] (1){}; + \node[block,right=4mm of 1] (2){}; + \node[block,right=4mm of 2] (3){}; + \node[block,right=4mm of 3] (4){}; + \node[block,right=4mm of 4] (5){}; + \node[block,right=4mm of 5] (6){}; + \draw[-stealth] (1) -- (2); + \draw[-stealth] (2) -- (3); + \draw[-stealth] (3) -- (4); + \draw[-stealth] (4) -- (5); + \draw[-stealth] (5) -- (6); + + \node[left=4mm of 1] (S){}; + \node[right=4mm of 6] (E){}; + \draw[-stealth] (S) -- (1); + \draw[-stealth] (6) -- (E); + + %% Taler + \node[block, below right=-7.5mm and 20.5mm of T] (off){Off-chain transactions}; + \node[above=-0.5mm of off] {\includegraphics[height=7mm]{../docs/media/taler.png}}; + + %% Depolymerization + \node[right=12mm of D] {\small{Credit}}; + \node[right=55mm of D] {\small{Debit}}; + \draw[dashed,-stealth] (1.north) |- (off.west); + \draw[dashed,-stealth] (off.east) -| (6.north); + + %% Separation + \draw[dotted] (-2.1,-1.3) -- (9,-1.3); + \draw[dotted] (-2.1,-2.5) -- (9,-2.5); + \end{tikzpicture} + \end{center} +\end{frame} + +\begin{frame}{Blockchain-based cryptocurrencies}{What is a blockchain?} + \begin{center} + \begin{tikzpicture}[ + block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, + ar/.style={-stealth}, + nconf/.style={dotted}, + ] + \node[block](1){}; + \node[block,right=5mm of 1](2){$T_0$}; + \node[block,right=5mm of 2](3){}; + \node[block,right=5mm of 3](4){$T_1$}; + \node[block,right=5mm of 4](5){}; + \node[block,right=5mm of 5](6){}; + \node[block,nconf,right=5mm of 6](7){$T_2$}; + \draw[ar] (1) -- (2); + \draw[ar] (2) -- (3); + \draw[ar] (3) -- (4); + \draw[ar] (4) -- (5); + \draw[ar] (5) -- (6); + \draw[ar] (6) -- (7); + \end{tikzpicture} + \end{center} + \begin{center} + Append-only database composed of a list of linked blocks + \end{center} +\end{frame} + +\begin{frame}{Blockchain-based cryptocurrencies}{Distributed Ledger} + \begin{center} + \begin{tikzpicture}[ + block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, + ar/.style={-stealth}, + pink/.style={draw=teal, fill=teal!10}, + tan/.style={draw=orange, fill=orange!10}, + blue/.style={draw=magenta, fill=magenta!10}, + node/.style={circle, minimum size=7mm}, + ] + % Common + \node[block](2){}; + \node[block,right=5mm of 2](3){}; + \node[block,pink,right=5mm of 3](4){}; + \draw[ar] (2) -- (3); + \draw[ar] (3) -- (4); + + % Center + \node[block,pink,right=5mm of 4](5){B}; + \draw[ar] (4) -- (5); + + % Top + \node[block,blue,above=7mm of 5](5t){A}; + \draw[ar] (4.east) -- (5t.west); + + % Bottom + \node[block,tan,below=7mm of 4](4b){}; + \node[block,tan,below=7mm of 5](5b){C}; + \draw[ar] (3.east) -- (4b.west); + \draw[ar] (4b) -- (5b); + + % Network + \node[node,blue,above left=0.1cm and 2cm of 2](A) {A}; + \node[node,pink,below left=1cm and 0.45cm of A](B) {B}; + \node[node,tan,below right=1cm and 0.45cm of A](C) {C}; + \draw (A) -- (B); + \draw (B) -- (C); + \draw (C) -- (A); + \end{tikzpicture} + \begin{center} + Peer-to-peer network of nodes reaching consensus + \end{center} + \end{center} +\end{frame} + +\begin{frame}{Blockchain-based cryptocurrencies}{Consensus protocol} + \begin{itemize} + \item Enforce a delay between blocks + \item Require coordinated effort to create new block + \item The longest chain is the consensus + \end{itemize} + \begin{columns} + \column{0.4\paperwidth} + \begin{block}{\textbf{BTC} Bitcoin} + \begin{itemize} + \item Proof of Work + \item new block every 10 min + \item 4 txs per sec + \end{itemize} + \end{block} + \column{0.4\paperwidth} + \begin{block}{\textbf{ETH} Ethereum} + \begin{itemize} + \item Proof of Stake + \item new block every 12 sec + \item 14 txs per sec + \end{itemize} + \end{block} + \end{columns} +\end{frame} + + +\begin{frame}{Distributed Ledger limitations}{Chain reorganization} + \begin{center} + \begin{tikzpicture}[ + block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, + nconf/.style={dotted,fill=none}, + replaced/.style={pattern=north east lines,draw=black!60,fill opacity=0.3}, + err/.style={draw=black!60!red,fill=black!60!red!10,dashed}, + ar/.style={-stealth} + ] + % Common + \node[block](2){}; + \node[block,right=5mm of 2](3){}; + \draw[ar] (2) -- (3); + + % Current + \only<-2>{ + \node[block,right=5mm of 3](4){}; + \node[block,right=5mm of 4](5){$T$}; + \node[block,nconf,right=5mm of 5](6){}; + \draw[ar] (5) -- (6); + } + \only<3->{ + \node[block,replaced,right=5mm of 3](4){}; + \node[block,replaced,right=5mm of 4](5){$T$}; + } + \draw[ar] (3) -- (4); + \draw[ar] (4) -- (5); + + + \only<2->{ + % Fork + \node[block,above=7mm of 4](4p){}; + \only<-3>{ + \node[block,right=5mm of 4p](5p){}; + } + \only<4->{ + \node[block,err,right=5mm of 4p](5p){$T'$}; + } + \node[block,right=5mm of 5p](6p){}; + \node[block,nconf,right=5mm of 6p](7p){ + \only<3>{$T$} + }; + \draw[ar] (3.east) -- (4p.west); + \draw[ar] (4p) -- (5p); + \draw[ar] (5p) -- (6p); + \draw[ar] (6p) -- (7p); + } + + % Indication + \only<2->{ + \node [right=2mm of 7p]{\emph{ + \only<2>{ + new + } + \only<3->{ + active + } + }}; + } + \node [right=14mm of 6]{\emph{ + \only<-2>{ + active + } + \only<3->{ + fork + } + }}; + \end{tikzpicture} + \end{center} + \begin{center} + \only<1>{ + We have a chain with an important transaction + } + \only<2>{ + We may discover a new longer chain + } + \only<3>{ + The important transaction is now pending + } + \only<4>{ + A conflict can invalidate the transaction + } + \end{center} +\end{frame} + +\begin{frame}{Distributed Ledger limitations}{Confirmation delay} + \begin{center} + \begin{tikzpicture}[ + block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, + conf/.style={draw=black!60!green,fill=black!60!green!10}, + nconf/.style={dotted}, + err/.style={draw=black!60!red,fill=black!60!red!10}, + ar/.style={-stealth} + ] + % Common + \node[block,conf](2){}; + \node[block,conf,right=5mm of 2](3){$T_0$}; + \draw[ar] (2) -- (3); + + % Current + \only<1>{ + \node [block,nconf,right=5mm of 3](4){}; + } + \only<2->{ + \node [block,conf,right=5mm of 3](4){\only<3>{$T_3$}}; + } + \node[block,nconf,right=5mm of 4](5){}; + \node[block,nconf,right=5mm of 5](6){$T_1$}; + \draw[ar] (3) -- (4); + \draw[ar] (4) -- (5); + \draw[ar] (5) -- (6); + + % Fork + \only<-2>{ + \node [block,nconf,above=7mm of 4](4p){}; + } + \only<3>{ + \node [block,dashed,err,above=7mm of 4](4p){$T_3'$}; + } + \node[block,nconf,right=5mm of 4p](5p){$T_2$}; + \node[block,nconf,right=5mm of 5p](6p){}; + \node[block,nconf,right=5mm of 6p](7p){}; + \draw[ar] (3.east) -- (4p.west); + \draw[ar] (4p) -- (5p); + \draw[ar] (5p) -- (6p); + \draw[ar] (6p) -- (7p); + + % Indication + \node [right=5mm of 7p]{\emph{new}}; + \node [right=17mm of 6]{\emph{active}}; + \end{tikzpicture} + \end{center} + \begin{center} + \only<1>{Confirmation delay} + \only<2>{Handling harmless reorganizations} + \only<3>{Handling harmful reorganizations} + \end{center} +\end{frame} + +\begin{frame}{Distributed Ledger limitations}{Stuck transactions} + \begin{block}{Transaction fees} + \begin{itemize} + \item Block production incentive + \item Variable by design + \end{itemize} + \end{block} + \begin{center} + \begin{tikzpicture}[ + dot/.style={circle,fill,inner sep=1pt,} + ] + \node (I) {\includegraphics[width=\textwidth]{../docs/media/fee.png}}; + \node [below left=-2.5mm and -1.5cm of I] (Tx) {\small Tx}; + \node [dot,above=8.4mm of Tx](D) {}; + \draw [dotted,thick] (Tx) -- (D); + \node [left=-4.5cm of Tx] (C) {\small conf}; + \node [dot,above=8.4mm of C](D1) {}; + \draw [dotted,thick] (C) -- (D1); + \end{tikzpicture} + \end{center} + \begin{center} + Stuck transactions caused by transaction fees being a market-based value + \end{center} +\end{frame} + +\begin{frame}{Incompatible amount} + GNU Taler amount follow RFC 8905: $2^{53}$ unit and 8 decimal digits + \begin{block}{\textbf{BTC} Bitcoin} + \begin{itemize} + \item 1 satoshi = $10^{-8}$ BTC + \item capped at 21 000 000 BTC + \item Fit perfectly + \end{itemize} + \end{block} + \begin{block}{\textbf{ETH} Ethereum} + \begin{itemize} + \item 1 wei = $10^{-18}$ ETH + \item actually more than 120 580 000 without cap + \item average fee: 21 000 * 14 = 294 000 Gwei or 0.000295 ETH + \item truncated at $10^{-8}$ ETH it can still contain any amount you can send without losing money + \end{itemize} + \end{block} +\end{frame} + + +\begin{frame}{Conclusion} + Distributed Ledgers can be used as a settlement layer for GNU Taler + with Depolymerizer. + + \begin{itemize} + \item [$-$] Trust exchange operators or auditors + \item [$+$] Fast and cheap + \item [$+$] Realtime, ms latency + \item [$+$] Linear scalability + \item [$+$] Ecological + \item [$+$] Privacy when it can, transparency when it must (avoid tax evasion and money laundering) + \end{itemize} +\end{frame} + +\begin{frame}{Conclusion}{Future work} + \begin{itemize} + \item Wallet-to-wallet payments are WIP + \item Legal concerns around known-your-customer with cryptocurrencies + \end{itemize} + + \begin{block}{Availability} + An experimental public Depolymerization exchange is available at + \url{https://bitcoin.ice.bfh.ch/}. To use the service, one only needs + to install a GNU Taler wallet from \url{https://wallet.taler.net/} and + instruct it to use this exchange to withdraw coins. + \end{block} +\end{frame} + +\end{document} |