An implementation of a cryptocurrency protocol based on the Bitcoin Protocol.
Cryptocurrency, such as Bitcoin, has generated a lot of attention in the recent years. The underlying technology has the potential to disrupt the global economy, though most people still do not have a full understanding of the technology behind it. We have decided to implement a simplified version of the Bitcoin protocol to demonstrate how people can transact digital currency. The blockchain technology behind the Bitcoin protocol and other cryptocurrencies requires lots of intensive computation, which is used for reaching consensus through a peer-to-peer network adhering to a protocol for validating new blocks. To account for intensive computations related to blockchain technology, we will demonstrate the utility of FPGAs in accelerating computations.
We will create a prototype system, composed of 2 users in the same network to demonstrate the core functionality of the Bitcoin protocol such as making transactions and generating coins (commonly known as Bitcoin mining). Specifically, two sets of a Raspberry Pi and an FPGA are used to represent two users in the network. The two sets can make transactions and perform proof-of-work (mining process). Another Raspberry Pi will be used to show the list of transactions in the network by displaying blockchain results on a monitor. Note that this last Raspberry Pi does not participate in any transactions making but focuses on illustrating the functionality of our prototype system, so it will be referred to as an observer.
Short:
- FPGA handles proof-of-work and finds hash with SHA-256. it also finds the nonce
- Raspberry Pi handles the API, moving data around for P2P connectivity through HTTP requests
- Raspberry Pi
- HTTP Server, Networking Protocols
- Miner Operations, Interface to FPGA
- Node Operations, P2P Network
- Operator, wallet and addresses setup
- Blockchain Information transfer
- FPGA
- Miner, SHA-Algorithm Implementation
- Blockchain Verification
cd html && sudo -E python3.6 app.py
See the following for more information!
- SystemVerilog - The language used for the SHA-Algorithm to implement a hardware accelerator.
- Python 3.6 - HTTP Server Setup with Flask for API endpoints.
- C - Interfacing between Pi and FPGA.
This project is licensed under the MIT License - see the LICENSE file for details
- Bitcoin Protocol - The Original Satoshi Nakomoto Paper
- SHA-Algorithm - The implementation of the Cryptocurrency Protocol
- Mastering Bitcoin - Descriptions of the Bitcoin Protocol
- Reference Implementation - Cryptocurrency Implementation in Node.js in 1500 lines