gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-marketing] branch master updated: texting


From: gnunet
Subject: [taler-marketing] branch master updated: texting
Date: Wed, 23 Nov 2022 23:15:42 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository marketing.

The following commit(s) were added to refs/heads/master by this push:
     new 32351ad  texting
32351ad is described below

commit 32351ad02d4f24b013690e798c2919cdea019a5c
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Nov 23 23:15:37 2022 +0100

    texting
---
 depolymerization/en.tex                         | 241 ++++++++++++++++++++----
 depolymerization/figures/analysis.tex           |  52 +++++
 depolymerization/figures/conf_delay.tex         |  36 ++++
 depolymerization/figures/conflict.tex           |  36 ++++
 depolymerization/figures/depolymerizer_arch.tex |  20 ++
 depolymerization/figures/fork.tex               |  29 +++
 depolymerization/figures/harmless_reorg.tex     |  36 ++++
 depolymerization/figures/settlement_layer.tex   |  50 +++++
 depolymerization/figures/taler_arch.tex         |  35 ++++
 depolymerization/media/fee.png                  | Bin 0 -> 13811 bytes
 depolymerization/media/fee_var.png              | Bin 0 -> 24339 bytes
 depolymerization/media/news0.png                | Bin 0 -> 11089 bytes
 depolymerization/media/news1.png                | Bin 0 -> 121542 bytes
 depolymerization/media/news2.png                | Bin 0 -> 21284 bytes
 depolymerization/media/taler.png                | Bin 0 -> 5134 bytes
 15 files changed, 497 insertions(+), 38 deletions(-)

diff --git a/depolymerization/en.tex b/depolymerization/en.tex
index fb1a655..a88a041 100644
--- a/depolymerization/en.tex
+++ b/depolymerization/en.tex
@@ -3,6 +3,11 @@
 \usepackage[utf8]{inputenc}
 \usepackage{wrapfig}
 
+\usepackage{textcomp}
+\usepackage{xcolor}
+\usepackage{bytefield}
+\usepackage{tikz}
+\usetikzlibrary{positioning,fit}
 \usepackage{graphicx}
 \usepackage{url}
 \title{Project Depolymerization: \\
@@ -10,131 +15,291 @@
 
 \begin{document}
 
-\author{Emmanuel Benoist \and Christian Grothoff}
+\author{Antoine d'Aligny \and Emmanuel Benoist \and Christian Grothoff}
 
 \maketitle
 
+\begin{abstract}
+  GNU Taler is an electronic payment system implemented as Free Software. The
+  Depolymerization of the Bern University of Applied Sciences (BFH) enables
+  payments with blockchain-based cryptocurrencies using GNU Taler.  This
+  article explains how to use the resulting payment system to efficiently and
+  quickly pay with Bitcoin.
+\end{abstract}
 
-\begin{figure}
+\section{Introduction}
+
+Today, popular cryptocurrencies like Bitcoin~\cite{nakamoto2008bitcoin} and
+Ethereum~\cite{ethereum} are not useful for electronic payments in everyday
+life (say to buy bread, pay for a beer or a snack in a vending machine).  For
+real-world payments, on-chain transactions are too slow, too expensive and the
+decentralized nature of blockchains does not allow transaction rates required
+in practice.
+
+GNU Taler is a centralized payment system that allows privacy-preserving
+payments to be settled within milliseconds at minimal cost.  By combining
+the GNU Taler payment system with a blockchain, GNU Taler can address key
+performance and privacy limitations of blockchains.
+Figure~\ref{fig:offchain} shows the resulting architecture where GNU Taler
+serves as a layer-2 solution over a blockchain.
+
+\begin{figure}[hb]
+    \begin{center}
+        \input{figures/settlement_layer.tex}
+    \end{center}
+    \caption{Blockchain settlement layer with 
Depolymerization.}\label{fig:offchain}
+\end{figure}
+
+GNU Taler exchanges are expected to be operated by regulated payment service
+providers that can be trusted because they are audited in real-time.  Today,
+no such a regulated entity exists. To nevertheless enable experimentation with
+the technology, Prof. Benoist is operating an experimental exchange at {\tt
+  https://bitcoin.ice.bfh.ch/} as a research project.  While the general
+public is at liberty to use the system, there is no warranty that the
+generated Bitcoin Taler coins will be redeemed as the university reserves the
+right to shut down the system at any time for any reason without enabling
+users to recover their assets.
+
+\section{Withdrawing Bitcoin}
+
+To begin using GNU Taler for Bitcoin payments, users need to install a GNU
+Taler wallet. Wallets are available from {\tt https://wallet.taler.net/}
+for various platforms and as extensions for various browsers.  We will
+largely focus on the user experience for the Android wallet, as in most
+cases the user experience is quite similar for the other implementations.
+
+\subsection{Adding the Bitcoin exchange}
+
+The experimental Bitcoin exchange operated by BFH is not in the default list
+of exchanges supported by a GNU Taler wallet. Thus, users must first add the
+exchange. To do so, we need to open the ``Settings'' dialog, as shown in
+Figures~\ref{fig:mainmenu:hamburger} and~\ref{fig:mainmenu:settings}.
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210438.png}
 \end{center}
 \caption{To withdraw Bitcoin, you must first select the main menu, using the
   ``hamburger'' icon in the main ``Balances'' view.}
+\label{fig:mainmenu:hamburger}
 \end{figure}
 
-\begin{figure}
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210443.png}
 \end{center}
 \caption{In the main menu, select ``Settings''.}
+\label{fig:mainmenu:settings}
 \end{figure}
 
-\begin{figure}
-\begin{center}
-\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210448.png}
-\end{center}
-\caption{In ``Settings'', select ``Exchanges'' to view the list of Taler 
exchange providers.}
-\end{figure}
+In the ``Settings'' menu, the ``Exchanges'' entry can then be selected
+to inspect and modify the list of GNU Taler exchanges the wallet is
+configured to use.  To add the BFH exchange, select the ``+''
+button and add the respective URL as shown in Figure~\ref{fig:exchange:add}.
+
+%\begin{figure}
+%\begin{center}
+%\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210448.png}
+%\end{center}
+%\caption{In ``Settings'', select ``Exchanges'' to view the list of Taler 
exchange providers.}
+%\end{figure}
 
-\begin{figure}
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210513.png}
 \end{center}
 \caption{Unless already present, use the ``+'' button to add a Bitcoin 
exchange. We
   use {\tt bitcoin.ice.bfh.ch} which is the only Depolymerization operator we 
are
   aware of at this time.}
+\label{fig:exchange:add}
 \end{figure}
 
-\begin{figure}
-\begin{center}
-\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210559.png}
-\end{center}
-\caption{If done correctly, an exchange for ``BITCOINBTC'' should now be in 
the list.
-  GNU Taler uses ``BITCOINBTC'' instead of just ``BTC'' to avoid confusion with
-  the worthless ``TESTNETBTC''.}
-\end{figure}
+The Taler shorthand for the ``mainnet'' Bitcoin currency is ``BITCOINBTC''
+(instead of just ``BTC''), as the Bitcoin ``testnet'' also uses ``BTC'' and
+thus the two currencies might be confused, especially given that within
+GNU Taler, the underlying Bitcoin addresses are not visible.
 
-\begin{figure}
+%\begin{figure}
+%\begin{center}
+%\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210559.png}
+%\end{center}
+%\caption{If done correctly, an exchange for ``BITCOINBTC'' should now be in 
the list.
+%  GNU Taler uses ``BITCOINBTC'' instead of just ``BTC'' to avoid confusion 
with
+%  the worthless ``TESTNETBTC''.}
+%\end{figure}
+
+\subsection{Adding BITCOINBTC to the Taler wallet}
+
+To move Bitcoins from a Bitcoin wallet to a Taler wallet,
+one starts with the menu reachable from the three horizontal dots next to the 
Bitcoin exchange and selects the
+``Withdraw'' operation (Figure~\ref{fig:menu:withdraw}).
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210606.png}
 \end{center}
 \caption{By clicking the three dots next to the Bitcoin exchange, we get the 
menu
   to ``Withdraw'' bitcoins. Here, ``withdraw'' means to transfer BTC from a
   Bitcoin wallet to a Taler wallet.}
+\label{fig:menu:withdraw}
 \end{figure}
 
-\begin{figure}
+Afterwards, the wallet will ask for the amount of BTC
+that the user wants to withdraw (Figure~\ref{fig:withdraw:amount})
+and ask for the user to agree to the terms of service
+of the Taler exchange operator.
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210626.png}
 \end{center}
 \caption{Specify the amount of (BITCOIN)BTC that you want to withdraw.}
+\label{fig:withdraw:amount}
 \end{figure}
 
-\begin{figure}
+GNU Taler exchange operators can also charge transaction fees,
+just like Bitcoin miners or banks.  GNU Taler wallets show
+applicable fees for every operation before allowing the user
+to proceed with the transaction.  Figure~\ref{fig:withdraw:fees}
+shows a Taler wallet showing the fees for the withdraw operation.
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210653.png}
 \end{center}
 \caption{The Taler wallet will show applicable exchange fees before starting 
the
   actual process. Note that these fees do not include the on-chain transaction 
fees of the
   Bitcoin blockchain.}
+\label{fig:withdraw:fees}
 \end{figure}
 
-\begin{figure}
+After the user agreed to the terms of service and the fees, the wallet
+internally sets up the withdraw process and shows instructions for how to
+transfer Bitcoins to the Taler exchange operator to top-up the Taler wallet
+(Figure~\ref{fig:withdraw:instructions}).  The Bitcoin transfer is a bit
+unusual, as the Deploymerization project encodes the access key of the Taler
+wallet in two fake Bitcoin addresses, while the actual transfer to the Bitcoin
+Taler exchange operator happens in a third address.  Thus, users need to copy
+the three lines with amounts and Bitcoin target addresses into their clipboard
+and from there import them into their Bitcoin wallet (see
+Figure~\ref{fig:bitcoin:import}).
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/Screenshot_20221121-210709.png}
 \end{center}
 \caption{This is is the information needed for the Bitcoin wallet to make the
-  on-chain wire transfer to send Bitcoins to your Tale wallet. You should copy
+  on-chain wire transfer to send Bitcoins to your Taler wallet. You should copy
   this information into your Bitcoin wallet. If the Bitcoin wallet runs on the
   same device ``Open in banking app'' may work (if the Bitcoin wallet supports 
it).}
+\label{fig:withdraw:instructions}
 \end{figure}
 
+We will now show how to complete the operation using the Electrum wallet.
+The first step is to open the Electrum wallet and open the screen to
+``Send'' funds (Figure~\ref{fig:electrum:send}).
 
-\begin{figure}
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.17.37.png}
 \end{center}
 \caption{Using your Bitcoin wallet (here: Electrum), you now need to send BTC 
to
   the Taler exchange to obtain BITCOINBTC in your Taler wallet.}
+\label{fig:electrum:send}
 \end{figure}
 
-\begin{figure}
+Next, one needs to tell Electrum that the payment will go to multiple
+recipients. This requires using the ``Pay to many'' option in the
+menu (Figure~\ref{fig:electrum:many}).
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/ScreenShot-2022-11-22_14.17.44.png}
 \end{center}
 \caption{When sending the funds, use the ``Pay to many'' option in the menu to 
be
   allowed to enter multiple recipients.}
+\label{fig:electrum:many}
 \end{figure}
 
-\begin{figure}
+Once the ``Pay to many'' option has been activated, the three lines from the
+GNU Taler wallet can be pasted into the address field
+(Figure~\ref{fig:bitcoin:import}).  Electrum expects amounts in mBTC, while
+the lines generated by GNU Taler used BTC.  Hence, all amounts must be
+multiplied by 1000 and the ``BTC'' unit should be removed. Also, Electrum
+expects the lines in CSV format, thus commas need to be added between the
+addresses and the amounts.
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.19.45.png}
 \end{center}
 \caption{Now you can import the three destinations that were generated by the 
GNU Taler
   wallet.  Note that Electrum expects the amounts to be specified in mBTC, 
while
-  GNU Taler generated the amounts in BTC. Hence, you need to multiply all 
amounts by 1000
-  and remove the ``BTC'' unit and add commas.
+  GNU Taler generated the amounts in BTC.
   Future versions of the Taler wallet may support the Electrum syntax 
directly.}
+\label{fig:bitcoin:import}
 \end{figure}
 
-\begin{figure}
+The last step is then to confirm the transaction to Electrum
+and to provide Electrum with the passphrase (Figure~\ref{fig:electrum:pass}).
+
+\begin{figure}[h!]
 \begin{center}
 
\includegraphics[width=0.3\textwidth]{Screenshots/ScreenShot-2022-11-22_14.20.32.png}
 \end{center}
 \caption{As usual, you need to unlock your Electrum wallet with your 
passphrase and
   specify how much you are willing to pay in terms of transaction fees.}
+\label{fig:electrum:pass}
 \end{figure}
 
-\begin{figure}
-\begin{center}
-\includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.22.44.png}
-\end{center}
-\caption{The final transaction should look like this. Here, the two 234 
Satoshi transactions
-  are used to encode which Taler wallet should receive the funds, while the 
main output goes
-  to the Taler exchange to hold the funds in escrow. The fourth output is your 
remaining
-  balance.}
-\end{figure}
+Afterwards, Electrum will show a final confirmation screen. Here, the two 234
+Satoshi transactions are used to encode which Taler wallet should receive the
+funds, while the main output goes to the Taler exchange to hold the funds in
+escrow. The fourth output is your remaining balance.  It will then take a few
+hours (or possibly days, if the Bitcoin transaction fee offered was low) for
+the Bitcoins to arrive at the Taler exchange. During that time, the GNU Taler
+wallet will show the transaction as ``pending''.  Once the Bitcoins have
+arrived at the Taler exchange operator, the wallet will withdraw the coins and
+show that the ``withdraw'' operation has completed.
+
+%\begin{figure}
+%\begin{center}
+%\includegraphics[width=0.6\textwidth]{Screenshots/ScreenShot-2022-11-22_14.22.44.png}
+%\end{center}
+%\caption{The final transaction should look like this. Here, the two 234 
Satoshi transactions
+%  are used to encode which Taler wallet should receive the funds, while the 
main output goes
+%  to the Taler exchange to hold the funds in escrow. The fourth output is 
your remaining
+%  balance.}
+%\end{figure}
+
+\section{Making Peer-to-Peer payments}
+
+\subsection{Sending money}
+
+\subsection{Sending invoices}
+
+
+\section{Paying Taler-enabled merchants}
+
+
+\section{Going back onto the chain}
+
+Last but not least, it is possible to transfer the BITCOINBTC from the Taler
+wallet back to a Bitcoin wallet, effectively moving the funds out of the Taler
+exchange escrow and back onto the chain.
+
+
+
+\section{Future work}
+
+In the future, GNU Taler could be combined with technologies like the
+Lightning~\cite{lightening} network to create a federation of GNU Taler
+exchanges.  This would likely address open challenges for Lightening in terms
+of scalability and availability.  The main work required here is to add
+support for federation to the GNU Taler payment system.
+
+\section{Conclusion}
+
 
 
 \bibliographystyle{alpha}
diff --git a/depolymerization/figures/analysis.tex 
b/depolymerization/figures/analysis.tex
new file mode 100644
index 0000000..ad0072b
--- /dev/null
+++ b/depolymerization/figures/analysis.tex
@@ -0,0 +1,52 @@
+\begin{tikzpicture}[
+        block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
+        conf/.style={draw=black!60!green,fill=black!60!green!10},
+        nconf/.style={dotted},
+        conft/.style={text=black!60!green},
+        confl/.style={draw=black!60!green},
+        ar/.style={-stealth}
+    ]
+    % Common
+    \node(0){};
+    \node[block,conf,right=5mm of 0](1){};
+    \node[block,conf,right=5mm of 1](2){};
+    \draw[ar] (0) -- (1);
+    \draw[ar] (1) -- (2);
+
+    % Current
+    \node[block,conf,right=5mm of 2](3){};
+    \node[block,nconf,right=5mm of 3](4){};
+    \node[block,nconf,right=5mm of 4](5){};
+    \node[block,nconf,right=5mm of 5](6){};
+    \draw[ar] (2) -- (3);
+    \draw[ar] (3) -- (4);
+    \draw[ar] (4) -- (5);
+    \draw[ar] (5) -- (6);
+
+    % Fork
+    \node[block,nconf,above=7mm of 3](3p){};
+    \node[block,nconf,right=5mm of 3p](4p){};
+    \node[block,nconf,right=5mm of 4p](5p){};
+    \node[block,nconf,right=5mm of 5p](6p){};
+    \node[block,nconf,right=5mm of 6p](7p){};
+    \draw[ar] (2.east) -- (3p.west);
+    \draw[ar] (3p) -- (4p);
+    \draw[ar] (4p) -- (5p);
+    \draw[ar] (5p) -- (6p);
+    \draw[ar] (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}
\ No newline at end of file
diff --git a/depolymerization/figures/conf_delay.tex 
b/depolymerization/figures/conf_delay.tex
new file mode 100644
index 0000000..c5c44ba
--- /dev/null
+++ b/depolymerization/figures/conf_delay.tex
@@ -0,0 +1,36 @@
+\begin{tikzpicture}[
+        block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
+        conf/.style={draw=black!60!green,fill=black!60!green!10},
+        nconf/.style={dotted},
+        err/.style={draw=black!60!red,fill=black!60!red!10},
+        ar/.style={-stealth}
+    ]
+    % Common
+    \node[block,conf](1){};
+    \node[block,conf,right=5mm of 1](2){$D_0$};
+    \node[block,conf,right=5mm of 2](3){};
+    \draw[ar] (1) -- (2);
+    \draw[ar] (2) -- (3);
+
+    % Current
+    \node [block,nconf,right=5mm of 3](4){};
+    \node[block,nconf,right=5mm of 4](5){};
+    \node[block,nconf,right=5mm of 5](6){$D_1$};
+    \draw[ar] (3) -- (4);
+    \draw[ar] (4) -- (5);
+    \draw[ar] (5) -- (6);
+
+    % Fork
+    \node [block,nconf,above=7mm of 4](4p){};
+    \node[block,nconf,right=5mm of 4p](5p){$D_2$};
+    \node[block,nconf,right=5mm of 5p](6p){};
+    \node[block,nconf,right=5mm of 6p](7p){};
+    \draw[ar] (3.east) -- (4p.west);
+    \draw[ar] (4p) -- (5p);
+    \draw[ar] (5p) -- (6p);
+    \draw[ar] (6p) -- (7p);
+
+    % Indication
+    \node [right=5mm of 7p]{\emph{fork}};
+    \node [right=17mm of 6]{\emph{active}};
+\end{tikzpicture}
\ No newline at end of file
diff --git a/depolymerization/figures/conflict.tex 
b/depolymerization/figures/conflict.tex
new file mode 100644
index 0000000..40a1a9c
--- /dev/null
+++ b/depolymerization/figures/conflict.tex
@@ -0,0 +1,36 @@
+\begin{tikzpicture}[
+        block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
+        conf/.style={draw=black!60!green,fill=black!60!green!10},
+        nconf/.style={dotted},
+        err/.style={draw=black!60!red,fill=black!60!red!10},
+        ar/.style={-stealth}
+    ]
+    % Common
+    \node[block,conf](1){};
+    \node[block,conf,right=5mm of 1](2){$D_0$};
+    \node[block,conf,right=5mm of 2](3){};
+    \draw[ar] (1) -- (2);
+    \draw[ar] (2) -- (3);
+
+    % Current
+    \node[block,conf,right=5mm of 3](4){$D_3$};
+    \node[block,nconf,right=5mm of 4](5){};
+    \node[block,nconf,right=5mm of 5](6){$D_1$};
+    \draw[ar] (3) -- (4);
+    \draw[ar] (4) -- (5);
+    \draw[ar] (5) -- (6);
+
+    % Fork
+    \node[block,dashed,err,above=7mm of 4](4p){$D_3'$};
+    \node[block,nconf,right=5mm of 4p](5p){$D_2$};
+    \node[block,nconf,right=5mm of 5p](6p){};
+    \node[block,nconf,right=5mm of 6p](7p){};
+    \draw[ar] (3.east) -- (4p.west);
+    \draw[ar] (4p) -- (5p);
+    \draw[ar] (5p) -- (6p);
+    \draw[ar] (6p) -- (7p);
+
+    % Indication
+    \node [right=5mm of 7p]{\emph{fork}};
+    \node [right=17mm of 6]{\emph{active}};
+\end{tikzpicture}
\ No newline at end of file
diff --git a/depolymerization/figures/depolymerizer_arch.tex 
b/depolymerization/figures/depolymerizer_arch.tex
new file mode 100644
index 0000000..3e1ed97
--- /dev/null
+++ b/depolymerization/figures/depolymerizer_arch.tex
@@ -0,0 +1,20 @@
+\begin{tikzpicture}[
+        rect/.style={rectangle, draw=black, minimum height=6mm, minimum 
width=22mm},
+        sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt}
+    ]
+    \node[rect](1) {Taler Exchange};
+    \node[rect,below=.8cm of 1](2) {Wire Gateway};
+    \node[rect,right=.7cm of 2](3) {PostgreSQL};
+    \node[rect,right=.7cm of 3](4) {DLT Adapter};
+    \node[rect,above=.8cm of 4](5) {DLT Full Node};
+
+    \draw[sym] (1) -- node [midway,right] {\tiny HTTP} (2);
+    \draw[sym] (2) -- node [midway,above] {\tiny SQL} (3);
+    \draw[sym] (3) -- node [midway,above] {\tiny SQL} (4);
+    \draw[sym] (4) -- node [midway,left ] {\tiny RPC} (5);
+
+    \node[above= 2mm of 1]{\small{\emph{Wire Gateway API}}};
+    \node[above= 2mm of 5]{\small{\emph{DLT specific}}};
+    \node[above=22mm of 3](T) {};
+    \draw[dotted] (3) -- (T);
+\end{tikzpicture}
\ No newline at end of file
diff --git a/depolymerization/figures/fork.tex 
b/depolymerization/figures/fork.tex
new file mode 100644
index 0000000..4d32b36
--- /dev/null
+++ b/depolymerization/figures/fork.tex
@@ -0,0 +1,29 @@
+\begin{tikzpicture}[
+        block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
+        ar/.style={-stealth}
+    ]
+    % Common
+    \node[block](1){};
+    \node[block,right=5mm of 1](2){$D_0$};
+    \node[block,right=5mm of 2](3){};
+    \draw[ar] (1) -- (2);
+    \draw[ar] (2) -- (3);
+
+    % Current
+    \node[block,right=5mm of 3](4){};
+    \node[block,right=5mm of 4](5){$D_1$};
+    \draw[ar] (3) -- (4);
+    \draw[ar] (4) -- (5);
+
+    % Fork
+    \node[block,above=7mm of 4](4p){};
+    \node[block,right=5mm of 4p](5p){$D_2$};
+    \node[block,right=5mm of 5p](6p){};
+    \draw[ar] (3.east) -- (4p.west);
+    \draw[ar] (4p) -- (5p);
+    \draw[ar] (5p) -- (6p);
+
+    % Indication
+    \node [right=5mm of 6p]{\emph{fork}};
+    \node [right=17mm of 5]{\emph{active}};
+\end{tikzpicture}
\ No newline at end of file
diff --git a/depolymerization/figures/harmless_reorg.tex 
b/depolymerization/figures/harmless_reorg.tex
new file mode 100644
index 0000000..7906fbd
--- /dev/null
+++ b/depolymerization/figures/harmless_reorg.tex
@@ -0,0 +1,36 @@
+\begin{tikzpicture}[
+        block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
+        conf/.style={draw=black!60!green,fill=black!60!green!10},
+        nconf/.style={dotted},
+        err/.style={draw=black!60!red,fill=black!60!red!10},
+        ar/.style={-stealth}
+    ]
+    % Common
+    \node[block,conf](1){};
+    \node[block,conf,right=5mm of 1](2){$D_0$};
+    \node[block,conf,right=5mm of 2](3){};
+    \draw[ar] (1) -- (2);
+    \draw[ar] (2) -- (3);
+
+    % Current
+    \node[block,conf,right=5mm of 3](4){};
+    \node[block,nconf,right=5mm of 4](5){};
+    \node[block,nconf,right=5mm of 5](6){$D_1$};
+    \draw[ar] (3) -- (4);
+    \draw[ar] (4) -- (5);
+    \draw[ar] (5) -- (6);
+
+    % Fork
+    \node[block,nconf,above=7mm of 4](4p){};
+    \node[block,nconf,right=5mm of 4p](5p){$D_2$};
+    \node[block,nconf,right=5mm of 5p](6p){};
+    \node[block,nconf,right=5mm of 6p](7p){};
+    \draw[ar] (3.east) -- (4p.west);
+    \draw[ar] (4p) -- (5p);
+    \draw[ar] (5p) -- (6p);
+    \draw[ar] (6p) -- (7p);
+
+    % Indication
+    \node [right=5mm of 7p]{\emph{fork}};
+    \node [right=17mm of 6]{\emph{active}};
+\end{tikzpicture}
\ No newline at end of file
diff --git a/depolymerization/figures/settlement_layer.tex 
b/depolymerization/figures/settlement_layer.tex
new file mode 100644
index 0000000..0b21dec
--- /dev/null
+++ b/depolymerization/figures/settlement_layer.tex
@@ -0,0 +1,50 @@
+\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=7mm of B] (1){};
+    \node[block,right=5mm 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=5mm of 2] (5){};
+    \node[block,right=5mm of 5] (6){};
+    \draw[-stealth] (1) -- (2);
+   % \draw[-stealth] (2) -- (3);
+   % \draw[-stealth] (3) -- (4);
+   % \draw[-stealth] (4) -- (5);
+    \draw[-stealth] (2) -- (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 11.75mm of T] (off){Off-chain 
transactions};
+    \node[above=-0.5mm of off] {\includegraphics[height=7mm]{media/taler.png}};
+
+    %% Depolymerization
+    \node[right=12mm of D] {\small{Credit}};
+    \node[right=38.5mm 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/depolymerization/figures/taler_arch.tex 
b/depolymerization/figures/taler_arch.tex
new file mode 100644
index 0000000..6d5f18e
--- /dev/null
+++ b/depolymerization/figures/taler_arch.tex
@@ -0,0 +1,35 @@
+\begin{tikzpicture}[
+        rect/.style={circle, draw=black,font=\fontsize{9}{16}\selectfont},
+        sym/.style={-stealth, shorten >= 2pt, shorten <= 2pt}
+    ]
+    % Taler payment system
+    \node[rect](1) {Exchange};
+    \node[rect,below left=1.5cm and 0.75cm of 1](2) {Customer};
+    \node[rect,below right=1.5cm and 0.75cm 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=0.6cm 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/depolymerization/media/fee.png b/depolymerization/media/fee.png
new file mode 100644
index 0000000..2ccdec2
Binary files /dev/null and b/depolymerization/media/fee.png differ
diff --git a/depolymerization/media/fee_var.png 
b/depolymerization/media/fee_var.png
new file mode 100644
index 0000000..d02cc3c
Binary files /dev/null and b/depolymerization/media/fee_var.png differ
diff --git a/depolymerization/media/news0.png b/depolymerization/media/news0.png
new file mode 100644
index 0000000..bb96d06
Binary files /dev/null and b/depolymerization/media/news0.png differ
diff --git a/depolymerization/media/news1.png b/depolymerization/media/news1.png
new file mode 100644
index 0000000..4ea00f9
Binary files /dev/null and b/depolymerization/media/news1.png differ
diff --git a/depolymerization/media/news2.png b/depolymerization/media/news2.png
new file mode 100644
index 0000000..fbafb5c
Binary files /dev/null and b/depolymerization/media/news2.png differ
diff --git a/depolymerization/media/taler.png b/depolymerization/media/taler.png
new file mode 100644
index 0000000..97493ca
Binary files /dev/null and b/depolymerization/media/taler.png differ

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]