Minor edits to implementation section
This commit is contained in:
parent
4492821b46
commit
4689610a1f
@ -1474,38 +1474,39 @@ customer owns, only the original customer can use the increased balance.
|
|||||||
|
|
||||||
\section{Implementation}
|
\section{Implementation}
|
||||||
|
|
||||||
We implemented the Taler protocol in the context of a payment system for the
|
We implemented the Taler protocol in the context of a payment system
|
||||||
Web, as shown in Figure~\ref{fig:taler-arch}. The system was designed for real-world usage with
|
for the Web, as shown in Figure~\ref{fig:taler-arch}. The system was
|
||||||
current Web technology and within the existing financial system.
|
designed for real-world usage with current Web technology and within
|
||||||
|
the existing financial system.
|
||||||
|
|
||||||
By instructing their bank to send money to an exchange, the customer creates a
|
By instructing their bank to send money to an exchange, the customer
|
||||||
(non-anonymous) balance, called a \emph{reserve}, at the exchange. The
|
creates a (non-anonymous) balance, called a \emph{reserve}, at the
|
||||||
customer can subsequently withdraw coins from this \emph{reserve} into their
|
exchange. The customer can subsequently withdraw coins from this
|
||||||
\emph{wallet}, which stores and manages coins.
|
reserve into their \emph{wallet}, which stores and manages coins.
|
||||||
|
|
||||||
|
To withdrawal of coins from the exchange, the customer's wallet authenticates
|
||||||
Upon withdrawal of coins from the exchange, the user authenticates themselves
|
itself using an Ed25519 private key for the customer's reserve.
|
||||||
using an Ed25519 private key, where the corresponding public key needs to be
|
The customer must include the corresponding reserve public key in the
|
||||||
included in the payment instruction from the customer's bank to the exchange's
|
payment instruction from the customer's bank to the exchange's bank
|
||||||
bank. With a bank that directly supports Taler on their online banking website,
|
that funded their reserve. With a bank that directly supports Taler
|
||||||
this process is streamlined for the user, since the wallet automatically
|
on their online banking website, this process is streamlined for the
|
||||||
creates the key pair for the reserve and adds the public key to the
|
user, since the wallet automatically creates the key pair for the
|
||||||
payment instruction.
|
reserve and adds the public key to the payment instruction.
|
||||||
|
|
||||||
While browsing a merchant's website, the website can signal the wallet
|
While browsing a merchant's website, the website can signal the wallet
|
||||||
to request a payment from a user. The user is then asked to confirm
|
to request a payment from a user. The user is then asked to confirm
|
||||||
or reject this proposal. The merchant deposits coins received from
|
or reject this proposal. The merchant deposits coins received from
|
||||||
the customer's wallet at the exchange. Since bank transfers are
|
the customer's wallet at the exchange. Since bank transfers are
|
||||||
usually costly, the exchange delays and aggregates multiple deposits
|
usually costly, the exchange delays and aggregates multiple deposits
|
||||||
into a bigger wire transfer. This allows our system to be used even
|
into a bigger wire transfer. This allows Taler to be used even for
|
||||||
for microtransactions of amounts smaller than usually handled by the
|
microtransactions of amounts smaller than usually handled by the
|
||||||
underlying banking system.
|
underlying banking system.
|
||||||
|
|
||||||
As shown in Figure~\ref{fig:taler-arch}, the merchant is internally split into
|
As shown in Figure~\ref{fig:taler-arch}, the merchant is internally split
|
||||||
multiple components. The implementation of the Taler prococol and
|
into multiple components. The implementation of the Taler prococol and
|
||||||
cryptographic operations is isolated into a separate component (called the
|
cryptographic operations is isolated into a separate component, called
|
||||||
\emph{merchant backend}), which the merchant accesses through an API or software
|
the \emph{merchant backend}, which the merchant accesses through an API
|
||||||
development kit (SDK) of their choice.
|
or software development kit (SDK) of their choice.
|
||||||
|
|
||||||
Our implementations of the exchange (70,000 LOC) and merchant backend
|
Our implementations of the exchange (70,000 LOC) and merchant backend
|
||||||
(20,000 LOC) are written in C using PostgreSQL as the database and
|
(20,000 LOC) are written in C using PostgreSQL as the database and
|
||||||
|
Loading…
Reference in New Issue
Block a user