commit 981e65e16ddff64bad331889e65e514537a04e82
parent a8a5cdf97dd88e2e80e864e215fd6326bae34902
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Wed, 18 Sep 2024 16:01:09 +0200
spuren
Diffstat:
3 files changed, 776 insertions(+), 15 deletions(-)
diff --git a/presentations/comprehensive/cashless2ecash.png b/presentations/comprehensive/cashless2ecash.png
Binary files differ.
diff --git a/presentations/comprehensive/datenspuren2024.tex b/presentations/comprehensive/datenspuren2024.tex
@@ -0,0 +1,743 @@
+\pdfminorversion=3
+\documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer}
+\usepackage{amsmath}
+\usepackage{multimedia}
+\usepackage[utf8]{inputenc}
+\usepackage{framed,color,ragged2e}
+\usepackage[absolute,overlay]{textpos}
+\definecolor{shadecolor}{rgb}{0.8,0.8,0.8}
+\usetheme{boxes}
+\setbeamertemplate{navigation symbols}{}
+\usepackage{xcolor}
+\usepackage[normalem]{ulem}
+\usepackage{listings}
+\usepackage{adjustbox}
+\usepackage{array}
+\usepackage{bbding}
+\usepackage{relsize}
+\usepackage{graphicx}
+\usepackage{tikz,eurosym,calc}
+\usetikzlibrary{tikzmark}
+\usetikzlibrary{shapes,arrows,arrows.meta}
+\usetikzlibrary{positioning,fit,patterns}
+\usetikzlibrary{calc}
+\usepackage{multicol}
+\usepackage{pgf-umlsd}
+\usepackage{relsize}
+
+
+% CSS
+\lstdefinelanguage{CSS}{
+ basicstyle=\ttfamily\scriptsize,
+ keywords={color,background-image:,margin,padding,font,weight,display,position,top,left,right,bottom,list,style,border,size,white,space,min,width, transition:, transform:, transition-property, transition-duration, transition-timing-function},
+ sensitive=true,
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]',
+ morestring=[b]",
+ alsoletter={:},
+ alsodigit={-}
+}
+
+% JavaScript
+\lstdefinelanguage{JavaScript}{
+ basicstyle=\ttfamily\scriptsize,
+ morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ morestring=[b]'
+}
+
+\lstdefinelanguage{HTML5}{
+ basicstyle=\ttfamily\scriptsize,
+ language=html,
+ sensitive=true,
+ alsoletter={<>=-},
+ morecomment=[s]{<!-}{-->},
+ tag=[s],
+ otherkeywords={
+ % General
+ >,
+ % Standard tags
+ <!DOCTYPE,
+ </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />,
+ % body
+ </body, <body,
+ % Divs
+ </div, <div, </div>,
+ % Paragraphs
+ </p, <p, </p>,
+ % scripts
+ </script, <script,
+ % More tags...
+ <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image>
+ },
+ ndkeywords={
+ % General
+ =,
+ % HTML attributes
+ charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
+ % SVG attributes
+ fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=,
+ % CSS properties
+ margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:,
+ % CSS3 properties
+ transform:, -moz-transform:, -webkit-transform:,
+ animation:, -webkit-animation:,
+ transition:, transition-duration:, transition-property:, transition-timing-function:,
+ }
+}
+
+\lstdefinelanguage{JavaScript}{
+ basicstyle=\ttfamily\scriptsize,
+ keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for},
+ keywordstyle=\color{blue}\bfseries,
+ ndkeywords={class, export, boolean, throw, implements, import, this},
+ ndkeywordstyle=\color{darkgray}\bfseries,
+ identifierstyle=\color{black},
+ sensitive=false,
+ comment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ commentstyle=\color{purple}\ttfamily,
+ stringstyle=\color{red}\ttfamily,
+ morestring=[b]',
+ morestring=[b]"
+}
+
+\setbeamersize{description width=1em}
+
+\definecolor{blue}{rgb}{0,0,0.7}
+\newcommand{\orange}[1]{{\color{orange}#1}}
+\newcommand{\blue}[1]{{\color{blue}#1}}
+\newcommand{\red}[1]{{\color{red}#1}}
+\newcommand{\Guardian}{\mathcal{G}}
+\newcommand{\Child}{\mathcal{C}}
+\newcommand{\Customer}{\mathcal{C}}
+\newcommand{\Merchant}{\mathcal{M}}
+\newcommand{\Exchange}{\mathcal{E}}
+
+\newcommand{\Commit}{\mathsf{Commit}}
+\newcommand{\Attest}{\mathsf{Attest}}
+\newcommand{\Verify}{\mathsf{Verify}}
+\newcommand{\Derive}{\mathsf{Derive}}
+\newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}}
+\newcommand{\Compare}{\mathsf{Compare}}
+\newcommand{\AgeVer}{\mathsf{AgeVer}}
+
+\newcommand{\HashF}{\mathsf{H}}
+\newcommand{\Hash}{\mathsf{H}}
+\newcommand{\Block}{\mathbb{B}}
+\newcommand{\Pub}{\mathsf{Pub}}
+\newcommand{\Sign}{\mathsf{Sig}}
+\newcommand{\Ver}{\mathsf{Ver}}
+\newcommand{\Encoding}{\mathsf{Encoding}}
+\newcommand{\ECDSA}{\mathsf{ECDSA}}
+\newcommand{\Null}{\mathcal{O}}
+\newcommand{\EC}{\mathrm{ec}}
+\newcommand{\Curve}{\mathsf{Curve25519}}
+\newcommand{\SHA}{\mathsf{SHA256}}
+\newcommand{\SHAF}{\mathsf{SHA252}}
+\newcommand{\FDH}{\mathsf{FDH}}
+
+\newcommand{\negl}{\epsilon}
+
+\newcommand{\rand}{\mathsf{rand}}
+\newcommand{\age}{\mathsf{a}}
+\newcommand{\Age}{\mathsf{M}}
+\newcommand{\bage}{\mathsf{b}}
+\newcommand{\minage}{\mathsf{m}}
+\newcommand{\attest}{\mathsf{T}}
+\newcommand{\commitment}{\mathsf{Q}}
+\newcommand{\pruf}{\mathsf{P}}
+\newcommand{\Vcommitment}{\vec{\mathsf{Q}}}
+\newcommand{\Vpruf}{\vec{\mathsf{P}}}
+\newcommand{\blinding}{\beta}
+
+\newcommand{\ZN}{\mathbb{Z}_N}
+\newcommand{\Z}{\mathbb{Z}}
+\newcommand{\N}{\mathbb{N}}
+\newcommand{\A}{\mathbb{A}}
+\newcommand{\E}{\mathbb{E}}
+\newcommand{\F}{\mathbb{F}}
+\newcommand{\seck}{\mathsf{s}}
+\newcommand{\pubk}{\mathsf{P}}
+\renewcommand{\H}{\mathbb{H}}
+\newcommand{\K}{\mathbb{K}}
+\newcommand{\Proofs}{\mathbb{P}}
+\newcommand{\Commitments}{\mathbb{O}}
+\newcommand{\Attests}{\mathbb{T}}
+\newcommand{\Blindings}{\mathbb{B}}
+\newcommand{\Nil}{\perp}
+
+\newcommand{\p}{\mathsf{p}}
+\newcommand{\com}{\mathsf{com}}
+\newcommand{\prf}{\mathsf{prf}}
+
+\newcommand{\Adv}{\mathcal{A}}
+\newcommand{\PPT}{\mathfrak{A}}
+\newcommand{\Probability}{\mathrm{Pr}}
+\newcommand{\Algorithm}{f}
+\renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}}
+
+\DeclareMathOperator{\Image}{Im}
+\DeclareMathOperator{\Mod}{mod}
+
+\newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}}
+\newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}}
+\newcommand{\FDHg}[1]{[#1]_g\,}
+\newcommand{\logg}{{\breve{g}}}
+
+
+\newcommand{\drawfrom}{\xleftarrow{\$}}
+\newcommand\Exists{%
+ \mathop{\lower0.75ex\hbox{\ensuremath{%
+ \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}%
+ \limits}
+
+\newcommand\Forall{%
+ \mathop{\lower0.75ex\hbox{\ensuremath{%
+ \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}%
+ \limits}
+
+
+\title{GNU Taler}
+%\subtitle{}
+
+\setbeamertemplate{navigation symbols}{ \includegraphics[width=1cm]{tud-logo.pdf} \includegraphics[width=0.4cm]{logo-esen.pdf} \includegraphics[width=1cm]{logo-GlsBank.pdf} \includegraphics[width=0.6cm]{logo-MagNetBank.pdf} \includegraphics[width=0.4cm]{logo-ps.pdf} \includegraphics[width=0.4cm]{logo-nlnet.pdf} \includegraphics[width=0.4cm]{logo-HomoDigitalis.pdf} \includegraphics[width=0.4cm]{logo-codeblau.pdf} \includegraphics[width=1.4cm]{logo-tue.pdf} \includegraphics[width=0.6cm]{logo-visualvest.pdf} \includegraphics[width=1cm]{inria.pdf} \includegraphics[width=0.4cm]{logo-bfh.pdf} \includegraphics[width=1.6cm]{fub.pdf} \includegraphics[width=0.4cm]{ashoka.png} \includegraphics[width=0.4cm]{gnu.png} \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf} \hfill}
+%\setbeamercovered{transparent=1}
+
+\author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci}
+\date{\today}
+\institute{The GNU Project}
+
+
+\begin{document}
+
+\justifying
+
+\begin{frame}
+ \begin{center}
+ \LARGE {\bf GNU}
+
+ \vfill
+% \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf}
+ \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf}
+ \end{center}
+
+ \begin{center}
+ \includegraphics[width=0.15\textwidth]{logo-EU.pdf}
+ \includegraphics[width=0.15\textwidth]{logo-SBFI.pdf}
+ \end{center}
+
+\begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords)
+ {\Large {\bf \href{https://taler.net/}{taler.net}} \\
+ \href{https://twitter.com/taler}{taler@twitter}}
+\end{textblock*}
+
+% Substitute based on who is giving the talk!
+ \begin{textblock*}{6cm}(6.5cm,7.7cm) % {block width} (coords)
+ {\hfill {\bf Christian Grothoff} \\
+ \hfill {\bf \& Leo Wittmann } }
+\end{textblock*}
+
+\end{frame}
+
+\setbeamertemplate{navigation symbols}{\hfill \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf}}
+
+
+
+\begin{frame}
+\frametitle{Taler Overview}
+\begin{center}
+\begin{tikzpicture}
+ \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
+ \node (origin) at (0,0) {};
+ \node (exchange) [def,above=of origin,draw]{Exchange};
+ \node (customer) [def, draw, below left=of origin] {Customer};
+ \node (merchant) [def, draw, below right=of origin] {Merchant};
+ \node (auditor) [def, draw, above right=of origin]{Auditor};
+% \node (regulator) [def, draw, above=of auditor]{CSSF};
+
+ \tikzstyle{C} = [color=black, line width=1pt]
+
+ \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
+ \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
+ \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
+ \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};
+% \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report};
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+
+\begin{frame}
+\frametitle{Architecture of Taler}
+\begin{center}
+ \includegraphics[width=1\textwidth]{operations.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Taler Exchange}
+ The {\bf Exchange} is the core logic of the payment system.
+
+ \begin{itemize}
+ \item One exchange at minimum must be operated per currency
+ \item Offers a REST API for merchants and customers
+ \item Uses several helper processes for configuration and to
+ interact with RTGS and cryptography
+ \item KYC support via OAuth 2.0, KycAID or Persona APIs
+ \item SPAs for AML and KYC processes
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Taler: Exchange Architecture}
+\begin{center}
+\begin{tikzpicture}
+ \tikzstyle{def} = [node distance=2em and 2.5em, inner sep=1em, outer sep=.3em];
+ \node (origin) at (0,0) {};
+ \node (httpd) [def,above=of origin,draw]{httpd};
+ \node (secmod-rsa) [def, draw, right=of httpd] {secmod-rsa};
+ \node (secmod-eddsa) [def, draw, left=of httpd] {secmod-eddsa};
+ \node (postgres) [def, draw, below=of httpd]{Postgres};
+ \node (aggregator) [def, draw, right=of postgres]{aggregator};
+ \node (transfer) [def, draw, below left=of postgres]{transfer};
+ \node (wirewatch) [def, draw, below right=of postgres]{wirewatch};
+ \node (nexus) [def, draw, below=of postgres]{Nexus};
+
+ \tikzstyle{C} = [color=black, line width=1pt]
+
+ \draw [<->, C] (httpd) -- (postgres) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (httpd) -- (secmod-rsa) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (httpd) -- (secmod-eddsa) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (aggregator) -- (postgres) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (wirewatch) -- (postgres) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (transfer) -- (postgres) node [midway, above, sloped] (TextNode) {};
+ \draw [->, C] (transfer) -- (nexus) node [midway, above, sloped] (TextNode) {};
+ \draw [<-, C] (wirewatch) -- (nexus) node [midway, above, sloped] (TextNode) {};
+\end{tikzpicture}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Taler Wallet}
+ The {\bf Wallet} is the software run by consumers to store
+ their digital cash and authorize transactions.
+
+ \begin{minipage}{8cm}
+ \begin{itemize}
+ \item {\bf wallet-core} is the logic shared by all interfaces
+ \item Applications exist for Android, F-Droid,
+ WebExtension (Chrome, Chromium, Firefox, etc.), iOS
+ \item Features include:
+ \begin{itemize}
+ \item Multi-currency support
+ \item Wallet-to-wallet payments (NFC or QR code)
+ \item CRDT-like data model
+ \end{itemize}
+ \end{itemize}
+ Can be integrated into other Apps if desired.
+ \end{minipage}
+ \begin{minipage}{3cm}
+ \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png}
+ \end{minipage}
+\end{frame}
+
+
+\begin{frame}{Taler Auditor}
+ The {\bf Auditor} is the software run by an independent auditor
+ to validate the operation of an Exchange.
+
+ \begin{itemize}
+ \item REST API for additional report inputs by merchants (optional)
+ \item Secure database replication logic ({\tt taler-auditor-sync})
+ \item SPA for viewing results in real-time
+ \end{itemize}
+\begin{center}
+\begin{tikzpicture}
+ \tikzstyle{def} = [node distance=3em and 2.5em, inner sep=1em, outer sep=.3em];
+ \node (origin) at (0,0) {Postgres (Auditor)};
+ \node (httpd) [def,above=of origin,draw]{auditor-httpd};
+ \node (spa) [def,above right=of origin,draw]{auditor-spa};
+ \node (merchant) [def,above left=of origin,draw]{merchant};
+ \node (report) [def,left=of origin,draw]{a-h-*};
+ \node (wirereport) [def,right=of origin,draw]{a-h-wire-*};
+ \node (postgres-E) [def, draw, below=of origin] {Exchange};
+ \node (postgres-B) [def, draw, right=of postgres-E] {Bank};
+
+ \tikzstyle{C} = [color=black, line width=1pt]
+
+ \draw [->, C] (postgres-E) -- (origin) node [midway, above, sloped] (TextNode) {sync};
+ \draw [<->, C] (httpd) -- (origin) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (httpd) -- (spa) node [midway, above, sloped] (TextNode) {};
+ \draw [->, C] (merchant) -- (httpd) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (report) -- (origin) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (wirereport) -- (origin) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (wirereport) -- (postgres-B) node [midway, above, sloped] (TextNode) {nexus};
+\end{tikzpicture}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{libeufin-nexus}
+ libeufin-nexus allows Taler components to interact with a core banking system. It:
+
+ \begin{itemize}
+ \item provides an implementation of the Wire Gateway for the exchange
+ \item supports EBICS 2.5 and 3.0
+ \item other APIs such as FinTS or PSD2-style XS2A APIs can be added
+ without requiring changes to the Exchange
+ \item was tested with GLS Bank (DE) and Postfinance (CH) accounts and real EUR/CHF
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{libeufin-bank}
+ libeufin-bank implements a standalone bank with a Web interface. It:
+
+ \begin{itemize}
+ \item provides the Taler Core Bank API for RESTful online banking
+ using a Web interface (with multi-factor authentication)
+ \item includes a Taler Wire Gateway for the exchange
+ \item offers the Taler Bank Integration API to allow wallets
+ to easily withdraw digital cash
+ \item optionally provides the Taler Conversion Info API for currency
+ conversion between fiat and regional currencies
+ \item optionally integrates with libeufin-nexus to interact with
+ a core banking system
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Cashier App for Android}
+\begin{minipage}{4cm}
+ \begin{itemize}
+ \item Enables staff to convert cash to e-cash
+ \item Staff has special bank accounts with limited funds
+ \item Visitors can pay staff in cash to receive e-cash
+ \end{itemize}
+ \end{minipage}
+ \begin{minipage}{3cm}
+ \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103315.png}
+ \end{minipage}
+ \begin{minipage}{3cm}
+ \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103325.png}
+ \end{minipage}
+\end{frame}
+
+
+\begin{frame}{Cashless2ecash by Joel Haeberli}
+ \begin{center}
+ \includegraphics[width=\textwidth]{cashless2ecash.png}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{Challenger}
+ Challenger allows clients to obtain validated address (KYC) data about
+ users:
+
+ \begin{itemize}
+ \item Customizable Web-based process for address validation
+ \item Can validate phone numbers, e-mail addresses or physical mailing addresses
+ \item Provides an exchange-compatible OAuth 2.0 API
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Depolymerization}
+ Depolymerization is a bridge between GNU Taler and blockchains.
+
+ \begin{itemize}
+ \item Works on top of Bitcoin and Ethereum
+ crypto-currencies, with the DLTs as the ``RTGS''
+ \item Provides same API to Exchange as libeufin-nexus
+ \end{itemize}
+ \begin{center}
+ \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]{taler-logo-2021-inkscape.pdf}};
+
+ %% 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}
+ \end{center}
+\end{frame}
+
+
+
+\begin{frame}{Taler Merchant}
+ The {\bf Merchant} is the software run by merchants to accept\\
+ GNU Taler payments.
+
+ \begin{minipage}{6cm}
+ \begin{itemize}
+ \item REST API for integration with e-commerce
+ \item SPA provides Web interface for administration
+ \item Features include:
+ \begin{itemize}
+ \item Multi-tenant support
+ \item Refunds
+ \item Templates
+ \item Webhooks
+ \item Inventory management (optional)
+ \end{itemize}
+ \end{itemize}
+ \end{minipage}
+ \begin{minipage}{5cm}
+ \includegraphics[width=5cm]{screenshots/merchant-spa-settings}
+ \end{minipage}
+\end{frame}
+
+
+\begin{frame}{Pretix Taler payment plugin}
+\begin{center}
+\includegraphics[width=0.5\textwidth]{screenshots/pretix.png}
+\end{center}
+
+ Pretix is a ticket sales system.
+
+ \begin{itemize}
+ \item Pretix payment plugin enables payments via GNU Taler
+ \item Developed by Pretix.eu for \EUR{3,000} on behalf of Taler Systems SA
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{WooCommerce Taler payment plugin}
+\begin{minipage}{6cm}
+ \begin{itemize}
+ \item WooCommerce is an e-commerce plugin for WordPress.
+ \item WooCommerce payment plugin enables payments via GNU Taler
+ \item Features include:
+ \begin{itemize}
+ \item Trivial configuration
+ \item Support for refunds
+ \item Full internationalization
+ \end{itemize}
+ \end{itemize}
+\end{minipage}
+\begin{minipage}{5cm}
+ \includegraphics[width=4cm]{screenshots/woocommerce-cart.png}
+ \includegraphics[width=4cm]{screenshots/woocommerce-settings.png}
+ \end{minipage}
+\end{frame}
+
+
+\begin{frame}{Joomla! Taler payment plugin}
+\begin{minipage}{6cm}
+ \begin{itemize}
+ \item Joomla! is an e-commerce platform
+ \item Joomla! payment plugin enables payments via GNU Taler
+ \item Features include:
+ \begin{itemize}
+ \item Trivial configuration
+ \item Support for refunds
+ \item Full internationalization
+ \end{itemize}
+ \end{itemize}
+\end{minipage}
+% FIXME: add screenshots
+%\begin{minipage}{5cm}
+% \includegraphics[width=4cm]{screenshots/woocommerce-cart.png}
+% \includegraphics[width=4cm]{screenshots/woocommerce-settings.png}
+% \end{minipage}
+\end{frame}
+
+
+\begin{frame}{Point-of-Sale App for Android}
+
+\begin{minipage}{7cm}
+ \begin{itemize}
+ \item Allows merchant to generate orders against Taler backend
+ and display QR code to enable customer to pay in person
+ \item Patterned after ViewTouch restaurant UI
+ \item Features include:
+ \begin{itemize}
+ \item Internet-based configuration
+ \item Products sorted by categories
+ \item Easy undo of every operation
+ \item Manages multiple concurrent orders
+ \end{itemize}
+ \end{itemize}
+\end{minipage}
+\begin{minipage}{4cm}
+ \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg}
+ \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg}
+ \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg}
+\end{minipage}
+\end{frame}
+
+
+\begin{frame}{Taler-mdb}
+\vfill
+\begin{center}
+\includegraphics[width=1.0\textwidth]{taler-in-use.png}
+\end{center}
+\vfill
+\end{frame}
+
+
+\begin{frame}{Partially Offline Payments with GNU Taler\footnote{Joint work with Emmanuel Benoist, Priscilla Huang and Sebastian Marchano}}
+
+\begin{center}
+\resizebox{8cm}{7cm}{
+\begin{sequencediagram}
+ \newinst{pos}{\shortstack{PoS \\
+ \\ \begin{tikzpicture}
+ \node [fill=gray!20,draw=black,thick ,align=center] {PoS key \\ PoS ID};
+ \end{tikzpicture}
+ }}
+ \newinst[2]{customer}{\shortstack{Customer \\
+ \\ \begin{tikzpicture}
+ \node [fill=gray!20,draw=black,thick ,align=center] {Digital \\ Wallet};
+ \end{tikzpicture}
+ }}
+ \newinst[2]{backend}{\shortstack{Merchant Backend \\
+ \\ \begin{tikzpicture}[shape aspect=.5]
+ \tikzset{every node/.style={cylinder, shape border rotate=90, draw,fill=gray!25}}
+ \node at (1.5,0) {\shortstack{{\tiny PoS key} \\ {\tiny PoS ID}}};
+ \end{tikzpicture}
+ }}
+ \postlevel
+ \mess[0]{pos}{PoS ID}{customer}
+ \begin{sdblock}{optional}{}
+ \begin{callself}{customer}{Amount}{}
+ \end{callself}
+ \end{sdblock}
+ \prelevel
+ \prelevel
+ \prelevel
+ \prelevel
+ \prelevel
+ \begin{sdblock}{optional}{}
+ \begin{callself}{pos}{Amount}{}
+ \end{callself}
+ \end{sdblock}
+ \postlevel
+ \mess[0]{customer}{PoS ID, [Amount]?}{backend}
+ \mess[0]{backend}{Contract}{customer}
+ \postlevel
+ \mess[0]{customer}{Payment}{backend}
+ \begin{callself}{pos}{OTP(PoS key)}{}
+ \end{callself}
+ \prelevel
+ \prelevel
+ \begin{callself}{backend}{OTP(PoS key)}{}
+ \end{callself}
+ \mess[0]{backend}{OTP code}{customer}
+ \postlevel
+ \mess[0]{customer}{OTP code}{pos}
+\end{sequencediagram}
+}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Other ongoing developments}
+ \begin{itemize}
+ \item Privacy-preserving auctions (trading, currency exchange) ({\tt oezguer@taler.net})
+ \item Hardware and software support for embedded systems ({\tt mikolai@taler.net})
+ \item GNU Name System registry with GNU Taler payments ({\tt schanzen@gnunet.org})
+ \item Performance improvements for RSA in FLOSS crypto libraries (NLnet project)
+ \item Tax-deductable receipts for donations to charities (donau.git)
+ \item Unlinkable anonymous subscriptions and discount tokens (merchant.git, branch)
+ \item Support for illiterate and innumerate users\footnote{Background: \url{https://myoralvillage.org/}}
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{How to support?}
+ \begin{description}
+ \item[Join:] { \url{https://lists.gnu.org/mailman/listinfo/taler}}
+ \item[Test:] \url{https://bugs.taler.net/}
+ \item[Translate:] \url{https://weblate.taler.net/}\footnote{Contact: \url{translation-volunteer@taler.net}}
+ \item[Integrate:] \url{https://docs.taler.net/}
+ \item[Develop:] \url{https://git.taler.net/}
+ \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler}
+ \end{description}
+\end{frame}
+
+
+\begin{frame}
+\frametitle{Do you have any questions?}
+\vfill
+References:
+{\tiny
+ \begin{enumerate}
+ \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach.
+ {\em Zero-Knowledge Age Restriction for GNU Taler}.
+ {\bf 27th European Symposium on Research in Computer Security (ESORICS), 2022}.}
+ \item{David Chaum, Christian Grothoff and Thomas Moser.
+ {\em How to issue a central bank digital currency}.
+ {\bf SNB Working Papers, 2021}.}
+ \item{Christian Grothoff, Bart Polot and Carlo von Loesch.
+ {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}.
+ {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.}
+ \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci.
+ {\em Enabling Secure Web Payments with GNU Taler}.
+ {\bf SPACE 2016}.}
+ \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff.
+ {\em Taler: Taxable Anonymous Libre Electronic Reserves}.
+ Available upon request. 2016.}
+ \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza.
+ {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}.
+ {\bf IEEE Symposium on Security \& Privacy, 2016}.}
+ \item{David Chaum, Amos Fiat and Moni Naor.
+ {\em Untraceable electronic cash}.
+ {\bf Proceedings on Advances in Cryptology, 1990}.}
+ \item{Phillip Rogaway.
+ {\em The Moral Character of Cryptographic Work}.
+ {\bf Asiacrypt}, 2015.} \label{bib:rogaway}
+\end{enumerate}
+}
+\end{frame}
+
+
+\end{document}
+
+
+
diff --git a/presentations/comprehensive/main.tex b/presentations/comprehensive/main.tex
@@ -792,7 +792,7 @@ positives in fraud detection
\begin{itemize}
\item Multi-tenant support
\item Refunds
- \item Tipping (Website pays visitor)
+ \item Templates
\item Webhooks
\item Inventory management (optional)
\end{itemize}
@@ -839,7 +839,7 @@ positives in fraud detection
\begin{itemize}
\item {\bf wallet-core} is the logic shared by all interfaces
\item Applications exist for Android, F-Droid,
- WebExtension (Chrome, Chromium, Firefox, etc.), iOS ({\bf WiP})
+ WebExtension (Chrome, Chromium, Firefox, etc.), iOS
\item Features include:
\begin{itemize}
\item Multi-currency support
@@ -863,14 +863,18 @@ positives in fraud detection
\begin{tikzpicture}
\tikzstyle{def} = [node distance= 5em and 4.5em, inner sep=1em, outer sep=.3em];
\node (origin) at (0,0) {};
- \node (gui) [def,above=of origin,draw]{wallet-gui};
- \node (core) [def,below=of gui,draw]{wallet-core};
+ \node (guia) [def,above left=of origin,draw]{Android};
+ \node (guii) [def,above right=of origin,draw]{iOS};
+ \node (guiw) [def,above=of origin,draw]{WebExtension};
+ \node (core) [def,below=of guiw,draw]{wallet-core};
\node (sync) [def, draw, below left=of core] {Sync};
\node (taler) [def, draw, below right=of core] {Taler};
\node (anastasis) [def, draw, below=of core] {Anastasis};
\tikzstyle{C} = [color=black, line width=1pt]
- \draw [<->, C] (gui) -- (core) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (guia) -- (core) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (guii) -- (core) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (guiw) -- (core) node [midway, above, sloped] (TextNode) {};
\draw [<->, C] (core) -- (sync) node [midway, above, sloped] (TextNode) {Backup};
\draw [<->, C] (core) -- (taler) node [midway, above, sloped] (TextNode) {Payment};
\draw [<->, C] (core) -- (anastasis) node [midway, above, sloped] (TextNode) {Key Escrow};
@@ -928,18 +932,25 @@ positives in fraud detection
\frametitle{Taler: Auditor Perspective}
\begin{center}
\begin{tikzpicture}
- \tikzstyle{def} = [node distance=2em and 2.5em, inner sep=1em, outer sep=.3em];
- \node (origin) at (0,0) {};
- \node (httpd) [def,above left=of origin,draw]{auditor-httpd};
- \node (report) [def,above right=of origin,draw]{auditor-report};
- \node (postgres-A) [def, draw, below=of origin] {Postgres (Auditor)};
- \node (postgres-E) [def, draw, below=of postgres-A] {Postgres (Bank)};
+ \tikzstyle{def} = [node distance=3em and 2.5em, inner sep=1em, outer sep=.3em];
+ \node (origin) at (0,0) {Postgres (Auditor)};
+ \node (httpd) [def,above=of origin,draw]{auditor-httpd};
+ \node (spa) [def,above right=of origin,draw]{auditor-spa};
+ \node (merchant) [def,above left=of origin,draw]{merchant};
+ \node (report) [def,left=of origin,draw]{a-h-*};
+ \node (wirereport) [def,right=of origin,draw]{a-h-wire-*};
+ \node (postgres-E) [def, draw, below=of origin] {Postgres (Exchange)};
+ \node (postgres-B) [def, draw, right=of postgres-E] {Postgres (Bank)};
\tikzstyle{C} = [color=black, line width=1pt]
- \draw [->, C] (postgres-E) -- (postgres-A) node [midway, above, sloped] (TextNode) {sync};
- \draw [<->, C] (httpd) -- (postgres-A) node [midway, above, sloped] (TextNode) {};
- \draw [<->, C] (report) -- (postgres-A) node [midway, above, sloped] (TextNode) {};
+ \draw [->, C] (postgres-E) -- (origin) node [midway, above, sloped] (TextNode) {sync};
+ \draw [<->, C] (httpd) -- (origin) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (httpd) -- (spa) node [midway, above, sloped] (TextNode) {};
+ \draw [->, C] (merchant) -- (httpd) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (report) -- (origin) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (wirereport) -- (origin) node [midway, above, sloped] (TextNode) {};
+ \draw [<->, C] (wirereport) -- (postgres-B) node [midway, above, sloped] (TextNode) {nexus};
\end{tikzpicture}
\end{center}
\end{frame}
@@ -950,7 +961,7 @@ positives in fraud detection
\begin{itemize}
\item provides an implementation of the Wire Gateway for the exchange
- \item supports EBICS 2.5
+ \item supports EBICS 2.5 and 3.0
\item other APIs such as FinTS or PSD2-style XS2A APIs can be added
without requiring changes to the Exchange
\item was tested with GLS Bank (DE) and Postfinance (CH) accounts and real EUR/CHF
@@ -1131,6 +1142,13 @@ positives in fraud detection
\end{frame}
+\begin{frame}{Cashless2ecash by Joel Haeberli}
+ \begin{center}
+ \includegraphics[width=\textwidth]{cashless2ecash.png}
+ \end{center}
+\end{frame}
+
+
\begin{frame}{TalDir (WiP)}
TalDir is an extension to the existing
peer-to-peer payment functionality.