cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

overview.tex (8421B)


      1 \section{Components}
      2 
      3 \begin{figure}[H]
      4     \centering
      5     \includegraphics[width=1.1\textwidth]{pictures/diagrams/components_images.png}
      6     \caption{Involved components and devices}
      7     \label{fig-logo-components}
      8 \end{figure}
      9 
     10 The component diagram in \autoref{fig-logo-components} shows the components involved by the withdrawal using the terminal. Besides the mean of payment owned by the user, the Taler payment system and a payment service provider (such as Wallee) is involved. 
     11 
     12 To initiate the withdrawal, the wallet scans the QR code (1) and registers a reserve public key (2). After authorizing (3) the transaction using a credit card or other supported payment means, the transaction is authorized (4) via the payment service provider backend. The payment service provider sends back an authorization result (5) before the C2EC component receives the confirmation of payment from the payment service provider (6). As soon the payment was confirmed the wallet can withdraw the digital cash from the Exchange (7).
     13 
     14 \section{Process}
     15 \label{sec-architecture-process}
     16 
     17 \begin{figure}[H]
     18     \centering
     19     \includegraphics[width=1.1\textwidth]{pictures/diagrams/system_overview.png}
     20     \caption{Diagram of included components and their interactions}
     21     \label{fig-diagram-all-components}
     22 \end{figure}
     23 
     24 \autoref{fig-diagram-all-components} shows the interactions of the components. In a initial step (before the process is effectively started as depicted), the customer or owner of the terminal selects the Exchange, which is to be used for the withdrawal. The process is then started and goes through the following steps:
     25 
     26 \begin{enumerate}
     27     \item[0.] The Wallee terminal requests to be notified when parameters are \textit{selected} by C2EC.
     28     \item[1.] The wallet scans the QR code at the terminal.
     29     \item[2.] The wallet registers a reserve public key and initializes the mapping to the withdrawal operation identifier (\textit{WOPID}).
     30     \item[3.] The Terminals API of C2EC notifies the terminal, that the parameters were selected.
     31     \item[4.] The payment terminal initiates a payment to the account of the GNU Taler Exchange. For the payment the payment terminal requests a payment mean and the verification such as a pin code to authorize the payment.
     32     \item[5.] The terminal triggers the payment through the Wallee backend.
     33     \item[6.] The terminal receives the result of the payment, which is either successful or not.
     34     \item[7.] The terminal sends a payment confirmation request to the Bank Integration API of C2EC.
     35     \item[8.] The C2EC component seeks confirmation for the payment by requesting the transaction of the Wallee backend.
     36     \item[9.] The C2EC updates the database by either setting the status of the withdrawal operation to \textit{confirmed} or \textit{abort}, depending on the response of the Wallee backend.
     37     \item[10.] The Exchange-Wirewatch asks the Wire Gateway API of C2EC for a list of transactions. Confirmed transaction will lead to the generation of a reserve at the Exchange.
     38     \item[11.] The wallet asks the Exchange to be notified, when a reserve with the reserve public key becomes available. The digital cash is then withdrawn by the wallet.
     39 \end{enumerate}
     40 
     41 
     42 \newpage
     43 \KOMAoptions{paper=landscape,pagesize}
     44 \recalctypearea
     45 \thispagestyle{empty}
     46 \newgeometry{left=4cm, right=4cm, top=3cm, bottom=0cm}
     47 
     48 \begin{figure}[H]
     49     \centering
     50     % [width=0.7\textwidth]
     51     \includegraphics[width=1.7\textwidth]{pictures/diagrams/c2ec.png}
     52     \caption{Process of a withdrawal using a credit card}
     53     \label{fig-diagram-all-sequence}
     54 \end{figure}
     55 
     56 \restoregeometry
     57 \newpage
     58 \KOMAoptions{paper=portrait,pagesize}
     59 \recalctypearea
     60 
     61 The diagram in \autoref{fig-diagram-all-sequence} shows the high level flow to withdraw digital cash using the credit card terminal and Taler. It shows when the components of \autoref{fig-diagram-all-components} interact with each other. It shows the implementation of the flow. terminal, wallet and Exchange are linked leveraging a \textit{WOPID} initially generated by the terminal and presented to the Exchange by the withdrawing wallet accompanied by a reserve public key. 
     62 
     63 The process requires the terminal, the wallet, the C2EC component and the Exchange who interact with each other. In this section the highlevel process is explained as showed in \autoref{fig-diagram-all-sequence}.
     64 
     65 \subsection{The Terminal}
     66 
     67 The terminal initiates the withdrawal leveraging an application which works as follows:
     68 
     69 \begin{enumerate}
     70     \item At startup of the application, the terminal loads the C2EC configuration.
     71     \item When a user wishes to do a withdrawal, the owner of the terminal opens the application and initiates a new withdrawal entering the Amount to withdraw.
     72     \begin{enumerate}
     73         \item The terminal sets up a withdrawal by asking C2EC to setup a \textit{WOPID}.
     74         \item The terminal calculates fees and shows them to the customer.
     75         \item The \textit{WOPID} is packed into a QR code (with Exchange and amount entered by the terminal owner).
     76 	    \item The application starts long polling at the C2EC and awaits the selection of the reserve parameters mapped to the \textit{WOPID}. The parameters are sent by the wallet to C2EC.
     77     	\item The user accepts the offer and agrees with the ToS.
     78         \item The QR code is displayed.
     79     \end{enumerate}
     80     \item The user now scans the QR Code using his wallet.
     81     \item The application receives the notification of the C2EC, that the parameters for the withdrawal were selected.
     82     \item The terminal executes the payment (after user presented their credit card, using the terminal backend). 
     83     \item The terminal initiate the fund transfer to the Exchange. The customer has to authorize the payment by presenting his payment card and possibly their pin. The terminal processes the payment over the an available connector configured on the Wallee backend. Possible connectors are for example Master Card, VISA, TWINT, Maestro, Post Finance, and others \cite{wallee-available-connectors}.
     84     \begin{enumerate}
     85 	    \item It presents the result to the user.
     86 	    \item It tells the C2EC, that the payment was successful.
     87 	\end{enumerate}
     88 \end{enumerate}
     89 
     90 \subsection{The C2EC}
     91 
     92 The C2EC component manages the withdrawal using a third party provider (e.g. Wallee) and seeks guarantees in order to create a reserve containing digital cash which can be withdrawn by the wallet.
     93 
     94 \begin{enumerate}
     95     \item The C2EC component receives the setup request for withdrawal which will lead to generation of the \textit{WOPID}.
     96     \item The C2EC component receives a long polling request for a \textit{WOPID} (from the terminal).
     97     \item The C2EC component receives a request including a \textit{WOPID} and a reserve public key. 
     98     \item The C2EC component validates the request and adds the key to the mapping. This establishes the \textit{WOPID} to reserve public key mapping.
     99     \item The C2EC component answers the long polling from the terminal.
    100     \item The C2EC component receives the confirmation request of the terminal or is requested to abort the withdrawal.
    101     \item The C2EC component verifies the notification by asking the provider backend for confirmation.
    102     \item The C2EC component tells the Taler Wirewatch component of the Exchange about incoming transactions including the reserve public key of the withdrawal (which will eventually create a withdrawable reserve).
    103 \end{enumerate}
    104 
    105 \subsection{The Wallet}
    106 
    107 The wallet must attest its presence to the terminal by registering a reserve public key with the respective \textit{WOPID} which will hold the digital cash that can eventually be withdrawn by the wallet. The process of the wallet is already implemented through the Bank-Integration API \cite{wallet-withdrawal} and only documented for completeness. The Bank-Integration API is implemented by C2EC.
    108 
    109 \begin{enumerate}
    110     \item The wallet scans the QR Code (\textit{WOPID}, Exchange information and amount) on the terminal.
    111     \item The wallet creates a reserve key pair.
    112     \item The wallet sends the reserve public key to C2EC using the \textit{WOPID} to map the public key to a withdrawal operation.
    113     \item The wallet will be notified by the answer to a long-polling request when the digital cash is available at the Exchange's reserve belonging to the registered reserve public key.
    114 \end{enumerate}