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:

<code>PoW</code>(H_<strike>n</strike>,n_rand,**d**)[1] _< 2^256/H_d

H_<strike>n</strike> = block header without n_rand and MixHash
H_d = difficulty
n_rand = 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?


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 :


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? – atomh33ls Jun 29 '16 at 18:46
  • 1
    The only condition I can see is (from the yellow paper) equation : (58) , which state that this must be 32 bytes or lower – yoregis Jun 29 '16 at 19:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.