Hash Puzzle Simulator

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:

  1. A1 = Concatenate the nonce, the previous hash and the list of transactions that make up the block
  2. 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:

  1. In your own words, explain your design in the form of abstract (~200 words) and algorithm. (5 points)
  2. 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)
  3. Simple instructions to operate your group’s simulator. [It is extremely important that I should be able to execute on my machine.] (3 points)
  4. Screenshots showing valid outputs. Also, include necessary test cases. This should demonstrate satisfactory functioning of this new tool that you have built. (3 points)
  5. Reference articles or videos (at least 2-3 relevant, could be more) that helped your design and implementation. (1 point)
  6. 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