exchange/contrib/auditor-report.tex.j2
2017-11-06 00:03:08 +01:00

144 lines
5.1 KiB
Django/Jinja

\documentclass{article} % {acmart}
\usepackage{url}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{longtable}
\begin{document}
\title{Taler Auditor Report}
\maketitle
\section{Operations}
The balance of the escrow account should
be {\bf
\mbox{
{{ data.report_denomination_balance[0].total_escrow_balance.value }}.{{ data.report_denomination_balance[0].total_escrow_balance.fraction }}
{{ data.report_denomination_balance[0].total_escrow_balance.currency }}}}.
\noindent
The active operational risk stands at
\mbox{
{\bf
{{ data.report_denomination_balance[0].total_active_risk.value }}.{{ data.report_denomination_balance[0].total_active_risk.fraction }}
{{ data.report_denomination_balance[0].total_active_risk.currency }}}}.
\section{Income}
This section analyzes the income of the exchange operator from fees.
\begin{table}[h!]
\begin{center}
\caption{Fee revenue summary}
\label{table:revenue}
\begin{tabular}{l|rl}
Category & Amount & \\ \hline \hline
Withdraw fees &
{{ data.total_withdraw_fee_income.value }}.{{ data.total_withdraw_fee_income.fraction }} &
{{ data.total_withdraw_fee_income.currency }} \\
Deposit fees &
{{ data.total_deposit_fee_income.value }}.{{ data.total_deposit_fee_income.fraction }} &
{{ data.total_deposit_fee_income.currency }} \\
Melt fees &
{{ data.total_melt_fee_income.value }}.{{ data.total_melt_fee_income.fraction }} &
{{ data.total_melt_fee_income.currency }} \\
Refund fees &
{{ data.total_refund_fee_income.value }}.{{ data.total_refund_fee_income.fraction }} &
{{ data.total_refund_fee_income.currency }} \\
Aggregation fees &
{{ data.total_aggregation_fee_income.value }}.{{ data.total_aggregation_fee_income.fraction }} &
{{ data.total_aggregation_fee_income.currency }} \\
{\bf Total} &
{{ data.income_fee_total.value }}.{{ data.income_fee_total.fraction }} &
{{ data.income_fee_total.currency }} \\
\end{tabular}
\end{center}
\end{table}
\section{Irregularities}
This section describes the possible irregularities that the auditor
has checked, and lists all of the actual irregularities encountered
in detail.
\subsection{Emergencies}
Emergencies are errors where more coins were deposited than the
exchange remembers issuing. This usually means that the private keys
of the exchange were compromised (stolen or factored) and subsequently
used to sign coins off the books. If this happens, all coins of the
respective denomination that the exchange has redeemed so far may have
been created by the attacker, and the exchange would have to refund
all of the outstanding coins from ordinary users. Thus, the {\bf risk
exposure} is the amount of coins in circulation for a particular
denominatin and the maximum loss for the exchange from this type of
compromise.
{% if data.emergencies|length() == 0 %}
{\bf No emergencies detected.}
{% else %}
\begin{longtable}{p{1.5cm}|rl|c|rl}
{\bf Public key hash} & {\bf Denomination} & {\bf Lifetime} & {\bf Risk exposure} \\ \hline \hline
\endfirsthead
{\bf Public key hash} & {\bf Denomination} & {\bf Lifetime} & {\bf Risk exposure} \\ \hline \hline
\endhead
\hline \hline
{\bf Public key hash} & {\bf Denomination} & {\bf Lifetime} & {\bf Risk exposure} \\
\endfoot
\hline
% FIXME: replace these with the summary column adding up the amounts!
\multicolumn{4}{|c|}{ {\bf Total risk from emergencies}} & {{ data.emergencies_risk_total }} \\
\caption{Emergencies.}
\label{table:emergencies}
\endlastfoot
{% for item in data.reserve_inconsistencies %}
\multicolumn{6}{l}{ {\tt {{ item.denompub_hash }} } } \\
\nopagebreak
&
{{ item.value.value }}.{{ item.value.fraction }} &
{{ item.value.currency }} &
{{ item.start }} - {{ item.deposit_end }} &
{{ item.denom_risk.value }}.{{ item.denom_risk.fraction }} &
{{ item.denom_risk.currency }} \\ \hline
{% endfor %}
\end{longtable}
{% endif %}
\subsection{Reserve inconsistencies}
{% if data.reserve_inconsistencies|length() == 0 %}
{\bf No reserve inconsistencies detected.}
{% else %}
\begin{longtable}{p{1.5cm}|rl|rl|p{4cm}}
{\bf Reserve} & \multicolumn{2}{|c|}{ {\bf Expected}} & \multicolumn{2}{|c|}{ {\bf Observed}} & {\bf Diagnostic} \\ \hline \hline
\endfirsthead
{\bf Reserve} & \multicolumn{2}{|c|}{ {\bf Expected}} & \multicolumn{2}{|c|}{ {\bf Observed}} & {\bf Diagnostic} \\ \hline \hline
\endhead
\hline \hline
{\bf Reserve} & \multicolumn{2}{|c|}{ {\bf Expected}} & \multicolumn{2}{|c|}{ {\bf Observed}} & {\bf Diagnostic} \\
\endfoot
\hline
% FIXME: replace these with the summary column adding up the amounts!
{\bf Reserve} & \multicolumn{2}{|c|}{ {\bf Expected}} & \multicolumn{2}{|c|}{ {\bf Observed}} & {\bf Diagnostic} \\
\caption{Reserve inconsistencies.}
\label{table:reserve:inconsistencies}
\endlastfoot
{% for item in data.reserve_inconsistencies %}
\multicolumn{6}{l}{ {\tt {{ item.reserve_pub }} } } \\
\nopagebreak
&
{{ item.expected.value }}.{{ item.expected.fraction }} &
{{ item.expected.currency }} &
{{ item.observed.value }}.{{ item.observed.fraction }} &
{{ item.observed.currency }} &
{{ item.diagnostic }} \\ \hline
{% endfor %}
\end{longtable}
{% endif %}
\end{document}