commit 29a34e96f67ff8590d22af963dd52388d7537c5b
parent 9d00fd837855f3480f169f7361f484e5038bc1d6
Author: Antoine A <>
Date: Tue, 22 Mar 2022 15:35:55 +0100
report progress
Diffstat:
3 files changed, 129 insertions(+), 6 deletions(-)
diff --git a/docs/figures/settlement_layer.tex b/docs/figures/settlement_layer.tex
@@ -0,0 +1,48 @@
+\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]{media/taler.png}};
+
+ %% Depolymerization
+ \node[right=11mm of D] {\small{Credit}};
+ \node[right=50mm of D] {\small{Debit}};
+ \draw[dashed,-stealth] (1.north) |- (off.west);
+ \draw[dashed,-stealth] (off.east) -| (6.north);
+\end{tikzpicture}
+\ No newline at end of file
diff --git a/docs/figures/taler_arch.tex b/docs/figures/taler_arch.tex
@@ -0,0 +1,35 @@
+\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=2cm and 1cm of 1](2) {Customer};
+ \node[rect,below right=2cm and 1cm 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=2.5cm of 1](E1){};
+ \node[right=2.5cm 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}
+\ No newline at end of file
diff --git a/docs/report.tex b/docs/report.tex
@@ -25,12 +25,6 @@
\clearpage
-\section{Taler}
-
-% TODO
-
-% Briefly presenting Taler
-% Settlement layer -> blockchain-based cryptocurrency
\section{Blockchain-based cryptocurrencies}
@@ -92,6 +86,50 @@ As we have seen, blockchain-based cryptocurrencies have certain limitations by d
\clearpage
+\section{GNU Taler}
+
+GNU Taler is an electronic payment system implemented as free software. We provide only a superficial overview of GNU Taler necessary to understand how Depolymerization fits into the system. More information can be found in the project documentation and repository.
+
+\subsection{Overview}
+
+\begin{figure}[hb]
+ \begin{center}
+ \input{figures/taler_arch.tex}
+ \end{center}
+ \caption{GNU Taler overview}
+\end{figure}
+
+
+\subsubsection*{Exchange}
+The exchange is the payment service provider for financial transactions between customers and merchants. The exchange holds money as a reserve for anonymous digital coins.
+
+\subsubsection*{Customer}
+A customer can withdraw coins from the exchange and store them in his electronic wallet. These coins can then be spent at a merchant.
+
+\subsubsection*{Merchant}
+A merchant accepts coins in exchange for goods and services. The merchant can then deposit these coins at the exchange to receive money in return.
+
+\subsubsection*{Auditor}
+Auditors monitor the behaviour of the exchanges to ensure that exchanges operate correctly. They are typically operated by financial regulators.
+
+\subsubsection*{Settlement layer}
+The settlement layer provides finality for wire transfers that allow customers to deposit money and merchant to withdraw money from Taler. This settlement layer is typically provided by banks. The goal of this project is to use blockchains as a settlement layer to support blockchain-based cryptocurrencies.
+
+\subsection{Blockchain settlement layer}
+
+\begin{figure}[hb]
+ \begin{center}
+ \input{figures/settlement_layer.tex}
+ \end{center}
+ \caption{Blockchain settlement layer}
+\end{figure}
+
+Depolymerization serves as a middleware between GNU taler and blockchain-based cryptocurrencies. Customers can send money to the Depolymerizer using an on-chain transaction to get coins that they can use in off-chain transactions. Using the Depolymerizer, Taler exchanges can materialize coins back into the blockchain.
+
+Off-chain transactions have many advantages over on-chain transactions. At the cost of putting trust in exchange operators or auditors, you can have fast and cheap transactions with instant confirmation (ms). GNU Taler offers linear scalability that can solve blockchain throughput limitation and, by not relying on Proof of Work, has a much lower ecological impact. GNU Taler does not sacrifice privacy either; it provides privacy when it can and transparency when it has to (regulation: avoid tax evasion and money laundering).
+
+\clearpage
+
\section{Resolving blockchain challenges}
Some properties of blockchain-based cryptocurrencies are problematic for their use as a Taler settlement layer. The two main issues are blockchain reorganisations and stuck transactions.