Block Header – How is the difficulty of Bitcoin mining propagated?
Let’s say the current difficulty is set to finding a hash with four leading zeros. When this is found, the block containing this hash is propagated. Any client that receives this block will check for four leading zeros and will accept this block as valid and add it to its own chain.
As I understand it, the only information a miner transmits when solving a hash is this block he created (which contains the solved hash and details of all transactions used to create the hash). This information, and only this information, is propagated to the rest of the network.
Now how does the “central Bitcoin server” or whatever it is propagate difficulty changes every two weeks? Does everyone need to update their client software to recognize that a new block is only valid if it currently has 5 leading zeros, or is there some genius mechanism I’m missing? FYI, I don’t quite understand how forks are resolved. Does this have anything to do with the way this issue is handled?