depolymerization

wire gateway for Bitcoin/Ethereum
Log | Files | Refs | Submodules | README | LICENSE

presentation.tex (10691B)


      1 \documentclass[aspectratio=169]{beamer}
      2 \usepackage{tikz}
      3 \usepackage{ragged2e}
      4 
      5 \apptocmd{\frame}{}{\justifying}{}
      6 
      7 \usetikzlibrary{positioning,fit,patterns}
      8 
      9 \title{Depolymerization}
     10 \subtitle{Integrating GNU Taler with blockchain-based cryptocurrencies}
     11 \author{ Antoine d'Aligny \and Emmanuel Benoist \and Christian Grothoff}
     12 \institute{Bern University of Applied Sciences}
     13 \date{\today}
     14 \titlegraphic{\includegraphics[width=2.5cm]{../docs/media/taler.png}}
     15 
     16 
     17 \begin{document}
     18 
     19 \begin{frame}
     20     \titlepage
     21 \end{frame}
     22 
     23 \begin{frame}{GNU Taler}{Overview}
     24     \begin{tikzpicture}[remember picture,overlay]
     25         \node (N1)[above right=22mm and 56mm of current page.center]    {\includegraphics[width=18mm]{./google_play_GNU_Taler.jpg}};
     26         \node [below=-2mm of N1]{wallet.taler.net};
     27     \end{tikzpicture}
     28     \begin{columns}
     29         \column{0.5\textwidth}
     30         \begin{tikzpicture}[
     31                 rect/.style={circle, draw=black},
     32                 sym/.style={-stealth, shorten >= 2pt, shorten <= 2pt}
     33             ]
     34             % Taler payment system
     35             \node[rect](1) {Exchange};
     36             \node[rect,below left=1.5cm and 0.7cm of 1](2) {Customer};
     37             \node[rect,below right=1.5cm and 0.7cm of 1](3) {Merchant};
     38 
     39             \draw[sym] (1) -- node [midway, above, sloped] {\tiny Withdraw coins} (2);
     40             \draw[sym] (2) -- node [midway, above, sloped] {\tiny Spend coins} (3);
     41             \draw[sym] (3) -- node [midway, above, sloped] {\tiny Deposit coins} (1);
     42 
     43             % Settlement layer
     44             \node[left=2cm of 1](E1){};
     45             \node[right=2cm of 1](E2){};
     46             \draw[sym] (E1) -- node [midway, above] {\tiny Deposit money} (1);
     47             \draw[sym] (1) -- node [midway, above] {\tiny Withdraw money} (E2);
     48 
     49             % Auditor
     50             \node[above= of 1](A){Auditor};
     51             \draw[sym] (A) -- node [midway, right] {\tiny Verify} (1);
     52 
     53             % Separator
     54             \node[below=1mm of E1] (S1S) {};
     55             \node[below=1mm of E2] (S1E) {};
     56             \node[above=6mm of E1] (S2S) {};
     57             \node[above=6mm of E2] (S2E) {};
     58 
     59             \draw[dotted] (S1S) -- (S1E);
     60             \draw[dotted] (S2S) -- (S2E);
     61 
     62             \node[below right=-2mm and -1.5mm of S2S] {\tiny{\emph{Settlement Layer}}};
     63             \node[below right=-2mm and -1.5mm of S1S] {\tiny{\emph{Taler payment system}}};
     64         \end{tikzpicture}
     65         \column{0.47\paperwidth}
     66        
     67         
     68         \begin{block}{Taler payment system}
     69             \begin{itemize}
     70                 \item Tokenization
     71                 \item Blind signatures (privacy)
     72             \end{itemize}
     73         \end{block}
     74         \begin{block}{Settlement layer}
     75             \begin{itemize}
     76                 \item Designed for fiat currencies
     77                 \item  BTC and ETH ?
     78             \end{itemize}
     79         \end{block}
     80     \end{columns}
     81 \end{frame}
     82 
     83 \begin{frame}{GNU Taler}{Blockchain settlement layer}
     84     \begin{tikzpicture}[remember picture,overlay]
     85         \node (N1)[above right=22mm and 56mm of current page.center]    {\includegraphics[width=18mm]{./google_play_GNU_Taler.jpg}};
     86         \node [below=-2mm of N1]{wallet.taler.net};
     87     \end{tikzpicture}
     88     \begin{center}
     89         \begin{tikzpicture}[
     90             rect/.style={rectangle, draw=black, minimum width=30mm},
     91             sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt},
     92             block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
     93         ]
     94     
     95         %% Architecture
     96         \node(Tt){Taler};
     97         \node[rect,below=0cm of Tt](Tc){Exchange};
     98         \node[rect,fit={(Tt) (Tc)}](T){};
     99     
    100         \node[rect,below=7mm of Tc](D) {\textbf{Depolymerization}};
    101     
    102         \node[rect,below=7mm of D](Bc){Node};
    103         \node[below=0cm of Bc](Bt){Blockchain};
    104         \node[rect,fit={(Bt) (Bc)}](B){};
    105     
    106         \draw[sym] (T) -- (D);
    107         \draw[sym] (D) -- (B);
    108     
    109         %% Blockchain
    110         \node[block,right=8mm of B] (1){};
    111         \node[block,right=4mm of 1] (2){};
    112         \node[block,right=4mm of 2] (3){};
    113         \node[block,right=4mm of 3] (4){};
    114         \node[block,right=4mm of 4] (5){};
    115         \node[block,right=4mm of 5] (6){};
    116         \draw[-stealth] (1) -- (2);
    117         \draw[-stealth] (2) -- (3);
    118         \draw[-stealth] (3) -- (4);
    119         \draw[-stealth] (4) -- (5);
    120         \draw[-stealth] (5) -- (6);
    121     
    122         \node[left=4mm of 1] (S){};
    123         \node[right=4mm of 6] (E){};
    124         \draw[-stealth] (S) -- (1);
    125         \draw[-stealth] (6) -- (E);
    126     
    127         %% Taler
    128         \node[block, below right=-7.5mm and 20.5mm of T] (off){Off-chain transactions};
    129         \node[above=-0.5mm of off] {\includegraphics[height=7mm]{../docs/media/taler.png}};
    130     
    131         %% Depolymerization
    132         \node[right=12mm of D] {\small{Credit}};
    133         \node[right=55mm of D] {\small{Debit}};
    134         \draw[dashed,-stealth] (1.north) |- (off.west);
    135         \draw[dashed,-stealth] (off.east) -| (6.north);
    136     
    137         %% Separation
    138         \draw[dotted] (-2.1,-1.3) -- (9,-1.3);
    139         \draw[dotted] (-2.1,-2.5) -- (9,-2.5);
    140     \end{tikzpicture}
    141     \end{center}
    142 \end{frame}
    143 
    144 \begin{frame}{Blockchain-based cryptocurrencies}
    145     \begin{columns}
    146         \column{0.4\textwidth}
    147         \begin{block}{\textbf{BTC} Bitcoin}
    148             \begin{itemize}
    149                 \item Proof of Work
    150                 \item new block every $\simeq$10 min
    151                 \item $\simeq$4 txs per sec
    152             \end{itemize}
    153         \end{block}
    154         \column{0.4\textwidth}
    155         \begin{block}{\textbf{ETH} Ethereum}
    156             \begin{itemize}
    157                 \item Proof of Stake
    158                 \item new block every $\simeq$12 sec
    159                 \item $\simeq$14 txs per sec
    160             \end{itemize}
    161         \end{block}
    162     \end{columns}
    163 \end{frame}
    164 
    165 \begin{frame}{Storing metadata}{Bitcoin}
    166     \begin{block}{Bitcoin - Debit}
    167         \begin{itemize}
    168             \item Transactions from code
    169             \item Only 32B + URI
    170             \item \textbf{OP\_RETURN}
    171         \end{itemize}
    172     \end{block}
    173     \begin{block}{Bitcoin - Credit}
    174         \begin{itemize}
    175             \item Transactions from common wallet software
    176             \item Only 32B
    177             \item \textbf{Fake Segwit Addresses}
    178         \end{itemize}
    179     \end{block}
    180 \end{frame}
    181 
    182 \begin{frame}{Storing metadata}{Ethereum}
    183     \begin{block}{Smart contract ?}
    184         \begin{itemize}
    185             \item Logs in smart contract is the recommended way {\tiny (ethereum.org)}
    186             \item Expensive (additional storage and execution fees)
    187             \item Avoidable attack surface (error prone)
    188         \end{itemize}
    189     \end{block}
    190     \begin{block}{Custom input format}
    191         Use input data in transactions, usually used to call smart contract, to
    192         store our metadata.
    193     \end{block}
    194 \end{frame}
    195 
    196 \begin{frame}{Chain reorganization}
    197     \begin{center}
    198         \begin{tikzpicture}[
    199                 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
    200                 nconf/.style={dotted,fill=none},
    201                 replaced/.style={pattern=north east lines,draw=black!60,fill opacity=0.3},
    202                 err/.style={draw=black!60!red,fill=black!60!red!10,dashed},
    203                 ar/.style={-stealth}
    204             ]
    205             % Common
    206             \node[block](2){};
    207             \node[block,right=5mm of 2](3){};
    208             \draw[ar] (2) -- (3);
    209 
    210             % Current
    211             \node[block,replaced,right=5mm of 3](4){};
    212             \node[block,replaced,right=5mm of 4](5){$T$};
    213             \draw[ar] (3) -- (4);
    214             \draw[ar] (4) -- (5);
    215           
    216 
    217             % Fork
    218             \node[block,above=7mm of 4](4p){};
    219             \only<1>{
    220                 \node[block,right=5mm of 4p](5p){};
    221             }
    222             \only<2>{
    223                 \node[block,err,right=5mm of 4p](5p){$T'$};
    224             }
    225             \node[block,right=5mm of 5p](6p){};
    226             \node[block,nconf,right=5mm of 6p](7p){
    227                 \only<1>{$T$}
    228             };
    229             \draw[ar] (3.east) -- (4p.west);
    230             \draw[ar] (4p) -- (5p);
    231             \draw[ar] (5p) -- (6p);
    232             \draw[ar] (6p) -- (7p);
    233             
    234 
    235             % Indication
    236             \node [right=5mm of 7p]{\emph{active}};
    237             \node [right=29mm of 5]{\emph{fork}};
    238         \end{tikzpicture}
    239     \end{center}
    240     \begin{center}
    241         \only<1>{Reorganization can remove transaction from the chain}
    242         \only<2>{A conflict can invalidate the transaction}
    243     \end{center}
    244 \end{frame}
    245 
    246 \begin{frame}{Stuck transactions}
    247     \begin{center}
    248         \begin{tikzpicture}[
    249             dot/.style={circle,fill,inner sep=1pt,}
    250         ]
    251         \node (I) {\includegraphics[width=\textwidth]{../docs/media/fee.png}};
    252         \node [below left=-2.5mm and -1.5cm of I] (Tx) {\small Tx};
    253         \node [dot,above=8.4mm of Tx](D) {};
    254         \draw [dotted,thick] (Tx) -- (D);
    255         \node [left=-4.5cm of Tx] (C) {\small conf};
    256         \node [dot,above=8.4mm of C](D1) {};
    257         \draw [dotted,thick] (C) -- (D1);
    258         \end{tikzpicture}
    259     \end{center}
    260     \begin{center}
    261         Stuck transactions caused by transaction fees being a market-based value
    262     \end{center}
    263 \end{frame}
    264 
    265 \begin{frame}{Incompatible amount}
    266     GNU Taler amount follow RFC 8905:  $2^{53}$ unit and 8 decimal digits
    267     \begin{block}{\textbf{BTC} Bitcoin}
    268         \begin{itemize}
    269             \item 1 satoshi = $10^{-8}$ BTC
    270             \item capped at 21 000 000 BTC
    271             \item Fit perfectly
    272         \end{itemize}
    273     \end{block}
    274     \begin{block}{\textbf{ETH} Ethereum}
    275         \begin{itemize}
    276             \item 1 wei = $10^{-18}$ ETH
    277             \item actually more than 120 580 000 without cap
    278             \item average fee: 21 000 * 14 = 294 000 Gwei or 0.000295 ETH
    279             \item truncated at $10^{-8}$ ETH it can still represent any amount you can send without losing money 
    280         \end{itemize}
    281     \end{block}
    282 \end{frame}
    283 
    284 \begin{frame}{Implementation} 
    285     Download a wallet from \url{wallet.taler.net} and add our experimental bitcoin exchange at \url{bitcoin.ice.bfh.ch}
    286     
    287     \center\includegraphics[width=10.4cm]{./electrum.jpg}
    288 \end{frame}
    289 
    290 
    291 \begin{frame}{Conclusion}
    292     Distributed Ledgers can be used as a settlement layer for GNU Taler
    293     with Depolymerizer.
    294 
    295     \begin{itemize}
    296         \item [$-$] Trust exchange operators or auditors
    297         \item [$+$] Fast and cheap
    298         \item [$+$] Realtime, ms latency
    299         \item [$+$] Linear scalability
    300         \item [$+$] Ecological
    301         \item [$+$] Privacy when it can, transparency when it must (avoid tax evasion and money laundering)
    302     \end{itemize}
    303 \end{frame}
    304 
    305 \end{document}