2026-sfscon.tex (13084B)
1 \documentclass[aspectratio=169,t]{beamer} 2 \input taler-macros 3 4 \newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET} 5 \newcommand{\SUB}{The GNU Taler Payment System} 6 \newcommand{\AUTHOR}{Christian Grothoff} 7 \newcommand{\SPEAKER}{Christian Grothoff} 8 \newcommand{\INST}{The GNU Project} 9 \newcommand{\DATE}{December 2025} 10 11 % Do not edit this part 12 \title{\TITLE} 13 \subtitle{\SUB} 14 \date{\DATE} 15 \author[\SPEAKER]{\AUTHOR} 16 \institute{\INST} 17 18 19 \usepackage{amsmath} 20 \usepackage{multimedia} 21 \usepackage[utf8]{inputenc} 22 \usepackage{framed,color,ragged2e} 23 \usepackage[absolute,overlay]{textpos} 24 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 25 \usetheme{boxes} 26 \setbeamertemplate{navigation symbols}{} 27 \usepackage{xcolor} 28 \usepackage[normalem]{ulem} 29 \usepackage{listings} 30 \usepackage{adjustbox} 31 \usepackage{array} 32 \usepackage{bbding} 33 \usepackage{relsize} 34 \usepackage{graphicx} 35 \usepackage{tikz,eurosym,calc} 36 \usetikzlibrary{tikzmark} 37 \usetikzlibrary{shapes,arrows,arrows.meta} 38 \usetikzlibrary{positioning,fit,patterns} 39 \usetikzlibrary{calc} 40 \usepackage{multicol} 41 \usepackage{pgf-umlsd} 42 \usepackage{relsize} 43 44 \usepackage{booktabs} 45 \usepackage{makecell} 46 \usepackage{arydshln} 47 48 49 50 % "The GNU Taler Payment System", including 51 % an introduction to our objectives, 52 % background on the technology, 53 % demonstration of the system, 54 % social implications and open issues. 55 56 % CSS 57 \lstdefinelanguage{CSS}{ 58 basicstyle=\ttfamily\scriptsize, 59 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}, 60 sensitive=true, 61 morecomment=[l]{//}, 62 morecomment=[s]{/*}{*/}, 63 morestring=[b]', 64 morestring=[b]", 65 alsoletter={:}, 66 alsodigit={-} 67 } 68 69 % JavaScript 70 \lstdefinelanguage{JavaScript}{ 71 basicstyle=\ttfamily\scriptsize, 72 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 73 morecomment=[s]{/*}{*/}, 74 morecomment=[l]//, 75 morestring=[b]", 76 morestring=[b]' 77 } 78 79 \lstdefinelanguage{HTML5}{ 80 basicstyle=\ttfamily\scriptsize, 81 language=html, 82 sensitive=true, 83 alsoletter={<>=-}, 84 morecomment=[s]{<!-}{-->}, 85 tag=[s], 86 otherkeywords={ 87 % General 88 >, 89 % Standard tags 90 <!DOCTYPE, 91 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 92 % body 93 </body, <body, 94 % Divs 95 </div, <div, </div>, 96 % Paragraphs 97 </p, <p, </p>, 98 % scripts 99 </script, <script, 100 % More tags... 101 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 102 }, 103 ndkeywords={ 104 % General 105 =, 106 % HTML attributes 107 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 108 % SVG attributes 109 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 110 % CSS properties 111 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 112 % CSS3 properties 113 transform:, -moz-transform:, -webkit-transform:, 114 animation:, -webkit-animation:, 115 transition:, transition-duration:, transition-property:, transition-timing-function:, 116 } 117 } 118 119 \lstdefinelanguage{JavaScript}{ 120 basicstyle=\ttfamily\scriptsize, 121 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 122 keywordstyle=\color{blue}\bfseries, 123 ndkeywords={class, export, boolean, throw, implements, import, this}, 124 ndkeywordstyle=\color{darkgray}\bfseries, 125 identifierstyle=\color{black}, 126 sensitive=false, 127 comment=[l]{//}, 128 morecomment=[s]{/*}{*/}, 129 commentstyle=\color{purple}\ttfamily, 130 stringstyle=\color{red}\ttfamily, 131 morestring=[b]', 132 morestring=[b]" 133 } 134 135 \setbeamersize{description width=1em} 136 137 \definecolor{blue}{rgb}{0,0,0.7} 138 \newcommand{\orange}[1]{{\color{orange}#1}} 139 \newcommand{\blue}[1]{{\color{blue}#1}} 140 \newcommand{\red}[1]{{\color{red}#1}} 141 \newcommand{\Guardian}{\mathcal{G}} 142 \newcommand{\Child}{\mathcal{C}} 143 \newcommand{\Customer}{\mathcal{C}} 144 \newcommand{\Merchant}{\mathcal{M}} 145 \newcommand{\Exchange}{\mathcal{E}} 146 147 \newcommand{\Commit}{\mathsf{Commit}} 148 \newcommand{\Attest}{\mathsf{Attest}} 149 \newcommand{\Verify}{\mathsf{Verify}} 150 \newcommand{\Derive}{\mathsf{Derive}} 151 \newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}} 152 \newcommand{\Compare}{\mathsf{Compare}} 153 \newcommand{\AgeVer}{\mathsf{AgeVer}} 154 155 \newcommand{\HashF}{\mathsf{H}} 156 \newcommand{\Hash}{\mathsf{H}} 157 \newcommand{\Block}{\mathbb{B}} 158 \newcommand{\Pub}{\mathsf{Pub}} 159 \newcommand{\Sign}{\mathsf{Sig}} 160 \newcommand{\Ver}{\mathsf{Ver}} 161 \newcommand{\Encoding}{\mathsf{Encoding}} 162 \newcommand{\ECDSA}{\mathsf{ECDSA}} 163 \newcommand{\Null}{\mathcal{O}} 164 \newcommand{\EC}{\mathrm{ec}} 165 \newcommand{\Curve}{\mathsf{Curve25519}} 166 \newcommand{\SHA}{\mathsf{SHA256}} 167 \newcommand{\SHAF}{\mathsf{SHA252}} 168 \newcommand{\FDH}{\mathsf{FDH}} 169 170 \newcommand{\negl}{\epsilon} 171 172 \newcommand{\rand}{\mathsf{rand}} 173 \newcommand{\age}{\mathsf{a}} 174 \newcommand{\Age}{\mathsf{M}} 175 \newcommand{\bage}{\mathsf{b}} 176 \newcommand{\minage}{\mathsf{m}} 177 \newcommand{\attest}{\mathsf{T}} 178 \newcommand{\commitment}{\mathsf{Q}} 179 \newcommand{\pruf}{\mathsf{P}} 180 \newcommand{\Vcommitment}{\vec{\mathsf{Q}}} 181 \newcommand{\Vpruf}{\vec{\mathsf{P}}} 182 \newcommand{\blinding}{\beta} 183 184 \newcommand{\ZN}{\mathbb{Z}_N} 185 \newcommand{\Z}{\mathbb{Z}} 186 \newcommand{\N}{\mathbb{N}} 187 \newcommand{\A}{\mathbb{A}} 188 \newcommand{\E}{\mathbb{E}} 189 \newcommand{\F}{\mathbb{F}} 190 \newcommand{\seck}{\mathsf{s}} 191 \newcommand{\pubk}{\mathsf{P}} 192 \renewcommand{\H}{\mathbb{H}} 193 \newcommand{\K}{\mathbb{K}} 194 \newcommand{\Proofs}{\mathbb{P}} 195 \newcommand{\Commitments}{\mathbb{O}} 196 \newcommand{\Attests}{\mathbb{T}} 197 \newcommand{\Blindings}{\mathbb{B}} 198 \newcommand{\Nil}{\perp} 199 200 \newcommand{\p}{\mathsf{p}} 201 \newcommand{\com}{\mathsf{com}} 202 \newcommand{\prf}{\mathsf{prf}} 203 204 \newcommand{\Adv}{\mathcal{A}} 205 \newcommand{\PPT}{\mathfrak{A}} 206 \newcommand{\Probability}{\mathrm{Pr}} 207 \newcommand{\Algorithm}{f} 208 \renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}} 209 210 \DeclareMathOperator{\Image}{Im} 211 \DeclareMathOperator{\Mod}{mod} 212 213 \newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}} 214 \newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}} 215 \newcommand{\FDHg}[1]{[#1]_g\,} 216 \newcommand{\logg}{{\breve{g}}} 217 218 219 \newcommand{\drawfrom}{\xleftarrow{\$}} 220 \newcommand\Exists{% 221 \mathop{\lower0.75ex\hbox{\ensuremath{% 222 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}% 223 \limits} 224 225 \newcommand\Forall{% 226 \mathop{\lower0.75ex\hbox{\ensuremath{% 227 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% 228 \limits} 229 230 231 \begin{document} 232 233 \begin{frame}{GNU Taler~\cite{taler2016space,DBLP:phd/hal/Dold19,cbdc2021chaum}} 234 \vfill 235 \begin{center} 236 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 237 \end{center} 238 \vfill 239 \begin{center} 240 \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf} 241 \end{center} 242 \vfill 243 \begin{center} 244 Privacy-Preserving, Practical, Taxable, Free Software, Efficient 245 \end{center} 246 \vfill 247 \vfill 248 \ % 249 \end{frame} 250 251 252 \begin{frame}{What is Taler?} 253 \framesubtitle{\url{https://taler.net/en/features.html}} \noindent 254 Taler is 255 \vfill 256 \begin{itemize} 257 \item a Free/Libre software \emph{payment system} infrastructure project 258 \item ... with a surrounding software ecosystem 259 \item ... and a company (Taler Systems S.A.) and community that wants to deploy it 260 as widely as possible. 261 \end{itemize} 262 \vfill 263 \noindent 264 However, Taler is 265 \begin{itemize} 266 \item \emph{not} a currency or speculative asset 267 \item \emph{not} a long-term store of value 268 \item \emph{not} a network or instance of a system 269 \item \emph{not} based on proof-of-work or proof-of-stake 270 \end{itemize} 271 \end{frame} 272 273 274 \begin{frame}{Design principles} 275 \framesubtitle{https://taler.net/en/principles.html} 276 GNU Taler must ... 277 \begin{enumerate} 278 \item {... be implemented as {\bf free software}.} 279 \item {... protect the {\bf privacy of buyers}.} 280 \item {... enable the state to {\bf tax income} and crack down on 281 illegal business activities.} 282 \item {... prevent payment fraud.} 283 \item {... only {\bf disclose the minimal amount of information 284 necessary}.} 285 \item {... be usable.} 286 \item {... be efficient.} 287 \item {... avoid single points of failure.} 288 \item {... foster {\bf competition}.} 289 \end{enumerate} 290 \end{frame} 291 292 293 \begin{frame} 294 \frametitle{Taler Overview} 295 \begin{center} 296 \begin{tikzpicture} 297 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 298 \node (origin) at (0,0) {}; 299 \node (exchange) [def,above=of origin,draw]{Exchange}; 300 \node (customer) [def, draw, below left=of origin] {Customer}; 301 \node (merchant) [def, draw, below right=of origin] {Merchant}; 302 \node (auditor) [def, draw, above right=of origin]{Auditor}; 303 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 304 305 \tikzstyle{C} = [color=black, line width=1pt] 306 307 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 308 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 309 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 310 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 311 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 312 313 \end{tikzpicture} 314 \end{center} 315 \end{frame} 316 317 318 319 \begin{frame} 320 \frametitle{Architecture of Taler} 321 \begin{center} 322 \includegraphics[width=0.8\textwidth]{operations.png} 323 \end{center} 324 \end{frame} 325 326 327 \begin{frame}{Consumer Impact of Taler} 328 \begin{itemize} 329 \item {\bf Convenient:} pay with one click instantly --– in Euro, 330 Dollar, Yen or Bitcoin 331 \item {\bf Friction-free security:} Payments do not require sign-up, 332 login or multi-factor authentication 333 \item {\bf Privacy-preserving:} payment requires/shares no personal information 334 \item {\bf Bank account:} not required 335 \end{itemize} 336 \end{frame} 337 338 339 \begin{frame}{Merchant Impact of Taler} 340 \begin{itemize} 341 \item {\bf Instant clearance:} one-click transactions and instant clearance at par 342 \item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort 343 \item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs 344 \item {\bf 1-click checkout:} without Amazon and without false positives in fraud detection 345 \end{itemize} 346 \end{frame} 347 348 349 \begin{frame}{Usability of Taler} 350 \vfill 351 \begin{center} 352 \url{https://demo.taler.net/} 353 \end{center} 354 \begin{enumerate} 355 \item Install browser extension or download Taler wallet app. 356 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 357 \item Visit the {\tt shop.demo.taler.net} to spend coins. 358 \end{enumerate} 359 \vfill 360 \end{frame} 361 362 363 \begin{frame}{When will we be available?} 364 \begin{description} 365 \item[Switzerland] Available for over a year, needs Swiss bank account! 366 \item[Germany] BaFin licensing process pending, also need sufficient capital 367 \item[Eurozone] BaFin license would cover EU, but no marketing {\bf by us} 368 \item[European Union] BaFin license covers EU, but non-Euros may need a bit more work 369 \item[Planet] Happy to partner, very slow process 370 \end{description} 371 \end{frame} 372 373 374 \begin{frame}{How to support?} 375 \begin{description} 376 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}} 377 \item[Discuss:] {\small \url{https://ich.taler.net/}} 378 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/} 379 \item[Integrate:] \url{https://docs.taler.net/} 380 \item[Donate:] \url{https://gnunet.org/ev} 381 \item[Invest:] \url{https://gnufi.de/} 382 \item[Partner:] \url{https://taler-systems.com/} 383 \end{description} 384 \end{frame} 385 386 387 \section*{References} 388 \begin{frame}[allowframebreaks]{References} 389 \bibliographystyle{plain} 390 \bibliography{ref,extra,rfc,biblio-defqa} 391 \end{frame} 392 393 394 % This should be last... 395 \begin{frame}{Acknowledgments} 396 397 \begin{minipage}{0.45\textwidth} \ \\ 398 {\tiny Funded by the European Union (Project 101135475).} 399 400 \begin{center} 401 \includegraphics[width=0.5\textwidth]{../bandera.jpg} 402 \end{center} 403 \end{minipage} 404 \hfill 405 \begin{minipage}{0.45\textwidth} 406 {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).} 407 408 \begin{center} 409 \includegraphics[width=0.65\textwidth]{../sbfi.jpg} 410 \end{center} 411 \end{minipage} 412 413 \vfill 414 415 {\tiny 416 417 Views and opinions expressed are however those of the author(s) only 418 and do not necessarily reflect those of the European Union. Neither the 419 European Union nor the granting authority can be held responsible for 420 them. 421 422 } 423 \end{frame} 424 425 426 \end{document} 427 428 429 430 \begin{frame}{Future work} 431 \begin{itemize} 432 \item Performance improvements for RSA in FLOSS crypto libraries 433 \item Integrate with e-ID for easier \& cheaper KYC 434 \item Buy anonymous pre-paid debit cards on-demand with Taler wallet 435 \item Implement PQC across the stack (with cipher agility, where possible with additive security) 436 \end{itemize} 437 \end{frame}