1

Reading the docs on target:

The maximum target used by SHA256 mining devices is:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Because Bitcoin stores the target as a floating-point type, this is truncated:

0x00000000FFFF0000000000000000000000000000000000000000000000000000

I know that the purpose is to force miners to generate hashes with a value lower than the target. But the docs are vague, why is this truncation required? And then, why truncate after the first four Fs?

2

Target is stored in block header (it's called Bits), and it takes only 4 bytes. We derive target 256-bit value from these 32 bits. That's why it is getting truncated.

There is no need to store all 256 bits, or even 224 bits (if we assume first 4 bytes are zero). We don't need such precision.

You can read in wiki, how target is getting calculated from Bits.

You can also check my answer here, with example: How does difficulty is defined for block '55798'?

  • This was really clear, thanks! Just to make sure, setting the trailing bites of the 256-bit version to zero means that when a miner finds a hash with a value which has the correct number of zeros, but it is higher than the target, that hash is invalid? – Paul Berg Jun 24 '18 at 12:20
  • @PaulRBerg right, we talk about trailing zeros for simple explanation. In the reality we compare two 256-bit integers – Zergatul Jun 24 '18 at 13:59

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.