2026-sfscon.tex (13089B)
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. 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 \input protocol-basics.tex 364 \input offline.tex 365 366 367 %\begin{frame}{The Emergency Act of Canada} 368 %Speech by Premier Kenney, Alberta, February 2022. 369 % \begin{center} 370 % \movie[height = 0.5\paperheight, poster, showcontrols]{The Emergency Act of Canada} 371 % {emergencyact.mp4} 372 % 373 %{\tiny \url{https://www.youtube.com/watch?v=NehMAj492SA} (2'2022)} 374 % \end{center} 375 %\end{frame} 376 377 378 379 380 \begin{frame}{How to support?} 381 \begin{description} 382 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}} 383 \item[Discuss:] {\small \url{https://ich.taler.net/}} 384 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/} 385 \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler} 386 \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net} 387 \item[Integrate:] \url{https://docs.taler.net/} 388 \item[Donate:] \url{https://gnunet.org/ev} 389 \item[Partner:] \url{https://taler-systems.com/} 390 \end{description} 391 \end{frame} 392 393 394 \section*{References} 395 \begin{frame}[allowframebreaks]{References} 396 \bibliographystyle{plain} 397 \bibliography{ref,extra,rfc,biblio-defqa} 398 \end{frame} 399 400 401 % This should be last... 402 \begin{frame}{Acknowledgments} 403 404 \begin{minipage}{0.45\textwidth} \ \\ 405 {\tiny Funded by the European Union (Project 101135475).} 406 407 \begin{center} 408 \includegraphics[width=0.5\textwidth]{../bandera.jpg} 409 \end{center} 410 \end{minipage} 411 \hfill 412 \begin{minipage}{0.45\textwidth} 413 {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).} 414 415 \begin{center} 416 \includegraphics[width=0.65\textwidth]{../sbfi.jpg} 417 \end{center} 418 \end{minipage} 419 420 \vfill 421 422 {\tiny 423 424 Views and opinions expressed are however those of the author(s) only 425 and do not necessarily reflect those of the European Union. Neither the 426 European Union nor the granting authority can be held responsible for 427 them. 428 429 } 430 \end{frame} 431 432 433 \end{document} 434 435 436 437 \begin{frame}{Future work} 438 \begin{itemize} 439 \item Performance improvements for RSA in FLOSS crypto libraries 440 \item Integrate with e-ID for easier \& cheaper KYC 441 \item Buy anonymous pre-paid debit cards on-demand with Taler wallet 442 \item Implement PQC across the stack (with cipher agility, where possible with additive security) 443 \end{itemize} 444 \end{frame}