This is a project for the distributed systems course at CMU. We created a distributed Bitcoin miner that simulates mining bitcoins by solving hashing requests.
We implemented the Live Sequence Protocol, a homegrown protocol for providing reliable communication with simple client and server APIs on top of the Internet UDP protocol. The protocol ensures reliability considering the orders of messages and ensures integrity by checksum, and it checks the status of connection by the exponential back-off approach.
On top of the LSP protocol, we created the clients that send requests to the server, Bitcoin miners as workers, and the servers that manage the entire Bitcoin cracking enterprise. We also handled issues like failure recovery and load balancing.