[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-marketing] branch master updated: adding workshop pr
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-marketing] branch master updated: adding workshop presenation |
Date: |
Sat, 15 Apr 2017 20:07:59 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository marketing.
The following commit(s) were added to refs/heads/master by this push:
new dd343f8 adding workshop presenation
dd343f8 is described below
commit dd343f856368e36fa1ea5229d5ba91e96ac9b60d
Author: Christian Grothoff <address@hidden>
AuthorDate: Sat Apr 15 20:07:54 2017 +0200
adding workshop presenation
---
presentations/workshop/README | 1 +
presentations/workshop/ashoka.png | Bin 0 -> 45399 bytes
presentations/workshop/figs/Makefile | 15 ++
presentations/workshop/figs/taler-402.html | 10 +
presentations/workshop/figs/taler-contract.html | 6 +
presentations/workshop/figs/taler-contract.json | 20 ++
presentations/workshop/figs/taler-pay.pdf | Bin 0 -> 172900 bytes
presentations/workshop/figs/taler-pay.pml | 47 ++++
presentations/workshop/figs/taler-pay.svg | 1 +
presentations/workshop/figs/taler-presence-js.html | 9 +
presentations/workshop/figs/taler-withdraw.pdf | Bin 0 -> 126620 bytes
presentations/workshop/figs/taler-withdraw.pml | 37 +++
presentations/workshop/figs/taler-withdraw.png | Bin 0 -> 36010 bytes
presentations/workshop/figs/taler-withdraw.svg | 1 +
presentations/workshop/gnu.png | Bin 0 -> 8396 bytes
.../workshop/illustrations/taler-arch-full.pdf | Bin 0 -> 293747 bytes
presentations/workshop/inria.pdf | Bin 0 -> 13345 bytes
presentations/workshop/main.tex | 279 +++++++++++++++++++++
presentations/workshop/taler-big-accent.pdf | Bin 0 -> 15605 bytes
presentations/workshop/taler-big-accent.svg | 44 ++++
20 files changed, 470 insertions(+)
diff --git a/presentations/workshop/README b/presentations/workshop/README
new file mode 100644
index 0000000..d531c5f
--- /dev/null
+++ b/presentations/workshop/README
@@ -0,0 +1 @@
+This directory contains a presentation for Taler workshops.
diff --git a/presentations/workshop/ashoka.png
b/presentations/workshop/ashoka.png
new file mode 100644
index 0000000..ba43566
Binary files /dev/null and b/presentations/workshop/ashoka.png differ
diff --git a/presentations/workshop/figs/Makefile
b/presentations/workshop/figs/Makefile
new file mode 100644
index 0000000..bf5ac52
--- /dev/null
+++ b/presentations/workshop/figs/Makefile
@@ -0,0 +1,15 @@
+
+plantuml = plantuml
+
+%.svg : %.pml
+ $(plantuml) -tsvg $<
+
+%.pdf : %.pml
+ $(plantuml) -tpdf $<
+
+files = taler-pay.pml taler-withdraw.pml \
+cc3ds.pml contract.pml paypal.pml \
+bitcoin.pml
+
+all : $(files:.pml=.pdf) $(files:.pml=.svg)
+
diff --git a/presentations/workshop/figs/taler-402.html
b/presentations/workshop/figs/taler-402.html
new file mode 100644
index 0000000..2a4ab8f
--- /dev/null
+++ b/presentations/workshop/figs/taler-402.html
@@ -0,0 +1,10 @@
+HTTP/1.1 402 Payment Required
+Content-Type: text/html; charset=UTF-8
+X-Taler-Contract-Url: https://shop/generate-contract/42
+
+<!DOCTYPE html>
+<html>
+ <!-- fallback for browsers without the Taler extension -->
+ You do not seem to have Taler installed, here are other
+ payment options ...
+</html>
diff --git a/presentations/workshop/figs/taler-contract.html
b/presentations/workshop/figs/taler-contract.html
new file mode 100644
index 0000000..affdbe9
--- /dev/null
+++ b/presentations/workshop/figs/taler-contract.html
@@ -0,0 +1,6 @@
+<script src="taler-wallet-lib.js"></script>
+<script>
+ taler.offerContractFrom("https://shop/generate-contract/42", (err) => {
+ alert("Error while offering contract");
+ });
+</script>
diff --git a/presentations/workshop/figs/taler-contract.json
b/presentations/workshop/figs/taler-contract.json
new file mode 100644
index 0000000..e12b0f1
--- /dev/null
+++ b/presentations/workshop/figs/taler-contract.json
@@ -0,0 +1,20 @@
+{
+ "H_wire":"YTH0C4QBCQ10VDNTJN0DCTTV2Z6JHT5NF43F0RQHZ8JYB5NG4W4G...",
+ "amount":{"currency":"EUR","fraction":0,"value":1},
+ "max_fee":{"currency":"EUR","fraction":100000,"value":0},
+ "auditors":[{"auditor_pub":"42V6TH91Q83FB846DK1GW3JQ5E8DS273W4..."}],
+ "exchanges":[{"master_pub":"1T5FA8VQHMMKBHDMYPRZA2ZFK2S63AKF0Y...",
+ "url":"https://exchange/"}],
+ "fulfillment_url": "https://shop/article/42?tid=249&time=14714744",
+ "merchant":{"address":"Mailbox 4242","jurisdiction":"Jersey",
+ "name":"Shop Inc."},
+ "merchant_pub":"Y1ZAR5346J3ZTEXJCHQY9NJN78EZ2HSKZK8M0MYTNRJG5N...",
+ "products":[{
+ "description":"Essay: The GNU Project",
+ "price":{"currency":"EUR","fraction":0,"value":1},
+ "product_id":42,"quantity":1}],
+ "pay_deadline":"/Date(1480119270)/",
+ "refund_deadline":"/Date(1471522470)/",
+ "timestamp":"/Date(1471479270)/",
+ "transaction_id":249960194066269
+}
diff --git a/presentations/workshop/figs/taler-pay.pdf
b/presentations/workshop/figs/taler-pay.pdf
new file mode 100644
index 0000000..0856fa8
Binary files /dev/null and b/presentations/workshop/figs/taler-pay.pdf differ
diff --git a/presentations/workshop/figs/taler-pay.pml
b/presentations/workshop/figs/taler-pay.pml
new file mode 100644
index 0000000..93b21f8
--- /dev/null
+++ b/presentations/workshop/figs/taler-pay.pml
@@ -0,0 +1,47 @@
address@hidden
+autonumber
+
+Actor "Payer (Shopper) Browser" as Payer
+Participant "Payee (Merchant) Site" as Payee
+Participant "Taler Exchange" as Exchange
+
+note over Payer, Payee: Tor/HTTPS
+note over Payee, Exchange: HTTP/HTTPS
+
+title Taler (Payment)
+
+== Request Offer ==
+
+Payer->Payee: Choose goods by navigating to offer URL
+
+Payee->Payer: Send signed digital contract proposal
+
+opt
+Payer->Payer: Select Taler payment method (skippable with auto-detection)
+end
+
+== Execute Payment ==
+
+opt
+Payer->Payer: Affirm contract
+end
+
+Payer->Payee: Navigate to fulfillment URL
+
+Payee->Payer: Send hash of digital contract and payment information
+
+Payer->Payee: Send payment
+
+Payee->Exchange: Forward payment
+
+Exchange->Payee: Confirm payment
+
+Payee->Payer: Confirm payment
+
+== Fulfilment ==
+
+Payer->Payee: Reload fulfillment URL for delivery
+
+Payee->Payer: Provide product resource
+
address@hidden
diff --git a/presentations/workshop/figs/taler-pay.svg
b/presentations/workshop/figs/taler-pay.svg
new file mode 100644
index 0000000..95d83e4
--- /dev/null
+++ b/presentations/workshop/figs/taler-pay.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
height="866px" style="width:753px;height:866px;" version="1.1" viewBox="0 0 753
866" width="753px"><defs><filter height="300%" id="f1" width="300%" x="-1"
y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix
in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" [...]
\ No newline at end of file
diff --git a/presentations/workshop/figs/taler-presence-js.html
b/presentations/workshop/figs/taler-presence-js.html
new file mode 100644
index 0000000..9770815
--- /dev/null
+++ b/presentations/workshop/figs/taler-presence-js.html
@@ -0,0 +1,9 @@
+<script src="taler-wallet-lib.js"></script>
+<script>
+ taler.onPresent(() => {
+ alert("Taler wallet is installed");
+ });
+ taler.onAbsent(() => {
+ alert("Taler wallet is not installed");
+ });
+</script>
diff --git a/presentations/workshop/figs/taler-withdraw.pdf
b/presentations/workshop/figs/taler-withdraw.pdf
new file mode 100644
index 0000000..d1cd720
Binary files /dev/null and b/presentations/workshop/figs/taler-withdraw.pdf
differ
diff --git a/presentations/workshop/figs/taler-withdraw.pml
b/presentations/workshop/figs/taler-withdraw.pml
new file mode 100644
index 0000000..33f5dac
--- /dev/null
+++ b/presentations/workshop/figs/taler-withdraw.pml
@@ -0,0 +1,37 @@
address@hidden
+autonumber
+
+Actor "Customer Browser" as Customer
+Participant "Bank Site" as Bank
+Participant "Taler Exchange" as Exchange
+
+note over Customer, Bank: HTTPS
+note over Customer, Exchange: HTTPS
+note over Bank, Exchange: wire transfer
+
+title Taler (Withdraw coins)
+
+Customer->Bank: user authentication
+Bank->Customer: send account portal
+
+Customer->Customer: initiate withdrawal (specify amount and exchange)
+
+Customer->Exchange: request coin denomination keys and wire transfer data
+Exchange->Customer: send coin denomination keys and wire transfer data
+
+Customer->Bank: execute withdrawal
+
+opt
+Bank->Customer: request transaction authorization
+Customer->Bank: transaction authorization
+end
+
+Bank->Customer: withdrawal confirmation
+Bank->Exchange: execute wire transfer
+
+
+Customer->Exchange: withdraw request
+Customer<-Exchange: signed blinded coins
+Customer->Customer: unblind coins
+
address@hidden
diff --git a/presentations/workshop/figs/taler-withdraw.png
b/presentations/workshop/figs/taler-withdraw.png
new file mode 100644
index 0000000..04a4d8d
Binary files /dev/null and b/presentations/workshop/figs/taler-withdraw.png
differ
diff --git a/presentations/workshop/figs/taler-withdraw.svg
b/presentations/workshop/figs/taler-withdraw.svg
new file mode 100644
index 0000000..3618d92
--- /dev/null
+++ b/presentations/workshop/figs/taler-withdraw.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
height="774px" style="width:652px;height:774px;" version="1.1" viewBox="0 0 652
774" width="652px"><defs><filter height="300%" id="f1" width="300%" x="-1"
y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix
in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" [...]
\ No newline at end of file
diff --git a/presentations/workshop/gnu.png b/presentations/workshop/gnu.png
new file mode 100644
index 0000000..3d060a0
Binary files /dev/null and b/presentations/workshop/gnu.png differ
diff --git a/presentations/workshop/illustrations/taler-arch-full.pdf
b/presentations/workshop/illustrations/taler-arch-full.pdf
new file mode 100644
index 0000000..e983a9f
Binary files /dev/null and
b/presentations/workshop/illustrations/taler-arch-full.pdf differ
diff --git a/presentations/workshop/inria.pdf b/presentations/workshop/inria.pdf
new file mode 100644
index 0000000..c3576d4
Binary files /dev/null and b/presentations/workshop/inria.pdf differ
diff --git a/presentations/workshop/main.tex b/presentations/workshop/main.tex
new file mode 100644
index 0000000..da550f8
--- /dev/null
+++ b/presentations/workshop/main.tex
@@ -0,0 +1,279 @@
+\documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer}
+\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{tikz,eurosym}
+\usepackage[normalem]{ulem}
+\usepackage{listings}
+
+% 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]"
+}
+
+\usetikzlibrary{shapes,arrows}
+\usetikzlibrary{positioning}
+\usetikzlibrary{calc}
+
+\title{Enabling Secure Web Payments with GNU Taler}
+%\subtitle{}
+
+\setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf}
\includegraphics[width=0.5cm]{gnu.png}
\includegraphics[width=0.5cm]{ashoka.png}\hfill}
+%\setbeamercovered{transparent=1}
+
+\author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci}
+\date{\today}
+\institute{The GNU Project}
+
+
+\begin{document}
+
+\justifying
+\begin{frame}[plain]
+\titlepage
+
+\vfill
+\begin{center}
+\tiny
+``I think one of the big things that we need to do, is we need
+to get a way from true-name payments on the Internet. The credit
+card payment system is one of the worst things that happened for the
+user, in terms of being able to divorce their access from their
+identity.'' \hfill --Edward Snowden, IETF 93 (2015)
+\end{center}
+\end{frame}
+
+
+
+\begin{frame}
+ % TODO: replace with simplified NEW architecture picture!
+\frametitle{Architecture of GNU Taler}
+\begin{center}
+ \includegraphics[width=0.9\textwidth]{illustrations/taler-arch-full.pdf}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Taler.net Services}
+ \vfill
+ \begin{enumerate}
+ \item \url{https://api.taler.net/}
+ \item \url{https://www.git.taler.net/}
+ \item \url{https://bank.demo.taler.net/}
+ \item \url{https://exchange.demo.taler.net/}
+ \item \url{http://backend.demo.taler.net/}
+ \item \url{https://shop.demo.taler.net/}
+ \item {\tt demo} $\Rightarrow$ {\tt test}
+ \end{enumerate}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{Merchant Integration: Wallet Detection}
+ \lstset{language=JavaScript}
+ \lstinputlisting{figs/taler-presence-js.html}
+% \caption{Sample code to detect the Taler wallet. Allowing the
+% Web site to detect the presence of the wallet leaks one bit
+% of information about the user. The above logic also works
+% if the wallet is installed while the page is open.}
+% \label{listing:presence}
+\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}{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}{Withdrawing coins on the Web}
+ \begin{center}
+ \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{Payment processing with Taler}
+ \begin{center}
+ \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{Current technical developments}
+ \begin{itemize}
+ \item Improving wallet (error handling, features, browser support)
+ \item Support for refunds
+ \item Ongoing work on exchange auditing
+ \item Tutorial for Web shop integration (more languages, gain experience
from workshops)
+ \end{itemize}
+ \vfill
+ \begin{center}
+ \url{https://taler.net/en/merchants.html}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{Business considerations}
+ \begin{itemize}
+ \item Exchange needs to be a legal (!) business to operate.
+ \item Exchange operator income is from {\em transaction fees}.
+ \item Created Taler Systems S.A. in Luxemburgh.
+ \item Now trying to find partners and financing for startup.
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Community considerations}
+ \begin{itemize}
+ \item Initial accumulation: Who gets to mint currency?
+ \item Speculation: Who controls the money supply?
+ \item Social welfare:
+ \begin{itemize}
+ \item Who gets to set tax rules and rates?
+ \item Who gets to allocate tax revenue?
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}
+\frametitle{Do you have any questions?}
+\vfill
+References:
+{\tiny
+ \begin{enumerate}
+ \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 This is a Free Software project. \\
+ It will NOT happen without your help!}
+\end{center}
+\end{frame}
+
+
+\end{document}
diff --git a/presentations/workshop/taler-big-accent.pdf
b/presentations/workshop/taler-big-accent.pdf
new file mode 100644
index 0000000..5ba9ea7
Binary files /dev/null and b/presentations/workshop/taler-big-accent.pdf differ
diff --git a/presentations/workshop/taler-big-accent.svg
b/presentations/workshop/taler-big-accent.svg
new file mode 100644
index 0000000..8dd2cf5
--- /dev/null
+++ b/presentations/workshop/taler-big-accent.svg
@@ -0,0 +1,44 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="-50 -50 100 100"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style>
+ .ts1 { fill: #aa3939; letter-spacing:0; }
+ .ts2 { letter-spacing:0; }
+ </style>
+
+ <circle cx="0" cy="0" r="40" stroke="black" stroke-width="7.5" fill="none" />
+ <circle cx="0" cy="0" r="45" stroke="black" stroke-width="1" fill="none" />
+ <!-- big horizontal T stroke -->
+ <rect x="-30" y="-14" width="60" height="4"/>
+ <rect x="-30" y="-9" width="60" height="1"/>
+ <rect x="-4" y="-14" width="8" height="54"/>
+
+
+
+ <text font-family="'Lucida Console', Monaco, monospace" font-weight="bold"
font-size="9" color="red" x="0" y="-18" text-anchor="middle"
letter-spacing="0.20em">
+ <tspan class="ts1">❬</tspan>Tale<tspan class="ts2">r<tspan
class="ts1">❭</tspan></tspan>
+ </text>
+
+
+ <defs>
+ <path id="MyPath1"
+ d="M -38 0 A 38 38 1 0 1 38 0" />
+ </defs>
+
+ <defs>
+ <path id="MyPath2"
+ d="M 0 42 A 42 42 1 0 0 0 -42" />
+ </defs>
+
+
+ <text font-family="Verdana" font-size="6" color="red" fill="white">
+ <textPath xlink:href="#MyPath1">
+ Taxable Anonymous Libre
+ </textPath>
+ </text>
+
+ <text font-family="Verdana" font-size="6" color="red" fill="white">
+ <textPath xlink:href="#MyPath2">
+ Electronic Reserves
+ </textPath>
+ </text>
+</svg>
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-marketing] branch master updated: adding workshop presenation,
gnunet <=