Bitcoin Forum
April 20, 2021, 05:53:05 PM
 News: Latest Bitcoin Core release: 0.21.0 [Torrent]
 Home Help Search Login Register More
 Pages: [1]
esuncloud
Member

Offline

Activity: 98
Merit: 10

 July 21, 2013, 02:24:55 AM

Beginner's question..
I got that how to convert block.nBits to difficulty, but how hash rates impact the block.nBits?
I know CBigNum().SetCompact(block.nBits).getuint256() to set the target hash, but what does exactly SetCompact mean and what's the range of nBits.
Last question why block.nBits    = 0x1d00ffff in genesis block?
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1618941185
Hero Member

Offline

Posts: 1618941185

Ignore
 1618941185

1618941185
 Report to moderator
1618941185
Hero Member

Offline

Posts: 1618941185

Ignore
 1618941185

1618941185
 Report to moderator
1618941185
Hero Member

Offline

Posts: 1618941185

Ignore
 1618941185

1618941185
 Report to moderator
piotr_n
Legendary

Offline

Activity: 2043
Merit: 1064

aka tonikt

 July 21, 2013, 08:39:21 AM

SetCompact sort of compresses the big 256 integer into a 32 bit value.

0x1d00ffff is the reference value that represents difficulty 1.
It basically stands for:
Code:
0x1d00ffff
nSize = 0x1d
nWord = 0xfffff
Target = nWord << ( 8 * (nSize-3) )
Target = 0xfffff << (8 * 26)
So Bits=0x1d00ffff adds up to the Target of 00000000ffff0000000000000000000000000000000000000000000000000000

If you'd take the current bits; 436249641 = 0x1A00A429, you get a target:
Code:
0xA429 << ( 8 * (0x1A-3) ) => 00000000000000a4290000000000000000000000000000000000000000000000

A new (mined) block must have a hash value lower from the current target, in order for it to get accepted by the network.
Hash rates impact the block.nBits in a way that each 2016 blocks new target value (encoded in Bits) for the next 2016 blocks is calculated - and then enforced while verifying blocks.
The idea is that there should be exactly 2 weeks difference in the timestamps of the two blocks that are 2016 apart - if the difference was longer the target value is decreased, if shorter - increased, always proportionally.

Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.
PGP fingerprint: AB9E A551 E262 A87A 13BB  9059 1BE7 B545 CDF3 FD0E
 Pages: [1]