summaryrefslogtreecommitdiff
path: root/contrib/auditor-report.tex.j2
blob: ff31e7b05d10115fbc5fa6bb2b9f47a7a5a2aaf5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
\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}