Key Question
What happens when two miners find a block at the same time?
Deep Dive
The Bitcoin network protocol is simple β nodes gossip transactions and blocks:
1. Alice broadcasts a new transaction to her peers
2. Each peer validates (signatures, no double-spend)
3. Valid transactions go into the peer's "mempool" (pending tx pool)
4. Miners select transactions from mempool to build their block
5. Miner finds a valid nonce β broadcasts the full block
6. Peers validate the block (correct hash, valid transactions)
7. Peers add it to their chain and start mining the next block
Forks
Sometimes two miners find a valid block at the same height simultaneously. This is a fork (or βtemporary splitβ):
Fork visualization:
βββββββ
βBlockβ (height 100, found by Miner A)
β 100 β
ββββ¬βββ
β
ββββββββββ΄βββββββββ
βΌ βΌ
βββββββ βββββββ
βBlockβ βBlockβ (both at height 101)
β 101 β β 101'β (miners find one each)
ββββ¬βββ ββββ¬βββ
β β
β ββββββββββ
βΌ βΌ
βββββββ (orphaned when
βBlockβ next block
β 102 β extends 101)
βββββββ
Result: Block 101' is "orphaned" β its transactions go
back to the mempool and may be mined in future blocks.
Nodes work on whichever block they receive first. The fork resolves when the next block extends one of the branches β the other branch is orphaned. Orphan rate on Bitcoin: ~1-2%.
Uncle/Ommer Blocks (Ethereum)
Ethereum (PoW-era) had a different approach: uncle blocks. Valid near-blocks (blocks that would have been orphaned) get a smaller reward. This:
- Reduces centralization pressure (small miners arenβt punished as harshly for slow propagation)
- Increases security (more hashpower is working on valid extensions)
- Increases throughput (uncles can include transactions)
Ethereum uncles:
ββββββββ ββββββββ ββββββββ ββββββββ ββββββββ
β Nephew βββ Parentβββ Blockβββ Uncle β β Uncle β
β β β β β β β β β β
ββββββββ ββββββββ ββββββββ ββββββββ ββββββββ
β β β
Main chain β Uncle included
β at height-2
Uncle included
at height-1 (gets 87.5% reward)
Propagation
Block propagation speed matters. A 1-second delay in propagation can cost a miner thousands of dollars per day (theyβre mining on a stale branch). Relay networks like FIBRE use UDP and forward error correction to minimize latency.
Check Your Understanding
- What happens to transactions in an orphaned block?
- Why does Ethereumβs uncle block mechanism reduce centralization pressure?
- How long would it take for a Bitcoin transaction to have 6 confirmations on average?
The βSo What?β
Forks arenβt bugs β theyβre a natural consequence of a decentralized network with propagation delay. The protocol handles them gracefully, and the economic incentives (orphan costs) push miners to propagate blocks quickly. This self-correcting mechanism is what makes the system stable at global scale.
βοΈ Exercises
Exercises: Blockchain & Proof of Work
Exercise 1
If the Bitcoin network has 200 EH/s (2 Γ 10^20 hashes per second) and you have 1 PH/s (10^15 hashes per second), what is your probability of mining the next block?
Exercise 2
What prevents someone from changing a transaction in block #100,000? Be specific β mention the cryptographic structures involved.
Exercise 3
Why is selfish mining with 25% hashpower dangerous? What revenue advantage does the attacker gain?
Exercise 4 (Challenge)
Suppose Bitcoinβs block time is 10 minutes on average. Youβre a merchant who waits for 6 confirmations before shipping. If the attacker has 40% of the total hashpower, whatβs the probability they could produce a longer chain than the honest miners after 6 blocks? Assume the honest miners have 60% and blocks follow a Poisson process. (Hint: this is a variant of the βgamblerβs ruinβ / race problem described in the Bitcoin whitepaper.)
ποΈ View Solutions
Solutions: Blockchain & Proof of Work
Exercise 1
Probability of mining the next block.
P = your_hashpower / total_hashpower P = (1 Γ 10^15) / (200 Γ 10^18) P = 1 / 200,000 P = 0.000005 = 0.0005%
In plain terms: youβd expect to mine a block once every 200,000 blocks. At 10 min/block, thatβs about 3.8 years of continuous mining.
Exercise 2
Why block #100,000 transactions canβt be changed.
Each block contains the hash of the previous block in its header. Block #100,000 links to block #99,999βs hash. Changing a transaction in block #100,000 changes the Merkle root of the transaction tree, which changes the block header, which changes the blockβs hash. That hash is referenced by block #100,001. Youβd need to:
- Recompute PoW for block #100,000 (new nonce)
- Recompute PoW for block #100,001 (different prev_hash now)
- Recompute PoW for all blocks up to the current tip (~857,000+ blocks)
Thatβs more than 757,000 blocks of PoW β computationally infeasible without >50% of the total networkβs hashpower.
Exercise 3
Selfish mining danger.
With 25% hashpower, the selfish miner can gain more than 25% of block rewards by:
- Withholding found blocks instead of broadcasting immediately
- Letting honest miners waste work on competing blocks
- Broadcasting their private chain at the right moment to orphan honest blocks
This breaks the core security assumption (βone-CPU-one-voteβ means fair share). A rational miner with 25% hashpower is incentivized to become selfish, which degrades network security for everyone. At 33% hashpower, the attacker earns ~40% of rewards β a significant unfair advantage.
Exercise 4 (Challenge)
Attacker probability after 6 confirmations with 40% hashpower.
This is Nakamotoβs race: attacker catches up from z blocks behind, where z=6.
q = attacker hashpower = 0.4 p = honest hashpower = 0.6
Probability attacker catches up from z blocks behind:
P = (q/p)^z when q < p
P = 1 when q β₯ p
P(attacker catches up from 6 behind) = (0.4/0.6)^6 = (0.667)^6 β 0.0879 β 8.8%
Thatβs an uncomfortably high probability for a $10M transaction. This is why:
- Exchanges wait 30+ confirmations for large deposits
- Zero-confirmation transactions are risky with >0% attacker hashpower
- The whitepaper formula assumes the attacker works continuously; real attackers may be less patient
With q=0.3 (30%), P = (0.3/0.7)^6 = (0.429)^6 β 0.62% β much safer.