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.
History
Table of Contents
1. Introduction -- 2. Background and related work -- 3. Design and implementation -- 4. Discussion -- 5. Conclusions and future work -- 6. Abbreviations -- Appendices -- Bibliography.
Notes
Bibliography: pages 83-86
Empirical thesis.
Awarding Institution
Macquarie University
Degree Type
Thesis bachelor honours
Degree
BSc (Hons), Macquarie University, Faculty of Science and Engineering, School of Engineering
Department, Centre or School
School of Engineering
Year of Award
2016
Principal Supervisor
Franck Cassez
Rights
Copyright Luke Knight 2016.
Copyright disclaimer: http://mq.edu.au/library/copyright