marketing

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

2023-bdf.tex (34654B)


      1 \pdfminorversion=3
      2 \documentclass[fleqn,xcolor={usenames,dvipsnames},handout
      3 ]{beamer}
      4 \usepackage{amsmath}
      5 \usepackage{multimedia}
      6 \usepackage[utf8]{inputenc}
      7 \usepackage{framed,color,ragged2e}
      8 \usepackage[absolute,overlay]{textpos}
      9 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8}
     10 \usetheme{boxes}
     11 \setbeamertemplate{navigation symbols}{}
     12 \usepackage{xcolor}
     13 \usepackage[normalem]{ulem}
     14 \usepackage{listings}
     15 \usepackage{adjustbox}
     16 \usepackage{array}
     17 \usepackage{bbding}
     18 \usepackage{relsize}
     19 \usepackage{graphicx}
     20 \usepackage{pgf-umlsd}
     21 \usepackage{tikz,eurosym,calc}
     22 \usetikzlibrary{tikzmark}
     23 \usetikzlibrary{shapes,arrows,arrows.meta}
     24 \usetikzlibrary{positioning,fit,patterns}
     25 \usetikzlibrary{calc}
     26 
     27 % CSS
     28 \lstdefinelanguage{CSS}{
     29   basicstyle=\ttfamily\scriptsize,
     30   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},
     31   sensitive=true,
     32   morecomment=[l]{//},
     33   morecomment=[s]{/*}{*/},
     34   morestring=[b]',
     35   morestring=[b]",
     36   alsoletter={:},
     37   alsodigit={-}
     38 }
     39 
     40 % JavaScript
     41 \lstdefinelanguage{JavaScript}{
     42   basicstyle=\ttfamily\scriptsize,
     43   morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
     44   morecomment=[s]{/*}{*/},
     45   morecomment=[l]//,
     46   morestring=[b]",
     47   morestring=[b]'
     48 }
     49 
     50 \lstdefinelanguage{HTML5}{
     51   basicstyle=\ttfamily\scriptsize,
     52   language=html,
     53   sensitive=true,
     54   alsoletter={<>=-},
     55   morecomment=[s]{<!-}{-->},
     56   tag=[s],
     57   otherkeywords={
     58   % General
     59   >,
     60   % Standard tags
     61 	<!DOCTYPE,
     62   </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />,
     63 	% body
     64 	</body, <body,
     65 	% Divs
     66 	</div, <div, </div>,
     67 	% Paragraphs
     68 	</p, <p, </p>,
     69 	% scripts
     70 	</script, <script,
     71   % More tags...
     72   <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image>
     73   },
     74   ndkeywords={
     75   % General
     76   =,
     77   % HTML attributes
     78   charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
     79   % SVG attributes
     80   fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=,
     81   % CSS properties
     82   margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:,
     83 	% CSS3 properties
     84   transform:, -moz-transform:, -webkit-transform:,
     85   animation:, -webkit-animation:,
     86   transition:,  transition-duration:, transition-property:, transition-timing-function:,
     87   }
     88 }
     89 
     90 \lstdefinelanguage{JavaScript}{
     91   basicstyle=\ttfamily\scriptsize,
     92   keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for},
     93   keywordstyle=\color{blue}\bfseries,
     94   ndkeywords={class, export, boolean, throw, implements, import, this},
     95   ndkeywordstyle=\color{darkgray}\bfseries,
     96   identifierstyle=\color{black},
     97   sensitive=false,
     98   comment=[l]{//},
     99   morecomment=[s]{/*}{*/},
    100   commentstyle=\color{purple}\ttfamily,
    101   stringstyle=\color{red}\ttfamily,
    102   morestring=[b]',
    103   morestring=[b]"
    104 }
    105 
    106 \def\checkmark{\tikz\fill[scale=0.4](0,.35) -- (.25,0) -- (1,.7) -- (.25,.15) -- cycle;}
    107 
    108 
    109 \setbeamersize{description width=1em}
    110 
    111 \definecolor{blue}{rgb}{0,0,0.7}
    112 \newcommand{\orange}[1]{{\color{orange}#1}}
    113 \newcommand{\blue}[1]{{\color{blue}#1}}
    114 \newcommand{\red}[1]{{\color{red}#1}}
    115 \newcommand{\Guardian}{\mathcal{G}}
    116 \newcommand{\Child}{\mathcal{C}}
    117 \newcommand{\Customer}{\mathcal{C}}
    118 \newcommand{\Merchant}{\mathcal{M}}
    119 \newcommand{\Exchange}{\mathcal{E}}
    120 
    121 \newcommand{\Commit}{\mathsf{Commit}}
    122 \newcommand{\Attest}{\mathsf{Attest}}
    123 \newcommand{\Verify}{\mathsf{Verify}}
    124 \newcommand{\Derive}{\mathsf{Derive}}
    125 \newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}}
    126 \newcommand{\Compare}{\mathsf{Compare}}
    127 \newcommand{\AgeVer}{\mathsf{AgeVer}}
    128 
    129 \newcommand{\HashF}{\mathsf{H}}
    130 \newcommand{\Hash}{\mathsf{H}}
    131 \newcommand{\Block}{\mathbb{B}}
    132 \newcommand{\Pub}{\mathsf{Pub}}
    133 \newcommand{\Sign}{\mathsf{Sig}}
    134 \newcommand{\Ver}{\mathsf{Ver}}
    135 \newcommand{\Encoding}{\mathsf{Encoding}}
    136 \newcommand{\ECDSA}{\mathsf{ECDSA}}
    137 \newcommand{\Null}{\mathcal{O}}
    138 \newcommand{\EC}{\mathrm{ec}}
    139 \newcommand{\Curve}{\mathsf{Curve25519}}
    140 \newcommand{\SHA}{\mathsf{SHA256}}
    141 \newcommand{\SHAF}{\mathsf{SHA252}}
    142 \newcommand{\FDH}{\mathsf{FDH}}
    143 
    144 \newcommand{\negl}{\epsilon}
    145 
    146 \newcommand{\rand}{\mathsf{rand}}
    147 \newcommand{\age}{\mathsf{a}}
    148 \newcommand{\Age}{\mathsf{M}}
    149 \newcommand{\bage}{\mathsf{b}}
    150 \newcommand{\minage}{\mathsf{m}}
    151 \newcommand{\attest}{\mathsf{T}}
    152 \newcommand{\commitment}{\mathsf{Q}}
    153 \newcommand{\pruf}{\mathsf{P}}
    154 \newcommand{\Vcommitment}{\vec{\mathsf{Q}}}
    155 \newcommand{\Vpruf}{\vec{\mathsf{P}}}
    156 \newcommand{\blinding}{\beta}
    157 
    158 \newcommand{\ZN}{\mathbb{Z}_N}
    159 \newcommand{\Z}{\mathbb{Z}}
    160 \newcommand{\N}{\mathbb{N}}
    161 \newcommand{\A}{\mathbb{A}}
    162 \newcommand{\E}{\mathbb{E}}
    163 \newcommand{\F}{\mathbb{F}}
    164 \newcommand{\seck}{\mathsf{s}}
    165 \newcommand{\pubk}{\mathsf{P}}
    166 \renewcommand{\H}{\mathbb{H}}
    167 \newcommand{\K}{\mathbb{K}}
    168 \newcommand{\Proofs}{\mathbb{P}}
    169 \newcommand{\Commitments}{\mathbb{O}}
    170 \newcommand{\Attests}{\mathbb{T}}
    171 \newcommand{\Blindings}{\mathbb{B}}
    172 \newcommand{\Nil}{\perp}
    173 
    174 \newcommand{\p}{\mathsf{p}}
    175 \newcommand{\com}{\mathsf{com}}
    176 \newcommand{\prf}{\mathsf{prf}}
    177 
    178 \newcommand{\Adv}{\mathcal{A}}
    179 \newcommand{\PPT}{\mathfrak{A}}
    180 \newcommand{\Probability}{\mathrm{Pr}}
    181 \newcommand{\Algorithm}{f}
    182 \renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}}
    183 
    184 \DeclareMathOperator{\Image}{Im}
    185 \DeclareMathOperator{\Mod}{mod}
    186 
    187 \newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}}
    188 \newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}}
    189 \newcommand{\FDHg}[1]{[#1]_g\,}
    190 \newcommand{\logg}{{\breve{g}}}
    191 
    192 
    193 \newcommand{\drawfrom}{\xleftarrow{\$}}
    194 \newcommand\Exists{%
    195 	  \mathop{\lower0.75ex\hbox{\ensuremath{%
    196 		  \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}%
    197 	  \limits}
    198 
    199 \newcommand\Forall{%
    200 	  \mathop{\lower0.75ex\hbox{\ensuremath{%
    201 		  \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}%
    202 	  \limits}
    203 
    204 
    205 \title{GNU Taler}
    206 %\subtitle{}
    207 
    208 \setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf} \includegraphics[width=1cm]{bfh.png} \includegraphics[width=1.6cm]{fub.pdf} \includegraphics[width=0.4cm]{ashoka.png}  \includegraphics[width=0.4cm]{gnu.png} \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf} \hfill}
    209 %\setbeamercovered{transparent=1}
    210 
    211 % Page numbers
    212 \addtobeamertemplate{navigation symbols}{}{%
    213     \usebeamerfont{footline}%
    214     \usebeamercolor[fg]{footline}%
    215     \hspace{1em}%
    216     \insertframenumber
    217 }
    218 
    219 \author[E. Benoist, F. Dold, C. Grothoff, M. Walrafen]{{\bf E. Benoist, F. Dold, C. Grothoff, M. Walrafen}}
    220 \date{\today}
    221 \institute{Taler Systems SA \& BFH \& The GNU Project}
    222 
    223 
    224 \begin{document}
    225 
    226 \justifying
    227 
    228 \begin{frame}
    229   \begin{center}
    230     \LARGE {\bf GNU} \\
    231     \vspace{0.3cm}
    232 %    \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf}
    233     \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf}
    234     \vfill
    235   \end{center}
    236 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords)
    237     {\Large {\bf \href{https://taler.net/}{taler.net}} \\
    238     \href{https://twitter.com/taler}{taler@twitter} \\
    239     \href{https://taler-systems.com/}{taler-systems.com}}
    240 \end{textblock*}
    241 
    242 % Substitute based on who is giving the talk!
    243  \begin{textblock*}{8cm}(4.7cm,6.7cm) % {block width} (coords)
    244    {\hfill {{\bf Dr. Emmanuel Benoist} \\
    245     \hfill {\bf Dr. Florian Dold} \\
    246     \hfill {\bf Dr. Christian Grothoff} \\
    247     \hfill {\bf Marie Walrafen} \\ }
    248     \hfill \{benoist,dold,grothoff,walrafen\}@taler.net }
    249 \end{textblock*}
    250 
    251 \end{frame}
    252 
    253 \begin{frame}{Agenda}
    254 \tableofcontents
    255 \end{frame}
    256 
    257 \section{Introduction}
    258 
    259 \begin{frame}
    260   \vfill
    261   \begin{center}
    262     {\bf Part I: Introduction}
    263   \end{center}
    264   \vfill
    265 \end{frame}
    266 
    267 
    268 \section{What is Taler?}
    269 \begin{frame}{What is Taler?}
    270   \framesubtitle{\url{https://taler.net/en/features.html}}  \noindent
    271 Taler is
    272   \vfill
    273   \begin{itemize}
    274     \item a Free/Libre software \emph{payment system} infrastructure project
    275     \item ... with a surrounding software ecosystem
    276     \item ... and a company (Taler Systems S.A.) and community that wants to deploy it
    277       as widely as possible.
    278   \end{itemize}
    279   \vfill
    280 \noindent
    281  However, Taler is
    282   \begin{itemize}
    283     \item \emph{not} a currency
    284     \item \emph{not} a long-term store of value
    285     \item \emph{not} a network or instance of a system
    286     \item \emph{not} decentralized
    287 %    \item \emph{not} based on proof-of-work or proof-of-stake
    288     \item combinable with a DLT back-end if requested
    289   \end{itemize}
    290 \end{frame}
    291 
    292 
    293 \begin{frame}{Design principles}
    294   \framesubtitle{https://taler.net/en/principles.html}
    295 GNU Taler must ...
    296 \begin{enumerate}
    297   \item {... be implemented as {\bf free software} (but {\em available} under a commercial license).}
    298   \item {... protect the {\bf privacy of buyers}.}
    299   \item {... must enable the state to {\bf tax income} and crack down on
    300     illegal business activities.}
    301   \item {... prevent payment fraud.}
    302   \item {... only {\bf disclose the minimal amount of information
    303     necessary}.}
    304   \item {... be usable.}
    305   \item {... be efficient.}
    306   \item {... avoid single points of failure.}
    307   \item {... foster {\bf competition} in associated services.}
    308 \end{enumerate}
    309 \end{frame}
    310 
    311 
    312 \begin{frame}
    313 \frametitle{Taler Overview}
    314 \begin{center}
    315 \begin{tikzpicture}
    316  \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
    317  \node (origin) at (0,0) {};
    318  \node (exchange) [def,above=of origin,draw]{Exchange};
    319  \node (customer) [def, draw, below left=of origin] {Customer};
    320  \node (merchant) [def, draw, below right=of origin] {Merchant};
    321  \node (auditor) [def, draw, above right=of origin]{Auditor};
    322 % \node (regulator) [def, draw, above=of auditor]{CSSF};
    323 
    324  \tikzstyle{C} = [color=black, line width=1pt]
    325 
    326  \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
    327  \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
    328  \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
    329  \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};
    330 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report};
    331 
    332 \end{tikzpicture}
    333 \end{center}
    334 \end{frame}
    335 
    336 
    337 \begin{frame}{Architecture of Taler}
    338 \begin{center}
    339   \includegraphics[width=1\textwidth]{operations.png}
    340 \end{center}
    341 \end{frame}
    342 
    343 
    344 \begin{frame}{Consumer Impact of Taler}
    345 \begin{itemize}
    346 \item {\bf Convenient:} pay with one click instantly --– in Euro,
    347 Dollar, Swiss Franc or Bitcoin
    348 \item {\bf Friction-free security:} Payments do not require sign-up,
    349 login or multi-factor authentication
    350 \item {\bf Privacy-preserving:} payment requires/shares no personal information
    351 \item {\bf Bank account:} not required
    352 \end{itemize}
    353 \end{frame}
    354 
    355 
    356 \begin{frame}{Merchant Impact of Taler}
    357 \begin{itemize}
    358 \item {\bf Instant clearance:} one-click transactions and instant clearance at par
    359 \item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort
    360 \item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs
    361 \item {\bf 1-click checkout:} without Amazon and without false
    362 positives in fraud detection
    363 \end{itemize}
    364 \end{frame}
    365 
    366 
    367 \begin{frame}{Taler: Unique Regulatory Features for Central Banks}
    368   \framesubtitle{\url{https://www.snb.ch/en/mmr/papers/id/working_paper_2021_03}}
    369   \begin{itemize}
    370     \item Central bank issues digital coins equivalent to issuing cash \\
    371           $\Rightarrow$ monetary policy remains under CB control
    372     \item Architecture with consumer accounts at commercial banks \\
    373           $\Rightarrow$ no competition for commercial banking (S\&L) \\
    374           $\Rightarrow$ CB does not have to manage KYC, customer support
    375     \item Withdrawal limits and denomination expiration \\
    376           $\Rightarrow$ protects against bank runs and hoarding
    377     \item Income transparency and possibility to set fees \\
    378           $\Rightarrow$ additional insights into economy and new policy options
    379     \item Revocation protocols and loss limitations \\
    380           $\Rightarrow$ exit strategy and handles catastrophic security incidents
    381     \item Privacy by cryptographic design not organizational compliance \\
    382           $\Rightarrow$ CB cannot be forced to facilitate mass-surveillance
    383   \end{itemize}
    384 \end{frame}
    385 
    386 
    387 \begin{frame}{Usability of Taler}
    388   \vfill
    389   \begin{center}
    390     \url{https://demo.taler.net/}
    391   \end{center}
    392   \begin{enumerate}
    393   \item Install browser extension.
    394   \item Visit the {\tt bank.demo.taler.net} to withdraw coins.
    395   \item Visit the {\tt shop.demo.taler.net} to spend coins.
    396   \end{enumerate}
    397   \vfill
    398 \end{frame}
    399 
    400 
    401 \section{Component Zoo}
    402 
    403 \begin{frame}
    404   \vfill
    405   \begin{center}
    406     {\bf Part II: Component Zoo}
    407   \end{center}
    408   \vfill
    409 \end{frame}
    410 
    411 
    412 \begin{frame}{The Taler Software Ecosystem: Overview}
    413   \framesubtitle{\url{https://taler.net/en/docs.html}}
    414   Taler is based on modular components that work together to provide a
    415   complete payment system:
    416   \vfill
    417   \begin{itemize}
    418     \item {\bf Exchange:} Service provider for digital cash
    419       \begin{itemize}
    420         \item Core exchange software (cryptography, database)
    421         \item Air-gapped key management, real-time {\bf auditing}
    422         \item {\bf LibEuFin}: Modular integration with banking systems
    423       \end{itemize}
    424     \item {\bf Merchant:} Integration service for existing businesses
    425       \begin{itemize}
    426         \item Core merchant backend software (cryptography, database)
    427         \item {\bf Back-office interface} for staff
    428         \item {\bf Frontend integration} (E-commerce, Point-of-sale)
    429       \end{itemize}
    430     \item {\bf Wallet:} Consumer-controlled applications for e-cash
    431       \begin{itemize}
    432         \item Multi-platform wallet software (for browsers \& mobile phones)
    433         \item Wallet backup storage providers ({\bf sync})
    434         \item {\bf Anastasis}: Recovery of lost wallets based on secret splitting
    435       \end{itemize}
    436   \end{itemize}
    437 \end{frame}
    438 
    439 
    440 \begin{frame}{Taler Exchange}
    441   The {\bf Exchange} is the core logic of the payment system.
    442 
    443   \begin{itemize}
    444     \item One exchange at minimum must be operated per currency
    445     \item Offers a REST API for merchants and customers
    446     \item Uses several helper processes for configuration and to
    447           interact with RTGS and cryptography
    448     \item KYC support via OAuth 2.0, KycAID or Persona APIs
    449     \item Implemented in C on top of GNU libmicrohttpd
    450   \end{itemize}
    451   Scalability: 28'500 transactions/second measured % in BS-thesis
    452   in 2022 using two servers on Grid5000. Likely several times
    453   higher today (but we did not re-measure recently).
    454 \end{frame}
    455 
    456 
    457 \begin{frame}{Taler Merchant}
    458   The {\bf Merchant} is the software run by merchants to accept\\
    459   GNU Taler payments.
    460 
    461   \begin{minipage}{6cm}
    462   \begin{itemize}
    463     \item REST API for integration with e-commerce
    464     \item SPA provides Web interface for administration
    465     \item Features include:
    466       \begin{itemize}
    467       \item Multi-tenant support
    468       \item Refunds
    469       \item Tipping (Website pays visitor)
    470       \item Webhooks
    471       \item Inventory management (optional)
    472       \end{itemize}
    473     \item Implemented in C on top of GNU libmicrohttpd
    474   \end{itemize}
    475   \end{minipage}
    476   \begin{minipage}{5cm}
    477   \includegraphics[width=5cm]{screenshots/merchant-spa-settings}
    478   \end{minipage}
    479 \end{frame}
    480 
    481 
    482 \begin{frame}{Taler Wallet}
    483   The {\bf Wallet} is the software run by consumers to store
    484   their digital cash and authorize transactions.
    485 
    486   \begin{minipage}{8cm}
    487   \begin{itemize}
    488     \item {\bf wallet-core} is the logic shared by all interfaces
    489     \item Applications exist for Android, F-Droid,
    490           WebExtension (Chrome, Chromium, Firefox, etc.), iOS ({\bf WiP})
    491     \item Features include:
    492       \begin{itemize}
    493       \item Multi-currency support
    494       \item Wallet-to-wallet payments (NFC or QR code)
    495       \item CRDT-like data model
    496       \end{itemize}
    497     \item {\bf wallet-core} implemented in TypeScript
    498   \end{itemize}
    499   Can be integrated into other Apps if desired.
    500   \end{minipage}
    501   \begin{minipage}{3cm}
    502   \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png}
    503   \end{minipage}
    504 \end{frame}
    505 
    506 
    507 \begin{frame}{Taler Auditor}
    508   The {\bf Auditor} is the software run by an independent auditor
    509   to validate the operation of an Exchange.
    510 
    511   \begin{itemize}
    512     \item REST API for additional report inputs by merchants (optional)
    513     \item Secure database replication logic
    514     \item Implemented in C on top of GNU libmicrohttpd
    515   \end{itemize}
    516 \end{frame}
    517 
    518 
    519 \begin{frame}{Pretix Taler payment plugin}
    520 \begin{center}
    521 \includegraphics[width=0.5\textwidth]{screenshots/pretix.png}
    522 \end{center}
    523 
    524   Pretix is a ticket sales system.
    525 
    526   \begin{itemize}
    527     \item Pretix payment plugin enables payments via GNU Taler
    528     \item Developed by Pretix.eu for \EUR{3,000} on behalf of Taler Systems SA
    529   \end{itemize}
    530 \end{frame}
    531 
    532 
    533 \begin{frame}{WooCommerce Taler payment plugin}
    534 \begin{minipage}{6cm}
    535   \begin{itemize}
    536     \item WooCommerce is an e-commerce plugin for WordPress.
    537     \item WooCommerce payment plugin enables payments via GNU Taler
    538     \item Features include:
    539       \begin{itemize}
    540       \item Trivial configuration
    541       \item Support for refunds
    542       \item Full internationalization
    543       \end{itemize}
    544     \item WooCommerce and its plugins are implemented in PHP
    545   \end{itemize}
    546 \end{minipage}
    547 \begin{minipage}{5cm}
    548   \includegraphics[width=4cm]{screenshots/woocommerce-cart.png}
    549   \includegraphics[width=4cm]{screenshots/woocommerce-settings.png}
    550   \end{minipage}
    551 \end{frame}
    552 
    553 
    554 \begin{frame}{Point-of-Sale App for Android}
    555 
    556 \begin{minipage}{7cm}
    557   \begin{itemize}
    558     \item Allows merchant to generate orders against Taler backend
    559           and display QR code to enable customer to pay in person
    560     \item Patterned after ViewTouch restaurant UI
    561     \item Features include:
    562       \begin{itemize}
    563       \item Internet-based configuration
    564       \item Products sorted by categories
    565       \item Easy undo of every operation
    566       \item Manages multiple concurrent orders
    567       \end{itemize}
    568     \item The Point-of-Sale App is implemented in Kotlin
    569   \end{itemize}
    570 \end{minipage}
    571 \begin{minipage}{4cm}
    572   \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg}
    573   \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg}
    574   \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg}
    575 \end{minipage}
    576 \end{frame}
    577 
    578 
    579 \begin{frame}[c]{The Taler Snack Machine\footnote{by M. Boss and D. Hofer}}
    580   \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.}
    581 	\vfill
    582 	\begin{figure}
    583   \centering
    584   \includegraphics[width=1.0\textwidth]{design}
    585   \end{figure}
    586 \end{frame}
    587 
    588 \begin{frame}[c]{User story: Dr. Thomas Moser (SNB)}
    589 		\begin{figure}
    590 			\includegraphics[width=0.45\textwidth]{moser1.jpeg}
    591 			\includegraphics[width=0.45\textwidth]{moser2.jpeg}
    592 			\includegraphics[width=0.45\textwidth]{moser3.jpeg}
    593 			\includegraphics[width=0.45\textwidth]{moser4.jpeg}
    594 		\end{figure}
    595 \end{frame}
    596 
    597 
    598 \begin{frame}{LibEuFin}
    599   LibEuFin is a standalone project that provides adapters to bank account
    600   access APIs.
    601 
    602   \begin{itemize}
    603     \item LibEuFin provides both a generic access layer and an
    604       implementation of the Wire Gateway for the exchange
    605     \item Supports EBICS 2.5
    606     \item other APIs such as FinTS or PSD2-style XS2A APIs can be added
    607       without requiring changes to the Exchange
    608     \item tested with German bank GLS business account and real Euros
    609   \end{itemize}
    610   \vfill
    611   \begin{itemize}
    612     \item \texttt{libeufin-nexus} is the main service
    613     \item Almost all configuration (except DB credentials)
    614       is stored in the database and managed via a RESTful HTTP API
    615     \item \texttt{libeufin-sandbox} implements a toy EBICS host for protocol
    616       testing
    617     \item \texttt{libeufin-cli} is client for the HTTP API (only implements a subset
    618       of available functionality)
    619   \end{itemize}
    620 \end{frame}
    621 
    622 
    623 \begin{frame}{Cashier App for Android}
    624 \begin{minipage}{4cm}
    625   \begin{itemize}
    626     \item Enables BFH staff to convert cash to e-cash
    627     \item Staff has special bank accounts with limited funds
    628     \item Students can pay staff in cash to receive e-cash
    629     \item The Cashier App is implemented in Kotlin
    630   \end{itemize}
    631   \end{minipage}
    632   \begin{minipage}{3cm}
    633   \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103315.png}
    634   \end{minipage}
    635   \begin{minipage}{3cm}
    636   \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103325.png}
    637   \end{minipage}
    638 \end{frame}
    639 
    640 
    641 \begin{frame}{Depolymerization}
    642   Depolymerization is a bridge between GNU Taler and blockchains,
    643   making Taler a layer 2 system for crypto-currencies (like Lightning).
    644 
    645   \begin{itemize}
    646     \item Currently implemented for Bitcoin and Ethereum
    647           crypto-currencies, with the DLTs as the ``RTGS''
    648     \item Provides same API to Exchange as LibEuFin
    649 %   \item Transaction rate and speed limited by the underlying blockchain
    650     \item Implemented in Rust
    651   \end{itemize}
    652   \begin{center}
    653       \url{https://bitcoin.ice.bfh.ch/}
    654   \end{center}
    655 \end{frame}
    656 
    657 
    658 \begin{frame}{TalDir (WiP)}
    659   TalDir is an extension to the existing
    660   peer-to-peer payment functionality.
    661 
    662   \begin{itemize}
    663     \item Registry to associate wallets with network addresses
    664     \item Extensible to different types of network services:
    665       \begin{itemize}
    666     \item E-mail
    667     \item SMS
    668     \item Twitter
    669     \item ...
    670      \end{itemize}
    671     \item Send payments or invoices to wallets associated with network address
    672     \item Will {\bf not} require sending wallet to use same network service
    673   \end{itemize}
    674 \end{frame}
    675 
    676 
    677 \section{Basic Cryptography}
    678 
    679 \begin{frame}
    680   \vfill
    681   \begin{center}
    682     {\bf Part III: Basic Cryptography}
    683   \end{center}
    684   \vfill
    685 \end{frame}
    686 
    687 
    688 \begin{frame}{How does it work?}
    689 We use a few well established and tested constructions:
    690   \begin{itemize}
    691   \item Cryptographic hash function (1989)
    692   \item Blind signature (1983)
    693   \item Schnorr signature (1989)
    694   \item Diffie-Hellman key exchange (1976)
    695   \item Cut-and-choose zero-knowledge proof (1985)
    696   \end{itemize}
    697 But of course we use modern instantiations.
    698 \end{frame}
    699 
    700 
    701 \begin{frame}{Withdrawing coins on the Web}
    702   \begin{center}
    703     \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf}
    704   \end{center}
    705 \end{frame}
    706 
    707 
    708 \begin{frame}{Payment processing with Taler}
    709   \begin{center}
    710     \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf}
    711   \end{center}
    712 \end{frame}
    713 
    714 
    715 \begin{frame}{Giving change}
    716   It would be inefficient to pay EUR 100 with 1 cent coins!
    717   \begin{itemize}
    718   \item Denomination key represents value of a coin.
    719   \item Exchange may offer various denominations for coins.
    720   \item Wallet may not have exact change!
    721   \item Usability requires ability to pay given sufficient total funds.
    722   \end{itemize}\pause
    723   Key goals:
    724   \begin{itemize}
    725   \item maintain unlinkability
    726   \item maintain taxability of transactions
    727   \end{itemize}\pause
    728   Method:
    729   \begin{itemize}
    730     \item Contract can specify to only pay {\em partial value} of a coin.
    731     \item Exchange allows wallet to obtain {\em unlinkable change}
    732       for remaining coin value.
    733   \end{itemize}
    734 \end{frame}
    735 
    736 
    737 \section{Illustration of Programmable Money: Age Restrictions}
    738 
    739 \begin{frame}
    740   \vfill
    741   \begin{center}
    742     \vfill
    743     {\bf Part IV:}
    744     \vfill
    745     {\bf Illustration of Programmable Money}
    746     \vfill
    747     {\bf Zero-knowledge Age Restrictions}
    748     \vfill
    749   \end{center}
    750   \vfill
    751 \end{frame}
    752 
    753 
    754 \begin{frame}{Age restriction in e-commerce}
    755 
    756 	\begin{description}
    757 		\item[Problem:]~\\[1em]
    758 			Verification of minimum age requirements in e-commerce.\\[2em]
    759 
    760 		\item[Common solutions:]
    761 
    762 \begin{tabular}{l<{\onslide<2->}c<{\onslide<3->}cr<{\onslide}}
    763 	& \blue{Privacy} & \tikzmark{topau} \blue{Ext. authority}& \\[\medskipamount]
    764 	1. ID Verification     & bad   & required & \\[\medskipamount]
    765 	2. Restricted Accounts & bad   & required & \\[\medskipamount]
    766 	3. Attribute-based     & good  & required &\tikzmark{bottomau} \\[\medskipamount]
    767 \end{tabular}
    768 	\end{description}
    769 
    770 \uncover<4->{
    771 	\begin{tikzpicture}[overlay,remember picture]
    772 	\draw[orange,thick,rounded corners]
    773 		($(pic cs:topau) +(0,0.5)$) rectangle ($(pic cs:bottomau) -(0.3, 0.2)$);
    774 	\end{tikzpicture}
    775 	\begin{center}
    776 	\bf Principle of subsidiarity is violated
    777 	\end{center}
    778 }
    779 \end{frame}
    780 
    781 
    782 \begin{frame}{Age restriction design for GNU Taler}
    783 Design and implementation of an age restriction scheme\\
    784 with the following goals:
    785 
    786 \begin{enumerate}
    787 \item It ties age restriction to the \textbf{ability to pay} (not to ID's)
    788 \item maintains \textbf{anonymity of buyers}
    789 \item maintains \textbf{unlinkability of transactions}
    790 \item aligns with \textbf{principle of subsidiarity}
    791 \item is \textbf{practical and efficient}
    792 \end{enumerate}
    793 
    794 \end{frame}
    795 
    796 
    797 \begin{frame}{Age restriction}
    798 	\framesubtitle{Assumptions and scenario}
    799 
    800 	\begin{columns}
    801 		\column{7.5cm}
    802 	\begin{itemize}
    803 		\item<1-> Assumption: Checking accounts are under control of eligible adults/guardians.
    804 		\item<2-> \textit{Guardians} \textbf{commit} to an maximum age
    805 		\item<3-> \textit{Minors} \textbf{attest} their adequate age
    806 		\item<4-> \textit{Merchants} \textbf{verify} the attestations
    807 		\item<5-> Minors \textbf{derive} age commitments from existing ones
    808 		\item<6-> \textit{Exchanges} \textbf{compare} the derived age commitments
    809 	\end{itemize}
    810 		\column{5cm}
    811 		\uncover<7->
    812 		{
    813 		\begin{center}
    814 		\fontsize{7pt}{7pt}\selectfont
    815 	\begin{tikzpicture}[scale=.5]
    816 		\node[circle,minimum size=15pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
    817 		\node[circle,minimum size=15pt,fill=black!15] at (  0:0) (Client) {$\Child$};
    818 		\node[circle,minimum size=15pt,fill=black!15] at (  0:4) (Merchant) {$\Merchant$};
    819 		\node[circle,minimum size=15pt,fill=blue!15]  at (140:3) (Guardian) {$\Guardian$};
    820 
    821 		\draw[->] (Guardian)   to [out=50,in=130, loop] node[above]
    822 			{$\Commit$} (Guardian);
    823 		\draw[->,blue] (Client)   to [out=-125,in=-190, loop] node[below,left]
    824 			{\blue{$\Attest$}} (Client);
    825 		\draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above]
    826 			{\blue{$\Verify$}} (Merchant);
    827 		\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
    828 			{\orange{$\Derive$}} (Client);
    829 		\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
    830 			{\orange{$\Compare$}} (Exchange);
    831 
    832 		\draw[orange,|->] (Client)   to node[sloped,above,align=left]
    833 			{\orange{\scriptsize }} (Exchange);
    834 		\draw[blue,|->] (Client)   to node[sloped, above]
    835 			{\blue{\scriptsize }} (Merchant);
    836 		\draw[,|->] (Guardian) to node[above,sloped,align=left]
    837 			{{\scriptsize }} (Client);
    838 	\end{tikzpicture}
    839 		\end{center}
    840 		}
    841 	\end{columns}
    842 	\vfill
    843 %	\uncover<7->{Note: Scheme is independent of payment service protocol.}
    844 \end{frame}
    845 
    846 
    847 \section{Offline Payments}
    848 
    849 \begin{frame}
    850   \vfill
    851   \begin{center}
    852     {\bf Part V: Offline Payments}
    853   \end{center}
    854   \vfill
    855 \end{frame}
    856 
    857 
    858 \begin{frame}{Fully Offline Payments {\bf (WiP)}}
    859 \framesubtitle{\url{https://docs.taler.net/design-documents/030-offline-payments.html}}
    860 Many central banks today demand offline capabilities for digital payment solutions.
    861 \vfill
    862 \noindent
    863 Three possible approaches:
    864 \begin{enumerate}
    865   \item Trust-based offline payments (has counterparty and/or privacy risks)
    866   \item Full HSM Taler wallet (has hardware costs)
    867   \item Light-weight HSM balance register
    868 \end{enumerate}
    869 \vfill
    870 \end{frame}
    871 
    872 
    873 \begin{frame}{Partially Offline Payments with GNU Taler}
    874 
    875 \begin{center}
    876 \resizebox{8cm}{7cm}{
    877 \begin{sequencediagram}
    878     \newinst{pos}{\shortstack{PoS \\
    879       \\ \begin{tikzpicture}
    880         \node [fill=gray!20,draw=black,thick ,align=center] {PoS key \\ PoS ID};
    881       \end{tikzpicture}
    882     }}
    883     \newinst[2]{customer}{\shortstack{Customer \\
    884       \\ \begin{tikzpicture}
    885         \node [fill=gray!20,draw=black,thick ,align=center] {Digital \\ Wallet};
    886       \end{tikzpicture}
    887     }}
    888     \newinst[2]{backend}{\shortstack{Merchant Backend \\
    889        \\ \begin{tikzpicture}[shape aspect=.5]
    890         \tikzset{every node/.style={cylinder, shape border rotate=90, draw,fill=gray!25}}
    891         \node at (1.5,0) {\shortstack{{\tiny PoS key} \\ {\tiny PoS ID}}};
    892        \end{tikzpicture}
    893     }}
    894     \postlevel
    895     \mess[0]{pos}{PoS ID}{customer}
    896     \begin{sdblock}{optional}{}
    897       \begin{callself}{customer}{Amount}{}
    898       \end{callself}
    899     \end{sdblock}
    900     \prelevel
    901     \prelevel
    902     \prelevel
    903     \prelevel
    904     \prelevel
    905     \begin{sdblock}{optional}{}
    906       \begin{callself}{pos}{Amount}{}
    907       \end{callself}
    908     \end{sdblock}
    909     \postlevel
    910     \mess[0]{customer}{PoS ID, [Amount]?}{backend}
    911     \mess[0]{backend}{Contract}{customer}
    912     \postlevel
    913     \mess[0]{customer}{Payment}{backend}
    914     \begin{callself}{pos}{OTP(PoS key)}{}
    915     \end{callself}
    916     \prelevel
    917     \prelevel
    918     \begin{callself}{backend}{OTP(PoS key)}{}
    919     \end{callself}
    920     \mess[0]{backend}{OTP code}{customer}
    921     \postlevel
    922     \mess[0]{customer}{OTP code}{pos}
    923 \end{sequencediagram}
    924 }
    925 \end{center}
    926 \end{frame}
    927 
    928 
    929 \section{Conclusion}
    930 
    931 \begin{frame}
    932   \vfill
    933   \begin{center}
    934     {\bf Part VI: Conclusion}
    935   \end{center}
    936   \vfill
    937 \end{frame}
    938 
    939 \begin{frame}{Feature comparison}
    940   \begin{center} \small
    941     \begin{tabular}{l||c|c|c|c|c}
    942                 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline
    943     Online      &$-$$-$$-$  &   ++    &    ++    &     +      &   +++  \\ \hline
    944     Offline     & +++  &   $-$$-$    &    $-$$-$    &     +      &   ++  \\ \hline
    945     Trans. cost & +    & $-$$-$$-$   & $-$$-$$-$  &     $-$      &   ++  \\ \hline
    946     Speed       & +    & $-$$-$$-$   & $-$$-$$-$  &     o      &   ++  \\ \hline
    947     Taxation    & $-$    &   $-$$-$    &  $-$$-$$-$   &    +++     &  +++  \\ \hline
    948     Payer-anon  &  ++  &   o     &    ++    &  $-$$-$$-$   &  +++  \\ \hline
    949     Payee-anon  & ++   &   o     &    ++    &  $-$$-$$-$    &  $-$$-$$-$ \\ \hline
    950     Security    &  $-$   &   o     &    o     &    $-$$-$      &  ++   \\ \hline
    951     Conversion  & +++  &  $-$$-$$-$   & $-$$-$$-$ &    +++     &  +++  \\ \hline
    952     Libre       &  $-$   &  +++    &    +++   & $-$ $-$ $-$      &  +++  \\
    953   \end{tabular}
    954   \end{center}
    955 \end{frame}
    956 
    957 
    958 \begin{frame}{Rights}
    959   \begin{itemize}
    960     \item GNUnet e.V. shared copyrights of their AGPLv3+ licensed code with Taler Systems SA
    961     \item Taler Systems SA holds copyrights to entire GNU Taler code base (AGPLv3+, GPLv3+,
    962       dual-licensing exclusive domain of Taler Systems SA)
    963     \item Taler Systems SA applied for patent on offline payment solution
    964     \item Taler Systems SA holds trademark on ``Taler''.
    965     \item FSF holds trademark on ``GNU'', we are authorized to use ``GNU Taler''.
    966     \item Taler Systems SA owns {\tt taler.net} and {\tt taler-systems.com}.
    967   \end{itemize}
    968 \end{frame}
    969 
    970 
    971 \begin{frame}{Summary of Taler Solution}
    972 
    973 \begin{enumerate}
    974 \item {\bf Frictionless one click}, cash-like digital payments \&
    975 instant
    976 confirmation for all fiat- and crypto-currencies and for all users, young and old.
    977 \item With {\bf income-transparency on the recipient side} is
    978 crime-preventing \& Taler coins are as secure as cash without
    979 counterfeits. No ID theft.
    980 \item {\bf Guaranteed privacy} for spender \& data minimization: payment
    981 requires/shares no personal information.
    982 \item {\bf No bank account needed}.
    983 \item Highly efficient in power, processing \& storage, extremely low
    984 cost \& {\bf highly scalable}.
    985 \item Economically viable (sub-cent) instant {\bf micro-transactions} for
    986 e-commerce, Internet of Things, machine2machine, $\ldots$
    987 \end{enumerate}
    988 \end{frame}
    989 
    990 
    991 \begin{frame}{Do you have any questions?}
    992   \framesubtitle{\url{https://taler.net/en/bibliography.html}}
    993   \vfill
    994 References:
    995 {\tiny
    996   \begin{enumerate}
    997  \item{David Chaum, Christian Grothoff and Thomas Moser.
    998        {\em How to issue a central bank digital currency}.
    999        {\bf SNB Working Papers, 2021}.}
   1000  \item{Martin Summer and Hannes Hermanky.
   1001        {\em A digital euro and the future of cash}.
   1002        {\bf Monetary Policy \& The Economy Q1-Q2/22}.}
   1003  \item{Antoine d’Aligny, Emmanuel Benoist, Florian Dold, Christian Grothoff, Özgür Kesim and Martin Schanzenbach.
   1004        {\em Who comes after us? The correct mindset for designing a Central Bank Digital Currency}.
   1005        {\bf SUERF Policy Notes 279/2022}.}
   1006  \item{Florian Dold.
   1007        {\em GNU Taler}.
   1008        {\bf University of Rennes 1, PhD Thesis, 2019}.}
   1009  \item{Christian Grothoff and Alex Pentland.
   1010        {\em Digital cash and privacy: What are the alternatives to Libra?}.
   1011        {\bf MIT Media Lab, 2019}.}
   1012  \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci.
   1013        {\em Enabling Secure Web Payments with GNU Taler}.
   1014        {\bf SPACE 2016}.}
   1015  \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach.
   1016        {\em Zero-Knowledge Age Restriction for GNU Taler}.
   1017        {\bf ESORICS, 2022}.}
   1018  \item{Gian Demarmels and Lucien Heuzeveldt.
   1019        {\em Adding Schnorr's Blind Signature in Taler}.
   1020        {\bf BFH, Bachelor's Thesis, 2022}.}
   1021  \item{Marco Boss.
   1022        {\em GNU Taler Scalability}.
   1023        {\bf BFH, Bachelor's Thesis, 2022}.}
   1024 \end{enumerate}
   1025 }
   1026 \end{frame}
   1027 
   1028 \end{document}
   1029 
   1030 \begin{frame}{Active collaborations}
   1031 {\tiny
   1032   \begin{description}
   1033   \item {\bf Association EFREI}: \\ Offline payments
   1034   \item {\bf Technische Universit\"at Eindhoven:} \\ Post-quantum cryptogrpahy
   1035   \item {\bf Berner Fachhochschule:} \\ Snack machine \& blockchain integration \& scalability
   1036   \item {\bf Freie Universit\"at Berlin:} \\ Programmability \& embedded systems
   1037   \item {\bf Fraunhofer Gesellschaft}: \\ Identity management \& SSI \& wallet-to-wallet communication
   1038   \item {\bf The GNU Project}: \\ Integration into FLOSS software
   1039   \item {\bf Fiscaltrust GmbH}: \\ Point-of-sale integration ({\bf
   1040 new})
   1041   \item {\bf Bank of International Settlements}: \\ Participation in Point Zero Forum 2023 ({\bf new})
   1042   \end{description}
   1043   }
   1044 \end{frame}
   1045 
   1046 
   1047 \begin{frame}{Launch Timeline}
   1048   \begin{description}
   1049     \item[2022] Internal deployment at BFH
   1050     \item[Q1'2023] Deployment using Bitcoin at BFH (running, but not yet announced)
   1051     \item[Q2-3'2023] Deployment of local currency Netzbon in Basel
   1052     \item[Q3'2023] Public deployment of eCHF stablecoin in Switzerland, cleared by FINMA
   1053     \item[2024] German bank executes ``new product process'' for launch in Eurozone ({\bf planned})
   1054     \item[2025] MagNet bank begins process for launch in Hungary ({\bf planned})
   1055   \end{description}
   1056 \end{frame}