1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>GNU Taler - Taxable Anonymous Libre Electronic Reserves: Developers</title>
<meta name="description" content="">
<!--# include file="common/header.inc" -->
</head>
<body class="en" onLoad="loadLang();">
<div class="container">
<!--# include file="common/navigation.inc" -->
<!-- Jumbotron -->
<div class="jumbotron">
<h1 lang="en">Taler for developers</h1>
<h1 lang="de">Taler für Entwickler</h1>
<h1 lang="fr">Taler pour les développeurs</h1>
<h1 lang="it">Taler per programmatori</h2>
</div>
<!-- Example row of columns -->
<div class="row">
<div class="col-lg-6">
<h2 lang="en">Free</h2>
<h2 lang="de">Frei</h2>
<h2 lang="fr">Libre</h2>
<h2 lang="it">Free</h2>
<p lang="en">Taler is free software implementing an open protocol. Anybody is welcome to inspect our code and integrate our reference implementation into their applications.
Different components of Taler are being made available under different licenses. The Affero GPLv3+ is used for the Mint, the LGPLv3+ is used for reference
code demonstrating integration with merchant platforms, and licenses like Apache/Mozilla/GPLv3+ are used for wallets and related customer-facing software.
We are open for constructive suggestions for maximizing the adoption of this libre payment platform.</p>
<p lang="de">Taler ist freie Software, welche ein offenes Protokoll
implementiert. Der Code ist frei verfügbar und jeder ist
eingeladen unsere Referenzimplementierung in eigene Projekte zu
übernehmen. Die unterschiedlichen Komponenten Talers sind unter
verschiedenen Lizenzen erhältlich. Die Münzanstalt fällt unter
Affero GPLv3+, Referenzcode, welcher die Integration mit
Händlerplattformen demonstriert, läuft unter LGPLv3+ und die
Geldbörsen sowie weitere Software auf Seiten der Endkunden
verwenden Apache-/Mozilla- ähnliche GPLv3+. Wir sind offen
für konstruktive Vorschläge und freuen uns über
Beiträge, welche zur weiten Verbreitung dieser freien Bezahlplattform
führen.</p>
<p lang="fr">Taler est un logiciel libre exécutant un protocol ouvert.
Vous êtes les bienvenus pour inspecter notre code et intégrer nos
applications référence dans vos applications. Différents composants de
Taler sont disponibles sous plusieurs licences. L'Affero GPLv3+ est
utilisé pour la monnaie, le LGPLv3+ est utilisé pour le code référence
montrant l'intégration sur des plateformes machandes, et des licences
comme Apache/Mozilla/GPLv3+ sont utilisées pour les portefeuilles et
le lien client-logiciel orienté. Nous sommes ouverts à toute
suggestion constructive pour exploiter au maximum cette plateforme de
paiement libre.</p>
<p lang="it">Taler è un free software che utilizza un protocollo aperto. Chiunque
è benvenuto per esaminare il nostro codice e integrare le nostre implementazioni
di riferimento nelle loro applicazioni. Diversi componenti di Taler sono stati
resi disponibili sotto diverse licenze. Affero GPLv3+ è usata per la Mint, LGPLv3+
per il codice di riferimento che mostra l'integrazione con la piattaforma del
venditore, e licenze come Apache/Mozilla/GPLv3+ sono usate per i portafogli e i
relativi software di interfaccia dei clienti. Siamo aperti a suggerimenti costruttivi
per massimizzare l'adozione di questa piattaforma di pagamento free.</p>
</div>
<div class="col-lg-6">
<h2 lang="en">RESTful</h2>
<h2 lang="de">REST-basiert</h2>
<h2 lang="fr">Avec REST</h2>
<h2 lang="it">RESTful</h2>
<p lang="en">Taler is designed to work on the Internet. To ensure
that Taler payments can work with restrictive network setups, Taler
uses a RESTful protocol over HTTP or HTTPS. Taler's security does not
depend upon the use of HTTPS, but obviously merchants may choose to
offer HTTPS for consistency and because it generally is better for
privacy compared to HTTP. Taler uses JSON to encode structure data,
making it easy to integrate Taler with existing Web applications.
Taler's protocol is documented in detail <a href="http://api.taler.net/">here</a>.</p>
<p lang="de">Taler wurde zur Verwendung im Internet konzipiert. Um
sicherzustellen, dass Bezahlvorgänge mit Taler auch in
restriktiven Netzwerkumgebungen funktionieren können, verwendet
Taler ein REST-basiertes Protokoll über HTTP oder HTTPS. Talers
Sicherheit hängt nicht von der Verwendung von HTTPS ab, aber
die Verwendung von HTTPS auf Seiten der Händler sollte aus
Konsistenzgründen und aufgrund der besseren Privatsphäre,
die HTTPS gegenüber HTTP bietet, erfolgen. Da Taler
zur Kodierung von Datenstrukturen JSON verwendet, ist die
Integration von Taler in existierende Webapplikationen sehr
einfach. Das Taler-Protokoll ist im Detail <a href="http://api.taler.net/">hier</a>
dokumentiert.</p>
<p lang="fr">Taler est conçu pour fonctionner sur Internet. Afin de
s'asurer que les paiement Taler fonctionnent sur des installations
réseaux restrictives, Taler utilise le protocole RESTful sur HTTP ou
HTTPS. La sécurité Taler ne dépend pas de l'utilisation de HTTPS, mais
naturellement les commerçants voudront choisir HTTPS pour l'uniformité
et car c'est généralement meilleur pour la confidentialité comparé à
HTTP. Taler utilise JSON pour coder les données structure, rendant
Taler facile à intégrer avec des application Web existantes. Le
protocole Taler est documenté en détail <a href="http://api.taler.net/">ici</a>.</p>
<p lang="it">Taler è progettato per funzionare su Internet. Per assicurare che i
pagamenti in Taler possano funzionare con configurazioni di rete ristrette, Taler
usa un protocollo RESTful su HTTP o HTTPS. La sicurezza di Taler non dipende dall'uso
di HTTPS, ma ovviamente i venditori possono scegliere di offrire HTTPS per maggior
compattenza e perché è generalmente migliore per la privacy se paragonato a HTTP.
Taler usa JSON per codificare i dati di struttura, rendendo facile integrare Taler
con le già esistenti applicazioni web. Il protocollo usato da Taler è documentato
nel dettaglio <a href="http://api.taler.net/">qui</a>.</p>
</div>
</div>
<div class="row">
<div class="col-lg-4">
<h2 lang="en">Code</h2>
<h2 lang="de">Code</h2>
<h2 lang="fr">Code</h2>
<h2 lang="it">Codice</h2>
<p lang="en">Taler is currently primarily developed by a research team
at Inria and TU Munich. However, contributions from anyone are
welcome. Our Git repositories can be cloned using the Git and HTTP
access methods against <tt>git.taler.net</tt> with the name of the
respective repository. A list of public repositories can be found in
our <a href="http://www.git.taler.net/">GitWeb</a>.</p>
<p lang="de">Taler wird aktuell hauptsächlich von einer
Forschergruppe bei Inria und der Technischen Universität
München entwickelt. Trotzdem sind Beiträge von jedem
wilkommen. Unser Git-Repository kann man sowohl über Git als
auch über HTTP klonen, indem man auf <tt>git.taler.net</tt> mit
dem entsprechenden Repository-Namen zugreift. Eine Liste von
öffentlichen Repositories ist in unserem
<a href="http://www.git.taler.net/">GitWeb</a> zu finden.</p>
<p lang="fr">Taler est actuellement principalement développé par une
équipe de recherche à Inria et TU Munich. Néanmoins, les contributions
de tous sont les bienvenues. Notre Stockage Git peut être cloné en
utilisant les méthodes d'accès Git et HTTP sur <tt>git.taler.net</tt>
avec le nom du stockage respectif. Une liste des lieux de stockage
publics se trouve sur notre <a href="http://www.git.taler.net/">GitWeb</a>.</p>
<p lang="it">Attualmente Taler è principalmente sviluppato da un team di ricercatori
di Inria e TU Munich. Comunque, sono ben accetti contributi da parte di chiunque.
Le nostre repository di Git possono essere clonate applicando il metodo d'accesso di
Git e HTTP su questo link <tt>git.taler.net</tt>, con il nome della corrispettiva
repository. Una lista delle repository pubbiche può essere trovata al nostro
<a href="http://www.git.taler.net/">GitWeb</a>.</p>
</div>
<div class="col-lg-4">
<h2 lang="en">Documentation</h2>
<h2 lang="de">Dokumentation</h2>
<h2 lang="fr">Documentation</h2>
<h2 lang="it">Documentazione</h2>
<p lang="en">In addition to this website, the <a href="http://www.git.taler.net/">documented code</a>
and the <a href="http://api.taler.net/">API documentation</a>, we are in the process of
preparing a comprehensive design document which will be published here soon.</p>
<p lang="de">Zusätzlich zu dieser Webseite, dem <a href="http://www.git.taler.net/">dokumentierten Code</a>
und der <a href="http://api.taler.net/">API-Dokumentation</a>
bereiten wir ein umfassendes Design-Dokument vor, welches in
Kürze hier verfügbar sein wird.</p>
<p lang="fr">En supplément de ce site web, le
<a href="http://www.git.taler.net/">documented code</a> et l'<a href="http://api.taler.net/">API documentation</a>, nous
préparons un document exhaustif qui sera publié ici prochainement.</p>
<p lang="it">Oltre a questo sito, il <a href="http://www.git.taler.net/">codice documentato</a>,
e la <a href="http://api.taler.net/">documentazione API</a>, siamo preparando un
documento integrale di progettazione che sarà presto pubblicato qui.</p>
</div>
<div class="col-lg-4">
<h2 lang="en">Discussion</h2>
<h2 lang="de">Diskussion</h2>
<h2 lang="fr">Discussion</h2>
<h2 lang="it">Discussione</h2>
<p lang="en">We have a mailinglist for developer discussions.
You can subscribe to it or read the list archive at
<a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>.</p>
<p lang="de">Wir haben eine Mailingliste für Diskussionen mit den Entwicklern.
Die Webseite der Liste zum eintragen als auch das Listenarchiv sind hier:
<a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>.</p>
<p lang="fr">Nous avons une liste pour le discours public des developers.
On peut s'inscrire ou lire les archives à
<a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>.</p>
<p lang="it">We have a mailinglist for developer discussions.
You can subscribe to it or read the list archive at
<a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>.</p>
</div>
</div>
<div class="row">
<div class="col-lg-4">
<h2 lang="en">Regression Testing</h2>
<h2 lang="de">Regressionstests</h2>
<h2 lang="fr" note="outdated"></h2>
<h2 lang="it">Test delle regressioni</h2>
<p lang="en">We have <a href="http://www.buildbot.org/">Buildbot</a> automation tests
to detect regressions and check for portability at
<a href="http://buildbot.taler.net/">buildbot.taler.net</a>.</p>
<p lang="de" note="outdated"></p>
<p lang="fr" note="outdated"></p>
<p lang="it">E' disponibile un <a href="http://www.buildbot.org/">Buildbot</a>
dedicato a test automatici per individuare regressioni e controllare la portabilità, alla
pagina <a href="http://buildbot.taler.net/">buildbot.taler.net</a>.</p>
</div>
<div class="col-lg-4" note="not yet operational">
<h2 lang="en">Code Coverage Analysis</h2>
<h2 lang="de" note="outdated"></h2>
<h2 lang="fr" note="outdated"></h2>
<h2 lang="it">Analisi della copertura del codice</h2>
<p lang="en">We use <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a> to
analyze the code coverage of our tests, the results are available
at <a href="http://lcov.taler.net/">lcov.taler.net</a>.</p>
<p lang="de" note="outdated"></p>
<p lang="fr" note="outdated"></p>
<p lang="it">I test effettuati sul software Taler subiscono la misurazione della loro "copertura"
da <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a>; inoltre, tali risultati sono
disponibili alla pagina <a href="http://lcov.taler.net/">lcov.taler.net</a>.</p>
</div>
<div class="col-lg-4">
<h2 lang="en">Performance Analysis</h2>
<h2 lang="de" note="outdated"></h2>
<h2 lang="fr" note="outdated"></h2>
<h2 lang="it">Analisi delle prestazioni</h2>
<p lang="en">We use <a href="http://gnunet.org/gauger">Gauger</a> for performance
regression analysis of the Mint backend
at <a href="http://gauger.taler.net/">gauger.taler.net</a>.</p>
<p lang="de" note="outdated"></p>
<p lang="fr" note="outdated"></p>
<p lang="it">Le prestazioni della zecca (Mint) sono misurate attraverso
<a href="http://gnunet.org/gauger">Gauger</a>, e i risultati disponibili alla pagina
<a href="http://gauger.taler.net/">gauger.taler.net</a>.</p>
</div>
</div>
<div class="col-lg-12">
<h2 lang="en" id="overview">Taler system overview</h1>
<h2 lang="de">Das Taler-System im Überblick</h1>
<h2 lang="fr" note="outdated"></h2>
<h2 lang="it">Schema generale del sistema Taler</h2>
<p lang="en">The Taler system consists of protocols and free software
implementations between a number of actors as illustrated in the
illustration on the right. Typical transactions involve the following steps:
</p>
<p lang="de" note="outdated"></p>
<p lang="fr" note="outdated"></p>
<p lang="it">Taler usa software libero per realizzare i protocolli finalizzati alla
comunicazione tra i vari partecipanti come illustrato nella figura a destra.
La tipica transazione nel modello Taler si compone dei seguenti passaggi:</p>
<p>
<img src="images/system.svg" alt="system overview" style="float: right; margin: 50px 5px 5px 5px;" width="50%">
<ol>
<li lang="en">A customer instructs his <b>bank</b> to transfer funds
from his account to the Taler mint (top left). In the subject of
the transaction, he includes an authentication token from his
electronic <b>wallet</b>. In Taler terminology, the customer
creates a reserve at the mint.</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">Un cliente chiede alla sua <b>banca</b> di trasferire
fondi dal suo conto a quello della zecca Taler (in alto a destra).
La causale di questo trasferimento includerà l'informazione necessaria,
generata dal portafoglio elettronico (<b>wallet</b>) compatibile col
sistema Taler, ad autenticare il cliente alla zecca (nota anche come "mint").
Nella terminologia adeguata, si dirà che il cliente ha creato una riserva.</li>
<li lang="en">Once the mint has received the transfer, it allows the
customer's electronic wallet to <b>withdraw</b> electronic coins.
The electronic coins are digital representations of the original
transfer. It is important to note that the mint does not learn
the "serial numbers" of the coins in this process, so it cannot
tell later which customer purchased what at which merchant.
The use of Taler does not change the currency or the
total value of the funds (except for fees which the mint may
charge for the service).</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">In seguito alla ricezione del trasferimento da parte della
zecca, il cliente potrà <b>ritirare</b> i suoi gettoni elettronici</li>.
Tali gettoni sono rappresentazioni digitali dell'ammonto che il cliente
ha trasferitto alla zecca. E' fondamentale notare che in questo processo
la zecca non apprende nessun "numero seriale" dei gettoni coinvolti, in
modo tale da non poter a posteriori associare un certo cliente ad un certo
acquisto. Taler non interferisce dunque né con la valuta né con l'ammonto
presente nella riserva. L'unica modifca apportata da Taler alla riserva è
la sottrazione da questa della tariffa del servizio.
<li lang="en">Once the customer has the digital coins in his wallet,
the wallet can be used to <b>spend</b> the coins with merchant
portals that support the Taler
payment system and accept the respective mint as a business
partner (bottom arrow). This creates a digital contract signed
by the customer's coins and the merchant. Assuming courts accept
cryptographic signatures, the customer can later use this digitally
signed contract in a court of law to prove the exact terms of
the contract and that he paid the respective amount. The customer
does not learn the banking details of the merchant, and Taler
does not require the merchant to learn the identity of the
customer. Naturally, the customer can spend any fraction of his
digital coins (the system takes care of customers getting
change).</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">Con i gettoni elettronici nel portafogli, il cliente
può <b>spendere</b> presso tutti i venditori che accettano Taler tra
i loro sistemi di pagamento, e che sono disponibili a finalizzare l'operazione
con la stessa zecca che ha dato i gettoni al cliente (freccia in basso).
Tecnicamente, ciò comporta la creazione di un certificato firmato d'ambo le parti:
dal venditore e dalla chiave corrispondente al gettone speso (vale la pena
notare che un gettone, altro non è, che una coppia di chiavi pubblica e
privata). Assumendo che i tribunali accettino firme elettroniche, un cliente
può utilizzare tale certificato per mostrare i suoi termini esatti e che
egli ha pagato la somma dovuta. Ancora, il cliente non viene mai a conoscenza degli
estremi bancari del negoziante e, allo stesso modo, Taler non richiede che il
negoziante debba conoscere l'identità del cliente. Naturalmente, il cliente
può anche spendere una frazione di uno dei suoi gettoni, grazie alla facoltà
che Taler ha di restituire il cambio.
</li>
<li lang="en">Merchants receiving digital coins <b>deposit</b>
the respective receipts that resulted from the contract signing
with the customer at the mint to redeem the coins.
The deposit step does not reveal the details of the
contract between the customer and the merchant or the identity
of the customer to the mint in any way. However, the mint
does learn the identity of the merchant via the provided bank
routing information. The merchant can, for example when
compelled by the state for taxation, provide information linking
the individual deposit to the respective contract signed by the
customer. Thus, the mint's database allows the state to enforce
that merchants pay applicable taxes (and do not engage in
illegal contracts).</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">Contemporaneamente alla firma dei
contratti viene creata una ricevuta che il negoziante può <b>depositare</a>
alla zecca al fine di riavere indietro il corrispettivo in denaro
del gettone che ha ricevuto dal cliente. Il deposito non mette la zecca
nelle condizioni di apprendere i dettagli del contratto tra il negoziante
e il cliente, né l'identità stessa del cliente. Ad ogni modo, la zecca
potrà (e dovrà) conoscere l'identità del negoziante, dal momento che
essa necessità dei suoi estremi bancari necessari a finalizzare il processo.</li>
<li lang="en">Finally, the mint transfers funds corresponding to
the digital coins redeemed by the merchants to the merchant's
<b>bank</b> account. The mint may combine multiple small
transactions into one larger bank transfer.
The merchant can query the mint
about the relationship between the bank transfers and the
individual claims that were deposited.</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">Infine, la zecca trascferirà fondi della stessa cifra dei
gettoni riscattati dal negoziate verso il conto in <b>banca</b> di quest'
ultimo. Nulla impedisce alla zezza di combinare molteplici piccole transazioni
in un unico bonifico verso il conto del negoziante. Il negoziante può in ogni momento
interrogare la zecca sullo stato dei bonifici che egli ha diritto a ricevere.
</li>
<li lang="en">Most importantly, the mint keeps cryptographic
proofs that allow it to demonstrate that it is operating
correctly to third parties. The system requires an external
<b>auditor</b>, such as a government-appointed financial regulatory
body, to frequently verify the mint's databases and check that
its bank balance matches the total value of the remaining coins
in circulation.</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">E' importante notare che la zecca mantiene
prove crittografiche che le permettono di dimostrare la sua buona fede
verso terze parti. Nell'architettura di Taler è prevista la presenza di un
<b>ispettore</b> esterno, come ad esempio un apparato statale del fisco,
che controlla costantemente i database della zecca per verificare che il suo
bilancio corrisponda sempre alla quantità di gettoni ancora in circolazione.</li>
<li lang="en">Without the auditor, the mint operators could
steal funds they are holding in reserve. Customers and merchants
cannot cheat each other or the mint. If any party's computers
are compromised, the financial damage is limited to the
respective party and proportional to the funds they
have in circulation during the period of the compromise.</li>
<li lang="de" note="outdated"></li>
<li lang="fr" note="outdated"></li>
<li lang="it">L'assenza di taler ispettore metterebbe i gestori della zecca
nelle condizioni di appropriarsi del denaro presente nelle sue riserve.
Clienti e negozianti non hanno la possibilità di frodarsi a vicenda, né
di frodare la zecca. Se il computer di qualcuna delle parti viene compromesso,
la perdita finananziaria non tocca le altre parti ed è proporzionale ai fondi
che tale computer ha in circolazione durante il periodo della compromissione.
</li>
</ol>
</p>
</div>
<!--# include file="common/footer.inc" -->
</div> <!-- /container -->
</body>
</html>
|