diff options
author | Antoine A <> | 2022-01-31 18:20:16 +0100 |
---|---|---|
committer | Antoine A <> | 2022-01-31 18:20:16 +0100 |
commit | ed31faa0362d1ef8c69875d34c48edd659a99541 (patch) | |
tree | 5514408ed3033cdde8bddb503ac52a18822065b1 /docs | |
parent | f1cd4f82bb5022168487c476074c8addfadc279c (diff) | |
download | depolymerization-ed31faa0362d1ef8c69875d34c48edd659a99541.tar.gz depolymerization-ed31faa0362d1ef8c69875d34c48edd659a99541.tar.bz2 depolymerization-ed31faa0362d1ef8c69875d34c48edd659a99541.zip |
presentation: progress
Diffstat (limited to 'docs')
-rw-r--r-- | docs/presentation.tex | 169 |
1 files changed, 139 insertions, 30 deletions
diff --git a/docs/presentation.tex b/docs/presentation.tex index 677b7de..3eea3d0 100644 --- a/docs/presentation.tex +++ b/docs/presentation.tex @@ -54,9 +54,9 @@ \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); + \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); \node[left=2cm of 1](E1){}; \node[right=2cm of 1](E2){}; @@ -128,8 +128,11 @@ \section{Depolymerization} \begin{frame}{Depolymerization}{Metadata} - - Metadata - - Auditabilité + \begin{itemize} + \item Metadata are stored alongside depolymerizer on-chain transactions + \item The whole transaction history can be retrieved from the blockchain + \item Easily auditable + \end{itemize} \end{frame} \begin{frame}{Depolymerization}{Architecture} @@ -150,7 +153,9 @@ \draw[sym] (4) -- node [midway,left ] {\tiny RPC} (5); \end{tikzpicture} \end{center} - Two processes sharing a common database for state and communication. wire\_gateway is currency agnostic and there is a specific wire binary for every supported currency. + Two processes sharing a common database for state and communication. + wire\_gateway is currency agnostic and there is a specific wire binary for + every supported currency. \end{frame} \section{btc\_wire} @@ -191,11 +196,29 @@ Three concurrent loops \end{frame} +\begin{frame}{btc\_wire}{Metadata} + \begin{block}{Deposit} + \begin{itemize} + \item Transaction from common wallet software + \item Only 32B + \item \textbf{Fake Segwit Addresses} + \end{itemize} + \end{block} + \begin{block}{Deposit} + \begin{itemize} + \item Transaction from code + \item Only 32B + URI + \item \textbf{OP\_RETURN} + \end{itemize} + \end{block} +\end{frame} + + \begin{frame}{btc\_wire}{Security features} \begin{itemize} \item Reorg resilient - \item Resolve stuck transaction \item Adaptive confirmation + \item Resolve stuck transaction \end{itemize} \end{frame} @@ -203,27 +226,46 @@ \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}, + err/.style={draw=black!60!red,fill=black!60!red!10}, ] % Common - \node [block](1){1}; - \node [block, right=5mm of 1](2){2}; - \node [block, right=5mm of 2](3){3}; + \only<1>{ + \node [block](1){}; + \node [block,right=5mm of 1](2){$D_0$}; + \node [block,right=5mm of 2](3){}; + } + \only<2->{ + \node [block,conf](1){}; + \node [block,conf,right=5mm of 1](2){$D_0$}; + \node [block,conf,right=5mm of 2](3){}; + } \draw[->] (1) -- (2); \draw[->] (2) -- (3); % Current - \node [block, right=5mm of 3](4){4}; - \node [block, right=5mm of 4](5){5}; - \node [block, right=5mm of 5](6){6}; + \only<1-2>{ + \node [block,right=5mm of 3](4){}; + } + \only<3->{ + \node [block,conf,right=5mm of 3](4){\only<4>{$D_3$}}; + } + \node [block,right=5mm of 4](5){}; + \node [block,right=5mm of 5](6){$D_1$}; \draw[->] (3) -- (4); \draw[->] (4) -- (5); \draw[->] (5) -- (6); % Fork - \node [block, above=7mm of 4](4p){4'}; - \node [block, right=5mm of 4p](5p){5'}; - \node [block, right=5mm of 5p](6p){6'}; - \node [block, right=5mm of 6p](7p){7}; + \only<-3>{ + \node [block,above=7mm of 4](4p){}; + } + \only<4>{ + \node [block,err,above=7mm of 4](4p){$D_3'$}; + } + \node [block,right=5mm of 4p](5p){$D_2$}; + \node [block,right=5mm of 5p](6p){}; + \node [block,right=5mm of 6p](7p){}; \draw[->] (3.east) -- (4p.west); \draw[->] (4p) -- (5p); \draw[->] (5p) -- (6p); @@ -234,9 +276,80 @@ \node [right=17mm of 6]{\emph{active}}; \end{tikzpicture} \end{center} - A fork is when concurrent blockchain state coexists. Node will follow the longest chain replacing recent blocks if necessary. This is a blockchain reorganisation. + \only<1>{A fork is when concurrent blockchain state coexists. Node will follow the + longest chain replacing recent blocks if necessary. This is a blockchain + reorganisation. In Taler deposit transaction are expected to be + consistent, if a deposit transaction disappear from the blockchain + btc\_wire is comprised.} + \only<2>{As small forks are common, we apply a confirmation delay to handle + the most common disturbances and attack.} + \only<3>{If a reorganisation bigger than the confirmation delay happen, + but no deposit transaction are removed btc\_wire is safe.} + \only<4>{If a confirmed deposit transaction has been removed, it is + possible for a powerful attacker to have created a conflicting transaction. btc\_wire + stop functioning until lost deposit transactions reappeared.} +\end{frame} + +\begin{frame}{btc\_wire}{Adaptive confirmation} + \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}, + conft/.style={text=black!60!green}, + confl/.style={draw=black!60!green}, + ] + % Common + \node(0){}; + \node[block,conf,right=5mm of 0](1){}; + \node[block,conf,right=5mm of 1](2){}; + \draw[->] (0) -- (1); + \draw[->] (1) -- (2); + + % Current + + \node[block,conf,right=5mm of 2](3){}; + \node[block,right=5mm of 3](4){}; + \node[block,right=5mm of 4](5){}; + \node[block,right=5mm of 5](6){}; + \draw[->] (2) -- (3); + \draw[->] (3) -- (4); + \draw[->] (4) -- (5); + \draw[->] (5) -- (6); + + % Fork + \node[block,above=7mm of 3](3p){}; + \node[block,right=5mm of 3p](4p){}; + \node[block,right=5mm of 4p](5p){}; + \node[block,right=5mm of 5p](6p){}; + \node[block,right=5mm of 6p](7p){}; + \draw[->] (2.east) -- (3p.west); + \draw[->] (3p) -- (4p); + \draw[->] (4p) -- (5p); + \draw[->] (5p) -- (6p); + \draw[->] (6p) -- (7p); + + % Indication + \node[right=5mm of 7p]{\emph{fork}}; + \node[right=17mm of 6]{\emph{active}}; + + % Confirmation + \path (0) -- (1) node[conft,midway, below=6mm] (M) {Max}; + \path (2) -- (3) node[conft,midway, below=6mm] (N) {New}; + \path (3) -- (4) node[conft,midway, below=6mm] (I) {Initial}; + \node[above=25mm of M] (Mp) {}; + \node[above=25mm of N] (Np) {}; + \node[above=25mm of I] (Ip) {}; + \draw[confl,thick,dotted](M) -- (Mp); + \draw[confl](N) -- (Np); + \draw[confl,thick,dotted](I) -- (Ip); + \end{tikzpicture} + \end{center} + If we experience a reorganisation once, its plausible for another one of the + same size to happen again. We update the confirmation time, learning from + previous disturbances. \end{frame} + \begin{frame}{btc\_wire}{Handle stuck transactions} \only<1>{We want transactions to be confirmed in a bounded time period} \begin{center} @@ -249,22 +362,22 @@ \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); + \node [dot,above=8.4mm of Tx](D) {}; + \draw [dotted,thick] (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); + \node [dot,above=8.4mm of C](D1) {}; + \draw [dotted,thick] (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 [dot,above=15.5mm of Tx1](D1) {}; + \draw [dotted,thick] (Tx1) -- (D1); \node [left=-14.3mm of Tx1] (C) {\small conf}; - \node [dot, above=15.5mm of C](D2) {}; - \draw [dotted] (C) -- (D2); + \node [dot,above=15.5mm of C](D2) {}; + \draw [dotted,thick] (C) -- (D2); }; \end{tikzpicture} \end{center} @@ -276,10 +389,6 @@ \end{frame} -\begin{frame}{btc\_wire}{Adaptive confirmation} -\end{frame} - - \begin{frame}{Related work} \begin{block}{Centralization - Coinbase off-chain sending} |