slides-bitcoin-bienne.tex (19021B)
1 \documentclass[aspectratio=169,t]{beamer} 2 3 \input texinputs/taler-macros 4 5 \usepackage{tikz} 6 \usepackage{ragged2e} 7 \usepackage{graphicx} 8 \usetikzlibrary{positioning,fit,patterns} 9 10 % 11 % Presentation at "P15 Biel/Bienne le 30 avril 2026" 12 % Copyright (C) 2026 Emmanuel Benoist, 13 14 % This program is free software: you can redistribute it and/or modify 15 % it under the terms of the GNU General Public License as published by 16 % the Free Software Foundation, either version 3 of the License, or 17 % (at your option) any later version. 18 % 19 % This program is distributed in the hope that it will be useful, 20 % but WITHOUT ANY WARRANTY; without even the implied warranty of 21 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 % GNU General Public License for more details. 23 % 24 % You should have received a copy of the GNU General Public License 25 % along with this program. If not, see <http://www.gnu.org/licenses/>. 26 % 27 28 % *Especially* edit these... 29 % \setbeameroption{show notes on second screen=right} % Both 30 31 \newcommand{\SPEAKER}{Emmanuel Benoist} 32 \newcommand{\DATE}{} {} 33 34 \newcommand{\TITLE}{Presentation of GNU Taler} 35 \newcommand{\SUB}{30.04.26, Bitcoin @ P15 , Biel/Bienne} 36 \newcommand{\AUTHOR}{Emmanuel Benoist} 37 \newcommand{\INST}{https://www.taler.net} 38 39 % Do not edit this part 40 \title{\TITLE} 41 \subtitle{\SUB} 42 \date{\DATE} 43 \author[\SPEAKER]{\AUTHOR} 44 \institute{\INST} 45 46 \usepackage{amsmath} 47 \usepackage{multimedia} 48 \usepackage[percent]{overpic} 49 \usepackage{url} 50 \usepackage{pifont} 51 \usepackage[absolute,overlay]{textpos} 52 \usepackage{listings} 53 54 \usepackage{tikz, xcolor} 55 \usetikzlibrary{shapes,arrows,positioning} 56 \tikzset{ 57 %Define standard arrow tip 58 >=stealth', 59 %Define style for boxes 60 punkt/.style={ 61 rectangle, 62 rounded corners, 63 draw=black, very thick, 64 minimum width=3.5em, 65 minimum height=2em, 66 text centered}, 67 % Define arrow style 68 pull/.style={ 69 <->, 70 thick,draw=red, 71 shorten <=2pt, 72 shorten >=2pt,}, 73 % Define arrow style 74 pil/.style={ 75 ->, 76 thick, 77 shorten <=2pt, 78 shorten >=2pt,} 79 } 80 81 82 %\usepackage{tikz, xcolor} 83 %\usetikzlibrary{shapes,arrows} 84 85 86 \tikzstyle{decision} = [diamond, draw, text width=4.5em, 87 text badly centered, node distance=2cm, 88 inner sep=0pt] 89 \tikzstyle{block} = [rectangle, draw, text width=5em, 90 text centered, rounded corners, 91 minimum height=4em, node distance=3cm] 92 \tikzstyle{line} = [draw, -latex'] 93 \tikzstyle{lineeee} = [draw] 94 \tikzstyle{cloud} = [draw, ellipse, node distance=2.5cm, minimum height=2em] 95 \tikzstyle{walet} = [draw, rectangle, node distance=0.2cm, minimum height=2em] 96 \tikzstyle{reseau} = [node distance=0.2cm, minimum height=2em] 97 \tikzstyle{blank} = [node distance=1cm] 98 99 \usetikzlibrary{shapes,arrows} 100 \usetikzlibrary{positioning} 101 \usetikzlibrary{calc} 102 103 104 105 106 107 \begin{document} 108 109 \begin{frame}{GNU Taler} 110 \vfill 111 \begin{center} 112 {\huge {L'argent \textbf{numérique} et \textbf{socialement responsable}.}} 113 \end{center} 114 \vfill 115 \begin{center} 116 \includegraphics[width=0.5\textwidth]{images/taler-logo-2021-inkscape.pdf} 117 \end{center} 118 \vfill 119 \begin{center} 120 Privacy preserving, useful, taxable, Free/Libre Software, Efficient 121 \end{center} 122 \vfill 123 \vfill 124 \ % 125 \end{frame} 126 127 128 \frame{\maketitle 129 } 130 131 132 \begin{frame} 133 \frametitle{GNU - Taler} 134 \tableofcontents 135 136 \end{frame} 137 138 \section{GNU Taler principles} 139 140 141 \begin{frame} 142 \frametitle{Taler Overview} 143 \begin{center} 144 \begin{tikzpicture} 145 \tikzstyle{def} = [node distance= 4.5em and 5.5em, inner sep=0.8em, outer sep=.3em]; 146 \node (origin) at (0,0) {}; 147 \node (exchange) [def,above=of origin,draw]{Exchange}; 148 \node (customer) [def, draw, below left=of origin] {Customer}; 149 \node (merchant) [def, draw, below right=of origin] {Merchant}; 150 \node (auditor) [def, draw, above right=of origin]{Auditor}; 151 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 152 153 \tikzstyle{C} = [color=black, line width=1pt] 154 155 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 156 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 157 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 158 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 159 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 160 161 \end{tikzpicture} 162 \end{center} 163 \end{frame} 164 165 166 \begin{frame} 167 \frametitle{Principle : Planchet generation} 168 \begin{columns}[t] 169 \begin{column}{0.4\textwidth} 170 \begin{block}{Alice withdraws e-cash to her wallet} 171 \begin{itemize} 172 \item The wallet generates a planchet (private / public key pair) 173 \item Planchet is blinded (using a random number) 174 \end{itemize} 175 \end{block} 176 \end{column} 177 \begin{column}{0.4\textwidth} 178 \begin{tikzpicture} 179 [baseline=(b.base)] 180 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 181 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{images/dice.pdf}}; 182 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 183 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{images/blinded.pdf}}; 184 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{images/planchet.pdf}}; 185 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 186 \tikzstyle{C} = [color=black, line width=1pt] 187 188 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 189 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 190 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 191 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 192 \end{tikzpicture} 193 194 \end{column} 195 \end{columns} 196 \end{frame} 197 198 \begin{frame} 199 \frametitle{Principle : Signature of the coin} 200 \begin{columns}[t] 201 \begin{column}{0.4\textwidth} 202 \begin{block}{Exchange signs the anonymized planchet} 203 \begin{itemize} 204 \item It generates a valid coin 205 \item But the exchange can not see the real coin. 206 \end{itemize} 207 \end{block} 208 \end{column} 209 \begin{column}{0.4\textwidth} 210 \begin{tikzpicture} 211 [baseline=(b.base)] 212 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 213 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{images/hammer.pdf}}; 214 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{images/sign.pdf}}; 215 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{images/blinded.pdf}}; 216 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 217 \tikzstyle{C} = [color=black, line width=1pt] 218 219 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 220 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 221 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 222 \end{tikzpicture} 223 \end{column} 224 \end{columns} 225 226 \end{frame} 227 228 \begin{frame} 229 \frametitle{Principle : Unblind the coin} 230 \begin{columns}[t] 231 \begin{column}{0.4\textwidth} 232 \begin{block}{Alice unblinds the coin} 233 \begin{itemize} 234 \item She becomes a valid coin that is untraceable. 235 \item The coin is signed by the exchange, but the exchange does not know which coin it is. 236 \end{itemize} 237 \end{block} 238 \end{column} 239 \begin{column}{0.4\textwidth} 240 \begin{tikzpicture} 241 [baseline=(b.base)] 242 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 243 \node (b) [def, draw=none] at (0,0) {$b$}; 244 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{images/coin.pdf}}; 245 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{images/sign.pdf}}; 246 \tikzstyle{C} = [color=black, line width=1pt] 247 248 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 249 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 250 \end{tikzpicture} 251 \end{column} 252 \end{columns} 253 \end{frame} 254 255 256 \begin{frame} 257 \frametitle{Blind Signature implementations} 258 \begin{block}{RSA} 259 \begin{itemize} 260 \item Chaum e-cash 261 \end{itemize} 262 \end{block} 263 \begin{block}{Eliptic curves} 264 \begin{itemize} 265 \item Clause Schnorr 266 \item Shorter 267 \end{itemize} 268 \end{block} 269 \begin{block}{Post quantic cryptography} 270 \begin{itemize} 271 \item New protocol designed in NGI-Taler 272 \item Implementation : work in progress 273 \end{itemize} 274 \end{block} 275 276 \end{frame} 277 278 \section{Taler in Switzerland} 279 \begin{frame} 280 \frametitle{Use Taler in Switzerland} 281 \begin{block}{Exchange = Taler Operations SA} 282 \begin{itemize} 283 \item {Operates since 2025 in Switzerland} 284 \item Any person with a Swiss phone number and bank account can have a wallet. 285 \item Any swiss account owner can be a merchant 286 \end{itemize} 287 \end{block} 288 \begin{block}{Limitations} 289 \begin{itemize} 290 \item Withdraw limited to CHF 2'500 / month or 15'000 / year for normal users (KYC necessary above a limit) 291 \item Payments to merchants unlimited (KYB necessary above a limit) 292 \end{itemize} 293 \end{block} 294 \end{frame} 295 296 \subsection{Install Taler Wallet} 297 \begin{frame} 298 \frametitle{Install the Wallet} 299 \begin{columns} 300 \begin{column}{0.35\textwidth} 301 \begin{block}{Google Play Store} 302 \end{block} 303 \begin{center} 304 \includegraphics[width=0.5\textwidth]{./images/google_play_GNU_Taler.jpg} 305 \end{center} 306 \end{column} 307 \begin{column}{0.35\textwidth} 308 \begin{block}{Apple Store} 309 \end{block} 310 \begin{center} 311 \includegraphics[width=0.5\textwidth]{./images/Apple-Store-taler-app.png} 312 \end{center} 313 \end{column} 314 \begin{column}{0.35\textwidth} 315 \begin{block}{F-Droid} 316 \end{block} 317 \begin{center} 318 \includegraphics[width=0.5\textwidth]{./images/QR-Code-f-droid.png} 319 \end{center} 320 321 \end{column} 322 323 \end{columns} 324 \end{frame} 325 326 327 328 \subsection{Pay with Taler} 329 \begin{frame} 330 \frametitle{Pay with Taler I} 331 \begin{columns} 332 \begin{column}{0.4\textwidth} 333 \begin{block}{Withdraw e-cash} 334 \begin{itemize} 335 \item Withdraw in the app 336 \item Transfer money to the Exchange 337 \item Wait until the transfer is finalized 338 \end{itemize} 339 \end{block} 340 341 \end{column} 342 \begin{column}{0.5\textwidth} 343 \begin{center} 344 \includegraphics[width=0.4\textwidth]{./images/screenShot-withdraw.jpeg} 345 \end{center} 346 \end{column} 347 348 \end{columns} 349 350 \end{frame} 351 352 \begin{frame} 353 \frametitle{Pay with Taler II} 354 \begin{columns} 355 \begin{column}{0.4\textwidth} 356 \begin{block}{Scan the QR code presented by the merchand} 357 \begin{itemize} 358 \item Validate the payment in the app 359 \item DONE 360 \end{itemize} 361 \end{block} 362 363 \end{column} 364 \begin{column}{0.5\textwidth} 365 \begin{center} 366 \includegraphics[width=0.4\textwidth]{./images/taler-snack-automat.jpg} 367 \end{center} 368 \end{column} 369 370 \end{columns} 371 372 \end{frame} 373 374 375 \begin{frame} 376 \frametitle{Where can you pay?} 377 \begin{columns} 378 \begin{column}{0.4\textwidth} 379 \begin{block}{Map of the merchants accepting Taler} 380 \begin{itemize} 381 \item \url{https://taler-ops.ch/en/map.html} 382 \end{itemize} 383 \end{block} 384 \end{column} 385 \begin{column}{0.5\textwidth} 386 387 \includegraphics[width=1.1\textwidth]{./images/screenshot-map-taler-ops-ch.png} 388 \end{column} 389 390 \end{columns} 391 392 \end{frame} 393 394 395 \subsection{Merchant Backend} 396 \begin{frame} 397 \frametitle{Merchant Backend} 398 399 \begin{block}{Directly installed on-site by interested merchants} 400 \begin{itemize} 401 \item Control 100\% of everything 402 \item available as source 403 \item available as binary for Linux, Windows and OSX. 404 \end{itemize} 405 \end{block} 406 407 \begin{block}{For small merchants} 408 \begin{itemize} 409 \item One central server 410 \item Each user has an account 411 \item Can see all the transactions 412 \end{itemize} 413 \end{block} 414 415 \end{frame} 416 417 \section{Demo} 418 419 \begin{frame}{Demonstration: Merchant Backend} 420 421 \begin{block}{Merchant creates an account} 422 \begin{itemize} 423 \item \url{https://my.taler-ops.ch} 424 \item Must accept terms of service. 425 \item Must generate a mini transaction from a CH account (for KYC procedure). 426 \end{itemize} 427 \end{block} 428 \begin{block}{Merchants can manage their inventar} 429 \begin{itemize} 430 \item Create items in the inventory 431 \item Create orders selling items 432 \item Create templates (to sell without dealing with inventory) 433 \end{itemize} 434 \end{block} 435 \end{frame} 436 437 \begin{frame}{Demonstration: Test Playground} 438 \begin{block}{Play with demo money} 439 \begin{itemize} 440 \item In the wallet, you can get ``demo money'' (KUDOS) 441 \item Get and send money (peer to peer) to your neighbour(s). 442 \item Create a merchant account on \url{https://my.demo.taler.net} 443 \item Buy / Sell / Transfer money as you want 444 \item To get your money back to a bank, generate a bank account at: \url{https://bank.demo.taler.net} 445 \end{itemize} 446 \end{block} 447 \end{frame} 448 449 450 \section{Deploymerizer} 451 452 \begin{frame}{Depolymerizer}{Taler for paying in BTC or ETH} 453 % \begin{tikzpicture}[remember picture,overlay] 454 % \node (N1)[above right=22mm and 56mm of current page.center] {\includegraphics[width=18mm]{./images/google_play_GNU_Taler.jpg}}; 455 % \node [below=-2mm of N1]{wallet.taler.net}; 456 % \end{tikzpicture} 457 \begin{center} 458 \begin{tikzpicture}[ 459 rect/.style={rectangle, draw=black, minimum width=30mm}, 460 sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt}, 461 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, 462 ] 463 464 %% Architecture 465 \node(Tt){Taler}; 466 \node[rect,below=0cm of Tt](Tc){Exchange}; 467 \node[rect,fit={(Tt) (Tc)}](T){}; 468 469 \node[rect,below=7mm of Tc](D) {\textbf{Depolymerizer}}; 470 471 \node[rect,below=7mm of D](Bc){Node}; 472 \node[below=0cm of Bc](Bt){Blockchain}; 473 \node[rect,fit={(Bt) (Bc)}](B){}; 474 475 \draw[sym] (T) -- (D); 476 \draw[sym] (D) -- (B); 477 478 %% Blockchain 479 \node[block,right=8mm of B] (1){}; 480 \node[block,right=4mm of 1] (2){}; 481 \node[block,right=4mm of 2] (3){}; 482 \node[block,right=4mm of 3] (4){}; 483 \node[block,right=4mm of 4] (5){}; 484 \node[block,right=4mm of 5] (6){}; 485 \draw[-stealth] (1) -- (2); 486 \draw[-stealth] (2) -- (3); 487 \draw[-stealth] (3) -- (4); 488 \draw[-stealth] (4) -- (5); 489 \draw[-stealth] (5) -- (6); 490 491 \node[left=4mm of 1] (S){}; 492 \node[right=4mm of 6] (E){}; 493 \draw[-stealth] (S) -- (1); 494 \draw[-stealth] (6) -- (E); 495 496 %% Taler 497 \node[block, below right=-7.5mm and 20.5mm of T] (off){Off-chain transactions}; 498 \node[above=-0.5mm of off] {\includegraphics[height=7mm]{./images/taler.png}}; 499 500 %% Depolymerization 501 \node[right=12mm of D] {\small{Credit}}; 502 \node[right=55mm of D] {\small{Debit}}; 503 \draw[dashed,-stealth] (1.north) |- (off.west); 504 \draw[dashed,-stealth] (off.east) -| (6.north); 505 506 %% Separation 507 \draw[dotted] (-2.1,-1.3) -- (9,-1.3); 508 \draw[dotted] (-2.1,-2.5) -- (9,-2.5); 509 \end{tikzpicture} 510 \end{center} 511 \end{frame} 512 513 \begin{frame} 514 \frametitle{Overview of the Depolymerizer} 515 \begin{center} 516 \includegraphics[width=8.5cm]{images/triangle-taler-en.pdf} 517 % \begin{tikzpicture} 518 % \tikzstyle{def} = [node distance= 4.5em and 6em, inner sep=1em, outer sep=.3em]; 519 % \node (origin) at (0,0) {}; 520 % \node (exchange) [def,above=of origin,draw]{Service d'échange}; 521 % \node (customer) [def, draw, below left=of origin] {Portefeuille}; 522 % \node (merchant) [def, draw, below right=of origin] {Backend commerçant}; 523 % % \node (auditor) [def, draw, above right=of origin]{Auditor}; 524 % \tikzstyle{C} = [color=black, line width=1pt] 525 % \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] 526 % (TextNode) {retire des jetons}; 527 % \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] 528 % (TextNode) {dépose les jetons}; 529 % \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] 530 % (TextNode) {dépense les jetons}; 531 % % \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 532 % \end{tikzpicture} 533 \end{center} 534 \end{frame} 535 536 \begin{frame}{Difference Depolymerizer / Lightening} 537 538 \begin{block}{Main difference: Centralized / Decentralized} 539 \begin{itemize} 540 \item One deploymerizer 541 \item Many lightening networks 542 \end{itemize} 543 \end{block} 544 \begin{block}{Anonymity} 545 \begin{itemize} 546 \item Full anonymity of the payer, 547 \item no anonymity of the payee. 548 \item Goal : no money laundering, no crime financing, no tax evasion. 549 \end{itemize} 550 \end{block} 551 \end{frame} 552 553 \section{Q \& A} 554 555 \begin{frame} 556 \frametitle{Questions ?} 557 \begin{columns} 558 \begin{column}{0.3\textwidth} 559 \begin{center} 560 \includegraphics[width=0.9\textwidth]{./images/3d-question-mark} 561 \end{center} 562 \end{column} 563 \begin{column}{0.65\textwidth} 564 565 566 \begin{block}{Contacts} 567 \begin{itemize} 568 \item \url{https://www.taler.net} 569 \item emmanuel.benoist@bfh.ch 570 \item christian.grothoff@bfh.ch 571 \end{itemize} 572 \end{block} 573 \end{column} 574 \end{columns} 575 \end{frame} 576 577 578 \begin{frame}{Acknowledgements} 579 580 \begin{minipage}{0.45\textwidth} \ \\ 581 {\tiny Funded by the European Union (Project 101135475).} 582 583 \begin{center} 584 \includegraphics[width=0.5\textwidth]{./images/bandera.jpg} 585 \end{center} 586 \end{minipage} 587 \hfill 588 \begin{minipage}{0.45\textwidth} 589 {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).} 590 591 \begin{center} 592 \includegraphics[width=0.65\textwidth]{./images/sbfi.jpg} 593 \end{center} 594 \end{minipage} 595 596 \vfill 597 598 {\tiny Views and opinions expressed are however those of the author(s) only 599 and do not necessarily reflect those of the European Union. Neither the 600 European Union nor the granting authority can be held responsible for 601 them.} 602 \end{frame} 603 604 605 606 607 \end{document} 608 \begin{frame} 609 \frametitle{Example} 610 \begin{columns} 611 \begin{column}{0.47\textwidth} 612 \begin{center} 613 \includegraphics[width=0.8\textwidth]{./images/3d-question-mark.jpg} 614 615 \end{center} 616 \end{column} 617 \begin{column}{0.47\textwidth} 618 619 \begin{block}{Title for block} 620 \begin{itemize} 621 \item Item number 1 622 \end{itemize} 623 \end{block} 624 \end{column} 625 \end{columns} 626 \end{frame} 627 628 629