marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

commit c92cd5e16c1de5ffe254568241822605b3b65017
parent 5c5e76426281ebbf3ee7c6c4d51586d207bdeae8
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Sat,  1 Jun 2024 21:34:49 +0200

workshop draft

Diffstat:
Mpresentations/comprehensive/moztw-ecommerce.tex | 384+++++--------------------------------------------------------------------------
Aworkshops/bandera.jpg | 0
Aworkshops/logo-NGI_TALER.ai | 168+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aworkshops/logo-NGI_TALER_Bold.png | 0
Aworkshops/logo-NGI_TALER_Bold.svg | 135+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aworkshops/merchant.tex | 267+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aworkshops/operations.png | 0
Aworkshops/sbfi.jpg | 0
Aworkshops/taler-macros.tex | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 694 insertions(+), 364 deletions(-)

diff --git a/presentations/comprehensive/moztw-ecommerce.tex b/presentations/comprehensive/moztw-ecommerce.tex @@ -7,7 +7,6 @@ \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} @@ -204,8 +203,24 @@ \title{GNU Taler} %\subtitle{} -\setbeamertemplate{navigation symbols}{ \includegraphics[width=0.4cm]{logo-esen.pdf} \includegraphics[width=1cm]{logo-GlsBank.pdf} \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} -%\setbeamercovered{transparent=1} +\setbeamertemplate{navigation symbols}{ + \includegraphics[width=0.4cm]{logo-bfh.pdf} + \includegraphics[width=1.6cm]{fub.pdf} + \includegraphics[width=1cm]{tud-logo.pdf} + \includegraphics[width=1.4cm]{logo-tue.pdf} + \includegraphics[width=1cm]{inria.pdf} + \includegraphics[width=1cm]{logo-GlsBank.pdf} + \includegraphics[width=0.6cm]{logo-MagNetBank.pdf} \ + \includegraphics[width=0.6cm]{logo-visualvest.pdf} + \includegraphics[width=0.4cm]{ashoka.png} + \includegraphics[width=0.4cm]{logo-esen.pdf} + \includegraphics[width=0.4cm]{gnu.png} + \includegraphics[width=0.4cm]{logo-HomoDigitalis.pdf} + \includegraphics[width=0.4cm]{logo-nlnet.pdf} + \includegraphics[width=0.4cm]{logo-codeblau.pdf} + \includegraphics[width=0.4cm]{logo-ps.pdf} + \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf} + \hfill} \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci} \date{\today} @@ -236,218 +251,12 @@ % Substitute based on who is giving the talk! \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords) - {\hfill {\bf Christian Grothoff}} \\ + {\hfill {\bf Christian Grothoff} \\ \hfill grothoff@taler.net } \end{textblock*} \end{frame} - -\begin{frame}{Agenda} - \tableofcontents -\end{frame} - -\section{Motivation \& Background} - - -\begin{frame}{Surveilance concerns} -\begin{itemize} -\item Everybody knows about Internet surveilance. -\item But is it {\bf that} bad?\pause - \begin{itemize} - \item You can choose when and where to use the Internet - \item You can anonymously access the Web using Tor - \item You can find open access points that do not require authentication - \item IP packets do not include your precise location or name - \item ISPs typically store this meta data for days, weeks or months - \end{itemize} -\end{itemize} -\end{frame} - - -\begin{frame}{What is worse:} - \begin{itemize} - \item When you pay by CC, the information includes your name - \item When you pay in person with CC, your location is also known - \item You often have no alternative payment methods available - \item You hardly ever can use someone else's CC - \item Anonymous prepaid cards are difficult to get and expensive - \item Payment information is typically stored for at least 6 years - \end{itemize} -\end{frame} - - -\begin{frame}{Banks have Problems, too!} - - 3D secure (``verified by visa'') is a nightmare: - - \begin{minipage}{5cm} - \begin{itemize} - \item Complicated process - \item Shifts liability to consumer - \item Significant latency - \item Can refuse valid requests - \item Legal vendors excluded - \item No privacy for buyers - \end{itemize} - \end{minipage} - \begin{minipage}{5cm} - \includegraphics[width=\textwidth]{illustrations/cc3ds.pdf} - \end{minipage} - \vfill - Online credit card payments will be replaced, but with what? -\end{frame} - - -\begin{frame}{The Bank's Problem} -\vfill - \begin{textblock*}{12cm}(0.5cm,1cm) % {block width} (coords) - \begin{itemize} - \item Global tech companies push oligopolies - \item Privacy and federated finance are at risk -% \item 30\% fees are conceivable - \item Economic sovereignty is in danger - \end{itemize} -\end{textblock*} -\begin{textblock*}{4cm}(3.5cm,5.2cm) % {block width} (coords) - {\includegraphics[width=\textwidth]{../investors/competitor-logos/amazon.png}} -\end{textblock*} -\begin{textblock*}{2cm}(7cm,3cm) % {block width} (coords) - {\includegraphics[width=\textwidth]{../investors/competitor-logos/alipay.jpeg}} -\end{textblock*} -\begin{textblock*}{2cm}(3cm,3.5cm) % {block width} (coords) - {\includegraphics[width=\textwidth]{../investors/competitor-logos/paypal.jpeg}} -\end{textblock*} -\begin{textblock*}{2cm}(9cm,5cm) % {block width} (coords) - {\includegraphics[width=\textwidth]{../investors/competitor-logos/applepay.jpeg}} -\end{textblock*} -\begin{textblock*}{2cm}(7.5cm,5.9cm) % {block width} (coords) - {\includegraphics[width=\textwidth]{../investors/competitor-logos/samsungpay.jpeg}} -\end{textblock*} -\begin{textblock*}{1cm}(9.5cm,6.3cm) % {block width} (coords) - {\includegraphics[width=\textwidth]{../investors/competitor-logos/android_pay.png}} -\end{textblock*} -\vfill -\end{frame} - - -\begin{frame}{Predicting the Future} - \begin{itemize} - \item Google and Apple will be your bank and run your payment system - \item They can target advertising based on your purchase history, location and - your ability to pay - \item They will provide more usable, faster and broadly available - payment solutions; our federated banking system will be history -% just like SMTP is now Gmail. - \item After they dominate the payment sector, they will start to charge fees - befitting their oligopoly size - \item Competitors and vendors not aligning with their corporate ``values'' - will be excluded by policy and go bankrupt - \item The imperium will have another major tool for its financial warfare - \end{itemize} -\end{frame} - - -\begin{frame}{The Distraction: Bitcoin} - -\begin{itemize} -\item Unregulated payment system and currency: -\item[] $\Rightarrow$ lack of regulation is a feature! -\item Implemented in free software -\item Decentralised peer-to-peer system \pause -\item Decentralised banking requires solving Byzantine consensus -\item Creative solution: tie initial accumulation to solving consensus \pause -\item[] $\Rightarrow$ Proof-of-work advances ledger -\item[] $\Rightarrow$ Very expensive banking -\end{itemize} -\end{frame} - - -\begin{frame} - \frametitle{\includegraphics[height=0.5cm]{pics/bitcoin.png}?} - \framesubtitle{Background: \url{https://blockchain.com/charts/}} - \centering -\noindent -\includegraphics[width=\textwidth]{pics/btc-transaction-cost.png} - -Current average transaction value: $\approx$ 1000 USD -\end{frame} - - -\begin{frame} - \frametitle{\includegraphics[height=0.5cm]{pics/zerocoin.png}?} - -Cryptography is rather primitive: -\begin{center} - {\bf All Bitcoin transactions are public and linkable!} -\end{center} - -\begin{itemize} -\item[] $\Rightarrow$ no privacy guarantees -\item[] $\Rightarrow$ enhanced with ``laundering'' services -\end{itemize} -ZeroCoin, CryptoNote (Monero) and ZeroCash (ZCash) offer anonymity. -\end{frame} - - -\begin{frame} - \vfill -\begin{center} -{\bf Do you want to have a libertarian economy?} -\end{center} - \vfill -\begin{center} -{\bf Do you want to live under total surveillance?} -\end{center} -\vfill -\end{frame} - - -\begin{frame}{The Emergency Act of Canada\footnote{Speech by Premier Kenney, Alberta, February 2022}} - \begin{center} - \movie[%scale=0.6, - autostart, - poster] - { - \includegraphics[height=0.6\textwidth,width=0.8\textwidth]{ca.png} - } - {emergencyact.mp4} - - {\tiny \url{https://www.youtube.com/watch?v=NehMAj492SA} (2'2022)} - \end{center} -\end{frame} - - -\section{GNU Taler: Introduction} - -\begin{frame} - \vfill - \begin{center} - {\bf GNU Taler: Introduction} - \end{center} - \vfill -\end{frame} - - -\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 @@ -491,33 +300,6 @@ GNU Taler must ... \begin{frame} -\frametitle{Taler Overview} -\begin{center} -\begin{tikzpicture} - \tikzstyle{def} = [node distance= 5em and 6.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, 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} - % TODO: replace with simplified NEW architecture picture! \frametitle{Architecture of Taler} \begin{center} \includegraphics[width=1\textwidth]{operations.png} @@ -525,29 +307,6 @@ GNU Taler must ... \end{frame} -\begin{frame}{Consumer Impact of Taler} -\begin{itemize} -\item {\bf Convenient:} pay with one click instantly --– in Euro, -Dollar, Yen or Bitcoin -\item {\bf Friction-free security:} Payments do not require sign-up, -login or multi-factor authentication -\item {\bf Privacy-preserving:} payment requires/shares no personal information -\item {\bf Bank account:} not required -\end{itemize} -\end{frame} - - -\begin{frame}{Merchant Impact of Taler} -\begin{itemize} -\item {\bf Instant clearance:} one-click transactions and instant clearance at par -\item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort -\item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs -\item {\bf 1-click checkout:} without Amazon and without false -positives in fraud detection -\end{itemize} -\end{frame} - - \begin{frame}{Usability of Taler} \vfill \begin{center} @@ -562,45 +321,6 @@ positives in fraud detection \end{frame} -\begin{frame}[c]{Example: The Taler Snack Machine\footnote{by M. Boss and D. Hofer}} - \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.} - \vfill - \begin{figure} - \centering - \includegraphics[width=1.0\textwidth]{design} - \end{figure} -\end{frame} - - -\begin{frame}[t]{Software architecture for the Taler Snack Machine} - \framesubtitle{Code at \url{https://git.taler.net/taler-mdb}} -\begin{figure} - \centering - \includegraphics[width=.9\textwidth]{software_stack} - \end{figure} -\end{frame} - - -\begin{frame}[c]{User story: Install App on Android} -\framesubtitle{\url{https://wallet.taler.net/}} - \begin{figure} - \includegraphics[width=0.9\textwidth]{download_wallet.png} - \end{figure} -\end{frame} - -\begin{frame}{User story: Withdraw e-cash} - \begin{figure} - \includegraphics[width=0.9\textwidth]{get_taler_coins.png} - \end{figure} -\end{frame} - -\begin{frame}{User story: Use machine!} - \begin{figure} - \includegraphics[width=0.9\textwidth]{get_snacks.png} - \end{figure} -\end{frame} - - \begin{frame}{Real-world use} \vfill \begin{center} @@ -642,37 +362,6 @@ positives in fraud detection \end{frame} -\begin{frame}{Merchant Integration: Contract} - % \begin{figure*}[t!] - {\tiny - \lstset{language=JavaScript} - \lstinputlisting{figs/taler-contract.json} -% \caption{Minimal Taler contract over a digital article with a value of \EUR{0.10}. The merchant will pay transaction fees up to \EUR{0.01}. The hash over the wire transfer information was truncated to make it fit to the page.} -% \label{listing:json-contract} - % \end{figure*} - } -\end{frame} - - -\begin{frame}{Merchant Integration: Payment Request} -% \begin{figure}[p!] - \lstset{language=HTML5} - \lstinputlisting{figs/taler-402.html} -% \caption{Sample HTTP response to prompt the wallet to show an offer.} -% \label{listing:http-contract} -% \end{figure} - -% \begin{figure*}[p!] -% \lstset{language=HTML5} -% \lstinputlisting{figs/taler-contract.html} -% \caption{Sample JavaScript code to prompt the wallet to show an offer. -% Here, the contract is fetched on-demand from the server. -% The {\tt taler\_pay()} function needs to be invoked -% when the user triggers the checkout.} -% \label{listing:contract} -% \end{figure*} -\end{frame} - \begin{frame}{Payment processing with Taler} \begin{center} @@ -692,40 +381,7 @@ positives in fraud detection \end{frame} -\begin{frame}{Requirements: Online vs. Offline Digital Currencies} -\framesubtitle{\url{https://taler.net/papers/euro-bearer-online-2021.pdf}} -\begin{itemize} - \item Offline capabilities are sometimes cited as a requirement for digital payment solutions - \item All implementations must either use restrictive hardware elements and/or introduce - counterparty risk. - \item[$\Rightarrow$] Permanent offline features weaken a digital payment solution (privacy, security) - \item[$\Rightarrow$] Introduces unwarranted competition for physical cash (endangers emergency-preparedness). - \end{itemize} - We recommend a tiered approach: - \begin{enumerate} - \item Online-first, bearer-based digital currency with Taler - \item (Optional:) Limited offline mode for network outages - \item Physical cash for emergencies (power outage, catastrophic cyber incidents) - \end{enumerate} -\end{frame} - - -\begin{frame}{Fully Offline Payments {\bf (WiP)}} -\framesubtitle{\url{https://docs.taler.net/design-documents/030-offline-payments.html}} -Many central banks today demand offline capabilities for digital payment solutions. -\vfill -\noindent -Three possible approaches: -\begin{enumerate} - \item Trust-based offline payments (has counterparty and/or privacy risks) - \item Full HSM Taler wallet (has hardware costs) - \item Light-weight HSM balance register -\end{enumerate} -\vfill -\end{frame} - - -\begin{frame}{Partially Offline Payments with GNU Taler\footnote{Joint work with Emmanuel Benoist, Priscilla Huang and Sebastian Marchano}} +\begin{frame}{Partially Offline Payments with GNU Taler} \begin{center} \resizebox{8cm}{7cm}{ diff --git a/workshops/bandera.jpg b/workshops/bandera.jpg Binary files differ. diff --git a/workshops/logo-NGI_TALER.ai b/workshops/logo-NGI_TALER.ai @@ -0,0 +1,168 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + version="1.1" + id="svg2137" + width="553.96533" + height="170.64532" + viewBox="0 0 553.96533 170.64532" + sodipodi:docname="logo_NGI_TALER.ai" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs2141"> + <linearGradient + inkscape:collect="always" + id="linearGradient4636"> + <stop + style="stop-color:#0042b3;stop-opacity:1;" + offset="0" + id="stop4632" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="1" + id="stop4634" /> + </linearGradient> + <linearGradient + x1="0" + y1="0" + x2="1" + y2="0" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-139.45511,-135.52185,-135.52185,139.45511,177.4727,131.75308)" + spreadMethod="pad" + id="linearGradient2163"> + <stop + style="stop-opacity:1;stop-color:#00afbc" + offset="0" + id="stop2159" /> + <stop + style="stop-opacity:1;stop-color:#205374" + offset="1" + id="stop2161" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath2173"> + <path + d="M 0,127.984 H 415.474 V 0 H 0 Z" + id="path2171" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4636" + id="linearGradient4654" + x1="14.72319" + y1="14.33813" + x2="213.9493" + y2="113.96497" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="namedview2139" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="2.6373491" + inkscape:cx="250.63045" + inkscape:cy="85.312938" + inkscape:window-width="1920" + inkscape:window-height="1015" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="g2145"> + <inkscape:page + x="0" + y="0" + id="page2143" + width="553.96533" + height="170.64532" + inkscape:export-filename="logo-NGI_TALER_Bold_.svg" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" /> + </sodipodi:namedview> + <g + id="g2145" + inkscape:groupmode="layer" + inkscape:label="Page 1" + transform="matrix(1.3333333,0,0,-1.3333333,0,170.64533)"> + <g + id="g2147" + style="mix-blend-mode:difference;fill:url(#linearGradient4654);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <g + id="g2149" + style="fill:url(#linearGradient4654);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <g + id="g2155" + style="fill:url(#linearGradient4654);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <g + id="g2157" + style="fill:url(#linearGradient4654);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <path + d="m 25.228,113.805 c -6.079,0 -11.051,-4.973 -11.051,-11.051 v 0 -77.523 c 0,-6.079 4.972,-11.051 11.051,-11.051 v 0 h 165.035 c 6.078,0 11.051,4.973 11.051,11.051 v 0 18.26 c 0,2.022 0.803,3.962 2.234,5.393 v 0 l 9.096,9.096 c 2.54,2.539 2.533,6.657 -0.013,9.188 v 0 l -9.067,9.017 c -1.44,1.431 -2.25,3.379 -2.25,5.409 v 0 21.16 c 0,6.078 -4.973,11.051 -11.051,11.051 v 0 z" + style="fill:url(#linearGradient4654);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none" + id="path2165" /> + </g> + </g> + </g> + </g> + <g + id="g2167"> + <g + id="g2169" + clip-path="url(#clipPath2173)"> + <g + id="g2175" + transform="translate(175.9982,95.8645)"> + <path + d="m 0,0 v 0 c 4.074,0 7.376,-3.302 7.376,-7.376 v -48.993 c 0,-4.074 -3.302,-7.376 -7.376,-7.376 -4.074,0 -7.376,3.302 -7.376,7.376 V -7.376 C -7.376,-3.302 -4.074,0 0,0" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2177" /> + </g> + <g + id="g2179" + transform="translate(152.1193,64.9934)"> + <path + d="M 0,0 H -0.506 C -0.57,0 -0.633,-0.008 -0.698,-0.01 -0.762,-0.008 -0.825,0 -0.89,0 h -7.283 c -3.929,0 -7.359,-2.965 -7.613,-6.885 -0.278,-4.296 3.124,-7.867 7.361,-7.867 0.776,0 1.343,-0.754 1.111,-1.494 -0.658,-2.088 -2.341,-3.751 -4.547,-4.333 -2.074,-0.547 -4.276,-0.821 -6.605,-0.821 -4.007,0 -7.574,0.865 -10.7,2.595 -3.127,1.73 -5.57,4.144 -7.331,7.24 -1.761,3.096 -2.641,6.617 -2.641,10.564 0,4.006 0.88,7.558 2.641,10.654 1.761,3.097 4.219,5.493 7.377,7.195 3.156,1.698 6.768,2.549 10.836,2.549 4.681,0 8.865,-1.269 12.55,-3.807 2.341,-1.612 5.524,-1.588 7.757,0.171 3.48,2.741 3.289,8.045 -0.315,10.452 -1.7,1.136 -3.538,2.112 -5.512,2.928 -4.553,1.881 -9.623,2.823 -15.208,2.823 -6.679,0 -12.69,-1.412 -18.03,-4.235 -5.344,-2.822 -9.517,-6.738 -12.522,-11.747 -3.005,-5.008 -4.508,-10.67 -4.508,-16.983 0,-6.315 1.503,-11.975 4.508,-16.984 3.005,-5.009 7.148,-8.924 12.43,-11.747 5.282,-2.824 11.231,-4.235 17.849,-4.235 4.613,0 9.197,0.699 13.751,2.095 0.045,0.014 0.091,0.028 0.136,0.042 7.104,2.202 11.884,8.86 11.884,16.297 v 9.047 C 6.486,-2.904 3.583,0 0,0" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2181" /> + </g> + <g + id="g2183" + transform="translate(90.5807,88.5798)"> + <path + d="m 0,0 v -49.176 c 0,-4.023 -3.262,-7.285 -7.286,-7.285 h -1.381 c -2.181,0 -4.247,0.977 -5.631,2.662 l -24.229,29.505 c -1.804,2.197 -5.368,0.921 -5.368,-1.922 v -22.96 c 0,-4.023 -3.261,-7.285 -7.285,-7.285 -4.023,0 -7.285,3.262 -7.285,7.285 V 0 c 0,4.024 3.262,7.285 7.285,7.285 h 1.468 c 2.184,0 4.253,-0.979 5.636,-2.669 l 24.135,-29.475 c 1.802,-2.202 5.37,-0.927 5.37,1.918 V 0 c 0,4.024 3.261,7.285 7.285,7.285 C -3.262,7.285 0,4.024 0,0" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2185" /> + </g> + </g> + </g> + <text + xml:space="preserve" + transform="scale(1,-1)" + style="font-variant:normal;font-weight:600;font-stretch:normal;font-size:31.76px;font-family:'Montserrat SemiBold';-inkscape-font-specification:Montserrat-SemiBold;writing-mode:lr-tb;fill:#6f9aa8;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="text2191" + x="237.90379" + y="-51.030296"><tspan + x="237.90379" + sodipodi:role="line" + id="tspan2187" + y="-51.030296" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.76px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">T A L E R</tspan><tspan + x="237.90379" + y="-11.330296" + sodipodi:role="line" + id="tspan2189" /></text> + </g> +</svg> diff --git a/workshops/logo-NGI_TALER_Bold.png b/workshops/logo-NGI_TALER_Bold.png Binary files differ. diff --git a/workshops/logo-NGI_TALER_Bold.svg b/workshops/logo-NGI_TALER_Bold.svg @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + version="1.1" + id="svg2137" + width="553.96533" + height="170.64532" + viewBox="0 0 553.96533 170.64532" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs2141"> + <linearGradient + id="linearGradient4636"> + <stop + style="stop-color:#0042b3;stop-opacity:1;" + offset="0" + id="stop4632" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="1" + id="stop4634" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath2173"> + <path + d="M 0,127.984 H 415.474 V 0 H 0 Z" + id="path2171" /> + </clipPath> + <linearGradient + xlink:href="#linearGradient4636" + id="linearGradient4654" + x1="14.72319" + y1="14.33813" + x2="213.9493" + y2="113.96497" + gradientUnits="userSpaceOnUse" /> + <linearGradient + xlink:href="#linearGradient4636" + id="linearGradient491" + gradientUnits="userSpaceOnUse" + x1="14.72319" + y1="14.33813" + x2="213.9493" + y2="113.96497" /> + <linearGradient + xlink:href="#linearGradient4636" + id="linearGradient493" + gradientUnits="userSpaceOnUse" + x1="14.72319" + y1="14.33813" + x2="213.9493" + y2="113.96497" /> + <linearGradient + xlink:href="#linearGradient4636" + id="linearGradient495" + gradientUnits="userSpaceOnUse" + x1="14.72319" + y1="14.33813" + x2="213.9493" + y2="113.96497" /> + <linearGradient + xlink:href="#linearGradient4636" + id="linearGradient497" + gradientUnits="userSpaceOnUse" + x1="14.72319" + y1="14.33813" + x2="213.9493" + y2="113.96497" /> + </defs> + <g + id="g2145" + transform="matrix(1.3333333,0,0,-1.3333333,0,170.64533)"> + <g + id="g2147" + style="mix-blend-mode:difference;fill:url(#linearGradient4654);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <g + id="g2149" + style="fill:url(#linearGradient497);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <g + id="g2155" + style="fill:url(#linearGradient495);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <g + id="g2157" + style="fill:url(#linearGradient493);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"> + <path + d="m 25.228,113.805 c -6.079,0 -11.051,-4.973 -11.051,-11.051 v 0 -77.523 c 0,-6.079 4.972,-11.051 11.051,-11.051 v 0 h 165.035 c 6.078,0 11.051,4.973 11.051,11.051 v 0 18.26 c 0,2.022 0.803,3.962 2.234,5.393 v 0 l 9.096,9.096 c 2.54,2.539 2.533,6.657 -0.013,9.188 v 0 l -9.067,9.017 c -1.44,1.431 -2.25,3.379 -2.25,5.409 v 0 21.16 c 0,6.078 -4.973,11.051 -11.051,11.051 v 0 z" + style="fill:url(#linearGradient491);fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none" + id="path2165" /> + </g> + </g> + </g> + </g> + <g + id="g2167"> + <g + id="g2169" + clip-path="url(#clipPath2173)"> + <g + id="g2175" + transform="translate(175.9982,95.8645)"> + <path + d="m 0,0 v 0 c 4.074,0 7.376,-3.302 7.376,-7.376 v -48.993 c 0,-4.074 -3.302,-7.376 -7.376,-7.376 -4.074,0 -7.376,3.302 -7.376,7.376 V -7.376 C -7.376,-3.302 -4.074,0 0,0" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2177" /> + </g> + <g + id="g2179" + transform="translate(152.1193,64.9934)"> + <path + d="M 0,0 H -0.506 C -0.57,0 -0.633,-0.008 -0.698,-0.01 -0.762,-0.008 -0.825,0 -0.89,0 h -7.283 c -3.929,0 -7.359,-2.965 -7.613,-6.885 -0.278,-4.296 3.124,-7.867 7.361,-7.867 0.776,0 1.343,-0.754 1.111,-1.494 -0.658,-2.088 -2.341,-3.751 -4.547,-4.333 -2.074,-0.547 -4.276,-0.821 -6.605,-0.821 -4.007,0 -7.574,0.865 -10.7,2.595 -3.127,1.73 -5.57,4.144 -7.331,7.24 -1.761,3.096 -2.641,6.617 -2.641,10.564 0,4.006 0.88,7.558 2.641,10.654 1.761,3.097 4.219,5.493 7.377,7.195 3.156,1.698 6.768,2.549 10.836,2.549 4.681,0 8.865,-1.269 12.55,-3.807 2.341,-1.612 5.524,-1.588 7.757,0.171 3.48,2.741 3.289,8.045 -0.315,10.452 -1.7,1.136 -3.538,2.112 -5.512,2.928 -4.553,1.881 -9.623,2.823 -15.208,2.823 -6.679,0 -12.69,-1.412 -18.03,-4.235 -5.344,-2.822 -9.517,-6.738 -12.522,-11.747 -3.005,-5.008 -4.508,-10.67 -4.508,-16.983 0,-6.315 1.503,-11.975 4.508,-16.984 3.005,-5.009 7.148,-8.924 12.43,-11.747 5.282,-2.824 11.231,-4.235 17.849,-4.235 4.613,0 9.197,0.699 13.751,2.095 0.045,0.014 0.091,0.028 0.136,0.042 7.104,2.202 11.884,8.86 11.884,16.297 v 9.047 C 6.486,-2.904 3.583,0 0,0" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2181" /> + </g> + <g + id="g2183" + transform="translate(90.5807,88.5798)"> + <path + d="m 0,0 v -49.176 c 0,-4.023 -3.262,-7.285 -7.286,-7.285 h -1.381 c -2.181,0 -4.247,0.977 -5.631,2.662 l -24.229,29.505 c -1.804,2.197 -5.368,0.921 -5.368,-1.922 v -22.96 c 0,-4.023 -3.261,-7.285 -7.285,-7.285 -4.023,0 -7.285,3.262 -7.285,7.285 V 0 c 0,4.024 3.262,7.285 7.285,7.285 h 1.468 c 2.184,0 4.253,-0.979 5.636,-2.669 l 24.135,-29.475 c 1.802,-2.202 5.37,-0.927 5.37,1.918 V 0 c 0,4.024 3.261,7.285 7.285,7.285 C -3.262,7.285 0,4.024 0,0" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path2185" /> + </g> + </g> + </g> + <path + style="font-weight:bold;font-size:31.76px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold';fill:#6f9aa8" + d="m 245.14507,-51.030296 v -18.03968 h -7.11424 v -4.19232 h 19.3736 v 4.19232 h -7.11424 v 18.03968 z m 21.08867,0 9.90912,-22.232 h 5.0816 l 9.94088,22.232 h -5.3992 l -8.13056,-19.62768 h 2.03264 l -8.16232,19.62768 z m 4.95456,-4.764 1.36568,-3.90648 h 11.4336 l 1.39744,3.90648 z m 31.28366,4.764 v -22.232 h 5.14512 v 18.03968 h 11.14776 v 4.19232 z m 32.90339,-13.27568 h 10.70312 v 4.00176 h -10.70312 z m 0.38112,9.14688 h 12.10056 v 4.1288 h -17.21392 v -22.232 h 16.80104 v 4.1288 h -11.68768 z m 25.1857,4.1288 v -22.232 h 9.62328 q 2.98544,0 5.14512,0.98456 2.15968,0.9528 3.3348,2.76312 1.17512,1.81032 1.17512,4.31936 0,2.47728 -1.17512,4.2876 -1.17512,1.77856 -3.3348,2.73136 -2.15968,0.9528 -5.14512,0.9528 h -6.76488 l 2.28672,-2.25496 v 8.44816 z m 14.1332,0 -5.558,-8.06704 h 5.49448 l 5.62152,8.06704 z m -8.98808,-7.87648 -2.28672,-2.41376 h 6.47904 q 2.382,0 3.55712,-1.01632 1.17512,-1.04808 1.17512,-2.8584 0,-1.84208 -1.17512,-2.8584 -1.17512,-1.01632 -3.55712,-1.01632 h -6.47904 l 2.28672,-2.44552 z" + id="text2191" + transform="scale(1,-1)" + aria-label="T A L E R&#10;" /> + </g> +</svg> diff --git a/workshops/merchant.tex b/workshops/merchant.tex @@ -0,0 +1,267 @@ +\documentclass[aspectratio=169,t]{beamer} +\input taler-macros + +\newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET} +\newcommand{\SUB}{GNU Taler for Developers} +\newcommand{\AUTHOR}{Christian Grothoff} +\newcommand{\SPEAKER}{Christian Grothoff} +\newcommand{\INST}{Bern University of Applied Sciences} +\newcommand{\DATE}{COSIN'24} + +% Do not edit this part +\title{\TITLE} +\subtitle{\SUB} +\date{\DATE} +\author[\SPEAKER]{\AUTHOR} +\institute{\INST} + +\begin{document} + +\begin{frame}[plain] +\maketitle +\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 + \item \emph{not} a long-term store of value + \item \emph{not} a network or instance of a system + \item \emph{not} decentralized + \item \emph{not} based on proof-of-work or proof-of-stake + \item \emph{not} a speculative asset / ``get-rich-quick scheme'' + \end{itemize} + \vfill +\end{frame} + + +\begin{frame}{Taler overview} +\begin{center} +\begin{tikzpicture} + \tikzstyle{def} = [node distance= 4em and 7em, 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, draw, above right=of origin]{Auditor}; + \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}; +\end{tikzpicture} +\end{center} +\end{frame} + + +\begin{frame}{Architecture of Taler} +\begin{center} + \includegraphics[width=0.8\textwidth]{operations.png} +\end{center} +\end{frame} + + +\begin{frame}{Merchant architecture} +\begin{center} +\begin{tikzpicture} + \tikzstyle{def} = [node distance= 3.5em and 2em, inner sep=1em, outer sep=.3em]; + \node (origin) at (0,0) {}; + \node (backend) [def,above=of origin,draw]{{\tiny taler-merchant-httpd}}; + \node (frontend) [def,above left=of backend,draw]{{\tiny E-commerce Frontend}}; + \node (backoffice) [def,above right=of backend,draw]{Backoffice}; + \node (postgres) [def, draw, below=of backend] {Postgres}; + + \tikzstyle{C} = [color=black, line width=1pt] + \draw [->, C] (frontend) -- (backend) node [midway, above, sloped] (TextNode) {REST API}; + \draw [->, C] (backoffice) -- (backend) node [midway, above, sloped] (TextNode) {REST API}; + \draw [<->, C] (backend) -- (postgres) node [midway, right] (TextNode) {SQL}; +\end{tikzpicture} +\end{center} +\end{frame} + + +\begin{frame}[fragile]{GNU Taler Merchant Backend}{Installation} +Add a file {\tt /etc/apt/sources.list.d/taler.list}: +\begin{verbatim} +deb [signed-by=/etc/apt/keyrings/taler-systems.gpg] \ + https://deb.taler.net/apt/debian bookworm main +deb [signed-by=/etc/apt/keyrings/taler-systems.gpg] \ + https://deb.taler.net/apt/ubuntu/ noble taler-noble +\end{verbatim} +And import the key and install the package: +\begin{verbatim} +# wget -O /etc/apt/keyrings/taler-systems.gpg \ + https://taler.net/taler-systems.gpg +# apt update; apt install taler-merchant +\end{verbatim} +\end{frame} + + +\begin{frame}[fragile]{GNU Taler Merchant Backend}{Configuration} +Setup database and start the service: +\begin{verbatim} +# taler-merchant-dbconfig +# systemctl enable --now taler-merchant.target +\end{verbatim} +\begin{itemize} +\item Listens by default on 9966 +\item Change ``[merchant] SERVE=unix'' to listen on + UNIX domain socket +\item Reverse proxy configuration templates are in + {\tt /etc/\{nginx,apache\}/sites-available/}. +\end{itemize} +\end{frame} + + +\begin{frame}[fragile]{GNU Taler Merchant Backend}{Authentication} + Initially, the service will have no password! + \begin{itemize} + \item Visit {\tt http://localhost:9966/} with a browser. + \item Setup default (admin) account and credentials! + \end{itemize} + In the REST API, the bearer token is always sent as: +\begin{verbatim} +Authorization: Bearer secret-token:$TOKEN +\end{verbatim} +See also: +\begin{center} + \url{https://www.rfc-editor.org/rfc/rfc8959.pdf} +\end{center} +\end{frame} + + +\begin{frame}[fragile]{GNU Taler Merchant Backend}{Test} +\vfill +\begin{verbatim} +$ wget http://localhost:9966/config +\end{verbatim} +\vfill +\end{frame} + + +\begin{frame}{GNU Taler Merchant Backend}{REST API} +\vfill +\begin{center} +\url{https://docs.taler.net/core/api-merchant.html} +\end{center} +\vfill +\end{frame} + + +\begin{frame}{GNU Taler Merchant Backend}{Key concepts} + \begin{itemize} + \item Instances + \item Orders + \item Inventory + \item Templates + \item Bank accounts + \item OTP devices + \item Webhooks + \end{itemize} +\end{frame} + + +\begin{frame}{GNU Taler Merchant Backend}{Ongoing developments} + \begin{itemize} + \item Token families + \begin{itemize} + \item Subscription + \item Discount + \end{itemize} + \item Donation receipts + \end{itemize} +\end{frame} + + +\begin{frame}{Other components for merchants} + \begin{itemize} + \item Point of sale app + \item {\tt taler-mdb} + \item WooCommerce (WordPress) plugin + \item Joomla! plugin + \item Adobe E-commerce (Magento) plugin + \end{itemize} +\end{frame} + + +\begin{frame}{Other components} + \begin{itemize} + \item Wallet app(s) + \item Auditor + \item Challenger + \item Sync + \item GNU Anastasis + \item Twister + \item libeufin + \end{itemize} +\end{frame} + + +\begin{frame}{Tutorials} + \begin{itemize} + \item Merchant payment processing: \url{https://docs.taler.net/taler-merchant-api-tutorial.html} + \item Regional/event currency setup: \url{https://docs.taler.net/libeufin/regional-automated-manual.html} + \item Video tutorials: \url{https://tutorials.taler.net/} + \item Support forum: \url{https://ich.taler.net/} + \end{itemize} +\end{frame} + + +\begin{frame}{Funding} + \vfill + \begin{center} + \url{https://nlnet.nl/propose} + \end{center} + \vfill + Candidates that passed 1st round from April 1st submission proposed: + \begin{itemize} + \item Some more integrations (frameworks, ERP) + \item Merchant implementation (?) + \item Improvements to wallet usability + \end{itemize} + \vfill +\end{frame} + + + +% This should be last... +\begin{frame}{Acknowledgements} + + \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/workshops/operations.png b/workshops/operations.png Binary files differ. diff --git a/workshops/sbfi.jpg b/workshops/sbfi.jpg Binary files differ. diff --git a/workshops/taler-macros.tex b/workshops/taler-macros.tex @@ -0,0 +1,104 @@ +\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% + \includegraphics[height=0.7cm]{logo-NGI_TALER_Bold.png} + \hfill + \SPEAKER + \hfill + \TITLE + \hfill + \insertframenumber + \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} +} +