# Why are the dataset and MixHash required for Proof of Work?

From the yellow paper; for a block to be accepted as valid, an 8 byte number, n_rand, must be found that satisfies equation 253:

= block header without n_rand and MixHash
= difficulty
= nonce

My interpretation is that d is the dataset - a value cryptographically derived from the number of previous blocks. From this, the Mixhash is calculated in the `PoW` function

Why are the dataset and MixHash values required?

If the network were to agree to accept the `PoW` function with d set to 0, wouldn't the system still be cryptographically dependent on valid state transistions, as there must be consensus on H_n? Would the system not, therefore, still work?

• – Lee
Commented Jun 29, 2016 at 13:44

In my understanding, d is, as said in the yellow paper page 6, the current DAG.

Where Hn is the new block’s header H, but without the nonce and mix-hash components, d being the current DAG, a large data set needed to compute the mix-hash, and PoW is the proof-of-work function (see section 11.5): this evaluates to an array with the first item being the mixhash, to proof that a correct DAG has been used, and the second item being a pseudo-random number cryptographically dependent on H and d. Given an approximately uniform distribution in the range [0, 2 64), the expected time to find a solution is proportional to the difficulty, Hd.

The DAG is necessary to the mining algorithm to ensure the PoW in a n ASIC resistant way and easily verifiable for future light clients. Here is a full detail of the explanation :

https://github.com/ethereum/wiki/blob/master/Dagger-Hashimoto.md

So, you can't set d to 0.

• ... so the system would work if there was consensus for d=0, just not in an ASIC-resistant way?
– Lee
Commented Jun 29, 2016 at 18:46
• The only condition I can see is (from the yellow paper) equation : (58) , which state that this must be 32 bytes or lower Commented Jun 29, 2016 at 19:05