auction done. v1 ready
This commit is contained in:
parent
7ba95c6a9f
commit
955ef72612
@ -311,11 +311,12 @@ content of the mentioned website with recommended concepts of youth protection.
|
|||||||
|
|
||||||
GNU Taler is going to be evaluated for the category ``holistic youth protection
|
GNU Taler is going to be evaluated for the category ``holistic youth protection
|
||||||
concept''. The KJM uses this category only for concepts that are widely
|
concept''. The KJM uses this category only for concepts that are widely
|
||||||
accessible to the public and do not only serve a closed user group
|
accessible to the public and \textit{do not} serve a closed user group. Here,
|
||||||
(closed user group means: access to content or goods is granted only after age
|
\textit{serving a closed user group} means granting access to content or goods
|
||||||
verification by presenting an official ID card, driving licenses or the
|
only after ID-based verification of the membership in a particular group, such
|
||||||
like---which is endangering privacy, data security, and informational
|
as: proof of belonging to a certain age-group by presenting an official ID
|
||||||
self-determination).
|
card, driving licenses or the like---a type of verification which is
|
||||||
|
endangering privacy, data security, and informational self-determination.
|
||||||
|
|
||||||
\subsection{Future Works}
|
\subsection{Future Works}
|
||||||
|
|
||||||
@ -569,15 +570,143 @@ locations under \url{https://git.taler.net/wallet-core.git/tree/packages/}
|
|||||||
\newpage
|
\newpage
|
||||||
\section{Brandt-Vickrey Auctions}
|
\section{Brandt-Vickrey Auctions}
|
||||||
|
|
||||||
\TODO{}
|
\href{https://pub.dss.in.tum.de/brandt-research/ijis2006.pdf}{In 2006, Felix
|
||||||
|
Brandt} designed cryptographic Vickrey-style auction protocols that only yield
|
||||||
|
the winners’ identities and the selling price. Losing bidders learn no
|
||||||
|
information at all, except that they lost. This approach does not rely on
|
||||||
|
trusted third parties, e.g., auctioneers or---in our case---the payment service
|
||||||
|
provider.
|
||||||
|
\href{https://grothoff.org/christian/teich2017ms.pdf}{In 2017, Marcus Teich}
|
||||||
|
updated the cryptographic primitives in the Brandt-Vickrey protocols to use
|
||||||
|
elliptic curves and provided an implementation in
|
||||||
|
\url{https://git.gnunet.org/libbrandt.git/}.
|
||||||
|
|
||||||
|
Based on that work, we implemented a Proof-of-Concept for \textsc{NGI Pointer}
|
||||||
|
of conditional payments in GNU Taler in the form of sealed-bid auctions of type
|
||||||
|
Brandt-Vickrey:
|
||||||
|
|
||||||
|
Bidders put coins in escrow with the exchange in order to participate in a
|
||||||
|
particular auction. The coins are locked and can only be unlocked by timeout
|
||||||
|
or by winning the auction. After successfully running the Brandt-Vickrey
|
||||||
|
auction, the seller has to provide the transcript of all (signed) messages
|
||||||
|
received from all bidders. The exchange then replays the transcript and
|
||||||
|
determines the winning bidder(s) and price(s) and pays the seller accordingly.
|
||||||
|
Non-winning coins and rest amounts can be claimed by the bidders.
|
||||||
|
|
||||||
\subsection{Technical details}
|
\subsection{Technical details}
|
||||||
\TODO{}
|
|
||||||
|
We designed and implemented a general framework for conditional payments with
|
||||||
|
GNU Taler---so-called \textit{policies}. Our proof-of-concept of sealed-bid
|
||||||
|
auction support is implemented as an policy extension to GNU Taler. In
|
||||||
|
particular, we implemented the following parts:
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Transcript generation:] \texttt{libbrandt} has been extended to
|
||||||
|
generate a transcript of the auction including all
|
||||||
|
cryptographically signed messages from all bidders in
|
||||||
|
JSON-encoding.
|
||||||
|
|
||||||
|
\item[Transcript replay:] An external program to replay a transcript
|
||||||
|
has been implemented as part of \texttt{libbrandt}. It
|
||||||
|
consumes transcript of an auction in JSON-encoding, generates
|
||||||
|
an Brandt-Vickrey-auction and replays all provided messages.
|
||||||
|
On success, it returns the winning bidder(s) and price(s)
|
||||||
|
according the transcript.
|
||||||
|
|
||||||
|
\item[Policy extension for auctions:] A policy extension for GNU Taler
|
||||||
|
has been implemented that handles deposit requests with set
|
||||||
|
policy of type \texttt{\small
|
||||||
|
policy\_brandt\_vickrey\_auction}. It locks the coins and
|
||||||
|
persists the policy details under a hash-code, that it
|
||||||
|
generates by calculating the hash $H(h_a || p_b)$, where $h_a$
|
||||||
|
is the hash of the auction meta data and $p_b$ is the public
|
||||||
|
key of the bidder. Both parameters are part of the policy
|
||||||
|
structure provided during a deposit.
|
||||||
|
|
||||||
|
\item[POST handler for auction transcripts:] A POST handler for the
|
||||||
|
policy extension of that type has been implemented that expects
|
||||||
|
a valid transcript of a Brandt-Vickrey-auction. It uses the
|
||||||
|
external program to perform a replay of the auction and
|
||||||
|
determine the winning bidder(s) and price(s). Based on the
|
||||||
|
outcome information, the exchange unlocks the corresponding
|
||||||
|
winning coins' value for transfer to the seller---minus an
|
||||||
|
auction fee---and the rest value of all coins for refresh.
|
||||||
|
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
\subsection{Future Works}
|
\subsection{Future Works}
|
||||||
\TODO{}
|
|
||||||
|
For a fully functional and maintainable solution, further development is needed
|
||||||
|
in the following areas:
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
|
||||||
|
\item[libbrandt upgrade:] The code base of this library is from 2017 and doesn't
|
||||||
|
compile with the latest version of
|
||||||
|
\href{https://git.gnunet.org/gnunet.git}{GNUnet}. It also
|
||||||
|
uses \href{https://gnupg.org/software/libgcrypt/index.html}%
|
||||||
|
{\ttfamily libgcrypt} as cryptographic library, which is quite
|
||||||
|
slow compared to its modern alternative
|
||||||
|
\href{https://doc.libsodium.org/}{\ttfamily libsodium}, at
|
||||||
|
least with respect to the primitives used in libbrandt.
|
||||||
|
For future work we plan to refactor libbrandt to use libsodium
|
||||||
|
and the current version of GNUnet.
|
||||||
|
|
||||||
|
\item[Brandt-Vickrey-auction continuation:] The current code is a
|
||||||
|
proof-of-concept. The following known problem exist:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Signature verification of the transcript and its messages
|
||||||
|
is missing
|
||||||
|
\item Unit- and integration-tests with the exchange are missing
|
||||||
|
\item A fully featured auction(er) system, including billboard
|
||||||
|
and client software, is missing.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
We will address at least the first two issues and plan to
|
||||||
|
address the lack of an auction system once we find volunteers
|
||||||
|
and funding for it.
|
||||||
|
|
||||||
|
\item[Policy framework continuation:] Based on the current design of policy
|
||||||
|
extensions for deposit---aka conditional payments---we plan to add
|
||||||
|
following policy extensions to the GNU Taler exchange:
|
||||||
|
\begin{itemize}
|
||||||
|
\item{\itshape Merchant refunds:} Merchant can grant customers refundable
|
||||||
|
payments. Right now, this policy is implicit and optional in
|
||||||
|
the usual deposit-flow. Future work on Taler will lift
|
||||||
|
this into a policy-extension.
|
||||||
|
|
||||||
|
\item{\itshape Escrowed payments:} A trustor puts coins into escrow
|
||||||
|
with the exchange. It can be claimed by a beneficiary until a
|
||||||
|
certain deadline, when the claim is signed by
|
||||||
|
both, the beneficiary’s and the trustor’s keys.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{description}
|
||||||
|
|
||||||
\subsection{Links}
|
\subsection{Links}
|
||||||
\TODO{}
|
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Changes to libbrandt:]
|
||||||
|
\href{https://git.kesim.org/oec/libbrandt/src/branch/transcript/test\_brandt.c}{\ttfamily test\_brandt.c}
|
||||||
|
has been extended to generate and print a transcript in JSON
|
||||||
|
encoding for each auction. The new file
|
||||||
|
\href{https://git.kesim.org/oec/libbrandt/src/branch/transcript/replay.c}{\ttfamily
|
||||||
|
replay.c} implements a standalone program to replay an auction.
|
||||||
|
\item[Changes to the Exchange:]
|
||||||
|
The changes to the exchange can be found at\\
|
||||||
|
\url{https://git.kesim.org/taler/exchange/src/branch/auction\_brandt/},\\
|
||||||
|
in particular:
|
||||||
|
\begin{description}
|
||||||
|
\item[\href{https://git.kesim.org/taler/exchange/src/branch/auction\_brandt/src/extensions/policy\_brandt\_vickrey\_auction/policy\_brandt\_vickrey\_auction.c\#L767-L821}{\ttfamily auction\_create\_policy\_details}]
|
||||||
|
This implements the {\ttfamily create\_policy\_details}
|
||||||
|
function of the policy extension interface.
|
||||||
|
|
||||||
|
\item[\href{https://git.kesim.org/taler/exchange/src/branch/auction\_brandt/src/extensions/policy\_brandt\_vickrey\_auction/policy\_brandt\_vickrey\_auction.c\#L694-L764}{\ttfamily auction\_policy\_post\_handler}]
|
||||||
|
This implements the {\ttfamily policy\_post\_handler} function
|
||||||
|
of the policy extension interface.
|
||||||
|
\end{description}
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
|
Loading…
Reference in New Issue
Block a user