It seems to me that the reason the proof-of-work involves finding a hash beginning with a (temporarily) fixed number of zeroes is because one can easily check whether they have solved the problem by comparing the hash they have generated with the value 2^k, where k = (256 - # of zero bits) and doing so is a relatively inexpensive operation. Also, it is easy to make the problem arbitrarily difficult up to a certain point (as well as having the difficulty increase exponentially with the number of zeros).

Are there any other reasons for why this particular problem was chosen for the proof-of-work?

  • 5
    It doesn't check for a number of zero bits. It checks whether the hash, when interpreted as a 256-bit number, is lower than a target number. That target number is occasionally adjusted. – Pieter Wuille Nov 14 '15 at 22:19
  • Is the target number a power of two, or can it be any 256-bit number? – Ali Nov 15 '15 at 1:34
  • @Ali It can't be any 256 bit number (there's a format it needs to follow, see here) but you can use very nearly any value. – Nick ODell Nov 15 '15 at 2:28

It reuses the HashCash construct invented by Adam Back (a scheme for proving work was done to send an email, resulting in it being treated as less spammy by spam filters), though with a newer hash function and different header structure.

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.