aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-01-06 18:33:04 +0100
committerChristian Grothoff <christian@grothoff.org>2018-01-06 18:33:04 +0100
commit330e66df5635de8d5b219b47edd80a7083f68d34 (patch)
tree6fb3f84d52e7b14d7fdda1c8e9725c6b3540ee22
parent9438f3d7184eb70faebf1e994556231ef0e9f4ba (diff)
downloadwww-330e66df5635de8d5b219b47edd80a7083f68d34.tar.gz
www-330e66df5635de8d5b219b47edd80a7083f68d34.zip
first pass at new Web site
-rw-r--r--.gitmodules4
-rw-r--r--architecture.html.j22
-rw-r--r--bibliography.html.j234
-rw-r--r--citizens.html.j2143
-rw-r--r--common/footer.j2.inc9
-rw-r--r--common/navigation.j2.inc2
-rw-r--r--developers.html.j2212
-rw-r--r--faq.html.j273
-rw-r--r--financial-news.html.j243
-rw-r--r--financial-news/2013-09-15.inc13
-rw-r--r--financial-news/2014-09-10.inc17
-rw-r--r--financial-news/2014-11-13.inc12
-rw-r--r--financial-news/2014-12-05.inc21
-rw-r--r--financial-news/2014-12-06.inc8
-rw-r--r--financial-news/2015-03-17.inc9
-rw-r--r--financial-news/2015-04-30.inc12
-rw-r--r--financial-news/2015-12-22.inc10
-rw-r--r--financial-news/2016-07-23.inc9
-rw-r--r--financial-news/2016-10-15.inc7
-rw-r--r--financial-news/2016-10-21.inc8
-rw-r--r--financial-news/2016-10-24.inc10
-rw-r--r--financial-news/2016-10-26.inc10
-rw-r--r--financial-news/2017-04-03.inc12
-rw-r--r--financial-news/2017-04-04.inc12
-rw-r--r--financial-news/2017-07-20.inc10
-rw-r--r--glossary.html.j2183
-rw-r--r--governments.html.j2188
-rw-r--r--images/gnunet-arch-full.svg648
-rw-r--r--investors.html.j2143
-rw-r--r--merchants.html.j2182
-rw-r--r--old-news.html.j22
-rw-r--r--papers/bellare_blindsigs_proof.pdfbin328759 -> 0 bytes
-rw-r--r--papers/chaum-blind-signatures.pdfbin269934 -> 0 bytes
-rw-r--r--papers/taler2016space.pdfbin1595692 -> 0 bytes
-rw-r--r--presentations/investors2017.pdfbin4558899 -> 0 bytes
-rw-r--r--press.html.j250
-rw-r--r--team-images/cristina-onete.jpgbin23650 -> 0 bytes
-rw-r--r--team-images/leon-schumacher.jpgbin13920 -> 0 bytes
-rw-r--r--team-images/richard-stallman.jpgbin55243 -> 0 bytes
-rw-r--r--wallet.html.j2194
m---------web-common0
41 files changed, 675 insertions, 1617 deletions
diff --git a/.gitmodules b/.gitmodules
index 0e2b9bd2..d83bc580 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,7 +1,3 @@
1[submodule "web-common"]
2 path = web-common
3 url = git://taler.net/web-common
4 branch = master
5[submodule "help"] 1[submodule "help"]
6 path = help 2 path = help
7 url = git://taler.net/help 3 url = git://taler.net/help
diff --git a/architecture.html.j2 b/architecture.html.j2
index 5f5e81c3..971c2326 100644
--- a/architecture.html.j2
+++ b/architecture.html.j2
@@ -11,6 +11,6 @@
11</div> 11</div>
12 12
13<div class="container"> 13<div class="container">
14 <img width="100%" src="{{ svg_localized('images/gnunet-arch-full') }}"></img> 14 <img width="100%" src="images/gnunet-arch-full.svg"></img>
15</div> 15</div>
16{% endblock body_content %} 16{% endblock body_content %}
diff --git a/bibliography.html.j2 b/bibliography.html.j2
deleted file mode 100644
index 88b02884..00000000
--- a/bibliography.html.j2
+++ /dev/null
@@ -1,34 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<div class="container">
4<h1>{{ _("GNU Taler Bibliography")}}</h1>
5
6<h2>Blind Signatures for Untraceable Payments</h2>
7<p>
8<a href="{{ url('papers/chaum-blind-signatures.pdf') }}"><img border=0 align=right alt="PDF" width=32 height=32 src="{{ url('images/pdf.svg') }}"></a>
9{{_("by")}} David Chaum<br>
10CRYPTO '82<br>
11</p>
12
13<h2>The One-More-RSA-Inversion Problems and the Security of Chaum's Blind Signature Scheme</h2>
14<p>
15<a href="{{ url('papers/bellare_blindsigs_proof.pdf') }}"><img border=0 align=right alt="PDF" width=32 height=32 src="{{ url('images/pdf.svg') }}"></a>
16{{_("by")}} M. Bellare, C. Namprempre, D. Pointcheval {{ _("and") }} M. Semanko<br>
17Financial Cryptography '01<br>
18</p>
19
20<h2>Enabling Secure Web Payments with GNU Taler</h2>
21<p>
22<a href="{{ url('papers/taler2016space.pdf') }}"><img border=0 align=right width=32 height=32 alt="PDF" src="{{ url('images/pdf.svg') }}"></a>
23{{_("by")}} Jeff Burdges, Florian Dold, Christian Grothoff {{ _("and") }} Marcello Stanisci<br>
24SPACE 2016<br>
25</p>
26
27<h2>Refreshing Coins for Giving Change and Refunds in Chaum-style Anonymous Payment Systems</h2>
28<p>
29{{_("by")}} Florian Dold, Sree Harsha Totakura, Benedikt M&uuml;ller, Jeff Burdges {{ _("and") }} Christian Grothoff<br>
30<em>{{_("available upon request")}}</em><br>
31</p>
32
33</div>
34{% endblock body_content %}
diff --git a/citizens.html.j2 b/citizens.html.j2
deleted file mode 100644
index 2d5b677d..00000000
--- a/citizens.html.j2
+++ /dev/null
@@ -1,143 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<div class="jumbotron">
4 <div class="container text-center">
5 <h1>{{ _("Advantages for Citizens") }}</h1>
6 <!-- p><a class="btn btn-lg btn-success" href="#" role="button">Get started today</a></p -->
7 <div class="col-lg-12">
8 <p>
9 {% trans %}
10 Taler largely functions like digital cash. You
11 withdraw money from your bank account into your
12 electronic wallet, and can henceforth spend digital
13 cash. The electronic wallet can carry multiple
14 currencies.
15 {% endtrans %}
16 </p>
17 </div>
18 </div>
19</div>
20
21<div class="container adorn_h3_bracket">
22 <!-- Example row of columns -->
23 <div class="row">
24 <div class="col-lg-6">
25 <h3>{{ _("Secure") }}</h3>
26
27 <p>{{ _("Taler uses modern cryptography, ensuring that there
28 is no counterfeit. Your digital wallet is safer
29 than your physical wallet. At most, you can lose
30 its contents because your computer or mobile is
31 irreparably damaged or compromised. Unlike a
32 physical wallet, you can make backups to secure
33 against data loss.") }}</p>
34
35 </div>
36 <div class="col-lg-6">
37 <h3>{{ _("Private") }}</h3>
38
39 <p>{{ _("Your transactions are private, neither the payment
40 service provider nor merchant needs to learn your
41 identity. There is no need to give out credit card
42 numbers or other sensitive information. The merchant
43 will only be able to do exactly the transaction you
44 agreed to.") }}</p>
45
46 </div>
47 </div>
48 <div class="row">
49 <div class="col-lg-6">
50 <h3>{{ _("Convenient") }}</h3>
51
52 <p>{{ _("You will be able to withdraw money to replenish the
53 digital coins in your wallet using your credit card
54 or wire transfers. Afterwards you can pay with
55 one-click using the Taler wallet, which optionally
56 keeps your transaction history on your computer.")
57 }}</p>
58
59 </div>
60 <div class="col-lg-6">
61 <h3>{{ _("Stable") }}</h3>
62
63 <p>{{ _("Coins in your digital wallet will be of the same
64 denomination as the cash in your physical wallet.
65 Taler is not a crypto-currency, so you do not have
66 to worry about cryto-currency related value
67 fluctuations. Banking with Taler is subject to the
68 usual government protections for financial
69 services.") }}</p>
70
71 </div>
72 </div>
73</div>
74
75<div class="container-fluid c_acronym">
76<div class="container">
77 <div class="row">
78 <div class="col-lg-6">
79 <h2>{{ _("Wallet Browser Extension") }}</h2>
80 <p>
81 {% trans %}
82 We currently provide a <a href="wallet.html">wallet browser extension</a> for Chromium, Chrome, Firefox, Opera
83 and Edge. Wallets for mobile phones and other platforms will be available in the future.
84 {% endtrans %}
85 </p>
86 </div>
87 <div class="col-lg-6">
88 <h2>{{ _("Taler Demo") }}</h2>
89 <p>
90 {% trans %}
91 You can see how Taler works in practice by visiting our <a href="https://demo.taler.net">demo page</a>.
92 {% endtrans %}
93 </p>
94 </div>
95 </div>
96</div>
97</div>
98
99
100<div class="container">
101
102 <div class="col-lg-6">
103 <h2 id="overview">{{ _("The Taler Wallet for customers") }}</h2>
104
105 <p>{{ _("Customers interact with the Taler system using
106 the Taler wallet:") }}</p>
107
108 <ul>
109
110 <li>{{ _("To <b>withdraw</b> electronic coins, the customer
111 transfers funds from his bank account to the Taler
112 payment service provider (the exchange). The wire
113 transfer subject must match a code identifying the
114 customer's wallet. After the wire transfer is
115 complete, the wallet will automatically withdraw the
116 coins from the exchange.") }}</li>
117
118 <li>{{ _("To <b>spend</b> electronic coins, a merchant must
119 cause the wallet to display a proposal for some
120 purchase. The wallet will ask the customer for
121 one-click confirmation. Payment is then instant.
122 Transaction histories and digitally signed contracts
123 can be preserved by the wallet.") }}</li>
124
125 <li>{{ _("The customer can use the wallet to <b>review</b> his
126 balance. The wallet can contain different
127 currencies, and may be shared across
128 devices. Customers can make backups of the wallet to
129 secure its contents against hardware failures.")
130 }}</li>
131
132 </ul>
133 </div>
134
135 <div class="col-lg-6">
136 <img src="{{ svg_localized('images/citizen') }}"
137 alt="{{ _("customer perspective") }}"
138 style="float: right; margin: 5px 5px 5px 5px;" width="100%">
139 </div>
140
141</div>
142<!-- /container -->
143{% endblock body_content %}
diff --git a/common/footer.j2.inc b/common/footer.j2.inc
index aedd1e0c..7c973a6d 100644
--- a/common/footer.j2.inc
+++ b/common/footer.j2.inc
@@ -11,16 +11,15 @@
11 </div> 11 </div>
12 <div class="col-xs-12 col-sm-4"> 12 <div class="col-xs-12 col-sm-4">
13 <ul class="footer-list"> 13 <ul class="footer-list">
14 <li><p><a href="https://bugs.gnunet.org/">{{ _("Bug Tracker") }}</a></p></li> 14 <li><p><a href="https://gnunet.org/bugs/">{{ _("Bug Tracker") }}</a></p></li>
15 <li><p><a href="discussion.html">{{ _("Discussion") }}</a></p></li> 15 <li><p><a href="https://old.gnunet.org/bot/log/gnunet">{{ _("IRC logs") }}</a></p></li>
16 <li><p><a href="https://logs.gnunet.org/gnunet">{{ _("IRC logs") }}</a></p></li>
17 </ul> 16 </ul>
18 </div> 17 </div>
19 <div class="col-xs-12 col-sm-4"> 18 <div class="col-xs-12 col-sm-4">
20 <ul class="footer-list"> 19 <ul class="footer-list">
21 <li><p><a href="copyright.html">{{ _("Copyright Assignment") }}</a></p></li> 20 <li><p><a href="copyright.html">{{ _("Copyright Assignment") }}</a></p></li>
22 <li><p><a href="https://ci.gnunet.org/">{{ _("Continuous Integration") }}</a></p></li> 21 <li><p><a href="https://gnunet.org/buildbot/">{{ _("Continuous Integration") }}</a></p></li>
23 <li><p><a href="https://bibliography.gnunet.org/">{{ _("Bibliography") }}</a></p></li> 22 <li><p><a href="https://old.gnunet.org/bibliography">{{ _("Bibliography") }}</a></p></li>
24 </ul> 23 </ul>
25 </div> 24 </div>
26 </div> 25 </div>
diff --git a/common/navigation.j2.inc b/common/navigation.j2.inc
index 3bc62238..c82302ac 100644
--- a/common/navigation.j2.inc
+++ b/common/navigation.j2.inc
@@ -9,7 +9,7 @@
9 <li><a href="faq.html">{{ _("FAQ") }}</a></li> 9 <li><a href="faq.html">{{ _("FAQ") }}</a></li>
10 <li><a href="glossary.html">{{ _("Glossary") }}</a></li> 10 <li><a href="glossary.html">{{ _("Glossary") }}</a></li>
11 <li><a href="copyright.html">{{ _("Copyright for Contributors") }} </a></li> 11 <li><a href="copyright.html">{{ _("Copyright for Contributors") }} </a></li>
12 <li><a href="https://bibliography.gnunet.org/">{{ _("Bibliography") }}</a></li> 12 <li><a href="https://old.gnunet.org/bibliography">{{ _("Bibliography") }}</a></li>
13 </ul> 13 </ul>
14 </li> 14 </li>
15 </ul> 15 </ul>
diff --git a/developers.html.j2 b/developers.html.j2
index 0b2d20e1..c17cf991 100644
--- a/developers.html.j2
+++ b/developers.html.j2
@@ -2,52 +2,7 @@
2{% block body_content %} 2{% block body_content %}
3<div class="jumbotron"> 3<div class="jumbotron">
4 <div class="text-center"> 4 <div class="text-center">
5 <h1>{{ _("Taler for developers") }}</h1> 5 <h1>{{ _("GNUnet for developers") }}</h1>
6 </div>
7</div>
8
9<div class="container">
10 <div class="row">
11 <div class="col-lg-6">
12 <h3>{{ _("Free") }}</h3>
13
14 <p>
15 {% trans %}
16 GNU Taler is free software implementing an open
17 protocol. Anybody is welcome to integrate our reference
18 implementation into their applications. Different
19 components of Taler are being made available under
20 different licenses. The Affero GPLv3+ is used for the
21 exchange, the LGPLv3+ is used for reference code
22 demonstrating integration with merchant platforms, and
23 licenses like GPLv3+ are used for
24 wallets and related customer-facing software. We are
25 open for constructive suggestions for maximizing the
26 adoption of this payment platform.
27 {% endtrans %}
28 </p>
29
30 </div>
31 <div class="col-lg-6">
32 <h3>{{ _("RESTful") }}</h3>
33
34 <p>
35 {% trans %}
36 Taler is designed to work on the Internet. To
37 ensure that Taler payments can work with
38 restrictive network setups, Taler uses a RESTful
39 protocol over HTTP or HTTPS. Taler's security does
40 not depend upon the use of HTTPS, but obviously
41 merchants may choose to offer HTTPS for consistency
42 and because it generally is better for privacy
43 compared to HTTP. Taler uses JSON to encode
44 structure data, making it easy to integrate Taler
45 with existing Web applications. Taler's protocol
46 is documented in
47 detail at <a href="https://docs.taler.net/">docs.taler.net</a>.
48 {% endtrans %}
49 </p>
50 </div>
51 </div> 6 </div>
52</div> 7</div>
53 8
@@ -55,32 +10,23 @@
55<div class="container"> 10<div class="container">
56 <div class="row"> 11 <div class="row">
57 <div class="col-lg-4"> 12 <div class="col-lg-4">
58 <h3>{{ _("Code") }}</h3> 13 <h3>{{ _("Git") }}</h3>
59 14
60 <p> 15 <p>
61 {% trans %} 16 {% trans %}
62 Taler is currently primarily developed by a 17 A list of our Git
63 research team at <a href="http://www.inria.fr/">Inria</a> and
64 <a href="https://gnunet.org/">GNUnet</a>. However,
65 contributions from anyone are welcome. Our Git
66 repositories can be cloned using the Git and HTTP
67 access methods against <tt>git.taler.net</tt> with
68 the name of the respective repository. A list of
69 repositories can be found in 18 repositories can be found in
70 our <a href="https://git.taler.net/">GitWeb</a>. 19 our <a href="https://gnunet.org/git/">GitWeb</a>.
71 {% endtrans %} 20 {% endtrans %}
72 </p> 21 </p>
73 </div> 22 </div>
74 <div class="col-lg-4"> 23 <div class="col-lg-4">
75 <h3>{{ _("Documentation") }}</h3> 24 <h3>{{ _("Bibliography") }}</h3>
76 25
77 <p> 26 <p>
78 {% trans %} 27 {% trans %}
79 In addition to this website, the <a 28 Technical papers can be found in
80 href="https://git.taler.net/">documented code</a> and 29 our <a href="https://old.gnunet.org/bibliography">bibliography</a>.
81 the <a href="https://docs.taler.net/">API
82 documentation</a>. Technical papers can be found in
83 our <a href="bibliography.html">bibliography</a>.
84 {% endtrans %} 30 {% endtrans %}
85 </p> 31 </p>
86 </div> 32 </div>
@@ -91,7 +37,7 @@
91 {% trans %} 37 {% trans %}
92 We have a mailing list for developer discussions. 38 We have a mailing list for developer discussions.
93 You can subscribe to or read the list archive at 39 You can subscribe to or read the list archive at
94 <a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>. 40 <a href="http://lists.gnu.org/mailman/listinfo/gnunet-developers">http://lists.gnu.org/mailman/listinfo/gnunet-developers</a>.
95 {% endtrans %} 41 {% endtrans %}
96 </p> 42 </p>
97 </div> 43 </div>
@@ -105,7 +51,7 @@
105 We have <a href="https://buildbot.net/">Buildbot</a> 51 We have <a href="https://buildbot.net/">Buildbot</a>
106 automation tests to detect regressions and check for 52 automation tests to detect regressions and check for
107 portability at <a 53 portability at <a
108 href="https://buildbot.taler.net/">buildbot.taler.net</a>. 54 href="https://gnunet.org/buildbot/gnunet/">https://gnunet.org/buildbot/gnunet/</a>.
109 {% endtrans %} 55 {% endtrans %}
110 </p> 56 </p>
111 </div> 57 </div>
@@ -118,7 +64,7 @@
118 <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a> 64 <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a>
119 to analyze the code coverage of our tests, the 65 to analyze the code coverage of our tests, the
120 results are available 66 results are available
121 at <a href="https://lcov.taler.net/">lcov.taler.net</a>. 67 at <a href="https://gnunet.org/coverage/">https://gnunet.org/coverage/</a>.
122 {% endtrans %} 68 {% endtrans %}
123 </p> 69 </p>
124 </div> 70 </div>
@@ -131,7 +77,7 @@
131 use <a href="https://gnunet.org/gauger">Gauger</a> 77 use <a href="https://gnunet.org/gauger">Gauger</a>
132 for performance regression analysis of the exchange 78 for performance regression analysis of the exchange
133 backend 79 backend
134 at <a href="https://gauger.taler.net/">gauger.taler.net</a>. 80 at <a href="https://gnunet.org/gauger/">https://gnunet.org/gauger/</a>.
135 {% endtrans %} 81 {% endtrans %}
136 </p> 82 </p>
137 </div> 83 </div>
@@ -139,140 +85,4 @@
139</div> 85</div>
140</div> 86</div>
141 87
142<div class="container">
143
144 <div class="col-lg-12">
145 <h3 id="overview">{{ _("Taler system overview") }}</h3>
146
147 <p>
148 {% trans %}
149 The Taler system consists of protocols executed among
150 a number of actors as illustrated in the illustration on the right.
151 Typical transactions involve the following steps:
152 {% endtrans %}
153 </p>
154
155 <img src="{{ svg_localized('images/system') }}" alt="{{_("system overview")}}" style="float: right; margin: 50px 5px 5px 5px;" width="50%">
156 <ol>
157 <li>
158 {% trans %}
159 A customer instructs his <b>bank</b> to
160 transfer funds from his account to the Taler
161 exchange (top left). In the subject of the
162 transaction, he includes an authentication
163 token from his electronic <b>wallet</b>. In
164 Taler terminology, the customer creates a
165 reserve at the exchange.
166 {% endtrans %}
167 </li>
168
169 <li>
170 {% trans %}
171 Once the exchange has received the wire
172 transfer, it allows the customer's electronic
173 wallet to <b>withdraw</b> electronic coins.
174 The electronic coins are digital
175 representations of the original currency from
176 the transfer. It is important to note that the
177 exchange does not learn the &quot;serial
178 numbers&quot; of the coins created in this
179 process, so it cannot tell later which customer
180 purchased what at which merchant. The use of
181 Taler does not change the currency or the total
182 value of the funds (except for fees which the
183 exchange may charge for the service).
184 {% endtrans %}
185 </li>
186
187 <li>
188 {% trans %}
189 Once the customer has the digital coins in his
190 wallet, the wallet can be used to <b>spend</b>
191 the coins with merchant portals that support
192 the Taler payment system and accept the
193 respective exchange as a business partner
194 (bottom arrow). This creates a digital contract
195 signed by the customer's coins and the
196 merchant. If necessary, the customer can later
197 use this digitally signed contract in a court
198 of law to prove the exact terms of the contract
199 and that he paid the respective amount. The
200 customer does not learn the banking details of
201 the merchant, and Taler does not require the
202 merchant to learn the identity of the
203 customer. Naturally, the customer can spend any
204 fraction of his digital coins (the system takes
205 care of customers getting change).
206 {% endtrans %}
207 </li>
208
209 <li>
210 {% trans %}
211 Merchants receiving digital
212 coins <b>deposit</b> the respective claims
213 that resulted from the contract signing with
214 the customer at the exchange to redeem the
215 coins. The deposit step does not reveal the
216 details of the contract between the customer
217 and the merchant or the identity of the
218 customer to the exchange in any way. However,
219 the exchange does learn the identity of the
220 merchant via the provided bank routing
221 information. The merchant can, for example
222 when compelled by the state for taxation,
223 provide information linking the individual
224 deposit to the respective contract signed by
225 the customer. Thus, the exchange's database
226 allows the state to enforce that merchants pay
227 applicable taxes (and do not engage in illegal
228 contracts).
229 {% endtrans %}
230 </li>
231
232 <li>
233 {% trans %}
234 Finally, the exchange transfers funds
235 corresponding to the digital coins redeemed by
236 the merchants to the merchant's <b>bank</b>
237 account. The exchange may combine multiple
238 small transactions into one larger bank
239 transfer. The merchant can query the exchange
240 about the relationship between the bank
241 transfers and the individual claims that were
242 deposited.
243 {% endtrans %}
244 </li>
245
246 <li>
247 {% trans %}
248 Most importantly, the exchange keeps
249 cryptographic proofs that allow it to
250 demonstrate that it is operating correctly to
251 third parties. The system requires an
252 external <b>auditor</b>, such as a
253 government-appointed financial regulatory body,
254 to frequently verify the exchange's databases
255 and check that its bank balance matches the
256 total value of the remaining coins in
257 circulation.
258 {% endtrans %}
259 </li>
260
261 <li>
262 {% trans %}
263 Without the auditor, the exchange operators
264 could embezzle funds they are holding in
265 reserve. Customers and merchants cannot cheat
266 each other or the exchange. If any party's
267 computers are compromised, the financial damage
268 is limited to the respective party and
269 proportional to the funds they have in
270 circulation during the period of the
271 compromise.
272 {% endtrans %}
273 </li>
274 </ol>
275 <p></p>
276 </div>
277</div> <!-- /container -->
278{% endblock body_content %} 88{% endblock body_content %}
diff --git a/faq.html.j2 b/faq.html.j2
index edf3da60..e385c7b2 100644
--- a/faq.html.j2
+++ b/faq.html.j2
@@ -2,75 +2,16 @@
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<div class="container">
4 4
5<h2>{{ _("How is Taler related to Bitcoin or Blockchains?") }}</h2> 5<h2>{{ _("Q?") }}</h2>
6{% trans %} 6{% trans %}
7<p>Taler does not use any Blockchain technology or Bitcoin directly. 7<p>
8Taler is not based on proof-of-work or any other distributed consensus 8A:
9mechanism. Instead Taler is based on blind signatures.</p> 9</p>
10{% endtrans %} 10{% endtrans %}
11{% trans %} 11{% trans %}
12<p>It would be possible, however, to withdraw coins denominated in 12<p>
13Bitcoin into a Taler wallet (with an appropriate exchange), which 13A:
14would give some benefits over plain Bitcoin, such as instant 14</p>
15confirmation times.</p>
16{% endtrans %}
17
18<h2>{{ _("Where is the balance in my wallet stored?") }}</h2>
19{% trans %}
20<p>Your wallet stores digital coins and thus ultimately your computer
21holds your balance. The exchange keeps funds matching all unspent
22coins in an escrow bank account.</p>
23{% endtrans %}
24
25<h2>{{ _("What if my wallet is lost?") }}</h2>
26{% trans %}
27<p>Since the digital coins of value in your wallet are anonymized, the
28exchange can not assist you in recovering a lost or stolen wallet.
29Just like with a physical wallet for cash, you are responsible for
30keeping it safe.</p>
31{% endtrans %}
32{% trans %}
33<p>The risk of losing a wallet can be mitigated by making backups or
34keeping the balance reasonably low.</p>
35{% endtrans %}
36
37<h2>{{ _("What if my computer is hacked?") }}</h2>
38{% trans %}
39<p>In case of a compromise of one of your devices, an attacker can
40spend coins from your wallet. Checking your balance might reveal
41to you that your device has been compromised.</p>
42{% endtrans %}
43
44<h2>{{ _("Can I send money to my friend with Taler?") }}</h2>
45{% trans %}
46<p>If your friend provides goods or services for you in exchange for a
47payment, they can easily set up a Taler merchant and receive the
48payment in their bank account.</p>
49{% endtrans %}
50{% trans %}
51<p>Future versions of the Taler wallet may allow exchanging coins
52among friends directly as well.</p>
53{% endtrans %}
54
55
56<h2>{{ _("How does Taler handle payments in different currencies?") }}</h2>
57{% trans %}
58<p>Taler wallets can store digital coins corresponding to multiple
59different currencies such as the Euro, US Dollars or Bitcoins.</p>
60{% endtrans %}
61{% trans %}
62<p>Taler currently does not offer conversion between currencies.</p>
63{% endtrans %}
64
65<h2>{{ _("How does Taler protect my privacy?") }}</h2>
66{% trans %}
67
68<p>Your wallet stores digital coins that are <a
69href="https://en.wikipedia.org/wiki/Blind_signature">blindly
70signed</a> by an exchange. The use of a blind signature protects your
71privacy as it prevents the exchange from knowing which coin it signed
72for which customer.</p>
73
74{% endtrans %} 15{% endtrans %}
75 16
76</div> 17</div>
diff --git a/financial-news.html.j2 b/financial-news.html.j2
deleted file mode 100644
index 8ebe2d42..00000000
--- a/financial-news.html.j2
+++ /dev/null
@@ -1,43 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3
4<div class="jumbotron">
5 <div class="container text-center">
6 <h1>{{ _("Financial News") }}</h1>
7 <div class="col-lg-12">
8 <p>
9 {% trans %}
10 This page explains (only in English) how Taler can change ongoing
11 developments in the financial industry.
12 {% endtrans %}
13 </p>
14 </div>
15 </div>
16</div>
17
18<div class="container">
19 <div class="row">
20 <div class="col-lg-12">
21
22{% include "financial-news/2017-07-20.inc" %}
23{% include "financial-news/2017-04-04.inc" %}
24{% include "financial-news/2017-04-03.inc" %}
25{% include "financial-news/2016-10-26.inc" %}
26{% include "financial-news/2016-10-24.inc" %}
27{% include "financial-news/2016-10-21.inc" %}
28{% include "financial-news/2016-10-15.inc" %}
29{% include "financial-news/2016-07-23.inc" %}
30{% include "financial-news/2015-12-22.inc" %}
31{% include "financial-news/2015-04-30.inc" %}
32{% include "financial-news/2015-03-17.inc" %}
33{% include "financial-news/2014-12-06.inc" %}
34{% include "financial-news/2014-12-05.inc" %}
35{% include "financial-news/2014-11-13.inc" %}
36{% include "financial-news/2014-09-10.inc" %}
37{% include "financial-news/2013-09-15.inc" %}
38
39 </div>
40 </div>
41</div> <!-- /container -->
42
43{% endblock body_content %}
diff --git a/financial-news/2013-09-15.inc b/financial-news/2013-09-15.inc
deleted file mode 100644
index 2f13aec2..00000000
--- a/financial-news/2013-09-15.inc
+++ /dev/null
@@ -1,13 +0,0 @@
1 <h3>15-9-2013: NSA follows the Money</h3>
2 <p>Despite the EU allowing the NSA access to financial transaction data to
3 track terrorists and organized crime, the NSA saw it necessary to
4 target international payment processors including SWIFT and Visa.
5 As terrorism and organized crime are covered by legal means, industrial
6 espionage to improve the US economy is the only remaining US national
7 interest within the NSA's mandate that would explain this illegal activity.<br>
8 With Taler, exchanges will only learn the value of a merchant's transactions,
9 not who paid or for what (governments may learn what was sold). Thus,
10 the Taler exchange is a significantly less interesting target for industrial
11 espionage.
12 </p>
13 <p><a class="btn btn-info" href="http://www.spiegel.de/international/world/spiegel-exclusive-nsa-spies-on-international-bank-transactions-a-922276.html" role="button">Source</a></p>
diff --git a/financial-news/2014-09-10.inc b/financial-news/2014-09-10.inc
deleted file mode 100644
index 2b886bc9..00000000
--- a/financial-news/2014-09-10.inc
+++ /dev/null
@@ -1,17 +0,0 @@
1 <h3>10-9-2014: PayPal accounts hacked with a click</h3>
2 <p>Yasser Ali reports a now patched vulnerability in PayPal that would
3 have allowed him to reset other user's passwords and take over their
4 accounts. This is unlikely to be the last vulnerability found in
5 account-based payment systems.<br>
6 In Taler, customers do not have accounts with usernames, passwords
7 or associated e-mail addresses. Instead, Taler uses reserves which
8 are represented by a private key on the owner's computer. Users
9 create a reserve by depositing currency at a Taler exchange, and can then
10 withdraw digital coins from that reserve using the respective private
11 key. There is no limit on the number of reserves a user can have, and
12 even hacking the Taler exchange would not provide an adversary with access to
13 user's reserves (as the Taler exchange does not have the private keys).
14 Stealing in Taler requires breaking into each customer's computer to
15 extract the reserve keys or the coins from the digital wallet.
16 </p>
17 <p><a class="btn btn-info" href="http://yasserali.com/hacking-paypal-accounts-with-one-click/" role="button">Source</a></p>
diff --git a/financial-news/2014-11-13.inc b/financial-news/2014-11-13.inc
deleted file mode 100644
index 39a496e4..00000000
--- a/financial-news/2014-11-13.inc
+++ /dev/null
@@ -1,12 +0,0 @@
1 <h3>13-11-2014: Visa and MasterCard's to move from passwords to biometrics</h3>
2 <p>Visa and MasterCard are planning to &quot;simplify hated verification
3 systems&quot; by moving from passwords to security codes on mobiles
4 and biometrics. Continuing their flawed insistence on verifying identity,
5 Visa and MasterCard will thus build a very personal picture of their
6 customers, from shopping habbits down to their cardiac rhythm.<br>
7 Taler does not require a customer's identity to verify a payment, as the
8 payment system cryptographically verifies the coins. Thus, Taler does
9 not have to intrude into any personal detail of a citizen's life, and
10 certainly not their private medical data.
11 </p>
12 <p><a class="btn btn-info" href="http://www.theguardian.com/money/2014/nov/13/mastercard-visa-kill-off-verification-systems" role="button">Source</a></p>
diff --git a/financial-news/2014-12-05.inc b/financial-news/2014-12-05.inc
deleted file mode 100644
index 9e65b078..00000000
--- a/financial-news/2014-12-05.inc
+++ /dev/null
@@ -1,21 +0,0 @@
1 <h3>5-12-2014: PayPal for Android gains fingerprint support</h3>
2 <p>Following Visa and MasterCard's move to biometrics, PayPal
3 now supports authenticating purchases with fingerprint
4 recognition.
5 Hence, police can now <a href="http://www.findlaw.co.uk/law/government/civil_rights/500374.html">forcefully take user's fingerprints</a> and
6 <a href="http://www.wired.com/2013/09/the-unexpected-result-of-fingerprint-authentication-that-you-cant-take-the-fifth/">access their mobile computers</a> and possibly empty their electronic wallets
7 <a href="http://www.cbc.ca/news/world/american-shakedown-police-won-t-charge-you-but-they-ll-grab-your-money-1.2760736">in addition to their physical wallets</a>.<br>
8 For Taler, we advise users to protect their digital wallets using
9 passphrases.
10 </p>
11 <p><a class="btn btn-info" href="http://www.digitalspy.co.uk/tech/news/a614631/paypal-for-android-gains-fingerprint-support-on-samsung-devices.html" role="button">Source</a></p>
12
13 <h3>5-12-2014: US judge rules banks can sue merchant for bad security</h3>
14 <p>Merchants taking credit card data from customers now have to additionally
15 fear banks suing them for losses. It is not suggested that the merchant
16 in question was not in compliance with PCI DSS security audit procedures.<br>
17 With Taler, merchants never handle sensitive personal credit data, and
18 thus neither customers, exchanges nor governments would even have standing to
19 sue merchants in court. Thus, if a merchant system were to be compromised,
20 the damage would be limited to the merchant's own operations.
21 <p><a class="btn btn-info" href="http://arstechnica.com/tech-policy/2014/12/judge-rules-that-banks-can-sue-target-for-2013-credit-card-hack/" role="button">Source</a></p>
diff --git a/financial-news/2014-12-06.inc b/financial-news/2014-12-06.inc
deleted file mode 100644
index bc0a6e7e..00000000
--- a/financial-news/2014-12-06.inc
+++ /dev/null
@@ -1,8 +0,0 @@
1 <h3>6-12-2014: Visa and MasterCard's uncompetitive business practices</h3>
2 <p>The Visa and MasterCard duopoly has eliminated competition among
3 banks, setting fees that take away a significant share of profits from
4 small merchants.<br>
5 Taler is an open standard with free software
6 implementations, so merchants do not have to fear a lack of competition.
7 </p>
8 <p><a class="btn btn-info" href="http://www.ocregister.com/articles/gas-644344-card-fees.html" role="button">Source</a></p>
diff --git a/financial-news/2015-03-17.inc b/financial-news/2015-03-17.inc
deleted file mode 100644
index 8cdebfe7..00000000
--- a/financial-news/2015-03-17.inc
+++ /dev/null
@@ -1,9 +0,0 @@
1 <h3>17-3-2015: Pointing Fingers in Apple Pay Fraud</h3>
2 <p>Apple Pay may be easy to use, but the simplistic
3 user identification creates opportunities for fraud,
4 resulting in much higher fraud rates than even with traditional
5 credit card systems.<br>
6 Taler does not require user identification, enabling
7 ease of use while also being effective against fraud.
8 </p>
9 <p><a class="btn btn-info" href="http://www.nytimes.com/2015/03/17/business/banks-find-fraud-abounds-in-apple-pay.html?_r=0" role="button">Source</a></p>
diff --git a/financial-news/2015-04-30.inc b/financial-news/2015-04-30.inc
deleted file mode 100644
index bd0e23d1..00000000
--- a/financial-news/2015-04-30.inc
+++ /dev/null
@@ -1,12 +0,0 @@
1 <h3>30-4-2015: 1970 Researchers Predicted Debit Cards Would be Great for Surveillance</h3>
2 <p>&quot;Suppose you were an advisor to the head of the KGB,
3 the Soviet Secret Police. Suppose you are given the
4 assignment of designing a system for the surveillance of all
5 citizens and visitors within the boundaries of the USSR. The
6 system is not to be too obtrusive or obvious. What would be
7 your decision?&quot;<br>
8 The think tank RAND essentially answered this question with
9 a blueprint for modern payment systems. Taler offers an
10 escape from the financial panopticon.
11 </p>
12 <p><a class="btn btn-info" href="http://paleofuture.gizmodo.com/1970s-researchers-predicted-debit-cards-would-be-great-1699216972" role="button">Source</a></p>
diff --git a/financial-news/2015-12-22.inc b/financial-news/2015-12-22.inc
deleted file mode 100644
index c66cb4ac..00000000
--- a/financial-news/2015-12-22.inc
+++ /dev/null
@@ -1,10 +0,0 @@
1 <h3>22-12-2015: Sicherheitsforscher hacken das EC-Bezahlsystem</h3>
2 <p>Security researchers found serious security flaws in the German &quot;electronic cash&quot; system
3 which enable criminals to withdraw funds from merchant accounts based on the information printed
4 on receipts and other information obtained from public sources or point-of-sales terminals purchased
5 online.<br>
6 The German &quot;electronic cash&quot; system is based on the &quot;Poseidon&quot; protocol, for
7 which there is no publicly accessible specification or reference implementation. This has allowed
8 such major security holes to persist for decades.
9 </p>
10 <p><a class="btn btn-info" href="http://www.zeit.de/digital/datenschutz/2015-12/electronic-cash-bezahlsystem-terminals-gehackt" role="button">Source</a></p>
diff --git a/financial-news/2016-07-23.inc b/financial-news/2016-07-23.inc
deleted file mode 100644
index 49955bde..00000000
--- a/financial-news/2016-07-23.inc
+++ /dev/null
@@ -1,9 +0,0 @@
1 <h3>23-07-2016: How banks are refusing to shoulder responsibility for fraud</h3>
2 <p>Banks are naturally unhappy about shouldering the cost for fraud, and use
3 various tricks to impose the costs on their customers without providing
4 adequate help to minimize fraud.<br>
5 With GNU Taler, cryptography ensures that identity theft and many related
6 types of fraud are no longer possible, allowing banks to offer customers
7 a payment experience where neither side needs to worry about fraud.
8 </p>
9 <p><a class="btn btn-info" href="http://www.telegraph.co.uk/personal-banking/current-accounts/how-banks-are-refusing-to-shoulder-responsibility-for-fraud/" role="button">Source</a></p>
diff --git a/financial-news/2016-10-15.inc b/financial-news/2016-10-15.inc
deleted file mode 100644
index 2954dc1b..00000000
--- a/financial-news/2016-10-15.inc
+++ /dev/null
@@ -1,7 +0,0 @@
1 <h3>15-10-2016: Thousands of online stores found skimming</h3>
2 <p>Security researchers found evidence of adversaries targeting online shops offering credit cards
3 to steal and resell credit card credentials.<br>
4 With GNU Taler, shops would never receive sensitive personal information such as credit cards,
5 thus hacked online shops would not create such hassles for consumers.
6 </p>
7 <p><a class="btn btn-info" href="https://gwillem.gitlab.io/2016/10/11/5900-online-stores-found-skimming/" role="button">Source</a></p>
diff --git a/financial-news/2016-10-21.inc b/financial-news/2016-10-21.inc
deleted file mode 100644
index 47cad2ca..00000000
--- a/financial-news/2016-10-21.inc
+++ /dev/null
@@ -1,8 +0,0 @@
1 <h3>21-10-2016: Indian banks warn 3.2 million customers</h3>
2 <p>A major data breach of Indian banks forced these institutions to warn 3.2 million
3 customers that their accounts might have been compromised and that they need
4 to obtain new bank cards and PIN numbers.<br>
5 With GNU Taler, banks can implement privacy by design and minimize data collection,
6 minimizing the impact of security breaches and satisfying GDPR regulations in Europe.
7 </p>
8 <p><a class="btn btn-info" href="http://www.heise.de/newsticker/meldung/Vermutliche-Datenpanne-Indische-Banken-warnen-3-2-Millionen-Kunden-3356582.html" role="button">Source</a></p>
diff --git a/financial-news/2016-10-24.inc b/financial-news/2016-10-24.inc
deleted file mode 100644
index f7bee43a..00000000
--- a/financial-news/2016-10-24.inc
+++ /dev/null
@@ -1,10 +0,0 @@
1 <h3>24-10-2016: ApplePay starts in France</h3>
2 <p>With ApplePay starting in France, pressure on
3 European banks increase as they are set to
4 lose market share to big technology providers.<br>
5 With GNU Taler, we could establish an open standard with a level
6 playing field preserving the independence of national economies
7 by establishing a commons that protects critical infrastructure
8 from domination by a handful of global players.
9 </p>
10 <p><a class="btn btn-info" href="http://www.heise.de/newsticker/meldung/Apple-Pay-startet-in-Frankreich-3272412.html" role="button">Source</a></p>
diff --git a/financial-news/2016-10-26.inc b/financial-news/2016-10-26.inc
deleted file mode 100644
index 7cfb01bd..00000000
--- a/financial-news/2016-10-26.inc
+++ /dev/null
@@ -1,10 +0,0 @@
1 <h3>24-10-2016: Alipay gains acceptance in US and Europe</h3>
2 <p>With Alipay being increasingly accepted in retail stores in US and Europe,
3 European banks continue to lose market share to big technology
4 providers.<br>
5 With GNU Taler, we could establish an open standard with a level
6 playing field preserving the independence of national economies
7 by establishing a commons that protects critical infrastructure
8 from domination by a handful of global players.
9 </p>
10 <p><a class="btn btn-info" href="http://www.nfcworld.com/2016/10/24/347979/alipay-gains-acceptance-us-europe/" role="button">Source</a></p>
diff --git a/financial-news/2017-04-03.inc b/financial-news/2017-04-03.inc
deleted file mode 100644
index 269fb29d..00000000
--- a/financial-news/2017-04-03.inc
+++ /dev/null
@@ -1,12 +0,0 @@
1 <h3>03-04-2017: Amazon launches Amazon Cash</h3>
2 <p>Despite Amazon being in the position of being allowed to keep
3 your credit card on file to enable faster payments, they have
4 now moved to enable payments without credit cards.
5 <br>
6 With GNU Taler, cash-based payments for customers without
7 credit cards would be possible not only for big brands that
8 can sell tokens at participating retailers, but for all online
9 stores as GNU Taler is an open standard and not another
10 walled-garden lock-in payment system.
11 </p>
12 <p><a class="btn btn-info" href="https://techcrunch.com/2017/04/03/amazon-launches-amazon-cash-a-way-to-shop-its-site-without-a-bank-card/" role="button">Source</a></p>
diff --git a/financial-news/2017-04-04.inc b/financial-news/2017-04-04.inc
deleted file mode 100644
index 81467914..00000000
--- a/financial-news/2017-04-04.inc
+++ /dev/null
@@ -1,12 +0,0 @@
1 <h3>04-04-2017: WhatsApp to offer person-to-person payments in India</h3>
2 <p>With Indian demonetization policy pushing the country towards
3 a cashless society, it was only a question of time until the
4 Big Data oligopoly would make its move to take over the country's
5 economy.
6 <br>
7 With GNU Taler, India would maintain digital sovereignty, and
8 the privacy of citizens spending digital cash would
9 be preserved while achiving the laudable income transparency and
10 anti-counterfeiting goals of the Indian government.
11 </p>
12 <p><a class="btn btn-info" href="http://mashable.com/2017/04/04/whatsapp-person-to-person-payment-india/#_CZ7RRkKaiqN" role="button">Source</a></p>
diff --git a/financial-news/2017-07-20.inc b/financial-news/2017-07-20.inc
deleted file mode 100644
index 36887edd..00000000
--- a/financial-news/2017-07-20.inc
+++ /dev/null
@@ -1,10 +0,0 @@
1 <h3>20-07-2017: Sofort&uuml;berweisung unreasonable</h3>
2 <p>The German Federal High Court of Justice has decided that
3 the online payment system Sofort&uuml;berweisung is
4 unreasonable, and thus must not be the only payment option offered
5 without additional fees for customers in Germany.
6 <br>
7 With GNU Taler, inexpensive instant payments that respect customers
8 privacy will be possible.
9 </p>
10 <p><a class="btn btn-info" href="https://www.heise.de/newsticker/meldung/BGH-Sofortueberweisung-darf-nicht-einziges-Gratis-Bezahlverfahren-sein-3777580.html" role="button">Source</a></p>
diff --git a/glossary.html.j2 b/glossary.html.j2
index 03cb493e..a8ad7dd0 100644
--- a/glossary.html.j2
+++ b/glossary.html.j2
@@ -3,189 +3,10 @@
3<div class="container"> 3<div class="container">
4 4
5<dl> 5<dl>
6<dt>{{ _("auditor") }}</dt> 6<dt>{{ _("term") }}</dt>
7 <dd> 7 <dd>
8 {% trans %} 8 {% trans %}
9 trusted third party that verifies that the `exchange` is operating correctly 9 explanation
10 {% endtrans %}
11 </dd>
12<dt>{{ _("bank") }}</dt>
13 <dd>
14 {% trans %}
15 traditional financial service provider who offers wire `transfers` between accounts
16 {% endtrans %}
17 </dd>
18<dt>{{ _("coin") }}</dt>
19 <dd>
20 {% trans %}
21 coins are individual token representing a certain amount of value, also known as the `denomination` of the coin
22 {% endtrans %}
23 </dd>
24<dt>{{ _("contract") }}</dt>
25 <dd>
26 {% trans %}
27 the proposal signed by the wallet.
28 {% endtrans %}
29 </dd>
30<dt>{{ _("denomination") }}</dt>
31 <dd>
32 {% trans %}
33 unit of currency, specifies both the currency and the face value of a `coin`
34 {% endtrans %}
35 </dd>
36<dt>{{ _("denomination key") }}</dt>
37 <dd>
38 {% trans %}
39 RSA key used by the exchange to certify that a given `coin` is valid and of a particular `denomination`
40 {% endtrans %}
41 </dd>
42<dt>{{ _("deposit") }}</dt>
43 <dd>
44 {% trans %}
45 operation by which a merchant passes coins to an exchange, expecting the exchange to credit his `bank` account in the future using a wire `transfer`
46 {% endtrans %}
47 </dd>
48<dt>{{ _("dirty") }}</dt>
49 <dd>
50 {% trans %}
51 a `coin` is dirty if its public key may be known to an entity other than the customer, thereby creating the danger of some entity being able to link multiple transactions of coin's owner if the coin is not refreshed first
52 {% endtrans %}
53 </dd>
54<dt>{{ _("exchange") }}</dt>
55 <dd>
56 {% trans %}
57 Taler's payment service provider. Issues eletronic `coins` during `withdrawal` and redeems them when they are `deposited` by merchants.
58 {% endtrans %}
59 </dd>
60<dt>{{ _("extension") }}</dt>
61 <dd>
62 {% trans %}
63 implementation of a `wallet` for browsers
64 {% endtrans %}
65 </dd>
66<dt>{{ _("fresh coin") }}</dt>
67 <dd>
68 {% trans %}
69 a `coin` is fresh if its public key is only known to the customer
70 {% endtrans %}
71 </dd>
72<dt>{{ _("master key") }}</dt>
73 <dd>
74 {% trans %}
75 offline key used by the exchange to certify denomination keys and message signing keys
76 {% endtrans %}
77 </dd>
78<dt>{{ _("message signing key") }}</dt>
79 <dd>
80 {% trans %}
81 key used by the exchange to sign online messages, other than coins
82 {% endtrans %}
83 </dd>
84<dt>{{ _("offer") }}</dt>
85 <dd>
86 {% trans %}
87 specification of the details of a transaction, specifies the payment obligations
88 for the customer (i.e. the amount), the deliverables of the merchant and other
89 related information, such as deadlines or locations; However, it lacks some
90 information that the backend is supposed to provide.
91 In other words, after the backend adds the missing information to the offer and
92 signs it, it becomes a proposal.
93 {% endtrans %}
94 </dd>
95<dt>{{ _("owner") }}</dt>
96 <dd>
97 {% trans %}
98 a `coin` is owned by the entity that knows the private key of the coin
99 {% endtrans %}
100 </dd>
101<dt>{{ _("proof") }}</dt>
102 <dd>
103 {% trans %}
104 message that cryptographically demonstrates that a particular claim is correct
105 {% endtrans %}
106 </dd>
107<dt>{{ _("proposal") }}</dt>
108 <dd>
109 {% trans %}
110 a sketch that has been completed and signed by the merchant backend.
111 {% endtrans %}
112 </dd>
113<dt>{{ _("reserve") }}</dt>
114 <dd>
115 {% trans %}
116 funds set aside for future use; either the balance of a customer at the exchange ready for `withdrawal`, or the funds kept in the exchange's bank account to cover obligations from coins in circulation
117 {% endtrans %}
118 </dd>
119<dt>{{ _("refreshing") }}</dt>
120 <dd>
121 {% trans %}
122 operation by which a `dirty` `coin` is converted into one or more `fresh` coins
123 {% endtrans %}
124 </dd>
125<dt>{{ _("refund") }}</dt>
126 <dd>
127 {% trans %}
128 operation by which a merchant steps back from the right to funds that he obtained from a `deposit` operation, giving the right to the funds back to the customer
129 {% endtrans %}
130 </dd>
131<dt>{{ _("sharing") }}</dt>
132 <dd>
133 {% trans %}
134 users can share ownership of a `coin` by sharing access to the coin's private key, thereby allowing all co-owners to spend the coin at any time.
135 {% endtrans %}
136 </dd>
137<dt>{{ _("signing key") }}</dt>
138 <dd>
139 {% trans %}
140 see message signing key.
141 {% endtrans %}
142 </dd>
143<dt>{{ _("spending") }}</dt>
144 <dd>
145 {% trans %}
146 operation by which a customer gives a merchant the right to `deposit` coins in return for merchandise
147 {% endtrans %}
148 </dd>
149<dt>{{ _("transfer") }}</dt>
150 <dd>
151 {% trans %}
152 method of sending funds between `bank` accounts
153 {% endtrans %}
154 </dd>
155<dt>{{ _("transaction") }}</dt>
156 <dd>
157 {% trans %}
158 method by which ownership is exclusively transferred from one entity to another
159 {% endtrans %}
160 </dd>
161<dt>{{ _("transaction id") }}</dt>
162 <dd>
163 {% trans %}
164 unique number by which a merchant identifies a `transaction`
165 {% endtrans %}
166 </dd>
167<dt>{{ _("wallet") }}</dt>
168 <dd>
169 {% trans %}
170 software running on a customer's computer; withdraws, stores and spends coins
171 {% endtrans %}
172 </dd>
173<dt>{{ _("wire transfer") }}</dt>
174 <dd>
175 {% trans %}
176 see `transfer`
177 {% endtrans %}
178 </dd>
179<dt>{{ _("wire transfer identifier") }}</dt>
180 <dd>
181 {% trans %}
182 subject of a wire `transfer`; usually a random string to uniquely identify the `transfer`
183 {% endtrans %}
184 </dd>
185<dt>{{ _("withdrawal") }}</dt>
186 <dd>
187 {% trans %}
188 operation by which a `wallet` can convert funds from a reserve to fresh coins
189 {% endtrans %} 10 {% endtrans %}
190 </dd> 11 </dd>
191</dt> 12</dt>
diff --git a/governments.html.j2 b/governments.html.j2
deleted file mode 100644
index be7ce52a..00000000
--- a/governments.html.j2
+++ /dev/null
@@ -1,188 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3
4<div class="jumbotron">
5 <div class="container text-center">
6 <h1>{{ _("Advantages for Governments") }}</h1>
7 <p>
8 {% trans %}
9 Taler provides accountability to ensure business operate
10 legally, while also respecting civil liberties of
11 citizens. Taler is a payment system based on
12 open standards and free software. Taler needs
13 governments as they set a financial framework and act as
14 trusted regulators. Taler contributes to digital
15 sovereignty in the critical financial infrastructure.
16 {% endtrans %}
17 </p>
18 </div>
19</div>
20
21<!-- Example row of columns -->
22<div class="container adorn_h3_bracket">
23 <div class="row">
24 <div class="col-lg-6">
25 <h3>{{ _("Taxable") }}</h3>
26
27 <p>
28 {% trans %}
29 Taler was built with the goal of fighting corruption and
30 supporting taxation. With Taler, the receiver of any
31 form of payment is easily identified by the government,
32 and the merchant can be compelled to provide the contract
33 that was accepted by the customer. Governments can use
34 this data to tax businesses and individuals based on
35 their income, making tax evasion and black markets less
36 viable.
37 {% endtrans %}
38 </p>
39
40 <p>
41 {% trans %}
42 Thus, despite offering anonymity for citizens spending
43 digital cash to buy goods and services, Taler also
44 ensures that the state can observe incoming funds. This
45 can be used to ensure businesses engage only in legal
46 activities, and do not evade income tax, sales tax or
47 value-added tax. However, this observational capability
48 does not extend to the immediate personal domain. In
49 particular, monitoring does not cover shared access to
50 funds with trusted friends and family, or synchronizing
51 wallets across multiple devices.
52 {% endtrans %}
53 </p>
54
55 </p>
56 </div>
57 <div class="col-lg-6">
58 <h3>{{ _("Secure") }}</h3>
59
60 <p>
61 {% trans %}
62 Taler's payments are cryptographically secured. Thus,
63 customers, merchants and the Taler payment service provider
64 (the exchange) can mathematically
65 demonstrate their lawful behavior in court in case of
66 disputes. Financial damages are strictly limited,
67 improving economic security for individuals, merchants,
68 the exchange and the state.
69 {% endtrans %}
70 </p>
71
72 <p>
73 {% trans %}
74 As a payment service provider, the Taler exchange is
75 subject to financial regulation. Financial regulation and
76 regular audits are critical to establish trust. In
77 particular, the Taler design mandates the existence of an
78 independent auditor who checks cryptographic proofs that
79 accumulate at the exchange to ensure that the escrow
80 account is managed honestly. This ensures that the
81 exchange does not threaten the economy due to fraud.
82 {% endtrans %}
83 </p>
84 </div>
85 </div>
86 <div class="row">
87 <div class="col-lg-6">
88 <h3>{{ _("Libre") }}</h3>
89
90 <p>
91 {% trans %}
92 Taler is free software implementing an open protocol
93 standard. Thus, Taler will enable competition and avoid
94 the monopolization of payment systems that threatens
95 global political and financial stability today.
96 {% endtrans %}
97 </p>
98
99 </div>
100 <div class="col-lg-6">
101 <h3>{{ _("Efficient") }}</h3>
102
103 <p>
104 {% trans %}
105 Taler has an efficient design. Unlike
106 Blockchain-based payment systems, such as Bitcoin,
107 Taler will not threaten the availability of
108 national electric grids or (significantly)
109 contribute to environmental pollution.
110 {% endtrans %}
111 </p>
112 </div>
113 </div>
114</div>
115
116
117
118<div class="container-fluid c_acronym">
119 <div class="container">
120 <h2 id="documentation">{{ _("Taler and regulation") }}</h2>
121 <dl>
122 <dt>{{ _("Anti money laundering (AML)")}}</dt>
123 <dd>{{ _("With Taler, income is visible and can be tied to the contract signed by both parties.") }}</li>
124 <dt>{{ _("Know your customer (KYC)")}}</dt>
125 <dd>{{ _("In Taler, payer and payee are known by their bank accounts when withdrawing or depositing coins respectively") }}</dd>
126 <dt>{{ _("General Data Protection Regulation (GDPR)")}}</dt>
127 <dd>{{ _("Taler cryptographically protects citizen's privacy, and by design implements data minimization and privacy by default.") }}</dd>
128 <dt>{{ _("Payment Services Directive (PSD2)")}}</dt>
129 <dd>{{ _("Taler provides an open standard with public APIs contributing to a competitive banking sector.") }}</dt>
130 </dl>
131 </div>
132</div>
133
134
135<div class="container">
136<div class="col-lg-12">
137 <h2 id="overview">{{ _("Taler provides privacy and accountability") }}</h2>
138
139 <p>
140 {% trans %}
141 Taler assumes governments can observe traditional wire transfers
142 entering and leaving the Taler payment system. Starting with the
143 wire transfers, governments can obtain:
144 {% endtrans %}
145 <ul>
146
147 <li>
148 {% trans %}
149 The total amount of digital currency withdrawn by a
150 customer. The government can impose limits on how much
151 digital cash a customer can withdraw within a
152 given time frame.
153 {% endtrans %}
154 </li>
155
156 <li>
157 {% trans %}
158 The income received by any merchant via the Taler
159 system.
160 {% endtrans %}
161 </li>
162
163 <li>
164 {% trans %}
165
166 The exact details of the underlying contract that was
167 signed between customer and merchant. However, this
168 information would typically not include the identity
169 of the customer.
170 {% endtrans %}
171 </li>
172
173 <li>
174 {% trans %}
175 The amounts of digital coins legitimately withdrawn
176 by customers from the exchange, the value of
177 non-redeemed digital coins in customer's wallets, the
178 value and corresponding wire details of deposit
179 operations performed by merchants with the exchange,
180 and the income of the exchange from transaction fees.
181 {% endtrans %}
182 </li>
183 </ul>
184 </p>
185</div>
186</div>
187
188{% endblock body_content %}
diff --git a/images/gnunet-arch-full.svg b/images/gnunet-arch-full.svg
new file mode 100644
index 00000000..766f2b85
--- /dev/null
+++ b/images/gnunet-arch-full.svg
@@ -0,0 +1,648 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4<!-- Generated by graphviz version 2.38.0 (20140413.2041)
5 -->
6<!-- Title: dependencies Pages: 1 -->
7<svg width="1277pt" height="836pt"
8 viewBox="0.00 0.00 1276.81 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)">
10<title>dependencies</title>
11<polygon fill="white" stroke="none" points="-4,4 -4,-832 1272.81,-832 1272.81,4 -4,4"/>
12<!-- voting -->
13<g id="node1" class="node"><title>voting</title>
14<polygon fill="none" stroke="black" points="120.944,-743.562 80,-756 39.0559,-743.562 39.0942,-723.438 120.906,-723.438 120.944,-743.562"/>
15<text text-anchor="middle" x="80" y="-734.3" font-family="Times,serif" font-size="14.00">voting</text>
16</g>
17<!-- consensus -->
18<g id="node2" class="node"><title>consensus</title>
19<ellipse fill="none" stroke="black" cx="112" cy="-594" rx="46.2923" ry="18"/>
20<text text-anchor="middle" x="112" y="-590.3" font-family="Times,serif" font-size="14.00">consensus</text>
21</g>
22<!-- voting&#45;&gt;consensus -->
23<g id="edge1" class="edge"><title>voting&#45;&gt;consensus</title>
24<path fill="none" stroke="black" d="M121.028,-728.482C145.315,-721.103 174.155,-707.724 189,-684 197.487,-670.436 196.445,-662.162 189,-648 180.933,-632.654 166.19,-620.887 151.748,-612.383"/>
25<polygon fill="black" stroke="black" points="153.308,-609.247 142.857,-607.508 149.942,-615.385 153.308,-609.247"/>
26</g>
27<!-- identity -->
28<g id="node3" class="node"><title>identity</title>
29<ellipse fill="none" stroke="black" cx="282" cy="-450" rx="37.8943" ry="18"/>
30<text text-anchor="middle" x="282" y="-446.3" font-family="Times,serif" font-size="14.00">identity</text>
31</g>
32<!-- voting&#45;&gt;identity -->
33<g id="edge2" class="edge"><title>voting&#45;&gt;identity</title>
34<path fill="none" stroke="black" d="M58.5145,-723.377C45.8789,-714.02 31.0387,-700.353 24,-684 5.02284,-639.911 -2.50901,-616.016 24,-576 46.6577,-541.798 71.8444,-557.396 109,-540 158.351,-516.894 214.207,-487.564 248.77,-469.032"/>
35<polygon fill="black" stroke="black" points="250.781,-471.924 257.931,-464.105 247.466,-465.759 250.781,-471.924"/>
36</g>
37<!-- cadet -->
38<g id="node4" class="node"><title>cadet</title>
39<ellipse fill="none" stroke="black" cx="538" cy="-450" rx="29.4969" ry="18"/>
40<text text-anchor="middle" x="538" y="-446.3" font-family="Times,serif" font-size="14.00">cadet</text>
41</g>
42<!-- voting&#45;&gt;cadet -->
43<g id="edge3" class="edge"><title>voting&#45;&gt;cadet</title>
44<path fill="none" stroke="black" d="M72.0051,-723.243C55.682,-693.149 22.8306,-620.604 57,-576 70.8829,-557.877 390.653,-484.265 500.977,-459.316"/>
45<polygon fill="black" stroke="black" points="501.999,-462.673 510.983,-457.057 500.458,-455.845 501.999,-462.673"/>
46</g>
47<!-- secretsharing -->
48<g id="node5" class="node"><title>secretsharing</title>
49<ellipse fill="none" stroke="black" cx="123" cy="-666" rx="57.3905" ry="18"/>
50<text text-anchor="middle" x="123" y="-662.3" font-family="Times,serif" font-size="14.00">secretsharing</text>
51</g>
52<!-- voting&#45;&gt;secretsharing -->
53<g id="edge4" class="edge"><title>voting&#45;&gt;secretsharing</title>
54<path fill="none" stroke="black" d="M88.4954,-723.17C93.8716,-714.418 100.986,-702.837 107.357,-692.466"/>
55<polygon fill="black" stroke="black" points="110.45,-694.117 112.702,-683.764 104.486,-690.453 110.45,-694.117"/>
56</g>
57<!-- consensus&#45;&gt;cadet -->
58<g id="edge72" class="edge"><title>consensus&#45;&gt;cadet</title>
59<path fill="none" stroke="black" d="M146.507,-581.905C153.275,-579.85 160.34,-577.79 167,-576 236.135,-557.417 256.193,-562.96 324,-540 360.547,-527.625 367.474,-519.056 403,-504 437.068,-489.562 476.509,-474.236 503.927,-463.798"/>
60<polygon fill="black" stroke="black" points="505.344,-467.004 513.453,-460.185 502.862,-460.459 505.344,-467.004"/>
61</g>
62<!-- set -->
63<g id="node24" class="node"><title>set</title>
64<ellipse fill="none" stroke="black" cx="517" cy="-522" rx="27" ry="18"/>
65<text text-anchor="middle" x="517" y="-518.3" font-family="Times,serif" font-size="14.00">set</text>
66</g>
67<!-- consensus&#45;&gt;set -->
68<g id="edge71" class="edge"><title>consensus&#45;&gt;set</title>
69<path fill="none" stroke="black" d="M145.818,-581.678C152.772,-579.596 160.083,-577.583 167,-576 182.24,-572.511 394.44,-541.075 480.815,-528.33"/>
70<polygon fill="black" stroke="black" points="481.561,-531.758 490.943,-526.837 480.539,-524.833 481.561,-531.758"/>
71</g>
72<!-- dht -->
73<g id="node7" class="node"><title>dht</title>
74<ellipse fill="none" stroke="black" cx="756" cy="-378" rx="27" ry="18"/>
75<text text-anchor="middle" x="756" y="-374.3" font-family="Times,serif" font-size="14.00">dht</text>
76</g>
77<!-- cadet&#45;&gt;dht -->
78<g id="edge51" class="edge"><title>cadet&#45;&gt;dht</title>
79<path fill="none" stroke="black" d="M563.434,-440.833C602.822,-428.186 678.592,-403.856 722.428,-389.78"/>
80<polygon fill="black" stroke="black" points="723.607,-393.078 732.058,-386.688 721.467,-386.413 723.607,-393.078"/>
81</g>
82<!-- core -->
83<g id="node8" class="node"><title>core</title>
84<ellipse fill="none" stroke="black" cx="555" cy="-234" rx="27" ry="18"/>
85<text text-anchor="middle" x="555" y="-230.3" font-family="Times,serif" font-size="14.00">core</text>
86</g>
87<!-- cadet&#45;&gt;core -->
88<g id="edge50" class="edge"><title>cadet&#45;&gt;core</title>
89<path fill="none" stroke="black" d="M539.362,-431.849C542.303,-394.832 549.266,-307.181 552.824,-262.386"/>
90<polygon fill="black" stroke="black" points="556.328,-262.478 553.631,-252.232 549.35,-261.924 556.328,-262.478"/>
91</g>
92<!-- block -->
93<g id="node11" class="node"><title>block</title>
94<polygon fill="none" stroke="black" points="429,-324 385.598,-306 429,-288 472.402,-306 429,-324"/>
95<text text-anchor="middle" x="429" y="-302.3" font-family="Times,serif" font-size="14.00">block</text>
96</g>
97<!-- cadet&#45;&gt;block -->
98<g id="edge52" class="edge"><title>cadet&#45;&gt;block</title>
99<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M522.106,-434.467C511.33,-424.227 497.085,-409.913 486,-396 469.058,-374.736 452.633,-348.272 441.802,-329.75"/>
100<polygon fill="blue" stroke="blue" points="444.702,-327.773 436.674,-320.859 438.638,-331.27 444.702,-327.773"/>
101</g>
102<!-- secretsharing&#45;&gt;consensus -->
103<g id="edge5" class="edge"><title>secretsharing&#45;&gt;consensus</title>
104<path fill="none" stroke="black" d="M120.281,-647.697C119.069,-639.983 117.612,-630.712 116.261,-622.112"/>
105<polygon fill="black" stroke="black" points="119.698,-621.44 114.688,-612.104 112.783,-622.526 119.698,-621.44"/>
106</g>
107<!-- fs -->
108<g id="node6" class="node"><title>fs</title>
109<polygon fill="none" stroke="black" points="100,-527.562 73,-540 46,-527.562 46.0252,-507.438 99.9748,-507.438 100,-527.562"/>
110<text text-anchor="middle" x="73" y="-518.3" font-family="Times,serif" font-size="14.00">fs</text>
111</g>
112<!-- fs&#45;&gt;identity -->
113<g id="edge12" class="edge"><title>fs&#45;&gt;identity</title>
114<path fill="none" stroke="black" d="M100.21,-509.307C104.786,-507.46 109.507,-505.625 114,-504 164.764,-485.643 178.566,-484.387 230,-468 233.971,-466.735 238.108,-465.404 242.237,-464.067"/>
115<polygon fill="black" stroke="black" points="243.351,-467.386 251.778,-460.965 241.186,-460.729 243.351,-467.386"/>
116</g>
117<!-- fs&#45;&gt;cadet -->
118<g id="edge9" class="edge"><title>fs&#45;&gt;cadet</title>
119<path fill="none" stroke="black" d="M100.01,-516.934C178.772,-505.077 408.387,-470.512 499.803,-456.75"/>
120<polygon fill="black" stroke="black" points="500.372,-460.204 509.74,-455.254 499.33,-453.282 500.372,-460.204"/>
121</g>
122<!-- fs&#45;&gt;dht -->
123<g id="edge6" class="edge"><title>fs&#45;&gt;dht</title>
124<path fill="none" stroke="black" d="M100.081,-509.411C132.571,-495.433 183.726,-473.164 192,-468 213.144,-454.802 212.035,-441.688 235,-432 322.67,-395.017 615.27,-383.079 719.081,-379.955"/>
125<polygon fill="black" stroke="black" points="719.199,-383.453 729.093,-379.664 718.996,-376.456 719.199,-383.453"/>
126</g>
127<!-- fs&#45;&gt;core -->
128<g id="edge7" class="edge"><title>fs&#45;&gt;core</title>
129<path fill="none" stroke="black" d="M65.0877,-507.277C55.5997,-488.827 42.6595,-455.618 57,-432 93.0072,-372.699 269.007,-312.27 334,-288 397.135,-264.424 474.404,-248.714 518.841,-240.869"/>
130<polygon fill="black" stroke="black" points="519.614,-244.287 528.871,-239.134 518.42,-237.39 519.614,-244.287"/>
131</g>
132<!-- datastore -->
133<g id="node9" class="node"><title>datastore</title>
134<ellipse fill="none" stroke="black" cx="108" cy="-450" rx="42.4939" ry="18"/>
135<text text-anchor="middle" x="108" y="-446.3" font-family="Times,serif" font-size="14.00">datastore</text>
136</g>
137<!-- fs&#45;&gt;datastore -->
138<g id="edge8" class="edge"><title>fs&#45;&gt;datastore</title>
139<path fill="none" stroke="black" d="M79.9149,-507.17C84.2467,-498.507 89.9645,-487.071 95.1098,-476.78"/>
140<polygon fill="black" stroke="black" points="98.2763,-478.274 99.618,-467.764 92.0153,-475.143 98.2763,-478.274"/>
141</g>
142<!-- ats -->
143<g id="node10" class="node"><title>ats</title>
144<ellipse fill="none" stroke="black" cx="385" cy="-90" rx="27" ry="18"/>
145<text text-anchor="middle" x="385" y="-86.3" font-family="Times,serif" font-size="14.00">ats</text>
146</g>
147<!-- fs&#45;&gt;ats -->
148<g id="edge10" class="edge"><title>fs&#45;&gt;ats</title>
149<path fill="none" stroke="black" d="M60.2844,-507.296C39.3694,-483.267 0,-431.113 0,-379 0,-379 0,-379 0,-233 0,-159.097 252.872,-111.714 348.742,-96.4063"/>
150<polygon fill="black" stroke="black" points="349.504,-99.8296 358.84,-94.8203 348.418,-92.9144 349.504,-99.8296"/>
151</g>
152<!-- fs&#45;&gt;block -->
153<g id="edge11" class="edge"><title>fs&#45;&gt;block</title>
154<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M99.0792,-507.426C116.81,-497.613 140.343,-483.417 159,-468 175.732,-454.174 174.815,-445.258 192,-432 259.224,-380.139 351.062,-338.689 398.245,-319.166"/>
155<polygon fill="blue" stroke="blue" points="399.679,-322.361 407.611,-315.337 397.03,-315.881 399.679,-322.361"/>
156</g>
157<!-- dht&#45;&gt;core -->
158<g id="edge42" class="edge"><title>dht&#45;&gt;core</title>
159<path fill="none" stroke="black" d="M780.722,-370.233C802.496,-362.816 832.877,-348.569 847,-324 854.974,-310.128 857.48,-300.09 847,-288 810.092,-245.421 650.341,-266.908 596,-252 592.628,-251.075 589.164,-249.944 585.745,-248.709"/>
160<polygon fill="black" stroke="black" points="586.936,-245.416 576.348,-245.037 584.388,-251.936 586.936,-245.416"/>
161</g>
162<!-- dht&#45;&gt;block -->
163<g id="edge44" class="edge"><title>dht&#45;&gt;block</title>
164<path fill="none" stroke="black" d="M730.132,-372.774C681.84,-364.697 574.817,-345.908 486,-324 478.104,-322.052 469.673,-319.694 461.782,-317.363"/>
165<polygon fill="black" stroke="black" points="462.742,-313.997 452.157,-314.456 460.718,-320.698 462.742,-313.997"/>
166</g>
167<!-- nse -->
168<g id="node27" class="node"><title>nse</title>
169<ellipse fill="none" stroke="black" cx="811" cy="-306" rx="27" ry="18"/>
170<text text-anchor="middle" x="811" y="-302.3" font-family="Times,serif" font-size="14.00">nse</text>
171</g>
172<!-- dht&#45;&gt;nse -->
173<g id="edge43" class="edge"><title>dht&#45;&gt;nse</title>
174<path fill="none" stroke="black" d="M767.934,-361.811C775.214,-352.546 784.663,-340.52 792.854,-330.094"/>
175<polygon fill="black" stroke="black" points="795.663,-332.185 799.089,-322.159 790.159,-327.86 795.663,-332.185"/>
176</g>
177<!-- datacache -->
178<g id="node28" class="node"><title>datacache</title>
179<polygon fill="none" stroke="black" points="702,-324 637.818,-306 702,-288 766.182,-306 702,-324"/>
180<text text-anchor="middle" x="702" y="-302.3" font-family="Times,serif" font-size="14.00">datacache</text>
181</g>
182<!-- dht&#45;&gt;datacache -->
183<g id="edge45" class="edge"><title>dht&#45;&gt;datacache</title>
184<path fill="none" stroke="black" d="M744.016,-361.465C736.66,-351.93 727.125,-339.57 718.998,-329.034"/>
185<polygon fill="black" stroke="black" points="721.73,-326.846 712.851,-321.066 716.187,-331.121 721.73,-326.846"/>
186</g>
187<!-- peerinfo -->
188<g id="node29" class="node"><title>peerinfo</title>
189<ellipse fill="none" stroke="black" cx="518" cy="-90" rx="40.0939" ry="18"/>
190<text text-anchor="middle" x="518" y="-86.3" font-family="Times,serif" font-size="14.00">peerinfo</text>
191</g>
192<!-- dht&#45;&gt;peerinfo -->
193<g id="edge46" class="edge"><title>dht&#45;&gt;peerinfo</title>
194<path fill="none" stroke="black" d="M728.828,-376.457C687.438,-374.282 608.033,-364.658 557,-324 495.436,-274.952 504.26,-168.494 512.535,-118.27"/>
195<polygon fill="black" stroke="black" points="516.027,-118.624 514.32,-108.168 509.133,-117.406 516.027,-118.624"/>
196</g>
197<!-- hello -->
198<g id="node30" class="node"><title>hello</title>
199<polygon fill="none" stroke="black" points="854,-36 813.614,-18 854,-3.55271e-15 894.386,-18 854,-36"/>
200<text text-anchor="middle" x="854" y="-14.3" font-family="Times,serif" font-size="14.00">hello</text>
201</g>
202<!-- dht&#45;&gt;hello -->
203<g id="edge47" class="edge"><title>dht&#45;&gt;hello</title>
204<path fill="none" stroke="black" d="M782.364,-373.864C833.24,-367.278 942.225,-350.399 968,-324 996.322,-294.992 988,-275.542 988,-235 988,-235 988,-235 988,-161 988,-99.7534 921.245,-54.2239 881.968,-32.736"/>
205<polygon fill="black" stroke="black" points="883.108,-29.3792 872.632,-27.796 879.834,-35.5665 883.108,-29.3792"/>
206</g>
207<!-- transport -->
208<g id="node33" class="node"><title>transport</title>
209<ellipse fill="none" stroke="black" cx="680" cy="-162" rx="42.4939" ry="18"/>
210<text text-anchor="middle" x="680" y="-158.3" font-family="Times,serif" font-size="14.00">transport</text>
211</g>
212<!-- core&#45;&gt;transport -->
213<g id="edge58" class="edge"><title>core&#45;&gt;transport</title>
214<path fill="none" stroke="black" d="M575.083,-221.753C594.251,-211.02 623.495,-194.643 646.244,-181.903"/>
215<polygon fill="black" stroke="black" points="648.219,-184.809 655.234,-176.869 644.799,-178.701 648.219,-184.809"/>
216</g>
217<!-- exit -->
218<g id="node12" class="node"><title>exit</title>
219<polygon fill="none" stroke="black" points="952,-540 898,-540 898,-504 952,-504 952,-540"/>
220<text text-anchor="middle" x="925" y="-518.3" font-family="Times,serif" font-size="14.00">exit</text>
221</g>
222<!-- exit&#45;&gt;cadet -->
223<g id="edge13" class="edge"><title>exit&#45;&gt;cadet</title>
224<path fill="none" stroke="black" d="M897.67,-514.323C883.742,-511.021 866.513,-507.093 851,-504 752.337,-484.331 635.236,-465.765 576.155,-456.729"/>
225<polygon fill="black" stroke="black" points="576.571,-453.252 566.158,-455.206 575.517,-460.172 576.571,-453.252"/>
226</g>
227<!-- tun -->
228<g id="node13" class="node"><title>tun</title>
229<polygon fill="none" stroke="black" points="929,-468 897.995,-450 929,-432 960.005,-450 929,-468"/>
230<text text-anchor="middle" x="929" y="-446.3" font-family="Times,serif" font-size="14.00">tun</text>
231</g>
232<!-- exit&#45;&gt;tun -->
233<g id="edge14" class="edge"><title>exit&#45;&gt;tun</title>
234<path fill="none" stroke="black" d="M925.989,-503.697C926.436,-495.868 926.975,-486.435 927.473,-477.728"/>
235<polygon fill="black" stroke="black" points="930.974,-477.806 928.05,-467.622 923.985,-477.406 930.974,-477.806"/>
236</g>
237<!-- dnsstub -->
238<g id="node14" class="node"><title>dnsstub</title>
239<polygon fill="none" stroke="black" points="1032,-468 978.877,-450 1032,-432 1085.12,-450 1032,-468"/>
240<text text-anchor="middle" x="1032" y="-446.3" font-family="Times,serif" font-size="14.00">dnsstub</text>
241</g>
242<!-- exit&#45;&gt;dnsstub -->
243<g id="edge15" class="edge"><title>exit&#45;&gt;dnsstub</title>
244<path fill="none" stroke="black" d="M951.175,-503.876C967.88,-492.948 989.443,-478.841 1006.1,-467.947"/>
245<polygon fill="black" stroke="black" points="1008.33,-470.67 1014.78,-462.266 1004.49,-464.812 1008.33,-470.67"/>
246</g>
247<!-- vpn -->
248<g id="node15" class="node"><title>vpn</title>
249<ellipse fill="none" stroke="black" cx="815" cy="-522" rx="27" ry="18"/>
250<text text-anchor="middle" x="815" y="-518.3" font-family="Times,serif" font-size="14.00">vpn</text>
251</g>
252<!-- vpn&#45;&gt;cadet -->
253<g id="edge16" class="edge"><title>vpn&#45;&gt;cadet</title>
254<path fill="none" stroke="black" d="M793.129,-511.116C787.017,-508.578 780.317,-506.003 774,-504 705.524,-482.293 623.185,-465.931 576.085,-457.463"/>
255<polygon fill="black" stroke="black" points="576.482,-453.979 566.025,-455.678 575.26,-460.871 576.482,-453.979"/>
256</g>
257<!-- vpn&#45;&gt;tun -->
258<g id="edge18" class="edge"><title>vpn&#45;&gt;tun</title>
259<path fill="none" stroke="black" d="M834.339,-509.125C854.149,-496.961 884.945,-478.051 905.995,-465.126"/>
260<polygon fill="black" stroke="black" points="907.942,-468.038 914.632,-459.822 904.279,-462.072 907.942,-468.038"/>
261</g>
262<!-- regex -->
263<g id="node16" class="node"><title>regex</title>
264<ellipse fill="none" stroke="black" cx="756" cy="-450" rx="30.5947" ry="18"/>
265<text text-anchor="middle" x="756" y="-446.3" font-family="Times,serif" font-size="14.00">regex</text>
266</g>
267<!-- vpn&#45;&gt;regex -->
268<g id="edge17" class="edge"><title>vpn&#45;&gt;regex</title>
269<path fill="none" stroke="black" d="M802.198,-505.811C794.496,-496.673 784.53,-484.849 775.827,-474.524"/>
270<polygon fill="black" stroke="black" points="778.307,-472.035 769.186,-466.644 772.954,-476.546 778.307,-472.035"/>
271</g>
272<!-- regex&#45;&gt;dht -->
273<g id="edge57" class="edge"><title>regex&#45;&gt;dht</title>
274<path fill="none" stroke="black" d="M756,-431.697C756,-423.983 756,-414.712 756,-406.112"/>
275<polygon fill="black" stroke="black" points="759.5,-406.104 756,-396.104 752.5,-406.104 759.5,-406.104"/>
276</g>
277<!-- regex&#45;&gt;block -->
278<g id="edge49" class="edge"><title>regex&#45;&gt;block</title>
279<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M732.22,-438.673C673.767,-413.29 523.157,-347.888 458.838,-319.957"/>
280<polygon fill="blue" stroke="blue" points="459.85,-316.581 449.283,-315.808 457.061,-323.002 459.85,-316.581"/>
281</g>
282<!-- pt -->
283<g id="node17" class="node"><title>pt</title>
284<polygon fill="none" stroke="black" points="986,-599.562 959,-612 932,-599.562 932.025,-579.438 985.975,-579.438 986,-599.562"/>
285<text text-anchor="middle" x="959" y="-590.3" font-family="Times,serif" font-size="14.00">pt</text>
286</g>
287<!-- pt&#45;&gt;cadet -->
288<g id="edge19" class="edge"><title>pt&#45;&gt;cadet</title>
289<path fill="none" stroke="black" d="M931.717,-579.439C928.807,-578.197 925.864,-577.023 923,-576 860.875,-553.809 836.841,-571.725 779,-540 758.602,-528.812 761.339,-515.294 741,-504 688.34,-474.76 619.008,-461.18 576.516,-455.23"/>
290<polygon fill="black" stroke="black" points="576.951,-451.758 566.577,-453.91 576.029,-458.697 576.951,-451.758"/>
291</g>
292<!-- pt&#45;&gt;vpn -->
293<g id="edge20" class="edge"><title>pt&#45;&gt;vpn</title>
294<path fill="none" stroke="black" d="M931.915,-579.834C907.352,-567.894 871.179,-550.309 845.585,-537.868"/>
295<polygon fill="black" stroke="black" points="846.864,-534.598 836.34,-533.373 843.803,-540.893 846.864,-534.598"/>
296</g>
297<!-- dns -->
298<g id="node18" class="node"><title>dns</title>
299<ellipse fill="none" stroke="black" cx="997" cy="-522" rx="27" ry="18"/>
300<text text-anchor="middle" x="997" y="-518.3" font-family="Times,serif" font-size="14.00">dns</text>
301</g>
302<!-- pt&#45;&gt;dns -->
303<g id="edge21" class="edge"><title>pt&#45;&gt;dns</title>
304<path fill="none" stroke="black" d="M966.508,-579.17C971.277,-570.385 977.594,-558.748 983.241,-548.346"/>
305<polygon fill="black" stroke="black" points="986.48,-549.716 988.175,-539.257 980.328,-546.376 986.48,-549.716"/>
306</g>
307<!-- dnsparser -->
308<g id="node19" class="node"><title>dnsparser</title>
309<polygon fill="none" stroke="black" points="1143,-540 1080.49,-522 1143,-504 1205.51,-522 1143,-540"/>
310<text text-anchor="middle" x="1143" y="-518.3" font-family="Times,serif" font-size="14.00">dnsparser</text>
311</g>
312<!-- pt&#45;&gt;dnsparser -->
313<g id="edge22" class="edge"><title>pt&#45;&gt;dnsparser</title>
314<path fill="none" stroke="black" d="M986.15,-582.671C1018.5,-570.365 1072.61,-549.781 1108.05,-536.296"/>
315<polygon fill="black" stroke="black" points="1109.42,-539.521 1117.52,-532.694 1106.93,-532.979 1109.42,-539.521"/>
316</g>
317<!-- dns&#45;&gt;tun -->
318<g id="edge23" class="edge"><title>dns&#45;&gt;tun</title>
319<path fill="none" stroke="black" d="M982.91,-506.496C972.543,-495.824 958.362,-481.226 947.147,-469.681"/>
320<polygon fill="black" stroke="black" points="949.418,-466.995 939.94,-462.261 944.397,-471.873 949.418,-466.995"/>
321</g>
322<!-- dns&#45;&gt;dnsstub -->
323<g id="edge24" class="edge"><title>dns&#45;&gt;dnsstub</title>
324<path fill="none" stroke="black" d="M1005.12,-504.765C1009.59,-495.828 1015.21,-484.573 1020.16,-474.673"/>
325<polygon fill="black" stroke="black" points="1023.3,-476.227 1024.64,-465.717 1017.04,-473.096 1023.3,-476.227"/>
326</g>
327<!-- gnsrecord -->
328<g id="node25" class="node"><title>gnsrecord</title>
329<ellipse fill="none" stroke="black" cx="1192" cy="-450" rx="45.4919" ry="18"/>
330<text text-anchor="middle" x="1192" y="-446.3" font-family="Times,serif" font-size="14.00">gnsrecord</text>
331</g>
332<!-- dnsparser&#45;&gt;gnsrecord -->
333<g id="edge39" class="edge"><title>dnsparser&#45;&gt;gnsrecord</title>
334<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1152.92,-506.834C1159.12,-497.971 1167.29,-486.304 1174.55,-475.928"/>
335<polygon fill="blue" stroke="blue" points="1177.51,-477.805 1180.38,-467.606 1171.77,-473.791 1177.51,-477.805"/>
336</g>
337<!-- zonemaster -->
338<g id="node20" class="node"><title>zonemaster</title>
339<polygon fill="none" stroke="black" points="914.433,-599.562 851,-612 787.567,-599.562 787.626,-579.438 914.374,-579.438 914.433,-599.562"/>
340<text text-anchor="middle" x="851" y="-590.3" font-family="Times,serif" font-size="14.00">zonemaster</text>
341</g>
342<!-- zonemaster&#45;&gt;dht -->
343<g id="edge26" class="edge"><title>zonemaster&#45;&gt;dht</title>
344<path fill="none" stroke="black" d="M853.642,-579.298C856.499,-561.438 859.583,-529.479 851,-504 836.849,-461.994 802.343,-422.916 779.052,-399.996"/>
345<polygon fill="black" stroke="black" points="781.264,-397.267 771.628,-392.861 776.413,-402.314 781.264,-397.267"/>
346</g>
347<!-- namestore -->
348<g id="node21" class="node"><title>namestore</title>
349<ellipse fill="none" stroke="black" cx="685" cy="-522" rx="47.3916" ry="18"/>
350<text text-anchor="middle" x="685" y="-518.3" font-family="Times,serif" font-size="14.00">namestore</text>
351</g>
352<!-- zonemaster&#45;&gt;namestore -->
353<g id="edge25" class="edge"><title>zonemaster&#45;&gt;namestore</title>
354<path fill="none" stroke="black" d="M818.599,-579.337C791.812,-568.041 753.653,-551.95 724.971,-539.855"/>
355<polygon fill="black" stroke="black" points="726.212,-536.58 715.637,-535.919 723.492,-543.03 726.212,-536.58"/>
356</g>
357<!-- namestore&#45;&gt;identity -->
358<g id="edge37" class="edge"><title>namestore&#45;&gt;identity</title>
359<path fill="none" stroke="black" d="M642.634,-513.641C566.046,-500.338 405.247,-472.408 326.867,-458.793"/>
360<polygon fill="black" stroke="black" points="327.275,-455.312 316.823,-457.049 326.077,-462.208 327.275,-455.312"/>
361</g>
362<!-- namestore&#45;&gt;gnsrecord -->
363<g id="edge38" class="edge"><title>namestore&#45;&gt;gnsrecord</title>
364<path fill="none" stroke="black" d="M726.085,-512.971C742.503,-509.919 761.609,-506.564 779,-504 918.405,-483.451 954.522,-488.05 1094,-468 1109.42,-465.784 1126.13,-463.019 1141.32,-460.368"/>
365<polygon fill="black" stroke="black" points="1142.32,-463.746 1151.56,-458.558 1141.1,-456.853 1142.32,-463.746"/>
366</g>
367<!-- gns -->
368<g id="node22" class="node"><title>gns</title>
369<ellipse fill="none" stroke="black" cx="850" cy="-666" rx="27" ry="18"/>
370<text text-anchor="middle" x="850" y="-662.3" font-family="Times,serif" font-size="14.00">gns</text>
371</g>
372<!-- gns&#45;&gt;identity -->
373<g id="edge34" class="edge"><title>gns&#45;&gt;identity</title>
374<path fill="none" stroke="black" d="M823.048,-663.899C740.091,-660.169 489.801,-646.281 417,-612 395.952,-602.089 396.543,-591.28 379,-576 359.686,-559.178 350.742,-559.383 334,-540 317.464,-520.856 303.335,-495.717 293.996,-477.041"/>
375<polygon fill="black" stroke="black" points="297.085,-475.39 289.562,-467.93 290.791,-478.453 297.085,-475.39"/>
376</g>
377<!-- gns&#45;&gt;dht -->
378<g id="edge28" class="edge"><title>gns&#45;&gt;dht</title>
379<path fill="none" stroke="black" d="M870.511,-653.985C875.467,-651.699 880.829,-649.525 886,-648 1002.11,-613.746 1046.93,-664.524 1156,-612 1236.59,-573.194 1305.75,-498.559 1246,-432 1215.85,-398.416 902.601,-384.19 793.343,-380.225"/>
380<polygon fill="black" stroke="black" points="793.243,-376.719 783.125,-379.863 792.995,-383.715 793.243,-376.719"/>
381</g>
382<!-- gns&#45;&gt;block -->
383<g id="edge29" class="edge"><title>gns&#45;&gt;block</title>
384<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M822.824,-664.872C770.707,-663.582 654.321,-655.598 569,-612 548.284,-601.414 548.925,-590.83 531,-576 509.902,-558.544 496.079,-562.857 481,-540 438.212,-475.142 430.206,-380.324 428.985,-334.208"/>
385<polygon fill="blue" stroke="blue" points="432.483,-334.033 428.808,-324.096 425.484,-334.156 432.483,-334.033"/>
386</g>
387<!-- gns&#45;&gt;dnsstub -->
388<g id="edge33" class="edge"><title>gns&#45;&gt;dnsstub</title>
389<path fill="none" stroke="black" d="M871.065,-654.325C875.905,-652.077 881.078,-649.834 886,-648 941.778,-627.217 973.486,-654.658 1015,-612 1049.82,-576.222 1044.5,-512.583 1037.99,-476.971"/>
390<polygon fill="black" stroke="black" points="1041.36,-476 1035.97,-466.88 1034.5,-477.373 1041.36,-476"/>
391</g>
392<!-- gns&#45;&gt;vpn -->
393<g id="edge31" class="edge"><title>gns&#45;&gt;vpn</title>
394<path fill="none" stroke="black" d="M827.858,-655.35C811.041,-646.688 789.135,-632.213 779,-612 768.086,-590.233 781.353,-564.325 794.756,-546.091"/>
395<polygon fill="black" stroke="black" points="797.832,-547.84 801.242,-537.808 792.321,-543.524 797.832,-547.84"/>
396</g>
397<!-- gns&#45;&gt;dns -->
398<g id="edge27" class="edge"><title>gns&#45;&gt;dns</title>
399<path fill="none" stroke="black" d="M871.13,-654.496C875.967,-652.239 881.122,-649.949 886,-648 933.377,-629.072 964.65,-653.009 995,-612 1008.03,-594.39 1007.25,-568.995 1003.95,-549.835"/>
400<polygon fill="black" stroke="black" points="1007.35,-549.022 1001.93,-539.921 1000.49,-550.418 1007.35,-549.022"/>
401</g>
402<!-- gns&#45;&gt;dnsparser -->
403<g id="edge32" class="edge"><title>gns&#45;&gt;dnsparser</title>
404<path fill="none" stroke="black" d="M870.586,-654.227C875.54,-651.931 880.881,-649.692 886,-648 963.461,-622.391 995.505,-653.066 1066,-612 1093.37,-596.054 1115.84,-566.774 1129.29,-546.163"/>
405<polygon fill="black" stroke="black" points="1132.29,-547.978 1134.66,-537.654 1126.37,-544.243 1132.29,-547.978"/>
406</g>
407<!-- revocation -->
408<g id="node23" class="node"><title>revocation</title>
409<ellipse fill="none" stroke="black" cx="474" cy="-594" rx="48.1917" ry="18"/>
410<text text-anchor="middle" x="474" y="-590.3" font-family="Times,serif" font-size="14.00">revocation</text>
411</g>
412<!-- gns&#45;&gt;revocation -->
413<g id="edge30" class="edge"><title>gns&#45;&gt;revocation</title>
414<path fill="none" stroke="black" d="M823.776,-661.482C769.658,-654.024 641.808,-635.374 536,-612 531.019,-610.9 525.841,-609.65 520.694,-608.34"/>
415<polygon fill="black" stroke="black" points="521.456,-604.922 510.895,-605.77 519.68,-611.693 521.456,-604.922"/>
416</g>
417<!-- gns&#45;&gt;gnsrecord -->
418<g id="edge41" class="edge"><title>gns&#45;&gt;gnsrecord</title>
419<path fill="none" stroke="black" d="M870.549,-654.113C875.504,-651.822 880.856,-649.613 886,-648 978.027,-619.137 1009.84,-646.249 1100,-612 1156.37,-590.587 1185.79,-592.754 1215,-540 1225.98,-520.174 1217.7,-494.957 1208.15,-476.431"/>
420<polygon fill="black" stroke="black" points="1211.2,-474.717 1203.29,-467.672 1205.08,-478.114 1211.2,-474.717"/>
421</g>
422<!-- revocation&#45;&gt;core -->
423<g id="edge35" class="edge"><title>revocation&#45;&gt;core</title>
424<path fill="none" stroke="black" d="M447.586,-578.755C410.639,-556.683 348,-510.49 348,-451 348,-451 348,-451 348,-377 348,-335.398 347.208,-317.038 377,-288 415.046,-250.916 477.859,-239.613 517.794,-236.267"/>
425<polygon fill="black" stroke="black" points="518.191,-239.747 527.918,-235.547 517.695,-232.765 518.191,-239.747"/>
426</g>
427<!-- revocation&#45;&gt;set -->
428<g id="edge36" class="edge"><title>revocation&#45;&gt;set</title>
429<path fill="none" stroke="black" d="M484.409,-576.055C489.683,-567.469 496.183,-556.888 501.987,-547.439"/>
430<polygon fill="black" stroke="black" points="505.024,-549.182 507.276,-538.829 499.06,-545.518 505.024,-549.182"/>
431</g>
432<!-- set&#45;&gt;cadet -->
433<g id="edge75" class="edge"><title>set&#45;&gt;cadet</title>
434<path fill="none" stroke="black" d="M522.084,-504.055C524.482,-496.059 527.401,-486.331 530.08,-477.4"/>
435<polygon fill="black" stroke="black" points="533.442,-478.373 532.963,-467.789 526.737,-476.362 533.442,-478.373"/>
436</g>
437<!-- conversation -->
438<g id="node26" class="node"><title>conversation</title>
439<polygon fill="none" stroke="black" points="1017.18,-743.562 948,-756 878.82,-743.562 878.884,-723.438 1017.12,-723.438 1017.18,-743.562"/>
440<text text-anchor="middle" x="948" y="-734.3" font-family="Times,serif" font-size="14.00">conversation</text>
441</g>
442<!-- conversation&#45;&gt;cadet -->
443<g id="edge53" class="edge"><title>conversation&#45;&gt;cadet</title>
444<path fill="none" stroke="black" d="M900.537,-723.335C873.864,-714.435 840.677,-701.257 814,-684 756.206,-646.615 759.329,-615.558 703,-576 673.069,-554.981 658.318,-561.866 629,-540 611.601,-527.024 611.36,-519.336 596,-504 585.077,-493.094 572.479,-481.475 561.82,-471.903"/>
445<polygon fill="black" stroke="black" points="563.901,-469.069 554.107,-465.028 559.243,-474.295 563.901,-469.069"/>
446</g>
447<!-- conversation&#45;&gt;gns -->
448<g id="edge54" class="edge"><title>conversation&#45;&gt;gns</title>
449<path fill="none" stroke="black" d="M928.638,-723.17C913.533,-712.381 892.408,-697.291 875.857,-685.469"/>
450<polygon fill="black" stroke="black" points="877.846,-682.589 867.674,-679.625 873.777,-688.285 877.846,-682.589"/>
451</g>
452<!-- conversation&#45;&gt;gnsrecord -->
453<g id="edge40" class="edge"><title>conversation&#45;&gt;gnsrecord</title>
454<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1017.21,-728.51C1076.25,-719.968 1155.24,-705.041 1179,-684 1241.33,-628.786 1256.97,-583.117 1231,-504 1227.58,-493.58 1221.24,-483.522 1214.65,-475.019"/>
455<polygon fill="blue" stroke="blue" points="1217.15,-472.551 1208.08,-467.08 1211.76,-477.015 1217.15,-472.551"/>
456</g>
457<!-- speaker -->
458<g id="node31" class="node"><title>speaker</title>
459<polygon fill="none" stroke="black" points="948,-684 894.877,-666 948,-648 1001.12,-666 948,-684"/>
460<text text-anchor="middle" x="948" y="-662.3" font-family="Times,serif" font-size="14.00">speaker</text>
461</g>
462<!-- conversation&#45;&gt;speaker -->
463<g id="edge55" class="edge"><title>conversation&#45;&gt;speaker</title>
464<path fill="none" stroke="black" d="M948,-723.17C948,-714.919 948,-704.153 948,-694.256"/>
465<polygon fill="black" stroke="black" points="951.5,-694.019 948,-684.019 944.5,-694.019 951.5,-694.019"/>
466</g>
467<!-- microphone -->
468<g id="node32" class="node"><title>microphone</title>
469<polygon fill="none" stroke="black" points="1095,-684 1019.76,-666 1095,-648 1170.24,-666 1095,-684"/>
470<text text-anchor="middle" x="1095" y="-662.3" font-family="Times,serif" font-size="14.00">microphone</text>
471</g>
472<!-- conversation&#45;&gt;microphone -->
473<g id="edge56" class="edge"><title>conversation&#45;&gt;microphone</title>
474<path fill="none" stroke="black" d="M976.692,-723.337C1001.14,-711.695 1036.29,-694.958 1061.92,-682.753"/>
475<polygon fill="black" stroke="black" points="1063.71,-685.777 1071.23,-678.318 1060.7,-679.457 1063.71,-685.777"/>
476</g>
477<!-- nse&#45;&gt;core -->
478<g id="edge48" class="edge"><title>nse&#45;&gt;core</title>
479<path fill="none" stroke="black" d="M790.412,-294.231C785.459,-291.935 780.118,-289.695 775,-288 697.966,-262.487 673.625,-275.652 596,-252 592.83,-251.034 589.569,-249.913 586.336,-248.716"/>
480<polygon fill="black" stroke="black" points="587.428,-245.385 576.841,-244.978 584.864,-251.899 587.428,-245.385"/>
481</g>
482<!-- peerinfo&#45;&gt;hello -->
483<g id="edge76" class="edge"><title>peerinfo&#45;&gt;hello</title>
484<path fill="none" stroke="black" d="M548.194,-77.9517C554.676,-75.8006 561.524,-73.6914 568,-72 654.752,-49.3407 758.747,-32.6176 814.333,-24.4966"/>
485<polygon fill="black" stroke="black" points="815.063,-27.9277 824.46,-23.0344 814.062,-20.9995 815.063,-27.9277"/>
486</g>
487<!-- transport&#45;&gt;ats -->
488<g id="edge66" class="edge"><title>transport&#45;&gt;ats</title>
489<path fill="none" stroke="black" d="M644.122,-152.487C587.168,-138.972 476.742,-112.769 420.21,-99.3548"/>
490<polygon fill="black" stroke="black" points="420.844,-95.9082 410.306,-97.0048 419.228,-102.719 420.844,-95.9082"/>
491</g>
492<!-- transport&#45;&gt;peerinfo -->
493<g id="edge68" class="edge"><title>transport&#45;&gt;peerinfo</title>
494<path fill="none" stroke="black" d="M651.411,-148.647C624.725,-137.116 584.738,-119.837 555.501,-107.204"/>
495<polygon fill="black" stroke="black" points="556.601,-103.867 546.033,-103.113 553.824,-110.292 556.601,-103.867"/>
496</g>
497<!-- transport&#45;&gt;hello -->
498<g id="edge67" class="edge"><title>transport&#45;&gt;hello</title>
499<path fill="none" stroke="black" d="M721.405,-157.922C756.719,-153.037 806.213,-140.439 835,-108 850.042,-91.0495 854.193,-65.1533 854.935,-45.6573"/>
500<polygon fill="black" stroke="black" points="858.435,-45.6195 855.044,-35.5822 851.436,-45.5437 858.435,-45.6195"/>
501</g>
502<!-- nat -->
503<g id="node36" class="node"><title>nat</title>
504<polygon fill="none" stroke="black" points="796,-108 765.835,-90 796,-72 826.165,-90 796,-108"/>
505<text text-anchor="middle" x="796" y="-86.3" font-family="Times,serif" font-size="14.00">nat</text>
506</g>
507<!-- transport&#45;&gt;nat -->
508<g id="edge69" class="edge"><title>transport&#45;&gt;nat</title>
509<path fill="none" stroke="black" d="M703.474,-146.834C723.706,-134.626 752.749,-117.1 772.878,-104.953"/>
510<polygon fill="black" stroke="black" points="774.946,-107.793 781.7,-99.6294 771.33,-101.799 774.946,-107.793"/>
511</g>
512<!-- fragmentation -->
513<g id="node37" class="node"><title>fragmentation</title>
514<polygon fill="none" stroke="black" points="662,-108 576.537,-90 662,-72 747.463,-90 662,-108"/>
515<text text-anchor="middle" x="662" y="-86.3" font-family="Times,serif" font-size="14.00">fragmentation</text>
516</g>
517<!-- transport&#45;&gt;fragmentation -->
518<g id="edge70" class="edge"><title>transport&#45;&gt;fragmentation</title>
519<path fill="none" stroke="black" d="M675.643,-144.055C673.556,-135.941 671.011,-126.044 668.687,-117.006"/>
520<polygon fill="black" stroke="black" points="672.073,-116.12 666.193,-107.307 665.294,-117.864 672.073,-116.12"/>
521</g>
522<!-- topology -->
523<g id="node34" class="node"><title>topology</title>
524<polygon fill="none" stroke="black" points="959.5,-324 894.5,-324 894.5,-288 959.5,-288 959.5,-324"/>
525<text text-anchor="middle" x="927" y="-302.3" font-family="Times,serif" font-size="14.00">topology</text>
526</g>
527<!-- topology&#45;&gt;core -->
528<g id="edge61" class="edge"><title>topology&#45;&gt;core</title>
529<path fill="none" stroke="black" d="M894.413,-292.17C889.63,-290.593 884.724,-289.139 880,-288 756.312,-258.18 718.97,-284.656 596,-252 592.621,-251.103 589.151,-249.989 585.73,-248.765"/>
530<polygon fill="black" stroke="black" points="586.918,-245.471 576.329,-245.106 584.379,-251.995 586.918,-245.471"/>
531</g>
532<!-- topology&#45;&gt;peerinfo -->
533<g id="edge59" class="edge"><title>topology&#45;&gt;peerinfo</title>
534<path fill="none" stroke="black" d="M894.233,-295.354C862.315,-285.612 812.655,-269.532 771,-252 705.781,-224.55 688.475,-218.336 629,-180 597.704,-159.827 564.778,-132.553 542.992,-113.534"/>
535<polygon fill="black" stroke="black" points="545.032,-110.666 535.215,-106.682 540.404,-115.919 545.032,-110.666"/>
536</g>
537<!-- topology&#45;&gt;hello -->
538<g id="edge62" class="edge"><title>topology&#45;&gt;hello</title>
539<path fill="none" stroke="black" d="M922.652,-287.966C910.314,-239.626 875.032,-101.398 860.438,-44.2243"/>
540<polygon fill="black" stroke="black" points="863.829,-43.3557 857.964,-34.532 857.046,-45.087 863.829,-43.3557"/>
541</g>
542<!-- topology&#45;&gt;transport -->
543<g id="edge60" class="edge"><title>topology&#45;&gt;transport</title>
544<path fill="none" stroke="black" d="M897.206,-287.871C850.798,-261.191 761.564,-209.891 713.17,-182.069"/>
545<polygon fill="black" stroke="black" points="714.758,-178.945 704.344,-176.995 711.269,-185.014 714.758,-178.945"/>
546</g>
547<!-- hostlist -->
548<g id="node35" class="node"><title>hostlist</title>
549<polygon fill="none" stroke="black" points="214,-324 158,-324 158,-288 214,-288 214,-324"/>
550<text text-anchor="middle" x="186" y="-302.3" font-family="Times,serif" font-size="14.00">hostlist</text>
551</g>
552<!-- hostlist&#45;&gt;core -->
553<g id="edge63" class="edge"><title>hostlist&#45;&gt;core</title>
554<path fill="none" stroke="black" d="M214.167,-292.599C218.733,-290.88 223.455,-289.271 228,-288 330.933,-259.219 456.746,-244.294 517.975,-238.275"/>
555<polygon fill="black" stroke="black" points="518.666,-241.725 528.286,-237.286 517.998,-234.757 518.666,-241.725"/>
556</g>
557<!-- hostlist&#45;&gt;peerinfo -->
558<g id="edge64" class="edge"><title>hostlist&#45;&gt;peerinfo</title>
559<path fill="none" stroke="black" d="M212.608,-287.849C273.449,-248.632 422.455,-152.586 487.166,-110.875"/>
560<polygon fill="black" stroke="black" points="489.21,-113.721 495.719,-105.362 485.418,-107.838 489.21,-113.721"/>
561</g>
562<!-- hostlist&#45;&gt;hello -->
563<g id="edge65" class="edge"><title>hostlist&#45;&gt;hello</title>
564<path fill="none" stroke="black" d="M192.198,-287.715C209.228,-243.039 261.382,-123.627 349,-72 425.521,-26.9118 694.449,-19.9666 805.486,-19.053"/>
565<polygon fill="black" stroke="black" points="805.751,-22.5513 815.727,-18.9823 805.703,-15.5515 805.751,-22.5513"/>
566</g>
567<!-- scalarproduct -->
568<g id="node38" class="node"><title>scalarproduct</title>
569<ellipse fill="none" stroke="black" cx="636" cy="-594" rx="57.6901" ry="18"/>
570<text text-anchor="middle" x="636" y="-590.3" font-family="Times,serif" font-size="14.00">scalarproduct</text>
571</g>
572<!-- scalarproduct&#45;&gt;cadet -->
573<g id="edge74" class="edge"><title>scalarproduct&#45;&gt;cadet</title>
574<path fill="none" stroke="black" d="M622.726,-576.035C614.79,-565.742 604.61,-552.266 596,-540 581.021,-518.662 564.9,-493.752 553.465,-475.721"/>
575<polygon fill="black" stroke="black" points="556.241,-473.562 547.943,-466.975 550.322,-477.299 556.241,-473.562"/>
576</g>
577<!-- scalarproduct&#45;&gt;set -->
578<g id="edge73" class="edge"><title>scalarproduct&#45;&gt;set</title>
579<path fill="none" stroke="black" d="M610.179,-577.811C591.059,-566.564 565.021,-551.248 545.33,-539.665"/>
580<polygon fill="black" stroke="black" points="546.899,-536.527 536.505,-534.473 543.349,-542.56 546.899,-536.527"/>
581</g>
582<!-- secushare -->
583<g id="node39" class="node"><title>secushare</title>
584<polygon fill="none" stroke="black" points="633.366,-815.562 578,-828 522.634,-815.562 522.686,-795.438 633.314,-795.438 633.366,-815.562"/>
585<text text-anchor="middle" x="578" y="-806.3" font-family="Times,serif" font-size="14.00">secushare</text>
586</g>
587<!-- social -->
588<g id="node42" class="node"><title>social</title>
589<ellipse fill="none" stroke="black" cx="578" cy="-738" rx="31.3957" ry="18"/>
590<text text-anchor="middle" x="578" y="-734.3" font-family="Times,serif" font-size="14.00">social</text>
591</g>
592<!-- secushare&#45;&gt;social -->
593<g id="edge80" class="edge"><title>secushare&#45;&gt;social</title>
594<path fill="none" stroke="black" d="M578,-795.17C578,-786.919 578,-776.153 578,-766.256"/>
595<polygon fill="black" stroke="black" points="581.5,-766.019 578,-756.019 574.5,-766.019 581.5,-766.019"/>
596</g>
597<!-- multicast -->
598<g id="node40" class="node"><title>multicast</title>
599<ellipse fill="none" stroke="black" cx="326" cy="-594" rx="43.5923" ry="18"/>
600<text text-anchor="middle" x="326" y="-590.3" font-family="Times,serif" font-size="14.00">multicast</text>
601</g>
602<!-- multicast&#45;&gt;cadet -->
603<g id="edge82" class="edge"><title>multicast&#45;&gt;cadet</title>
604<path fill="none" stroke="black" d="M347.889,-578.338C386.803,-552.273 467.927,-497.935 510.526,-469.402"/>
605<polygon fill="black" stroke="black" points="512.642,-472.198 519.003,-463.725 508.747,-466.382 512.642,-472.198"/>
606</g>
607<!-- psyc -->
608<g id="node41" class="node"><title>psyc</title>
609<ellipse fill="none" stroke="black" cx="326" cy="-666" rx="27" ry="18"/>
610<text text-anchor="middle" x="326" y="-662.3" font-family="Times,serif" font-size="14.00">psyc</text>
611</g>
612<!-- psyc&#45;&gt;multicast -->
613<g id="edge81" class="edge"><title>psyc&#45;&gt;multicast</title>
614<path fill="none" stroke="black" d="M326,-647.697C326,-639.983 326,-630.712 326,-622.112"/>
615<polygon fill="black" stroke="black" points="329.5,-622.104 326,-612.104 322.5,-622.104 329.5,-622.104"/>
616</g>
617<!-- psycstore -->
618<g id="node43" class="node"><title>psycstore</title>
619<ellipse fill="none" stroke="black" cx="220" cy="-594" rx="44.393" ry="18"/>
620<text text-anchor="middle" x="220" y="-590.3" font-family="Times,serif" font-size="14.00">psycstore</text>
621</g>
622<!-- psyc&#45;&gt;psycstore -->
623<g id="edge79" class="edge"><title>psyc&#45;&gt;psycstore</title>
624<path fill="none" stroke="black" d="M307.536,-652.807C291.938,-642.506 269.271,-627.537 250.911,-615.413"/>
625<polygon fill="black" stroke="black" points="252.567,-612.312 242.294,-609.722 248.71,-618.154 252.567,-612.312"/>
626</g>
627<!-- social&#45;&gt;gns -->
628<g id="edge78" class="edge"><title>social&#45;&gt;gns</title>
629<path fill="none" stroke="black" d="M605.831,-729.838C655.82,-716.973 760.68,-689.987 815.282,-675.935"/>
630<polygon fill="black" stroke="black" points="816.373,-679.268 825.185,-673.386 814.628,-672.489 816.373,-679.268"/>
631</g>
632<!-- social&#45;&gt;psyc -->
633<g id="edge77" class="edge"><title>social&#45;&gt;psyc</title>
634<path fill="none" stroke="black" d="M550.552,-729.376C504.247,-716.513 410.731,-690.537 360.222,-676.506"/>
635<polygon fill="black" stroke="black" points="360.996,-673.089 350.424,-673.784 359.122,-679.833 360.996,-673.089"/>
636</g>
637<!-- rps -->
638<g id="node44" class="node"><title>rps</title>
639<ellipse fill="none" stroke="black" cx="593" cy="-306" rx="27" ry="18"/>
640<text text-anchor="middle" x="593" y="-302.3" font-family="Times,serif" font-size="14.00">rps</text>
641</g>
642<!-- rps&#45;&gt;core -->
643<g id="edge83" class="edge"><title>rps&#45;&gt;core</title>
644<path fill="none" stroke="black" d="M584.187,-288.765C579.582,-280.283 573.845,-269.714 568.679,-260.197"/>
645<polygon fill="black" stroke="black" points="571.613,-258.266 563.766,-251.147 565.461,-261.606 571.613,-258.266"/>
646</g>
647</g>
648</svg>
diff --git a/investors.html.j2 b/investors.html.j2
deleted file mode 100644
index 5ad01d46..00000000
--- a/investors.html.j2
+++ /dev/null
@@ -1,143 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3
4<div class="jumbotron">
5 <div class="container text-center">
6 <h1>{{ _("Invest in Taler!") }}</h1>
7 <div class="col-lg-12">
8 <p>
9 {% trans %}
10 We have created a company, Taler Systems SA in
11 Luxembourg.<br>
12 Please contact <tt>invest@taler.net</tt>
13 if you want to invest in Taler.
14 {% endtrans %}
15 </p>
16 </div>
17 </div>
18</div>
19
20
21<div class="container adorn_h3_bracket">
22 <div class="row">
23 <div class="col-lg-4">
24 <h3>{{ _("The Team") }}</h3>
25
26 <p>
27 {% trans %}
28 Our <a href="about.html">team</a> combines world-class business leaders,
29 cryptographers, software engineers, civil-rights
30 activists and academics. We are unified by a vision
31 of how payments should work and the goal of
32 imposing this vision upon the world.
33 {% endtrans %}
34 </p>
35
36 <p>
37 {% trans %}
38 We are currently supported by <a href="http://www.inria.fr/">Inria</a>, the French
39 national institute for research in informatics and
40 automation, and the <a href="https://renewablefreedom.org/">Renewable Freedom Foundation</a>.
41 {% endtrans %}
42 </p>
43 </div>
44 <div class="col-lg-4">
45 <h3>{{ _("The Technology") }}</h3>
46
47 <p>
48 {% trans %}
49 All transactions in Taler are secured using <a href="bibliography.html">modern
50 cryptography</a> and trust in all parties is
51 minimized. Financial damage is bounded (for
52 customers, merchants and the exchange) even in the
53 case that systems are compromised and private keys
54 are stolen. Databases can be audited for
55 consistency, resulting in either the detection of
56 compromised systems or the demonstration that
57 participants were honest. Actual transaction costs
58 are fractions of a cent.
59 {% endtrans %}
60 </p>
61 </div>
62 <div class="col-lg-4">
63 <h3>{{ _("The Business") }}</h3>
64
65 <p>
66 {% trans %}
67 The scalable business model for Taler is the operation
68 of the payment service provider, which converts money from
69 traditional payment systems (MasterCard, SEPA, UPI,
70 Visa, Bitcoin, ACH, SWIFT, etc.) to anonymous
71 electronic coins in the same currency. The customer
72 can then redeem the electronic coins at a merchant,
73 who can exchange them for money represented using
74 traditional payment systems at the exchange. The
75 exchange charges fees to facilitate the transactions.
76 {% endtrans %}
77 </p>
78 </div>
79 </div>
80</div>
81
82
83<div class="container-fluid c_acronym">
84 <div class="container">
85 <h2>{{ _("The Business Case") }}</h2>
86 <div class="row">
87 <div class="col-lg-4">
88 <a href="{{ url('presentations/investors2017.pdf') }}"><img border=0 class="center-block" width=64 height=64 alt="PDF" src="{{ url('images/pdf.svg') }}"><br><p align="center">{{ _("Download") }}</p></a>
89
90 <p>
91 {% trans %}
92 Our <a href="financial-news.html">financial news</a> page
93 explains in English how Taler can impact current developments in
94 the global payment market.
95 {% endtrans %}
96 </p>
97 </div>
98 <div class="col-lg-4" id="canvas-left" style="display:none">
99 <canvas id="the-canvas-left"></canvas>
100 </div>
101 <div class="col-lg-4" id="canvas-right" style="display:none">
102 <canvas id="the-canvas-right"></canvas>
103 </div>
104 <script type="text/javascript" src="{{ url('dist/js/pdf.min.js') }}"></script>
105 <script type="text/javascript" src="{{ url('dist/js/pdf-view.js') }}"></script>
106 </div>
107 </div>
108</div>
109
110
111<div class="container">
112 <div class="row">
113 <div class="col-lg-12">
114 <h2 id="overview">{{ _("Running a Taler payment service operator") }}</h2>
115
116 <p>
117 {% trans %}
118 The payment service operator runs the <em>Taler exchange</em>.
119 The exchange charges <b>transaction fees</b> to customers or merchants.
120 Its operational expenses are from wire transfers with the banking
121 system and the operation of the computing infrastructure.
122 {% endtrans %}
123 </p>
124
125 <p>
126 <ul>
127 <li>{{ _("Cryptographic operations, bandwidth and storage costs are less than 0.01 cent per transaction.") }}</li>
128
129 <li>{{ _("Multiple Taler transactions can be aggregated into larger wire transfers to merchants to minimize wire transfer costs.") }}</li>
130
131 <li>{{ _("Protocol allows the exchange to charge fees for any expensive operation (withdraw, deposit, refresh, refund or aggregated wire transfers).") }}</li>
132
133 <li>{{ _("Partnership with banks establishes consumer trust.") }}</li>
134
135 <li>{{ _("Partnership with free software community enables rapid deployment.") }}</li>
136
137 </ul>
138 </div>
139 </div>
140</div>
141
142
143{% endblock body_content %}
diff --git a/merchants.html.j2 b/merchants.html.j2
deleted file mode 100644
index 970e5624..00000000
--- a/merchants.html.j2
+++ /dev/null
@@ -1,182 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<div class="jumbotron">
4 <div class="container text-center">
5 <h1>{{ _("Advantages for Merchants") }}</h1>
6
7 <p>
8 {% trans %}
9 Taler is a cost-effective electronic payment system
10 which provides you with cryptographic proof that
11 the payment worked correctly within milliseconds.
12 Your Web customers pay with previously unknown
13 levels of convenience without risk of fraud.
14 {% endtrans %}
15 </p>
16 </div>
17</div>
18
19<div class="container adorn_h3_bracket">
20 <div class="row">
21 <div class="col-lg-4">
22 <h3>{{ _("Fast") }}</h3>
23
24 <p>
25 {% trans %}
26 Processing transactions with Taler is fast,
27 allowing you to confirm the transaction with your
28 customer virtually immediately. Your customers
29 will appreciate that they do not have to type in
30 credit card information and play the &quot;verified
31 by&quot; game. By making payments significantly
32 more convenient for your customers, you may be able
33 to use Taler for small transactions that would not
34 work with credit card payments due to the mental
35 overhead for customers.
36 {% endtrans %}
37 </p>
38
39 </div>
40 <div class="col-lg-4">
41 <h3>{{ _("Secure") }}</h3>
42
43 <p>
44 {% trans %}
45 You will have cryptographic proof of payment from the
46 Taler payment service provider. With Taler you never
47 handle sensitive customer account information and thus
48 do not have to undergo any particular security audits
49 (such as PCI DSS). Your systems will have customer
50 contracts with qualified signatures for all
51 transactions which you can use in court in case of
52 disputes.
53 {% endtrans %}
54 </p>
55
56 </div>
57 <div class="col-lg-4">
58 <h3>{{ _("Free") }}</h3>
59
60 <p>
61 {% trans %}
62 Taler is free software, and you can use the
63 liberally-licensed reference code as a starting
64 point to integrate Taler into your services. To use
65 Taler, you do not need to pay license fees, and the
66 free software development model will ensure that
67 you can select from many competing integrators for
68 support.
69 {% endtrans %}
70 </p>
71
72 </div>
73 </div>
74 <div class="row">
75 <div class="col-lg-4">
76 <h3>{{ _("Cheap") }}</h3>
77
78 <p>
79 {% trans %}
80 Taler is uses efficient cryptographic constructions with low
81 bandwidth and storage requirements. Combined with Taler's strong
82 security which makes fraud impossible, Taler payment service
83 providers can operate with very low overhead and
84 thus offer low transaction fees.
85 {% endtrans %}
86 </p>
87 </div>
88 <div class="col-lg-4">
89 <h3>{{ _("Flexible") }}</h3>
90
91 <p>
92 {% trans %}
93 Taler can be used for different currencies (such as
94 Euros, US Dollars or Bitcoins) and any amount, limited
95 only by applicable regulatation and what denominations
96 the payment service provider supports.
97 {% endtrans %}
98 </p>
99 </div>
100 <div class="col-lg-4">
101 <h3>{{ _("Ethical") }}</h3>
102
103 <p>
104 {% trans %}
105 Taler prevents tax evasion and money laundering.
106 Taler's protocols are efficient and do not use wasteful
107 proof-of-work calculations. Taler encourages
108 transparency by providing an open standard and free
109 software reference implementations.
110 {% endtrans %}
111 </p>
112
113 </div>
114 </div>
115</div>
116
117<div class="container-fluid c_acronym">
118<div class="container">
119 <h2 id="documentation">{{ _("Manuals for merchants") }}</h2>
120 <p>
121 </p><ul>
122 <li>{{ _("The GNU Taler merchant backend operator manual") }}
123 (<a href="https://docs.taler.net/merchant/backend/html/manual.html">html</a>,
124 <a href="https://docs.taler.net/merchant/backend/pdf/manual.pdf">pdf</a>)</li>
125 <li>{{ _("The GNU Taler Web shop integration tutorial (PHP)") }}
126 (<a href="https://docs.taler.net/merchant/frontend/php/html/tutorial.html">html</a>,
127 <a href="https://docs.taler.net/merchant/frontend/php/pdf/tutorial.pdf">pdf</a>)</li>
128 <li>{{ _("The GNU Taler Web shop integration tutorial (Python)") }}
129 (<a href="https://docs.taler.net/merchant/frontend/python/html/tutorial.html">html</a>,
130 <a href="https://docs.taler.net/merchant/frontend/python/pdf/tutorial.pdf">pdf</a>)</li>
131 </ul>
132 <p></p>
133</div>
134</div>
135
136
137<div class="container">
138
139 <div class="col-lg-6">
140 <h2 id="overview">{{ _("The GNU Taler Merchant Backend") }}</h2>
141
142 <p>{{ _("Merchants process payments using the Taler backend:") }}</p>
143 <p>
144 <ul>
145
146 <li>
147 {% trans %}
148 The backend <b>signs</b> and <b>stores</b> the
149 complete terms of offers made by the merchant to customers.
150 For this, the merchant's frontend needs to give the
151 customer's order in a JSON format to the backend.
152 {% endtrans %}
153 </li>
154
155 <li>
156 {% trans %}
157 The backend <b>validates</b> payments received from
158 the wallet and <b>executes</b> them with the Taler
159 payment service provider (the exchange). For this,
160 the merchant's frontend must pass the payment
161 request through to the Taler backend and check the
162 HTTP status code that is returned.
163 {% endtrans %}
164 </li>
165
166 <li>
167 {% trans %}
168 The backend can <b>list</b> completed transactions
169 and <b>map</b> wire transfers to sets of business
170 transactions, including the exact terms of each
171 contract.
172 {% endtrans %}
173 </li>
174
175 </ul>
176 </p>
177 </div>
178 <div class="col-lg-6">
179 <img src="{{ svg_localized('images/backend') }}" alt="{{ _("customer perspective")}}" style="float: right; margin: 5px 5px 5px 5px;" width="100%">
180 </div>
181</div> <!-- /container -->
182{% endblock body_content %}
diff --git a/old-news.html.j2 b/old-news.html.j2
index cfdd0598..8780ee01 100644
--- a/old-news.html.j2
+++ b/old-news.html.j2
@@ -7,7 +7,7 @@
7 <div class="col-lg-12"> 7 <div class="col-lg-12">
8 <p> 8 <p>
9 {% trans %} 9 {% trans %}
10 This page documents the GNU Taler history. 10 This page documents the GNUnet history.
11 {% endtrans %} 11 {% endtrans %}
12 </p> 12 </p>
13 </div> 13 </div>
diff --git a/papers/bellare_blindsigs_proof.pdf b/papers/bellare_blindsigs_proof.pdf
deleted file mode 100644
index d73aa27f..00000000
--- a/papers/bellare_blindsigs_proof.pdf
+++ /dev/null
Binary files differ
diff --git a/papers/chaum-blind-signatures.pdf b/papers/chaum-blind-signatures.pdf
deleted file mode 100644
index 7c9843fe..00000000
--- a/papers/chaum-blind-signatures.pdf
+++ /dev/null
Binary files differ
diff --git a/papers/taler2016space.pdf b/papers/taler2016space.pdf
deleted file mode 100644
index 92437f7b..00000000
--- a/papers/taler2016space.pdf
+++ /dev/null
Binary files differ
diff --git a/presentations/investors2017.pdf b/presentations/investors2017.pdf
deleted file mode 100644
index 4f48cda9..00000000
--- a/presentations/investors2017.pdf
+++ /dev/null
Binary files differ
diff --git a/press.html.j2 b/press.html.j2
deleted file mode 100644
index d4e75792..00000000
--- a/press.html.j2
+++ /dev/null
@@ -1,50 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<div class="container">
4<h1>{{ _("GNU Taler in the Press")}}</h1>
5
6<h2>2017</h2>
7<p>
8<ul>
9 <li><a href="https://news.ycombinator.com/item?id=15274110">Y-combinator</a></li>
10 <li><a href="http://hackerpublicradio.org/eps.php?id=2222">Hacker Public Radio</a></li>
11 <li><a href="https://www.secupay.com/de/Node/932">Secupay</a></li>
12 <li><a href="https://www.developpez.com/actu/142082/Taler-le-systeme-de-paiement-electronique-anonyme-developpe-par-GNU-et-l-INRIA-passe-en-version-0-3-0/">Developpez.com</a></li>
13 <li><a href="https://yourstory.com/2017/08/techie-tuesdays-richard-stallman/">Techie Tuesdays</a></li>
14 <li><a href="https://www.heise.de/tp/features/Kryptowaehrung-will-sich-an-den-Oelpreis-binden-3702862.html">Heise</a></li>
15</ul>
16</p>
17
18<h2>2016</h2>
19<p>
20<ul>
21 <li><a href="https://www.theguardian.com/technology/2016/sep/01/online-publishers-readers-ad-block-surveillance-donate-anonymously">The Guardian</a></li>
22 <li><a href="https://phoronix.com/scan.php?page=news_item&px=GNU-Taler-0.0.0">Phoronix</a></li>
23 <li><a href="https://www.reddit.com/r/technology/comments/4mnkin/gnu_taler_000_is_a_free_software_electronic/">Reddit</a></li>
24 <li><a href="http://www.heise.de/newsticker/meldung/GNU-Taler-Open-Source-Protokoll-fuer-Zahlungen-in-Version-0-0-0-erschienen-3228525.html">Heise</a></li>
25 <li><a href="http://www.golem.de/news/halbanonymes-bezahlsystem-gnu-taler-soll-kryptowaehrungen-gerechter-machen-1606-121323.html">Golem</a></li>
26 <li><a href="https://news.ycombinator.com/item?id=11840453">Y-combinator</a></li>
27 <li><a href="https://np.reddit.com/r/Anarcho_Capitalism/comments/4mnen4/gnutards_came_up_with_an_alternative_to_bitcoin/">Reddit</a></li>
28 <li><a href="http://www.theregister.co.uk/2016/06/06/gnu_cryptocurrency_aims_at_the_mainstream_economy_not_the_black_market/">The Register</a></li>
29 <li><a href="http://www.opennet.ru/opennews/art.shtml?num=44544">Opennet</a></li>
30 <li><a href="http://www.pro-linux.de/news/1/23626/gnu-startet-anonymes-bezahlsystem-taler.html">Pro-Linux</a></li>
31 <li><a href="https://www.nixp.ru/news/13738.html">nixp</a></li>
32 <li><a href="https://www.mittelstandswiki.de/2016/06/open-source-geld-gnu-taler-soll-landeswaehrungen-online-verbinden/">Mittelstands Wiki</a></li>
33 <li><a href="https://www.genbeta.com/especial/el-usuario-merece-que-sea-obligatorio-que-se-respete-su-libertad-entrevista-a-richard-stallman">Genbeta</a></li>
34 <li><a href="http://www.lupa.cz/clanky/stallman-vydavatele-musi-umoznit-ctenarum-platit-za-zpravy-anonymne/">Lupz</a></li>
35</ul>
36</p>
37
38<h2>2015</h2>
39<p>
40<ul>
41 <li><a href="https://www.reddit.com/r/Bitcoin/comments/3m037h/taler_a_gnu_attempt_at_replacing_bitcoin/">Reddit</a></li>
42 <li><a href="https://news.ycombinator.com/item?id=10258312">Y-combinator</a></li>
43 <li><a href="http://www.heise.de/tp/artikel/46/46089/1.html">Heise</a></li>
44 <li><a href="https://bitcoinmagazine.com/21901/bitcoin-governments-without-privacy-taxes/">Bitcoinmagazine</a></li>
45 <li><a href="http://www.econotimes.com/Will-identifiable-digital-currency-become-the-new-normal-88131">EconoTimes</a></li>
46</ul>
47</p>
48
49</div>
50{% endblock body_content %}
diff --git a/team-images/cristina-onete.jpg b/team-images/cristina-onete.jpg
deleted file mode 100644
index 393d92a4..00000000
--- a/team-images/cristina-onete.jpg
+++ /dev/null
Binary files differ
diff --git a/team-images/leon-schumacher.jpg b/team-images/leon-schumacher.jpg
deleted file mode 100644
index dd38fcd3..00000000
--- a/team-images/leon-schumacher.jpg
+++ /dev/null
Binary files differ
diff --git a/team-images/richard-stallman.jpg b/team-images/richard-stallman.jpg
deleted file mode 100644
index 42205b81..00000000
--- a/team-images/richard-stallman.jpg
+++ /dev/null
Binary files differ
diff --git a/wallet.html.j2 b/wallet.html.j2
deleted file mode 100644
index 667e570d..00000000
--- a/wallet.html.j2
+++ /dev/null
@@ -1,194 +0,0 @@
1{% extends "common/base.j2" %}
2
3{% block head_content %}
4<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/millncjiddlpgdmkklmhfadpacifaonc" />
5<script src="web-common/taler-wallet-lib.js" type="text/javascript"></script>
6
7<script type="application/javascript">
8/*
9 @licstart The following is the entire license notice for the
10 JavaScript code in this page.
11
12 Copyright (C) 2015 GNUnet e.V.
13
14 The JavaScript code in this page is free software: you can
15 redistribute it and/or modify it under the terms of the GNU
16 Lesser General Public License (GNU LGPL) as published by the Free Software
17 Foundation, either version 2.1 of the License, or (at your option)
18 any later version. The code is distributed WITHOUT ANY WARRANTY;
19 without even the implied warranty of MERCHANTABILITY or FITNESS
20 FOR A PARTICULAR PURPOSE. See the GNU LGPL for more details.
21
22 As additional permission under GNU LGPL version 2.1 section 7, you
23 may distribute non-source (e.g., minimized or compacted) forms of
24 that code without the copy of the GNU LGPL normally required by
25 section 4, provided you include this license notice and a URL
26 through which recipients can access the Corresponding Source.
27
28 @licend The above is the entire license notice
29 for the JavaScript code in this page.
30*/
31
32var chrome_min_version = '51';
33
34function onSuccess() {
35 console.log("installation successful");
36 document.getElementById("install-result").appendChild(document.createTextNode("Installation was successful."));
37}
38
39function onFailure(detail) {
40 console.error("installation failed:", detail);
41 document.getElementById("install-result").appendChild(document.createTextNode("Installation failed: " + detail));
42}
43
44function installWallet() {
45 if (window.chrome) {
46 chrome.webstore.install("https://chrome.google.com/webstore/detail/millncjiddlpgdmkklmhfadpacifaonc", onSuccess, onFailure);
47 } else {
48 onFailure("Google Chrome or Chromium is required for installation.");
49 }
50}
51
52try {
53 taler.onPresent(function () {
54 document.getElementById("box-present").style.display = "inherit";
55 document.getElementById("box-not-present").style.display = "none";
56 });
57 taler.onAbsent(function () {
58 document.getElementById("box-present").style.display = "none";
59 document.getElementById("box-not-present").style.display = "inherit";
60 });
61} catch (err) {}
62
63function onLoad() {
64 if (typeof window.chrome != "object") {
65 document.getElementById("error-chrome").style.display = "inherit";
66 } else {
67 var m = navigator.userAgent.match(/Chrome\/([0-9.]+)/);
68 if (null == m || m[1] < chrome_min_version) {
69 document.getElementById('chrome-min-version').appendChild(document.createTextNode(chrome_min_version));
70 document.getElementById('error-chrome-version').style.display = "inherit";
71 }
72 }
73}
74
75document.addEventListener('DOMContentLoaded', onLoad);
76</script>
77
78<style type="text/css">
79 .greenbox {
80 background-color: #5EFF64;
81 border: solid;
82 border-radius: 5px;
83 padding: 0.5em;
84 }
85 .bluebox {
86 background-color: #C2C6FF;
87 border: solid;
88 border-radius: 5px;
89 padding: 0.5em;
90 }
91 .error {
92 font-style: italic;
93 display: none;
94 }
95 #install-result {
96 font-weight: bold;
97 }
98
99 main ul li {
100 margin-bottom: 1em;
101 }
102</style>
103{% endblock head_content %}
104
105{% block body_content %}
106 <!-- Jumbotron -->
107 <div class="jumbotron">
108 <div class="text-center">
109 <h1 lang="en">Taler Wallet</h1>
110 </div>
111 </div>
112
113 <div class="container">
114
115 <div class="row">
116 <div class="col-lg-12">
117 <p class="greenbox" id="box-present" style="display:none">
118 Congratulations, you have installed the Taler wallet.
119 Check out the <a href="https://demo.taler.net/">demo</a>.
120 </p>
121 <p class="bluebox" id="box-not-present" style="display:none">
122 You don't have a wallet installed yet.
123 </p>
124 </div> <!-- /col-lg-12 -->
125 </div> <!-- /row -->
126
127 <div class="row">
128 <div class="col-lg-12">
129 Install the wallet for your browser below, then check out the
130 <a href="https://demo.taler.net">demonstration</a>.
131 </div>
132 </div> <!-- /row -->
133
134 <div class="row">
135 <div class="col-lg-6">
136 <h2><a href="https://chrome.google.com/webstore/detail/gnu-taler-wallet/millncjiddlpgdmkklmhfadpacifaonc">Google Chrome / Chromium 51+</a></h2>
137
138 <p id="error-chrome" class="error">
139 <a href="https://www.google.com/chrome">Google Chrome</a> or <a href="https://www.chromium.org/">Chromium</a>
140 is required, but it appears you don't have it installed.
141 </p>
142 <p id="error-chrome-version" class="error">
143 <a href="https://www.google.com/chrome">Google Chrome</a> or <a href="https://www.chromium.org/">Chromium</a>
144 version <span id="chrome-min-version"></span> or newer is required, but it appears you have an older version.</p>
145 <div id="inline-install-chrome">
146 <button onclick="installWallet()" id="install-button">
147 Install wallet
148 </button>
149 <noscript>
150 <em style="color:darkred;">JavaScript is disabled, installation won't work.</em>
151 </noscript>
152 <div id="install-result"></div>
153 </div>
154 </div> <!-- /col-lg-6 -->
155
156 <div class="col-lg-6">
157 <h2><a href="https://addons.mozilla.org/en-US/firefox/addon/taler-wallet/">Mozilla Firefox 57+</a></h2>
158<!--
159 <h3>Firefox Beta</h3>
160 <ol>
161 <li><a href="/releases/taler-wallet/taler-wallet-stable.xpi">Download the wallet</a> (right click, Save Link As...)</li>
162 <li>On the <code>about:debugging</code> page, "Load temporary extension"</li>
163 </ol>
164
165 <h3>Firefox Developer Edition</h3>
166 <p>Either from the <code>about:debugging</code> page like above, or:</p>
167 <ol>
168 <li>On the <code>about:config</code> page set <code>xpinstall.signatures.required</code> to <code>false</code></li>
169 <li><a href="/releases/taler-wallet/taler-wallet-stable.xpi">Install the wallet</a></li>
170 </ol>
171-->
172 </div> <!-- /col-lg-6 -->
173
174 <div class="col-lg-6">
175 <h2>Opera 36+</h2>
176
177 <ol>
178 <li><a href="https://addons.opera.com/en/extensions/details/download-chrome-extension-9/">Install Download Chrome Extension</a></li>
179 <li><a href="https://chrome.google.com/webstore/detail/gnu-taler-wallet/millncjiddlpgdmkklmhfadpacifaonc">Install GNU Taler</a> from the Chrome Web Store</li>
180 </ol>
181 </div> <!-- /col-lg-6 -->
182
183 </div> <!-- /row -->
184
185 <div class="row">
186
187 <div class="col-lg-6">
188 <h2>Other browsers</h2>
189 <p>Wallets for other browsers will be provided in the near future.</p>
190 </div> <!-- /col-lg-6 -->
191
192 </div> <!-- /row -->
193 </div> <!-- /container -->
194{% endblock body_content %}
diff --git a/web-common b/web-common
deleted file mode 160000
Subproject caf5a98114402d057ba08b14279eb8e46481a02