marketing

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

commit 4ec8fb4097de969b534cdb35f3027c86a0b2abd1
parent f039ee11151b2367a5653218dabeb0950efe9eb5
Author: Christian Grothoff <christian@grothoff.org>
Date:   Mon, 10 Apr 2023 12:14:49 +0200

bdf

Diffstat:
Apresentations/comprehensive/bdf.tex | 1049+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apresentations/comprehensive/moser1.jpeg | 0
Apresentations/comprehensive/moser2.jpeg | 0
Apresentations/comprehensive/moser3.jpeg | 0
Apresentations/comprehensive/moser4.jpeg | 0
5 files changed, 1049 insertions(+), 0 deletions(-)

diff --git a/presentations/comprehensive/bdf.tex b/presentations/comprehensive/bdf.tex @@ -0,0 +1,1049 @@ +\pdfminorversion=3 +\documentclass[fleqn,xcolor={usenames,dvipsnames},handout +]{beamer} +\usepackage{amsmath} +\usepackage{multimedia} +\usepackage[utf8]{inputenc} +\usepackage{framed,color,ragged2e} +\usepackage[absolute,overlay]{textpos} +\definecolor{shadecolor}{rgb}{0.8,0.8,0.8} +\usetheme{boxes} +\setbeamertemplate{navigation symbols}{} +\usepackage{xcolor} +\usepackage[normalem]{ulem} +\usepackage{listings} +\usepackage{adjustbox} +\usepackage{array} +\usepackage{bbding} +\usepackage{relsize} +\usepackage{graphicx} +\usepackage{pgf-umlsd} +\usepackage{tikz,eurosym,calc} +\usetikzlibrary{tikzmark} +\usetikzlibrary{shapes,arrows,arrows.meta} +\usetikzlibrary{positioning,fit,patterns} +\usetikzlibrary{calc} + +% 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]" +} + +\def\checkmark{\tikz\fill[scale=0.4](0,.35) -- (.25,0) -- (1,.7) -- (.25,.15) -- cycle;} + + +\setbeamersize{description width=1em} + +\definecolor{blue}{rgb}{0,0,0.7} +\newcommand{\orange}[1]{{\color{orange}#1}} +\newcommand{\blue}[1]{{\color{blue}#1}} +\newcommand{\red}[1]{{\color{red}#1}} +\newcommand{\Guardian}{\mathcal{G}} +\newcommand{\Child}{\mathcal{C}} +\newcommand{\Customer}{\mathcal{C}} +\newcommand{\Merchant}{\mathcal{M}} +\newcommand{\Exchange}{\mathcal{E}} + +\newcommand{\Commit}{\mathsf{Commit}} +\newcommand{\Attest}{\mathsf{Attest}} +\newcommand{\Verify}{\mathsf{Verify}} +\newcommand{\Derive}{\mathsf{Derive}} +\newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}} +\newcommand{\Compare}{\mathsf{Compare}} +\newcommand{\AgeVer}{\mathsf{AgeVer}} + +\newcommand{\HashF}{\mathsf{H}} +\newcommand{\Hash}{\mathsf{H}} +\newcommand{\Block}{\mathbb{B}} +\newcommand{\Pub}{\mathsf{Pub}} +\newcommand{\Sign}{\mathsf{Sig}} +\newcommand{\Ver}{\mathsf{Ver}} +\newcommand{\Encoding}{\mathsf{Encoding}} +\newcommand{\ECDSA}{\mathsf{ECDSA}} +\newcommand{\Null}{\mathcal{O}} +\newcommand{\EC}{\mathrm{ec}} +\newcommand{\Curve}{\mathsf{Curve25519}} +\newcommand{\SHA}{\mathsf{SHA256}} +\newcommand{\SHAF}{\mathsf{SHA252}} +\newcommand{\FDH}{\mathsf{FDH}} + +\newcommand{\negl}{\epsilon} + +\newcommand{\rand}{\mathsf{rand}} +\newcommand{\age}{\mathsf{a}} +\newcommand{\Age}{\mathsf{M}} +\newcommand{\bage}{\mathsf{b}} +\newcommand{\minage}{\mathsf{m}} +\newcommand{\attest}{\mathsf{T}} +\newcommand{\commitment}{\mathsf{Q}} +\newcommand{\pruf}{\mathsf{P}} +\newcommand{\Vcommitment}{\vec{\mathsf{Q}}} +\newcommand{\Vpruf}{\vec{\mathsf{P}}} +\newcommand{\blinding}{\beta} + +\newcommand{\ZN}{\mathbb{Z}_N} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\A}{\mathbb{A}} +\newcommand{\E}{\mathbb{E}} +\newcommand{\F}{\mathbb{F}} +\newcommand{\seck}{\mathsf{s}} +\newcommand{\pubk}{\mathsf{P}} +\renewcommand{\H}{\mathbb{H}} +\newcommand{\K}{\mathbb{K}} +\newcommand{\Proofs}{\mathbb{P}} +\newcommand{\Commitments}{\mathbb{O}} +\newcommand{\Attests}{\mathbb{T}} +\newcommand{\Blindings}{\mathbb{B}} +\newcommand{\Nil}{\perp} + +\newcommand{\p}{\mathsf{p}} +\newcommand{\com}{\mathsf{com}} +\newcommand{\prf}{\mathsf{prf}} + +\newcommand{\Adv}{\mathcal{A}} +\newcommand{\PPT}{\mathfrak{A}} +\newcommand{\Probability}{\mathrm{Pr}} +\newcommand{\Algorithm}{f} +\renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}} + +\DeclareMathOperator{\Image}{Im} +\DeclareMathOperator{\Mod}{mod} + +\newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}} +\newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}} +\newcommand{\FDHg}[1]{[#1]_g\,} +\newcommand{\logg}{{\breve{g}}} + + +\newcommand{\drawfrom}{\xleftarrow{\$}} +\newcommand\Exists{% + \mathop{\lower0.75ex\hbox{\ensuremath{% + \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}% + \limits} + +\newcommand\Forall{% + \mathop{\lower0.75ex\hbox{\ensuremath{% + \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% + \limits} + + +\title{GNU Taler} +%\subtitle{} + +\setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf} \includegraphics[width=2.3cm]{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} +%\setbeamercovered{transparent=1} + +\author[E. Benoist, F. Dold, C. Grothoff, M. Walrafen]{{\bf E. Benoist, F. Dold, C. Grothoff, M. Walrafen}} +\date{\today} +\institute{Taler Systems SA \& BFH \& The GNU Project} + + +\begin{document} + +\justifying + +\begin{frame} + \begin{center} + \LARGE {\bf GNU} \\ + \vspace{0.3cm} +% \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} + \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf} + \vfill + \end{center} +\begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords) + {\Large {\bf \href{https://taler.net/}{taler.net}} \\ + \href{https://twitter.com/taler}{taler@twitter} \\ + \href{https://taler-systems.com/}{taler-systems.com}} +\end{textblock*} + +% Substitute based on who is giving the talk! + \begin{textblock*}{8cm}(4.7cm,6.7cm) % {block width} (coords) + {\hfill {{\bf Dr. Emmanuel Benoist} \\ + \hfill {\bf Dr. Florian Dold} \\ + \hfill {\bf Dr. Christian Grothoff} \\ + \hfill {\bf Marie Walrafen} \\ } + \hfill \{benoist,dold,grothoff,walrafen\}@taler.net } +\end{textblock*} + +\end{frame} + +\begin{frame}{Agenda} +\tableofcontents +\end{frame} + +\section{Introduction} + +\begin{frame} + \vfill + \begin{center} + {\bf Part I: Introduction} + \end{center} + \vfill +\end{frame} + + +\section{What is Taler?} +\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 + \item \emph{not} a long-term store of value + \item \emph{not} a network or instance of a system + \item \emph{not} decentralized +% \item \emph{not} based on proof-of-work or proof-of-stake + \item combinable with a DLT back-end if requested + \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} (but {\em available} under a commercial license).} + \item {... protect the {\bf privacy of buyers}.} + \item {... must 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} in associated services.} +\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}{Architecture of Taler} +\begin{center} + \includegraphics[width=1\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, Swiss Franc 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}{Taler: Unique Regulatory Features for Central Banks} + \framesubtitle{\url{https://www.snb.ch/en/mmr/papers/id/working_paper_2021_03}} + \begin{itemize} + \item Central bank issues digital coins equivalent to issuing cash \\ + $\Rightarrow$ monetary policy remains under CB control + \item Architecture with consumer accounts at commercial banks \\ + $\Rightarrow$ no competition for commercial banking (S\&L) \\ + $\Rightarrow$ CB does not have to manage KYC, customer support + \item Withdrawal limits and denomination expiration \\ + $\Rightarrow$ protects against bank runs and hoarding + \item Income transparency and possibility to set fees \\ + $\Rightarrow$ additional insights into economy and new policy options + \item Revocation protocols and loss limitations \\ + $\Rightarrow$ exit strategy and handles catastrophic security incidents + \item Privacy by cryptographic design not organizational compliance \\ + $\Rightarrow$ CB cannot be forced to facilitate mass-surveillance + \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} + + +\section{Component Zoo} + +\begin{frame} + \vfill + \begin{center} + {\bf Part II: 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 + \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}) + \item {\bf Anastasis}: Recovery of lost wallets based on secret splitting + \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 + \item Implemented in C on top of GNU libmicrohttpd + \end{itemize} + Scalability: 28'500 transactions/second measured % in BS-thesis + in 2022 using two servers on Grid5000. Likely several times + higher today (but we did not re-measure recently). +\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 Tipping (Website pays visitor) + \item Webhooks + \item Inventory management (optional) + \end{itemize} + \item Implemented in C on top of GNU libmicrohttpd + \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 Applications exist for Android, F-Droid, + WebExtension (Chrome, Chromium, Firefox, etc.), iOS ({\bf WiP}) + \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} + \item {\bf wallet-core} implemented in TypeScript + \end{itemize} + Can be integrated into other Apps if desired. + \end{minipage} + \begin{minipage}{3cm} + \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png} + \end{minipage} +\end{frame} + + +\begin{frame}{Taler Auditor} + The {\bf Auditor} is the software run by an independent auditor + to validate the operation of an Exchange. + + \begin{itemize} + \item REST API for additional report inputs by merchants (optional) + \item Secure database replication logic + \item Implemented in C on top of GNU libmicrohttpd + \end{itemize} +\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}{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}[c]{The Taler Snack Machine\footnote{by M. Boss and D. Hofer}} + \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.} + \vfill + \begin{figure} + \centering + \includegraphics[width=1.0\textwidth]{design} + \end{figure} +\end{frame} + +\begin{frame}[c]{User story: Dr. Thomas Moser (SNB)} + \begin{figure} + \includegraphics[width=0.45\textwidth]{moser1.jpeg} + \includegraphics[width=0.45\textwidth]{moser2.jpeg} + \includegraphics[width=0.45\textwidth]{moser3.jpeg} + \includegraphics[width=0.45\textwidth]{moser4.jpeg} + \end{figure} +\end{frame} + + +\begin{frame}{LibEuFin} + LibEuFin is a standalone project that provides adapters to bank account + access APIs. + + \begin{itemize} + \item LibEuFin provides both a generic access layer and an + implementation of the Wire Gateway for the exchange + \item Supports EBICS 2.5 + \item other APIs such as FinTS or PSD2-style XS2A APIs can be added + without requiring changes to the Exchange + \item tested with German bank GLS business account and real Euros + \end{itemize} + \vfill + \begin{itemize} + \item \texttt{libeufin-nexus} is the main service + \item Almost all configuration (except DB credentials) + is stored in the database and managed via a RESTful HTTP API + \item \texttt{libeufin-sandbox} implements a toy EBICS host for protocol + testing + \item \texttt{libeufin-cli} is client for the HTTP API (only implements a subset + of available functionality) + \end{itemize} +\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}{Depolymerization} + Depolymerization is a bridge between GNU Taler and blockchains, + making Taler a layer 2 system for crypto-currencies (like Lightning). + + \begin{itemize} + \item Currently implemented for Bitcoin and Ethereum + crypto-currencies, with the DLTs as the ``RTGS'' + \item Provides same API to Exchange as LibEuFin +% \item Transaction rate and speed limited by the underlying blockchain + \item Implemented in Rust + \end{itemize} + \begin{center} + \url{https://bitcoin.ice.bfh.ch/} + \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} + + +\section{Basic Cryptography} + +\begin{frame} + \vfill + \begin{center} + {\bf Part III: Basic Cryptography} + \end{center} + \vfill +\end{frame} + + +\begin{frame}{How does it work?} +We use a few well established and tested constructions: + \begin{itemize} + \item Cryptographic hash function (1989) + \item Blind signature (1983) + \item Schnorr signature (1989) + \item Diffie-Hellman key exchange (1976) + \item Cut-and-choose zero-knowledge proof (1985) + \end{itemize} +But of course we use modern instantiations. +\end{frame} + + +\begin{frame}{Withdrawing coins on the Web} + \begin{center} + \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf} + \end{center} +\end{frame} + + +\begin{frame}{Payment processing with Taler} + \begin{center} + \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf} + \end{center} +\end{frame} + + +\begin{frame}{Giving change} + It would be inefficient to pay EUR 100 with 1 cent coins! + \begin{itemize} + \item Denomination key represents value of a coin. + \item Exchange may offer various denominations for coins. + \item Wallet may not have exact change! + \item Usability requires ability to pay given sufficient total funds. + \end{itemize}\pause + Key goals: + \begin{itemize} + \item maintain unlinkability + \item maintain taxability of transactions + \end{itemize}\pause + Method: + \begin{itemize} + \item Contract can specify to only pay {\em partial value} of a coin. + \item Exchange allows wallet to obtain {\em unlinkable change} + for remaining coin value. + \end{itemize} +\end{frame} + + +\section{Illustration of Programmable Money: Age Restrictions} + +\begin{frame} + \vfill + \begin{center} + \vfill + {\bf Part IV:} + \vfill + {\bf Illustration of Programmable Money} + \vfill + {\bf Zero-knowledge Age Restrictions} + \vfill + \end{center} + \vfill +\end{frame} + + +\begin{frame}{Age restriction in e-commerce} + + \begin{description} + \item[Problem:]~\\[1em] + Verification of minimum age requirements in e-commerce.\\[2em] + + \item[Common solutions:] + +\begin{tabular}{l<{\onslide<2->}c<{\onslide<3->}cr<{\onslide}} + & \blue{Privacy} & \tikzmark{topau} \blue{Ext. authority}& \\[\medskipamount] + 1. ID Verification & bad & required & \\[\medskipamount] + 2. Restricted Accounts & bad & required & \\[\medskipamount] + 3. Attribute-based & good & required &\tikzmark{bottomau} \\[\medskipamount] +\end{tabular} + \end{description} + +\uncover<4->{ + \begin{tikzpicture}[overlay,remember picture] + \draw[orange,thick,rounded corners] + ($(pic cs:topau) +(0,0.5)$) rectangle ($(pic cs:bottomau) -(0.3, 0.2)$); + \end{tikzpicture} + \begin{center} + \bf Principle of subsidiarity is violated + \end{center} +} +\end{frame} + + +\begin{frame}{Age restriction design for GNU Taler} +Design and implementation of an age restriction scheme\\ +with the following goals: + +\begin{enumerate} +\item It ties age restriction to the \textbf{ability to pay} (not to ID's) +\item maintains \textbf{anonymity of buyers} +\item maintains \textbf{unlinkability of transactions} +\item aligns with \textbf{principle of subsidiarity} +\item is \textbf{practical and efficient} +\end{enumerate} + +\end{frame} + + +\begin{frame}{Age restriction} + \framesubtitle{Assumptions and scenario} + + \begin{columns} + \column{7.5cm} + \begin{itemize} + \item<1-> Assumption: Checking accounts are under control of eligible adults/guardians. + \item<2-> \textit{Guardians} \textbf{commit} to an maximum age + \item<3-> \textit{Minors} \textbf{attest} their adequate age + \item<4-> \textit{Merchants} \textbf{verify} the attestations + \item<5-> Minors \textbf{derive} age commitments from existing ones + \item<6-> \textit{Exchanges} \textbf{compare} the derived age commitments + \end{itemize} + \column{5cm} + \uncover<7-> + { + \begin{center} + \fontsize{7pt}{7pt}\selectfont + \begin{tikzpicture}[scale=.5] + \node[circle,minimum size=15pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$}; + \node[circle,minimum size=15pt,fill=black!15] at ( 0:0) (Client) {$\Child$}; + \node[circle,minimum size=15pt,fill=black!15] at ( 0:4) (Merchant) {$\Merchant$}; + \node[circle,minimum size=15pt,fill=blue!15] at (140:3) (Guardian) {$\Guardian$}; + + \draw[->] (Guardian) to [out=50,in=130, loop] node[above] + {$\Commit$} (Guardian); + \draw[->,blue] (Client) to [out=-125,in=-190, loop] node[below,left] + {\blue{$\Attest$}} (Client); + \draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above] + {\blue{$\Verify$}} (Merchant); + \draw[->,orange] (Client) to [out=-35,in=-100, loop] node[below] + {\orange{$\Derive$}} (Client); + \draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above] + {\orange{$\Compare$}} (Exchange); + + \draw[orange,|->] (Client) to node[sloped,above,align=left] + {\orange{\scriptsize }} (Exchange); + \draw[blue,|->] (Client) to node[sloped, above] + {\blue{\scriptsize }} (Merchant); + \draw[,|->] (Guardian) to node[above,sloped,align=left] + {{\scriptsize }} (Client); + \end{tikzpicture} + \end{center} + } + \end{columns} + \vfill +% \uncover<7->{Note: Scheme is independent of payment service protocol.} +\end{frame} + + +\section{Offline Payments} + +\begin{frame} + \vfill + \begin{center} + {\bf Part V: Offline Payments} + \end{center} + \vfill +\end{frame} + + +\begin{frame}{Fully Offline Payments {\bf (WiP)}} +\framesubtitle{\url{https://docs.taler.net/design-documents/030-offline-payments.html}} +Many central banks today demand offline capabilities for digital payment solutions. +\vfill +\noindent +Three possible approaches: +\begin{enumerate} + \item Trust-based offline payments (has counterparty and/or privacy risks) + \item Full HSM Taler wallet (has hardware costs) + \item Light-weight HSM balance register +\end{enumerate} +\vfill +\end{frame} + + +\begin{frame}{Partially Offline Payments with GNU Taler} + +\begin{center} +\resizebox{8cm}{7cm}{ +\begin{sequencediagram} + \newinst{pos}{\shortstack{PoS \\ + \\ \begin{tikzpicture} + \node [fill=gray!20,draw=black,thick ,align=center] {PoS key \\ PoS ID}; + \end{tikzpicture} + }} + \newinst[2]{customer}{\shortstack{Customer \\ + \\ \begin{tikzpicture} + \node [fill=gray!20,draw=black,thick ,align=center] {Digital \\ Wallet}; + \end{tikzpicture} + }} + \newinst[2]{backend}{\shortstack{Merchant Backend \\ + \\ \begin{tikzpicture}[shape aspect=.5] + \tikzset{every node/.style={cylinder, shape border rotate=90, draw,fill=gray!25}} + \node at (1.5,0) {\shortstack{{\tiny PoS key} \\ {\tiny PoS ID}}}; + \end{tikzpicture} + }} + \postlevel + \mess[0]{pos}{PoS ID}{customer} + \begin{sdblock}{optional}{} + \begin{callself}{customer}{Amount}{} + \end{callself} + \end{sdblock} + \prelevel + \prelevel + \prelevel + \prelevel + \prelevel + \begin{sdblock}{optional}{} + \begin{callself}{pos}{Amount}{} + \end{callself} + \end{sdblock} + \postlevel + \mess[0]{customer}{PoS ID, [Amount]?}{backend} + \mess[0]{backend}{Contract}{customer} + \postlevel + \mess[0]{customer}{Payment}{backend} + \begin{callself}{pos}{OTP(PoS key)}{} + \end{callself} + \prelevel + \prelevel + \begin{callself}{backend}{OTP(PoS key)}{} + \end{callself} + \mess[0]{backend}{OTP code}{customer} + \postlevel + \mess[0]{customer}{OTP code}{pos} +\end{sequencediagram} +} +\end{center} +\end{frame} + + +\section{Conclusion} + +\begin{frame} + \vfill + \begin{center} + {\bf Part VI: Conclusion} + \end{center} + \vfill +\end{frame} + +\begin{frame}{Feature 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}{Rights} + \begin{itemize} + \item GNUnet e.V. shared copyrights of their AGPLv3+ licensed code with Taler Systems SA + \item Taler Systems SA holds copyrights to entire GNU Taler code base (AGPLv3+, GPLv3+, + dual-licensing exclusive domain of Taler Systems SA) + \item Taler Systems SA applied for patent on offline payment solution + \item Taler Systems SA holds trademark on ``Taler''. + \item FSF holds trademark on ``GNU'', we are authorized to use ``GNU Taler''. + \item Taler Systems SA owns {\tt taler.net} and {\tt taler-systems.com}. + \end{itemize} +\end{frame} + + +\begin{frame}{Summary of Taler Solution} + +\begin{enumerate} +\item {\bf Frictionless one click}, cash-like digital payments \& +instant +confirmation for all fiat- and crypto-currencies and for all users, +unbanked, young and old. +\item With {\bf income-transparency on the recipient side} is +crime-preventing \& Taler coins are as secure as cash without +counterfeits. No ID theft. +\item {\bf Guaranteed privacy} for spender \& data minimization: payment +requires/shares no personal information. +\item {\bf No bank account needed}. +\item Highly efficient in power, processing \& storage, extremely low +cost \& {\bf highly scalable}. +\item Economically viable (sub-cent) instant {\bf micro-transactions} for +e-commerce, Internet of Things, machine2machine, $\ldots$ +\end{enumerate} +\end{frame} + + +\begin{frame}{Do you have any questions?} + \framesubtitle{\url{https://taler.net/en/bibliography.html}} + \vfill +References: +{\tiny + \begin{enumerate} + \item{David Chaum, Christian Grothoff and Thomas Moser. + {\em How to issue a central bank digital currency}. + {\bf SNB Working Papers, 2021}.} + \item{Martin Summer and Hannes Hermanky. + {\em A digital euro and the future of cash}. + {\bf Monetary Policy \& The Economy Q1-Q2/22}.} + \item{Antoine d’Aligny, Emmanuel Benoist, Florian Dold, Christian Grothoff, Özgür Kesim and Martin Schanzenbach. + {\em Who comes after us? The correct mindset for designing a Central Bank Digital Currency}. + {\bf SUERF Policy Notes 279/2022}.} + \item{Florian Dold. + {\em GNU Taler}. + {\bf University of Rennes 1, PhD Thesis, 2019}.} + \item{Christian Grothoff and Alex Pentland. + {\em Digital cash and privacy: What are the alternatives to Libra?}. + {\bf MIT Media Lab, 2019}.} + \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. + {\em Enabling Secure Web Payments with GNU Taler}. + {\bf SPACE 2016}.} + \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach. + {\em Zero-Knowledge Age Restriction for GNU Taler}. + {\bf ESORICS, 2022}.} + \item{Gian Demarmels and Lucien Heuzeveldt. + {\em Adding Schnorr's Blind Signature in Taler}. + {\bf BFH, Bachelor's Thesis, 2022}.} + \item{Marco Boss. + {\em GNU Taler Scalability}. + {\bf BFH, Bachelor's Thesis, 2022}.} +\end{enumerate} +} +\end{frame} + +\end{document} + +\begin{frame}{Active collaborations} +{\tiny + \begin{description} + \item {\bf Association EFREI}: \\ Offline payments + \item {\bf Technische Universit\"at Eindhoven:} \\ Post-quantum cryptogrpahy + \item {\bf Berner Fachhochschule:} \\ Snack machine \& blockchain integration \& scalability + \item {\bf Freie Universit\"at Berlin:} \\ Programmability \& embedded systems + \item {\bf Fraunhofer Gesellschaft}: \\ Identity management \& SSI \& wallet-to-wallet communication + \item {\bf The GNU Project}: \\ Integration into FLOSS software + \item {\bf Fiscaltrust GmbH}: \\ Point-of-sale integration ({\bf +new}) + \item {\bf Bank of International Settlements}: \\ Participation in Point Zero Forum 2023 ({\bf new}) + \end{description} + } +\end{frame} + + +\begin{frame}{Launch Timeline} + \begin{description} + \item[2022] Internal deployment at BFH + \item[Q1'2023] Deployment using Bitcoin at BFH (running, but not yet announced) + \item[Q2-3'2023] Deployment of local currency Netzbon in Basel + \item[Q3'2023] Public deployment of eCHF stablecoin in Switzerland, cleared by FINMA + \item[2024] German bank executes ``new product process'' for launch in Eurozone ({\bf planned}) + \item[2025] MagNet bank begins process for launch in Hungary ({\bf planned}) + \end{description} +\end{frame} diff --git a/presentations/comprehensive/moser1.jpeg b/presentations/comprehensive/moser1.jpeg Binary files differ. diff --git a/presentations/comprehensive/moser2.jpeg b/presentations/comprehensive/moser2.jpeg Binary files differ. diff --git a/presentations/comprehensive/moser3.jpeg b/presentations/comprehensive/moser3.jpeg Binary files differ. diff --git a/presentations/comprehensive/moser4.jpeg b/presentations/comprehensive/moser4.jpeg Binary files differ.