It says that PoW evaluates to an array with the first item being the mix-hash, and the second item being a pseudo-random number. However, from equation 49, it would seem it is the second item, m, which is equal to the mix-hash, and the first item, n, which is the pseudo-random number. Is there something I'm missing here?
First of all, please someone corrects me if I am wrong. I will try to clarify some things, but I guess the yellowpaper has some minor errors of this kind. I always prefer and recommend to look at the code.
In section 4.3 we have:
the proof-of-work function (see section 11.5): this evaluates to an array with the first item being the mix-hash, to prove that a correct
DAGhas been used, and the second item being a pseudo-random number cryptographically dependent on H and d.
Let's see what the yellowpaper says in section 11.5:
PoW is the proof-of-work function which evaluates to an array with the first item being the mixHash and the second item being a pseudo-random number cryptographically dependent on H and d.
We can see that the equation now is
(m,n) instead of
(n,m), but the sentence is the same in both parts of the paper. It seems that they copied the sentence from section 11.5 into section 4.3, or vice versa.
Then, we go to appendix J.4 to see how the PoW function works:
Then, we need to look up on the code to see what elements are returned from the PoW function (I think this is the function we want):
return digest, crypto.Keccak256(append(seed, digest...))
We can see that the second element is indeed a hash, which seems to be the
mixHash. So, I believe the equation 49 is the correct one, but not the sentence which explains it.
In addition, there is an unresolved open issue related to this question on GitHub.
Finally, excuse me if I've made wrong assumptions.