2

In the Litecoin source it is written:

static CBigNum bnProofOfWorkLimit(~uint256(0) >> 20); // Litecoin: starting difficulty is 1 / 2^12

How does that compute? ~uint256(0) >> 20 is 0x00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff. Hashes have an equal probability of being any given number, so the chance of getting a valid Litecoin hash (i.e. one that is smaller than this number) is 0x00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff = 1 / 2^20, not 1 / 2^12. Is this a typo in the Litecoin source code or am I misunderstanding something?

  • 1
    A good way to remember it is that a difficulty of 1 means an average of 2^32 hashes are needed to mine one block, and it scales linearly from there. This convention comes from Bitcoin where the minimum difficulty is in fact 1. – Nate Eldredge May 5 '14 at 18:57
  • Hi. At recent source, there is no CBigNum, what it have been changed? – creator Feb 24 '18 at 10:09
2

To use the terminology on Litecoin's wiki, ~uint256(0) >> 20 is the target, and 1 / 2^12 is (approximately) the difficulty. You can see that by running the following in Python (or anything that can handle calculations on large numbers).

target = 0x00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff # or 2**236-1
diff = 0xFFFF * 2**208 / target
print(diff) # 0.00024413689970970154
print(1/2**12) # 0.000244140625

I believe the 1 / 2^20 figure you calculated is the probability that each hash will succeed, which is not the same as (although related to) the difficulty.

  • Oh interesting, I didn't realize they had a convention for what the difficulty is. That does elucidate matters. – Claudiu May 5 '14 at 18:48
  • Hi. At recent source, there is no CBigNum, what it have been changed? – creator Feb 24 '18 at 10:09

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.