How does a proof of work limit of `~uint256(0) >> 20` translate into a difficulty of `1 / 2^12`?

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?

Claudiu

Posted 2014-05-05T17:48:52.387

Reputation: 439

1A 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 2014-05-05T18:57:05.377

Hi. At recent source, there is no CBigNum, what it have been changed?creator 2018-02-24T10:09:51.203

Answers

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.

Tim S.

Posted 2014-05-05T17:48:52.387

Reputation: 4 159

Oh interesting, I didn't realize they had a convention for what the difficulty is. That does elucidate matters.Claudiu 2014-05-05T18:48:15.390

Hi. At recent source, there is no CBigNum, what it have been changed?creator 2018-02-24T10:09:55.067