2023-lug.tex (24991B)
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}{Usability of Taler} 368 \vfill 369 \begin{center} 370 \url{https://demo.taler.net/} 371 \end{center} 372 \begin{enumerate} 373 \item Install browser extension. 374 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 375 \item Visit the {\tt shop.demo.taler.net} to spend coins. 376 \end{enumerate} 377 \vfill 378 \end{frame} 379 380 381 \section{Component Zoo} 382 383 \begin{frame} 384 \vfill 385 \begin{center} 386 {\bf Part II: Component Zoo} 387 \end{center} 388 \vfill 389 \end{frame} 390 391 392 \begin{frame}{The Taler Software Ecosystem: Overview} 393 \framesubtitle{\url{https://taler.net/en/docs.html}} 394 Taler is based on modular components that work together to provide a 395 complete payment system: 396 \vfill 397 \begin{itemize} 398 \item {\bf Exchange:} Service provider for digital cash 399 \begin{itemize} 400 \item Core exchange software (cryptography, database) 401 \item Air-gapped key management, real-time {\bf auditing} 402 \item {\bf LibEuFin}: Modular integration with banking systems 403 \end{itemize} 404 \item {\bf Merchant:} Integration service for existing businesses 405 \begin{itemize} 406 \item Core merchant backend software (cryptography, database) 407 \item {\bf Back-office interface} for staff 408 \item {\bf Frontend integration} (E-commerce, Point-of-sale) 409 \end{itemize} 410 \item {\bf Wallet:} Consumer-controlled applications for e-cash 411 \begin{itemize} 412 \item Multi-platform wallet software (for browsers \& mobile phones) 413 \item Wallet backup storage providers ({\bf sync}) 414 \item {\bf Anastasis}: Recovery of lost wallets based on secret splitting 415 \end{itemize} 416 \end{itemize} 417 \end{frame} 418 419 420 \begin{frame}{Taler Exchange} 421 The {\bf Exchange} is the core logic of the payment system. 422 423 \begin{itemize} 424 \item One exchange at minimum must be operated per currency 425 \item Offers a REST API for merchants and customers 426 \item Uses several helper processes for configuration and to 427 interact with RTGS and cryptography 428 \item KYC support via OAuth 2.0, KycAID or Persona APIs 429 \item Implemented in C on top of GNU libmicrohttpd 430 \end{itemize} 431 Scalability: 28'500 transactions/second measured % in BS-thesis 432 in 2022 using two servers on Grid5000. Likely several times 433 higher today (but we did not re-measure recently). 434 \end{frame} 435 436 437 \begin{frame}{Taler Merchant} 438 The {\bf Merchant} is the software run by merchants to accept\\ 439 GNU Taler payments. 440 441 \begin{minipage}{6cm} 442 \begin{itemize} 443 \item REST API for integration with e-commerce 444 \item SPA provides Web interface for administration 445 \item Features include: 446 \begin{itemize} 447 \item Multi-tenant support 448 \item Refunds 449 \item Tipping (Website pays visitor) 450 \item Webhooks 451 \item Inventory management (optional) 452 \end{itemize} 453 \item Implemented in C on top of GNU libmicrohttpd 454 \end{itemize} 455 \end{minipage} 456 \begin{minipage}{5cm} 457 \includegraphics[width=5cm]{screenshots/merchant-spa-settings} 458 \end{minipage} 459 \end{frame} 460 461 462 \begin{frame}{Taler Wallet} 463 The {\bf Wallet} is the software run by consumers to store 464 their digital cash and authorize transactions. 465 466 \begin{minipage}{8cm} 467 \begin{itemize} 468 \item {\bf wallet-core} is the logic shared by all interfaces 469 \item Applications exist for Android, F-Droid, 470 WebExtension (Chrome, Chromium, Firefox, etc.), iOS ({\bf WiP}) 471 \item Features include: 472 \begin{itemize} 473 \item Multi-currency support 474 \item Wallet-to-wallet payments (NFC or QR code) 475 \item CRDT-like data model 476 \end{itemize} 477 \item {\bf wallet-core} implemented in TypeScript 478 \end{itemize} 479 Can be integrated into other Apps if desired. 480 \end{minipage} 481 \begin{minipage}{3cm} 482 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png} 483 \end{minipage} 484 \end{frame} 485 486 487 \begin{frame}{Taler Auditor} 488 The {\bf Auditor} is the software run by an independent auditor 489 to validate the operation of an Exchange. 490 491 \begin{itemize} 492 \item REST API for additional report inputs by merchants (optional) 493 \item Secure database replication logic 494 \item Implemented in C on top of GNU libmicrohttpd 495 \end{itemize} 496 \end{frame} 497 498 499 \begin{frame}{Pretix Taler payment plugin} 500 \begin{center} 501 \includegraphics[width=0.5\textwidth]{screenshots/pretix.png} 502 \end{center} 503 504 Pretix is a ticket sales system. 505 506 \begin{itemize} 507 \item Pretix payment plugin enables payments via GNU Taler 508 \item Developed by Pretix.eu for \EUR{3,000} on behalf of Taler Systems SA 509 \end{itemize} 510 \end{frame} 511 512 513 \begin{frame}{WooCommerce Taler payment plugin} 514 \begin{minipage}{6cm} 515 \begin{itemize} 516 \item WooCommerce is an e-commerce plugin for WordPress. 517 \item WooCommerce payment plugin enables payments via GNU Taler 518 \item Features include: 519 \begin{itemize} 520 \item Trivial configuration 521 \item Support for refunds 522 \item Full internationalization 523 \end{itemize} 524 \item WooCommerce and its plugins are implemented in PHP 525 \end{itemize} 526 \end{minipage} 527 \begin{minipage}{5cm} 528 \includegraphics[width=4cm]{screenshots/woocommerce-cart.png} 529 \includegraphics[width=4cm]{screenshots/woocommerce-settings.png} 530 \end{minipage} 531 \end{frame} 532 533 534 \begin{frame}{Point-of-Sale App for Android} 535 536 \begin{minipage}{7cm} 537 \begin{itemize} 538 \item Allows merchant to generate orders against Taler backend 539 and display QR code to enable customer to pay in person 540 \item Patterned after ViewTouch restaurant UI 541 \item Features include: 542 \begin{itemize} 543 \item Internet-based configuration 544 \item Products sorted by categories 545 \item Easy undo of every operation 546 \item Manages multiple concurrent orders 547 \end{itemize} 548 \item The Point-of-Sale App is implemented in Kotlin 549 \end{itemize} 550 \end{minipage} 551 \begin{minipage}{4cm} 552 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg} 553 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg} 554 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg} 555 \end{minipage} 556 \end{frame} 557 558 559 \begin{frame}[c]{The Taler Snack Machine\footnote{by M. Boss and D. Hofer}} 560 \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.} 561 \vfill 562 \begin{figure} 563 \centering 564 \includegraphics[width=1.0\textwidth]{design} 565 \end{figure} 566 \end{frame} 567 568 \begin{frame}[c]{User story: Dr. Thomas Moser (SNB)} 569 \begin{figure} 570 \includegraphics[width=0.45\textwidth]{moser1.jpeg} 571 \includegraphics[width=0.45\textwidth]{moser2.jpeg} 572 \includegraphics[width=0.45\textwidth]{moser3.jpeg} 573 \includegraphics[width=0.45\textwidth]{moser4.jpeg} 574 \end{figure} 575 \end{frame} 576 577 578 \begin{frame}{LibEuFin} 579 LibEuFin is a standalone project that provides adapters to bank account 580 access APIs. 581 582 \begin{itemize} 583 \item LibEuFin provides both a generic access layer and an 584 implementation of the Wire Gateway for the exchange 585 \item Supports EBICS 2.5 586 \item other APIs such as FinTS or PSD2-style XS2A APIs can be added 587 without requiring changes to the Exchange 588 \item tested with German bank GLS business account and real Euros 589 \end{itemize} 590 \vfill 591 \begin{itemize} 592 \item \texttt{libeufin-nexus} is the main service 593 \item Almost all configuration (except DB credentials) 594 is stored in the database and managed via a RESTful HTTP API 595 \item \texttt{libeufin-sandbox} implements a toy EBICS host for protocol 596 testing 597 \item \texttt{libeufin-cli} is client for the HTTP API (only implements a subset 598 of available functionality) 599 \end{itemize} 600 \end{frame} 601 602 603 \begin{frame}{Cashier App for Android} 604 \begin{minipage}{4cm} 605 \begin{itemize} 606 \item Enables BFH staff to convert cash to e-cash 607 \item Staff has special bank accounts with limited funds 608 \item Students can pay staff in cash to receive e-cash 609 \item The Cashier App is implemented in Kotlin 610 \end{itemize} 611 \end{minipage} 612 \begin{minipage}{3cm} 613 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103315.png} 614 \end{minipage} 615 \begin{minipage}{3cm} 616 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103325.png} 617 \end{minipage} 618 \end{frame} 619 620 621 \begin{frame}{Depolymerization} 622 Depolymerization is a bridge between GNU Taler and blockchains, 623 making Taler a layer 2 system for crypto-currencies (like Lightning). 624 625 \begin{itemize} 626 \item Currently implemented for Bitcoin and Ethereum 627 crypto-currencies, with the DLTs as the ``RTGS'' 628 \item Provides same API to Exchange as LibEuFin 629 % \item Transaction rate and speed limited by the underlying blockchain 630 \item Implemented in Rust 631 \end{itemize} 632 \begin{center} 633 \url{https://bitcoin.ice.bfh.ch/} 634 \end{center} 635 \end{frame} 636 637 638 \begin{frame}{TalDir (WiP)} 639 TalDir is an extension to the existing 640 peer-to-peer payment functionality. 641 642 \begin{itemize} 643 \item Registry to associate wallets with network addresses 644 \item Extensible to different types of network services: 645 \begin{itemize} 646 \item E-mail 647 \item SMS 648 \item Twitter 649 \item ... 650 \end{itemize} 651 \item Send payments or invoices to wallets associated with network address 652 \item Will {\bf not} require sending wallet to use same network service 653 \end{itemize} 654 \end{frame} 655 656 657 \begin{frame}{Partially Offline Payments with GNU Taler} 658 659 \begin{center} 660 \resizebox{8cm}{7cm}{ 661 \begin{sequencediagram} 662 \newinst{pos}{\shortstack{PoS \\ 663 \\ \begin{tikzpicture} 664 \node [fill=gray!20,draw=black,thick ,align=center] {PoS key \\ PoS ID}; 665 \end{tikzpicture} 666 }} 667 \newinst[2]{customer}{\shortstack{Customer \\ 668 \\ \begin{tikzpicture} 669 \node [fill=gray!20,draw=black,thick ,align=center] {Digital \\ Wallet}; 670 \end{tikzpicture} 671 }} 672 \newinst[2]{backend}{\shortstack{Merchant Backend \\ 673 \\ \begin{tikzpicture}[shape aspect=.5] 674 \tikzset{every node/.style={cylinder, shape border rotate=90, draw,fill=gray!25}} 675 \node at (1.5,0) {\shortstack{{\tiny PoS key} \\ {\tiny PoS ID}}}; 676 \end{tikzpicture} 677 }} 678 \postlevel 679 \mess[0]{pos}{PoS ID}{customer} 680 \begin{sdblock}{optional}{} 681 \begin{callself}{customer}{Amount}{} 682 \end{callself} 683 \end{sdblock} 684 \prelevel 685 \prelevel 686 \prelevel 687 \prelevel 688 \prelevel 689 \begin{sdblock}{optional}{} 690 \begin{callself}{pos}{Amount}{} 691 \end{callself} 692 \end{sdblock} 693 \postlevel 694 \mess[0]{customer}{PoS ID, [Amount]?}{backend} 695 \mess[0]{backend}{Contract}{customer} 696 \postlevel 697 \mess[0]{customer}{Payment}{backend} 698 \begin{callself}{pos}{OTP(PoS key)}{} 699 \end{callself} 700 \prelevel 701 \prelevel 702 \begin{callself}{backend}{OTP(PoS key)}{} 703 \end{callself} 704 \mess[0]{backend}{OTP code}{customer} 705 \postlevel 706 \mess[0]{customer}{OTP code}{pos} 707 \end{sequencediagram} 708 } 709 \end{center} 710 \end{frame} 711 712 713 \begin{frame}{Feature comparison} 714 \begin{center} \small 715 \begin{tabular}{l||c|c|c|c|c} 716 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 717 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 718 Offline & +++ & $-$$-$ & $-$$-$ & + & ++ \\ \hline 719 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 720 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 721 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 722 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 723 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 724 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 725 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 726 Libre & $-$ & +++ & +++ & $-$ $-$ $-$ & +++ \\ 727 \end{tabular} 728 \end{center} 729 \end{frame} 730 731 732 \begin{frame}{Do you have any questions?} 733 \framesubtitle{\url{https://taler.net/en/bibliography.html}} 734 \vfill 735 References: 736 {\tiny 737 \begin{enumerate} 738 \item{David Chaum, Christian Grothoff and Thomas Moser. 739 {\em How to issue a central bank digital currency}. 740 {\bf SNB Working Papers, 2021}.} 741 \item{Martin Summer and Hannes Hermanky. 742 {\em A digital euro and the future of cash}. 743 {\bf Monetary Policy \& The Economy Q1-Q2/22}.} 744 \item{Antoine d’Aligny, Emmanuel Benoist, Florian Dold, Christian Grothoff, Özgür Kesim and Martin Schanzenbach. 745 {\em Who comes after us? The correct mindset for designing a Central Bank Digital Currency}. 746 {\bf SUERF Policy Notes 279/2022}.} 747 \item{Florian Dold. 748 {\em GNU Taler}. 749 {\bf University of Rennes 1, PhD Thesis, 2019}.} 750 \item{Christian Grothoff and Alex Pentland. 751 {\em Digital cash and privacy: What are the alternatives to Libra?}. 752 {\bf MIT Media Lab, 2019}.} 753 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 754 {\em Enabling Secure Web Payments with GNU Taler}. 755 {\bf SPACE 2016}.} 756 \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach. 757 {\em Zero-Knowledge Age Restriction for GNU Taler}. 758 {\bf ESORICS, 2022}.} 759 \item{Gian Demarmels and Lucien Heuzeveldt. 760 {\em Adding Schnorr's Blind Signature in Taler}. 761 {\bf BFH, Bachelor's Thesis, 2022}.} 762 \item{Marco Boss. 763 {\em GNU Taler Scalability}. 764 {\bf BFH, Bachelor's Thesis, 2022}.} 765 \end{enumerate} 766 } 767 \end{frame} 768 769 \end{document} 770