I am working in a computational research lab, and we're taking a look at Bitcoin. I'm trying to develop a simulation of Bitcoin mining for a nonexistent computer architecture.
I want to simulate the mining of a single block (say... the Satoshi block) without actually doing the work. To my understanding, each block in the chain has the winning nonce that enabled the miner to mine the block, but I also want to enumerate:
- all of the losing hashes
- other potential winners that could have worked
Part of our simulation is the mathematics of our simulation (and the hypothetical architecture) could operate on all possible hashes at once.
A 256 bit hash for all 2^32 nonce values[1] of a block is only 2^(8+32) bits, or about 137.4 gigabytes.
I know this sounds like a silly question, but is there some place to download all 137.4 gigabytes of hashes for the Satoshi block or some other block? Otherwise, what is the best way to generate them? Can I pick up an old ASIC miner and have it write every single hash to a hard drive?
Footnotes:
[1] I know that there are extra sources of variation in the transaction list, coinbase nonce, timestamp, etc., but we are currently limiting the scope of our simulation to just the original nonce while keeping everything else constant.