alpha4: 12× sync throughput (100 → 1,179 bps mainnet catch-up) Five sync-perf wins after profiling vs real mainnet seeds: 1. ce587ef — Quick wins bundle: log every 1000 (was per-block stderr), --backend=mem flag for ghive-sync, MaxBlocksPerInv 200→1000, FetchBatch tuning, INV-driven catch-up rate calculation. 2. d4b57c8 — Parallel block-signature recovery across peer goroutines. secp256k1 RecoverPublicKey was the dominant CPU cost (~47% of samples). With N peers we now get N-way parallel recovery for free; applyLoop never blocks on sig math. 3. 969b704 — Throttle inventory broadcast during catch-up. Stops spamming INV when we're miles behind head; saves bandwidth + CPU. 4. f7aa93a — Catch-up kicker keeps multiple chunks in flight per peer. Removed the len(missing)>0 gate on walk-forward AND fan out to all peers (not just the responder) so the slowest peer doesn't bottleneck the round. 5. b58e1ab — Per-block-ID signer cache (8K-entry LRU) + lock-free headBlockHint atomic mirror. Catch-up redundancy across N peers meant the same block triggered N sig recoveries; cache dedupes them. headBlockHint avoids the applyMu.RLock + state.Session materialize per inbound block. Measured 60s mainnet sync (8 default seeds, --verify-against=./block_log): - baseline (alpha3): 100 bps - after all 5 wins: 1,179 bps avg, 5,042 bps peak burst Time to 9M projection: 25h → ~2.1h. All sig + block + state correctness preserved (verify-against 0 mismatches, replay 2M blocks 0 errors, all p2p+chain+blocklog tests green under -race). 5 commits since alpha3.