\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}