diff options
Diffstat (limited to 'developers.html.j2')
-rw-r--r-- | developers.html.j2 | 212 |
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 "serial | ||
178 | numbers" 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 %} |