donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit 0685e0ab7743fed76ad10ea5d3f1024d3294a6c7
parent 4bd73ff9ad937af86c3c6ea87c32c61243698bba
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
Date:   Sat, 25 May 2024 23:44:49 +0200

work on thesis

Diffstat:
Mdoc/thesis/chapters/implementation/implementation.tex | 31++++++++++++++++++++++---------
Mdoc/thesis/settings/settings.tex | 1+
Mdoc/thesis/thesis.pdf | 0
Mdoc/thesis/thesis.tex | 2+-
4 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/doc/thesis/chapters/implementation/implementation.tex b/doc/thesis/chapters/implementation/implementation.tex @@ -1,19 +1,32 @@ In this chapter the architecture and the implementation details of the Donau system are described. + \section{System Architecture} As the charity backend and the wallet implementation are not yet developed the followed described architecture is reduced to the Donau backend, the client API calls, the tests and the android app. % TODO: architecture image + \section{Donau} The Donau is written in C as it reuses parts of the codebase from the exchange of GNU Taler[xx]. The Donau has a similar architecture and uses crypographic blinded signatures in a similar way as the exchange does. + \subsection{Donau REST API} -The detailed REST API of the Donau backend is publicy available at ... The following are the main API endpoints: -\\ -GET /keys \\ -POST /batch-issue/\$CHARITY\_ID \\ -POST /submit \\ -POST /charity \\ -GET /charities \\ -GET /charities/\$CHARITY\_ID \\ -DELETE /charities/{id}ΒΆ +The detailed REST API of the Donau backend is publicy available at \url{https://docs.taler.net/core/api-donau.html}. The following are the main API endpoints: + +\paragraph{Keys} +The get keys request returns all valid donation unit public keys offered by the Donau, as well as the Donau's current EdDSA public signing key. Donation units unit keys are used by the Donau to sign blinded messages for an issue receipt request. The signing key is primarily used to create the donation statement signature for the donor (see section xx). + +\subsubsection{Manage Charities} +In order for a charity to be able to issue receipts it must be registered by the Donau. To do so the Donau provides an API to manage charities. It is recommended that only the Donau admin can update charities while the charity itself should be able to request their issued donation receipt state to keep track of the set donation limit. The state includes the maximum donation amount and the current donated amount for the charity of the current year. + +\subsubsection{Issue Receipts} +%TODO describe BUDI, donation unit -> glossary? +Only recognized charities requesting issue receipts for their donors (see section xx). An post issue receipt request includes an array of BUDI-Key-Pairs. A BUDI-Key-Pair consists of a BUDI and a hash of a public donation unit key. The charity also signs the request with an EdDSA private key. The corresponding public key was given to the Donau at the registration of the charity. After the Donau checked the signature from the charity it signs the BUDIs with the corresponding donation unit private key. Before the signatures are returned to the charity the Donau saves a hash of the request and all donation unit signatures to make the request idempotent (see database section). + +\subsubsection{Submit Receipts} +%TODO describe donation receipt -> glossary? +The post submit route is used by the donor to summarize his or her donation receipts into one donation statement EdDSA signature. The request is composed of the donation receipt, the corresponding year and the hash of the salted tax id. Processing the request the Donau checks the validity of the donation receipts and searches after more saved donation receipts made in the requested year. The EdDSA signature over the total amount of the value of the donation units of all donation receipts, the hash of the salted tax id and the year forms the donation statement. The donation statement and the receipts are stored in the database (see database). + +\subsubsection{Donation Statement} +Even the donation statement will not be returned after a submit request, a donation statement get request can be made for a specified year and a salted and hashed tax id. + \subsection{Donau Client} \subsection{Donau Database} \includegraphics[width=1\textwidth]{db_physical_model} diff --git a/doc/thesis/settings/settings.tex b/doc/thesis/settings/settings.tex @@ -16,6 +16,7 @@ \usepackage{etoolbox} \usepackage{tikz} \usepackage{parskip} +\usepackage{enumitem} % Abstract \patchcmd{\abstract}{\null\vfil}{}{}{} diff --git a/doc/thesis/thesis.pdf b/doc/thesis/thesis.pdf Binary files differ. diff --git a/doc/thesis/thesis.tex b/doc/thesis/thesis.tex @@ -10,7 +10,7 @@ \huge{Tax-deductable Donations}} \author{Johannes Casaburi \and Lukas Matyja\\ \vspace{5px} -\and Advisor: Prof. Dr. Christian Grothoff \and Advisor: Prof. Dr. Emmanuel Benoist \\ Expert: Daniel Voisard} +\and Advisor: Prof. Dr. Christian Grothoff \and Adisor: Prof. Dr. Emmanuel Benoist \\ Expert: Daniel Voisard} \maketitle