commit 25b6c32ff66c3c46eeceb55f037e69b392277a92
parent bda181c670f16bebaebd483aad49246058217a5f
Author: Joel-Haeberli <haebu@rubigen.ch>
Date: Thu, 23 May 2024 01:01:24 +0200
poster: draft
Diffstat:
7 files changed, 70 insertions(+), 43 deletions(-)
diff --git a/c2ec/api-wire-gateway.go b/c2ec/api-wire-gateway.go
@@ -327,7 +327,7 @@ func historyIncoming(res http.ResponseWriter, req *http.Request) {
}
if len(withdrawals) < 1 {
- res.WriteHeader(HTTP_NOT_FOUND)
+ res.WriteHeader(HTTP_NO_CONTENT)
return
}
@@ -429,7 +429,7 @@ func historyOutgoing(res http.ResponseWriter, req *http.Request) {
}
if len(filtered) < 1 {
- res.WriteHeader(HTTP_NOT_FOUND)
+ res.WriteHeader(HTTP_NO_CONTENT)
return
}
diff --git a/poster/accept_tos.jpg b/poster/accept_tos.jpg
Binary files differ.
diff --git a/poster/cashless2ecash_poster.pdf b/poster/cashless2ecash_poster.pdf
Binary files differ.
diff --git a/poster/cashless2ecash_poster.tex b/poster/cashless2ecash_poster.tex
@@ -6,11 +6,14 @@
%% Sprache
\usepackage[nswissgerman]{babel}
\usepackage[autostyle]{csquotes}
+\usepackage{enumitem}
+
+\setlist[enumerate]{itemsep=0mm}
\begin{document}
\title{Cashless to e-Cash}
- \author{Joel Häberli\inst{*}\thanks{habej2@bfh.ch}}
+ \author{Joel Häberli\inst{*}\thanks{joel.haeberli@taler.net}}
\institute{Berner Fachhochschule, Departement Technik und Informatik, \inst{*}Institute for Cybersecurity and Engineering ICE}
%% \inst kann in den Autor und Institutsfeldern genutzt werden um eine Zuordnung zu ermöglichen. Bei Nummerierung ist der Nutzer dafür verantwortlich Konflikte mit \thanks zu vermeiden.
% \titlegraphic{
@@ -23,95 +26,119 @@
\begin{tcbposter}[
poster={
- columns=4,
- rows=7,
+ columns=5,
+ rows=8,
spacing=1cm,
%showframe, %Gitter einblenden. Für Platzierung häufig hilfreich
}]
- \begin{posterboxenv}[title=Motivation]{name=intro,column=1,row=1,span=2,rowspan=2}
+ \begin{posterboxenv}[title=Motivation]{name=intro,column=1,row=1,span=3,rowspan=2}
- This thesis realizes a framework to enable withdrawal of digital cash for GNU Taler through a trusted third party. It addresses a report commissioned by the European Central Bank (ECB), which identified an easy onboarding as one of the most important aspects of a Digital Euro. This will lead to a higher acceptance of GNU Taler and leads to a better integrating into the existing systems.
+ This thesis realizes a framework to enable withdrawal of digital cash for GNU Taler through a established payment service provider. It addresses a report commissioned by the European Central Bank (ECB), which identified easy onboarding as one of the most important aspects of a Digital Euro. Our objective is to improve the uptake of GNU Taler.
- The C2EC components implements the structures required to fulfill the following properties:
+ Our key design objectives were:
\begin{enumerate}
- \item Finality: Liability for the money lies on the provider
- \item Convenience: The UX for the customer is convenient
+ \item Finality: Liability for the money is not on the side of the Excahnge
+ \item Convenience: The user-experience follows established patterns
+ \item Abort: Failures are handled without loss of money
\end{enumerate}
- The liability of the provider is achieved by only allowing withdrawals of strictly finale transactions. This keeps the Exchange out of legal issues. Due to the convenient process, a broader group of people is motivated to use the Taler payment system for their payments. Eventually this helps the payment system Taler to be taken up faster by the society.
+ Additionally our design minimizes changes to the existing Taler system and works with a broad range of established payment methods such as credit cards, debit card, Paypal or Twint.
\end{posterboxenv}
- \begin{posterboxenv}{name=flow-diagram,column=3,row=1,span=2,rowspan=2}
+ \begin{posterboxenv}{name=flow-diagram,column=4,row=1,span=2,rowspan=2}
\includegraphics[width=\linewidth]{components_images.png}
\end{posterboxenv}
- \begin{posterboxenv}[title=Terminals API design requirements]{name=api,column=2,row=3,span=3}
+ \begin{posterboxenv}{name=taler-news,column=1,row=3,span=1, rowspan=1}
- To allow the withdrawal of digital cash using Taler, the newly introduced Terminals API must be implemented. The Terminals API is responsible to setup a withdrawal operation identifier and to cover the needs of a terminal, concerning the withdrawal process:
+ Bachelor thesis and further material:
+
+ \includegraphics[width=\linewidth]{taler_news_terminals_api.png}
+
+ https://taler.net/en/news/2024-08.html
- \begin{enumerate}
- \item Setup withdrawal process and Taler wallet withdrawal operation
- \item Seek a secure confirmation of the payment at the provider's backend
- \item Confirm or abort the withdrawal
- \end{enumerate}
\end{posterboxenv}
- \begin{posterboxenv}{name=taler-news,column=1,row=3,span=1, rowspan=1}
+ \begin{posterboxenv}[title=Terminals API design requirements]{name=api,column=2,row=3,span=4, rowspan=2}
- Link to bachelor thesis and
- further material (QR-Code):
-
- https://taler.net/en/news/2024-08.html
+ To allow the withdrawal of digital cash using Taler we designed the \textit{Terminals API}. It is responsible for:
- \includegraphics[width=\linewidth]{taler_news_terminals_api.png}
+ \begin{enumerate}
+ \item Associate Taler wallet with the financial transaction
+ \item Expose transaction confirmations to the Taler operator
+ \item Allow the Taler operator to reverse transactions if wallet fails to withdraw digital cash
+ \item Inform Taler wallet about transaction stated
+ \end{enumerate}
+
+ We implemented the Terminals API using Go under a Free Software license.
\end{posterboxenv}
- \begin{posterboxenv}[title=PayDroid POS Terminal App (Wallee A50)]{name=wallee, column=2, row=4, span=3, span=3}
- To show that the specification is able to capture the needs for third party withdrawals and allow the integration for theoretically any means of payment, an integration was done for the payment provider Wallee. Wallee supplies a PayDroid platform (Android based) which allows to write custom terminal applications enabling strong authentication of the customer. The newly created withdrawal application sets up the withdrawal and awaits the registration at the Terminals API by the Taler wallet. Once the wallet registered itself, the customer presents their credit card to the Terminal. Upon the reception of the final confirmation, the Exchange allows the withdrawal of the digtial cash through the Taler Wallet.
+ \begin{posterboxenv}[title=PayDroid POS Terminal App (Wallee A50)]{name=wallee, column=2, row=5, span=4, rowspan=1}
+
+ We implemented a payment service terminal on top of the Paydroid platform. Paydroid allows writing custom terminal applications with strong authentication of the customer. In combination with the Wallee payment provider this allows us to accept various payment instruments, including credit and debit cards. Our app asks the user to (1) enter the amount, (2) associate a wallet by scanning a QR code, (3) wait for the wallet to confirm, (4) to authorize the payment and (5) view a summary of the transaction.
+
\end{posterboxenv}
- \begin{posterboxenv}[title=Enter Amount]{name=flow-diagram,column=1,row=5,span=1, rowspan=1}
+ \begin{posterboxenv}[title=Enter Amount (1)]{name=flow-diagram,column=1,row=6,span=1, rowspan=1}
- \includegraphics[width=\linewidth]{enter_amount.jpg}
+ \begin{center}
+ \includegraphics[height=17cm]{enter_amount.jpg}
+ \end{center}
\end{posterboxenv}
- \begin{posterboxenv}[title=Use Taler Wallet]{name=flow-diagram,column=2,row=5,span=1, rowspan=1}
+ \begin{posterboxenv}[title=Associate wallet (2)]{name=flow-diagram,column=2,row=6,span=1, rowspan=1}
- \includegraphics[width=\linewidth]{register_param.jpg}
+ \begin{center}
+ \includegraphics[height=17cm]{register_param.jpg}
+ \end{center}
\end{posterboxenv}
+ \begin{posterboxenv}[title=Confirm withdrawal (3)]{name=flow-diagram,column=3,row=6,span=1, rowspan=1}
- \begin{posterboxenv}[title=Authorize Payment]{name=flow-diagram,column=3,row=5,span=1, rowspan=1}
+ \begin{center}
+ \includegraphics[height=17cm]{accept_tos.jpg}
+ \end{center}
+
+ \end{posterboxenv}
- \includegraphics[width=\linewidth]{auth_transaction.jpg}
+
+ \begin{posterboxenv}[title=Authorize Payment (4)]{name=flow-diagram,column=4,row=6,span=1, rowspan=1}
+
+ \begin{center}
+ \includegraphics[height=17cm]{auth_transaction.jpg}
+ \end{center}
\end{posterboxenv}
- \begin{posterboxenv}[title=View Summary]{name=flow-diagram,column=4,row=5,span=1, rowspan=1}
+ \begin{posterboxenv}[title=View Summary (5)]{name=flow-diagram,column=5,row=6,span=1, rowspan=1}
- \includegraphics[width=\linewidth]{summary.jpg}
+ \begin{center}
+ \includegraphics[height=17cm]{summary.jpg}
+ \end{center}
\end{posterboxenv}
- \begin{posterboxenv}[title=Integrate your platform!]{name=Integrate your platform, column=1,row=7,span=4,rowspan=1}
- C2EC is extensible. The C2EC backend component defines two interfaces which can be implemented by any provider. This also includes cash to e-cash cases like vending machines or any POS installation.
-
- \begin{enumerate}
- \item Provider-Client Interface: defines the operations needed to communicate with the provider's backend
- \item Provider-Transaction Interface: defines the operations to check the finality of the transaction
- \end{enumerate}
+\space
+
+ \begin{posterboxenv}[title=C2EC is extensible]{name=Integrate your platform, column=1,row=8,span=5,rowspan=1}
+
+ The established payment service provider must ensure the customer has irrevokably authorized the transaction. This is typically done using two factor authentication, issued by the bank. The Taler Exchange operator is ensured in realtime, that they will receive the wire transfer.
+
+ The Wallee integration is the C2EC backend is an example. In principle it should be easy to adapt to other acquirers. The architecture also supports other use cases, such as cash to e-cash.
- The implementation must guarantee the finality of the transaction and like this provides the Exchange with the securities it needs to allow the withdrawal of the digital cash. The operations also define a refund operation. The refund operation is used, when the Exchange closes reserves due to inactivities or in case the Exchange manually triggers a refund (perhaps because the customer asked to do so).
+ The key limitation is that the provider must guarantee finality of the transaction. The Taler operator cannot efficiently recoup digital cash it issued to a Taler wallet.
+
+ Help us to support more payment providers and add an additional integration!
\end{posterboxenv}
\end{tcbposter}
diff --git a/poster/enter_amount.jpg b/poster/enter_amount.jpg
Binary files differ.
diff --git a/poster/register_param.jpg b/poster/register_param.jpg
Binary files differ.
diff --git a/poster/summary.jpg b/poster/summary.jpg
Binary files differ.