Bitcoin achieves Proof of Work using hash puzzles. To create a block, the node that proposes the block is required to find a number (known as nonce) such that:
- A1 = Concatenate the nonce, the previous hash and the list of transactions that make up the block
- A2 = hash(A1)
The nonce A2 should falls in the target space.
The main idea is that it becomes moderately difficult to find a nonce that satisfies this property which constitutes the mining process.
In this exam, you will be creating your own hash puzzle simulator that mines for the nonce with a given set of transactions and previous hash values.
Deliverable
Pls upload a Single PDF for the entire group containing the following information:
- In your own words, explain your design in the form of abstract (~200 words) and algorithm. (5 points)
- Using a tool of your choice (e.g. Java, Python, MS Excel, JavaScript, HTML etc.) develop a basic simulator for hash puzzles that perform the mining operation for blockchain. Pls attach your code as and when necessary. (6 points)
- Simple instructions to operate your group’s simulator. [It is extremely important that I should be able to execute on my machine.] (3 points)
- Screenshots showing valid outputs. Also, include necessary test cases. This should demonstrate satisfactory functioning of this new tool that you have built. (3 points)
- Reference articles or videos (at least 2-3 relevant, could be more) that helped your design and implementation. (1 point)
- List out 3-5 main challenges that your group faced in designing this simulator and how did you manage to overcome it. (1 point)
References:
http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html (contains sample implementation)
https://www.youtube.com/watch?v=0WiTaBI82Mc