You will write a "toy" implementation of a proof of work blockchain. While the completed functions should be relatively short, this task requires a conceptual understanding of proof of work. Office hours will be offered if you would like to ask us clarifying questions or need help understanding certain concepts, but we do expect that you to do your own research.
Please implement the functions in proof_of_work.py
and write your own test cases (will not be graded but highly recommended) to ensure that your functions are working properly. Some sanity tests have been included but are not comprehensive. Tests can be run using python3 -m unittest 'test.py'
.
Some useful concepts to research are:
- Overview of Bitcoin proof of work
- Chainwork and how to determine the "longest chain"
- Hash functions
- Merkle trees