A collision of block hashes would possible break most Bitcoin implementations in horrible and surprising methods, but it surely’s merely not going to occur until you harness all of the power within the observable universe, after which some, for the only purpuse of discovering the collision, or uncover a cryptographic weak spot in SHA-256. Sure, rising problem theoretically makes block hash collisions extra possible, however to not a level that will ever matter.
I used to be questioning why block ids aren’t outlined because the hash of the entire block moderately than their headers
The header consists of the transaction merkle tree root, so it not directly commits to your entire contents of the block anyway, and this manner is extra elegant and environment friendly:
- When a node hears a few new block, it first downloads and validates its header for proof of labor. This prevents different nodes from cheaply spamming it with total pretend blocks that it might waste time validating, solely blocks with legitimate proof of labor are even downloaded.
- Equally, throughout preliminary block obtain, nodes use a “headers-first” synchronization technique, which permits them to know the block hash of each block in essentially the most proof of labor chain simply by downloading and validating the headers. This prevents some varieties of DoS assaults, makes parallel block downloads simpler, and doubtless different advantages.
- SPV wallets and different mild purchasers can use the headers to validate transaction inclusion within the chain. (Their limitation is that they’ll solely validate the proof of labor, not different consensus guidelines, the belief is that miners would not waste hashpower on mining invalid blocks.)















