commit dcebc31610dbb660b776e410305747cbba2bed4f
parent c04a0a4258ac3bed121d4b1f03082a181361d359
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Fri, 15 May 2026 19:29:56 +0200
res
Diffstat:
12 files changed, 549 insertions(+), 0 deletions(-)
diff --git a/presentations/2026-lugcamp/2026-05-paivana-gemini.mp4 b/presentations/2026-lugcamp/2026-05-paivana-gemini.mp4
Binary files differ.
diff --git a/presentations/2026-lugcamp/abstract.en.txt b/presentations/2026-lugcamp/abstract.en.txt
@@ -0,0 +1,9 @@
+GNU Taler is a Free Software privacy-friendly payment system from the GNU
+project. Taler does not use a blockchain: monetary policies are expected to
+be set by a central bank. Digital money can be issued either by retail
+banks or by the central bank. Paying with Taler is extremely efficient:
+customers authorize transactions with one click, and then the system takes
+only a few milliseconds to finalize the transactions. In this talk, we will
+introduce the political goals, architecture and technology behind Taler,
+demonstrate the current state of the art and outline likely future
+developments.
diff --git a/presentations/2026-lugcamp/illiteracy.png b/presentations/2026-lugcamp/illiteracy.png
Binary files differ.
diff --git a/presentations/2026-lugcamp/main.tex b/presentations/2026-lugcamp/main.tex
@@ -0,0 +1,435 @@
+\pdfminorversion=3
+\documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer}
+\input taler-macros
+
+\newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET}
+\newcommand{\SUB}{The GNU Taler Payment System}
+\newcommand{\AUTHOR}{Christian Grothoff}
+\newcommand{\SPEAKER}{Christian Grothoff}
+\newcommand{\INST}{The GNU Project}
+\newcommand{\DATE}{\today}
+
+% Do not edit this part
+\title{\TITLE}
+\subtitle{\SUB}
+\date{\DATE}
+\author[\SPEAKER]{\AUTHOR}
+\institute{\INST}
+\usepackage{amsmath}
+\usepackage{multimedia}
+\usepackage[utf8]{inputenc}
+\usepackage{framed,color,ragged2e}
+\usepackage[absolute,overlay]{textpos}
+\definecolor{shadecolor}{rgb}{0.8,0.8,0.8}
+\usetheme{boxes}
+\setbeamertemplate{navigation symbols}{}
+\usepackage{xcolor}
+\usepackage[normalem]{ulem}
+\usepackage{listings}
+\usepackage{adjustbox}
+\usepackage{array}
+\usepackage{bbding}
+\usepackage{relsize}
+\usepackage{graphicx}
+\usepackage{tikz,eurosym,calc}
+\usetikzlibrary{tikzmark}
+\usetikzlibrary{shapes,arrows,arrows.meta}
+\usetikzlibrary{positioning,fit,patterns}
+\usetikzlibrary{calc}
+\usepackage{multicol}
+\usepackage{pgf-umlsd}
+\usepackage{relsize}
+
+
+% CSS
+\lstdefinelanguage{CSS}{
+ basicstyle=\ttfamily\scriptsize,
+ 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},
+ sensitive=true,
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]',
+ morestring=[b]",
+ alsoletter={:},
+ alsodigit={-}
+}
+
+% JavaScript
+\lstdefinelanguage{JavaScript}{
+ basicstyle=\ttfamily\scriptsize,
+ morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ morestring=[b]'
+}
+
+\lstdefinelanguage{HTML5}{
+ basicstyle=\ttfamily\scriptsize,
+ language=html,
+ sensitive=true,
+ alsoletter={<>=-},
+ morecomment=[s]{<!-}{-->},
+ tag=[s],
+ otherkeywords={
+ % General
+ >,
+ % Standard tags
+ <!DOCTYPE,
+ </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />,
+ % body
+ </body, <body,
+ % Divs
+ </div, <div, </div>,
+ % Paragraphs
+ </p, <p, </p>,
+ % scripts
+ </script, <script,
+ % More tags...
+ <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image>
+ },
+ ndkeywords={
+ % General
+ =,
+ % HTML attributes
+ charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
+ % SVG attributes
+ fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=,
+ % CSS properties
+ margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:,
+ % CSS3 properties
+ transform:, -moz-transform:, -webkit-transform:,
+ animation:, -webkit-animation:,
+ transition:, transition-duration:, transition-property:, transition-timing-function:,
+ }
+}
+
+\lstdefinelanguage{JavaScript}{
+ basicstyle=\ttfamily\scriptsize,
+ keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for},
+ keywordstyle=\color{blue}\bfseries,
+ ndkeywords={class, export, boolean, throw, implements, import, this},
+ ndkeywordstyle=\color{darkgray}\bfseries,
+ identifierstyle=\color{black},
+ sensitive=false,
+ comment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ commentstyle=\color{purple}\ttfamily,
+ stringstyle=\color{red}\ttfamily,
+ morestring=[b]',
+ morestring=[b]"
+}
+
+\setbeamersize{description width=1em}
+
+\title{GNU Taler}
+%\subtitle{}
+
+% NOTE: adjust as needed!
+\author[C. Grothoff]{F. Dold, C. Grothoff}
+\institute{The GNU Project}
+
+
+\begin{document}
+
+\justifying
+
+\begin{frame}{GNU Taler}
+ \vfill
+ \begin{center}
+ {\huge {\bf Digital} cash, made \textbf{socially responsible}.}
+ \end{center}
+ \vfill
+ \begin{center}
+ \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf}
+ \end{center}
+ \vfill
+ \begin{center}
+ Privacy-Preserving, Practical, Taxable, Free Software, Efficient
+ \end{center}
+ \vfill
+ \vfill
+\ %
+\end{frame}
+
+
+\begin{frame}{What is Taler?}
+ \framesubtitle{\url{https://taler.net/en/features.html}} \noindent
+Taler is
+ \vfill
+ \begin{itemize}
+ \item a Free/Libre software \emph{payment system} infrastructure project
+ \item ... with a surrounding software ecosystem
+ \item ... and a company (Taler Systems S.A.) and community that wants to deploy it
+ as widely as possible.
+ \end{itemize}
+ \vfill
+\noindent
+ However, Taler is
+ \begin{itemize}
+ \item \emph{not} a currency or speculative asset
+ \item \emph{not} a long-term store of value
+ \item \emph{not} a network or instance of a system
+ \item \emph{not} based on proof-of-work or proof-of-stake
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Design principles}
+ \framesubtitle{https://taler.net/en/principles.html}
+GNU Taler must ...
+\begin{enumerate}
+ \item {... be implemented as {\bf free software}.}
+ \item {... protect the {\bf privacy of buyers}.}
+ \item {... enable the state to {\bf tax income} and crack down on
+ illegal business activities.}
+ \item {... prevent payment fraud.}
+ \item {... only {\bf disclose the minimal amount of information
+ necessary}.}
+ \item {... be usable.}
+ \item {... be efficient.}
+ \item {... avoid single points of failure.}
+ \item {... foster {\bf competition}.}
+\end{enumerate}
+\end{frame}
+
+
+\begin{frame}
+\frametitle{Taler Overview}
+\begin{center}
+\begin{tikzpicture}
+ \tikzstyle{def} = [node distance= 5em and 5em, inner sep=1em, outer sep=.3em];
+ \node (origin) at (0,0) {};
+ \node (exchange) [def,above=of origin,draw]{Exchange};
+ \node (customer) [def, draw, below left=of origin] {Customer};
+ \node (merchant) [def, draw, below right=of origin] {Merchant};
+ \node (auditor) [def, node distance=5em and 6em, draw, above right=of origin]{Auditor};
+% \node (regulator) [def, draw, above=of auditor]{CSSF};
+
+ \tikzstyle{C} = [color=black, line width=1pt]
+
+ \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
+ \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
+ \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
+ \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};
+% \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report};
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+
+
+
+\begin{frame}
+\frametitle{Architecture of Taler}
+\begin{center}
+ \includegraphics[width=0.8\textwidth]{operations.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Usability of GNU Taler}
+ \vfill
+ \begin{center}
+ \url{https://demo.taler.net/}
+ \end{center}
+ \begin{enumerate}
+ \item Install browser extension.
+ \item Visit the {\tt bank.demo.taler.net} to withdraw coins.
+ \item Visit the {\tt shop.demo.taler.net} to spend coins.
+ \end{enumerate}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{Real-world use}
+\vfill
+\begin{center}
+\includegraphics[width=1.0\textwidth]{taler-in-use.png}
+\end{center}
+\vfill
+\end{frame}
+
+
+\begin{frame}{Literacy \& Numeracy}{Joint work with MyOralVillage}
+ \includegraphics[width=0.45\textwidth]{illiteracy.png}
+ \includegraphics[width=0.45\textwidth]{numeracy.png}
+\end{frame}
+
+
+\begin{frame}{GNU Taler Oral Information Management Design}
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{taler-oim.png}
+\end{center}
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{transaction-types.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Results from Freetown (2025)}
+\begin{itemize}
+ \item 21 women speaking 6 local languages were briefed on how to send money in the OIM Taler prototype.
+ \item Of these only 4 had completed primary school, and only 6 could read a 5-digit cash (ordinal) number.
+ \item After 24 hours they were presented a Taler wallet with a random sum in New Leone tokens.
+ They were asked to count the money, and complete 8 tasks to send some to another person by generating a scannable QR code.
+ \item 16 completed all 8 tasks with no errors.
+ \item 4 completed all 8 tasks with two tries but no help. Only one was unable to complete the process successfully.
+\end{itemize}
+\end{frame}
+
+
+\begin{frame}[plain]
+ \begin{tikzpicture}[remember picture,overlay]
+ \node[anchor=south west, inner sep=0pt] at (current page.south west) {%
+ \movie[height = \paperheight, width = \paperwidth, poster, showcontrols] {Offline payments}{offline.mp4}%
+ };
+ \end{tikzpicture}
+\end{frame}
+
+\begin{frame}[plain]
+ \begin{tikzpicture}[remember picture,overlay]
+ \node[anchor=south west, inner sep=0pt] at (current page.south west) {%
+ \movie[height = \paperheight, width = \paperwidth, poster, showcontrols] {Agentic payments}{2026-05-paivana-gemini.mp4}%
+ };
+ \end{tikzpicture}
+\end{frame}
+
+
+\begin{frame}{Taler: Project Status}
+\framesubtitle{\url{https://taler-ops.ch/}}
+ 3x in production in Switzerland:
+ \begin{itemize}
+ \item Netzbon regional currency
+ \item Taler Operations AG for {\bf regulated} CHF
+ \item LeFrancPaysan (coming soon)
+ \end{itemize}
+ With potential to grow:
+ \begin{itemize}
+ \item Core banking integrations for GLS, Magnet, Raiffeisen, Postfinance, Valiant Bank exist
+ \item Raising funds for launch in European Union
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Taler: Technical Roadmap}
+ \begin{itemize}
+ \item Currency conversion via Interledger protocol
+ \item Subscription \& discount tokens
+ \item Improved point-of-sale terminal integration
+ \item Hardware integrations (doors, xOTP, MDB)
+ \item Wallet backup and recovery with Anastasis
+ \item KYC via e-ID across Europe
+ \item Post-quantum cryptographic protocol variant
+ \item Oral information mangement-inspired UIs
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Open issues / Future Work}
+\begin{itemize}
+\item Defeat AI \& spam with micropayments
+\item Break more HSMs (side-channels, fault injection)
+\item Currency conversion with Interledger
+\item ...
+\end{itemize}
+\end{frame}
+
+
+\begin{frame}{How to support?}
+ \begin{description}
+ \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}
+ \item[Discuss:] {\small \url{https://ich.taler.net/}}
+ \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/}
+ \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler}
+ \item[Integrate:] \url{https://docs.taler.net/}
+ \item[Invest:] {\small \url{invest@taler-systems.com}}
+ \item[Donate:] \url{https://gnunet.org/ev}
+ \item[Partner:] \url{https://taler-systems.com/}
+ \end{description}
+\end{frame}
+
+
+\begin{frame}
+\frametitle{Do you have any questions?}
+\vfill
+References:
+{\tiny
+ \begin{enumerate}
+ \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach.
+ {\em Zero-Knowledge Age Restriction for GNU Taler}.
+ {\bf 27th European Symposium on Research in Computer Security (ESORICS), 2022}.}
+ \item{David Chaum, Christian Grothoff and Thomas Moser.
+ {\em How to issue a central bank digital currency}.
+ {\bf SNB Working Papers, 2021}.}
+ \item{Christian Grothoff, Bart Polot and Carlo von Loesch.
+ {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}.
+ {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.}
+ \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci.
+ {\em Enabling Secure Web Payments with GNU Taler}.
+ {\bf SPACE 2016}.}
+ \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff.
+ {\em Taler: Taxable Anonymous Libre Electronic Reserves}.
+ Available upon request. 2016.}
+ \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza.
+ {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}.
+ {\bf IEEE Symposium on Security \& Privacy, 2016}.}
+ \item{David Chaum, Amos Fiat and Moni Naor.
+ {\em Untraceable electronic cash}.
+ {\bf Proceedings on Advances in Cryptology, 1990}.}
+ \item{Phillip Rogaway.
+ {\em The Moral Character of Cryptographic Work}.
+ {\bf Asiacrypt}, 2015.} \label{bib:rogaway}
+\end{enumerate}
+}
+\begin{center}
+ {\bf Let money facilitate trade; but ensure capital serves society.}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Rights}
+ \begin{itemize}
+ \item GNUnet e.V. shared copyrights of their AGPLv3+ licensed code with Taler Systems SA
+ \item Taler Systems SA holds copyrights to entire GNU Taler code base (AGPLv3+, GPLv3+,
+ dual-licensing exclusive domain of Taler Systems SA)
+ \item Taler Systems SA applied for patent on offline payment solution
+ \item Taler Systems SA holds trademark on ``Taler''.
+ \item FSF holds trademark on ``GNU'', we are authorized to use ``GNU Taler''.
+ \item Taler Systems SA owns {\tt taler.net} and {\tt taler-systems.com}.
+ \end{itemize}
+\end{frame}
+
+% This should be last...
+\begin{frame}{Acknowledgments}
+
+ \begin{minipage}{0.45\textwidth} \ \\
+ {\tiny Funded by the European Union (Project 101135475).}
+
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{../bandera.jpg}
+ \end{center}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{0.45\textwidth}
+ {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).}
+
+ \begin{center}
+ \includegraphics[width=0.65\textwidth]{../sbfi.jpg}
+ \end{center}
+ \end{minipage}
+
+ \vfill
+
+ {\tiny
+
+ Views and opinions expressed are however those of the author(s) only
+ and do not necessarily reflect those of the European Union. Neither the
+ European Union nor the granting authority can be held responsible for
+ them.
+
+ }
+\end{frame}
+
+
+\end{document}
diff --git a/presentations/2026-lugcamp/numeracy.png b/presentations/2026-lugcamp/numeracy.png
Binary files differ.
diff --git a/presentations/2026-lugcamp/offline.mp4 b/presentations/2026-lugcamp/offline.mp4
Binary files differ.
diff --git a/presentations/2026-lugcamp/operations.png b/presentations/2026-lugcamp/operations.png
Binary files differ.
diff --git a/presentations/2026-lugcamp/taler-in-use.png b/presentations/2026-lugcamp/taler-in-use.png
Binary files differ.
diff --git a/presentations/2026-lugcamp/taler-logo-2021-inkscape.pdf b/presentations/2026-lugcamp/taler-logo-2021-inkscape.pdf
Binary files differ.
diff --git a/presentations/2026-lugcamp/taler-macros.tex b/presentations/2026-lugcamp/taler-macros.tex
@@ -0,0 +1,105 @@
+\usepackage[utf8]{inputenc}
+
+% fonts and colors
+\usepackage[defaultfam,tabular,lining]{montserrat}
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\setbeamercolor{alerted text}{fg=red!50!black}
+\setbeamercolor{example text}{fg=green!50!black}
+
+\setbeamercolor{title}{fg=white}
+\setbeamerfont{title}{size=\Huge}
+\setbeamerfont{title}{series=\bfseries}
+
+\setbeamercolor{subtitle}{fg=white}
+\setbeamerfont{subtitle}{size=\Large}
+
+\setbeamercolor{author}{fg=white}
+\setbeamerfont{author}{size=\Large}
+
+\setbeamercolor{institute}{fg=white}
+\setbeamerfont{institute}{size=\large}
+
+\setbeamercolor{date}{fg=black}
+\setbeamerfont{date}{size=\large}
+
+\setbeamercolor{frametitle}{fg=white}
+\setbeamerfont{frametitle}{size=\LARGE}
+\setbeamerfont{framesubtitle}{size=\large}
+
+\makeatletter
+\setbeamertemplate{frametitle}{%
+ \vbox{}\vskip-0.5em%
+ \begin{beamercolorbox}[wd=.7\paperwidth]{frametitle}
+ \usebeamerfont{frametitle}%
+ \strut\insertframetitle\strut\par%
+ \end{beamercolorbox}
+ \ifx\insertframesubtitle\@empty%
+ \vskip.9em
+ \else%
+ \vskip-0.3em
+ \begin{beamercolorbox}[wd=.68\paperwidth]{frametitle}
+ \usebeamerfont{framesubtitle}%
+ \strut\insertframesubtitle\strut\par%
+ \end{beamercolorbox}
+ \fi
+}
+\makeatother
+
+\usepackage{tikz}
+\usetikzlibrary{calc,intersections,positioning,fadings,through}
+
+% footline
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{footline}{%
+ \leavevmode%
+ \hskip3pt%
+ \insertframenumber
+ \hfill
+ \SPEAKER
+ \hfill
+ \TITLE
+ \hfill
+ \raisebox{-0.8mm}{\includegraphics[height=0.7cm]{../logo-NGI_TALER_Bold.png}}
+ \vskip0pt%
+}
+
+% background
+
+\usepackage{xcolor}
+\definecolor{left}{RGB}{0,66,179}
+
+\setbeamertemplate{title page}
+{%\leavemode%
+ \begin{beamercolorbox}[wd=\the\paperwidth, ht=\the\paperheight,ignorebg,center]{}
+ \begin{tikzpicture}[overlay, remember picture]
+ \fill [left color=left, right color=left!50!black] (current page.north west) -- (current page.north east) -- ($(current page.north east)+(0,-6.5)$) -- ($(current page.north west)+(5,-6.5)$) -- ($(current page.north west)+(4.5,-6.8)$) -- ($(current page.north west)+(4,-6.5)$) -- ($(current page.north west)+(0,-6.5)$);
+ \end{tikzpicture}
+ \end{beamercolorbox}%
+ \vspace*{-8cm}
+
+ \begin{beamercolorbox}[sep=8pt,left]{title}
+ {\usebeamerfont{title}\inserttitle\par}%
+ {\usebeamerfont{subtitle}\insertsubtitle\par}%
+ \end{beamercolorbox}%
+ \vskip1em\par
+ \begin{beamercolorbox}[sep=8pt,left]{author}
+ \usebeamerfont{author}\insertauthor
+ \end{beamercolorbox}
+ \begin{beamercolorbox}[sep=8pt,left]{institute}
+ \usebeamerfont{inst}\insertinstitute\\
+ \end{beamercolorbox}%
+
+ \begin{beamercolorbox}[sep=5pt,left]{date}
+ \usebeamerfont{date}\insertdate
+ \end{beamercolorbox}
+ \vspace*{2.5cm}
+}
+
+\setbeamertemplate{background canvas}
+{%\leavemode%
+ \begin{tikzpicture}[overlay, remember picture]
+ \fill [left color=left, right color=left!50!black] (current page.north west) -- (current page.north east) -- ($(current page.north east)+(0,-2)$) -- ($(current page.north west)+(5,-2)$) -- ($(current page.north west)+(4.5,-2.3)$) -- ($(current page.north west)+(4,-2)$) -- ($(current page.north west)+(0,-2)$);
+ \end{tikzpicture}
+}
+
diff --git a/presentations/2026-lugcamp/taler-oim.png b/presentations/2026-lugcamp/taler-oim.png
Binary files differ.
diff --git a/presentations/2026-lugcamp/transaction-types.png b/presentations/2026-lugcamp/transaction-types.png
Binary files differ.