\documentclass{bfh}

\title{Project 2}
\subtitle{Bitmessage -- Communication Without Metadata}
\author{Christian Basler}
\tutor{Kai Brünnler}
\date{\today}

\begin{document}
  \maketitle

  \tableofcontents

  \section{Synopsis}

  TODO


  % Section basics
  \input{basics}

  The protocol is described in detail in my Seminar paper.


  \section{Goal}

  At the moment, there aren't many implementations apart from the official clients. Especially two things are missing: a multi purpose Java library and a usable mobile client. My goal for my \textit{Project 2} is to create the library, to be used next semester as a starting point for an Android\textsuperscript{\texttrademark} client in my Bachelor Thesis.


  \section{Issues}

  TODO


  \subsection{Unsigned Numbers}

  Java doesn't support unsigned number types. While Java 8 has some helper classes to address this issue, my goal is to support Java 7, which is needed for Android development, so I wasn't able to leverage them.

  \subsection{Proof of Work}

  Proof of work is needed for a message to be distributed within the Bitmessage network. This is to protect both the network itself from denial of service attacks and the users from spam.


  \section{Architecture}

  \subsection{Ports and Adapters}

  The library uses a ports and adapters architecture, which allows us to easily replace some implementations that might be platform dependent, such as storage or proof of work calculation.

  \includegraphics[width=\textwidth]{images/ports_and_adapters.pdf}

  The big advantage of this approach is that it's easy to test the core as well as each adapter by itself.


  \subsection{Network Management}


  \section{Usage}

  TODO


  \section{Discussion}


  \appendix
  \addcontentsline{toc}{section}{Appendix}
  \section*{Appendix}
  \renewcommand{\thesubsection}{\Alph{subsection}}


  \subsection{JavaDoc Documentation}


  \subsection{Literature}


\end{document}