summaryrefslogtreecommitdiff
path: root/texinfo/taler-exchange.texi
diff options
context:
space:
mode:
Diffstat (limited to 'texinfo/taler-exchange.texi')
-rw-r--r--texinfo/taler-exchange.texi194
1 files changed, 96 insertions, 98 deletions
diff --git a/texinfo/taler-exchange.texi b/texinfo/taler-exchange.texi
index 8872a3c0..f0b39fa2 100644
--- a/texinfo/taler-exchange.texi
+++ b/texinfo/taler-exchange.texi
@@ -21,7 +21,7 @@
@copying
@quotation
-GNU Taler 0.8.2, Aug 08, 2021
+GNU Taler 0.8.2, Jun 20, 2022
GNU Taler team
@@ -98,6 +98,7 @@ Installation
* Installing from source::
* Installing the GNU Taler binary packages on Debian::
+* Installing the GNU Taler binary packages on Trisquel::
* Installing the GNU Taler binary packages on Ubuntu::
Configuration
@@ -203,7 +204,7 @@ etc.). This manual will not cover these aspects of operating a
payment service provider.
We will assume that you can operate a (high-availability,
-high-assurance) Postgres database. Furthermore, we expect some moderate
+high-assurance) PostgreSQL database. Furthermore, we expect some moderate
familiarity with the compilation and installation of free software
packages. You need to understand the cryptographic concepts of private
and public keys and must be able to protect private keys stored in files
@@ -233,7 +234,7 @@ funds in an escrow account.
Note that, given the technical burden (XML-based communications,
additional cryptography, and a vast variety of standards) due to
-interact with banks, the exchange uses a intermediary system to talk
+interact with banks, the exchange uses an intermediary system to talk
to its bank. Such intermediary system abstracts the native banking
protocol by exposing the @emph{Taler Wire Gateway API}; this way, the exchange
can conduct its banking operations in a simplified and JSON-based style.
@@ -274,7 +275,7 @@ binary is the @code{taler-exchange-httpd}.
@item
Crypto-Helpers
The @code{taler-exchange-secmod-rsa} and @code{taler-exchange-secmod-eddsa}
-are two programs that are responsible for managing the exchange’s
+are two programs that are responsible for managing the exchange's
online signing keys. They must run on the same machine as the
@code{taler-exchange-httpd} as the HTTP frontend communicates with the
crypto helpers using UNIX Domain Sockets.
@@ -293,7 +294,7 @@ Closer
The @code{taler-exchange-closer} tool check that reserves are properly
closed. If a customer wires funds to an exchange and then fails
to withdraw them, the closer will (eventually) trigger a wire
-transfer that sends the customer’s funds back to the originating
+transfer that sends the customer's funds back to the originating
wire account.
@item
@@ -334,7 +335,7 @@ the Python bank provides a bank that directly provides
the wire adapter API.
@item
-For production, libeufin’s Nexus component implements a wire
+For production, libeufin's Nexus component implements a wire
adapter towards the traditional SEPA banking system with IBAN
accounts.
@end enumerate
@@ -348,9 +349,9 @@ DBMS
The exchange requires a DBMS to stores the transaction history for
the Taler exchange and aggregator, and a (typically separate) DBMS
for the Taler auditor. For now, the GNU Taler reference implementation
-only supports Postgres, but the code could be easily extended to
+only supports PostgreSQL, but the code could be easily extended to
support another DBMS.
-.. index:: Postgres
+.. index:: PostgreSQL
@item
Auditor
@@ -371,7 +372,7 @@ copy of the database.
The exchange (and ideally also auditors) uses a long-term offline master
siging key that identifies the operator and is used to authenticate critical
-information, such as the exchange’s bank account and the actual keys the
+information, such as the exchange's bank account and the actual keys the
exchange uses online.
Interactions with the offline system are performed using the
@@ -430,7 +431,7 @@ expires or if they are informed about a key having been revoked.
From a security point of view, the helpers are designed to @emph{only} make it
-harder for an attacker who took control of the HTTP daemon’s account to
+harder for an attacker who took control of the HTTP daemon's account to
extract the private keys, limiting the attackers ability to creating
signatures to the duration of their control of that account.
@@ -450,8 +451,8 @@ The helper processes should be run under a user ID that is separate from that
of the user running the main @code{taler-exchange-httpd} service. For security,
it is important that helpers run under a different user ID than the main HTTP
frontend, in fact ideally each helper should run under its own user ID. The
-@code{taler-exchange-httpd} service’s will securely communicate with the helpers
-using UNIX domain sockets. To enable access to the keys, the service’s user
+@code{taler-exchange-httpd} service's will securely communicate with the helpers
+using UNIX domain sockets. To enable access to the keys, the service's user
must be in the group of the helper processes (and no other users should be in
that group).
@@ -482,6 +483,13 @@ exchange compilation.
@itemize -
@item
+Python3 module @code{jinja2}
+@end itemize
+
+
+@itemize -
+
+@item
libsqlite3 >= 3.16.2
@item
@@ -506,13 +514,13 @@ libargon2 >= 20171227
libjansson >= 2.7
@item
-Postgres >= 9.6, including libpq
+PostgreSQL >= 13, including libpq
@item
GNU libmicrohttpd >= 0.9.71
@item
-GNUnet >= 0.14.0 (from source tarball@footnote{http://ftpmirror.gnu.org/gnunet/})
+GNUnet >= 0.16 (from source tarball@footnote{http://ftpmirror.gnu.org/gnunet/})
@item
GNU Taler exchange (from download directory@footnote{http://ftpmirror.gnu.org/taler/},
@@ -526,6 +534,7 @@ manager.
@menu
* Installing from source::
* Installing the GNU Taler binary packages on Debian::
+* Installing the GNU Taler binary packages on Trisquel::
* Installing the GNU Taler binary packages on Ubuntu::
@end menu
@@ -577,54 +586,32 @@ which requires you to run the last step as @code{root}. You have to specify
@code{--with-gnunet=/usr/local} if you installed GNUnet to @code{/usr/local} in the
previous step.
-@node Installing the GNU Taler binary packages on Debian,Installing the GNU Taler binary packages on Ubuntu,Installing from source,Installation
+Please note that unlike most packages, if you want to run the @code{make check}
+command, you should run it only @emph{after} having done @code{make install}. The
+latter ensures that necessary binaries are copied to the right place.
+
+Gratuitous editorial note by TTN: I think this is a quirk that we should
+fix in the long-term as such weirdness might hide other build issues.
+However, this is probably a minority viewpoint.
+
+In any case, if @code{make check} fails, please consider filing a
+bug report with the Taler bug tracker@footnote{https://bugs.taler.net}.
+
+@node Installing the GNU Taler binary packages on Debian,Installing the GNU Taler binary packages on Trisquel,Installing from source,Installation
@anchor{taler-exchange-manual installing-the-gnu-taler-binary-packages-on-debian}@anchor{f}
@section Installing the GNU Taler binary packages on Debian
To install the GNU Taler Debian packages, first ensure that you have
the right Debian distribution. At this time, the packages are built for
-Sid, which means you should use a system which at least includes
-unstable packages in its source list. We recommend using APT pinning
-to limit unstable packages to those explicitly requested. To do this,
-set your @code{/etc/apt/preferences} as follows:
-
-@example
-Package: *
-Pin: release a=stable
-Pin-Priority: 700
+Bullseye.
-Package: *
-Pin: release a=testing
-Pin-Priority: 650
-
-Package: *
-Pin: release a=unstable
-Pin-Priority: 600
-
-Package: *
-Pin: release l=Debian-Security
-Pin-Priority: 1000
-@end example
-
-A typical @code{/etc/apt/sources.list} file for this setup
-which combines Debian stable with more recent packages
-from testing and unstable would look like this:
-
-@example
-deb http://ftp.ch.debian.org/debian/ buster main
-deb http://security.debian.org/debian-security buster/updates main
-deb http://ftp.ch.debian.org/debian/ testing main
-deb http://ftp.ch.debian.org/debian/ unstable main
-@end example
-
-Naturally, you may want to use different mirrors depending on your region.
-Additionally, you must add a file to import the GNU Taler packages. Typically,
+You need to add a file to import the GNU Taler packages. Typically,
this is done by adding a file @code{/etc/apt/sources.list.d/taler.list} that
looks like this:
@example
-deb https://deb.taler.net/apt/debian sid main
+deb https://deb.taler.net/apt/debian bullseye main
@end example
Next, you must import the Taler Systems SA public package signing key
@@ -659,8 +646,18 @@ offline signing and the terms of service.
Sample configuration files for the HTTP reverse proxy can be found in
@code{/etc/taler-exchange/}.
-@node Installing the GNU Taler binary packages on Ubuntu,,Installing the GNU Taler binary packages on Debian,Installation
-@anchor{taler-exchange-manual installing-the-gnu-taler-binary-packages-on-ubuntu}@anchor{10}
+@node Installing the GNU Taler binary packages on Trisquel,Installing the GNU Taler binary packages on Ubuntu,Installing the GNU Taler binary packages on Debian,Installation
+@anchor{taler-exchange-manual installing-the-gnu-taler-binary-packages-on-trisquel}@anchor{10}
+@section Installing the GNU Taler binary packages on Trisquel
+
+
+To install the GNU Taler Trisquel packages, first ensure that you have
+the right Trisquel distribution. Packages are currently available for
+Trisquel GNU/Linux 10.0. Simply follow the same instructions provided
+for Ubuntu 20.04 LTS (Focal Fossa).
+
+@node Installing the GNU Taler binary packages on Ubuntu,,Installing the GNU Taler binary packages on Trisquel,Installation
+@anchor{taler-exchange-manual installing-the-gnu-taler-binary-packages-on-ubuntu}@anchor{11}
@section Installing the GNU Taler binary packages on Ubuntu
@@ -710,7 +707,7 @@ Sample configuration files for the HTTP reverse proxy can be found in
@code{/etc/taler-exchange/}.
@node Configuration<2>,Deployment,Installation,Top
-@anchor{taler-exchange-manual id1}@anchor{11}
+@anchor{taler-exchange-manual id1}@anchor{12}
@chapter Configuration
@@ -734,7 +731,7 @@ of some of the options.
@end menu
@node Configuration format,Using taler-config,,Configuration<2>
-@anchor{taler-exchange-manual configuration-format}@anchor{12}
+@anchor{taler-exchange-manual configuration-format}@anchor{13}
@section Configuration format
@@ -809,7 +806,7 @@ merchant needs to know an exchange URL, or a database name.
@end quotation
@node Using taler-config,Keying,Configuration format,Configuration<2>
-@anchor{taler-exchange-manual using-taler-002dconfig-exchange}@anchor{13}@anchor{taler-exchange-manual using-taler-config}@anchor{14}
+@anchor{taler-exchange-manual using-taler-002dconfig-exchange}@anchor{14}@anchor{taler-exchange-manual using-taler-config}@anchor{15}
@section Using taler-config
@@ -862,7 +859,7 @@ to @code{taler-merchant-httpd} and @code{taler-config} using the @code{-c}
option.
@node Keying,Serving,Using taler-config,Configuration<2>
-@anchor{taler-exchange-manual id2}@anchor{15}@anchor{taler-exchange-manual keying}@anchor{16}
+@anchor{taler-exchange-manual id2}@anchor{16}@anchor{taler-exchange-manual keying}@anchor{17}
@section Keying
@@ -890,9 +887,9 @@ denomination keys (signs electronic coins, see section Coins)
security module keys (signs sign keys and denomination keys)
@end itemize
-Additionally, the exchange is sometimes concerned with the auditor’s public
+Additionally, the exchange is sometimes concerned with the auditor's public
key (to verify messages signed by auditors approved by the exchange operator)
-and the merchant’s public key (to verify refunds are authorized by the
+and the merchant's public key (to verify refunds are authorized by the
merchant).
Key options include:
@@ -908,7 +905,7 @@ Key options include:
@end itemize
@node Serving,Currency,Keying,Configuration<2>
-@anchor{taler-exchange-manual id3}@anchor{17}@anchor{taler-exchange-manual serving}@anchor{18}
+@anchor{taler-exchange-manual id3}@anchor{18}@anchor{taler-exchange-manual serving}@anchor{19}
@section Serving
@@ -936,7 +933,7 @@ for the @code{UNIXPATH} (i.e. 660 = @code{rw-rw---}).
@end itemize
@node Currency,Database,Serving,Configuration<2>
-@anchor{taler-exchange-manual currency}@anchor{19}@anchor{taler-exchange-manual id4}@anchor{1a}
+@anchor{taler-exchange-manual currency}@anchor{1a}@anchor{taler-exchange-manual id4}@anchor{1b}
@section Currency
@@ -944,7 +941,7 @@ The exchange supports only one currency. This data is set under the
respective option @code{CURRENCY} in section @code{[taler]}.
@node Database,Coins denomination keys,Currency,Configuration<2>
-@anchor{taler-exchange-manual database}@anchor{1b}@anchor{taler-exchange-manual id5}@anchor{1c}
+@anchor{taler-exchange-manual database}@anchor{1c}@anchor{taler-exchange-manual id5}@anchor{1d}
@section Database
@@ -992,7 +989,7 @@ Commands, like @code{taler-exchange-dbinit}, that support the @code{-l LOGFILE}
command-line option, send logging output to standard error by default.
@node Coins denomination keys,Sign keys,Database,Configuration<2>
-@anchor{taler-exchange-manual coins-denomination-keys}@anchor{1d}@anchor{taler-exchange-manual id6}@anchor{1e}
+@anchor{taler-exchange-manual coins-denomination-keys}@anchor{1e}@anchor{taler-exchange-manual id6}@anchor{1f}
@section Coins (denomination keys)
@@ -1009,7 +1006,7 @@ must then have the following options:
@item
@code{VALUE}: How much is the coin worth, the format is
-CURRENCY:VALUE.FRACTION. For example, a 10 cent piece is “EUR:0.10”.
+CURRENCY:VALUE.FRACTION. For example, a 10 cent piece is "EUR:0.10".
@item
@code{DURATION_WITHDRAW}: How long can a coin of this type be withdrawn?
@@ -1086,7 +1083,7 @@ to the same configuration file!
@end cartouche
@node Sign keys,Terms of Service,Coins denomination keys,Configuration<2>
-@anchor{taler-exchange-manual id7}@anchor{1f}@anchor{taler-exchange-manual sign-keys}@anchor{20}
+@anchor{taler-exchange-manual id7}@anchor{20}@anchor{taler-exchange-manual sign-keys}@anchor{21}
@section Sign keys
@@ -1124,11 +1121,11 @@ delayed.
@end cartouche
@node Terms of Service,Bank account,Sign keys,Configuration<2>
-@anchor{taler-exchange-manual terms-of-service}@anchor{21}
+@anchor{taler-exchange-manual terms-of-service}@anchor{22}
@section Terms of Service
-The exchange has an endpoint “/terms” to return the terms of service
+The exchange has an endpoint "/terms" to return the terms of service
(in legal language) of the exchange operator. The wallet will show
those terms of service to the user when the user is first withdrawing
coins. Terms of service are optional for experimental deployments,
@@ -1142,7 +1139,7 @@ in the @code{[exchange]} section:
@itemize -
@item
-@code{TERMS_ETAG}: The current “Etag” to return for the terms of service.
+@code{TERMS_ETAG}: The current "Etag" to return for the terms of service.
This value must be changed whenever the terms of service are
updated. A common value to use would be a version number.
Note that if you change the @code{TERMS_ETAG}, you MUST also provide
@@ -1156,7 +1153,7 @@ process.
The @code{TERMS_DIR} directory structure must follow a particular layout.
First, inside of @code{TERMS_DIR}, there should be sub-directories using
-two-letter language codes like “en”, “de”, or “jp”. Each of these
+two-letter language codes like "en", "de", or "jp". Each of these
directories would then hold translations of the current terms of
service into the respective language. Empty directories are
permitted in case translations are not available.
@@ -1174,11 +1171,11 @@ present, the exchange may show a warning on startup.
@end menu
@node Example,,,Terms of Service
-@anchor{taler-exchange-manual example}@anchor{22}
+@anchor{taler-exchange-manual example}@anchor{23}
@subsection Example
-A sample file structure for a @code{TERMS_ETAG} of “v1” would be:
+A sample file structure for a @code{TERMS_ETAG} of "v1" would be:
@itemize -
@@ -1205,12 +1202,12 @@ TERMS_DIR/de/v1.pdf
TERMS_DIR/fr/v1.pdf
@end itemize
-If the user requests an HTML format with language preferences “fr” followed by “en”,
+If the user requests an HTML format with language preferences "fr" followed by "en",
the exchange would return @code{TERMS_DIR/en/v1.html} lacking an HTML version in
French.
@node Bank account,Auditor configuration,Terms of Service,Configuration<2>
-@anchor{taler-exchange-manual bank-account}@anchor{23}@anchor{taler-exchange-manual id8}@anchor{24}
+@anchor{taler-exchange-manual bank-account}@anchor{24}@anchor{taler-exchange-manual id8}@anchor{25}
@section Bank account
@@ -1286,7 +1283,7 @@ For details, see manpages/taler-exchange-offline.1.
@end menu
@node Wire fee structure,,,Bank account
-@anchor{taler-exchange-manual id9}@anchor{25}@anchor{taler-exchange-manual wire-fee-structure}@anchor{26}
+@anchor{taler-exchange-manual id9}@anchor{26}@anchor{taler-exchange-manual wire-fee-structure}@anchor{27}
@subsection Wire fee structure
@@ -1294,12 +1291,12 @@ For details, see manpages/taler-exchange-offline.1.
@geindex fee
-For each wire method (“sepa” or “x-taler-wire”) the
+For each wire method (“iban” or “x-taler-bank”) the
exchange must know about applicable wire fees. This is also done
using the @code{taler-exchange-offline} tool:
@example
-$ taler-exchange-offline wire-fee iban 2040 EUR:0.05 EUR:0.10
+$ taler-exchange-offline wire-fee iban 2040 EUR:0.05 EUR:0.10 EUR:0.15
@end example
The above sets the wire fees for wire transfers involving @code{iban} accounts
@@ -1323,7 +1320,7 @@ this maintenance activity!
@end cartouche
@node Auditor configuration,,Bank account,Configuration<2>
-@anchor{taler-exchange-manual auditor-configuration}@anchor{27}@anchor{taler-exchange-manual id10}@anchor{28}
+@anchor{taler-exchange-manual auditor-configuration}@anchor{28}@anchor{taler-exchange-manual id10}@anchor{29}
@section Auditor configuration
@@ -1331,7 +1328,7 @@ The exchange must be informed about any auditor that is expected to provision
it with auditor signatures. This is also done using the
@code{taler-exchange-offline} tool on the offline system. First, the auditor
must be configured and provide the exchange operator with its public key and
-the URL of it’s REST API. The exchange operator also needs a human-readable
+the URL of it's REST API. The exchange operator also needs a human-readable
name that may be shown to users to identify the auditor. Given this
information, the exchange operator can enable the auditor:
@@ -1343,7 +1340,7 @@ As before, the @emph{auditor.json} file must then be copied from the offline sys
to a system connected to the exchange and there @code{uploaded} to the exchange.
@node Deployment,Testing a deployment,Configuration<2>,Top
-@anchor{taler-exchange-manual deployment}@anchor{29}@anchor{taler-exchange-manual id11}@anchor{2a}
+@anchor{taler-exchange-manual deployment}@anchor{2a}@anchor{taler-exchange-manual id11}@anchor{2b}
@chapter Deployment
@@ -1359,7 +1356,7 @@ configured.
@end menu
@node Launching an exchange,Keys generation,,Deployment
-@anchor{taler-exchange-manual launch}@anchor{2b}@anchor{taler-exchange-manual launching-an-exchange}@anchor{2c}
+@anchor{taler-exchange-manual launch}@anchor{2c}@anchor{taler-exchange-manual launching-an-exchange}@anchor{2d}
@section Launching an exchange
@@ -1395,7 +1392,7 @@ they should use the same configuration file.
For the most secure deployment, we recommend using separate users for each of
these processes to minimize information disclosures should any of them be
-compromised. The helpers do not need access to the Postgres database (and
+compromised. The helpers do not need access to the PostgreSQL database (and
thus also should not have it).
The processes that require access to the bank account need to have a
@@ -1431,7 +1428,7 @@ attack surface.)
@end cartouche
@node Keys generation,Private key storage,Launching an exchange,Deployment
-@anchor{taler-exchange-manual id12}@anchor{2d}@anchor{taler-exchange-manual keys-generation}@anchor{2e}
+@anchor{taler-exchange-manual id12}@anchor{2e}@anchor{taler-exchange-manual keys-generation}@anchor{2f}
@section Keys generation
@@ -1488,7 +1485,7 @@ $ taler-auditor-offline download sign upload
For more information, see manpages/taler-auditor-offline.1.
@node Private key storage,Database upgrades,Keys generation,Deployment
-@anchor{taler-exchange-manual private-key-storage}@anchor{2f}
+@anchor{taler-exchange-manual private-key-storage}@anchor{30}
@section Private key storage
@@ -1500,7 +1497,7 @@ regenerated. However, we do recommend using RAID (1+1 or 1+1+1) for all
disks of the system.
@node Database upgrades,,Private key storage,Deployment
-@anchor{taler-exchange-manual database-upgrades}@anchor{30}@anchor{taler-exchange-manual id13}@anchor{31}
+@anchor{taler-exchange-manual database-upgrades}@anchor{31}@anchor{taler-exchange-manual id13}@anchor{32}
@section Database upgrades
@@ -1524,7 +1521,7 @@ not be performed in a production system.
@end menu
@node Revocations,,,Database upgrades
-@anchor{taler-exchange-manual id14}@anchor{32}@anchor{taler-exchange-manual revocations}@anchor{33}
+@anchor{taler-exchange-manual id14}@anchor{33}@anchor{taler-exchange-manual revocations}@anchor{34}
@subsection Revocations
@@ -1557,7 +1554,7 @@ operation.
@end cartouche
@node Testing a deployment,Diagnostics,Deployment,Top
-@anchor{taler-exchange-manual testing-a-deployment}@anchor{34}
+@anchor{taler-exchange-manual testing-a-deployment}@anchor{35}
@chapter Testing a deployment
@@ -1568,7 +1565,7 @@ separate merchant backend and storefront. For more information, see
taler-wallet-cli-manual.
@node Diagnostics,Benchmarking,Testing a deployment,Top
-@anchor{taler-exchange-manual diagnostics}@anchor{35}@anchor{taler-exchange-manual id15}@anchor{36}
+@anchor{taler-exchange-manual diagnostics}@anchor{36}@anchor{taler-exchange-manual id15}@anchor{37}
@chapter Diagnostics
@@ -1583,12 +1580,12 @@ helpful for diagnostics.
@end menu
@node Internal audits,Database Scheme,,Diagnostics
-@anchor{taler-exchange-manual internal-audit}@anchor{37}@anchor{taler-exchange-manual internal-audits}@anchor{38}
+@anchor{taler-exchange-manual internal-audit}@anchor{38}@anchor{taler-exchange-manual internal-audits}@anchor{39}
@section Internal audits
While an exchange should use an external auditor to attest to regulators that
-it is operating correctly, an exchange operator can also use the auditor’s
+it is operating correctly, an exchange operator can also use the auditor's
logic to perform internal checks. For this, an exchange operator can generally
follow the auditor guide. However, instead of using @code{taler-auditor-sync},
an internal audit can and likely should be performed either directly against
@@ -1611,7 +1608,7 @@ from the very beginning, this is generally not recommended as this may be too
expensive.
@node Database Scheme,,Internal audits,Diagnostics
-@anchor{taler-exchange-manual database-scheme}@anchor{39}@anchor{taler-exchange-manual id16}@anchor{3a}
+@anchor{taler-exchange-manual database-scheme}@anchor{3a}@anchor{taler-exchange-manual id16}@anchor{3b}
@section Database Scheme
@@ -1627,21 +1624,21 @@ The database scheme used by the exchange looks as follows:
@image{taler-exchange-figures/exchange-db,,,,png}
@node Benchmarking,Index,Diagnostics,Top
-@anchor{taler-exchange-manual benchmarking}@anchor{3b}@anchor{taler-exchange-manual exchangebenchmarking}@anchor{3c}
+@anchor{taler-exchange-manual benchmarking}@anchor{3c}@anchor{taler-exchange-manual exchangebenchmarking}@anchor{3d}
@chapter Benchmarking
This chapter describes how to run the Taler exchange benchmark. The benchmark
can be used to measure the performance of the exchange by running a (possibly
large) number of simulated clients against one Taler deployment with a bank,
-exchange and auditor. For the bank, both a “fakebank” (@code{-f}) and a
-“Pythonbank” deployment are currently supported. The
+exchange and auditor. For the bank, both a "fakebank" (@code{-f}) and a
+"Pythonbank" deployment are currently supported. The
@code{taler-exchange-benchmark} program can launch all required services and
clients, or only launch the parallel clients (@code{-m}), for example for
distributed testing over a network.
For each @emph{parallel} (@code{-p}) client, a number of @emph{reserves} (@code{-r}) is first established by
-@strong{transferring} money from a “user” account (42) to the Exchange’s account
+@strong{transferring} money from a "user" account (42) to the Exchange's account
with the respective reserve public key as wire subject. Next, the
client will @strong{withdraw} a @emph{number of coins} (@code{-n}) from the reserve and
@strong{deposit} them. Additionally, a @emph{fraction} (@code{-R}) of the dirty coins will then be
@@ -1661,7 +1658,7 @@ You can run a first simple benchmark using:
@cartouche
@quotation Note
FIXME-TTN/CG: these instructions are incomplete and untested for the
-current iteration of the code…
+current iteration of the code...
@end quotation
@end cartouche
@@ -1672,8 +1669,9 @@ $ taler-exchange-httpd -c benchmark.conf &
$ HTTPD_PID=$!
$ taler-exchange-offline -c benchmark.conf \
download sign \
- enable-account FIXME-DETAILS-MISING-HERE \
- wire-fee FIXME-DETAILS-MISING-HERE \
+ enable-account payto://iban/CH9300762011623852957 \
+ wire-fee iban EUR:0 EUR:0 EUR:0 \
+ global-fee EUR:0 EUR:0 EUR:0 EUR:0 4w 4w 6y 4 \
upload
$ kill -TERM $HTTPD_PID
$ taler-exchange-benchmark -c benchmark.conf -p 4 -r 1 -n 10
@@ -1691,7 +1689,7 @@ repetitions (i.e. if the operation failed the first time), total execution
time (operating system and user space) and other details.
Naturally, additional instrumentation (including using features of the
-Postgres database itself) may help discover performance issues.
+PostgreSQL database itself) may help discover performance issues.
@node Index,,Benchmarking,Top
@unnumbered Index