summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.gitmodules3
-rw-r--r--ChangeLog3
-rwxr-xr-xbootstrap8
-rw-r--r--configure.ac2
-rw-r--r--contrib/Makefile.am.in1
-rw-r--r--contrib/exchange-tos-bfh-v0.rst57
-rw-r--r--contrib/exchange-tos-tops-v0.rst1184
-rw-r--r--contrib/exchange-tos-v0.rst23
m---------contrib/gana0
-rw-r--r--contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po2
m---------contrib/wallet-core0
-rw-r--r--debian/changelog6
-rw-r--r--debian/taler-exchange.taler-exchange-aggregator.service2
-rw-r--r--debian/taler-exchange.taler-exchange-closer.service2
-rw-r--r--debian/taler-exchange.taler-exchange-expire.service2
-rw-r--r--debian/taler-exchange.taler-exchange-httpd.service2
-rw-r--r--debian/taler-exchange.taler-exchange-transfer.service2
-rw-r--r--debian/taler-exchange.taler-exchange-wirewatch.service2
-rw-r--r--doc/doxygen/taler.doxy2
m---------doc/prebuilt0
-rw-r--r--src/exchange/taler-exchange-httpd_config.c12
-rw-r--r--src/exchange/taler-exchange-httpd_config.h2
-rw-r--r--src/exchange/taler-exchange-httpd_melt.c1
-rw-r--r--src/include/taler_pq_lib.h25
-rw-r--r--src/pq/pq_query_helper.c200
-rw-r--r--src/pq/pq_result_helper.c5
-rw-r--r--src/util/Makefile.am2
-rw-r--r--src/util/payto.c72
-rw-r--r--src/util/test_payto.c39
30 files changed, 413 insertions, 1250 deletions
diff --git a/.gitignore b/.gitignore
index 6bdf30ae5..bda987c5b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -171,3 +171,5 @@ contrib/tos/conf.py
contrib/pp/conf.py
src/auditordb/test_auditordb_checkpoints-postgres
src/auditordb/test_auditordb_checkpoints_postgres
+/.cache
+/compile_commands.json
diff --git a/.gitmodules b/.gitmodules
index 6039d44b9..01c07d992 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "doc/api"]
- path = doc/api
- url = https://git.taler.net/api.git
[submodule "doc/prebuilt"]
path = doc/prebuilt
url = https://git.taler.net/docs.git
diff --git a/ChangeLog b/ChangeLog
index f2232f498..d627c3eab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+Wed May 15 17:43:41 AM CEST 2024
+ Releasing GNU Taler Exchange 0.11.0. -CG
+
Fri Apr 12 10:43:41 AM CEST 2024
Releasing GNU Taler Exchange 0.10.2. -CG
diff --git a/bootstrap b/bootstrap
index a2d0c3b5d..509c8a0c7 100755
--- a/bootstrap
+++ b/bootstrap
@@ -8,12 +8,6 @@ if ! git --version >/dev/null; then
exit 1
fi
-if ! pandoc --version >/dev/null; then
- echo "pandoc not installed"
- exit 1
-fi
-
-
echo "$0: Updating submodules"
echo | git submodule update --init --force --remote
@@ -42,7 +36,7 @@ fi
# Generate Makefile.am in contrib/
cd contrib
rm -f Makefile.am
-find wallet-core/aml-backoffice/ -type f -printf ' %p \\\n' | sort > Makefile.am.ext
+find wallet-core/aml-backoffice/ -type f | sort | awk '{print " " $1 " \\" }' > Makefile.am.ext
# Remove extra '\' at the end of the file
truncate -s -2 Makefile.am.ext
cat Makefile.am.in Makefile.am.ext >> Makefile.am
diff --git a/configure.ac b/configure.ac
index 3f8238b42..c4abeaa19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
#
#
AC_PREREQ([2.69])
-AC_INIT([taler-exchange],[0.10.2],[taler-bug@gnunet.org])
+AC_INIT([taler-exchange],[0.11.0],[taler-bug@gnunet.org])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([src/util/util.c])
AC_CONFIG_HEADERS([taler_config.h])
diff --git a/contrib/Makefile.am.in b/contrib/Makefile.am.in
index e278fad2f..d3cfa769c 100644
--- a/contrib/Makefile.am.in
+++ b/contrib/Makefile.am.in
@@ -29,6 +29,7 @@ termsdir=$(datadir)/taler/terms/
terms_DATA = \
exchange-tos-v0.rst \
exchange-tos-bfh-v0.rst \
+ exchange-tos-tops-v0.rst \
exchange-pp-v0.rst
install-exec-local:
diff --git a/contrib/exchange-tos-bfh-v0.rst b/contrib/exchange-tos-bfh-v0.rst
index 85f041c33..33a2b76f7 100644
--- a/contrib/exchange-tos-bfh-v0.rst
+++ b/contrib/exchange-tos-bfh-v0.rst
@@ -1,7 +1,7 @@
-Terms Of Service
+Terms of Service
================
-Last Updated: 09.06.2022
+Last update: 26.04.2024
Welcome! The ICE research center of the Bern University of Applied Sciences
in Switzerland (“we,” “our,” or “us”) provides an experimental payment service
@@ -34,22 +34,22 @@ carefully.
Highlights:
~~~~~~~~~~~
- • You are responsible for keeping the data in your Taler Wallet at all times
+* You are responsible for keeping the data in your Taler Wallet at all times
under your control. Any losses arising from you not being in control of
your private information are your problem.
- • We may transfer funds we receive from our users to any legal
+* We may transfer funds we receive from our users to any legal
recipient to the best of our ability within the limitations of the law and
our implementation. However, the Services offered today are highly
experimental and the set of recipients of funds is severely restricted.
Again, we stress this is a research experiment and technically all funds
held by the exchange are owned by the research group of the university.
- • For our Services, we may charge transaction fees. The specific fee structure
+* For our Services, we may charge transaction fees. The specific fee structure
is provided based on the Taler protocol and should be shown to you when you
withdraw electronic coins using a Taler Wallet. You agree and understand
that the Taler protocol allows for the fee structure to change.
- • You agree to not intentionally overwhelm our systems with requests and
+* You agree to not intentionally overwhelm our systems with requests and
follow responsible disclosure if you find security issues in our services.
- • We cannot be held accountable for our Services not being available due to
+* We cannot be held accountable for our Services not being available due to
any circumstances. If we modify or terminate our services,
we may give you the opportunity to recover your funds. However,
given the experimental state of the Services today, this may not be
@@ -152,7 +152,7 @@ modified or unmodified form. However, the GPL is a strong copyleft license,
which means that any derivative works must be distributed under the same
license terms as the original software. If you have any questions, you should
review the GNU GPL’s full terms and conditions at
-https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler” itself is a trademark
+https://www.gnu.org/licenses/. “Taler” itself is a trademark
of Taler Systems SA. You are welcome to use the name in relation to processing
payments using the Taler protocol, assuming your use is compatible with an
official release from the GNU Project that is not older than two years.
@@ -171,15 +171,13 @@ Taler Wallet, including, but not limited to your Taler Wallet coins or backup
encryption keys. You release us from all liability related to any losses,
damages, or claims arising from:
-(a) user error such as forgotten passwords, incorrectly constructed
- transactions;
-(b) server failure or data loss;
-(c) unauthorized access to the Taler Wallet application;
-(d) bugs or other errors in the Taler Wallet software; and
-(e) any unauthorized third party activities, including, but not limited to,
- the use of viruses, phishing, brute forcing, or other means of attack
- against the Taler Wallet. We make no representations concerning any
- Third Party Content contained in or accessed through our Services.
+1) user error such as forgotten passwords, incorrectly constructed transactions;
+2) server failure or data loss;
+3) unauthorized access to the Taler Wallet application;
+4) bugs or other errors in the Taler Wallet software; and
+5) any unauthorized third party activities, including, but not limited to, the use of
+viruses, phishing, brute forcing, or other means of attack against the Taler Wallet. We make no
+representations concerning any Third Party Content contained in or accessed through our Services.
Any other terms, conditions, warranties, or representations associated with
such content, are solely between you and such organizations and/or
@@ -192,19 +190,18 @@ acting, or purporting to act on our behalf (collectively the “Taler Parties”
be liable to you under contract, tort, strict liability, negligence, or any
other legal or equitable theory, for:
-(a) any lost profits, data loss, cost of procurement of substitute goods or
- services, or direct, indirect, incidental, special, punitive, compensatory,
- or consequential damages of any kind whatsoever resulting from:
-
- (i) your use of, or conduct in connection with, our services;
- (ii) any unauthorized use of your wallet and/or private key due to your
- failure to maintain the confidentiality of your wallet;
- (iii) any interruption or cessation of transmission to or from the services; or
- (iv) any bugs, viruses, trojan horses, or the like that are found in the Taler
- Wallet software or that may be transmitted to or through our services by
- any third party (regardless of the source of origination), or
-
-(b) any direct damages.
+1) any direct damages or
+2) any lost profits, data loss, cost of procurement of substitute goods or services, or
+direct, indirect, incidental, special, punitive, compensatory, or consequential damages of any kind
+whatsoever resulting from:
+
+* your use of, or conduct in connection with, our services;
+* any unauthorized use of your wallet and/or private key due to your failure to maintain the
+confidentiality of your wallet;
+* any interruption or cessation of transmission to or from the services; or
+* any bugs, viruses, trojan horses, or the like that are found in the Taler Wallet software
+or that may be transmitted to or through our services by any third party (regardless of the source
+of origination).
These limitations apply regardless of legal theory, whether based on tort,
strict liability, breach of contract, breach of warranty, or any other legal
diff --git a/contrib/exchange-tos-tops-v0.rst b/contrib/exchange-tos-tops-v0.rst
index 2217f781c..9079545be 100644
--- a/contrib/exchange-tos-tops-v0.rst
+++ b/contrib/exchange-tos-tops-v0.rst
@@ -1,959 +1,289 @@
-Allgemeine Geschäftsbedingungen für die Nutzung von TALER
-=========================================================
+Allgemeine Geschäftsbedingungen der Taler Operations AG
+=======================================================
-1. Allgemeines
---------------
+Diese Allgemeinen Geschäftsbedingungen (nachfolgend **AGB**) der Taler
+Operations AG regeln die Rechte und Pflichten von Nutzern und
+Zahlungsempfängern (Begünstigten) des angebotenen Zahlungsdiensts.
-1.1. Dienstleistung / Geltungsbereich
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Die Taler Operations AG (nachfolgend "**TALER AG**") ist eine Schweizer Aktiengesellschaft
-mit Sitz in Zürich.
-Die TALER bietet Privatkundinnen und -kunden (nachfolgend "**Kundin und/oder Kunde**")
-unter dem Namen "TALER” eine eigenes Bezahlungssystem an (nachfolgend "TALER”).
-Diese Allgemeinen Geschäftsbedingungen (nachfolgend "**AGB**") regeln die Benutzung von
-TALER App und die von der TALER AG über die TALER erbrachten Dienstleistungen.
-Diese AGB gelten als akzeptiert, sobald die Kundin bzw. der Kunde in der TALER App das
-Einverständnis erklärt hat.
+Dienstleistung / Geltungsbereich
+--------------------------------
-[KOMMENTAR SK]
-1. Wenn es wirklich nötig ist, für "Taler Operations AG" eine Abkürzung zu verwenden, dann
-würde "TALER AG" aus Sicht der GNU-Community den Namen von GNU Taler sehr vereinnahmen.
-Mein Vorschlag wäre noch kürzer als TALER AG und birgt keine Verwechslungsgefahr,
-Vereinnahmung oder Anmaßung: TOPS AG
-
-CG: Warum nicht einfach "TOPS" statt "TOPS AG"? AG ist auch nicht relevant.
-
-2. Bitte lasst uns Gendersprache vermeiden und statt "**Kundin und Kunde**" lieber
-"**Nutzer**" verwenden und möglichst im Plural schreiben.
-
-CG: Absolut, Gendersprache ist auslaenderfeindlich weil fuer nicht-Muttersprachler
- deutlich schwerer. Aber besser *Kunden* statt *Nutzer* weil vmtl. Kunde ein Rechtsbegriff ist.
-
-3. **Zahlungsdienst** wäre IMHO rechtlich und sprachlich besser als "Bezahlungssystem".
-Dieser Begriff entspricht dem englischen 'payment service provider' auch nach ISO 220022.
-
-CG: OK.
-
-4. Ich würde dem Zahlungsdienst keinen "Namen" geben - vor allem nicht TALER, weil das
-sofort mit einer Währung assoziiert wird. Taler ist jedoch keine Währung, sondern ein
-Bezahlsystem, das in unserem Fall in CHF denominiertes e-Geld emittiert, genauer
-gesagt TOPS-CHF. Wenn wir dafür eine Kurzbezeichnung dafür brauchen, dann wäre
-mein Vorschlag **eCHF**.
-
-Ja, bin auch gegen die Benennung, vor allem weil es eben kein *eigenes* System ist,
-nur weil ich einen Web-Server betreibe, besitze ich ja nicht das Web ;-).
-
-5. Weitere Begriffsbestimmungen wären hier sinnvoll:
-- **Zahlungsdienst** bezeichnet die Dienstleistung der Taler Operations AG mit Sitz in
-Biel (Höheweg 80, 2502 Biel, Mitglied in der anerkannten Selbstregulierungsorganisation
-gemäss Art. 24 GwG, dem VQF - Verein zur Qualitätssicherung von Finanzdienstleistungen).
-
-CG: Nein, zu komplex. Weglassen.
-
-- **Selbstregulierung** bezeichnet die Eigenschaft der Taler Operations AG als Mitglied
-einer Selbstregulierungsorganisation wie dem VQF und Betreiberin einer
-Sandbox-Dienstleistung nach Art. 6 Abs. 2 BankV ohne gewerbsmäßige Bankeneigenschaft
-(Nichtbank).
-
-CG: Auch nicht gut. "TOPS ist Mitglied im VQF, einer FINMA-akkreditierten
+GNU Taler ist ein technisches System, das bargeldlose Zahlungen ermöglicht.
+Taler Operations AG (nachfolgend **TOPS**) mit Sitz in Biel/Bienne, Schweiz,
+bietet einen **Zahlungsdienst** auf Basis von GNU Taler für Nutzer in der
+Schweiz an. TOPS ist Mitglied im VQF, einer FINMA-akkreditierten
Selbstregulierungsorganisation. TOPS wird daher nicht direkt von der FINMA
-beaufsichtigt, sondern betreibt eine Finanzdienstleisung nach Art. 6 Abs. 2
-BankV ohne gewerbsmäßige Bankeneigenschaft (Nichtbank) und somit ohne
-Kundeneinlagensicherung."
-
-- **Taler-Wallet** bezeichnet eine von Taler Operations AG bereitgestellte Software, die
-digitales Bargeld (e-Geld) verwaltet, welches der Zahlungsdienst emittiert und zur
-Zahlung an Begünstigte wieder einlöst.
-- **Nutzer** bezeichnet Inhaber von Taler-Wallets und damit Zahlende bzw. potenziell
-Zahlende.
-
-CG: "Kunden sind Inhaber von durch TOPS signierten und in CHF denominierten Wertmarken
-welche in Taler-Wallets in Eigenverantwortung gespeichert werden und mit denen Kunden
-bezahlen koennen."
-
-- **Begünstigte** bezeichnet Händler, Betriebe, Verkäufer und sonstige Empfänger von
-Überweisungen des Zahlungsdiensts.
-- **Überweisungen von Nutzern** bezeichnet die Überweisungen an den hier angebotenen
-Zahlungsdienst mit dem Ziel des Abhebens von e-Geld in ein persönliches Wallet.
-
-CG: Rest weg-kuerzen:
-
-"", die als
-Publikumseinlagen bei Nichtbanken gelten. Taler Operations AG unterliegt nicht der
-Einlagensicherung und als Nichtbank auch nicht der Bankenaufsicht. Die entgegengenommen
-Gelder werden auf einem Sammelkonto aufbewahrt, um Zahlungen zwischen den Nutzern bzw.
-zwischen Zahlenden (Käufern) und Begünstigen (Verkäufern) auszuführen."" (alles streichen)
-
-- **Überweisungen an Begünstigte** bezeichnet die Überweisungen des Zahlungsdiensts an
-Händler, Betriebe, Verkäufer und sonstige Empfänger, die IBAN-Konten an Finanzinstituten in
-der Schweiz führen müssen, um die Zahlungen ihrer Kunden über den Zahlungsdienst empfangen
-zu können.
-- **Geschäftsbeziehung** bezeichnet die Beziehung zwischen Taler Operations AG und den
-Begünstigten (Händler, Betriebe, Verkäufer und sonstige Empfänger). Sollten für über 12
-Monate keine Transaktionen an die Begünstigen erfolgen, gilt die Geschäftsbeziehung als
-beendet.
-
-CG: Taler Operations AG => TOPS (ueberall!).
-
-[KOMMENTAR SK]
-
-1.2. Zugang zu den TALER Dienstleistungen
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-TALER ist ein System, das bargeldlose Zahlungen über das TALER Zahlungssystem ermöglicht.
-TALER kann von Kundinnen und Kunden verwendet werden, um Zahlungen zwischen TALER Nutzern
-durchzuführen ("**P2P-Zahlung**") und als Zahlungsmittel im stationären Handel, an
-Automaten, online und in Apps bei autorisierten Händlern oder Dienstleistungsanbietern, die
-TALER als Zahlungsmittel akzeptieren (nachfolgend "**Händler**"), eingesetzt werden
-("**P2M-Zahlung**").
-
-CG: nein, nicht noch Haendler einfuehren, einfach bei **Beguenstigten** bleiben!
-
-Die TALER AG kann sodann die Verwendung der TALER App auch im Ausland bei Händlern zulassen,
-die an einem mit dem TALER Zahlungssystem kooperierenden ausländischen Zahlungssystem
-angeschlossen sind. Solche Transaktionen werden vom ausländischen Zahlungssystem an das
-TALER Zahlungssystem weitergeleitet (nachfolgend "**internationale Zahlung**").
-Darüber hinaus bietet die TALER AG verschiedene Mehrwertleistungen an, namentlich die
-Hinterlegung oder Aktivierung von Sichtkarten und Dienstleistungen im Bereich des
-Mobile-Marketing. Diese Mehrwertleistungen erlauben Kundinnen und Kunden u.a., Coupons,
-Stempelkarten und weitere Kampagnen in der TALER App zu erhalten und zu verwalten, Stempel
-zu sammeln und Treuegeschenke, Rabatte und Gutschriften über die TALER App einzulösen.
-
-CG: obiger Paragraph ist kompletter Unsinn, einfach komplett Streichen. Wir machen
-KEINE internationalen Zahlungen, und auch keine "Mehrwertleistungen". Einfach killen!
-
-[NETZBON-NEU]
-Der Verein Soziale Ökonomie arbeitet an der Digitalisierung des NetzBon mit GNU Taler,
-einem digitalen Bezahlsystem, das komplett auf Freier Software und quelloffener Software
-(FLOSS, Free Libre and Open-Source Software) basiert und den Grundsätzen der Sozialen
-Ökonomie folgt. Die Taler Operations AG stellt dieses Bezahlsystem dem Verein Soziale
-Ökonomie zur Verfügung. Die Erweiterung von NetzBon mit eNetzBon soll die Effizienz und
-Wirtschaftlichkeit des NetzBon verbessern, ohne jedoch die physische Form des NetzBon in
-naher Zukunft abzuschaffen.
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-- Treffender als "P2M-Zahlung" wäre m.E. "C2M-Zahlung" (Customer-to-Merchant), weil die
-Zahlenden im Normalfall keine "Peers" sind, sondern einfach nur deren Kunden. P2P-Zahlungen
-liegen hingegen definitionsgemäß auch vor, wenn Zahlende von ihrem Wallet auf das Wallet
-eines Händlers Coins übertragen (Wallet-Exchange-Wallet).
-- Müssen wir "P2M" als Begriff in den AGB unbedingt verwenden? Bitte diskutieren.
-[KOMMENTAR SK]
-
-CG: Ich sehe gar nicht, das wir ueberhaupt P2P vs. P2M/C2M-Zahlungen in den AGBs unterscheiden muessen/sollten.
-
-
-1.3. Technische Voraussetzungen
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-TALER kann "_____________________". Benötigt wird "__________________________".
-Die Nutzung der Zahlungsfunktion und der Mehrwertleistungen erfordert eine aktive
-Internetverbindung.
-
-[NETZBON-NEU]
-Um die angebotenen Dienste wahrnehmen zu können, müssen Nutzer ein Taler-Wallet
-(elektronische Geldbörse) als Taler-App auf ihrem Smartphone oder als Erweiterung in einem
-Browser auf dem PC installieren.
-[NETZBON-NEU]
-
-CG: Nutzer => Kunden
-
-[KOMMENTAR SK]
-- Mir ist nicht klar, was in die Leerzeilen kommen soll.
-
-CG: Ditto.
-
-- Der Satz darunter ist korrekt, aber "Mehrwertleistungen" ein TWINT-Begriff, den wir
-streichen sollten.
-
-CG: JA!
-
-- Ich empfehle, den Satz von NETZBON zu übernehmen, denn er erwähnt auch die
-Browser-Erweiterungen und spricht allumfassend von "Diensten".
-
-CG: Ja. Bitte noch hinzufuegen: "Kunden sind frei in der Wahl ihrer Taler-Wallet
- Anwendung. Beguenstigte sind ebenfalls frei in der Wahl ihrer Taler-Wallet
- Anwendung bzw. ihres Taler-Backends. Verschiedene Loesungen werden von
- diversen Anbietern bereitgestellt.
- TOPS macht hier keine Einschraenkungen, und uebernimmt keine Gewaehrleistung.
- Kunden sind eigenverantwortlich fuer die Sicherheit ihrer Taler-Wallets bzw.
- Taler-Backends und der darin gespeicherten Wertmarken bzw. Transaktionsdaten."
-[KOMMENTAR SK]
-
-1.4. Registrierung und Identifizierung
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Zur Nutzung von TALER sind die Kundinnen und Kunden verpflichtet, sich in bei TALER zu
-registrieren und die verlangten Informationen zur Verfügung zu stellen. Die TALER AG behält
-sich vor, zur Erfüllung regulatorischer Vorgaben jederzeit weitere Informationen zu
-verlangen. Die registrierte Telefonnummer wird aus Sicherheitsgründen per SMS verifiziert.
-Mit der Registration bestätigt die Kundin bzw. der Kunde, die rechtmässige Nutzerin bzw.
-Nutzer der Telefonnummer und des Smartphones zu sein.
-Bei einer Änderung der bei der Registrierung angegebenen Daten müssen diese unverzüglich in
-TALER aktualisiert werden.
-Die TALER AG behält sich vor, Registrierungsgesuche ohne Angabe von Gründen abzulehnen bzw.
-bereits erfolgte Registrationen wieder rückgängig zu machen.
-
-[NETZBON-NEU]
-Es werden keine Daten von zahlenden Nutzern benötigt und es erfolgt auch keine
-Registrierung oder Kontenanlage der Nutzer. Sie können ihre Waren ohne Preisgabe ihrer
-Identität erwerben.
-
-Am eNetzBon-System teilnehmende Betriebe (Händler, Verkäufer) halten beim Verein Soziale
-Ökonomie interne eNetzBon-Konten, auf welche sie die ihnen übergebenen Bareinzahlungen von
-Nutzern (Kunden, Käufern) übertragen, damit die Nutzer dann eNetzBon in ihre persönlichen
-Wallets abheben können. Sie benötigen diese internen eNetzBon-Konten ebenfalls für den
-Empfang von Zahlungen der Nutzer für Güter (Waren und Dienstleistungen) der Betriebe.
-
-Die Nutzer leisten Ihre Einzahlung an das Bezahlsystem entweder in bar an den Verein
-Soziale Ökonomie oder an seine Mitglieder (Händler, Verkäufer) oder überweisen von ihrem
-bestehenden Girokonto bei einer Schweizer Bank an das Bankkonto des Vereins Soziale Ökonomie
-in der Währung Schweizer Franken (CHF), um dann wertbasierte elektronische Münzen in ihre
-Taler-Wallets abzuheben. Sie beziehen damit digitale Wertmarken, die wie ein
-Gutschein oder Prepaid-Guthaben zu betrachten sind. Sie werden auch als Token
-oder Coins bezeichnet. Die elektronischen Münzen werden in der Komplementärwährung
-"eNetzBon" im Taler-Wallet angezeigt und stellen Repräsentanten der Geldwerte auf dem
-Verrechnungskonto des Vereins Soziale Ökonomie in "NetzBon" dar.
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-Statt des ersten Absatzes von 1.4.:
-Zur Nutzung des Zahlungsdiensts bei Überweisungen an **Begünstige** von über 15.000
-CHF/Jahr sind diese verpflichtet, sich in bei Taler Operations AG zu registrieren und die
-dabei verlangten Informationen zur Verfügung zu stellen. Die Taler Operations AG behält
-sich vor, zur Erfüllung regulatorischer Vorgaben jederzeit weitere Informationen zu
-verlangen.
-
-Taler Operations AG benötigt zur Registrierung der Händler deren IBAN, Adresse und
-Telefonnummer (AMLA-Akte) oder es gelten die Empfangslimiten für Händler. Zur
-Nutzung des Zahlungsdiensts gehen die Begünstigten eine Geschäftsbeziehung mit Taler
-Operations AG ein. Ab einer bestimmten Umsatzhöhe sind sie verpflichtet, sich zu
-registrieren und die verlangten Informationen zur Verfügung zu stellen.
-
-Es erfolgt keine Registrierung oder Kontenanlage der **Nutzer** bei Taler Operations AG
-oder dem Bezahlsystem bzw. Zahlungsdienst. Es werden jedoch die IBAN-Konten erfasst, von
-denen die eingehenden Überweisungen erfolgen. Die Nutzer brauchen für das Abheben in
-Taler-Wallets eine Schweizer Telefonnummer zum Empfang von TANs, die der Zahlungsdienst
-versendet. Es gelten Höchstabhebegrenzen von 5.000 CHF pro Monat bzw. 15.000 CHF pro Jahr
-für die Nutzer. Bei Zahlungen an andere Nutzer (P2P-Zahlungen) bestehen für Nutzer mit
-Wohnsitz in der Schweiz Limiten von CHF 1.000 pro Monat und CHF 5.000 pro Kalenderjahr für
-das Senden und das Empfangen von e-Geld.
-[KOMMENTAR SK]
-
-CG: Bitte allgemeiner halten, die Grenzwerte CHF sollten gar nicht explizit in
-den AGBs auftauchen! Stattdessen: "Zur Nutzung des Zahlungsdienstes sind
-Kunden und Beguenstigte verpflichtet TOPS bei der Erfuellung regulatorischer
-Vorgaben zu unterstuetzen. Insbesondere kann TOPS Auskunft verlangen ueber die
-Identitaet von wirtschaftlich Beguenstigten. TOPS hat das Recht und die
-Pflicht ggf. Kunden und Beguenstigte von der Nutzung des Systems
-auszuschliessen sollten diese die notwendigen Auskuenfte verweigern oder
-inkorrekte Angaben machen."
-
-
-
-1.5. Geheimhaltung
-~~~~~~~~~~~~~~~~~~
-
-Der Umstand der Geschäftsbeziehung und daraus resultierende Daten (z.B. Name, Wohnort,
-Transaktionsdaten) werden grundsätzlich vertraulich behandelt. Sie können zur Erbringung von
-Dienstleistungen soweit notwendig an den Zahlungsempfänger sowie an weitere Dritte bekannt
-gegeben werden. Die Vertraulichkeit ist sodann zur Wahrung berechtigter Interessen der TALER
-AG, aber insbesondere in folgenden Fällen, aufgehoben:
-* Wahrnehmung gesetzlicher Auskunftspflichten und Erfüllung regulatorischer Vorgaben
-* Inkasso von Forderungen der TALER AG?
-* Gerichtliche Auseinandersetzungen.
-
-[NETZBON-NEU]
-Es werden keine Daten von zahlenden Nutzern benötigt und auch nicht erfasst. Es erfolgt auch
-keine Registrierung oder Kontenanlage der Nutzer.
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-- Satz 1: Geschäftsbeziehung **mit Begünstigten**
-- Ergänzen: Satz aus NETZBON-NEU
-[KOMMENTAR SK]
-
-CG: "Personenbezogene Daten werden von TOPS nur im Rahmen der zur Erfuellung
-gesetzlicher Verpflichtungen notwendigen Umfang erhoben, verarbeitet,
-aufbewahrt oder weitergegeben. Beim Bezahlvorgang mit e-Geld werden keine
-Daten zur Identitaet vom zahlenden Nutzer erfasst."
-
-
-
-1.6. Support
-~~~~~~~~~~~~
-
-Die TALER AG stellt den Kundinnen und Kunden im Sinne eines technischen Supports über die
-TALER eine Hilfefunktion zur Verfügung. Für die Erbringung dieses Supports können von der
-TALER AG auch Dritte beigezogen werden, an welche hierfür Zugriff auf relevante Daten
-gegeben werden kann.
-
-[KOMMENTAR SK]
-Ich würde hier die Haftung für die Aktionen der Dritten einschränken. Zugriff auf relevante
-Daten hätten dritte Parteien wie z.B. Auditoren oder Behörden übrigens auch nur bei Händlern
-in Bezug auf deren Daten und Umsätze. Bitte diskutieren.
-[KOMMENTAR SK]
-
-CG: Ich wuerde nur das Deutsch korrigieren wollen:
-"TOPS stellt den Nutzern auf Anfrage technischen Support zur Verfügung. An
-der Erbringung dieses Supports können Dritte beteiligt sein. Diese erhalten
-hierfür Zugriff auf notwendige personenbezogene Daten zur Kommunikation mit
-den Nutzern."
-
-
-1.7. Sorgfalts- und andere Pflichten der Kundinnen und Kunden
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Beim Umgang mit TALER sind insbesondere folgende Sorgfaltspflichten durch die Kundinnen und
-Kunden einzuhalten:
-* Das Smartphone, PC, Notebook etc. ist vor unbefugter Benutzung oder Manipulation zu
-schützen (z.B. mittels Geräte- bzw. Displaysperre).
-* Der Code für die Nutzung von TALER ist geheim zu halten, darf keinesfalls an andere
-Personen weitergegeben, oder zusammen mit dem Smartphone aufbewahrt werden.
-* Der gewählte Code darf nicht aus leicht ermittelbaren Kombinationen (Mobile-Nummer,
-Geburtsdatum usw.) bestehen.
-* Im Schadenfall haben die Kundinnen und Kunden nach bestem Wissen zur Aufklärung des
-Falls und zur Schadensminderung beizutragen. Bei strafbaren Handlungen ist Anzeige bei der
-Polizei zu erstatten.
-* Vor jeder Ausführung einer Zahlung sind die Angaben zum Zahlungsempfänger zu
-überprüfen, um Fehltransaktionen zu verhindern.
-* Es ist dafür zu sorgen, dass der Kontakt zur TALER AG nicht abbricht. Kommt es zu
-einem Kontaktabbruch, so kann die TALER AG die ihr entstehenden Kosten für
-Adressnachforschungen, wie auch die besondere Behandlung und Überwachung von
-nachrichtenlosen Vermögenswerten, den Kundinnen und Kunden weiterbelasten. Das Vorgehen bei
-nachrichtenlosen Vermögen und die jeweils geltende Gebührentabelle lässt sich hier einsehen.
-Kontaktlose Geschäftsbeziehungen mit einem Schuldsaldo werden von der TALER AG aufgelöst.
-Die Kundinnen und Kunden sind für die Verwendung (Nutzung) ihres Smartphones verantwortlich
-und tragen sämtliche Folgen, die sich aus der Verwendung der TALER App auf dem Smartphone
-ergeben. Insbesondere werden Handlungen, die eine Drittperson unberechtigt mit der TALER App
-auf dem Smartphone einer Kundin bzw. Kunden vornimmt, der Kundin bzw. dem Kunden
-zugerechnet.
-
-[NETZBON-NEU]
-Die Nutzer müssen sich darüber im klaren sein, elektronisches Geld wie Bargeld zu
-behandeln und ebenso zu sichern, d.h. ein Backup der Wallet-Daten anzulegen. Die Nutzer der
-Taler-App sind daher verpflichtet, den Zugang zum digitalen Endgerät zu sichern und vor
-unbefugtem Zugriff zu bewahren. Sie müssen die Wallet-Daten mit einer Sicherungskopie auf
-einem anderen Gerät speichern. Die Exportfunktion des Wallet hilft dabei, ein Backup der
-Wallet-Daten anzulegen und zu speichern. Ein verlorenes Nutzergerät mit einem Wallet darauf
-ohne Backup der eNetzBon auf einem anderen Gerät oder Datenträger bedeutet einen
-Totalverlust des Gegenwerts des NetzBon-Guthabens.
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-- Streichen: * Der Code für die Nutzung von TALER ist geheim zu halten...
-- Streichen: * Der gewählte Code darf nicht...
-CG: 2x Ja.
-
-- Streichen: * Es ist dafür zu sorgen, dass... (ist wohl ein TWINT-Rest)
-
-CG: Besser: ummuenzen auf **Beguenstigte**. D.h. wenn wir einem Haendler Geld schulden
-aber z.B. KYC brauchen, liegt es erst einmal beim Haendler dies zu merken (im Backend!)
-und uns zu kontaktieren! Wenn wir nachforschen muessen, wer hinter einer IBAN steckt
-um dann KYC zu bekommen, soll dies ruhig kosten. Der Text zu Schuldsalden muss natuerlich
-raus, Schulden gibt es ja bei uns nicht!
-
-- Stattdessen den Text aus NETZBON-NEU verwenden und ergänzen mit:
-* Es ist dafür zu sorgen, dass sich das Endgerät mit einem darauf installierten Taler-Wallet
-innerhalb eines Jahres nach der letzten Transaktion mit dem Zahlungsdienst über das Internet
-verbindet, ansonsten kann das Guthaben im Wallet verloren werden. Ein Erneuern des Guthabens
-erfolgt regulär einen Monat vor dem Ende der Gültigkeit des elektronischen Bargelds, das ein
-Jahr beträgt.
-
-CG: "das zum Abhebezeitpunkt ca. ein Jahr betraegt" (ca. ist wichtig, wir runden...!).
-[KOMMENTAR SK]
-
-1.8. Nutzung; Missbräuche
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Weicht die Nutzung von TALER erheblich vom üblichen Gebrauch ab oder bestehen Anzeichen
-eines rechts- oder vertragswidrigen Verhaltens, kann die TALER AG die Kundinnen und Kunden
-zur rechts- und vertragskonformen Benutzung anhalten, die Leistungserbringung ohne
-Vorankündigung entschädigungslos ändern, einschränken oder einstellen, den Vertrag frist-
-und entschädigungslos auflösen und gegebenenfalls Schadenersatz sowie die Freistellung von
-Ansprüchen Dritter verlangen. Dasselbe gilt im Falle von unzutreffenden oder unvollständigen
-Angaben der Kunden bei der Registrierung.
-
-[NETZBON-NEU]
-Die Taler-App ermöglicht keine direkten Interaktionen, sondern dient ausschliesslich dem
-Bezug und der Verwendung von eNetzBon bei teilnehmenden Geschäften. Spenden sind möglich.
-Die Nutzer verpflichten sich, die Taler-App gemäss den geltenden Gesetzen und Vorschriften
-zu verwenden. Dem Nutzer ist es nur möglich, mit öffentlichen Shops zu interagieren. Mit
-anderen Privatpersonen kann ein Nutzer nicht interagieren.
-
-Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder Missbrauch
-gewisse Konten zu löschen.
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-- Satz 1: die Kundinnen und Kunden --> die **Nutzer**
-- Satz 2: Dasselbe gilt im Falle von unzutreffenden oder unvollständigen Angaben der
-**Begünstigten (Händler, Verkäufer)** bei der Registrierung.
-
-CG: Satz 2: bei P2P brauchen wir ggf. auch angaben von Nutzern, wuerde ich bei **Nutzern** lassen.
-
-- In NETZBON-NEU streichen: Mit anderen Privatpersonen kann ein Nutzer nicht interagieren.
-
-CG: Genau, ist auch bei Netzbon *falsch*.
-
-- Ändern: Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder
-Missbrauch Konten **(von Händlern, Betrieben, Verkäufern) zu sperren bzw.** zu löschen.
-[KOMMENTAR SK]
-
-1.9. Haftung
-~~~~~~~~~~~~
-
-Die TALER AG haftet nicht für den Kundinnen und Kunden entstandene Verluste oder Schäden
-aufgrund der Verwendung von TALER, insbesondere nicht für Verluste oder Schäden:
-* aufgrund von Übermittlungsfehlern, technischen Störungen oder Defekten, Ausfällen und
-unberechtigten Zugriffen oder Eingriffen auf das Smartphone;
-* die ganz oder teilweise auf einen Verstoss der Kundinnen und Kunden gegen diese AGB
-oder anwendbare Gesetze zurückzuführen sind;
-* aufgrund einer Störung oder Fehlers von TALER oder der verwendeten Hardware;
-* aufgrund von Störungen, Unterbrechungen (inkl. für Systemwartungsarbeiten) oder
-Überlastungen der relevanten Informatiksysteme bzw. Netze;
-* aufgrund von Zahlungen, die nicht oder verzögert verarbeitet werden;
-* in Bezug auf Mehrwertleistungen;
-
-CG: streichen? Mehrwertleistungen machen wir doch gar nicht?
-
-* die auf Handlungen oder Unterlassungen von Dritten (inkl. Hilfspersonen der TALER AG)
-zurückzuführen sind,
-es sei denn, diese Verluste oder Schäden sind auf grobe Fahrlässigkeit oder vorsätzliches
-Verschulden der TALER AG zurückzuführen. Die TALER AG ersetzt Sach- und Vermögensschäden je
-Schadenereignis bis höchstens CHF 1’000.
-Die Haftung der TALER AG für Folgeschäden, entgangenem Gewinn, Datenverluste ist – soweit
-gesetzlich zulässig – in jedem Fall ausgeschlossen.
-Die Kundin bzw. der Kunde hält die TALER AG schadlos für Schäden oder Verluste, die der
-TALER AG aufgrund der Nichteinhaltung dieser AGB oder gesetzlichen Vorgaben, aufgrund
-fehlerhafter oder unvollständiger Angaben der Kundin bzw. des Kunden oder der Ausführung von
-Anweisungen entstehen.
-
-[KOMMENTAR SK]
-- Vorschlag zur Ergänzung des obigen Absatzes:
-Die Taler Operations AG haftet bei der Erfüllung ihrer Verpflichtungen für jedes Verschulden
-ihrer Mitarbeiter und der Personen, die sie zur Erfüllung ihrer Verpflichtungen hinzuzieht.
-Soweit die Sonderbedingungen für einzelne Geschäftsbeziehungen oder sonstige Vereinbarungen
-etwas Abweichendes regeln, gehen diese Regelungen vor.
-
-Hat ein Nutzer des Taler-Bezahlsystems durch schuldhaftes Verhalten - zum Beispiel durch
-Verletzung von Mitwirkungspflichten wie regelmässige Sicherungen und Vorsichtsmassnahmen -
-zur Entstehung eines Schadens beigetragen, bestimmt sich nach den Grundsätzen des
-Mitverschuldens, in welchem Umfang Taler Operations AG und Nutzer den Schaden zu tragen
-haben.
-
-CG: Nein, weglassen. Hilft uns nicht, nur mehr Text. AGB steht eh nicht ueber Recht und Gesetz.
-
-- Streichen: * in Bezug auf Mehrwertleistungen;
-
-CG: genau.
-[KOMMENTAR SK]
-
-1.10. Kommunikation
-~~~~~~~~~~~~~~~~~~~
-
-Die Kommunikation zwischen der TALER AG und den Kundinnen und Kunden erfolgt grundsätzlich
-über die TALER. Bei Bedarf kann die TALER AG die Kundinnen und Kunden auch ausserhalb der
-TALER App kontaktieren. Eine solche Kommunikation ist nicht zwingend vertraulich oder
-sicher.
-
-[KOMMENTAR SK]
-- Satz 1: Die Kommunikation zwischen der TALER AG und den Begünstigten erfolgt grundsätzlich
-über die TALER AG.
-
-- Satz 2: Bei Bedarf kann die TALER AG die registrierten Begünstigten (Händler, Betriebe,
-Verkäufer) kontaktieren.
-- Ergänzen: Falls eine Kommunikation zwischen der TALER AG und den Nutzern notwendig werden
-sollte, kann diese über ein Finanzinstitut (Bank des überweisenden Girokontos der Nutzer)
-oder/und über die Taler-Apps erfolgen, sofern dies technisch möglich ist.
-[KOMMENTAR SK]
+beaufsichtigt, sondern betreibt eine Finanzdienstleistung nach Art. 6 Abs. 2
+BankV ohne gewerbsmässige Bankeneigenschaft (Nichtbank) und somit ohne
+Kundeneinlagensicherung.
-CG: alles falsch. Die Kommunikation von TOPS zu Nutzern erfolgt grundsätzlich
-über Benachrichtigungen im GNU Taler Protokoll. Nutzer sind dafuer verantwortlich auf
-entsprechende Benachrichtigungen zu reagieren. TOPS hat das Recht, Transaktionen
-nicht auszufuehren bis Nutzer auf diesem Weg angeforderte rechtlich notwendige Daten
-bereitstellen.
+**Nutzer** sind Eigentümer von durch TOPS signierten und in CHF denominierten
+Wertmarken (e-Geld), welche in Taler-Wallets in Eigenverantwortung der Nutzer
+gespeichert werden und mit denen die Nutzer bezahlen können.
+**Taler-Wallets** sind Produkte, die digitales Bargeld (e-Geld) nach dem GNU
+Taler-Protokoll verwalten, welches ein Zahlungsdienst emittiert und zur
+Zahlung an Begünstigte wieder einlöst. Die von TOPS emittierten Wertmarken
+(e-CHF) können als Zahlungsmittel im stationären Handel, an Automaten, online
+und in Apps bei autorisierten Händlern oder Dienstleistungsanbietern, die
+dieses Zahlungsmittel akzeptieren (nachfolgend "**Begünstigte**") eingesetzt
+werden. Nutzer können auch Zahlungen mit anderen Nutzern durchführen oder
+das e-Geld auf ein Schweizer Bankkonto zurückübertragen.
-1.11. Änderung AGB
-~~~~~~~~~~~~~~~~~~
+Technische Voraussetzungen
+--------------------------
-Die TALER AG kann die AGB jederzeit ändern. Änderungen werden auf geeignete Weise bekannt
-gegeben. Ist die Kundin bzw. der Kunde mit den Änderungen nicht einverstanden, so kann die
-Kundin bzw. der Kunde die TALER App nicht mehr verwenden.
-
-[KOMMENTAR SK]
-Vorschlag statt des obigen Absatzes:
-Die Taler Operations AG behält sich das Recht vor, diese Allgemeinen Geschäftsbedingungen
-(AGB) ändern zu können. Die Nutzer werden über Änderungen in der Taler-App benachrichtigt.
-Die fortgesetzte Nutzung der Taler-App nach Änderungen der AGB gilt als Zustimmung zu den
+Um die angebotenen Dienste wahrnehmen zu können, müssen Nutzer ein Taler-Wallet
+(elektronische Geldbörse) als Taler-App auf ihrem Smartphone oder als
+Erweiterung in einem Browser auf dem PC installieren. Die Nutzer sind frei in
+der Wahl ihrer Taler-Wallet-Anwendung. Begünstigte sind ebenfalls frei in der
+Wahl ihrer Taler-Wallet-Anwendung bzw. ihres Taler-Backends. Verschiedene
+Lösungen werden von diversen Anbietern bereitgestellt. TOPS macht hier keine
+Einschränkungen und übernimmt keine Gewährleistung für die gewählte Lösung. Die
+Nutzer sind eigenverantwortlich für die Sicherheit ihrer Taler-Wallets bzw.
+Taler-Backends und der darin gespeicherten Wertmarken bzw. Transaktionsdaten.
+
+Das Taler-Wallet wird von den Nutzern über die hierfür vorgesehenen
+Mechanismen aufgeladen. Zum Aufbuchen der gewünschten Geldmenge wählt man im
+Taler-Wallet den von TOPS betriebenen Zahlungsdienst, an den man diese
+Geldmenge vom Girokonto überweist und von dem schliesslich das Taler-Wallet die
+elektronischen Repräsentanten der Geldmenge abhebt. TOPS kann weitere
+Aufladeoptionen einführen oder auch bestehende Mechanismen nicht mehr anbieten.
+Allfällige mit der Aufladung verbundene Transaktions- oder sonstige Gebühren
+sind durch die Nutzer zu tragen. Das Guthaben der Nutzer in Wallets wird nicht
+verzinst. Die Nutzer nehmen zur Kenntnis, dass das Guthaben nicht von der
+Einlagensicherung gedeckt ist.
+
+Das Entladen des Taler-Wallet muss auf ein Schweizer Bankkonto
+erfolgen. Internationale Zahlungen sind nicht erlaubt. Die Nutzer können mit
+dem im Smartphone oder Webbrowser installierten Taler-Wallet innerhalb der
+geltenden Limiten bei natürlichen und juristischen Personen bezahlen, die
+diese Bezahloption akzeptieren und ein Schweizer Bankkonto zum Geldempfang
+führen (z.B. Ladengeschäfte, Webshops, Apps und sonstige Begünstigte). Bei
+einer Bezahlung wird der entsprechende Betrag direkt vom Taler-Wallet
+abgebucht. Es muss im Taler-Wallet mindestens der Transaktionsbetrag verfügbar
+sein. Die Nutzer anerkennen sämtliche getätigten Zahlungen, welche mit dem
+Taler-Wallet von ihrem digitalen Endgerät erfolgten, selbst wenn diese
+Zahlungen ohne ihre Zustimmung erfolgt sind. Wer ein Guthaben im Taler-Wallet
+einlöst, hat den Wert des Guthabens zur Zahlung verwendet.
+
+Der Verarbeitungsprozess für das Erhöhen und Verringern des Guthabens im
+Taler-Wallet kann je nach Mechanismus mehrere Tage in Anspruch nehmen.
+
+
+Preise, Gebühren und Limiten
+----------------------------
+
+TOPS kann die Gebühren jederzeit ändern. Änderungen haben nur Wirkung auf nach
+der Änderung bezogene Wertmarken. Korrekte Taler-Wallets informieren Nutzer
+über Gebührenänderungen vor dem Bezug von neuen Wertmarken. Der Bezug von
+Wertmarken der TOPS nach Änderungen der Gebühren gilt als Zustimmung zu den
geänderten Bedingungen.
-Der Zahlungsdienst sendet automatisch Änderungen in den AGB und Datenschutzbestimmungen
-an die Taler-Wallets mit der Notwendigkeit der Bestätigung durch die Nutzer, nach der sie
-die Taler-App weiterverwenden können.
-[KOMMENTAR SK]
-
-CG: "TOPS kann die AGB jederzeit ändern. Änderungen haben nur Wirkung auf nach der
-Änderung bezogene Wertmarken. Korrekte Wallets informieren Nutzer über Änderungen
-vor dem Bezug von neuen Wertmarken. Der Bezug von Wertmarken der TOPS nach
-Änderungen der AGB gilt als Zustimmung zu den geänderten Bedingungen."
-
-weil: du kannt den Leuten nicht verbieten, eine GPL-Wallet nicht zu benutzen wenn sie
-TOPS AGBs nicht zustimmen! Das waere GPL-widrig!
-
-
-1.12. Vorbehalt gesetzlicher Regelungen und Beschränkung der Dienstleistungen
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Allfällige Gesetzesbestimmungen, die den Betrieb und die Benutzung von Smartphones,
-Zahlungssystemen, des Internets und sonstiger dedizierter Infrastruktur regeln, bleiben
-vorbehalten und gelten ab ihrer Inkraftsetzung auch für die vorliegenden Dienstleistungen.
-Die Benutzung der Dienstleistungen aus dem Ausland kann lokalen rechtlichen Restriktionen
-unterliegen oder unter Umständen Regeln des ausländischen Rechts verletzen. Die
-Zahlungsfunktion ist grundsätzlich auf das Hoheitsgebiet der Schweiz beschränkt und darf im
-Ausland nicht in Anspruch genommen werden. Zulässig sind aber internationale Zahlungen über
-ein mit dem TALER Zahlungssystem kooperierendes ausländisches Zahlungssystem.
-
-CG: Letzten Satz hier streichen. Nix international.
-
-Die TALER AG behält sich vor, das Angebot von TALER jederzeit und ohne vorherige Ankündigung
-zu ändern, zu beschränken oder vollständig einzustellen, insbesondere aufgrund rechtlicher
-Anforderungen, technischen Problemen, zwecks Verhinderung von Missbräuchen, auf behördliche
-Anordnung oder aus Sicherheitsgründen.
-Die TALER AG kann nach eigenem Ermessen und ohne vorherige Ankündigung die Nutzung von TALER
-für einzelne Kundinnen und Kunden einschränken oder unterbinden, Zahlungen nicht oder nur
-verzögert verarbeiten, eingehende Zahlungen zurückweisen und das Auf- und Entladen
-beschränken, insbesondere wo dies nach Auffassung der TALER AG aus rechtlichen Gründen oder
-solchen, die die Reputation betreffen, angezeigt ist, bei IT-gestützten Angriffen, bei
-Missbrauch oder bei Betrugsverdacht. Im Verlaufe der Dauer der Geschäftsbeziehung können
-Umstände eintreten, die die TALER AG verpflichten, Vermögenswerte zu sperren, die
-Geschäftsbeziehung einer zuständigen Behörde zu melden oder abzubrechen.
-Die Kundinnen und Kunden sind verpflichtet, der TALER AG auf Verlangen Auskünfte zu
-erteilen, die die TALER AG benötigt, um den gesetzlichen oder internen Abklärungs- oder
-Meldepflichten nachzukommen.
-
-CG: scheint mir vieles vorher gesagtes zu duplizieren. Ggf. oben Text streichen?
-
-1.13. Geistiges Eigentum
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Für die Dauer des Vertrages erhalten die Kundinnen und Kunden das unübertragbare, nicht
-ausschliessliche Recht zur Nutzung von TALER. Inhalt und Umfang dieses Rechts ergeben sich
-aus den vorliegenden AGB. Alle Immaterialgüterrechte verbleiben bei der TALER AG oder den
-berechtigten Dritten.
-
-[KOMMENTAR SK]
-Satz 1: Für die Dauer der **Nutzung** erhalten die Nutzer das unübertragbare, nicht
-ausschliessliche Recht zur Verwendung des Bezahlsystems. Die Vertragspartner (Händler,
-Betriebe, Verkäufer) als Begünstigte erhalten im Fall der Nutzung der P2P- oder
-P2M-Funktion des Bezahlsystems dieses Recht wie alle anderen Nutzer eingeräumt.
-[KOMMENTAR SK]
-
-CG: Wuerde ich alles streichen. IP-Unsinn. Besser:
-
-1.13: Trademark
-~~~~~~~~~~~~~~~
-
-Beguenstigte haben das nicht ausschliessliche Recht das Taler-Logo zu
-nutzen um zu signalisieren, dass sie Zahlungen mit Taler akzeptieren.
-
-
-
-1.14 Datenschutz
-~~~~~~~~~~~~~~~~
-
-Die TALER AG verpflichtet sich hinsichtlich der Beschaffung, Bearbeitung und
-Nutzung der personenbezogenen Daten der Kundinnen und Kunden die Bestimmungen der
-schweizerischen Datenschutzgesetzgebung (insbesondere Bundesgesetz über den Datenschutz,
-DSG, und Verordnung über den Datenschutz, VDSG) einzuhalten.
-
-Alle Systemdaten werden ausschliesslich in der Schweiz gehostet.
-
-CG: ausschliesslich => primaer
-
-Der KYC Prozess wird durch
-einen Dienstleister übernommen, welcher verpflichtet wird, die Daten ebenfalls nach Recht
-und Gesetz von der Schweiz zu sichern.
-
-CG: KYC Prozesse werden ggf. durch Dienstleister gesteuert. Diese sind ebenfalls verpflichtet
-die Daten ebenfalls nach Recht und Gesetz der Schweiz zu sichern.
-
-Die eigentichen Daten des Kernsystems werden auf
-verschlüsselten Festplatten redundant (d.h. mit Backup) gespeichert und sind nur
-autorisiertem Personal zugänglich. Autorisiertes Personal wird von TALER AG einer
-Sicherheitsprüfung unterzogen. Das gesamte Design wurde strikt nach den Grundsätzen
-"Privacy-by-Design” und "Privacy-by-Default” umgesetzt.
-
->>>
-Taler nutzt blinde Signaturen, damit
-TALER AG nicht lernen kann, welcher legitimierte Nutzer bei welchem Verkäufer einkauft.
-Weitere nicht-blinde digitale Signaturen werden eingesetzt, um alle Transaktionsschritte
-gegenseitig zu bestätigen und auch extern z.B. gegenüber Auditoren überprüfbar zu machen.
-Gleichzeitig werden Hashfunktionen eingesetzt, um Details, die dritte Parteien nicht lernen
-sollen, auch nicht zu exponieren. Von den Käufern werden nur so viele Daten verwendet, wie
-zum Abheben in eine virtuelle Geldbörse (Wallet) notwendig sind. Die dabei bezogenen
-Bankkonten haben bereits bankenseitig eine KYC-Prüfung der Käufer durchgeführt und kennen
-deren Namen und Adressen in Verbindung mit der Bankkontennummer (IBAN). Von den Verkäufern
-sind ebenfalls IBAN-Kontennummern bekannt. Diese können bei Bedarf zuständigen Behörden und
-Auditoren offengelegt werden
-<<<
-CG: obigen >>>Paragraph<<< bitte komplett streichen. Nicht falsch, aber viel zu viele Details.
-
-Weitere Informationen zu den Datenbearbeitungen finden sich in der Datenschutzerklärung auf
-der Webseite der TALER AG (www.TALER.ch).
-
-[NETZBON-NEU]
-Die Datenschutzrichtlinien sind in einem separaten Dokument festgelegt, das die Nutzer auch
-in der Taler-App finden. Der Schutz der persönlichen Daten und finanziellen Informationen
-hat für uns höchste Priorität. Daten der Nutzer werden nicht erhoben. Beim Bezahlen mit
-eNetzBon werden nur Ort, Uhrzeit und der die eNetzBon empfangende Betrieb (Händler,
-Verkäufer) erhoben. Die anonymisierten Daten des Kaufs und der Überweisung von NetzBon an
-den Betrieb werden im Falle einer Untersuchung der Finma erhoben. Dies betrifft jedoch nicht
-Nutzer, die mit eNetzBon zahlen, sondern die Transaktionen in NetzBon zwischen dem Verein
-Soziale Ökonomie und den teilnehmenden Betrieben.
-
-Den Datenschutzbeauftragten des Vereins Soziale Ökonomie erreichen Sie beim Sitz des Vereins
-in der Klybeckstrasse 95, 4057 Basel, und per E-Mail an kontakt@sozialeoekonomie.org.
-
-Den Datenschutzbeauftragten der Taler Operations AG erreichen Sie per Post an Taler
-Operations AG, Höheweg 80, 2502 Biel, und über die unten genannten Kontaktmöglichkeiten.
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-- Satz 1 von 1.14.: Kundinnen und Kunden --> Begünstigte
-
-CG: Besser: "Nutzer" (weil: beides, Kunden + Beguenstigte)
-
-- Beide Texte können ansonsten nach Korrektur orthografischer Fehler so bleiben und sollten
-auch in den AGB so angezeigt werden. Bitte diskutieren und eventuell kürzen.
-
-CG: Ja, definitiv viel kuerzen (siehe oben).
-[KOMMENTAR SK]
-
-1.15. Dauer und Kündigung
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Die Geschäftsbeziehung zwischen der Kundin bzw. dem Kunden und der TALER AG wird für
-unbestimmte Dauer abgeschlossen.
-Die Kundinnen und Kunden können ihr TALER Guthaben auf TALER jederzeit saldieren und
-schliessen, was als Kündigung gilt. Die TALER AG kann ihrerseits die Geschäftsbeziehung
-jederzeit mit sofortiger Wirkung kündigen. Eine schriftliche Kündigung der TALER AG erfolgt
-an die zuletzt bekanntgegebene (E-Mail-) Adresse der Kundin bzw. des Kunden.
-
-CG: Das ist Unsin, wir haben keine E-mail addressen von Kunden!
-
-Erfolgt während 4 Jahren keine Transaktion, gilt die Geschäftsbeziehung als durch die Kundin
-bzw. den Kunden gekündigt.
-
-[KOMMENTAR SK]
-- Satz 1: Die Geschäftsbeziehung zwischen den Begünstigten (Händler, Betriebe, Verkäufer
-und sonstige Empfänger von Überweisungen des Zahlungsdienst an die begünstigten
-IBAN-Konten) und dem Zahlungsdienstleister wird auf eine unbestimmte Dauer abgeschlossen.
-
-CG: Ja.
-
-- Satz 2: Die Nutzer von Taler-Wallets können das Guthaben jederzeit an die Bankkonten
-zurücküberweisen lassen, von denen die Überweisung der Nutzer an den Zahlungsdienst
-erfolgte, und so das Guthaben auf Null setzen.
-
-CG: Auch OK, wobei "saldieren" ggf. besser ist.
-
-- Satz 3: Die TALER AG kann die Geschäftsbeziehung mit den Begünstigten jederzeit -
-insbesondere in Missbrauchsfällen mit sofortiger Wirkung - kündigen.
-- Satz 4: Eine schriftliche Kündigung der TALER AG erfolgt an eine der zuletzt
-bekanntgegebenen Adressen der Geschäftspartner (z.B. per E-Mail oder Brief).
-- Satz 5: Streichen
-
-CG: Ja, wir brauchen ggf. noch etwas das TOPS bei Betriebsaufgabe die Nutzer ueber
- das Taler-Protokoll informiert und die Wallets in diesem Fall die Kunden
- auffordern werden, bestehende Restguthaben zu saldieren. Kunden die dies
- unterlassen, verlieren dann nach 3 Monaten den Anspruch auf das Restguthaben.
-
-[KOMMENTAR SK]
-
-1.16. Übertragung
-~~~~~~~~~~~~~~~~~
-
-Die TALER AG kann die Vertragsbeziehung mit der Kundin bzw. dem Kunden
-(inkl. einem allfälligen Guthaben) jederzeit und ohne vorgängige Information auf eine andere
-Gesellschaft der TALER Gruppe übertragen.
-
-[KOMMENTAR SK]
-Änderungsvorschlag:
-Die Taler Operations AG kann eine vertraglich geregelte Geschäftsbeziehung jederzeit an
-eine andere Firma ihrer Muttergesellschaft übertragen.
-[KOMMENTAR SK]
-
-CG: Nein, einfach "auf eine andere Gesellschaft uebertragen".
-Gar keine Einschraenkung auf Gruppe/Mutter, bitte!
-
-
-1.17. Anwendbares Recht und Gerichtsstand
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Soweit gesetzlich zulässig, unterstehen alle Rechtsbeziehungen zwischen den Kundinnen und
-Kunden und der TALER AG (inkl. internationalen Zahlungen) ausschliesslich dem materiellen
-schweizerischen Recht, unter Ausschluss von Kollisionsrecht und unter Ausschluss von
-Staatsverträgen.
-Unter dem Vorbehalt von entgegenstehenden, zwingenden gesetzlichen Bestimmungen ist Zürich
-ausschliesslicher Gerichtsstand und Erfüllungsort. Für Kundinnen und Kunden mit Wohnsitz
-ausserhalb der Schweiz ist Zürich sodann auch Betreibungsort.
-
-[NETZBON-NEU]
-Bei etwaigen Streitigkeiten oder Unstimmigkeiten, die aus der Nutzung von Taler, der
-Taler-App und eNetzBon entstehen, verpflichten sich die Parteien, zunächst eine gütliche
-Einigung anzustreben. Wenn keine Einigung erzielt werden kann, unterliegt die
-Streitbeilegung den geltenden schweizerischen Gesetzen und der Gerichtsbarkeit von Biel.
-
-CG: Netzbon is Biel!? Nicht Basel?
-[NETZBON-NEU]
-
-[KOMMENTAR SK]
-- Satz 1: Kundinnen und Kunden --> Nutzern
-
-CG: immer ;-)
-
-- Satz 2: Zürich --> Biel
+Es bestehen Limiten von CHF 3.000 pro Monat und CHF 15.000 pro Kalenderjahr
+für das Abheben von e-Geld von einem Girokonto bzw. für den Empfang von
+Peer-to-Peer-Zahlungen zwischen Taler-Wallets mit bestätigter Schweizer
+Mobilfunknummer.
-CG: TOPS: Ich denke Bern, nicht Biel (so was ist doch bestimmt Kantonal!?)
-- Satz aus NETZBON-NEU ebenfalls verwenden
+Allgemeine Mitwirkungspflichten
+-------------------------------
-CG: OK.
-[KOMMENTAR SK]
+Zur Nutzung des Zahlungsdiensts sind Nutzer und Begünstigte verpflichtet, TOPS
+bei der Erfüllung regulatorischer und gesetzlicher Vorgaben zu unterstützen.
+Insbesondere kann TOPS über die Identität von wirtschaftlich Berechtigten
+Auskunft verlangen. TOPS hat das Recht und ggf. die gesetzliche Pflicht,
+Nutzer und Begünstigte von der Nutzung des Zahlungsdiensts auszuschliessen,
+sollten diese die erforderlichen Auskünfte verweigern oder unwahre Angaben
+machen.
-2. Zahlungsfunktionen
----------------------
+Zur Nutzung des Zahlungsdiensts gehen *Begünstigte* eine Geschäftsbeziehung
+mit TOPS ein und können ggf. verpflichtet sein, sich bei TOPS zu registrieren
+und die dabei verlangten Informationen zur Verfügung zu stellen. TOPS behält
+sich vor, zur Erfüllung regulatorischer Vorgaben jederzeit weitere
+Informationen zu verlangen.
-2.1. Limiten
-~~~~~~~~~~~~
+Es erfolgt keine Kontenanlage der *Nutzer* bei TOPS. Erfasst werden jedoch
+die IBAN-Konten von Nutzern, die CHF an TOPS überweisen, um Wertmarken zu
+kaufen. Die Nutzer brauchen zum Empfang von Peer-to-Peer-Zahlungen mindestens
+eine Schweizer Mobiltelefonnummer zum Empfang von SMS zur Identifizierung.
-Die Kundinnen und Kunden können bis CHF "___________________".
-Bei Zahlungen an andere TALER Nutzer (P2P-Zahlung) bestehen für Kundinnen und Kunden mit
-Wohnsitz in der Schweiz Limiten von CHF 1‘000 pro Monat und CHF 5‘000 pro Kalenderjahr für
-das Senden und das Empfangen von Geld
-CG: 1000/5000 fuer das Abheben von e-Geld von einem Girokonto bzw. fuer den Empfang von
- P2P Zahlungen zwischen Taler-Wallets mit bestaetigter Schweizer Mobilfunknummer.
+Sorgfalts- und andere Pflichten der Nutzer
+------------------------------------------
-Die TALER AG behält sich vor, diese Limite jederzeit zu senken oder zu erhöhen bzw.
-zusätzliche Limite einzuführen, insbesondere aus regulatorischen sowie Sicherheitsgründen.
+Beim Umgang mit dem Zahlungsdienst sind insbesondere folgende
+Sorgfaltspflichten von Nutzern einzuhalten:
-[KOMMENTAR SK]
-Änderungsvorschlag für Satz 3:
-Die TALER AG behält sich insbesondere aus regulatorischen Gründen vor, die Limite jederzeit
-zu senken oder zu erhöhen. Die Änderung wird in aktualisierten AGB angezeigt, welche die
-Nutzer vor der weiteren Nutzung des Zahlungsdiensts zu bestätigen haben.
-[KOMMENTAR SK]
-
-CG: Das wir die AGB aendern koennen haben wir bereits gesagt, wuerde ich nicht doppeln.
-
-2.2. Aufbuchen
-~~~~~~~~~~~~~~
-
-Das TALER Wallet wird von den Kundinnen und Kunden über die hierfür "_________"vorgesehenen
-Optionen aufgeladen. Es stehen folgende Möglichkeiten zur Verfügung:
-* Zum Aufbuchen der gewünschten Währung und der Geldmenge wählt man in der
-Wallet-Anwendung den von TALER AG betriebenen Exchange, an den man die Gelder vom Girokonto
-überweist und von dem schließlich das Wallet die elektronischen Repräsentanten der
-gewünschten Geldmenge abhebt (sog. Coins)
-Die TALER AG kann weitere Aufladeoptionen einführen oder bestehende Optionen nicht mehr
-anbieten.
-Allfällige mit der Ladung verbundenen Transaktions- oder sonstigen Gebühren sind durch die
-Kundinnen und Kunden zu tragen.
-Das TALER Guthaben wird nicht verzinst. Die Kundinnen und Kunden nehmen zur Kenntnis, dass
-das Guthaben nicht von der Einlagensicherung gedeckt ist.
-Der Verarbeitungsprozess für das Aufladen bzw. Entladen des TALER Guthabens kann je nach
-Ladeoption mehrere Tage Zeit in Anspruch nehmen.
-Die Kundin bzw. der Kunde erteilt für den Fall der Einrichtung der LSV-Anbindung der TALER
-AG die Ermächtigung, einzelne Daten zwecks Bonitätsprüfung an Dritte weitergeben zu können.
-
-CG: Den letzten Satz streichen.
-
-[NETZBON-KOMMENTAR]
-Die Nutzer können eNetzBon durch zwei Verfahren erwerben bzw. das Guthaben auf ihrem Wallet
-erhöhen:
-
-a. Per Bareinzahlung durch Nutzung der "Taler Cashier-App" in der
-Markthalle und in der Buchhandlung, wo ein Nutzer den abzuhebenden Betrag in CHF an das
-Personal bar übergeben kann und dann durch das Wallet der Betrag in CHF abgehoben und im
-Wallet in eNetzBon umgetauscht wird.
-
-b. Per Banküberweisung an das PostFinanz-Konto des Vereins Soziale Ökonomie. Das Wallet
-hilft dabei den Nutzern, den Abhebevorgang einzuleiten und gibt dazu einen Verwendungszweck
-an, d.h. eine mehrstellige Kombination aus Nummer und Buchstaben, die im Kontoauszug des
-persönlichhen Girokontos des jeweiligen Nutzers als Buchungstext angezeigt wird. Mit diesem
-Verwendungszweck kann das Wallet den Betrag zuerst in CHF abheben und dann im Wallet in
-eNetzBon umtauschen.
-
-Der Preis eines eNetzBon beträgt 1 CHF. Bitte beachten Sie, dass NetzBon nicht
-rückerstattbar sind, daher müssen sie ausgegeben werden.
-
-In der Phase der Markteinführung von eNetzBon werden keine Transaktionskosten von Nutzern
-erhoben. Bei der Bezahlung mit eNetzBon fallen daher vorerst keine Transaktionsgebühren an.
-Diese Allgemeinen Geschäftsbedingungen erlauben jedoch die Möglichkeit zukünftiger
-Änderungen der Gebührenordnung.
-[NETZBON-KOMMENTAR]
-
-[KOMMENTAR SK]
-- Satz 3 in 2.2.: Streichen: (sog. Coins)
-- Satz 5: durch die Kundinnen und Kunden --> durch die Nutzer
-- Satz 6: Das TALER Guthaben --> Guthaben der Nutzer in Wallets
-- Satz 7: Kundinnen und Kunden --> Nutzer
-- Satz 8: Aufladen bzw. Entladen des TALER Guthabens --> Erhöhen und Verringern des
-Guthabens im Wallet
-
-CG: alle OK.
-
-- Satz 9: Diesen Satz kann ich nicht interpretieren (was ist LSV-Anbindung?); Kundin bzw.
-der Kunde --> Nutzer
-
-CG: LSV Lastschriftverfahren. Streichen, machen wir *nie*.
-[KOMMENTAR SK]
-
-2.3. Abbuchen
-~~~~~~~~~~~~~
-
-Das Entladen muss "_____________________________________________".
-
-[KOMMENTAR SK]
-Was soll in den Platzhalter kommen?
-[KOMMENTAR SK]
-
-CG: ... auf ein Schweizer Bankkonto erfolgen. Internationale Zahlungen sind nicht erlaubt.
-
-
-2.4. Zahlen mit TALER
-~~~~~~~~~~~~~~~~~~~~~
-
-Die Kundinnen und Kunden können mit dem Smartphone und dem damit verbundenen TALER Wallet an
-entsprechend ausgerüsteten Ladenkassen im Inland, Automaten, im Internet, in anderen Apps,
-durch Hinterlegung als TALER Zahlungsart bei ausgewählten Händlern, bei Mehrwertleistungen
-und an andere TALER Nutzer im Rahmen der geltenden Limiten bezahlen.
-Bei einer Bezahlung wird der entsprechende Betrag direkt vom TALER Wallet abgebucht. Es muss
-mindestes im TALER Wallet in Höhe des Transaktionsbetrags verfügbar sein.
-
-CG: Mehrwertleistungen streichen.
-
-[KOMMENTAR SK]
-Änderungsvorschlag für Satz 1: Die Nutzer können mit dem im Smartphone oder Webbrowser
-installierten Taler-Wallet innerhalb der geltenden Limiten bezahlen bei natürlichen und
-juristischen Personen, die diese Bezahloption akzeptieren und ein Schweizer Bankkonto zum
-Geldempfang führen (z.B. Ladengeschäfte, Webshops, Apps und sonstige Begünstigte).
-[KOMMENTAR SK]
-
-CG: Scheint mir aequivalent, ist mir egal ;-).
-
-
-2.5. Belastung der Bezahlungen
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Die Kundinnen und Kunden anerkennen sämtliche getätigten P2M- und P2P-Zahlungen, welche mit
-dem TALER Wallet von ihrem Smartphone aus erfolgt sind, selbst wenn diese Zahlungen ohne
-ihre Zustimmung erfolgt sind.
-
-[KOMMENTAR SK]
-Es handelt sich bei dem Guthaben auf den Wallets der Nutzer um digitales Bargeld, dessen
-Eigentümerschaft technisch nicht ermittelbar ist. Jeder Teil des Guthabens erscheint in
-Form einer Datei mit alphanumerischen Zeichenfolgen und wird beim Abheben ins Wallet blind
-signiert, wodurch der Signatar keinen Rückschluss auf den Eigentümer des eingelösten
-Guthabens ziehen kann. Ist ein Guthaben eingelöst worden, kann dieses nicht noch ein
-weiteres Mal eingelöst werden. Wer das Guthaben zuerst einlöst, hat den Wert des Guthabens
-zur Zahlung verwendet.
-[KOMMENTAR SK]
-
-CG: Smartphone ist zu einschraenkend (kann ja auch ein Browser oder CLI-wallet sein!)
-CG: KOMMENTAR SK ist zu lang. Eher was von oben zum Thema Eigenverantwortung/Eigenverwahrung
- runterziehen?
-
-
-2.6. Preise und Drittvergütungen
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Die Installation von TALER und die Nutzung der damit verbundenen Dienstleistungen sind
-grundsätzlich kostenlos.
-
-CG: Streichen. TOPS hat *nichts* mit der Installation zu tun. Die machen ggf. Dritte,
- und da haben wir auch nichts zu zu sagen, was da die Kosten sind!
-
-Internationale Zahlungen in Fremdwährungen werden automatisch zu einem von einem Dritten
-gestellten Wechselkurs in Schweizer Franken umgerechnet. Die TALER AG kann diesen
-Wechselkurs erhöhen (sog. Mark-up) sowie eine zusätzliche Gebühr für die
-Fremdwährungstransaktion verlangen. Der Mark-up und die Gebühren fliessen alleine der TALER
-AG zu.
-
-CG: Streichen, wir machen keine Konvertierung.
-
-Den Kundinnen und Kunden wird in jedem Fall der finale Betrag in Schweizer Franken
-zur Bestätigung angezeigt. Kommt es zu einer Rückabwicklung einer internationalen Zahlung,
-so wird diese zum dannzumal gestellten Wechselkurs durchgeführt. Die Kundinnen und Kunden
-tragen das entsprechende Wechselkursrisiko.
-
-CG: Streichen, wir machen keine Konvertierung.
-
-TALER kann für die Nutzung von Aufladeoptionen Gebühren erheben. Die Kundinnen und Kunden
-werden in diesem Fall vor der Nutzung der
-kostenpflichtigen Aufladeoption in der TALER App über die zu bezahlenden Gebühren
-informiert.
-
-CG: Archivieren, nur wenn wir das wirklich machen in die AGB aufnehmen!
-
-Änderungen von Preisen und die Einführung neuer Preise werden grundsätzlich in der TALER App
-bekanntgegeben. Eine Anpassung gilt als genehmigt, wenn die Kundin bzw. der Kunde nicht vor
-Inkrafttreten der Änderung den Vertrag kündigt (Ziffer 1.15). Änderungen von Preisen für
-internationale Zahlungen müssen nicht separat bekanntgegeben werden.
-
-CG: Streichen, wir machen keine internationalen Zahlungen.
-
-Den Kundinnen und
-Kunden wird aber immer der Endbetrag in Schweizer Franken inkl. allen Gebühren angezeigt,
-
-
-bevor eine internationale Zahlung bestätigt wird.
+* Das Smartphone, PC, Notebook etc. ist vor unbefugter Benutzung oder
+ Manipulation zu schützen (z.B. mittels Geräte- bzw. Displaysperre).
+* Im Schadenfall haben die Nutzer nach bestem Wissen zur Aufklärung des Falls
+ und zur Schadensminderung beizutragen. Bei strafbaren Handlungen ist Anzeige
+ bei der Polizei zu erstatten.
+* Vor jeder Ausführung einer Zahlung sind die Angaben zum Zahlungsempfänger zu
+ überprüfen, um Fehltransaktionen zu verhindern.
+* Die Nutzer sind für die Nutzung verantwortlich und tragen sämtliche Folgen,
+ die sich aus der Verwendung ergeben. Insbesondere werden Handlungen, die
+ eine Drittperson unberechtigt mit dem Taler-Wallet vornimmt, dem Eigentümer
+ des Wallet zugerechnet.
+* Die Nutzer müssen sich darüber im klaren sein, **elektronisches Geld wie
+ Bargeld zu behandeln** und ebenso zu sichern, d.h. ein Backup der Wallet-Daten
+ anzulegen. Die Nutzer der Taler-App sind daher verpflichtet, den Zugang zum
+ digitalen Endgerät zu sichern und vor unbefugtem Zugriff zu bewahren. Sie
+ müssen die Wallet-Daten mit einer Sicherungskopie auf einem anderen Gerät
+ speichern. Die Exportfunktion des Wallet hilft dabei, ein Backup der
+ Wallet-Daten anzulegen und zu speichern. Ein verlorenes Nutzergerät mit
+ einem Wallet darauf ohne Backup auf einem anderen Gerät oder Datenträger
+ bedeutet einen Totalverlust des Guthabens.
+* Es ist dafür zu sorgen, dass sich das Endgerät mit einem darauf
+ installierten Taler-Wallet **innerhalb eines Jahres** nach der letzten
+ Transaktion **mit dem Zahlungsdienst über das Internet verbindet**, ansonsten
+ kann das Guthaben im Wallet verloren werden. Ein Erneuern des Guthabens
+ erfolgt regulär einen Monat vor dem Ende der Gültigkeit des elektronischen
+ Bargelds, die zum Abhebezeitpunkt ca. ein Jahr beträgt.
+
+Die Kommunikation von TOPS zu Nutzern erfolgt grundsätzlich über
+Benachrichtigungen im Protokoll von GNU Taler. Nutzer sind dafür
+verantwortlich, auf entsprechende Benachrichtigungen zu reagieren. TOPS hat
+das Recht, Transaktionen solange nicht auszuführen, bis Nutzer auf diesem Weg
+angeforderte rechtlich notwendige Daten bereitstellen.
+
+
+Haftung
+-------
+
+TOPS haftet nicht für entstandene Verluste oder Schäden der Nutzer aufgrund
+der Verwendung von GNU Taler, insbesondere nicht für Verluste oder Schäden
+
+* aufgrund von Übermittlungsfehlern, technischen Störungen oder Defekten,
+ Ausfällen und unberechtigten Zugriffen oder Eingriffen auf das digitale
+ Endgerät,
+* die ganz oder teilweise auf einen Verstoss der Nutzer gegen diese AGB oder
+ anwendbare Gesetze zurückzuführen sind,
+* aufgrund einer Störung oder Fehlers von Software oder der verwendeten
+ Hardware,
+* aufgrund von Störungen, Unterbrechungen (einschliesslich
+ Systemwartungsarbeiten) oder Überlastungen der relevanten Informatiksysteme
+ bzw. Netze,
+* aufgrund von Zahlungen, die nicht oder verzögert verarbeitet werden,
+* die auf Handlungen oder Unterlassungen von Dritten (inkl. Hilfspersonen der
+ TOPS) zurückzuführen sind,
+
+es sei denn, diese Verluste oder Schäden sind auf grobe Fahrlässigkeit oder
+vorsätzliches Verschulden von TOPS zurückzuführen. TOPS ersetzt Sach- und
+Vermögensschäden je Schadenereignis bis höchstens CHF 1.000. Die Haftung für
+Folgeschäden, entgangenen Gewinn oder Datenverluste ist – soweit gesetzlich
+zulässig – in jedem Fall ausgeschlossen.
+
+
+Nutzung; Missbräuche
+--------------------
+
+Nutzer halten TOPS schadlos für Schäden oder Verluste, die TOPS aufgrund der
+Nichteinhaltung dieser AGB oder gesetzlicher Vorgaben, aufgrund fehlerhafter
+oder unvollständiger Angaben der Nutzer oder der fehlerhaften Ausführung von
+Anweisungen entstehen.
-CG: Streichen, wir machen keine internationalen Zahlungen.
+Weicht die Nutzung erheblich vom üblichen Gebrauch ab oder bestehen Anzeichen
+eines rechts- oder vertragswidrigen Verhaltens, kann TOPS die Nutzer zur
+rechts- und vertragskonformen Nutzung anhalten, die Leistungserbringung ohne
+Vorankündigung entschädigungslos ändern, einschränken oder einstellen, die
+Geschäftsbeziehung frist- und entschädigungslos auflösen und gegebenenfalls
+Schadenersatz sowie die Freistellung von Ansprüchen Dritter verlangen. TOPS
+behält sich vor, bei Verletzung von Regeln oder Missbrauch Zahlungen an
+Begünstigte zurückzuhalten.
-Bei P2M-Zahlungen und der Inanspruchnahme von Mehrwertleistungen erhält die TALER AG unter
-Umständen gewisse Vergütungen von Dritten. Diese Drittvergütungen sind hier detailliert
-beschrieben.
+Vorbehalte zu Änderungen an dieser AGB
+--------------------------------------
-CG: Streichen, wir machen keine Mehrwertleistungen.
+TOPS kann die AGB jederzeit ändern. Änderungen haben nur Wirkung auf nach der
+Änderung bezogene Wertmarken. Korrekte Taler-Wallets informieren Nutzer über
+Änderungen vor dem Bezug von neuen Wertmarken. Der Bezug von Wertmarken der
+TOPS nach Änderungen der AGB gilt als Zustimmung zu den geänderten
+Bedingungen.
-Sie erlauben der TALER AG, die Benutzung der TALER App grundsätzlich kostenlos
-anzubieten. **Die Kundin bzw. der Kunde verzichtet auf die Erstattung sämtlicher
-Drittvergütungen, die die TALER AG in der Vergangenheit erhalten hat und in Zukunft erhalten
-könnte.**
+Allfällige Gesetzesbestimmungen, die den Betrieb und die Nutzung von digitalen
+Endgeräten, Zahlungsdiensten, des Internets und sonstiger Infrastruktur
+regeln, bleiben vorbehalten und gelten ab ihrer Inkraftsetzung auch für die
+TOPS-Dienstleistungen.
-CG: Archivieren: wir bekommen keine Drittverguetungen, und *TOPS* bietet die Taler App gar nicht an!
+TOPS behält sich vor, das Angebot von Dienstleistungen jederzeit und ohne
+vorherige Ankündigung zu ändern, zu beschränken oder vollständig einzustellen,
+insbesondere aufgrund rechtlicher Anforderungen, technischer Probleme, zur
+Verhinderung von Missbräuchen, auf behördliche Anordnung oder aus
+Sicherheitsgründen.
+TOPS kann die Vertragsbeziehungen (einschliesslich eines Guthabens) jederzeit
+und ohne vorherige Information auf eine andere Gesellschaft übertragen.
-[KOMMENTAR SK]
-- Satz 1: --> Die Installation von Taler-Wallets ...
-- Satz 2: Internationale **eingehende** Zahlungen in Fremdwährungen werden automatisch zu
-einem von **der Schweizerischen Nationalbank** festgestellten Wechselkurs in Schweizer
-Franken umgerechnet.
-- Satz 6: Bei Rückbuchungen aus dem Guthaben in Taler-Wallets auf Nutzeranweisung oder bei
-erfolglosem Abheben ins Wallet erfolgen diese in derselben internationalen Fremdwährung wie
-die Eingangszahlung und verringert um anfallende Gebühren für Rücküberweisungen und
-Fremdwährungstransaktionen.
-- Satz 7 streichen
-- Satz 8: TALER --> Taler Operations AG
-- Satz 11: Eine Anpassung gilt als genehmigt, wenn die **Nutzer** die aktualisierten AGB in
-der App akzeptieren. Eine Anpassung gilt als genehmigt, wenn die Begünstigten (Händler,
-Betriebe, Verkäufer) nicht vor Inkrafttreten der Änderung den Vertrag kündigen.
-- Sätze 14 bis Ende: Bitte streichen, denn "Mehrwertleistungen" umfassen bei TWINT z.B.
-“Mobile-Marketing-Kampagnen”, Rabatt- und Kundenbindungsprogramme und die "Später
-zahlen"-Funktion. Diese Funktionen sind jedoch für das Taler-Bezahlsystem abträglich und
-dürften sowieso eher von der Seite der Händler angeboten werden.
-CG: Genau.
+Geheimhaltung und Datenschutz
+-----------------------------
-Dankeschön, dass alle Kommentare bis hierhin durchgelesen wurden! Der AGB-Text muss ggf.
-stilistisch noch umformuliert werden, denn er ist zu weiten Teilen identisch mit TWINT-AGB.
-[KOMMENTAR SK]
+Personenbezogene Daten werden von TOPS nur im Rahmen der Erfüllung
+gesetzlicher Verpflichtungen erhoben, verarbeitet, aufbewahrt oder
+weitergegeben. Beim Bezahlvorgang mit e-Geld werden keine Daten zur Identität
+der Nutzer erfasst.
-CG: Stilistische Gleichheit ist IMO kein Problem. Nur muss eben richtig sein ;-).
+TOPS stellt Nutzern auf Anfrage technischen Support zur Verfügung. An der
+Erbringung dieses Supports können Dritte beteiligt sein. Diese erhalten
+hierfür Zugriff auf notwendige personenbezogene Daten zur Kommunikation mit
+den Nutzern.
+
+TOPS verpflichtet sich hinsichtlich der Beschaffung, Bearbeitung und Nutzung
+personenbezogener Daten von Nutzern, die Bestimmungen der schweizerischen
+Datenschutzgesetzgebung, insbesondere des Bundesgesetzes über den Datenschutz
+und der Verordnung über den Datenschutz, einzuhalten.
+
+Alle Systemdaten werden primär in der Schweiz gehostet.
+
+KYC-Prozesse werden ggf. durch Dienstleister gesteuert. Diese sind ebenfalls
+verpflichtet, die Daten nach Recht und Gesetz der Schweiz zu sichern. Die
+eigentlichen Daten des Kernsystems werden auf verschlüsselten Festplatten
+redundant (d.h. mit Backup) gespeichert und sind nur autorisiertem Personal
+zugänglich. Autorisiertes Personal wird von TOPS einer Sicherheitsprüfung
+unterzogen. Das gesamte Design des Zahlungsdiensts GNU Taler wurde strikt nach
+den Grundsätzen "Privacy-by-Design” und "Privacy-by-Default” umgesetzt.
+
+Weitere Informationen zu den Datenbearbeitungen finden sich in der
+Datenschutzerklärung auf der Webseite der TOPS (www.taler-ops.ch).
+
+
+Dauer und Kündigung
+-------------------
+
+Die Geschäftsbeziehung zwischen TOPS und Begünstigten (Händler, Betriebe,
+Verkäufer und sonstige regelmässige Empfänger von Überweisungen des
+Zahlungsdiensts an die begünstigten IBAN-Konten) wird auf eine unbestimmte
+Dauer abgeschlossen. TOPS kann die Geschäftsbeziehung mit den Begünstigten
+jederzeit - insbesondere in Missbrauchsfällen mit sofortiger Wirkung -
+kündigen. Eine schriftliche Kündigung durch TOPS erfolgt an eine der zuletzt
+bekanntgegebenen Adressen der Geschäftspartner (z.B. per E-Mail oder
+Brief). Sollten für über 12 Monate keine Transaktionen an die Begünstigen
+erfolgen, gilt die Geschäftsbeziehung als beendet.
+
+Die Nutzer von Taler-Wallets können das Guthaben in diesen jederzeit an
+Bankkonten in der Schweiz zurücküberweisen lassen und so das Guthaben
+saldieren. Bei einer
+Betriebsaufgabe des Zahlungsdiensts der TOPS werden die Nutzer über die
+bevorstehende Einstellung des Zahlungsdiensts durch das Taler-Protokoll
+informiert und von den Taler-Wallets aufgefordert, das bestehende Guthaben zu
+saldieren. Nutzer, die diese Saldierung unterlassen, verlieren nach 3 Monaten
+den Anspruch auf das danach noch bestehende Guthaben, welches in das Eigentum
+der TOPS übergeht.
+
+
+Anwendbares Recht und Gerichtsstand
+-----------------------------------
+
+Soweit gesetzlich zulässig unterstehen alle Rechtsbeziehungen zwischen TOPS
+und Nutzern ausschliesslich dem materiellen schweizerischen Recht, unter
+Ausschluss von Kollisionsrecht und unter Ausschluss von Staatsverträgen.
+
+Unter dem Vorbehalt von entgegenstehenden zwingenden gesetzlichen
+Bestimmungen ist Biel ausschliesslicher Gerichtsstand und Erfüllungsort. Für
+Nutzer und Begünstigte mit einem Wohnsitz ausserhalb der Schweiz ist Biel
+sodann auch Betreibungsort.
diff --git a/contrib/exchange-tos-v0.rst b/contrib/exchange-tos-v0.rst
index ea3ab297d..1fdb66664 100644
--- a/contrib/exchange-tos-v0.rst
+++ b/contrib/exchange-tos-v0.rst
@@ -1,7 +1,7 @@
Terms of Service
================
-Last update: 22.2.2024
+Last update: 26.4.2024
----------------------
Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service
@@ -128,7 +128,7 @@ modified or unmodified form. However, the GPL is a strong copyleft license,
which means that any derivative works must be distributed under the same
license terms as the original software. If you have any questions, you should
review the GNU GPL’s full terms and conditions on the GNU GPL Licenses page
-(https://www.gnu.org/licenses/gpl-3.0.en.html/). “Taler” itself is a trademark
+(https://www.gnu.org/licenses/). “Taler” itself is a trademark
of Taler Systems SA. You are welcome to use the name in relation to processing
payments based on the Taler protocol, assuming your use is compatible with an
official release from the GNU Project that is not older than two years.
@@ -150,10 +150,9 @@ damages, or claims arising from:
2) server failure or data loss;
3) unauthorized access to the Taler Wallet application;
4) bugs or other errors in the Taler Wallet software; and
-5) any unauthorized third party activities, including, but not limited to,
-the use of viruses, phishing, brute forcing, or other means of attack
-against the Taler Wallet. We make no representations concerning any
-Third Party Content contained in or accessed through our Services.
+5) any unauthorized third party activities, including, but not limited to, the use of
+viruses, phishing, brute forcing, or other means of attack against the Taler Wallet. We make no
+representations concerning any Third Party Content contained in or accessed through our Services.
Any other terms, conditions, warranties, or representations associated with
such content, are solely between you and such organizations and/or individuals.
@@ -165,16 +164,16 @@ acting, or purporting to act on our behalf (collectively the “Taler Parties”
be liable to you under contract, tort, strict liability, negligence, or any
other legal or equitable theory, for:
-1) any lost profits, data loss, cost of procurement of substitute goods or services,
-or direct, indirect, incidental, special, punitive, compensatory,
-or consequential damages of any kind whatsoever resulting from:
+1) any direct damages or
+2) any lost profits, data loss, cost of procurement of substitute goods or services, or
+direct, indirect, incidental, special, punitive, compensatory, or consequential damages of any kind
+whatsoever resulting from:
* your use of, or conduct in connection with, our services;
* any unauthorized use of your wallet and/or private key due to your failure to maintain the confidentiality of your wallet;
* any interruption or cessation of transmission to or from the services; or
-* any bugs, viruses, trojan horses, or the like that are found in the Taler Wallet software or that may be transmitted to or through our services by any third party (regardless of the source of origination), or
-
-2) any direct damages.
+* any bugs, viruses, trojan horses, or the like that are found in the Taler Wallet software
+or that may be transmitted to or through our services by any third party (regardless of the source of origination).
These limitations apply regardless of legal theory, whether based on tort,
strict liability, breach of contract, breach of warranty, or any other legal
diff --git a/contrib/gana b/contrib/gana
-Subproject 63ab2f3c99c86334cc433450d7b99375ebf9d6b
+Subproject e7103267008996a81bbcec6cc2997196d841a36
diff --git a/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po b/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po
index 6cd899442..1b0d296cf 100644
--- a/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po
+++ b/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po
@@ -190,7 +190,7 @@ msgid ""
"copyleft license, which means that any derivative works must be distributed "
"under the same license terms as the original software. If you have any "
"questions, you should review the GNU GPL’s full terms and conditions at "
-"https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler” itself is a trademark "
+"https://www.gnu.org/licenses/. “Taler” itself is a trademark "
"of Taler Systems SA. You are welcome to use the name in relation to "
"processing payments using the Taler protocol, assuming your use is "
"compatible with an official release from the GNU Project that is not older "
diff --git a/contrib/wallet-core b/contrib/wallet-core
-Subproject 240d647da85de6b575d15c37efec04757541e3d
+Subproject b272a075b4590f330eb4a82c257e79ea7f0c7c1
diff --git a/debian/changelog b/debian/changelog
index cab5345dc..73c89ce5e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+taler-exchange (0.11.0) unstable; urgency=low
+
+ * Releasing 0.11.0 with updated terms of service draft.
+
+ -- Christian Grothoff <grothoff@gnu.org> Wed, 15 May 2024 17:50:12 +0200
+
taler-exchange (0.10.2) unstable; urgency=low
* Updated man pages and other resources for release.
diff --git a/debian/taler-exchange.taler-exchange-aggregator.service b/debian/taler-exchange.taler-exchange-aggregator.service
index db297270f..84b757eda 100644
--- a/debian/taler-exchange.taler-exchange-aggregator.service
+++ b/debian/taler-exchange.taler-exchange-aggregator.service
@@ -9,7 +9,7 @@ Type=simple
Restart=always
RestartMode=direct
RestartSec=1s
-RestartPreventExitStatus=2 3 4 5 6 9
+RestartPreventExitStatus=9
ExecStart=/usr/bin/taler-exchange-aggregator -c /etc/taler/taler.conf -L INFO
StandardOutput=journal
StandardError=journal
diff --git a/debian/taler-exchange.taler-exchange-closer.service b/debian/taler-exchange.taler-exchange-closer.service
index ba57522b0..9cdc534f9 100644
--- a/debian/taler-exchange.taler-exchange-closer.service
+++ b/debian/taler-exchange.taler-exchange-closer.service
@@ -9,7 +9,7 @@ Type=simple
Restart=always
RestartMode=direct
RestartSec=1s
-RestartPreventExitStatus=2 3 4 5 6 9
+RestartPreventExitStatus=9
ExecStart=/usr/bin/taler-exchange-closer -c /etc/taler/taler.conf -L INFO
StandardOutput=journal
StandardError=journal
diff --git a/debian/taler-exchange.taler-exchange-expire.service b/debian/taler-exchange.taler-exchange-expire.service
index 8fd9a9f74..2a9552f76 100644
--- a/debian/taler-exchange.taler-exchange-expire.service
+++ b/debian/taler-exchange.taler-exchange-expire.service
@@ -9,7 +9,7 @@ Type=simple
Restart=always
RestartMode=direct
RestartSec=1s
-RestartPreventExitStatus=2 3 4 5 6 9
+RestartPreventExitStatus=9
ExecStart=/usr/bin/taler-exchange-expire -c /etc/taler/taler.conf -L INFO
StandardOutput=journal
StandardError=journal
diff --git a/debian/taler-exchange.taler-exchange-httpd.service b/debian/taler-exchange.taler-exchange-httpd.service
index cbde72522..d7e9b1e36 100644
--- a/debian/taler-exchange.taler-exchange-httpd.service
+++ b/debian/taler-exchange.taler-exchange-httpd.service
@@ -14,7 +14,7 @@ Type=simple
Restart=always
RestartMode=direct
RestartSec=1ms
-RestartPreventExitStatus=2 3 4 5 6 9
+RestartPreventExitStatus=9
# Disable the service if more than 5 restarts are encountered within 5s.
# These are usually the systemd defaults, but can be overwritten, thus we set
diff --git a/debian/taler-exchange.taler-exchange-transfer.service b/debian/taler-exchange.taler-exchange-transfer.service
index ffe2f1955..77ada8f86 100644
--- a/debian/taler-exchange.taler-exchange-transfer.service
+++ b/debian/taler-exchange.taler-exchange-transfer.service
@@ -9,7 +9,7 @@ Type=simple
Restart=always
RestartMode=direct
RestartSec=1s
-RestartPreventExitStatus=2 3 4 5 6 9
+RestartPreventExitStatus=9
ExecStart=/usr/bin/taler-exchange-transfer -c /etc/taler/taler.conf -L INFO
StandardOutput=journal
StandardError=journal
diff --git a/debian/taler-exchange.taler-exchange-wirewatch.service b/debian/taler-exchange.taler-exchange-wirewatch.service
index 40103bb51..7a7dc60b0 100644
--- a/debian/taler-exchange.taler-exchange-wirewatch.service
+++ b/debian/taler-exchange.taler-exchange-wirewatch.service
@@ -9,7 +9,7 @@ Type=simple
Restart=always
RestartMode=direct
RestartSec=1s
-RestartPreventExitStatus=2 3 4 5 6 9
+RestartPreventExitStatus=9
RuntimeMaxSec=3600s
ExecStart=/usr/bin/taler-exchange-wirewatch -c /etc/taler/taler.conf -L INFO
StandardOutput=journal
diff --git a/doc/doxygen/taler.doxy b/doc/doxygen/taler.doxy
index 1516811c5..8efcf0c0f 100644
--- a/doc/doxygen/taler.doxy
+++ b/doc/doxygen/taler.doxy
@@ -47,7 +47,7 @@ PROJECT_NAME = "GNU Taler: Exchange"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 0.10.2
+PROJECT_NUMBER = 0.11.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/prebuilt b/doc/prebuilt
-Subproject b8d2d2fa2ed2a771880f451725176f256583cb2
+Subproject c1a885ac1f9d9b2fdef19a976bed01dab4f7d85
diff --git a/src/exchange/taler-exchange-httpd_config.c b/src/exchange/taler-exchange-httpd_config.c
index e17a9a050..257dfa6ba 100644
--- a/src/exchange/taler-exchange-httpd_config.c
+++ b/src/exchange/taler-exchange-httpd_config.c
@@ -33,10 +33,17 @@ TEH_handler_config (struct TEH_RequestContext *rc,
const char *const args[])
{
static struct MHD_Response *resp;
+ static struct GNUNET_TIME_Absolute a;
+ (void) args;
+ if ( (GNUNET_TIME_absolute_is_past (a)) &&
+ (NULL != resp) )
+ {
+ MHD_destroy_response (resp);
+ resp = NULL;
+ }
if (NULL == resp)
{
- struct GNUNET_TIME_Absolute a;
struct GNUNET_TIME_Timestamp km;
char dat[128];
@@ -62,7 +69,8 @@ TEH_handler_config (struct TEH_RequestContext *rc,
GNUNET_JSON_pack_string ("name",
"taler-exchange"),
GNUNET_JSON_pack_string ("implementation",
- "urn:net:taler:specs:taler-exchange:c-reference"),
+ "urn:net:taler:specs:taler-exchange:c-reference")
+ ,
GNUNET_JSON_pack_string ("version",
EXCHANGE_PROTOCOL_VERSION));
diff --git a/src/exchange/taler-exchange-httpd_config.h b/src/exchange/taler-exchange-httpd_config.h
index c0a14104a..068f51d41 100644
--- a/src/exchange/taler-exchange-httpd_config.h
+++ b/src/exchange/taler-exchange-httpd_config.h
@@ -41,7 +41,7 @@
*
* Returned via both /config and /keys endpoints.
*/
-#define EXCHANGE_PROTOCOL_VERSION "19:1:2"
+#define EXCHANGE_PROTOCOL_VERSION "19:2:2"
/**
diff --git a/src/exchange/taler-exchange-httpd_melt.c b/src/exchange/taler-exchange-httpd_melt.c
index b31078f00..ac3902e3f 100644
--- a/src/exchange/taler-exchange-httpd_melt.c
+++ b/src/exchange/taler-exchange-httpd_melt.c
@@ -58,6 +58,7 @@ reply_melt_success (struct MHD_Connection *connection,
&pub,
&sig)))
{
+ GNUNET_break (0);
return TALER_MHD_reply_with_ec (connection,
ec,
NULL);
diff --git a/src/include/taler_pq_lib.h b/src/include/taler_pq_lib.h
index 6fae8562a..f45de61d9 100644
--- a/src/include/taler_pq_lib.h
+++ b/src/include/taler_pq_lib.h
@@ -422,31 +422,6 @@ TALER_PQ_result_spec_array_amount (
struct TALER_Amount **amounts);
-/**
- * Blind sign public key expected.
- *
- * @param name name of the field in the table
- * @param[out] public_key where to store the denomination signature
- * @return array entry for the result specification to use
- */
-struct GNUNET_PQ_ResultSpec
-TALER_PQ_result_spec_blind_sign_pub (
- const char *name,
- struct GNUNET_CRYPTO_BlindSignPublicKey *public_key);
-
-
-/**
- * Blind sign private key expected.
- *
- * @param name name of the field in the table
- * @param[out] private_key where to store the denomination signature
- * @return array entry for the result specification to use
- */
-struct GNUNET_PQ_ResultSpec
-TALER_PQ_result_spec_blind_sign_priv (
- const char *name,
- struct GNUNET_CRYPTO_BlindSignPrivateKey *private_key);
-
#endif /* TALER_PQ_LIB_H_ */
/* end of include/taler_pq_lib.h */
diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c
index d25b3223e..b1dfd4cf1 100644
--- a/src/pq/pq_query_helper.c
+++ b/src/pq/pq_query_helper.c
@@ -1336,204 +1336,4 @@ TALER_PQ_query_param_array_amount_with_currency (
}
-/**
- * Function called to convert input argument into SQL parameters.
- *
- * @param cls closure
- * @param data pointer to input argument
- * @param data_len number of bytes in @a data (if applicable)
- * @param[out] param_values SQL data to set
- * @param[out] param_lengths SQL length data to set
- * @param[out] param_formats SQL format data to set
- * @param param_length number of entries available in the @a param_values, @a param_lengths and @a param_formats arrays
- * @param[out] scratch buffer for dynamic allocations (to be done via #GNUNET_malloc()
- * @param scratch_length number of entries left in @a scratch
- * @return -1 on error, number of offsets used in @a scratch otherwise
- */
-static int
-qconv_blind_sign_pub (void *cls,
- const void *data,
- size_t data_len,
- void *param_values[],
- int param_lengths[],
- int param_formats[],
- unsigned int param_length,
- void *scratch[],
- unsigned int scratch_length)
-{
- const struct GNUNET_CRYPTO_BlindSignPublicKey *public_key = data;
- size_t tlen;
- size_t len;
- uint32_t be;
- char *buf;
- void *tbuf;
-
- (void) cls;
- (void) data_len;
- GNUNET_assert (1 == param_length);
- GNUNET_assert (scratch_length > 0);
- GNUNET_break (NULL == cls);
- be = htonl ((uint32_t) public_key->cipher);
- switch (public_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- tlen = GNUNET_CRYPTO_rsa_public_key_encode (
- public_key->details.rsa_public_key,
- &tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- tlen = sizeof (public_key->details.cs_public_key);
- break;
- default:
- GNUNET_assert (0);
- }
- len = tlen + sizeof (be);
- buf = GNUNET_malloc (len);
- GNUNET_memcpy (buf,
- &be,
- sizeof (be));
- switch (public_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- GNUNET_memcpy (&buf[sizeof (be)],
- tbuf,
- tlen);
- GNUNET_free (tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- GNUNET_memcpy (&buf[sizeof (be)],
- &public_key->details.cs_public_key,
- tlen);
- break;
- default:
- GNUNET_assert (0);
- }
-
- scratch[0] = buf;
- param_values[0] = (void *) buf;
- param_lengths[0] = len;
- param_formats[0] = 1;
- return 1;
-}
-
-
-/**
- * Generate query parameter for a blind sign public key of variable size.
- *
- * @param public_key pointer to the query parameter to pass
- */
-struct GNUNET_PQ_QueryParam
-TALER_PQ_query_param_blind_sign_pub (
- const struct GNUNET_CRYPTO_BlindSignPublicKey *public_key)
-{
- struct GNUNET_PQ_QueryParam res = {
- .conv = &qconv_blind_sign_pub,
- .data = public_key,
- .num_params = 1
- };
-
- return res;
-}
-
-
-/**
- * Function called to convert input argument into SQL parameters.
- *
- * @param cls closure
- * @param data pointer to input argument
- * @param data_len number of bytes in @a data (if applicable)
- * @param[out] param_values SQL data to set
- * @param[out] param_lengths SQL length data to set
- * @param[out] param_formats SQL format data to set
- * @param param_length number of entries available in the @a param_values, @a param_lengths and @a param_formats arrays
- * @param[out] scratch buffer for dynamic allocations (to be done via #GNUNET_malloc()
- * @param scratch_length number of entries left in @a scratch
- * @return -1 on error, number of offsets used in @a scratch otherwise
- */
-static int
-qconv_blind_sign_priv (void *cls,
- const void *data,
- size_t data_len,
- void *param_values[],
- int param_lengths[],
- int param_formats[],
- unsigned int param_length,
- void *scratch[],
- unsigned int scratch_length)
-{
- const struct GNUNET_CRYPTO_BlindSignPrivateKey *private_key = data;
- size_t tlen;
- size_t len;
- uint32_t be;
- char *buf;
- void *tbuf;
-
- (void) cls;
- (void) data_len;
- GNUNET_assert (1 == param_length);
- GNUNET_assert (scratch_length > 0);
- GNUNET_break (NULL == cls);
- be = htonl ((uint32_t) private_key->cipher);
- switch (private_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- tlen = GNUNET_CRYPTO_rsa_private_key_encode (
- private_key->details.rsa_private_key,
- &tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- tlen = sizeof (private_key->details.cs_private_key);
- break;
- default:
- GNUNET_assert (0);
- }
- len = tlen + sizeof (be);
- buf = GNUNET_malloc (len);
- GNUNET_memcpy (buf,
- &be,
- sizeof (be));
- switch (private_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- GNUNET_memcpy (&buf[sizeof (be)],
- tbuf,
- tlen);
- GNUNET_free (tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- GNUNET_memcpy (&buf[sizeof (be)],
- &private_key->details.cs_private_key,
- tlen);
- break;
- default:
- GNUNET_assert (0);
- }
-
- scratch[0] = buf;
- param_values[0] = (void *) buf;
- param_lengths[0] = len;
- param_formats[0] = 1;
- return 1;
-}
-
-
-/**
- * Generate query parameter for a blind sign private key of variable size.
- *
- * @param private_key pointer to the query parameter to pass
- */
-struct GNUNET_PQ_QueryParam
-TALER_PQ_query_param_blind_sign_priv (
- const struct GNUNET_CRYPTO_BlindSignPrivateKey *private_key)
-{
- struct GNUNET_PQ_QueryParam res = {
- .conv = &qconv_blind_sign_priv,
- .data = private_key,
- .num_params = 1
- };
-
- return res;
-}
-
-
/* end of pq/pq_query_helper.c */
diff --git a/src/pq/pq_result_helper.c b/src/pq/pq_result_helper.c
index e81c78302..384200cfb 100644
--- a/src/pq/pq_result_helper.c
+++ b/src/pq/pq_result_helper.c
@@ -1544,8 +1544,6 @@ TALER_PQ_result_spec_array_amount (
.cls = info,
};
return res;
-
-
}
@@ -1574,9 +1572,6 @@ TALER_PQ_result_spec_array_hash_code (
.cls = info,
};
return res;
-
-
}
-
/* end of pq_result_helper.c */
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index ed3f382d3..d2504588b 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -120,7 +120,7 @@ libtalerutil_la_LIBADD = \
-lm
libtalerutil_la_LDFLAGS = \
- -version-info 3:2:2 \
+ -version-info 3:3:2 \
-no-undefined
diff --git a/src/util/payto.c b/src/util/payto.c
index 5e0391883..6092b73fd 100644
--- a/src/util/payto.c
+++ b/src/util/payto.c
@@ -1,6 +1,6 @@
/*
This file is part of TALER
- Copyright (C) 2019-2022 Taler Systems SA
+ Copyright (C) 2019-2024 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
@@ -101,7 +101,9 @@ TALER_payto_get_method (const char *payto_uri)
char *
TALER_xtalerbank_account_from_payto (const char *payto)
{
+ const char *host;
const char *beg;
+ const char *nxt;
const char *end;
if (0 != strncasecmp (payto,
@@ -111,23 +113,27 @@ TALER_xtalerbank_account_from_payto (const char *payto)
GNUNET_break_op (0);
return NULL;
}
- beg = strchr (&payto[strlen (PAYTO "x-taler-bank/")],
+ host = &payto[strlen (PAYTO "x-taler-bank/")];
+ beg = strchr (host,
'/');
if (NULL == beg)
{
GNUNET_break_op (0);
return NULL;
}
- beg++; /* now points to $ACCOUNT */
+ beg++; /* now points to $ACCOUNT or $PATH */
+ nxt = strchr (beg,
+ '/');
end = strchr (beg,
'?');
if (NULL == end)
+ end = &beg[strlen (beg)];
+ while ( (NULL != nxt) &&
+ (end - nxt > 0) )
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Invalid payto URI `%s'\n",
- payto);
- GNUNET_break_op (0);
- return GNUNET_strdup (beg); /* optional part is missing */
+ beg = nxt + 1;
+ nxt = strchr (beg,
+ '/');
}
return GNUNET_strndup (beg,
end - beg);
@@ -200,36 +206,63 @@ static char *
validate_payto_xtalerbank (const char *account_url)
{
const char *user;
+ const char *nxt;
+ const char *beg;
+ const char *end;
const char *host;
bool dot_ok;
bool post_colon;
+ bool port_ok;
-#define XTALERBANK_PREFIX "payto://x-taler-bank/"
+#define XTALERBANK_PREFIX PAYTO "x-taler-bank/"
if (0 != strncasecmp (account_url,
XTALERBANK_PREFIX,
strlen (XTALERBANK_PREFIX)))
return NULL; /* not an IBAN */
host = &account_url[strlen (XTALERBANK_PREFIX)];
#undef XTALERBANK_PREFIX
- user = strchr (host, '/');
- if (NULL == user)
+ beg = strchr (host,
+ '/');
+ if (NULL == beg)
{
return GNUNET_strdup ("account name missing");
}
- if (user == host)
+ beg++; /* now points to $ACCOUNT or $PATH */
+ nxt = strchr (beg,
+ '/');
+ end = strchr (beg,
+ '?');
+ if (NULL == end)
+ {
+ return GNUNET_strdup ("'receiver-name' parameter missing");
+ }
+ while ( (NULL != nxt) &&
+ (end - nxt > 0) )
+ {
+ beg = nxt + 1;
+ nxt = strchr (beg,
+ '/');
+ }
+ user = beg;
+ if (user == host + 1)
{
return GNUNET_strdup ("domain name missing");
}
if ('-' == host[0])
return GNUNET_strdup ("invalid character '-' at start of domain name");
- if (NULL != strchr (user + 1, '/'))
- return GNUNET_strdup ("invalid character '/' after account name");
dot_ok = false;
post_colon = false;
+ port_ok = false;
while (host != user)
{
char c = host[0];
+ if ('/' == c)
+ {
+ /* path started, do not care about characters
+ in the path */
+ break;
+ }
if (':' == c)
{
post_colon = true;
@@ -247,6 +280,7 @@ validate_payto_xtalerbank (const char *account_url)
c);
return err;
}
+ port_ok = true;
}
else
{
@@ -275,6 +309,10 @@ validate_payto_xtalerbank (const char *account_url)
}
host++;
}
+ if (post_colon && (! port_ok) )
+ {
+ return GNUNET_strdup ("port missing after ':'");
+ }
{
char *target;
@@ -304,7 +342,7 @@ TALER_payto_validate (const char *payto_uri)
/* This is more strict than RFC 8905, alas we do not need to support messages/instructions/etc.,
and it is generally better to start with a narrow whitelist; we can be more permissive later ...*/
#define ALLOWED_CHARACTERS \
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:&?-.,=+%"
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:&?-.,=+%~"
if (NULL == strchr (ALLOWED_CHARACTERS,
(int) payto_uri[i]))
{
@@ -358,10 +396,10 @@ TALER_payto_get_receiver_name (const char *payto)
/**
- * Normalize "payto://x-taler-bank/$HOSTNAME/$USERNAME"
+ * Normalize "payto://x-taler-bank/$HOSTNAME/[$PATH/]$USERNAME"
* URI in @a input.
*
- * Converts to lower-case, except for $USERNAME which
+ * Converts to lower-case, except for [$PATH/]$USERNAME which
* is case-sensitive.
*
* @param len number of bytes in @a input
diff --git a/src/util/test_payto.c b/src/util/test_payto.c
index b37a6f721..62ba7d28e 100644
--- a/src/util/test_payto.c
+++ b/src/util/test_payto.c
@@ -22,16 +22,16 @@
#include "taler_util.h"
#define CHECK(a,b) do { \
- GNUNET_assert (a != NULL); \
- GNUNET_assert (b != NULL); \
- if (0 != strcmp (a,b)) { \
- GNUNET_break (0); \
- fprintf (stderr, "Got %s, wanted %s\n", b, a); \
- GNUNET_free (b); \
- return 1; \
- } else { \
- GNUNET_free (b); \
- } \
+ GNUNET_assert (a != NULL); \
+ GNUNET_assert (b != NULL); \
+ if (0 != strcmp (a,b)) { \
+ GNUNET_break (0); \
+ fprintf (stderr, "Got %s, wanted %s\n", b, a); \
+ GNUNET_free (b); \
+ return 1; \
+ } else { \
+ GNUNET_free (b); \
+ } \
} while (0)
@@ -54,11 +54,20 @@ main (int argc,
"payto://x-taler-bank/hostname/username?receiver-name=foo");
GNUNET_assert (NULL == r);
r = TALER_payto_validate (
+ "payto://x-taler-bank/hostname/~path/username?receiver-name=foo");
+ GNUNET_assert (NULL == r);
+ r = TALER_payto_validate (
+ "payto://x-taler-bank/hostname/~path/username?receiver-name=fo/o");
+ GNUNET_assert (NULL == r);
+ r = TALER_payto_validate (
+ "payto://x-taler-bank/hostname/path/username?receiver-name=foo");
+ GNUNET_assert (NULL == r);
+ r = TALER_payto_validate (
"payto://x-taler-bank/https://hostname/username?receiver-name=foo");
GNUNET_assert (NULL != r);
GNUNET_free (r);
r = TALER_payto_validate (
- "payto://x-taler-bank/hostname/username/extra?receiver-name=foo");
+ "payto://x-taler-bank/hostname:4a2/path/username?receiver-name=foo");
GNUNET_assert (NULL != r);
GNUNET_free (r);
r = TALER_payto_validate (
@@ -82,6 +91,14 @@ main (int argc,
CHECK ("alice",
r);
r = TALER_xtalerbank_account_from_payto (
+ "payto://x-taler-bank/localhost:1080/path/alice");
+ CHECK ("alice",
+ r);
+ r = TALER_xtalerbank_account_from_payto (
+ "payto://x-taler-bank/localhost:1080/path/alice?receiver-name=ali/cia");
+ CHECK ("alice",
+ r);
+ r = TALER_xtalerbank_account_from_payto (
"payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1");
CHECK ("alice",
r);