2024-datenspuren.tex (23432B)
1 \pdfminorversion=3 2 \documentclass[fleqn,xcolor={usenames,dvipsnames},aspectratio=169]{beamer} 3 \usepackage{amsmath} 4 \usepackage{multimedia} 5 \usepackage[utf8]{inputenc} 6 \usepackage{framed,color,ragged2e} 7 \usepackage[absolute,overlay]{textpos} 8 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 9 \usetheme{boxes} 10 \setbeamertemplate{navigation symbols}{} 11 \usepackage{xcolor} 12 \usepackage[normalem]{ulem} 13 \usepackage{listings} 14 \usepackage{adjustbox} 15 \usepackage{array} 16 \usepackage{bbding} 17 \usepackage{relsize} 18 \usepackage{graphicx} 19 \usepackage{tikz,eurosym,calc} 20 \usetikzlibrary{tikzmark} 21 \usetikzlibrary{shapes,arrows,arrows.meta} 22 \usetikzlibrary{positioning,fit,patterns} 23 \usetikzlibrary{calc} 24 \usepackage{multicol} 25 \usepackage{pgf-umlsd} 26 \usepackage{relsize} 27 28 29 % CSS 30 \lstdefinelanguage{CSS}{ 31 basicstyle=\ttfamily\scriptsize, 32 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}, 33 sensitive=true, 34 morecomment=[l]{//}, 35 morecomment=[s]{/*}{*/}, 36 morestring=[b]', 37 morestring=[b]", 38 alsoletter={:}, 39 alsodigit={-} 40 } 41 42 % JavaScript 43 \lstdefinelanguage{JavaScript}{ 44 basicstyle=\ttfamily\scriptsize, 45 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 46 morecomment=[s]{/*}{*/}, 47 morecomment=[l]//, 48 morestring=[b]", 49 morestring=[b]' 50 } 51 52 \lstdefinelanguage{HTML5}{ 53 basicstyle=\ttfamily\scriptsize, 54 language=html, 55 sensitive=true, 56 alsoletter={<>=-}, 57 morecomment=[s]{<!-}{-->}, 58 tag=[s], 59 otherkeywords={ 60 % General 61 >, 62 % Standard tags 63 <!DOCTYPE, 64 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 65 % body 66 </body, <body, 67 % Divs 68 </div, <div, </div>, 69 % Paragraphs 70 </p, <p, </p>, 71 % scripts 72 </script, <script, 73 % More tags... 74 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 75 }, 76 ndkeywords={ 77 % General 78 =, 79 % HTML attributes 80 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 81 % SVG attributes 82 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 83 % CSS properties 84 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 85 % CSS3 properties 86 transform:, -moz-transform:, -webkit-transform:, 87 animation:, -webkit-animation:, 88 transition:, transition-duration:, transition-property:, transition-timing-function:, 89 } 90 } 91 92 \lstdefinelanguage{JavaScript}{ 93 basicstyle=\ttfamily\scriptsize, 94 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 95 keywordstyle=\color{blue}\bfseries, 96 ndkeywords={class, export, boolean, throw, implements, import, this}, 97 ndkeywordstyle=\color{darkgray}\bfseries, 98 identifierstyle=\color{black}, 99 sensitive=false, 100 comment=[l]{//}, 101 morecomment=[s]{/*}{*/}, 102 commentstyle=\color{purple}\ttfamily, 103 stringstyle=\color{red}\ttfamily, 104 morestring=[b]', 105 morestring=[b]" 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 115 \newcommand{\drawfrom}{\xleftarrow{\$}} 116 \newcommand\Exists{% 117 \mathop{\lower0.75ex\hbox{\ensuremath{% 118 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}% 119 \limits} 120 121 \newcommand\Forall{% 122 \mathop{\lower0.75ex\hbox{\ensuremath{% 123 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% 124 \limits} 125 126 127 \title{GNU Taler} 128 %\subtitle{} 129 130 \setbeamertemplate{navigation symbols}{ \includegraphics[width=1cm]{tud-logo.pdf} \includegraphics[width=0.4cm]{logo-esen.pdf} \includegraphics[width=1cm]{logo-GlsBank.png} \includegraphics[width=0.6cm]{logo-MagNetBank.pdf} \includegraphics[width=0.4cm]{logo-ps.pdf} \includegraphics[width=0.4cm]{logo-nlnet.pdf} \includegraphics[width=0.4cm]{logo-HomoDigitalis.pdf} \includegraphics[width=0.4cm]{logo-codeblau.pdf} \includegraphics[width=1.4cm]{logo-tue.pdf} \includegraphics[width=0.6cm]{logo-visualvest.pdf} \includegraphics[width=1cm]{inria.pdf} \includegraphics[width=0.4cm]{logo-bfh.pdf} \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} 131 %\setbeamercovered{transparent=1} 132 133 \author{L. Wittmann, C. Grothoff} 134 \date{\today} 135 \institute{The GNU Project} 136 137 138 \begin{document} 139 140 \justifying 141 142 \begin{frame} 143 \begin{center} 144 \LARGE {\bf GNU} 145 146 \vfill 147 % \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} 148 \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf} 149 \end{center} 150 151 \begin{center} 152 \includegraphics[width=0.15\textwidth]{logo-EU.pdf} 153 \includegraphics[width=0.15\textwidth]{logo-SBFI.pdf} 154 \end{center} 155 156 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords) 157 {\Large {\bf \href{https://taler.net/}{taler.net}} \\ 158 \href{https://twitter.com/taler}{taler@twitter}} 159 \end{textblock*} 160 161 % Substitute based on who is giving the talk! 162 \begin{textblock*}{6cm}(8.5cm,7.7cm) % {block width} (coords) 163 {\hfill {\bf Christian Grothoff} \\ 164 \hfill {\bf \& Leo Wittmann } } 165 \end{textblock*} 166 167 \end{frame} 168 169 \setbeamertemplate{navigation symbols}{\hfill \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf}} 170 171 172 173 \begin{frame} 174 \frametitle{Taler Overview} 175 \begin{center} 176 \begin{tikzpicture} 177 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 178 \node (origin) at (0,0) {}; 179 \node (exchange) [def,above=of origin,draw]{Exchange}; 180 \node (customer) [def, draw, below left=of origin] {Customer}; 181 \node (merchant) [def, draw, below right=of origin] {Merchant}; 182 \node (auditor) [def, draw, above right=of origin]{Auditor}; 183 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 184 185 \tikzstyle{C} = [color=black, line width=1pt] 186 187 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 188 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 189 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 190 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 191 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 192 193 \end{tikzpicture} 194 \end{center} 195 \end{frame} 196 197 \begin{frame} 198 \frametitle{Architecture of Taler} 199 \begin{center} 200 \includegraphics[width=1\textwidth]{operations.png} 201 \end{center} 202 \end{frame} 203 204 205 \begin{frame}{Taler Exchange} 206 The {\bf Exchange} is the core logic of the payment system. 207 208 \begin{itemize} 209 \item One exchange at minimum must be operated per currency 210 \item Offers a REST API for merchants and customers 211 \item Uses several helper processes for configuration and to 212 interact with RTGS and cryptography 213 \item KYC support via OAuth 2.0, KycAID or Persona APIs 214 \item SPAs for AML and KYC processes 215 \end{itemize} 216 \end{frame} 217 218 219 \begin{frame}{Taler: Exchange Architecture} 220 \begin{center} 221 \begin{tikzpicture} 222 \tikzstyle{def} = [node distance=2em and 2.5em, inner sep=1em, outer sep=.3em]; 223 \node (origin) at (0,0) {}; 224 \node (httpd) [def,above=of origin,draw]{httpd}; 225 \node (secmod-rsa) [def, draw, right=of httpd] {secmod-rsa}; 226 \node (secmod-eddsa) [def, draw, left=of httpd] {secmod-eddsa}; 227 \node (postgres) [def, draw, below=of httpd]{Postgres}; 228 \node (aggregator) [def, draw, right=of postgres]{aggregator}; 229 \node (transfer) [def, draw, below left=of postgres]{transfer}; 230 \node (wirewatch) [def, draw, below right=of postgres]{wirewatch}; 231 \node (nexus) [def, draw, below=of postgres]{Nexus}; 232 233 \tikzstyle{C} = [color=black, line width=1pt] 234 235 \draw [<->, C] (httpd) -- (postgres) node [midway, above, sloped] (TextNode) {}; 236 \draw [<->, C] (httpd) -- (secmod-rsa) node [midway, above, sloped] (TextNode) {}; 237 \draw [<->, C] (httpd) -- (secmod-eddsa) node [midway, above, sloped] (TextNode) {}; 238 \draw [<->, C] (aggregator) -- (postgres) node [midway, above, sloped] (TextNode) {}; 239 \draw [<->, C] (wirewatch) -- (postgres) node [midway, above, sloped] (TextNode) {}; 240 \draw [<->, C] (transfer) -- (postgres) node [midway, above, sloped] (TextNode) {}; 241 \draw [->, C] (transfer) -- (nexus) node [midway, above, sloped] (TextNode) {}; 242 \draw [<-, C] (wirewatch) -- (nexus) node [midway, above, sloped] (TextNode) {}; 243 \end{tikzpicture} 244 \end{center} 245 \end{frame} 246 247 248 \begin{frame}{Taler Wallet} 249 The {\bf Wallet} is the software run by consumers to store 250 their digital cash and authorize transactions. 251 252 \begin{minipage}{8cm} 253 \begin{itemize} 254 \item {\bf wallet-core} is the logic shared by all interfaces 255 \item Applications exist for Android, F-Droid, 256 WebExtension (Chrome, Chromium, Firefox, etc.), iOS 257 \item Features include: 258 \begin{itemize} 259 \item Multi-currency support 260 \item Wallet-to-wallet payments (NFC or QR code) 261 \item CRDT-like data model 262 \end{itemize} 263 \end{itemize} 264 Can be integrated into other Apps if desired. 265 \end{minipage} 266 \begin{minipage}{3cm} 267 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png} 268 \end{minipage} 269 \end{frame} 270 271 272 \begin{frame}{Taler Auditor} 273 The {\bf Auditor} is the software run by an independent auditor 274 to validate the operation of an Exchange. 275 276 \begin{itemize} 277 \item REST API for additional report inputs by merchants (optional) 278 \item Secure database replication logic ({\tt taler-auditor-sync}) 279 \item SPA for viewing results in real-time 280 \end{itemize} 281 \begin{center} 282 \begin{tikzpicture} 283 \tikzstyle{def} = [node distance=3em and 2.5em, inner sep=1em, outer sep=.3em]; 284 \node (origin) at (0,0) {Postgres (Auditor)}; 285 \node (httpd) [def,above=of origin,draw]{auditor-httpd}; 286 \node (spa) [def,above right=of origin,draw]{auditor-spa}; 287 \node (merchant) [def,above left=of origin,draw]{merchant}; 288 \node (report) [def,left=of origin,draw]{a-h-*}; 289 \node (wirereport) [def,right=of origin,draw]{a-h-wire-*}; 290 \node (postgres-E) [def, draw, below=of origin] {Exchange}; 291 \node (postgres-B) [def, draw, right=of postgres-E] {Bank}; 292 293 \tikzstyle{C} = [color=black, line width=1pt] 294 295 \draw [->, C] (postgres-E) -- (origin) node [midway, above, sloped] (TextNode) {sync}; 296 \draw [<->, C] (httpd) -- (origin) node [midway, above, sloped] (TextNode) {}; 297 \draw [<->, C] (httpd) -- (spa) node [midway, above, sloped] (TextNode) {}; 298 \draw [->, C] (merchant) -- (httpd) node [midway, above, sloped] (TextNode) {}; 299 \draw [<->, C] (report) -- (origin) node [midway, above, sloped] (TextNode) {}; 300 \draw [<->, C] (wirereport) -- (origin) node [midway, above, sloped] (TextNode) {}; 301 \draw [<->, C] (wirereport) -- (postgres-B) node [midway, above, sloped] (TextNode) {nexus}; 302 \end{tikzpicture} 303 \end{center} 304 \end{frame} 305 306 307 \begin{frame}{libeufin-nexus} 308 libeufin-nexus allows Taler components to interact with a core banking system. It: 309 310 \begin{itemize} 311 \item provides an implementation of the Wire Gateway for the exchange 312 \item supports EBICS 2.5 and 3.0 313 \item other APIs such as FinTS or PSD2-style XS2A APIs can be added 314 without requiring changes to the Exchange 315 \item was tested with GLS Bank (DE) and Postfinance (CH) accounts and real EUR/CHF 316 \end{itemize} 317 \end{frame} 318 319 320 \begin{frame}{libeufin-bank} 321 libeufin-bank implements a standalone bank with a Web interface. It: 322 323 \begin{itemize} 324 \item provides the Taler Core Bank API for RESTful online banking 325 using a Web interface (with multi-factor authentication) 326 \item includes a Taler Wire Gateway for the exchange 327 \item offers the Taler Bank Integration API to allow wallets 328 to easily withdraw digital cash 329 \item optionally provides the Taler Conversion Info API for currency 330 conversion between fiat and regional currencies 331 \item optionally integrates with libeufin-nexus to interact with 332 a core banking system 333 \end{itemize} 334 \end{frame} 335 336 337 \begin{frame}{Cashier App for Android} 338 \begin{minipage}{6cm} 339 \begin{itemize} 340 \item Enables staff to convert cash to e-cash 341 \item Staff has special bank accounts with limited funds 342 \item Visitors can pay staff in cash to receive e-cash 343 \end{itemize} 344 \end{minipage} 345 \begin{minipage}{3cm} 346 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103315.png} 347 \end{minipage} 348 \begin{minipage}{3cm} 349 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103325.png} 350 \end{minipage} 351 \end{frame} 352 353 354 \begin{frame}{Cashless2ecash by Joel Haeberli} 355 \begin{center} 356 \includegraphics[width=0.8\textwidth]{cashless2ecash.png} 357 \end{center} 358 \end{frame} 359 360 361 \begin{frame}{Challenger} 362 Challenger allows clients to obtain validated address (KYC) data about 363 users: 364 365 \begin{itemize} 366 \item Customizable Web-based process for address validation 367 \item Can validate phone numbers, e-mail addresses or physical mailing addresses 368 \item Provides an exchange-compatible OAuth 2.0 API 369 \end{itemize} 370 \end{frame} 371 372 373 \begin{frame}{Depolymerization} 374 Depolymerization is a bridge between GNU Taler and blockchains. 375 376 \begin{itemize} 377 \item Works on top of Bitcoin and Ethereum 378 crypto-currencies, with the DLTs as the ``RTGS'' 379 \item Provides same API to Exchange as libeufin-nexus 380 \end{itemize} 381 \begin{center} 382 \begin{tikzpicture}[ 383 rect/.style={rectangle, draw=black, minimum width=30mm}, 384 sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt}, 385 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, 386 ] 387 388 %% Architecture 389 \node(Tt){Taler}; 390 \node[rect,below=0cm of Tt](Tc){Exchange}; 391 \node[rect,fit={(Tt) (Tc)}](T){}; 392 393 \node[rect,below=7mm of Tc](D) {\textbf{Depolymerization}}; 394 395 \node[rect,below=7mm of D](Bc){Node}; 396 \node[below=0cm of Bc](Bt){Blockchain}; 397 \node[rect,fit={(Bt) (Bc)}](B){}; 398 399 \draw[sym] (T) -- (D); 400 \draw[sym] (D) -- (B); 401 402 %% Blockchain 403 \node[block,right=8mm of B] (1){}; 404 \node[block,right=4mm of 1] (2){}; 405 \node[block,right=4mm of 2] (3){}; 406 \node[block,right=4mm of 3] (4){}; 407 \node[block,right=4mm of 4] (5){}; 408 \node[block,right=4mm of 5] (6){}; 409 \draw[-stealth] (1) -- (2); 410 \draw[-stealth] (2) -- (3); 411 \draw[-stealth] (3) -- (4); 412 \draw[-stealth] (4) -- (5); 413 \draw[-stealth] (5) -- (6); 414 415 \node[left=4mm of 1] (S){}; 416 \node[right=4mm of 6] (E){}; 417 \draw[-stealth] (S) -- (1); 418 \draw[-stealth] (6) -- (E); 419 420 %% Taler 421 \node[block, below right=-7.5mm and 20.5mm of T] (off){Off-chain transactions}; 422 \node[above=-0.5mm of off] {\includegraphics[height=7mm]{taler-logo-2021-inkscape.pdf}}; 423 424 %% Depolymerization 425 \node[right=11mm of D] {\small{Credit}}; 426 \node[right=50mm of D] {\small{Debit}}; 427 \draw[dashed,-stealth] (1.north) |- (off.west); 428 \draw[dashed,-stealth] (off.east) -| (6.north); 429 \end{tikzpicture} 430 \end{center} 431 \end{frame} 432 433 434 435 \begin{frame}{Taler Merchant} 436 The {\bf Merchant} is the software run by merchants to accept\\ 437 GNU Taler payments. 438 439 \begin{minipage}{6cm} 440 \begin{itemize} 441 \item REST API for integration with e-commerce 442 \item SPA provides Web interface for administration 443 \item Features include: 444 \begin{itemize} 445 \item Multi-tenant support 446 \item Refunds 447 \item Templates 448 \item Webhooks 449 \item Inventory management (optional) 450 \end{itemize} 451 \end{itemize} 452 \end{minipage} 453 \begin{minipage}{7cm} 454 \includegraphics[width=7cm]{screenshots/merchant-spa-settings} 455 \end{minipage} 456 \end{frame} 457 458 459 \begin{frame}{Pretix Taler payment plugin} 460 \begin{center} 461 \includegraphics[width=0.5\textwidth]{screenshots/pretix.png} 462 \end{center} 463 464 Pretix is a ticket sales system. 465 466 \begin{itemize} 467 \item Pretix payment plugin enables payments via GNU Taler 468 \item Developed by Pretix.eu for \EUR{3,000} on behalf of Taler Systems SA 469 \end{itemize} 470 \end{frame} 471 472 473 \begin{frame}{WooCommerce Taler payment plugin} 474 \begin{minipage}{8cm} 475 \begin{itemize} 476 \item WooCommerce is an e-commerce plugin for WordPress. 477 \item WooCommerce payment plugin enables payments via GNU Taler 478 \item Features include: 479 \begin{itemize} 480 \item Trivial configuration 481 \item Support for refunds 482 \item Full internationalization 483 \end{itemize} 484 \end{itemize} 485 \end{minipage} 486 \begin{minipage}{5cm} 487 \includegraphics[width=4cm]{screenshots/woocommerce-cart.png} 488 \includegraphics[width=4cm]{screenshots/woocommerce-settings.png} 489 \end{minipage} 490 \end{frame} 491 492 493 \begin{frame}{Joomla! Taler payment plugin} 494 \begin{minipage}{6cm} 495 \begin{itemize} 496 \item Joomla! is an e-commerce platform 497 \item Joomla! payment plugin enables payments via GNU Taler 498 \item Features include: 499 \begin{itemize} 500 \item Trivial configuration 501 \item Support for refunds 502 \item Full internationalization 503 \end{itemize} 504 \end{itemize} 505 \end{minipage} 506 % FIXME: add screenshots 507 %\begin{minipage}{5cm} 508 % \includegraphics[width=4cm]{screenshots/woocommerce-cart.png} 509 % \includegraphics[width=4cm]{screenshots/woocommerce-settings.png} 510 % \end{minipage} 511 \end{frame} 512 513 514 \begin{frame}{Point-of-Sale App for Android} 515 516 \begin{minipage}{8cm} 517 \begin{itemize} 518 \item Allows merchant to generate orders against Taler backend 519 and display QR code to enable customer to pay in person 520 \item Patterned after ViewTouch restaurant UI 521 \item Features include: 522 \begin{itemize} 523 \item Internet-based configuration 524 \item Products sorted by categories 525 \item Easy undo of every operation 526 \item Manages multiple concurrent orders 527 \end{itemize} 528 \end{itemize} 529 \end{minipage} 530 \begin{minipage}{4cm} 531 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg} 532 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg} 533 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg} 534 \end{minipage} 535 \end{frame} 536 537 538 \begin{frame}{Taler-mdb} 539 \vfill 540 \begin{center} 541 \includegraphics[width=0.9\textwidth]{taler-in-use.png} 542 \end{center} 543 \vfill 544 \end{frame} 545 546 547 \begin{frame}{Partially Offline Payments with GNU Taler\footnote{Joint work with Emmanuel Benoist, Priscilla Huang and Sebastian Marchano}} 548 549 \begin{center} 550 \resizebox{8cm}{7cm}{ 551 \begin{sequencediagram} 552 \newinst{pos}{\shortstack{PoS \\ 553 \\ \begin{tikzpicture} 554 \node [fill=gray!20,draw=black,thick ,align=center] {PoS key \\ PoS ID}; 555 \end{tikzpicture} 556 }} 557 \newinst[2]{customer}{\shortstack{Customer \\ 558 \\ \begin{tikzpicture} 559 \node [fill=gray!20,draw=black,thick ,align=center] {Digital \\ Wallet}; 560 \end{tikzpicture} 561 }} 562 \newinst[2]{backend}{\shortstack{Merchant Backend \\ 563 \\ \begin{tikzpicture}[shape aspect=.5] 564 \tikzset{every node/.style={cylinder, shape border rotate=90, draw,fill=gray!25}} 565 \node at (1.5,0) {\shortstack{{\tiny PoS key} \\ {\tiny PoS ID}}}; 566 \end{tikzpicture} 567 }} 568 \postlevel 569 \mess[0]{pos}{PoS ID}{customer} 570 \begin{sdblock}{optional}{} 571 \begin{callself}{customer}{Amount}{} 572 \end{callself} 573 \end{sdblock} 574 \prelevel 575 \prelevel 576 \prelevel 577 \prelevel 578 \prelevel 579 \begin{sdblock}{optional}{} 580 \begin{callself}{pos}{Amount}{} 581 \end{callself} 582 \end{sdblock} 583 \postlevel 584 \mess[0]{customer}{PoS ID, [Amount]?}{backend} 585 \mess[0]{backend}{Contract}{customer} 586 \postlevel 587 \mess[0]{customer}{Payment}{backend} 588 \begin{callself}{pos}{OTP(PoS key)}{} 589 \end{callself} 590 \prelevel 591 \prelevel 592 \begin{callself}{backend}{OTP(PoS key)}{} 593 \end{callself} 594 \mess[0]{backend}{OTP code}{customer} 595 \postlevel 596 \mess[0]{customer}{OTP code}{pos} 597 \end{sequencediagram} 598 } 599 \end{center} 600 \end{frame} 601 602 603 \begin{frame}{Other ongoing developments} 604 \begin{itemize} 605 \item Privacy-preserving auctions (trading, currency exchange) ({\tt oezguer@taler.net}) 606 \item Hardware and software support for embedded systems ({\tt mikolai@taler.net}) 607 \item GNU Name System registry with GNU Taler payments ({\tt schanzen@gnunet.org}) 608 \item Performance improvements for RSA in FLOSS crypto libraries (NLnet project) 609 \item Tax-deductable receipts for donations to charities (donau.git) 610 \item Unlinkable anonymous subscriptions and discount tokens (merchant.git, branch) 611 \item Support for illiterate and innumerate users\footnote{Background: \url{https://myoralvillage.org/}} 612 \end{itemize} 613 \end{frame} 614 615 616 \begin{frame}{How to support?} 617 \begin{description} 618 \item[Join:] { \url{https://lists.gnu.org/mailman/listinfo/taler}} 619 \item[Test:] \url{https://bugs.taler.net/} 620 \item[Translate:] \url{https://weblate.taler.net/}\footnote{Contact: \url{translation-volunteer@taler.net}} 621 \item[Integrate:] \url{https://docs.taler.net/} 622 \item[Develop:] \url{https://git.taler.net/} 623 \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler} 624 \end{description} 625 \end{frame} 626 627 628 \begin{frame} 629 \frametitle{Thanks} 630 \begin{itemize} 631 \item Next Generation Internet (NGI) initiative 632 \item Renewablefreedom Foundation 633 \item Sovereigntechfund 634 \item Prototypefund 635 \end{itemize} 636 \end{frame} 637 638 639 \begin{frame} 640 \frametitle{Do you have any questions?} 641 \vfill 642 References: 643 {\tiny 644 \begin{enumerate} 645 \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach. 646 {\em Zero-Knowledge Age Restriction for GNU Taler}. 647 {\bf 27th European Symposium on Research in Computer Security (ESORICS), 2022}.} 648 \item{David Chaum, Christian Grothoff and Thomas Moser. 649 {\em How to issue a central bank digital currency}. 650 {\bf SNB Working Papers, 2021}.} 651 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 652 {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}. 653 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 654 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 655 {\em Enabling Secure Web Payments with GNU Taler}. 656 {\bf SPACE 2016}.} 657 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 658 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 659 Available upon request. 2016.} 660 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 661 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 662 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 663 \item{David Chaum, Amos Fiat and Moni Naor. 664 {\em Untraceable electronic cash}. 665 {\bf Proceedings on Advances in Cryptology, 1990}.} 666 \item{Phillip Rogaway. 667 {\em The Moral Character of Cryptographic Work}. 668 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 669 \end{enumerate} 670 } 671 \end{frame} 672 673 674 \end{document} 675 676 677