TECHNICAL_DOC // BLOCK / PREVIOUS-BLOCK
PREVIOUS
BLOCK
BLOCK
The block-hash/">previous block hash field is a 32-byte reference to the parent block's
SHA256d hash embedded in every block header. This single field is what transforms
individual blocks into a chain — each block cryptographically locks itself
to its predecessor. Altering any historical block breaks every subsequent hash, making
history immutable without redoing all the proof of work.
THE_CHAIN_LINK
HOW BLOCKS CHAIN TOGETHER
Block N-1 header:
version | prev_hash_N-2 | merkle | time | bits | nonce
→ hash = 000000000000000000abc123... (32 bytes)
Block N header:
version | 000000000000000000abc123... | merkle | time | bits | nonce
↑ previous block hash = Block N-1's hash
→ hash = 000000000000000000def456...
Block N+1 header:
version | 000000000000000000def456... | merkle | time | bits | nonce
↑ previous block hash = Block N's hash
Changing any transaction in Block N-1:
→ Block N-1's hash changes
→ Block N's prev_hash field is now wrong
→ Block N's hash changes
→ Block N+1's prev_hash field is wrong
→ All subsequent blocks invalidated → must redo PoW
Genesis Block — The Exception
BLOCK 0
The genesis block (height 0) has no parent, so its previous block hash field is set to all zeros — 32 bytes of 0x00.
Genesis block previous block hash:
0000000000000000000000000000000000000000000000000000000000000000
(32 zero bytes)
This is the only valid block with a zero previous hash.
Any other block with a zero previous hash would be rejected
as it does not reference a valid parent.
Genesis block hash (this becomes the prev_hash of block 1):
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
TERMINOLOGY_INDEX
Previous Block Hash
A 32-byte field in every block header referencing the SHA256d hash of the parent block. Creates the chain.
Chain Linking
The property that each block's hash is committed to by its child, making history tamper-evident.
Genesis Block
Block 0. Its previous block hash is all zeros — the only block with no parent reference.
Immutability
Changing a historical block invalidates all descendant hashes, requiring redoing all subsequent proof of work.