BitcoinMachine
BEGINNER_DOC_003 // BEGINNERS / BLOCKS
BLOCKS
A block is a container of confirmed transactions added to the blockchain roughly every 10 minutes. Each block has two parts: a header containing metadata, and a body containing the list of transactions. Miners compete to produce valid blocks and earn the block reward.
Version: 4 bytes — block version / signalling flags Previous Hash: 32 bytes — hash of the previous block header Merkle Root: 32 bytes — hash of all transactions in this block Time: 4 bytes — unix timestamp (seconds since 1970) Bits: 4 bytes — encoded difficulty target Nonce: 4 bytes — the number miners change to find a valid hash
FOLLOWED BY
BLOCK BODY — TRANSACTION LIST
TX Count: CompactSize integer (number of transactions) TX[0]: Coinbase transaction (miner reward — always first) TX[1]: Regular transaction TX[2]: Regular transaction ... TX[N]: Regular transaction
4 BYTES
Indicates the block format version and signals support for fork/">soft fork upgrades. Miners use version bits (BIP 9) to signal readiness for protocol changes.
Version 1: Original Bitcoin blocks Version 2: BIP 34 — block height in coinbase (2012) Version 4: BIP 65 — OP_CHECKLOCKTIMEVERIFY (2015) Current: Bits used for signalling upcoming upgrades
The double-SHA256 hash of the previous block's header. This is the link that chains blocks together — change any past block and this hash no longer matches.
Previous Hash: 000000000000000000029a3bfad4d5f1... ← must match the hash of the last block ← any tampering breaks the chain here
32 BYTES
A single hash that represents all transactions in the block. Built by repeatedly hashing pairs of transaction IDs together into a tree structure (the Merkle tree).
TX1_hash ─┐ ├─ Hash(TX1+TX2) ─┐ TX2_hash ─┘ ├─ Merkle Root TX3_hash ─┐ │ ├─ Hash(TX3+TX4) ─┘ TX4_hash ─┘ Change any transaction → Merkle Root changes → Block hash changes
The Merkle Root lets you prove a specific transaction is in a block without downloading the entire block — used by lightweight wallets (SPV).
4 BYTES
A number miners increment to change the block hash. They search for a nonce that produces a hash below the current target. This is the core of proof-of-work.
Nonce range: 0 to 4,294,967,295 (2³²) Miner tries: hash(header with nonce=0) → too high hash(header with nonce=1) → too high hash(header with nonce=...) hash(header with nonce=X) → BELOW TARGET ✓ Block found!
If all ~4 billion nonces are exhausted, miners change the ExtraNonce in the coinbase transaction (which changes the Merkle Root and gives a new nonce search space).

Coinbase Transaction — Always First
MINER REWARD
Every block begins with a special coinbase transaction. It has no inputs from previous outputs — instead it creates new bitcoin from nothing (up to the block reward amount) and collects all transaction fees.
Input: No previous UTXO (creates coins from nothing) Output: Block Subsidy + Transaction Fees → Miner's address Block reward history: 2009–2012: 50 BTC 2012–2016: 25 BTC 2016–2020: 12.5 BTC 2020–2024: 6.25 BTC 2024–2028: 3.125 BTC ← current (halved at block 840,000)
Max block weight 4,000,000 weight units
Max block size (approx) ~2–4 MB (depends on tx types)
Block header size 80 bytes (always fixed)
Block interval target 10 minutes
Transactions per block (typical) 1,500 – 4,000
Blocks per day (average) ~144
TERMINOLOGY_INDEX
Block
A container of validated transactions plus an 80-byte header linking it to the previous block.
Block Header
The 80-byte summary of a block: version, prev hash, merkle root, time, bits, nonce.
Block Hash
The double-SHA256 of the block header. Must be below the target for the block to be valid.
Merkle Root
A single hash representing all transactions in the block. Any change to any tx changes the root.
Nonce
A 4-byte number miners change to find a valid block hash. From "number used once".
Coinbase Tx
The first transaction in every block. Creates new bitcoin as the miner's reward.
Block Reward
The subsidy (new bitcoin) plus transaction fees awarded to the miner who finds a valid block.
Block Height
The sequential position of a block in the chain. Genesis Block = height 0.