commit 02a00ce8a84a4ce77778e9796f8ab9012c7f6223
parent b58d4d15ab55577df05066f2f903fef2f9d72e58
Author: Christian Grothoff <christian@grothoff.org>
Date: Tue, 25 Nov 2025 21:26:07 +0100
prep for Schweinfurt
Diffstat:
11 files changed, 1039 insertions(+), 704 deletions(-)
diff --git a/presentations/2025-eurodig/slides/slides-EuroDIG2025.tex b/presentations/2025-eurodig/slides/slides-EuroDIG2025.tex
@@ -54,7 +54,7 @@
\usepackage{listings}
\usepackage{tikz, xcolor}
-\usetikzlibrary{shapes,arrows,positioning}
+\usetikzlibrary{shapes,arrows,positioning}
\tikzset{
%Define standard arrow tip
>=stealth',
@@ -85,11 +85,11 @@
%\usetikzlibrary{shapes,arrows}
-\tikzstyle{decision} = [diamond, draw, text width=4.5em,
- text badly centered, node distance=2cm,
+\tikzstyle{decision} = [diamond, draw, text width=4.5em,
+ text badly centered, node distance=2cm,
inner sep=0pt]
-\tikzstyle{block} = [rectangle, draw, text width=5em,
- text centered, rounded corners,
+\tikzstyle{block} = [rectangle, draw, text width=5em,
+ text centered, rounded corners,
minimum height=4em, node distance=3cm]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{lineeee} = [draw]
@@ -109,7 +109,7 @@
\begin{document}
-\frame{\maketitle
+\frame{\maketitle
}
@@ -214,13 +214,13 @@ However, GNU Taler is
-\begin{frame}{Taler : Deployment plan}
+\begin{frame}{Taler: Deployment plan}
\begin{block}{In Switzerland}
\begin{itemize}
- \item \textit{Netzbon} : Local currency in Basel, deployment already started.
- \item \textit{BFH Intern} : Snacks and café automats, in use.
- \item \textit{CHF in Switzerland} : deployment just started
+ \item \textit{Netzbon}: Local currency in Basel, deployment already started.
+ \item \textit{BFH Intern}: Snacks and café automats, in use.
+ \item \textit{CHF in Switzerland}: deployment just started
\end{itemize}
\end{block}
\begin{block}{Europe}
@@ -265,7 +265,7 @@ However, GNU Taler is
\end{column}
\begin{column}{0.47\textwidth}
-
+
\begin{center}
Google Play Store
@@ -287,16 +287,16 @@ However, GNU Taler is
\framesubtitle{ Install the Taler Wallet}
\begin{columns}
\begin{column}{0.67\textwidth}
- \begin{center}
+ \begin{center}
\includegraphics[width=0.7\textwidth]{./screenshots/01_Play_store-3.jpeg}
\end{center}
\end{column}
\begin{column}{0.27\textwidth}
\begin{center}
Taler wallet icon:
-
+
\vspace{1cm}
-
+
\includegraphics[width=0.4\textwidth]{./screenshots/02_icon_taler_app.jpg}
\end{center}
\end{column}
@@ -321,7 +321,7 @@ However, GNU Taler is
\end{center}
\end{column}
\end{columns}
-
+
\end{frame}
@@ -341,7 +341,7 @@ However, GNU Taler is
\end{center}
\end{column}
\end{columns}
-
+
\end{frame}
@@ -361,7 +361,7 @@ However, GNU Taler is
\end{center}
\end{column}
\end{columns}
-
+
\end{frame}
@@ -387,7 +387,7 @@ However, GNU Taler is
\end{column}
\end{columns}
-
+
\end{frame}
@@ -408,7 +408,7 @@ However, GNU Taler is
\end{column}
\end{columns}
-
+
\end{frame}
@@ -429,7 +429,7 @@ However, GNU Taler is
\end{column}
\end{columns}
-
+
\end{frame}
@@ -461,11 +461,11 @@ However, GNU Taler is
\begin{center}
\includegraphics[width=0.4\textwidth]{./images/QR-code-backend.demo.taler.net.png}
-
+
\end{center}
\end{column}
\begin{column}{0.45\textwidth}
- \begin{block}{Create your shop / do your first delivery}
+ \begin{block}{Create your shop / do your first delivery}
\begin{itemize}
\item Create a product.
@@ -513,7 +513,7 @@ curl --request POST \
--header 'User-Agent: yourApp/0.0.1' \
--data '{"order":{
"amount": "KUDOS:10",
- "summary": "Test for EuroDIG",
+ "summary": "Test for EuroDIG",
"fulfillment_message": "Thank you"}}'
\end{verbatim}
@@ -526,12 +526,12 @@ curl --request POST \
% --header 'User-Agent: yourApp/0.0.1' \
% --data '{"order":{
% "amount": "KUDOS:10",
-% "summary": "Test for EuroDIG",
+% "summary": "Test for EuroDIG",
% "fulfillment_message": "Thank you"},
% "create_token":false}'
-
+
% curl --request POST \
@@ -551,7 +551,7 @@ curl --request POST \
\begin{frame}[fragile,fragile]
\frametitle{Insert a new order (Cont.)}
-
+
Got the message as a response:
\begin{verbatim}
{
@@ -561,10 +561,10 @@ curl --request POST \
{
"order_id": "2025.112-02CDQQYASFPPY"
-}%
-
+}%
+
\end{verbatim}
-
+
\end{frame}
\begin{frame}[fragile]
@@ -581,11 +581,11 @@ https://backend.demo.taler.net/instances/sandbox/orders/2025.132-01RCH1C173JC4
\begin{verbatim}
https://backend.demo.taler.net/instances/sandbox/private/orders/2025.132-01RCH1C173JC4
\end{verbatim}
-% Should work to
+% Should work to
\begin{verbatim}
taler://pay/backend.demo.taler.net/instances/sandbox/2025.132-01RCH1C173JC4
\end{verbatim}
-
+
\end{frame}
\section{Questions and Answers}
@@ -666,4 +666,3 @@ taler://pay/backend.demo.taler.net/instances/sandbox/2025.132-01RCH1C173JC4
\end{columns}
\end{frame}
-
diff --git a/presentations/comprehensive/2025-munich.tex b/presentations/comprehensive/2025-munich.tex
@@ -346,17 +346,6 @@ Speech by Augustin Carstens, Bank of International Settlements (October 2020) on
-\begin{frame}{The Emergency Act of Canada}
-Speech by Premier Kenney, Alberta, February 2022.
- \begin{center}
- \movie[height = 0.5\paperheight, poster, showcontrols]{The Emergency Act of Canada}
- {emergencyact.mp4}
-
-{\tiny \url{https://www.youtube.com/watch?v=NehMAj492SA} (2'2022)}
- \end{center}
-\end{frame}
-
-
\section{GNU Taler: Introduction}
\begin{frame}
@@ -500,205 +489,20 @@ login or multi-factor authentication
\input protocol-basics.tex
\input refresh.tex
+\input offline.tex
-\section{Component Zoo}
-
-\begin{frame}
- \vfill
- \begin{center}
- {\bf Component Zoo}
- \end{center}
- \vfill
-\end{frame}
-
-
-\begin{frame}{The Taler Software Ecosystem: Overview}
- \framesubtitle{\url{https://taler.net/en/docs.html}}
- Taler is based on modular components that work together to provide a
- complete payment system:
- \vfill
- \begin{itemize}
- \item {\bf Exchange:} Service provider for digital cash
- \begin{itemize}
- \item Core exchange software (cryptography, database)
- \item Air-gapped key management, real-time {\bf auditing}
- \item {\bf libeufin}: Modular integration with banking systems
- \item {\bf challenger}: KYC service with OAuth 2.0 API
- \end{itemize}
- \item {\bf Merchant:} Integration service for existing businesses
- \begin{itemize}
- \item Core merchant backend software (cryptography, database)
- \item {\bf Back-office interface} for staff
- \item {\bf Frontend integration} (E-commerce, Point-of-sale)
- \end{itemize}
- \item {\bf Wallet:} Consumer-controlled applications for e-cash
- \begin{itemize}
- \item Multi-platform wallet software (for browsers \& mobile phones)
- \item Wallet backup storage providers ({\bf sync} \& {\bf Anastasis})
- \end{itemize}
- \end{itemize}
-\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
- \end{itemize}
-\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}{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 Works on Android, F-Droid, iOS, Ubuntu Touch,
- WebExtension (Chrome, Chromium, Firefox, etc.)
- \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}
- \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
- \end{itemize}
-\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}{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,
- making Taler a layer 2 system for crypto-currencies (like Lightning).
-
- \begin{itemize}
- \item provides an implementation of the Wire Gateway for the exchange
- \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}
-\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
- \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}{The Emergency Act of Canada}
+Speech by Premier Kenney, Alberta, February 2022.
+ \begin{center}
+ \movie[height = 0.5\paperheight, poster, showcontrols]{The Emergency Act of Canada}
+ {emergencyact.mp4}
-\begin{frame}{Payment plugins}
-\begin{minipage}{5cm}
- \includegraphics[width=4cm]{screenshots/woocommerce-cart.png}
- \includegraphics[width=4cm]{screenshots/pretix.png}
- \end{minipage}
-\begin{minipage}{5cm}
- \begin{itemize}
- \item Pretix, ticket sales system
- \item Joomla!, an e-commerce platform
- \item WooCommerce, an e-commerce solution on top of WordPress
- \item DrupalCommerce, an e-commerce solution on top of Drupal
- \end{itemize}
-\end{minipage}
+{\tiny \url{https://www.youtube.com/watch?v=NehMAj492SA} (2'2022)}
+ \end{center}
\end{frame}
-\input offline.tex
\section{Future Work \& Conclusion}
@@ -829,6 +633,9 @@ login or multi-factor authentication
\end{frame}
+\input zoo.tex
+
+
% This should be last...
\begin{frame}{Acknowledgments}
diff --git a/presentations/comprehensive/2025-schweinfurt.tex b/presentations/comprehensive/2025-schweinfurt.tex
@@ -0,0 +1,678 @@
+\documentclass[aspectratio=169,t]{beamer}
+\input taler-macros
+
+\newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET}
+\newcommand{\SUB}{The GNU Taler Payment System}
+\newcommand{\AUTHOR}{Christian Grothoff}
+\newcommand{\SPEAKER}{Christian Grothoff}
+\newcommand{\INST}{The GNU Project}
+\newcommand{\DATE}{December 2025}
+
+% Do not edit this part
+\title{\TITLE}
+\subtitle{\SUB}
+\date{\DATE}
+\author[\SPEAKER]{\AUTHOR}
+\institute{\INST}
+
+
+\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}
+
+\usepackage{booktabs}
+\usepackage{makecell}
+\usepackage{arydshln}
+
+
+
+% "The GNU Taler Payment System", including
+% an introduction to our objectives,
+% background on the technology,
+% demonstration of the system,
+% social implications and open issues.
+
+% 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}
+
+
+\begin{document}
+
+\begin{frame}[plain]
+\maketitle
+\end{frame}
+
+\begin{frame}{Agenda}
+ \tableofcontents
+\end{frame}
+
+\section{Motivation \& Background}
+
+
+\begin{frame}{A Social Problem}
+% \vfill
+ This was a question posed to RAND researchers in 1971:
+
+\begin{quote}
+ ``Suppose you were an advisor to the head of the KGB. Suppose you are given the assignment of designing a system for the surveillance of all citizens and visitors within the boundaries of the USSR. The system is not to be too obtrusive or obvious. What would be your decision?''
+\end{quote}
+%The result: an electronic funds transfer system that looks
+%strikingly similar today's debit card system.
+\pause
+\begin{minipage}{2cm}
+\includegraphics[width=2cm]{pics/nsa_spy.jpg}
+\end{minipage}
+\begin{minipage}{12cm}
+``I think one of the big things that we need to do, is we need
+to get away from true-name payments on the Internet. The credit
+card payment system is one of the worst things that happened for the
+user, in terms of being able to divorce their access from their
+identity.'' \hfill --Edward Snowden, IETF 93 (2015)
+\end{minipage}
+
+\end{frame}
+
+
+\begin{frame}{Banks have Problems, too!}
+
+ 3D secure (``verified by visa'') is a nightmare:
+
+ \begin{minipage}{5cm}
+ \begin{itemize}
+ \item Complicated process
+ \item Shifts liability to consumer
+ \item Significant latency
+ \item Can refuse valid requests
+ \item Legal vendors excluded
+ \item No privacy for buyers
+ \end{itemize}
+ \end{minipage}
+ \begin{minipage}{5cm}
+ \includegraphics[width=\textwidth]{illustrations/cc3ds.pdf}
+ \end{minipage}
+ \vfill
+ Online credit card payments will be replaced, but with what?
+\end{frame}
+
+
+\begin{frame}{The Bank's Problem}
+ \begin{itemize}
+ \item Global tech companies push oligopolies
+ \item Privacy and federated finance are at risk
+% \item 30\% fees are conceivable
+ \item Economic sovereignty is in danger
+ \end{itemize}
+\begin{textblock*}{4cm}(11.5cm,5.2cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/amazon.png}}
+\end{textblock*}
+\begin{textblock*}{2cm}(11cm,3cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/alipay.jpeg}}
+\end{textblock*}
+\begin{textblock*}{2cm}(11cm,7cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/paypal.jpeg}}
+\end{textblock*}
+\begin{textblock*}{2cm}(3cm,9cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/applepay.jpeg}}
+\end{textblock*}
+\begin{textblock*}{2cm}(7cm,7cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/samsungpay.jpeg}}
+\end{textblock*}
+\begin{textblock*}{1cm}(9.5cm,6.3cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/android_pay.png}}
+\end{textblock*}
+\vfill
+\end{frame}
+
+
+\begin{frame}{Predicting the Future}
+ \begin{itemize}
+ \item Google and Apple will be your bank and run your payment system
+ \item They can target advertising based on your purchase history, location and
+ your ability to pay
+ \item They will provide more usable, faster and broadly available
+ payment solutions; our federated banking system will be history
+% just like SMTP is now Gmail.
+ \item After they dominate the payment sector, they will start to charge fees
+ befitting their oligopoly size
+ \item Competitors and vendors not aligning with their corporate ``values''
+ will be excluded by policy and go bankrupt
+ \item The imperium will have another major tool for its financial warfare
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Central Bank Digital Currency?}
+Speech by Augustin Carstens, Bank of International Settlements (October 2020) on the difference between Central Bank Digital Currencies and cash.
+ \begin{center}
+ \movie[height = 0.5\paperheight, poster, showcontrols]{Central Bank Digital Currency vs. Cash}
+ {bis-cbdc.mp4}
+
+{\tiny
+\url{https://www.youtube.com/watch?v=R_E4Uu7ycqE} (10'2020)}
+\end{center}
+\end{frame}
+
+
+
+\section{GNU Taler: Introduction}
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf GNU Taler: Introduction}
+ \end{center}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{GNU Taler~\cite{taler2016space,DBLP:phd/hal/Dold19,cbdc2021chaum}}
+ \vfill
+ \begin{center}
+ {\huge {\bf Digital} cash, made \textbf{socially responsible}.}
+ \end{center}
+ \vfill
+ \begin{center}
+ \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf}
+ \end{center}
+ \vfill
+ \begin{center}
+ Privacy-Preserving, Practical, Taxable, Free Software, Efficient
+ \end{center}
+ \vfill
+ \vfill
+\ %
+\end{frame}
+
+
+\begin{frame}{What is Taler?}
+ \framesubtitle{\url{https://taler.net/en/features.html}} \noindent
+Taler is
+ \vfill
+ \begin{itemize}
+ \item a Free/Libre software \emph{payment system} infrastructure project
+ \item ... with a surrounding software ecosystem
+ \item ... and a company (Taler Systems S.A.) and community that wants to deploy it
+ as widely as possible.
+ \end{itemize}
+ \vfill
+\noindent
+ However, Taler is
+ \begin{itemize}
+ \item \emph{not} a currency or speculative asset
+ \item \emph{not} a long-term store of value
+ \item \emph{not} a network or instance of a system
+ \item \emph{not} based on proof-of-work or proof-of-stake
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Design principles}
+ \framesubtitle{https://taler.net/en/principles.html}
+GNU Taler must ...
+\begin{enumerate}
+ \item {... be implemented as {\bf free software}.}
+ \item {... protect the {\bf privacy of buyers}.}
+ \item {... enable the state to {\bf tax income} and crack down on
+ illegal business activities.}
+ \item {... prevent payment fraud.}
+ \item {... only {\bf disclose the minimal amount of information
+ necessary}.}
+ \item {... be usable.}
+ \item {... be efficient.}
+ \item {... avoid single points of failure.}
+ \item {... foster {\bf competition}.}
+\end{enumerate}
+\end{frame}
+
+
+\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=0.8\textwidth]{operations.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Consumer Impact of Taler}
+\begin{itemize}
+\item {\bf Convenient:} pay with one click instantly --– in Euro,
+Dollar, Yen or Bitcoin
+\item {\bf Friction-free security:} Payments do not require sign-up,
+login or multi-factor authentication
+\item {\bf Privacy-preserving:} payment requires/shares no personal information
+\item {\bf Bank account:} not required
+\end{itemize}
+\end{frame}
+
+
+\begin{frame}{Merchant Impact of Taler}
+\begin{itemize}
+\item {\bf Instant clearance:} one-click transactions and instant clearance at par
+\item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort
+\item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs
+\item {\bf 1-click checkout:} without Amazon and without false positives in fraud detection
+\end{itemize}
+\end{frame}
+
+
+\begin{frame}{Usability of Taler}
+ \vfill
+ \begin{center}
+ \url{https://demo.taler.net/}
+ \end{center}
+ \begin{enumerate}
+ \item Install browser extension.
+ \item Visit the {\tt bank.demo.taler.net} to withdraw coins.
+ \item Visit the {\tt shop.demo.taler.net} to spend coins.
+ \end{enumerate}
+ \vfill
+\end{frame}
+
+
+\input protocol-basics.tex
+\input offline.tex
+\input oim.tex
+
+
+\begin{frame}{The Emergency Act of Canada}
+Speech by Premier Kenney, Alberta, February 2022.
+ \begin{center}
+ \movie[height = 0.5\paperheight, poster, showcontrols]{The Emergency Act of Canada}
+ {emergencyact.mp4}
+
+{\tiny \url{https://www.youtube.com/watch?v=NehMAj492SA} (2'2022)}
+ \end{center}
+\end{frame}
+
+
+
+
+\section{Future Work \& Conclusion}
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf Future Work \& Conclusion}
+ \end{center}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{Use Case: Journalism}
+ Today:
+ \begin{itemize}
+ \item Corporate structure % ($\Rightarrow$ filter)
+ \item Advertising primary revenue % ($\Rightarrow$ dependence)
+ \item Tracking readers critical for business success
+ \item Journalism and marketing hard to distinguish
+ \end{itemize}\vfill\pause
+ With GNU Taler:
+ \begin{itemize}
+ \item One-click micropayments per article
+ \item Hosting requires no expertise % (no PCI DSS)
+ \item Reader-funded reporting separated from marketing
+ \item Readers can remain anonymous
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Taler: Project Status}
+\framesubtitle{\url{https://docs.taler.net/}}
+\begin{itemize}
+ \item Cryptographic protocols and core exchange component are stable
+ \item Pilot project at Bern University of Applied Sciences cafeteria
+ \item Netzbon (regional currency) in Basel launched
+ \item Taler Operations AG live Swiss-wide
+ \item Internal alpha deployment with GLS Bank (Germany)
+ \item Internal alpha deployment with Magnet Bank (Hungary)
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Competitor comparison}
+ \begin{center} \small
+ \begin{tabular}{l||c|c|c|c|c}
+ & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline
+ Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline
+ Offline & +++ & $-$$-$ & $-$$-$ & + & $+$$+$ \\ \hline
+ Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline
+ Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline
+ Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline
+ Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline
+ Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline
+ Security & $-$ & o & o & $-$$-$ & ++ \\ \hline
+ Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline
+ Libre & $-$ & +++ & +++ & $-$ $-$ $-$& +++ \\
+ \end{tabular}
+ \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 Tax-deductable receipts for donations to charities (donau.git)
+ \item Unlinkable anonymous subscriptions and discount tokens ({\tt ivan@taler.net})
+ \item $\ldots$
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Open Challanges}
+ \begin{itemize}
+ \item Try to explain this to lawyers and AML staff of banks
+ \item What are convincing arguments for citizens to switch?
+ \item How to address anti-competitive cash-back from card payments?
+ \item $\ldots$
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{How to support?}
+ \begin{description}
+ \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}
+ \item[Discuss:] {\small \url{https://ich.taler.net/}}
+ \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/}
+ \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler}
+ \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net}
+ \item[Integrate:] \url{https://docs.taler.net/}
+ \item[Donate:] \url{https://gnunet.org/ev}
+ \item[Partner:] \url{https://taler-systems.com/}
+ \end{description}
+\end{frame}
+
+
+\begin{frame}{Conclusion}
+ \begin{center}
+ {\bf What can we do?}
+ \end{center}
+ \vfill
+\begin{itemize}
+ \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and}
+ \item{Engage in arms race with deliberately unregulatable blockchains}
+% \item{Enjoy the ``benefits'' of cash \\
+% \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill}
+\end{itemize}
+\vfill
+\begin{center}
+ {\bf OR}
+\end{center}
+\vfill
+\begin{itemize}
+ \item{Establish free software alternative balancing social goals!}
+\end{itemize}
+\vfill
+\end{frame}
+
+
+
+\section*{References}
+\begin{frame}[allowframebreaks]{References}
+\bibliographystyle{plain}
+\bibliography{ref,extra,rfc,biblio-defqa}
+\end{frame}
+
+
+% This should be last...
+\begin{frame}{Acknowledgments}
+
+ \begin{minipage}{0.45\textwidth} \ \\
+ {\tiny Funded by the European Union (Project 101135475).}
+
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{../bandera.jpg}
+ \end{center}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{0.45\textwidth}
+ {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).}
+
+ \begin{center}
+ \includegraphics[width=0.65\textwidth]{../sbfi.jpg}
+ \end{center}
+ \end{minipage}
+
+ \vfill
+
+ {\tiny
+
+ Views and opinions expressed are however those of the author(s) only
+ and do not necessarily reflect those of the European Union. Neither the
+ European Union nor the granting authority can be held responsible for
+ them.
+
+ }
+\end{frame}
+
+
+\end{document}
+
+
+
+\begin{frame}{Future work}
+ \begin{itemize}
+ \item Performance improvements for RSA in FLOSS crypto libraries
+ \item Integrate with e-ID for easier \& cheaper KYC
+ \item Buy anonymous pre-paid debit cards on-demand with Taler wallet
+ \item Implement PQC across the stack (with cipher agility, where possible with additive security)
+ \end{itemize}
+\end{frame}
diff --git a/presentations/comprehensive/illiteracy.png b/presentations/comprehensive/illiteracy.png
Binary files differ.
diff --git a/presentations/comprehensive/main.tex b/presentations/comprehensive/main.tex
@@ -688,474 +688,8 @@ positives in fraud detection
\vfill
\end{frame}
-
-\section{Component Zoo}
-
-\begin{frame}
- \vfill
- \begin{center}
- {\bf Component Zoo}
- \end{center}
- \vfill
-\end{frame}
-
-
-\begin{frame}{The Taler Software Ecosystem: Overview}
- \framesubtitle{\url{https://taler.net/en/docs.html}}
- Taler is based on modular components that work together to provide a
- complete payment system:
- \vfill
- \begin{itemize}
- \item {\bf Exchange:} Service provider for digital cash
- \begin{itemize}
- \item Core exchange software (cryptography, database)
- \item Air-gapped key management, real-time {\bf auditing}
- \item {\bf libeufin}: Modular integration with banking systems
- \item {\bf challenger}: KYC service with OAuth 2.0 API
- \end{itemize}
- \item {\bf Merchant:} Integration service for existing businesses
- \begin{itemize}
- \item Core merchant backend software (cryptography, database)
- \item {\bf Back-office interface} for staff
- \item {\bf Frontend integration} (E-commerce, Point-of-sale)
- \end{itemize}
- \item {\bf Wallet:} Consumer-controlled applications for e-cash
- \begin{itemize}
- \item Multi-platform wallet software (for browsers \& mobile phones)
- \item Wallet backup storage providers ({\bf sync} \& {\bf Anastasis})
- \end{itemize}
- \end{itemize}
-\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
- \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 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}
-\frametitle{Taler: Merchant Perspective}
-\begin{center}
-\begin{tikzpicture}
- \tikzstyle{def} = [node distance= 3.5em and 2em, inner sep=1em, outer sep=.3em];
- \node (origin) at (0,0) {};
- \node (backend) [def,above=of origin,draw]{{\tiny taler-merchant-httpd}};
- \node (frontend) [def,above left=of backend,draw]{{\tiny E-commerce Frontend}};
- \node (backoffice) [def,above right=of backend,draw]{Backoffice};
- \node (postgres) [def, draw, below left=of backend] {Postgres};
- \node (sqlite) [def, draw, below=of backend] {Sqlite};
- \node (alt) [def, draw, below right=of backend] {...};
-
- \tikzstyle{C} = [color=black, line width=1pt]
-
- \draw [->, C] (frontend) -- (backend) node [midway, above, sloped] (TextNode) {REST API};
- \draw [->, C] (backoffice) -- (backend) node [midway, above, sloped] (TextNode) {REST API};
- \draw [<->, C] (backend) -- (postgres) node [midway, above, sloped] (TextNode) {SQL};
- \draw [<->, C] (backend) -- (sqlite) node [midway, above, sloped] (TextNode) {SQL};
- \draw [<->, C] (backend) -- (alt) node [midway, above, sloped] (TextNode) {SQL};
-\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 Works on Android, F-Droid, iOS, Ubuntu Touch,
- WebExtension (Chrome, Chromium, Firefox, etc.)
- \item Features include:
- \begin{itemize}
- \item Multi-currency support
- \item Wallet-to-wallet payments
- \item CRDT-like data model
- \end{itemize}
- \end{itemize}
- \end{minipage}
- \begin{minipage}{3cm}
- \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png}
- \end{minipage}
-\end{frame}
-
-
-\begin{frame}
-\frametitle{Taler: Wallet Architecture}
- \framesubtitle{Background: \url{https://anastasis.lu/}}
-\begin{center}
-\begin{tikzpicture}
- \tikzstyle{def} = [node distance= 3.5em and 5em, inner sep=1em, outer sep=.3em];
- \node (origin) at (0,0) {};
- \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=of core] {Sync};
- \node (taler) [def, draw, below right=of core] {Taler};
- \node (anastasis) [def, draw, below left=of core] {Anastasis};
-
- \tikzstyle{C} = [color=black, line width=1pt]
- \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) -- (anastasis) node [midway, above, sloped] (TextNode) {Key Escrow};
- \draw [<->, C] (core) -- (taler) node [midway, above, sloped] (TextNode) {Payment};
- \draw [<->, C] (core) -- (sync) node [midway, right] (TextNode) {Backup};
-\end{tikzpicture}
-\end{center}
-\end{frame}
-
-
-\begin{frame}[fragile]{RFC 8905: \texttt{payto:} Uniform Identifiers for Payments and Accounts}
- \vfill
- Like \texttt{mailto:}, but for bank accounts instead of email accounts!
- \vfill
- \begin{verbatim}
- payto://<PAYMENT-METHOD>/<ACCOUNT-NR>
- ?subject=InvoiceNr42
- &amount=EUR:12.50
- \end{verbatim}
- \vfill
- Default action: Open app to review and confirm payment.
- \vfill
-\includegraphics[width=0.25\textwidth]{einzahlschein-ch.jpeg}
-\hfill
-\includegraphics[width=0.2\textwidth]{de-ueberweisungsformular.png}
- \vfill
-\end{frame}
-
-
-\begin{frame}[fragile]{Benefits of {\tt payto://}}
- \begin{itemize}
- \item Standardized way to represent financial resources (bank account, bitcoin wallet)
- and payments to them
- \item Useful on the client-side on the Web and for FinTech backend applications
- \item Payment methods (such as IBAN, ACH, Bitcoin) are registered with
- IANA and allow extra options
- \end{itemize}
- \begin{center}
- {\bf Taler wallet can generate payto://-URI for withdraw!}
- \end{center}
-\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
- \end{itemize}
-\end{frame}
-
-
-\begin{frame}
-\frametitle{Taler: Auditor Perspective}
-\begin{center}
-\begin{tikzpicture}
- \tikzstyle{def} = [node distance=3em and 2em, 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 report] {Postgres (Exchange)};
- \node (postgres-B) [def, draw, right=of postgres-E] {Postgres (Bank)};
-
- \tikzstyle{C} = [color=black, line width=1pt]
-
- \draw [->, C] (postgres-E) -- (origin) node [midway, left] (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, right] (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}[fragile]{Taler: Bank Perspective}
-\begin{adjustbox}{max totalsize={.9\textwidth}{.7\textheight},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 (nexus) [def, draw, below right=of exchange] {Nexus};
- \node (corebanking) [def, draw, below left=of nexus] {Core Banking};
- \node (nginx) [def, draw, above=of exchange]{Nginx};
- \node (postgres) [def, draw, below left=of exchange]{Postgres};
- \node (postgres-nexus) [def, draw, below right=of nexus]{Postgres};
-
- \tikzstyle{C} = [color=black, line width=1pt]
-
- \draw [<-, C] (exchange) -- (nginx) node [midway, above, sloped] (TextNode) {REST API};
- \draw [<-, C] (postgres) -- (exchange) node [midway, above, sloped] (TextNode) {SQL};
- \draw [<-, C] (postgres-nexus) -- (nexus) node [midway, above, sloped] (TextNode) {SQL};
- \draw [<-, C] (nexus) -- (exchange) node [midway, above, sloped] (TextNode) {Internal REST API};
- \draw [<-, C] (corebanking) -- (nexus) node [midway, above, sloped] (TextNode) {EBICS/FinTS};
-
-\end{tikzpicture}
-\end{adjustbox}
-\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,
- making Taler a layer 2 system for crypto-currencies (like Lightning).
-
- \begin{itemize}
- \item provides an implementation of the Wire Gateway for the exchange
- \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}
- \url{https://bitcoin.ice.bfh.ch/}
- \end{center}
-\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}
- \item WooCommerce and its plugins are implemented in PHP
- \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}
- \item Joomla! and its plugins are implemented in PHP
- \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}
- \item The Point-of-Sale App is implemented in Kotlin
- \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}{Cashier App for Android}
-\begin{minipage}{4cm}
- \begin{itemize}
- \item Enables BFH staff to convert cash to e-cash
- \item Staff has special bank accounts with limited funds
- \item Students can pay staff in cash to receive e-cash
- \item The Cashier App is implemented in Kotlin
- \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}{TalDir (WiP)}
- TalDir is an extension to the existing
- peer-to-peer payment functionality.
-
- \begin{itemize}
- \item Registry to associate wallets with network addresses
- \item Extensible to different types of network services:
- \begin{itemize}
- \item E-mail
- \item SMS
- \item Twitter
- \item ...
- \end{itemize}
- \item Send payments or invoices to wallets associated with network address
- \item Will {\bf not} require sending wallet to use same network service
- \end{itemize}
-\end{frame}
-
-
+\input zoo.tex
\input protocol-basics.tex
-
-
\input refresh.tex
\section{Attacks \& Defenses}
@@ -1437,6 +971,8 @@ General notions:
\input age.tex
+\input oim.tex
+
\section{Software development \& deployment}
\begin{frame}
diff --git a/presentations/comprehensive/numeracy.png b/presentations/comprehensive/numeracy.png
Binary files differ.
diff --git a/presentations/comprehensive/offline.tex b/presentations/comprehensive/offline.tex
@@ -182,4 +182,3 @@ Many central banks today demand offline capabilities for CBDCs.
}
\end{center}
\end{frame}
-
diff --git a/presentations/comprehensive/oim.tex b/presentations/comprehensive/oim.tex
@@ -0,0 +1,77 @@
+\section{Oral Information Management}
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf Oral Information Management}
+
+ joint work with
+
+ MyOralVillage
+ \end{center}
+ \vfill
+\end{frame}
+
+\begin{frame}{Oral Information Management (OIM)}
+ OIM is a human-centered design practice governed by the following principles:
+ \begin{enumerate}
+\item Designs must first enhance client-side financial product usability.
+\item Designs should provide positive incentives to clients to acquire useful financial numeracy and financial literacy skills.
+\item The design process is client-guided.
+\item Oral designs should not embarrass or inconvenience or literate clients.
+\end{enumerate}
+\end{frame}
+
+
+\begin{frame}{Literacy}
+ \begin{center}
+ \includegraphics[width=0.7\textwidth]{illiteracy.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Numeracy}
+ \begin{center}
+ \includegraphics[width=0.7\textwidth]{numeracy.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Design}
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{taler-oim.png}
+\end{center}
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{transaction-types.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Results from Freetown (2025)}
+\begin{itemize}
+ \item Twenty-one (21) women speaking 6 local languages were briefed on how to send money in the OIM Taler prototype.\pause
+ \item Of these only 4 had completed primary school, and only 6 could read a 5-digit cash (ordinal) number.\pause
+ \item After 24 hours they were presented a Taler wallet with a random sum in new leone tokens.
+ They were asked to count the money, and complete 8 tasks to send some to another person by generating a scannable QR code.\pause
+ \item Sixteen (16) completed all 8 tasks with no errors. \pause
+ \item Four (4) completed all 8 tasks with two tries but no help. Only one was unable to complete the process successfully.
+\end{itemize}
+\end{frame}
+
+
+\begin{frame}{Voices from Freetown (2025)}
+ \begin{itemize}
+ \item ``This app is much better than Afrimoney. Everyone would use it.'' \pause
+ \item ``It’s simple, and you can correct your mistakes.'' \pause
+ \item After the test, participants were asked if they would use OIM
+ Taler, if it were available in Sierra Leone? All (!) stated that they:
+ \begin{itemize}
+\item would like to use it,
+\item prefer it to existing apps, and
+\item would share it with their friends
+and relations, especially those
+who had trouble with writing
+and numbers.
+\end{itemize}
+ \end{itemize}
+\end{frame}
diff --git a/presentations/comprehensive/taler-oim.png b/presentations/comprehensive/taler-oim.png
Binary files differ.
diff --git a/presentations/comprehensive/transaction-types.png b/presentations/comprehensive/transaction-types.png
Binary files differ.
diff --git a/presentations/comprehensive/zoo.tex b/presentations/comprehensive/zoo.tex
@@ -0,0 +1,239 @@
+\section{Component Zoo}
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf Component Zoo}
+ \end{center}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{The Taler Software Ecosystem: Overview}
+ \framesubtitle{\url{https://taler.net/en/docs.html}}
+ Taler is based on modular components that work together to provide a
+ complete payment system:
+ \vfill
+ \begin{itemize}
+ \item {\bf Exchange:} Service provider for digital cash
+ \begin{itemize}
+ \item Core exchange software (cryptography, database)
+ \item Air-gapped key management, real-time {\bf auditing}
+ \item {\bf libeufin}: Modular integration with banking systems
+ \item {\bf challenger}: KYC service with OAuth 2.0 API
+ \end{itemize}
+ \item {\bf Merchant:} Integration service for existing businesses
+ \begin{itemize}
+ \item Core merchant backend software (cryptography, database)
+ \item {\bf Back-office interface} for staff
+ \item {\bf Frontend integration} (E-commerce, Point-of-sale)
+ \end{itemize}
+ \item {\bf Wallet:} Consumer-controlled applications for e-cash
+ \begin{itemize}
+ \item Multi-platform wallet software (for browsers \& mobile phones)
+ \item Wallet backup storage providers ({\bf sync} \& {\bf Anastasis})
+ \end{itemize}
+ \end{itemize}
+\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
+ \end{itemize}
+\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}{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 Works on Android, F-Droid, iOS, Ubuntu Touch,
+ WebExtension (Chrome, Chromium, Firefox, etc.)
+ \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}
+ \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
+ \end{itemize}
+\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}{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,
+ making Taler a layer 2 system for crypto-currencies (like Lightning).
+
+ \begin{itemize}
+ \item provides an implementation of the Wire Gateway for the exchange
+ \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}
+\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
+ \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}{Payment plugins}
+\begin{minipage}{5cm}
+ \includegraphics[width=4cm]{screenshots/woocommerce-cart.png}
+ \includegraphics[width=4cm]{screenshots/pretix.png}
+ \end{minipage}
+\begin{minipage}{5cm}
+ \begin{itemize}
+ \item Pretix, ticket sales system
+ \item Joomla!, an e-commerce platform
+ \item WooCommerce, an e-commerce solution on top of WordPress
+ \item DrupalCommerce, an e-commerce solution on top of Drupal
+ \end{itemize}
+\end{minipage}
+\end{frame}
+
+
+\begin{frame}{Cashier App for Android}
+\begin{minipage}{4cm}
+ \begin{itemize}
+ \item Enables BFH staff to convert cash to e-cash
+ \item Staff has special bank accounts with limited funds
+ \item Students can pay staff in cash to receive e-cash
+ \item The Cashier App is implemented in Kotlin
+ \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}{TalDir (WiP)}
+ TalDir is an extension to the existing
+ peer-to-peer payment functionality.
+
+ \begin{itemize}
+ \item Registry to associate wallets with network addresses
+ \item Extensible to different types of network services:
+ \begin{itemize}
+ \item E-mail
+ \item SMS
+ \item Twitter
+ \item ...
+ \end{itemize}
+ \item Send payments or invoices to wallets associated with network address
+ \item Will {\bf not} require sending wallet to use same network service
+ \end{itemize}
+\end{frame}