Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: forgotmypassword6x on April 19, 2011, 07:59:06 PM



Title: Target difficulty value, enough bits in nonce?
Post by: forgotmypassword6x on April 19, 2011, 07:59:06 PM
What is the format of the target difficulty?

e.g. looking at a recent block

http://blockexplorer.com/block/0000000000009e3acd91fa2a9b330b7172ef039997b1207274553e4e3dab468e

The first 12 chars are 0, suggesting the current difficulty is first 6bytes 0 = 48 bits (maybe up to 3 more hidden in high order bits of that 9).

The block header has:
Difficulty?: 92 347.590952 ("Bits"?: 1b00b5ac)

how do I go from that difficulty value to the # of bits?


On the other hand, the nonce field is only 32 bits, so for most block headers, there is likely *no* nonce that hashes to first 48 bits zero, and the only reason a valid nonce is because something else in the header is changing to add more entropy (like added transactions changing the merkle root)

I'm hoping this is wrong, as this would be a really dumb bug and should be fixed immediately if it's the case (by making the nonce atleast the maximum difficulty ever, say 128 bits).  What am I missing?


Title: Re: Target difficulty value, enough bits in nonce?
Post by: theymos on April 19, 2011, 08:08:37 PM
The scriptSig of the generation input is changed when the nonce overflows, which changes the Merkle root.

"Bits" expands to a 256-bit target number, which the hash must be below. Current target:
http://blockexplorer.com/q/hextarget


Title: Re: Target difficulty value, enough bits in nonce?
Post by: Pieter Wuille on April 20, 2011, 08:24:33 AM
And there is another nonce inside the coinbase transaction, which is updated every time the nonce in the header overflows. Furthermore there is added entropy using the timestamp, and the public key of the miner.