aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorAntoine A <>2022-01-31 18:20:16 +0100
committerAntoine A <>2022-01-31 18:20:16 +0100
commited31faa0362d1ef8c69875d34c48edd659a99541 (patch)
tree5514408ed3033cdde8bddb503ac52a18822065b1 /docs
parentf1cd4f82bb5022168487c476074c8addfadc279c (diff)
downloaddepolymerization-ed31faa0362d1ef8c69875d34c48edd659a99541.tar.gz
depolymerization-ed31faa0362d1ef8c69875d34c48edd659a99541.tar.bz2
depolymerization-ed31faa0362d1ef8c69875d34c48edd659a99541.zip
presentation: progress
Diffstat (limited to 'docs')
-rw-r--r--docs/presentation.tex169
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}