commit cf32225ed501c5300468700b3c2cf424073cdc2d
parent b31fd66d48a24a459b8791fe74201fb39ca86167
Author: Joel-Haeberli <haebu@rubigen.ch>
Date: Sat, 25 May 2024 11:32:26 +0200
poster: final version
Diffstat:
5 files changed, 42 insertions(+), 25 deletions(-)
diff --git a/c2ec/exponential-backoff_test.go b/c2ec/exponential-backoff_test.go
@@ -22,7 +22,7 @@ func TestShouldRetryYes(t *testing.T) {
func TestShouldRetryNo(t *testing.T) {
lastExecution := time.Now().Add(-(time.Duration(10 * time.Second))) // 10 seconds ago
- retries := 3 // three retries
+ retries := 1 // three retries
limitMs := 1000 // second
retry := ShouldStartRetry(lastExecution, retries, limitMs)
diff --git a/poster/auth_transaction.jpg b/poster/auth_transaction.jpg
Binary files differ.
diff --git a/poster/authorize_payment.jpg b/poster/authorize_payment.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
@@ -34,14 +34,14 @@
\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 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.
+ 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 goal is to improve the uptake of GNU Taler.
Our key design objectives were:
\begin{enumerate}
- \item Finality: Liability for the money is not on the side of the Excahnge
+ \item Finality: Liability for the money is not on the side of the Taler operator
\item Convenience: The user-experience follows established patterns
- \item Abort: Failures are handled without loss of money
+ \item Abort: Robust and secure payment flow allowing abort handling without loss of money
\end{enumerate}
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.
@@ -54,75 +54,91 @@
\end{posterboxenv}
- \begin{posterboxenv}{name=taler-news,column=1,row=3,span=1, rowspan=1}
+ \begin{posterboxenv}{name=taler-news,column=1,row=3,span=2, rowspan=1}
- Bachelor thesis and further material:
-
- \includegraphics[width=\linewidth]{taler_news_terminals_api.png}
+ \begin{center}
+ Bachelor thesis and further materials:
- https://taler.net/en/news/2024-08.html
+ \includegraphics[height=15cm]{taler_news_terminals_api.png}
+ https://taler.net/en/news/2024-08.html
+ \end{center}
\end{posterboxenv}
- \begin{posterboxenv}[title=Terminals API design requirements]{name=api,column=2,row=3,span=4, rowspan=2}
+ \begin{posterboxenv}[title=Terminals API design requirements]{name=api,column=3,row=3,span=4, rowspan=2}
- To allow the withdrawal of digital cash using Taler we designed the \textit{Terminals API}. It is responsible for:
+ To allow the withdrawal of digital cash using Taler we designed the \textit{Terminals API}.
+
+ It is responsible for:
\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
+ \item Inform Taler wallet about transaction state
\end{enumerate}
- We implemented the Terminals API using Go under a Free Software license.
+ We implemented the Terminals API using Go under a Free Software license (GNU AGPLv3).
\end{posterboxenv}
- \begin{posterboxenv}[title=PayDroid POS Terminal App (Wallee A50)]{name=wallee, column=2, row=5, span=4, rowspan=1}
+ \begin{posterboxenv}[title=PayDroid POS Terminal App (Wallee A50)]{name=wallee, column=1, row=5, span=5, 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 (1)]{name=flow-diagram,column=1,row=6,span=1, rowspan=1}
+ \begin{posterboxenv}{name=flow-diagram,column=1,row=6,span=1, rowspan=1}
\begin{center}
+ (1) Enter Amount
+ \end{center}
+ \begin{center}
\includegraphics[height=17cm]{enter_amount.jpg}
\end{center}
\end{posterboxenv}
+ \begin{posterboxenv}{name=flow-diagram,column=2,row=6,span=1, rowspan=1}
- \begin{posterboxenv}[title=Associate wallet (2)]{name=flow-diagram,column=2,row=6,span=1, rowspan=1}
-
+ \begin{center}
+ (2) Associate wallet
+ \end{center}
\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}{name=flow-diagram,column=3,row=6,span=1, rowspan=1}
\begin{center}
+ (3) Confirm withdrawal
+ \end{center}
+ \begin{center}
\includegraphics[height=17cm]{accept_tos.jpg}
\end{center}
\end{posterboxenv}
+ \begin{posterboxenv}{name=flow-diagram,column=4,row=6,span=1, rowspan=1}
- \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}
+ (4) Authorize Payment
+ \end{center}
+ \begin{center}
+ \includegraphics[height=17cm]{authorize_payment.jpg}
\end{center}
\end{posterboxenv}
- \begin{posterboxenv}[title=View Summary (5)]{name=flow-diagram,column=5,row=6,span=1, rowspan=1}
+ \begin{posterboxenv}{name=flow-diagram,column=5,row=6,span=1, rowspan=1}
\begin{center}
+ (5) View Summary
+ \end{center}
+ \begin{center}
\includegraphics[height=17cm]{summary.jpg}
\end{center}
@@ -132,13 +148,14 @@
\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 Wallee integration in the C2EC backend is an example. In principle it should be easy to integrate other acquirers. The architecture also supports other use cases, such as cash to e-cash.
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.
+ 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 operator is ensured in realtime, that they will receive the wire transfer.
+
Help us to support more payment providers and add an additional integration!
+
\end{posterboxenv}
\end{tcbposter}