Distributed Bitcoin Miner

Distributed Bitcoin Miner

Tags
distributed systems
Golang
Created Date
Sep 29, 2020
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.
 
Sending & acknowledging data. Data may be sent from both the client and the server, and all data messages must be acknowledged.
Sending & acknowledging data. Data may be sent from both the client and the server, and all data messages must be acknowledged.
 
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.