  This thesis focuses on aspects related to the functioning of the gossip
networks underlying three relatively popular cryptocurrencies: Ethereum, Nano
and IOTA.
  We look at topics such as automatic discovery of peers when a new node joins
the network, bandwidth usage of a node, message passing protocols and storage
schemas and optimizations for the shared ledger. We believe this is a topic
that is often overlooked in works about blockchains and cryptocurrencies.
Vulnerabilities and inefficiencies attain a higher significance than ones in a
regular open source project because of the rather direct financial implications
of these projects. Barring Bitcoin, a network that has been around for nearly
10 years, no other project has substantial documentation for its operational
details other than scattered and sparse pages in the source code repositories.
Almost all of the content described here has been extracted by studying the
source code of the reference implementations of these projects.
  We evaluate the use of Invertible Bloom Lookup Tables and the Graphene
protocol to decrease block propagation times and bandwidth usage of certain
messages. We perform realistic simulations that show significant improvements.
We provide a complete implementation of Graphene in Geth, Ethereum's main node
software and test this implementation against the main Ethereum blockchain.
  We also crawled the chosen cryptocurrency networks for publicly visible nodes
and provide an Autonomous System-level breakdown of these nodes with the end
goal of estimating the ease of performing attacks such as BGP hijacks and their
impact.
  Code written for implementing Graphene in Geth, performing various
simulations and for other miscellaneous tasks has been uploaded to Github at
https://github.com/sunfinite/masters-thesis.
