marketing

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

commit dd343f856368e36fa1ea5229d5ba91e96ac9b60d
parent b15c285eab274bd67b690db1069eff54c3750a01
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sat, 15 Apr 2017 20:07:54 +0200

adding workshop presenation

Diffstat:
Apresentations/workshop/README | 1+
Apresentations/workshop/ashoka.png | 0
Apresentations/workshop/figs/Makefile | 15+++++++++++++++
Apresentations/workshop/figs/taler-402.html | 10++++++++++
Apresentations/workshop/figs/taler-contract.html | 6++++++
Apresentations/workshop/figs/taler-contract.json | 20++++++++++++++++++++
Apresentations/workshop/figs/taler-pay.pdf | 0
Apresentations/workshop/figs/taler-pay.pml | 47+++++++++++++++++++++++++++++++++++++++++++++++
Apresentations/workshop/figs/taler-pay.svg | 2++
Apresentations/workshop/figs/taler-presence-js.html | 9+++++++++
Apresentations/workshop/figs/taler-withdraw.pdf | 0
Apresentations/workshop/figs/taler-withdraw.pml | 37+++++++++++++++++++++++++++++++++++++
Apresentations/workshop/figs/taler-withdraw.png | 0
Apresentations/workshop/figs/taler-withdraw.svg | 2++
Apresentations/workshop/gnu.png | 0
Apresentations/workshop/illustrations/taler-arch-full.pdf | 0
Apresentations/workshop/inria.pdf | 0
Apresentations/workshop/main.tex | 279+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apresentations/workshop/taler-big-accent.pdf | 0
Apresentations/workshop/taler-big-accent.svg | 44++++++++++++++++++++++++++++++++++++++++++++
20 files changed, 472 insertions(+), 0 deletions(-)

diff --git a/presentations/workshop/README 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 Binary files differ. diff --git a/presentations/workshop/figs/Makefile 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 @@ -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 @@ -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 @@ -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 Binary files differ. diff --git a/presentations/workshop/figs/taler-pay.pml b/presentations/workshop/figs/taler-pay.pml @@ -0,0 +1,47 @@ +@startuml +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 + +@enduml diff --git a/presentations/workshop/figs/taler-pay.svg 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" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="125" x="313.5" y="22.9951">Taler (Payment)</text><rect fill="#FFFFFF" filter="url(#f1)" height="59.2656" style="stroke: #000000; stroke-width: 2.0;" width="509" x="13" y="313.2578"/><rect fill="#FFFFFF" filter="url(#f1)" height="59.2656" style="stroke: #000000; stroke-width: 2.0;" width="213" x="13" y="429.6563"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="112" x2="112" y1="116.5938" y2="782.1172"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="516.5" x2="516.5" y1="116.5938" y2="782.1172"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="673.5" x2="673.5" y1="116.5938" y2="782.1172"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="172" x="23" y="113.292">Payer (Shopper) Browser</text><ellipse cx="112" cy="43.2969" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M112,51.2969 L112,78.2969 M99,59.2969 L125,59.2969 M112,78.2969 L99,93.2969 M112,78.2969 L125,93.2969 " fill="#FEFECE" filter="url(#f1)" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="172" x="23" y="794.1123">Payer (Shopper) Browser</text><ellipse cx="112" cy="807.4141" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M112,815.4141 L112,842.4141 M99,823.4141 L125,823.4141 M112,842.4141 L99,857.4141 M112,842.4141 L125,857.4141 " fill="#FEFECE" filter="url(#f1)" style="stroke: #A80036; stroke-width: 2.0;"/><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="165" x="432.5" y="81.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="151" x="439.5" y="101.292">Payee (Merchant) Site</text><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="165" x="432.5" y="781.1172"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="151" x="439.5" y="801.1123">Payee (Merchant) Site</text><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="611.5" y="81.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="618.5" y="101.292">Taler Exchange</text><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="611.5" y="781.1172"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="618.5" y="801.1123">Taler Exchange</text><polygon fill="#FBFB77" filter="url(#f1)" points="27,131.5938,27,156.5938,600,156.5938,600,141.5938,590,131.5938,27,131.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="590" x2="590" y1="131.5938" y2="141.5938"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="600" x2="590" y1="141.5938" y2="141.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="65" x="274.75" y="148.6606">Tor/HTTPS</text><polygon fill="#FBFB77" filter="url(#f1)" points="446,170.7266,446,195.7266,744,195.7266,744,180.7266,734,170.7266,446,170.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="734" x2="734" y1="170.7266" y2="180.7266"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="744" x2="734" y1="180.7266" y2="180.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="77" x="550" y="187.7935">HTTP/HTTPS</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="746" x="3" y="225.4258"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="749" y1="225.4258" y2="225.4258"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="749" y1="228.4258" y2="228.4258"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="123" x="314.5" y="214.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="104" x="320.5" y="230.9263">Request Offer</text><polygon fill="#A80036" points="505,264.9922,515,268.9922,505,272.9922,509,268.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="112" x2="511" y1="268.9922" y2="268.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="259" x="119" y="264.0591">Choose goods by navigating to offer URL</text><polygon fill="#A80036" points="123,294.125,113,298.125,123,302.125,119,298.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="117" x2="516" y1="298.125" y2="298.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="237" x="129" y="293.1919">Send signed digital contract proposal</text><rect fill="none" height="59.2656" style="stroke: #000000; stroke-width: 2.0;" width="509" x="13" y="313.2578"/><polygon fill="#EEEEEE" points="13,313.2578,83,313.2578,83,320.2578,73,330.2578,13,330.2578,13,313.2578" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="25" x="28" y="326.3247">opt</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="112" x2="154" y1="351.5234" y2="351.5234"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="154" x2="154" y1="351.5234" y2="364.5234"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="113" x2="154" y1="364.5234" y2="364.5234"/><polygon fill="#A80036" points="123,360.5234,113,364.5234,123,368.5234,119,364.5234" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="391" x="119" y="346.4575">Select Taler payment method (skippable with auto-detection)</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="746" x="3" y="400.0898"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="749" y1="400.0898" y2="400.0898"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="749" y1="403.0898" y2="403.0898"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="147" x="302.5" y="389.5234"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="128" x="308.5" y="405.5903">Execute Payment</text><rect fill="none" height="59.2656" style="stroke: #000000; stroke-width: 2.0;" width="213" x="13" y="429.6563"/><polygon fill="#EEEEEE" points="13,429.6563,83,429.6563,83,436.6563,73,446.6563,13,446.6563,13,429.6563" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="25" x="28" y="442.7231">opt</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="112" x2="154" y1="467.9219" y2="467.9219"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="154" x2="154" y1="467.9219" y2="480.9219"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="113" x2="154" y1="480.9219" y2="480.9219"/><polygon fill="#A80036" points="123,476.9219,113,480.9219,123,484.9219,119,480.9219" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="119" y="462.856">Affirm contract</text><polygon fill="#A80036" points="505,512.9219,515,516.9219,505,520.9219,509,516.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="112" x2="511" y1="516.9219" y2="516.9219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="169" x="119" y="511.9888">Navigate to fulfillment URL</text><polygon fill="#A80036" points="123,542.0547,113,546.0547,123,550.0547,119,546.0547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="117" x2="516" y1="546.0547" y2="546.0547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="349" x="129" y="541.1216">Send hash of digital contract and payment information</text><polygon fill="#A80036" points="505,571.1875,515,575.1875,505,579.1875,509,575.1875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="112" x2="511" y1="575.1875" y2="575.1875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="119" y="570.2544">Send payment</text><polygon fill="#A80036" points="661.5,600.3203,671.5,604.3203,661.5,608.3203,665.5,604.3203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="517" x2="667.5" y1="604.3203" y2="604.3203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="524" y="599.3872">Forward payment</text><polygon fill="#A80036" points="528,629.4531,518,633.4531,528,637.4531,524,633.4531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="522" x2="672.5" y1="633.4531" y2="633.4531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="534" y="628.52">Confirm payment</text><polygon fill="#A80036" points="123,658.5859,113,662.5859,123,666.5859,119,662.5859" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="117" x2="516" y1="662.5859" y2="662.5859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="129" y="657.6528">Confirm payment</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="746" x="3" y="691.2852"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="749" y1="691.2852" y2="691.2852"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="749" y1="694.2852" y2="694.2852"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="93" x="329.5" y="680.7188"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="74" x="335.5" y="696.7856">Fulfilment</text><polygon fill="#A80036" points="505,730.8516,515,734.8516,505,738.8516,509,734.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="112" x2="511" y1="734.8516" y2="734.8516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="212" x="119" y="729.9185">Reload fulfillment URL for delivery</text><polygon fill="#A80036" points="123,759.9844,113,763.9844,123,767.9844,119,763.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="117" x2="516" y1="763.9844" y2="763.9844"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="160" x="129" y="759.0513">Provide product resource</text></g></svg> +\ No newline at end of file diff --git a/presentations/workshop/figs/taler-presence-js.html 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 Binary files differ. diff --git a/presentations/workshop/figs/taler-withdraw.pml b/presentations/workshop/figs/taler-withdraw.pml @@ -0,0 +1,37 @@ +@startuml +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 + +@enduml diff --git a/presentations/workshop/figs/taler-withdraw.png b/presentations/workshop/figs/taler-withdraw.png Binary files differ. diff --git a/presentations/workshop/figs/taler-withdraw.svg 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" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="179" x="236.25" y="22.9951">Taler (Withdraw coins)</text><rect fill="#FFFFFF" filter="url(#f1)" height="75.3984" style="stroke: #000000; stroke-width: 2.0;" width="462" x="13" y="438.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="90" x2="90" y1="116.5938" y2="689.8516"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="423" x2="423" y1="116.5938" y2="689.8516"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="581.5" x2="581.5" y1="116.5938" y2="689.8516"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="23" y="113.292">Customer Browser</text><ellipse cx="90.5" cy="43.2969" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M90.5,51.2969 L90.5,78.2969 M77.5,59.2969 L103.5,59.2969 M90.5,78.2969 L77.5,93.2969 M90.5,78.2969 L103.5,93.2969 " fill="#FEFECE" filter="url(#f1)" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="23" y="701.8467">Customer Browser</text><ellipse cx="90.5" cy="715.1484" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M90.5,723.1484 L90.5,750.1484 M77.5,731.1484 L103.5,731.1484 M90.5,750.1484 L77.5,765.1484 M90.5,750.1484 L103.5,765.1484 " fill="#FEFECE" filter="url(#f1)" style="stroke: #A80036; stroke-width: 2.0;"/><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="382" y="81.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="389" y="101.292">Bank Site</text><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="382" y="688.8516"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="389" y="708.8467">Bank Site</text><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="519.5" y="81.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="526.5" y="101.292">Taler Exchange</text><rect fill="#FEFECE" filter="url(#f1)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="519.5" y="688.8516"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="526.5" y="708.8467">Taler Exchange</text><polygon fill="#FBFB77" filter="url(#f1)" points="38,131.5938,38,156.5938,475,156.5938,475,141.5938,465,131.5938,38,131.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="465" x2="465" y1="131.5938" y2="141.5938"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="475" x2="465" y1="141.5938" y2="141.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="229.5" y="148.6606">HTTPS</text><polygon fill="#FBFB77" filter="url(#f1)" points="28,170.7266,28,195.7266,643,195.7266,643,180.7266,633,170.7266,28,170.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="633" x2="633" y1="170.7266" y2="180.7266"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="643" x2="633" y1="180.7266" y2="180.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="308.75" y="187.7935">HTTPS</text><polygon fill="#FBFB77" filter="url(#f1)" points="374,209.8594,374,234.8594,630,234.8594,630,219.8594,620,209.8594,374,209.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="620" x2="620" y1="209.8594" y2="219.8594"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="630" x2="620" y1="219.8594" y2="219.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="456.25" y="226.9263">wire transfer</text><polygon fill="#A80036" points="411.5,260.9922,421.5,264.9922,411.5,268.9922,415.5,264.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="417.5" y1="264.9922" y2="264.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="124" x="97.5" y="260.0591">user authentication</text><polygon fill="#A80036" points="101.5,290.125,91.5,294.125,101.5,298.125,97.5,294.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="95.5" x2="422.5" y1="294.125" y2="294.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="127" x="107.5" y="289.1919">send account portal</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="132.5" y1="323.3906" y2="323.3906"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132.5" x2="132.5" y1="323.3906" y2="336.3906"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="91.5" x2="132.5" y1="336.3906" y2="336.3906"/><polygon fill="#A80036" points="101.5,332.3906,91.5,336.3906,101.5,340.3906,97.5,336.3906" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="319" x="97.5" y="318.3247">initiate withdrawal (specify amount and exchange)</text><polygon fill="#A80036" points="569.5,361.3906,579.5,365.3906,569.5,369.3906,573.5,365.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="575.5" y1="365.3906" y2="365.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="348" x="97.5" y="360.4575">request coin denomination keys and wire transfer data</text><polygon fill="#A80036" points="101.5,390.5234,91.5,394.5234,101.5,398.5234,97.5,394.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="95.5" x2="580.5" y1="394.5234" y2="394.5234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="330" x="107.5" y="389.5903">send coin denomination keys and wire transfer data</text><polygon fill="#A80036" points="411.5,419.6563,421.5,423.6563,411.5,427.6563,415.5,423.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="417.5" y1="423.6563" y2="423.6563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="97.5" y="418.7231">execute withdrawal</text><rect fill="none" height="75.3984" style="stroke: #000000; stroke-width: 2.0;" width="462" x="13" y="438.7891"/><polygon fill="#EEEEEE" points="13,438.7891,83,438.7891,83,445.7891,73,455.7891,13,455.7891,13,438.7891" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="25" x="28" y="451.856">opt</text><polygon fill="#A80036" points="101.5,472.9219,91.5,476.9219,101.5,480.9219,97.5,476.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="95.5" x2="422.5" y1="476.9219" y2="476.9219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="213" x="107.5" y="471.9888">request transaction authorization</text><polygon fill="#A80036" points="411.5,502.0547,421.5,506.0547,411.5,510.0547,415.5,506.0547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="417.5" y1="506.0547" y2="506.0547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="160" x="97.5" y="501.1216">transaction authorization</text><polygon fill="#A80036" points="101.5,538.1875,91.5,542.1875,101.5,546.1875,97.5,542.1875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="95.5" x2="422.5" y1="542.1875" y2="542.1875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="150" x="107.5" y="537.2544">withdrawal confirmation</text><polygon fill="#A80036" points="569.5,567.3203,579.5,571.3203,569.5,575.3203,573.5,571.3203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="423.5" x2="575.5" y1="571.3203" y2="571.3203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="430.5" y="566.3872">execute wire transfer</text><polygon fill="#A80036" points="569.5,596.4531,579.5,600.4531,569.5,604.4531,573.5,600.4531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="575.5" y1="600.4531" y2="600.4531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="108" x="97.5" y="595.52">withdraw request</text><polygon fill="#A80036" points="101.5,625.5859,91.5,629.5859,101.5,633.5859,97.5,629.5859" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="95.5" x2="580.5" y1="629.5859" y2="629.5859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="129" x="107.5" y="624.6528">signed blinded coins</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="90.5" x2="132.5" y1="658.8516" y2="658.8516"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132.5" x2="132.5" y1="658.8516" y2="671.8516"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="91.5" x2="132.5" y1="671.8516" y2="671.8516"/><polygon fill="#A80036" points="101.5,667.8516,91.5,671.8516,101.5,675.8516,97.5,671.8516" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="97.5" y="653.7856">unblind coins</text></g></svg> +\ No newline at end of file diff --git a/presentations/workshop/gnu.png b/presentations/workshop/gnu.png Binary files differ. diff --git a/presentations/workshop/illustrations/taler-arch-full.pdf b/presentations/workshop/illustrations/taler-arch-full.pdf Binary files differ. diff --git a/presentations/workshop/inria.pdf b/presentations/workshop/inria.pdf Binary files differ. diff --git a/presentations/workshop/main.tex 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 Binary files differ. diff --git a/presentations/workshop/taler-big-accent.svg 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">&#10092;</tspan>Tale<tspan class="ts2">r<tspan class="ts1">&#10093;</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>