How does a given Equihash solution relate to the next blockhash?

Hi all,

Quite surprised no-one has broached this question before (everyone seems to be obsessed with mining or having a strong irrefutable opinion despite not even having basic programming skills) and I can’t seem to find an answer anywhere.

With Bitcoin - we take our 80 byte blockheader and continually hash it; checking if the output hash is less than a given target. If the resulting hash isn’t less than the target, we increase the nonce value and try again. However once we do find a hash that meets our requirements, we send our header and data to the network and our ‘winning hash’ becomes the blockhash of the subsequent block.

With Zcash, a similar process occurs; except our ‘solution’ is 1,344 bytes long (or a 2688 char hex string).

What process then occurs making the solution usable as the next blockhash?
Or a different wording; how does the solution relate to the next blockhash?


The difficulty filter is identical to Bitcoin; the hash of the block header including the Equihash solution has to pass the filter. Does that answer your question? See section 6.4 of the protocol spec for full details.

1 Like

Absolutely perfect, I missed the extra step there (hashing the complete header + sol’n with SHA256D), leaving me with the 32 byte blockhash for the subsequent block. Thankyou! :slight_smile:

1 Like