2023-boj.tex (62357B)
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{tikz,eurosym,calc} 21 \usetikzlibrary{tikzmark} 22 \usetikzlibrary{shapes,arrows,arrows.meta} 23 \usetikzlibrary{positioning,fit,patterns} 24 \usetikzlibrary{calc} 25 26 % CSS 27 \lstdefinelanguage{CSS}{ 28 basicstyle=\ttfamily\scriptsize, 29 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}, 30 sensitive=true, 31 morecomment=[l]{//}, 32 morecomment=[s]{/*}{*/}, 33 morestring=[b]', 34 morestring=[b]", 35 alsoletter={:}, 36 alsodigit={-} 37 } 38 39 % JavaScript 40 \lstdefinelanguage{JavaScript}{ 41 basicstyle=\ttfamily\scriptsize, 42 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 43 morecomment=[s]{/*}{*/}, 44 morecomment=[l]//, 45 morestring=[b]", 46 morestring=[b]' 47 } 48 49 \lstdefinelanguage{HTML5}{ 50 basicstyle=\ttfamily\scriptsize, 51 language=html, 52 sensitive=true, 53 alsoletter={<>=-}, 54 morecomment=[s]{<!-}{-->}, 55 tag=[s], 56 otherkeywords={ 57 % General 58 >, 59 % Standard tags 60 <!DOCTYPE, 61 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 62 % body 63 </body, <body, 64 % Divs 65 </div, <div, </div>, 66 % Paragraphs 67 </p, <p, </p>, 68 % scripts 69 </script, <script, 70 % More tags... 71 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 72 }, 73 ndkeywords={ 74 % General 75 =, 76 % HTML attributes 77 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 78 % SVG attributes 79 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 80 % CSS properties 81 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 82 % CSS3 properties 83 transform:, -moz-transform:, -webkit-transform:, 84 animation:, -webkit-animation:, 85 transition:, transition-duration:, transition-property:, transition-timing-function:, 86 } 87 } 88 89 \lstdefinelanguage{JavaScript}{ 90 basicstyle=\ttfamily\scriptsize, 91 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 92 keywordstyle=\color{blue}\bfseries, 93 ndkeywords={class, export, boolean, throw, implements, import, this}, 94 ndkeywordstyle=\color{darkgray}\bfseries, 95 identifierstyle=\color{black}, 96 sensitive=false, 97 comment=[l]{//}, 98 morecomment=[s]{/*}{*/}, 99 commentstyle=\color{purple}\ttfamily, 100 stringstyle=\color{red}\ttfamily, 101 morestring=[b]', 102 morestring=[b]" 103 } 104 105 \def\checkmark{\tikz\fill[scale=0.4](0,.35) -- (.25,0) -- (1,.7) -- (.25,.15) -- cycle;} 106 107 108 \setbeamersize{description width=1em} 109 110 \definecolor{blue}{rgb}{0,0,0.7} 111 \newcommand{\orange}[1]{{\color{orange}#1}} 112 \newcommand{\blue}[1]{{\color{blue}#1}} 113 \newcommand{\red}[1]{{\color{red}#1}} 114 \newcommand{\Guardian}{\mathcal{G}} 115 \newcommand{\Child}{\mathcal{C}} 116 \newcommand{\Customer}{\mathcal{C}} 117 \newcommand{\Merchant}{\mathcal{M}} 118 \newcommand{\Exchange}{\mathcal{E}} 119 120 \newcommand{\Commit}{\mathsf{Commit}} 121 \newcommand{\Attest}{\mathsf{Attest}} 122 \newcommand{\Verify}{\mathsf{Verify}} 123 \newcommand{\Derive}{\mathsf{Derive}} 124 \newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}} 125 \newcommand{\Compare}{\mathsf{Compare}} 126 \newcommand{\AgeVer}{\mathsf{AgeVer}} 127 128 \newcommand{\HashF}{\mathsf{H}} 129 \newcommand{\Hash}{\mathsf{H}} 130 \newcommand{\Block}{\mathbb{B}} 131 \newcommand{\Pub}{\mathsf{Pub}} 132 \newcommand{\Sign}{\mathsf{Sig}} 133 \newcommand{\Ver}{\mathsf{Ver}} 134 \newcommand{\Encoding}{\mathsf{Encoding}} 135 \newcommand{\ECDSA}{\mathsf{ECDSA}} 136 \newcommand{\Null}{\mathcal{O}} 137 \newcommand{\EC}{\mathrm{ec}} 138 \newcommand{\Curve}{\mathsf{Curve25519}} 139 \newcommand{\SHA}{\mathsf{SHA256}} 140 \newcommand{\SHAF}{\mathsf{SHA252}} 141 \newcommand{\FDH}{\mathsf{FDH}} 142 143 \newcommand{\negl}{\epsilon} 144 145 \newcommand{\rand}{\mathsf{rand}} 146 \newcommand{\age}{\mathsf{a}} 147 \newcommand{\Age}{\mathsf{M}} 148 \newcommand{\bage}{\mathsf{b}} 149 \newcommand{\minage}{\mathsf{m}} 150 \newcommand{\attest}{\mathsf{T}} 151 \newcommand{\commitment}{\mathsf{Q}} 152 \newcommand{\pruf}{\mathsf{P}} 153 \newcommand{\Vcommitment}{\vec{\mathsf{Q}}} 154 \newcommand{\Vpruf}{\vec{\mathsf{P}}} 155 \newcommand{\blinding}{\beta} 156 157 \newcommand{\ZN}{\mathbb{Z}_N} 158 \newcommand{\Z}{\mathbb{Z}} 159 \newcommand{\N}{\mathbb{N}} 160 \newcommand{\A}{\mathbb{A}} 161 \newcommand{\E}{\mathbb{E}} 162 \newcommand{\F}{\mathbb{F}} 163 \newcommand{\seck}{\mathsf{s}} 164 \newcommand{\pubk}{\mathsf{P}} 165 \renewcommand{\H}{\mathbb{H}} 166 \newcommand{\K}{\mathbb{K}} 167 \newcommand{\Proofs}{\mathbb{P}} 168 \newcommand{\Commitments}{\mathbb{O}} 169 \newcommand{\Attests}{\mathbb{T}} 170 \newcommand{\Blindings}{\mathbb{B}} 171 \newcommand{\Nil}{\perp} 172 173 \newcommand{\p}{\mathsf{p}} 174 \newcommand{\com}{\mathsf{com}} 175 \newcommand{\prf}{\mathsf{prf}} 176 177 \newcommand{\Adv}{\mathcal{A}} 178 \newcommand{\PPT}{\mathfrak{A}} 179 \newcommand{\Probability}{\mathrm{Pr}} 180 \newcommand{\Algorithm}{f} 181 \renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}} 182 183 \DeclareMathOperator{\Image}{Im} 184 \DeclareMathOperator{\Mod}{mod} 185 186 \newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}} 187 \newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}} 188 \newcommand{\FDHg}[1]{[#1]_g\,} 189 \newcommand{\logg}{{\breve{g}}} 190 191 192 \newcommand{\drawfrom}{\xleftarrow{\$}} 193 \newcommand\Exists{% 194 \mathop{\lower0.75ex\hbox{\ensuremath{% 195 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}% 196 \limits} 197 198 \newcommand\Forall{% 199 \mathop{\lower0.75ex\hbox{\ensuremath{% 200 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% 201 \limits} 202 203 204 \title{GNU Taler} 205 %\subtitle{} 206 207 \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} 208 %\setbeamercovered{transparent=1} 209 210 \author[C. Grothoff]{J. Burdges, {\bf F. Dold, C. Grothoff, M. Stanisci}} 211 \date{\today} 212 \institute{Taler Systems SA \& The GNU Project} 213 214 215 \begin{document} 216 217 \justifying 218 219 \begin{frame} 220 \begin{center} 221 \LARGE {\bf GNU} \\ 222 \vspace{0.3cm} 223 % \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} 224 \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf} 225 \vfill 226 \end{center} 227 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords) 228 {\Large {\bf \href{https://taler.net/}{taler.net}} \\ 229 \href{https://twitter.com/taler}{taler@twitter} \\ 230 \href{https://taler-systems.com/}{taler-systems.com}} 231 \end{textblock*} 232 233 % Substitute based on who is giving the talk! 234 \begin{textblock*}{8cm}(4.7cm,6.7cm) % {block width} (coords) 235 {\hfill {{\bf Dr. Emmanuel Benoist} \\ 236 \hfill {\bf Dr. Florian Dold} \\ 237 \hfill {\bf Dr. Andreas Habegger} \\ 238 \hfill {\bf Dr. Christian Grothoff} \\ } 239 \hfill \{benoist,dold,habegger,grothoff\}@taler.net } 240 \end{textblock*} 241 242 \end{frame} 243 244 \begin{frame}{GNU Taler} 245 \vfill 246 \begin{center} 247 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 248 \end{center} 249 \vfill 250 \begin{center} 251 \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf} 252 \end{center} 253 \vfill 254 \begin{center} 255 Privacy-Preserving, Practical, Taxable, Free Software, Efficient 256 \end{center} 257 \vfill 258 \vfill 259 \ % 260 \end{frame} 261 262 263 \begin{frame}{Agenda} 264 \tableofcontents 265 \end{frame} 266 267 268 \section{Introduction} 269 270 \begin{frame} 271 \vfill 272 \begin{center} 273 {\bf Part I: Introduction} 274 \end{center} 275 \vfill 276 \end{frame} 277 278 279 \section{What is Taler?} 280 \begin{frame}{What is Taler?} 281 \framesubtitle{\url{https://taler.net/en/features.html}} \noindent 282 Taler is 283 \vfill 284 \begin{itemize} 285 \item a Free/Libre software \emph{payment system} infrastructure project 286 \item ... with a surrounding software ecosystem 287 \item ... and a company (Taler Systems S.A.) and community that wants to deploy it 288 as widely as possible. 289 \end{itemize} 290 \vfill 291 \noindent 292 However, Taler is 293 \begin{itemize} 294 \item \emph{not} a currency 295 \item \emph{not} a long-term store of value 296 \item \emph{not} a network or instance of a system 297 \item \emph{not} decentralized 298 % \item \emph{not} based on proof-of-work or proof-of-stake 299 \item combinable with a DLT back-end if requested 300 \end{itemize} 301 \end{frame} 302 303 304 \begin{frame}{Design principles} 305 \framesubtitle{https://taler.net/en/principles.html} 306 GNU Taler must ... 307 \begin{enumerate} 308 \item {... be implemented as {\bf free software} (but {\em available} under a commercial license).} 309 \item {... protect the {\bf privacy of buyers}.} 310 \item {... must enable the state to {\bf tax income} and crack down on 311 illegal business activities.} 312 \item {... prevent payment fraud.} 313 \item {... only {\bf disclose the minimal amount of information 314 necessary}.} 315 \item {... be usable.} 316 \item {... be efficient.} 317 \item {... avoid single points of failure.} 318 \item {... foster {\bf competition} in associated services.} 319 \end{enumerate} 320 \end{frame} 321 322 323 \begin{frame} 324 \frametitle{Taler Overview} 325 \begin{center} 326 \begin{tikzpicture} 327 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 328 \node (origin) at (0,0) {}; 329 \node (exchange) [def,above=of origin,draw]{Exchange}; 330 \node (customer) [def, draw, below left=of origin] {Customer}; 331 \node (merchant) [def, draw, below right=of origin] {Merchant}; 332 \node (auditor) [def, draw, above right=of origin]{Auditor}; 333 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 334 335 \tikzstyle{C} = [color=black, line width=1pt] 336 337 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 338 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 339 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 340 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 341 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 342 343 \end{tikzpicture} 344 \end{center} 345 \end{frame} 346 347 348 \begin{frame}{Architecture of Taler} 349 \begin{center} 350 \includegraphics[width=1\textwidth]{operations.png} 351 \end{center} 352 \end{frame} 353 354 355 \begin{frame}{Consumer Impact of Taler} 356 \begin{itemize} 357 \item {\bf Convenient:} pay with one click instantly --– in Euro, 358 Dollar, Yen or Bitcoin 359 \item {\bf Friction-free security:} Payments do not require sign-up, 360 login or multi-factor authentication 361 \item {\bf Privacy-preserving:} payment requires/shares no personal information 362 \item {\bf Bank account:} not required 363 \end{itemize} 364 \end{frame} 365 366 367 \begin{frame}{Merchant Impact of Taler} 368 \begin{itemize} 369 \item {\bf Instant clearance:} one-click transactions and instant clearance at par 370 \item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort 371 \item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs 372 \item {\bf 1-click checkout:} without Amazon and without false 373 positives in fraud detection 374 \end{itemize} 375 \end{frame} 376 377 378 \begin{frame}{Taler: Unique Regulatory Features for Central Banks} 379 \framesubtitle{\url{https://www.snb.ch/en/mmr/papers/id/working_paper_2021_03}} 380 \begin{itemize} 381 \item Central bank issues digital coins equivalent to issuing cash \\ 382 $\Rightarrow$ monetary policy remains under CB control 383 \item Architecture with consumer accounts at commercial banks \\ 384 $\Rightarrow$ no competition for commercial banking (S\&L) \\ 385 $\Rightarrow$ CB does not have to manage KYC, customer support 386 \item Withdrawal limits and denomination expiration \\ 387 $\Rightarrow$ protects against bank runs and hoarding 388 \item Income transparency and possibility to set fees \\ 389 $\Rightarrow$ additional insights into economy and new policy options 390 \item Revocation protocols and loss limitations \\ 391 $\Rightarrow$ exit strategy and handles catastrophic security incidents 392 \item Privacy by cryptographic design not organizational compliance \\ 393 $\Rightarrow$ CB cannot be forced to facilitate mass-surveillance 394 \end{itemize} 395 \end{frame} 396 397 398 \begin{frame}{Active collaborations} 399 {\tiny 400 \begin{description} 401 \item {\bf Berner Fachhochschule:} \\ Snack machine \& blockchain integration \& scalability 402 \item {\bf Technische Universit\"at Eindhoven:} \\ Post-quantum cryptography 403 \item {\bf Freie Universit\"at Berlin:} \\ Programmability \& embedded systems 404 \item {\bf The GNU Project}: \\ Integration into FLOSS software 405 \item {\bf Code Blau GmbH}: \\ Independent auditor development 406 \item {\bf Fraunhofer Gesellschaft}: \\ Identity management \& SSI \& wallet-to-wallet communication 407 \item {\bf Fiscaltrust GmbH}: \\ Point-of-sale integration ({\bf 408 new}) 409 \item {\bf Bank of International Settlements}: \\ Participation in Point Zero Forum 2023 ({\bf new}) 410 \item {\bf Oesterreichische Nationalbank AG}: \\ Joint presentation 411 proposal for Re:publica 2023 ({\bf new}) 412 \end{description} 413 } 414 \end{frame} 415 416 417 \begin{frame}{Launch Timeline} 418 \begin{description} 419 \item[2022] Internal deployment at BFH 420 \item[Q1'2023] Deployment using Bitcoin at BFH (running, but not yet announced) 421 \item[Q2-3'2023] Deployment of local currency Netzbon in Basel 422 \item[Q3'2023] Public deployment of eCHF stablecoin in Switzerland, cleared by FINMA 423 \item[2024] German bank executes ``new product process'' for launch in Eurozone 424 \end{description} 425 \end{frame} 426 427 428 \begin{frame}{Usability of Taler} 429 \vfill 430 \begin{center} 431 \url{https://demo.taler.net/} 432 \end{center} 433 \begin{enumerate} 434 \item Install browser extension. 435 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 436 \item Visit the {\tt shop.demo.taler.net} to spend coins. 437 \end{enumerate} 438 \vfill 439 \end{frame} 440 441 442 \section{Component Zoo} 443 444 \begin{frame} 445 \vfill 446 \begin{center} 447 {\bf Part II: Component Zoo} 448 \end{center} 449 \vfill 450 \end{frame} 451 452 453 \begin{frame}{The Taler Software Ecosystem: Overview} 454 \framesubtitle{\url{https://taler.net/en/docs.html}} 455 Taler is based on modular components that work together to provide a 456 complete payment system: 457 \vfill 458 \begin{itemize} 459 \item {\bf Exchange:} Service provider for digital cash 460 \begin{itemize} 461 \item Core exchange software (cryptography, database) 462 \item Air-gapped key management, real-time {\bf auditing} 463 \item {\bf LibEuFin}: Modular integration with banking systems 464 \end{itemize} 465 \item {\bf Merchant:} Integration service for existing businesses 466 \begin{itemize} 467 \item Core merchant backend software (cryptography, database) 468 \item {\bf Back-office interface} for staff 469 \item {\bf Frontend integration} (E-commerce, Point-of-sale) 470 \end{itemize} 471 \item {\bf Wallet:} Consumer-controlled applications for e-cash 472 \begin{itemize} 473 \item Multi-platform wallet software (for browsers \& mobile phones) 474 \item Wallet backup storage providers ({\bf sync}) 475 \item {\bf Anastasis}: Recovery of lost wallets based on secret splitting 476 \end{itemize} 477 \end{itemize} 478 \end{frame} 479 480 481 \begin{frame}{Taler Exchange} 482 The {\bf Exchange} is the core logic of the payment system. 483 484 \begin{itemize} 485 \item One exchange at minimum must be operated per currency 486 \item Offers a REST API for merchants and customers 487 \item Uses several helper processes for configuration and to 488 interact with RTGS and cryptography 489 \item KYC support via OAuth 2.0, KycAID or Persona APIs 490 \item Implemented in C on top of GNU libmicrohttpd 491 \end{itemize} 492 Scalability: 28'500 transactions/second measured % in BS-thesis 493 in 2022 using two servers on Grid5000. Likely several times 494 higher today (but we did not re-measure recently). 495 \end{frame} 496 497 498 \begin{frame}{Taler Merchant} 499 The {\bf Merchant} is the software run by merchants to accept\\ 500 GNU Taler payments. 501 502 \begin{minipage}{6cm} 503 \begin{itemize} 504 \item REST API for integration with e-commerce 505 \item SPA provides Web interface for administration 506 \item Features include: 507 \begin{itemize} 508 \item Multi-tenant support 509 \item Refunds 510 \item Tipping (Website pays visitor) 511 \item Webhooks 512 \item Inventory management (optional) 513 \end{itemize} 514 \item Implemented in C on top of GNU libmicrohttpd 515 \end{itemize} 516 \end{minipage} 517 \begin{minipage}{5cm} 518 \includegraphics[width=5cm]{screenshots/merchant-spa-settings} 519 \end{minipage} 520 \end{frame} 521 522 523 \begin{frame}{Taler Wallet} 524 The {\bf Wallet} is the software run by consumers to store 525 their digital cash and authorize transactions. 526 527 \begin{minipage}{8cm} 528 \begin{itemize} 529 \item {\bf wallet-core} is the logic shared by all interfaces 530 \item Applications exist for Android, F-Droid, 531 WebExtension (Chrome, Chromium, Firefox, etc.), iOS ({\bf WiP}) 532 \item Features include: 533 \begin{itemize} 534 \item Multi-currency support 535 \item Wallet-to-wallet payments (NFC or QR code) 536 \item CRDT-like data model 537 \end{itemize} 538 \item {\bf wallet-core} implemented in TypeScript 539 \end{itemize} 540 Can be integrated into other Apps if desired. 541 \end{minipage} 542 \begin{minipage}{3cm} 543 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png} 544 \end{minipage} 545 \end{frame} 546 547 548 \begin{frame}{Taler Auditor} 549 The {\bf Auditor} is the software run by an independent auditor 550 to validate the operation of an Exchange. 551 552 \begin{itemize} 553 \item REST API for additional report inputs by merchants (optional) 554 \item Secure database replication logic 555 \item Implemented in C on top of GNU libmicrohttpd 556 \end{itemize} 557 \end{frame} 558 559 560 \begin{frame}{Pretix Taler payment plugin} 561 \begin{center} 562 \includegraphics[width=0.5\textwidth]{screenshots/pretix.png} 563 \end{center} 564 565 Pretix is a ticket sales system. 566 567 \begin{itemize} 568 \item Pretix payment plugin enables payments via GNU Taler 569 \item Developed by Pretix.eu for \EUR{3,000} on behalf of Taler Systems SA 570 \end{itemize} 571 \end{frame} 572 573 574 \begin{frame}{WooCommerce Taler payment plugin} 575 \begin{minipage}{6cm} 576 \begin{itemize} 577 \item WooCommerce is an e-commerce plugin for WordPress. 578 \item WooCommerce payment plugin enables payments via GNU Taler 579 \item Features include: 580 \begin{itemize} 581 \item Trivial configuration 582 \item Support for refunds 583 \item Full internationalization 584 \end{itemize} 585 \item WooCommerce and its plugins are implemented in PHP 586 \end{itemize} 587 \end{minipage} 588 \begin{minipage}{5cm} 589 \includegraphics[width=4cm]{screenshots/woocommerce-cart.png} 590 \includegraphics[width=4cm]{screenshots/woocommerce-settings.png} 591 \end{minipage} 592 \end{frame} 593 594 595 \begin{frame}{Point-of-Sale App for Android} 596 597 \begin{minipage}{7cm} 598 \begin{itemize} 599 \item Allows merchant to generate orders against Taler backend 600 and display QR code to enable customer to pay in person 601 \item Patterned after ViewTouch restaurant UI 602 \item Features include: 603 \begin{itemize} 604 \item Internet-based configuration 605 \item Products sorted by categories 606 \item Easy undo of every operation 607 \item Manages multiple concurrent orders 608 \end{itemize} 609 \item The Point-of-Sale App is implemented in Kotlin 610 \end{itemize} 611 \end{minipage} 612 \begin{minipage}{4cm} 613 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg} 614 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg} 615 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg} 616 \end{minipage} 617 \end{frame} 618 619 620 \begin{frame}{LibEuFin} 621 LibEuFin is a standalone project that provides adapters to bank account 622 access APIs. 623 624 \begin{itemize} 625 \item LibEuFin provides both a generic access layer and an 626 implementation of the Wire Gateway for the exchange 627 \item Supports EBICS 2.5 628 \item other APIs such as FinTS or PSD2-style XS2A APIs can be added 629 without requiring changes to the Exchange 630 \item tested with German bank GLS business account and real Euros 631 \end{itemize} 632 \vfill 633 \begin{itemize} 634 \item \texttt{libeufin-nexus} is the main service 635 \item Almost all configuration (except DB credentials) 636 is stored in the database and managed via a RESTful HTTP API 637 \item \texttt{libeufin-sandbox} implements a toy EBICS host for protocol 638 testing 639 \item \texttt{libeufin-cli} is client for the HTTP API (only implements a subset 640 of available functionality) 641 \end{itemize} 642 \end{frame} 643 644 645 \begin{frame}{Cashier App for Android} 646 \begin{minipage}{4cm} 647 \begin{itemize} 648 \item Enables BFH staff to convert cash to e-cash 649 \item Staff has special bank accounts with limited funds 650 \item Students can pay staff in cash to receive e-cash 651 \item The Cashier App is implemented in Kotlin 652 \end{itemize} 653 \end{minipage} 654 \begin{minipage}{3cm} 655 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103315.png} 656 \end{minipage} 657 \begin{minipage}{3cm} 658 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103325.png} 659 \end{minipage} 660 \end{frame} 661 662 663 \begin{frame}{Depolymerization} 664 Depolymerization is a bridge between GNU Taler and blockchains, 665 making Taler a layer 2 system for crypto-currencies (like Lightning). 666 667 \begin{itemize} 668 \item Currently implemented for Bitcoin and Ethereum 669 crypto-currencies, with the DLTs as the ``RTGS'' 670 \item Provides same API to Exchange as LibEuFin 671 % \item Transaction rate and speed limited by the underlying blockchain 672 \item Implemented in Rust 673 \end{itemize} 674 \begin{center} 675 \url{https://bitcoin.ice.bfh.ch/} 676 \end{center} 677 \end{frame} 678 679 680 \begin{frame}{TalDir (WiP)} 681 TalDir is an extension to the existing 682 peer-to-peer payment functionality. 683 684 \begin{itemize} 685 \item Registry to associate wallets with network addresses 686 \item Extensible to different types of network services: 687 \begin{itemize} 688 \item E-mail 689 \item SMS 690 \item Twitter 691 \item ... 692 \end{itemize} 693 \item Send payments or invoices to wallets associated with network address 694 \item Will {\bf not} require sending wallet to use same network service 695 \end{itemize} 696 \end{frame} 697 698 699 \section{Basic Cryptography} 700 701 \begin{frame} 702 \vfill 703 \begin{center} 704 {\bf Part III: Basic Cryptography} 705 \end{center} 706 \vfill 707 \end{frame} 708 709 710 711 712 \begin{frame}{How does it work?} 713 We use a few well established and tested constructions: 714 \begin{itemize} 715 \item Cryptographic hash function (1989) 716 \item Blind signature (1983) 717 \item Schnorr signature (1989) 718 \item Diffie-Hellman key exchange (1976) 719 \item Cut-and-choose zero-knowledge proof (1985) 720 \end{itemize} 721 But of course we use modern instantiations. 722 \end{frame} 723 724 725 \begin{frame}{Withdrawing coins on the Web} 726 \begin{center} 727 \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf} 728 \end{center} 729 \end{frame} 730 731 732 \begin{frame}{Payment processing with Taler} 733 \begin{center} 734 \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf} 735 \end{center} 736 \end{frame} 737 738 739 \begin{frame}{Giving change} 740 It would be inefficient to pay EUR 100 with 1 cent coins! 741 \begin{itemize} 742 \item Denomination key represents value of a coin. 743 \item Exchange may offer various denominations for coins. 744 \item Wallet may not have exact change! 745 \item Usability requires ability to pay given sufficient total funds. 746 \end{itemize}\pause 747 Key goals: 748 \begin{itemize} 749 \item maintain unlinkability 750 \item maintain taxability of transactions 751 \end{itemize}\pause 752 Method: 753 \begin{itemize} 754 \item Contract can specify to only pay {\em partial value} of a coin. 755 \item Exchange allows wallet to obtain {\em unlinkable change} 756 for remaining coin value. 757 \end{itemize} 758 \end{frame} 759 760 761 \section{Illustration of Programmable Money: Age Restrictions} 762 763 \begin{frame} 764 \vfill 765 \begin{center} 766 \vfill 767 {\bf Part IV:} 768 \vfill 769 {\bf Illustration of Programmable Money} 770 \vfill 771 {\bf Zero-knowledge Age Restrictions} 772 \vfill 773 \end{center} 774 \vfill 775 \end{frame} 776 777 778 \begin{frame}{Age restriction in e-commerce} 779 780 \begin{description} 781 \item[Problem:]~\\[1em] 782 Verification of minimum age requirements in e-commerce.\\[2em] 783 784 \item[Common solutions:] 785 786 \begin{tabular}{l<{\onslide<2->}c<{\onslide<3->}cr<{\onslide}} 787 & \blue{Privacy} & \tikzmark{topau} \blue{Ext. authority}& \\[\medskipamount] 788 1. ID Verification & bad & required & \\[\medskipamount] 789 2. Restricted Accounts & bad & required & \\[\medskipamount] 790 3. Attribute-based & good & required &\tikzmark{bottomau} \\[\medskipamount] 791 \end{tabular} 792 \end{description} 793 794 \uncover<4->{ 795 \begin{tikzpicture}[overlay,remember picture] 796 \draw[orange,thick,rounded corners] 797 ($(pic cs:topau) +(0,0.5)$) rectangle ($(pic cs:bottomau) -(0.3, 0.2)$); 798 \end{tikzpicture} 799 \begin{center} 800 \bf Principle of subsidiarity is violated 801 \end{center} 802 } 803 \end{frame} 804 805 806 \begin{frame}{Age restriction design for GNU Taler} 807 Design and implementation of an age restriction scheme\\ 808 with the following goals: 809 810 \begin{enumerate} 811 \item It ties age restriction to the \textbf{ability to pay} (not to ID's) 812 \item maintains \textbf{anonymity of buyers} 813 \item maintains \textbf{unlinkability of transactions} 814 \item aligns with \textbf{principle of subsidiarity} 815 \item is \textbf{practical and efficient} 816 \end{enumerate} 817 818 \end{frame} 819 820 821 \begin{frame}{Age restriction} 822 \framesubtitle{Assumptions and scenario} 823 824 \begin{columns} 825 \column{7.5cm} 826 \begin{itemize} 827 \item<1-> Assumption: Checking accounts are under control of eligible adults/guardians. 828 \item<2-> \textit{Guardians} \textbf{commit} to an maximum age 829 \item<3-> \textit{Minors} \textbf{attest} their adequate age 830 \item<4-> \textit{Merchants} \textbf{verify} the attestations 831 \item<5-> Minors \textbf{derive} age commitments from existing ones 832 \item<6-> \textit{Exchanges} \textbf{compare} the derived age commitments 833 \end{itemize} 834 \column{5cm} 835 \uncover<7-> 836 { 837 \begin{center} 838 \fontsize{7pt}{7pt}\selectfont 839 \begin{tikzpicture}[scale=.5] 840 \node[circle,minimum size=15pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$}; 841 \node[circle,minimum size=15pt,fill=black!15] at ( 0:0) (Client) {$\Child$}; 842 \node[circle,minimum size=15pt,fill=black!15] at ( 0:4) (Merchant) {$\Merchant$}; 843 \node[circle,minimum size=15pt,fill=blue!15] at (140:3) (Guardian) {$\Guardian$}; 844 845 \draw[->] (Guardian) to [out=50,in=130, loop] node[above] 846 {$\Commit$} (Guardian); 847 \draw[->,blue] (Client) to [out=-125,in=-190, loop] node[below,left] 848 {\blue{$\Attest$}} (Client); 849 \draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above] 850 {\blue{$\Verify$}} (Merchant); 851 \draw[->,orange] (Client) to [out=-35,in=-100, loop] node[below] 852 {\orange{$\Derive$}} (Client); 853 \draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above] 854 {\orange{$\Compare$}} (Exchange); 855 856 \draw[orange,|->] (Client) to node[sloped,above,align=left] 857 {\orange{\scriptsize }} (Exchange); 858 \draw[blue,|->] (Client) to node[sloped, above] 859 {\blue{\scriptsize }} (Merchant); 860 \draw[,|->] (Guardian) to node[above,sloped,align=left] 861 {{\scriptsize }} (Client); 862 \end{tikzpicture} 863 \end{center} 864 } 865 \end{columns} 866 \vfill 867 % \uncover<7->{Note: Scheme is independent of payment service protocol.} 868 \end{frame} 869 870 871 \begin{frame}{Age Restrictions based on KYC} 872 % \item Our solution can in principle be used with any token-based payment scheme 873 % \item GNU Taler best aligned with our design goals (security, privacy and efficiency) 874 Subsidiarity requires bank accounts being owned by adults 875 \begin{itemize} 876 \item Scheme can be adapted to case where minors have bank accounts 877 \item Assumption: banks provide minimum age 878 information during bank 879 transactions. 880 \end{itemize} 881 \end{frame} 882 883 884 \begin{frame}{Conclusion} 885 Age restriction is a technical, ethical and legal challenge. 886 887 Existing solutions are 888 \begin{itemize} 889 \item without strong protection of privacy or 890 \item based on identity management systems (IMS) 891 \end{itemize} 892 \vfill 893 894 Our age restriction scheme offers a solution that is 895 \begin{itemize} 896 \item based on subsidiarity 897 \item privacy-preserving 898 \item efficient 899 \item an alternative to IMS 900 \end{itemize} 901 Other types of programmability (escrow, auctions) are under development. 902 \end{frame} 903 904 905 \section{Integration considerations} 906 907 \begin{frame} 908 \vfill 909 \begin{center} 910 {\bf Part V: Integration considerations} 911 \end{center} 912 \vfill 913 \end{frame} 914 915 916 \begin{frame}[fragile]{RFC 8905: \texttt{payto:} Uniform Identifiers for Payments and Accounts} 917 \vfill 918 Like \texttt{mailto:}, but for bank accounts instead of email accounts! 919 \vfill 920 \begin{verbatim} 921 payto://<PAYMENT-METHOD>/<ACCOUNT-NR> 922 ?subject=InvoiceNr42 923 &amount=EUR:12.50 924 \end{verbatim} 925 \vfill 926 Default action: Open app to review and confirm payment. 927 \vfill 928 \includegraphics[width=0.25\textwidth]{einzahlschein-ch.jpeg} 929 \hfill 930 \includegraphics[width=0.2\textwidth]{de-ueberweisungsformular.png} 931 \vfill 932 \end{frame} 933 934 935 \begin{frame}[fragile]{Benefits of {\tt payto://}} 936 \begin{itemize} 937 \item Standardized way to represent financial resources (bank account, bitcoin wallet) 938 and payments to them 939 \item Useful on the client-side on the Web and for FinTech backend applications 940 \item Payment methods (such as IBAN, ACH, Bitcoin) are registered with 941 IANA and allow extra options 942 \end{itemize} 943 \begin{center} 944 {\bf Taler wallet can generate payto://-URI for withdraw!} 945 \end{center} 946 \end{frame} 947 948 949 \begin{frame}{Fully Offline Payments {\bf (WiP)}} 950 \framesubtitle{\url{https://docs.taler.net/design-documents/030-offline-payments.html}} 951 Many central banks today demand offline capabilities for digital payment solutions. 952 \vfill 953 \noindent 954 Three possible approaches: 955 \begin{enumerate} 956 \item Trust-based offline payments (has counterparty and/or privacy risks) 957 \item Full HSM Taler wallet (has hardware costs) 958 \item Light-weight HSM balance register 959 \end{enumerate} 960 \vfill 961 \end{frame} 962 963 964 \begin{frame}{Partially Offline Payments with GNU Taler} 965 We have filed for a patent to address situations where only the merchant is offline: 966 \begin{enumerate} 967 \item Customer pays by scanning static QR code and entering amount on mobile phone. 968 \item Merchant confirms payment by checking simple unique numeric confirmation code. 969 \item[$\Rightarrow$] Allows for very simple, cheap and secure merchant on-boarding. 970 Makes integration with existing PoS vendors optional. 971 \end{enumerate} 972 \begin{center} 973 {\bf Needed Point-of-sale hardware costs only $\approx$ \EUR{10}} 974 \end{center} 975 \vfill 976 \end{frame} 977 978 979 \section{Blockchain Integration} 980 981 \begin{frame} 982 \vfill 983 \begin{center} 984 {\bf Part VI: Blockchain Integration} 985 \end{center} 986 \vfill 987 Antoine d’Aligny, Emmanuel Benoist and Christian Grothoff: ``{\em Project Depolymerization: Tokenization of Blockchains}''. {\bf 4th Conference on Blockchain Research \& Applications for Innovative Networks and Services}, 2022 988 \vfill 989 \end{frame} 990 991 992 \begin{frame}{Blockchain based cryptocurrencies} 993 \begin{tikzpicture}[remember picture,overlay] 994 \node (N1)[above right=5mm and 25mm of current page.center] {\includegraphics[width=34mm]{media/news1.png}}; 995 \node (N0)[below=-3mm of N1] {\includegraphics[width=34mm]{media/news0.png}}; 996 \node (N2)[below left=-26mm and -2.5mm of N1] {\includegraphics[width=34mm]{media/news2.png}}; 997 \end{tikzpicture} 998 \begin{block}{Biggest cryptocurrencies} 999 \begin{itemize} 1000 \item \textbf{BTC} Bitcoin 1001 \item \textbf{ETH} Ethereum 1002 \end{itemize} 1003 \end{block} 1004 \begin{block}{Common blockchain limitations} 1005 \begin{itemize} 1006 \item \textbf{Delay} block and confirmation delay 1007 \item \textbf{Cost} transaction fees 1008 \item \textbf{Scalability} limited amount of transaction per second 1009 \item \textbf{Ecological impact} computation redundancy 1010 \item \textbf{Privacy} 1011 \item \textbf{Regulatory risk} 1012 \end{itemize} 1013 \end{block} 1014 \end{frame} 1015 1016 \begin{frame}{Layer 2 solutions: Taler vs. Lightning} 1017 1018 \begin{minipage}{5.5cm} 1019 {\bf Taler:} 1020 \begin{itemize} 1021 \item[\checkmark] can be used with any currency or asset 1022 \item[\checkmark] can make payments instantly between any two parties 1023 \item[\checkmark] has income transparency and can accommodate KYC, AML and CFT 1024 \item[\checkmark] has cryptographic privacy protections 1025 \item[\checkmark] can be used immediately to make instant payments 1026 \item[\checkmark] uses one or more central exchange service providers 1027 \end{itemize} 1028 \end{minipage} 1029 \hfill 1030 \begin{minipage}{5.5cm} 1031 {\bf Lightning:} 1032 \begin{itemize} 1033 \item[$\times$] only works with Bitcoin 1034 \item[$\times$] requires payment route establishment, which can fail 1035 \item[$\times$] cannot enforce regulatory requirements 1036 \item[$\times$] requires money to be locked in payment channels 1037 \item[$\times$] requires expensive Bitcoin node or trusted service to transact 1038 \item[$\times$] claims to be decentralized, but uses few and centralized nodes in practice 1039 \end{itemize} 1040 \end{minipage} 1041 \end{frame} 1042 1043 1044 \begin{frame}{Taler}{Blockchain settlement layer} 1045 \begin{center} 1046 \begin{tikzpicture}[ 1047 rect/.style={rectangle, draw=black, minimum width=30mm}, 1048 sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt}, 1049 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, 1050 ] 1051 1052 %% Architecture 1053 \node(Tt){Taler}; 1054 \node[rect,below=0cm of Tt](Tc){Exchange}; 1055 \node[rect,fit={(Tt) (Tc)}](T){}; 1056 1057 \node[rect,below=7mm of Tc](D) {\textbf{Depolymerization}}; 1058 1059 \node[rect,below=7mm of D](Bc){Node}; 1060 \node[below=0cm of Bc](Bt){Blockchain}; 1061 \node[rect,fit={(Bt) (Bc)}](B){}; 1062 1063 \draw[sym] (T) -- (D); 1064 \draw[sym] (D) -- (B); 1065 1066 %% Blockchain 1067 \node[block,right=8mm of B] (1){}; 1068 \node[block,right=4mm of 1] (2){}; 1069 \node[block,right=4mm of 2] (3){}; 1070 \node[block,right=4mm of 3] (4){}; 1071 \node[block,right=4mm of 4] (5){}; 1072 \node[block,right=4mm of 5] (6){}; 1073 \draw[-stealth] (1) -- (2); 1074 \draw[-stealth] (2) -- (3); 1075 \draw[-stealth] (3) -- (4); 1076 \draw[-stealth] (4) -- (5); 1077 \draw[-stealth] (5) -- (6); 1078 1079 \node[left=4mm of 1] (S){}; 1080 \node[right=4mm of 6] (E){}; 1081 \draw[-stealth] (S) -- (1); 1082 \draw[-stealth] (6) -- (E); 1083 1084 %% Taler 1085 \node[block, below right=-7.5mm and 20.5mm of T] (off){Off-chain transactions}; 1086 \node[above=-0.5mm of off] {\includegraphics[height=7mm]{taler-logo-2021-inkscape.pdf}}; 1087 1088 %% Depolymerization 1089 \node[right=11mm of D] {\small{Credit}}; 1090 \node[right=50mm of D] {\small{Debit}}; 1091 \draw[dashed,-stealth] (1.north) |- (off.west); 1092 \draw[dashed,-stealth] (off.east) -| (6.north); 1093 \end{tikzpicture} 1094 \end{center} 1095 \end{frame} 1096 1097 1098 \begin{frame}{Depolymerization}{Architecture} 1099 \begin{center} 1100 \begin{tikzpicture}[ 1101 rect/.style={rectangle, draw=black, minimum height=6mm, minimum width=28mm}, 1102 sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt} 1103 ] 1104 \node[rect](1) {Taler Exchange}; 1105 \node[rect,below=of 1](2) {Wire Gateway}; 1106 \node[rect,right=of 2](3) {PostgreSQL}; 1107 \node[rect,right=of 3](4) {DLT Adapter}; 1108 \node[rect,above=of 4](5) {DLT Full Node}; 1109 1110 \draw[sym] (1) -- node [midway,right] {\tiny HTTP} (2); 1111 \draw[sym] (2) -- node [midway,above] {\tiny SQL} (3); 1112 \draw[sym] (3) -- node [midway,above] {\tiny SQL} (4); 1113 \draw[sym] (4) -- node [midway,left ] {\tiny RPC} (5); 1114 1115 1116 \node[above= 2mm of 1]{\small{\emph{Wire Gateway API}}}; 1117 \node[above= 2mm of 5]{\small{\emph{DLT specific}}}; 1118 \node[above=22mm of 3](T) {}; 1119 \draw[dotted] (3) -- (T); 1120 \end{tikzpicture} 1121 \end{center} 1122 \begin{itemize} 1123 \item Common database to store transactions state and communicate 1124 with notifications 1125 \item Wire Gateway for Taler API compatibility 1126 \item DLT specific adapter 1127 \end{itemize} 1128 \end{frame} 1129 1130 \begin{frame}{Storing metadata}{Bitcoin} 1131 \begin{block}{Bitcoin - Credit} 1132 \begin{itemize} 1133 \item Transactions from code 1134 \item Only 32B + URI 1135 \item \textbf{OP\_RETURN} 1136 \end{itemize} 1137 \end{block} 1138 \begin{block}{Bitcoin - Debit} 1139 \begin{itemize} 1140 \item Transactions from common wallet software 1141 \item Only 32B 1142 \item \textbf{Fake Segwit Addresses} 1143 \end{itemize} 1144 \end{block} 1145 \end{frame} 1146 \begin{frame}{Storing metadata}{Ethereum} 1147 \begin{block}{Smart contracts} 1148 \begin{itemize} 1149 \item Logs in smart contract is the recommend way {\tiny (ethereum.org)} 1150 \item Expensive (additional storage and execution fees) 1151 \item Avoidable attack surface (error prone) 1152 \end{itemize} 1153 \end{block} 1154 \begin{block}{Custom input format} 1155 Use input data in transactions, usually used to call smart contract, to 1156 store our metadata. 1157 \end{block} 1158 \end{frame} 1159 1160 \begin{frame}{Handling blockchain reorganization} 1161 \begin{center} 1162 \begin{tikzpicture}[ 1163 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, 1164 conf/.style={draw=black!60!green,fill=black!60!green!10}, 1165 nconf/.style={dotted}, 1166 err/.style={draw=black!60!red,fill=black!60!red!10}, 1167 ar/.style={-stealth} 1168 ] 1169 % Common 1170 \node[block,conf](1){}; 1171 \node[block,conf,right=5mm of 1](2){$D_0$}; 1172 \node[block,conf,right=5mm of 2](3){}; 1173 \draw[ar] (1) -- (2); 1174 \draw[ar] (2) -- (3); 1175 1176 % Current 1177 \only<1>{ 1178 \node [block,nconf,right=5mm of 3](4){}; 1179 } 1180 \only<2->{ 1181 \node [block,conf,right=5mm of 3](4){\only<3>{$D_3$}}; 1182 } 1183 \node[block,nconf,right=5mm of 4](5){}; 1184 \node[block,nconf,right=5mm of 5](6){$D_1$}; 1185 \draw[ar] (3) -- (4); 1186 \draw[ar] (4) -- (5); 1187 \draw[ar] (5) -- (6); 1188 1189 % Fork 1190 \only<-2>{ 1191 \node [block,nconf,above=7mm of 4](4p){}; 1192 } 1193 \only<3>{ 1194 \node [block,dashed,err,above=7mm of 4](4p){$D_3'$}; 1195 } 1196 \node[block,nconf,right=5mm of 4p](5p){$D_2$}; 1197 \node[block,nconf,right=5mm of 5p](6p){}; 1198 \node[block,nconf,right=5mm of 6p](7p){}; 1199 \draw[ar] (3.east) -- (4p.west); 1200 \draw[ar] (4p) -- (5p); 1201 \draw[ar] (5p) -- (6p); 1202 \draw[ar] (6p) -- (7p); 1203 1204 % Indication 1205 \node [right=5mm of 7p]{\emph{fork}}; 1206 \node [right=17mm of 6]{\emph{active}}; 1207 \end{tikzpicture} 1208 \end{center} 1209 \only<1>{As small reorganizations are common, Satoshi already recommended to 1210 apply a confirmation delay to handle most disturbances and attacks.} 1211 \only<2>{If a reorganization longer than the confirmation delay happens, 1212 but it did not remove credits, Depolymerizer is safe and automatically 1213 resumes.} 1214 \only<3>{If a fork removed a confirmed debit, an attacker may create a 1215 conflicting transaction. Depolymerizer suspends operation until lost 1216 credits reappear.} 1217 \end{frame} 1218 1219 \begin{frame}{Adaptive confirmation} 1220 \begin{center} 1221 \begin{tikzpicture}[ 1222 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, 1223 conf/.style={draw=black!60!green,fill=black!60!green!10}, 1224 nconf/.style={dotted}, 1225 conft/.style={text=black!60!green}, 1226 confl/.style={draw=black!60!green}, 1227 ar/.style={-stealth} 1228 ] 1229 % Common 1230 \node(0){}; 1231 \node[block,conf,right=5mm of 0](1){}; 1232 \node[block,conf,right=5mm of 1](2){}; 1233 \draw[ar] (0) -- (1); 1234 \draw[ar] (1) -- (2); 1235 1236 % Current 1237 \node[block,conf,right=5mm of 2](3){}; 1238 \node[block,nconf,right=5mm of 3](4){}; 1239 \node[block,nconf,right=5mm of 4](5){}; 1240 \node[block,nconf,right=5mm of 5](6){}; 1241 \draw[ar] (2) -- (3); 1242 \draw[ar] (3) -- (4); 1243 \draw[ar] (4) -- (5); 1244 \draw[ar] (5) -- (6); 1245 1246 % Fork 1247 \node[block,nconf,above=7mm of 3](3p){}; 1248 \node[block,nconf,right=5mm of 3p](4p){}; 1249 \node[block,nconf,right=5mm of 4p](5p){}; 1250 \node[block,nconf,right=5mm of 5p](6p){}; 1251 \node[block,nconf,right=5mm of 6p](7p){}; 1252 \draw[ar] (2.east) -- (3p.west); 1253 \draw[ar] (3p) -- (4p); 1254 \draw[ar] (4p) -- (5p); 1255 \draw[ar] (5p) -- (6p); 1256 \draw[ar] (6p) -- (7p); 1257 1258 % Indication 1259 \node[right=5mm of 7p]{\emph{fork}}; 1260 \node[right=17mm of 6]{\emph{active}}; 1261 1262 % Confirmation 1263 \path (0) -- (1) node[conft,midway, below=6mm] (M) {Max}; 1264 \path (2) -- (3) node[conft,midway, below=6mm] (N) {New}; 1265 \path (3) -- (4) node[conft,midway, below=6mm] (I) {Initial}; 1266 \node[above=25mm of M] (Mp) {}; 1267 \node[above=25mm of N] (Np) {}; 1268 \node[above=25mm of I] (Ip) {}; 1269 \draw[confl,thick,dotted](M) -- (Mp); 1270 \draw[confl](N) -- (Np); 1271 \draw[confl,thick,dotted](I) -- (Ip); 1272 \end{tikzpicture} 1273 \end{center} 1274 If we experience a reorganization once, its likely for another 1275 reorganization of a similar scope to happen again. 1276 Depolymerizer learns from reorganizations by increasing its confirmation delay. 1277 \end{frame} 1278 1279 1280 \begin{frame}{Project Depolymerization Summary} 1281 Taler can be used as a layer 2 for existing 1282 crypto-currencies and stablecoins with Depolymerizer: 1283 1284 \begin{itemize} 1285 \item [$-$] Trust exchange operator or auditors 1286 \item [$+$] Fast and cheap 1287 \item [$+$] Realtime: transactions with milliseconds of latency 1288 \item [$+$] Linear scalability 1289 \item [$+$] Ecological 1290 \item [$+$] Privacy when it can, transparency when it must (avoid tax evasion and money laundering) 1291 \end{itemize} 1292 \end{frame} 1293 1294 1295 \section{Conclusion} 1296 1297 \begin{frame} 1298 \vfill 1299 \begin{center} 1300 {\bf Part VII: Conclusion} 1301 \end{center} 1302 \vfill 1303 \end{frame} 1304 1305 1306 \begin{frame}{Feature comparison} 1307 \begin{center} \small 1308 \begin{tabular}{l||c|c|c|c|c} 1309 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 1310 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 1311 Offline & +++ & $-$$-$ & $-$$-$ & + & ++ \\ \hline 1312 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 1313 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 1314 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 1315 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 1316 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 1317 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 1318 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 1319 Libre & $-$ & +++ & +++ & $-$ $-$ $-$ & +++ \\ 1320 \end{tabular} 1321 \end{center} 1322 \end{frame} 1323 1324 1325 \begin{frame}{Summary of Taler Solution} 1326 1327 \begin{enumerate} 1328 \item {\bf Frictionless one click}, cash-like digital payments \& instant 1329 confirmation for all fiat- and crypto-currencies and for all users, 1330 unbanked, young and old. 1331 \item With {\bf income-transparency on the recipient side} is 1332 crime-preventing \& Taler coins are as secure as cash without 1333 counterfeits. No ID theft. 1334 \item {\bf Guaranteed privacy} for spender \& data minimization: payment 1335 requires/shares no personal information. 1336 \item {\bf No bank account needed} 1337 \item Highly efficient in power, processing \& storage, extremely low 1338 cost \& {\bf highly scalable} to 100’000 transactions/sec. 1339 \item Economically viable (sub-cent) instant {\bf micro-transactions} for 1340 e-commerce, Internet of Things, metaverse, machine2machine, $\ldots$ 1341 \end{enumerate} 1342 \end{frame} 1343 1344 1345 \begin{frame}{Collaboration with BoJ} 1346 \framesubtitle{Discussion Proposal} 1347 Taler Systems SA can provide: 1348 \begin{itemize} 1349 \item Integration with Japanese banking APIs 1350 \item Sandbox setup for evaluation by BoJ 1351 \item Support in maintenance \& roll-outs 1352 \end{itemize} 1353 Additionally: 1354 \begin{itemize} 1355 \item I will have a sabbatical in Fall/Winter 2023 1356 \item Objective is to visit financial institutions to present 1357 contemporary capabilities and gather requirements for 1358 further research 1359 \item I would be happy to spend part of it in Japan 1360 \end{itemize} 1361 \end{frame} 1362 1363 1364 1365 \begin{frame}{Do you have any questions?} 1366 \framesubtitle{\url{https://taler.net/en/bibliography.html}} 1367 \vfill 1368 References: 1369 {\tiny 1370 \begin{enumerate} 1371 \item{David Chaum, Christian Grothoff and Thomas Moser. 1372 {\em How to issue a central bank digital currency}. 1373 {\bf SNB Working Papers, 2021}.} 1374 \item{Martin Summer and Hannes Hermanky. 1375 {\em A digital euro and the future of cash}. 1376 {\bf Monetary Policy \& The Economy Q1-Q2/22}.} 1377 \item{Antoine d’Aligny, Emmanuel Benoist, Florian Dold, Christian Grothoff, Özgür Kesim and Martin Schanzenbach. 1378 {\em Who comes after us? The correct mindset for designing a Central Bank Digital Currency}. 1379 {\bf SUERF Policy Notes 279/2022}.} 1380 \item{Florian Dold. 1381 {\em GNU Taler}. 1382 {\bf University of Rennes 1, PhD Thesis, 2019}.} 1383 \item{Christian Grothoff and Alex Pentland. 1384 {\em Digital cash and privacy: What are the alternatives to Libra?}. 1385 {\bf MIT Media Lab, 2019}.} 1386 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 1387 {\em Enabling Secure Web Payments with GNU Taler}. 1388 {\bf SPACE 2016}.} 1389 \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach. 1390 {\em Zero-Knowledge Age Restriction for GNU Taler}. 1391 {\bf ESORICS, 2022}.} 1392 \item{Gian Demarmels and Lucien Heuzeveldt. 1393 {\em Adding Schnorr's Blind Signature in Taler}. 1394 {\bf BFH, Bachelor's Thesis, 2022}.} 1395 \item{Marco Boss. 1396 {\em GNU Taler Scalability}. 1397 {\bf BFH, Bachelor's Thesis, 2022}.} 1398 \end{enumerate} 1399 } 1400 \end{frame} 1401 1402 \end{document} 1403 1404 1405 1406 1407 \begin{frame}{Taler {\tt /withdraw/sign}} 1408 % Customer withdrawing coins with blind signatures 1409 % \bigskip 1410 \begin{figure}[th] 1411 \begin{minipage}[b]{0.45\linewidth} 1412 \begin{center} 1413 \begin{tikzpicture}[scale = 0.4, 1414 transform shape, 1415 msglabel/.style = { text = Black, yshift = .3cm, 1416 sloped, midway }, 1417 okmsg/.style = { ->, color = MidnightBlue, thick, 1418 >=stealth }, 1419 rstmsg/.style = { ->, color = BrickRed, thick, 1420 >=stealth } 1421 ] 1422 \node[draw = MidnightBlue, 1423 fill = CornflowerBlue, 1424 minimum width = .3cm, 1425 minimum height = 10cm 1426 ] (h1) at (-4, 0) {}; 1427 \node[draw = MidnightBlue, 1428 fill = CornflowerBlue, 1429 minimum width = .3cm, 1430 minimum height = 10cm 1431 ] (h2) at (4, 0) {}; 1432 \node[above = 0cm of h1] {Wallet}; 1433 \node[above = 0cm of h2] {Exchange}; 1434 1435 \path[->, color = MidnightBlue, very thick, >=stealth] 1436 (-5, 4.5) edge 1437 node[rotate=90, text = Black, yshift = .3cm] {Time} 1438 (-5, -4.5); 1439 \path[okmsg, dashed] 1440 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 1441 node[msglabel] {SEPA(RK,A)} 1442 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 1443 \path[okmsg] 1444 ($(h1.east)+(0, -1.0)$) edge 1445 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 1446 ($(h2.west)+(0, -1.5)$); 1447 \path[okmsg] 1448 ($(h2.west)+(0, -2.0)$) edge 1449 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 1450 ($(h1.east)+(0, -2.5)$); 1451 \path[rstmsg] 1452 ($(h2.west)+(0, -3.5)$) edge 1453 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 1454 ($(h1.east)+(0, -4)$); 1455 \node at (5.3, 0) {}; 1456 \end{tikzpicture} 1457 \end{center} 1458 Result: $\langle c, S_{DK}(C) \rangle$. 1459 \end{minipage} 1460 \hspace{0.5cm} 1461 \begin{minipage}[b]{0.45\linewidth} 1462 \tiny 1463 \begin{description} 1464 \item[$A$] Some amount, $A \ge A_{DK}$ 1465 \item[$RK$] Reserve key 1466 \item[$DK$] Denomination key 1467 \item[$b$] Blinding factor 1468 \item[$B_b()$] RSA-FDH blinding % DK supressed 1469 \item[$C$] Coin public key $C := cG$ 1470 \item[$S_{RK}()$] EdDSA signature 1471 \item[$S_{DK}()$] RSA-FDH signature 1472 \end{description} 1473 \end{minipage} 1474 \end{figure} 1475 \end{frame} 1476 1477 1478 \begin{frame}[t]{Taler {\tt /deposit}} 1479 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 1480 \bigskip 1481 \begin{figure}[th] 1482 \begin{minipage}[b]{0.45\linewidth} 1483 \begin{center} 1484 \begin{tikzpicture}[scale = 0.4, 1485 transform shape, 1486 msglabel/.style = { text = Black, yshift = .3cm, 1487 sloped, midway }, 1488 okmsg/.style = { ->, color = MidnightBlue, thick, 1489 >=stealth }, 1490 rstmsg/.style = { ->, color = BrickRed, thick, 1491 >=stealth } 1492 ] 1493 \node[draw = MidnightBlue, 1494 fill = CornflowerBlue, 1495 minimum width = .3cm, 1496 minimum height = 10cm 1497 ] (h1) at (-4, 0) {}; 1498 \node[draw = MidnightBlue, 1499 fill = CornflowerBlue, 1500 minimum width = .3cm, 1501 minimum height = 10cm 1502 ] (h2) at (4, 0) {}; 1503 \node[above = 0cm of h1] {Merchant}; 1504 \node[above = 0cm of h2] {Exchange}; 1505 1506 \path[->, color = MidnightBlue, very thick, >=stealth] 1507 (-5, 4.5) edge 1508 node[rotate=90, text = Black, yshift = .3cm] {Time} 1509 (-5, -4.5); 1510 \path[->, color = MidnightBlue, thick, >=stealth] 1511 ($(h1.east)+(0,3)$) edge 1512 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 1513 ($(h2.west)+(0,2)$); 1514 \path[->, color = MidnightBlue, thick, >=stealth] 1515 ($(h2.west)+(0,0.5)$) edge 1516 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 1517 ($(h1.east)+(0,-0.5)$); 1518 \path[rstmsg] 1519 ($(h2.west)+(0, -2.5)$) edge 1520 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 1521 ($(h1.east)+(0, -3.5)$); 1522 \node at (5.3, 0) {}; 1523 \end{tikzpicture} 1524 \end{center} 1525 \end{minipage} 1526 \hspace{0.5cm} 1527 \begin{minipage}[b]{0.45\linewidth} 1528 \tiny 1529 \begin{description} 1530 \item[$DK$] Denomination key 1531 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 1532 \item[$c$] Private coin key, $C := cG$. 1533 \item[$S_{C}()$] EdDSA signature using $c$ 1534 \item[$D$] Deposit details 1535 \item[$SK$] Exchange's signing key 1536 \item[$S_{SK}()$] EdDSA signature using $SK$ 1537 \item[$D'$] Conficting deposit details $D' \not= D$ 1538 \end{description} 1539 \end{minipage} 1540 \end{figure} 1541 \end{frame} 1542 1543 1544 \begin{frame}{Taler {\tt /refresh/melt}} 1545 \begin{figure}[th] 1546 \begin{minipage}[b]{0.45\linewidth} 1547 \begin{center} 1548 \begin{tikzpicture}[scale = 0.4, 1549 transform shape, 1550 msglabel/.style = { text = Black, yshift = .3cm, 1551 sloped, midway }, 1552 okmsg/.style = { ->, color = MidnightBlue, thick, 1553 >=stealth }, 1554 rstmsg/.style = { ->, color = BrickRed, thick, 1555 >=stealth } 1556 ] 1557 \node[draw = MidnightBlue, 1558 fill = CornflowerBlue, 1559 minimum width = .3cm, 1560 minimum height = 10cm 1561 ] (h1) at (-4, 0) {}; 1562 \node[draw = MidnightBlue, 1563 fill = CornflowerBlue, 1564 minimum width = .3cm, 1565 minimum height = 10cm 1566 ] (h2) at (4, 0) {}; 1567 \node[above = 0cm of h1] {Customer}; 1568 \node[above = 0cm of h2] {Exchange}; 1569 1570 \path[->, color = MidnightBlue, very thick, >=stealth] 1571 (-5, 4.5) edge 1572 node[rotate=90, text = Black, yshift = .3cm] {Time} 1573 (-5, -4.5); 1574 \path[->, color = MidnightBlue, thick, >=stealth] 1575 ($(h1.east)+(0,3)$) edge 1576 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 1577 ($(h2.west)+(0,2)$); 1578 \path[->, color = MidnightBlue, thick, >=stealth] 1579 ($(h2.west)+(0,0.5)$) edge 1580 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 1581 ($(h1.east)+(0,-0.5)$); 1582 \path[rstmsg] 1583 ($(h2.west)+(0, -2.5)$) edge 1584 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 1585 ($(h1.east)+(0, -3.5)$); 1586 \node at (5.3, 0) {}; 1587 \end{tikzpicture} 1588 \end{center} 1589 \end{minipage} 1590 \hspace{0.5cm} 1591 \begin{minipage}[b]{0.45\linewidth} 1592 \tiny 1593 \begin{description} 1594 \item[$\kappa$] System-wide security parameter, usually 3. 1595 \\ \smallskip 1596 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 1597 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 1598 \item[$t_j$] Random scalar for $j<\kappa$ 1599 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 1600 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 1601 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 1602 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 1603 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 1604 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 1605 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 1606 \\ \smallskip 1607 \item[$\gamma$] Random value in $[0,\kappa)$ 1608 % \\ \smallskip 1609 % \item[$X$] Deposit or refresh 1610 \end{description} 1611 \end{minipage} 1612 \end{figure} 1613 \end{frame} 1614 1615 1616 \begin{frame}{Taler {\tt /refresh/reveal}} 1617 \begin{figure}[th] 1618 \begin{minipage}[b]{0.45\linewidth} 1619 \begin{center} 1620 \begin{tikzpicture}[scale = 0.4, 1621 transform shape, 1622 msglabel/.style = { text = Black, yshift = .3cm, 1623 sloped, midway }, 1624 okmsg/.style = { ->, color = MidnightBlue, thick, 1625 >=stealth }, 1626 rstmsg/.style = { ->, color = BrickRed, thick, 1627 >=stealth } 1628 ] 1629 \node[draw = MidnightBlue, 1630 fill = CornflowerBlue, 1631 minimum width = .3cm, 1632 minimum height = 10cm 1633 ] (h1) at (-4, 0) {}; 1634 \node[draw = MidnightBlue, 1635 fill = CornflowerBlue, 1636 minimum width = .3cm, 1637 minimum height = 10cm 1638 ] (h2) at (4, 0) {}; 1639 \node[above = 0cm of h1] {Customer}; 1640 \node[above = 0cm of h2] {Exchange}; 1641 1642 \path[->, color = MidnightBlue, very thick, >=stealth] 1643 (-5, 4.5) edge 1644 node[rotate=90, text = Black, yshift = .3cm] {Time} 1645 (-5, -4.5); 1646 \path[->, color = MidnightBlue, thick, >=stealth] 1647 ($(h1.east)+(0,3)$) edge 1648 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 1649 ($(h2.west)+(0,2)$); 1650 \path[->, color = MidnightBlue, thick, >=stealth] 1651 ($(h2.west)+(0,0.5)$) edge 1652 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 1653 ($(h1.east)+(0,-0.5)$); 1654 \path[rstmsg] 1655 ($(h2.west)+(0, -2.5)$) edge 1656 node[msglabel] {400 BAD REQUEST: $Z$} 1657 ($(h1.east)+(0, -3.5)$); 1658 \node at (5.3, 0) {}; 1659 \end{tikzpicture} 1660 \end{center} 1661 \end{minipage} 1662 \hspace{0.5cm} 1663 \begin{minipage}[b]{0.45\linewidth} 1664 \tiny 1665 \begin{description} 1666 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 1667 \item[$t_j$] .. \\ \smallskip 1668 1669 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 1670 1671 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 1672 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 1673 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 1674 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 1675 1676 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 1677 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 1678 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 1679 1680 \item[$Z$] Cut-and-choose missmatch information 1681 \end{description} 1682 \end{minipage} 1683 \end{figure} 1684 \end{frame} 1685 1686 1687 \begin{frame}{Taler {\tt /refresh/link}} 1688 \begin{figure}[th] 1689 \begin{minipage}[b]{0.45\linewidth} 1690 \begin{center} 1691 \begin{tikzpicture}[scale = 0.4, 1692 transform shape, 1693 msglabel/.style = { text = Black, yshift = .3cm, 1694 sloped, midway }, 1695 okmsg/.style = { ->, color = MidnightBlue, thick, 1696 >=stealth }, 1697 rstmsg/.style = { ->, color = BrickRed, thick, 1698 >=stealth } 1699 ] 1700 \node[draw = MidnightBlue, 1701 fill = CornflowerBlue, 1702 minimum width = .3cm, 1703 minimum height = 10cm 1704 ] (h1) at (-4, 0) {}; 1705 \node[draw = MidnightBlue, 1706 fill = CornflowerBlue, 1707 minimum width = .3cm, 1708 minimum height = 10cm 1709 ] (h2) at (4, 0) {}; 1710 \node[above = 0cm of h1] {Customer}; 1711 \node[above = 0cm of h2] {Exchagne}; 1712 1713 \path[->, color = MidnightBlue, very thick, >=stealth] 1714 (-5, 4.5) edge 1715 node[rotate=90, text = Black, yshift = .3cm] {Time} 1716 (-5, -4.5); 1717 \path[->, color = MidnightBlue, thick, >=stealth] 1718 ($(h1.east)+(0,3)$) edge 1719 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 1720 ($(h2.west)+(0,2)$); 1721 \path[->, color = MidnightBlue, thick, >=stealth] 1722 ($(h2.west)+(0,0.5)$) edge 1723 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 1724 ($(h1.east)+(0,-0.5)$); 1725 \path[rstmsg] 1726 ($(h2.west)+(0, -2.5)$) edge 1727 node[msglabel] {404 NOT FOUND} 1728 ($(h1.east)+(0, -3.5)$); 1729 \node at (5.3, 0) {}; 1730 \end{tikzpicture} 1731 \end{center} 1732 \end{minipage} 1733 \hspace{0.5cm} 1734 \begin{minipage}[b]{0.45\linewidth} 1735 \tiny 1736 \begin{description} 1737 \item[$C$] Old coind public key \\ \smallskip 1738 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 1739 \end{description} 1740 \end{minipage} 1741 \end{figure} 1742 \end{frame} 1743 1744 1745 \begin{frame}{Operational security} 1746 \begin{center} 1747 \resizebox{\textwidth}{!}{ 1748 \begin{tikzpicture}[ 1749 font=\sffamily, 1750 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 1751 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 1752 process/.style={draw,thick,circle,fill=blue!20}, 1753 sink/.style={source,fill=green!20}, 1754 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 1755 dots/.style={gray,scale=2}, 1756 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 1757 every node/.style={align=center}] 1758 1759 % Position the nodes using a matrix layout 1760 \matrix{ 1761 \node[source] (wallet) {Wallet}; 1762 \& \node[process] (browser) {Browser}; 1763 \& \node[process] (shop) {Web shop}; 1764 \& \node[sink] (backend) {Taler backend}; \\ 1765 }; 1766 1767 % Draw the arrows between the nodes and label them. 1768 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 1769 node[midway,below] {(signal)} (wallet); 1770 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 1771 node[midway,below] {(5) signed coins} (browser); 1772 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 1773 node[midway,below] {(HTTPS)} (shop); 1774 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 1775 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 1776 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 1777 node[midway,below] {(HTTPS)} (shop); 1778 \end{tikzpicture} 1779 } 1780 \end{center} 1781 \end{frame} 1782 1783 1784 \begin{frame}{Use Cases: Refugee Camps} 1785 Today: 1786 \begin{itemize} 1787 \item Non-bankable 1788 \item Direct distribution of goods to population 1789 \item Limited economic activity in camps 1790 \item High level of economic dependence 1791 \end{itemize}\vfill\pause 1792 With GNU Taler: 1793 \begin{itemize} 1794 \item Local currency issued as basic income backed by aid 1795 \item Taxation possible based on economic status 1796 \item Local governance enabled by local taxes 1797 \item Increased economic independence and political participation 1798 \end{itemize} 1799 \end{frame} 1800 1801 1802 \begin{frame}{Use Case: Anti-Spam} 1803 \framesubtitle{Background: \url{https://pep.security/}} 1804 Today, p$\equiv$p provides authenticated encryption for e-mail: 1805 \begin{itemize} 1806 \item Free software 1807 \item Easy to use opportunistic encryption 1808 \item Available for Outlook, Android, Enigmail 1809 \item Spies \& spam filters can no longer inspect content 1810 \end{itemize}\vfill\pause 1811 With GNU Taler: 1812 \begin{itemize} 1813 \item Peer-to-peer payments via e-mail 1814 \item If unsolicited sender, hide messages from user \& 1815 automatically request payment from sender 1816 \item Sender can attach payment to be moved to inbox 1817 \item Receiver may grant refund to sender 1818 \end{itemize} 1819 \end{frame}