aboutsummaryrefslogtreecommitdiff
path: root/developers.html.j2
diff options
context:
space:
mode:
Diffstat (limited to 'developers.html.j2')
-rw-r--r--developers.html.j2212
1 files changed, 11 insertions, 201 deletions
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 %}