summaryrefslogtreecommitdiff
path: root/pres-brains22/presentation.tex
diff options
context:
space:
mode:
authorAntoine A <>2022-09-19 00:11:58 +0200
committerAntoine A <>2022-09-19 00:11:58 +0200
commit9cdf73e4a123314654e8a9a7f56b7b0edc9d8cd6 (patch)
tree4bb003cb7c085a34c440dd65a57153275b5c27bd /pres-brains22/presentation.tex
parent9631a533eeca6c0c36887832665f2ac14bd60615 (diff)
downloaddepolymerization-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.tex448
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}