depolymerization

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

commit 4a83288341cca887481a09b77b8ac30264856846
parent 906264dbbae37428d96d07d993c1466bc908df8d
Author: Antoine A <>
Date:   Thu, 27 Jan 2022 17:55:26 +0100

Presentation draft 2

Diffstat:
M.gitignore | 8++++++--
Adocs/fee.png | 0
Mdocs/presentation.tex | 200+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Adocs/taler.png | 0
4 files changed, 157 insertions(+), 51 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,3 +1,7 @@ /target log -/.vscode -\ No newline at end of file +/.vscode +/docs/* +!/docs/*.docx +!/docs/*.tex +!/docs/*.png +\ No newline at end of file diff --git a/docs/fee.png b/docs/fee.png Binary files differ. diff --git a/docs/presentation.tex b/docs/presentation.tex @@ -1,15 +1,15 @@ \documentclass{beamer} - -\usetheme{default} \usepackage{tikz} -\usetikzlibrary{positioning} -\title{Depolymerization WIP} -\subtitle{TODO} -\author{TODO} -\institute{TODO} +\usetikzlibrary{positioning,fit} + +\title{Depolymerization} +\subtitle{Linking Taler with blockchain based cryptocurrencies} +\author{Antoine d'Aligny} +\institute{Bern University of Applied Sciences} \date{\today} +\titlegraphic{\includegraphics[width=2.5cm]{taler.png}} \begin{document} @@ -21,77 +21,102 @@ \tableofcontents \end{frame} -\begin{frame}{Introduction}{Blockchain} - \begin{block}{Common blockchain limitation} - \begin{itemize} - \item \textbf{Slow} limited amount of transaction per seconds - \item \textbf{Delayed} block and confirmation delay - \item \textbf{Expensive} transaction fees - \item \textbf{Privacy} pseudonym and noise - \item \textbf{Compatibility} multiple blockchain and transactions format - \end{itemize} - \end{block} +\section{Introduction} +\begin{frame}{Introduction} \begin{block}{Biggest cryptocurrencies} \begin{itemize} \item \textbf{BTC} Bitcoin \item \textbf{ETH} Ethereum \end{itemize} \end{block} -\end{frame} -\begin{frame}{Introduction}{Related work} - \begin{block}{Centralization - Coinbase's off-chain sending} - \begin{itemize} - \item [$+$] Fast and cheap: off chain transaction - \item [$-$] Trust in Coinbase: privacy, security \& transparency - \end{itemize} - \end{block} - \begin{block}{Layering - Lightning Network} + \begin{block}{Common blockchain limitation} \begin{itemize} - \item [$+$] Fast and cheap: off chain transaction - \item [$-$] Incompatible with Bitcoin: require setting up a Bidirectional Payment Channels - \item [$-$] Fraud attempts are mitigated via a complex penalty system + \item \textbf{Delayed} block and confirmation delay + \item \textbf{Expensive} transaction fees + \item \textbf{Scalability} limited amount of transaction per seconds + \item \textbf{Ecological cost} computation redundancy + \item \textbf{Privacy} \end{itemize} \end{block} \end{frame} -\begin{frame}{Introduction}{Taler} - \begin{itemize} - \item [$-$] Trust exchange operator or auditors - \item [$+$] Fast and cheap, no blockchain - \item [$+$] Privacy when it can, transparency when it must (avoid tax evasion and money laundering) - \item [$+$] Currency agnostic - \end{itemize} +\section{Taler} + +\begin{frame}{Taler}{Architecture} + \begin{center} + \begin{tikzpicture}[ + rect/.style={circle, draw=black}, + sym/.style={->, shorten >= 2pt, shorten <= 2pt} + ] + \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, left] {\tiny Withdraw coins} (2); + \draw[sym] (2) -- node [midway, below] {\tiny Spend coins} (3); + \draw[sym] (3) -- node [midway, right] {\tiny Deposit coins} (1); + + \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); + + + \node[above= of 1](A){Auditor}; + \draw[sym] (A) -- node [midway, right] {\tiny Audit} (1); + \end{tikzpicture} + \end{center} \end{frame} -\begin{frame}{Architecture}{Taler bridge to blockchain} +\begin{frame}{Taler}{Coins} + - Blind signatures + - Currency agnostic + - Change signature every year, Forget previous transactions (Pruning) + - Compatibility ? +\end{frame} + +\begin{frame}{Taler}{Off the chain transaction} \begin{center} \begin{tikzpicture}[ rect/.style={rectangle, draw=black}, sym/.style={<->, shorten >= 2pt, shorten <= 2pt} ] - \node[rect](1) {Taler}; - \node[rect, right= of 1](2) {Depolymerization}; - \node[rect, right= of 2](3) {Blockchain}; + \node(Tt){Taler}; + \node[rect, below=0cm of Tt](Tc){Exchange}; + \node[rect, fit={(Tt) (Tc)}](T){}; + + \node[rect, below= of Tc](D) {Depolymerization}; - \draw[sym] (1) -- (2); - \draw[sym] (2) -- (3); + \node[rect, below= of D](Bc){Node}; + \node[below=0cmof Bc](Bt){Blockchain}; + \node[rect, fit={(Bt) (Bc)}](B){}; + + \draw[sym] (T) -- (D); + \draw[sym] (D) -- (B); \end{tikzpicture} \end{center} \end{frame} -\begin{frame}{Architecture}{depolymerization} +\section{Depolymerization} + +\begin{frame}{Depolymerization}{Metadata} + - Metadata + - Auditabilité +\end{frame} + +\begin{frame}{Depolymerization}{Architecture} \begin{center} \begin{tikzpicture}[ rect/.style={rectangle, draw=black}, sym/.style={<->, shorten >= 2pt, shorten <= 2pt} ] - \node[rect](1) {Taler}; + \node[rect](1) {Taler Exchange}; \node[rect, below= of 1](2) {wire\_gateway}; \node[rect, right= of 2](3) {PostgreSQL}; - \node[rect, right= of 3](4) {btc\_wire}; - \node[rect, above= of 4](5) {bitcoind}; + \node[rect, right= of 3](4) {\#\#\#\_wire}; + \node[rect, above= of 4](5) {Full Node}; \draw[sym] (1) -- node [midway, right] {\tiny HTTP} (2); \draw[sym] (2) -- node [midway, above] {\tiny SQL} (3); @@ -101,6 +126,8 @@ \end{center} \end{frame} +\section{btc\_wire} + \begin{frame}{btc\_wire}{Architecture} Three loops Watcher: Notify other loops when a new block has been mined @@ -108,12 +135,87 @@ Worker: Sync chain -> Send -> Bounce \end{frame} -\begin{frame}{btc\_wire}{Features} +\begin{frame}{btc\_wire}{Security features} \begin{itemize} - \item Handle stuck transactions - \item Fork resilient + \item Reorg resilient + \item Handle stuck transaction \item Adaptive confirmation \end{itemize} \end{frame} +\begin{frame}{btc\_wire}{Reorg resilient} +\end{frame} + +\begin{frame}{btc\_wire}{Handle stuck transactions} + \only<1>{We want transactions to be confirmed in a bounded time period} + \begin{center} + \begin{tikzpicture}[ + dot/.style={circle,fill,inner sep=1pt,} + ] + + % TODO caption with source (Ychart) + + \node (I) {\includegraphics[width=\textwidth]{fee.png}}; + \only<2->{ + \node [below left=-2.5mm and -1.5cm of I] (Tx) {\small Tx}; + \node [dot, above=8.4mm of Tx](D) {}; + \draw [dotted] (Tx) -- (D); + }; + \only<2>{ + \node [left=-4.5cm of Tx] (C) {\small conf}; + \node [dot, above=8.4mm of C](D1) {}; + \draw [dotted] (C) -- (D1); + }; + \only<3>{ + \node [left=-17mm of Tx] (Tx1) {\small Tx'}; + \node [dot, above=15.5mm of Tx1](D1) {}; + \draw [dotted] (Tx1) -- (D1); + + \node [left=-14.3mm of Tx1] (C) {\small conf}; + \node [dot, above=15.5mm of C](D2) {}; + \draw [dotted] (C) -- (D2); + }; + + \end{tikzpicture} + \end{center} + \only<1>{However, transaction fees are variable and can only be predicted} + \only<2>{When a transaction is sent with a fee too small compared to other transaction, + it can take an unlimited amount of time for this transaction to be mined} + \only<3>{We monitor pending transaction and bump their fee if they take too muck time to be mined} + +\end{frame} + + +\begin{frame}{btc\_wire}{Adaptive confirmation} +\end{frame} + + + +\begin{frame}{Related work} + \begin{block}{Centralization - Coinbase off-chain sending} + \begin{itemize} + \item [$+$] Fast and cheap: off chain transaction + \item [$-$] Trust in Coinbase: privacy, security \& transparency + \end{itemize} + \end{block} + \begin{block}{Layering - Lightning Network} + \begin{itemize} + \item [$+$] Fast and cheap: off chain transaction + \item [$-$] Incompatible with Bitcoin: require setting up a Bidirectional Payment Channel + \item [$-$] Fraud attempts are mitigated via a complex penalty system + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}{Conclusion} + \begin{itemize} + \item [$-$] Trust exchange operator or auditors + \item [$+$] Fast and cheap, no blockchain + \item [$+$] Realtime, ms latency + \item [$+$] Scalability, close to 100k txs per second + \item [$+$] Ecological + \item [$+$] Privacy when it can, transparency when it must (avoid tax evasion and money laundering) + \item [$+$] Currency agnostic + \end{itemize} +\end{frame} \end{document} \ No newline at end of file diff --git a/docs/taler.png b/docs/taler.png Binary files differ.