Implementation of a light Bitcoin client in Scala
thesisposted on 28.03.2022, 19:15 by Luke Knight
Bitcoin's blockchain is continuously growing and to run a full Bitcoin client requires almost 100GB of storage. The light client is one that performs the tasks of a full Bitcoin client but limits bandwidth and storage by verifying payments using a technique that doesn't require downloading and maintaining the full blockchain. Not only are light clients important for the Bitcoin ecosystem with the growth of mobile devices, but software developers have acknowledged the difficulty in programming Bitcoin related applications as it is a complicated technology with a large network of nodes performing various roles. Moreover, there exists minimal documentation regarding how to build a light Bitcoin client from the ground up. This results in minimised exposure to an innovative technology, less awareness towards improving it, and limits the development efforts around clients in the ecosystem. This paper explores the role and development of a light client, with implementation details in Scala. The client is usable via an external DSL and REPL with an architecture that could be extended to add GUI functionality. This paper aims to aid developers in understanding light client implementations, specifically in Scala, and to evaluate the language's effectiveness in the domain. The project may also provide a basic implementation for a future production light client and expose an open-source implementation to Scala developers in a community where one does not yet exist.