marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

commit 02a00ce8a84a4ce77778e9796f8ab9012c7f6223
parent b58d4d15ab55577df05066f2f903fef2f9d72e58
Author: Christian Grothoff <christian@grothoff.org>
Date:   Tue, 25 Nov 2025 21:26:07 +0100

prep for Schweinfurt

Diffstat:
Mpresentations/2025-eurodig/slides/slides-EuroDIG2025.tex | 63+++++++++++++++++++++++++++++++--------------------------------
Mpresentations/comprehensive/2025-munich.tex | 215++++---------------------------------------------------------------------------
Apresentations/comprehensive/2025-schweinfurt.tex | 678+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apresentations/comprehensive/illiteracy.png | 0
Mpresentations/comprehensive/main.tex | 470+------------------------------------------------------------------------------
Apresentations/comprehensive/numeracy.png | 0
Mpresentations/comprehensive/offline.tex | 1-
Apresentations/comprehensive/oim.tex | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apresentations/comprehensive/taler-oim.png | 0
Apresentations/comprehensive/transaction-types.png | 0
Apresentations/comprehensive/zoo.tex | 239+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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}