"Mining is memoryless", block times so far tell you nothing about what's next." True for a single hash. Not true for the system you're actually mining on.A single hash trial is genuinely memoryless, independent, no argument there. But "the system" is hash trials PLUS a difficulty retarget every 2016 blocks computed directly FROM the pace of the blocks you just watched happen. That retarget isn't random, it's a deterministic function of what already occurred, capped at +300%/-75% per epoch. Partway through an epoch, the blocks you've already seen aren't noise to shrug off, they're the direct input to a formula that tells you, right now, where the next difficulty change is heading.
Live example instead of a toy one: at block 964,942 (epoch 479), difficulty sits at 125.81T, and extrapolating this epoch's pace so far projects roughly a -0.94% retarget near block 966,240 (~Sep 5). That estimate moves as the epoch progresses and gets tighter the further in you are, but it is not zero information, which "memoryless" as a blanket claim says it should be.
Formula, runnable on any epoch: new_difficulty = old_difficulty × (20,160 minutes / actual minutes for the epoch), clamped to [0.25x, 4x].
- Epoch pace holds at 8 min/block - retarget projects to +25.0%
- Pace holds at 6.5 min/block - +53.8%
- Pace holds at 13 min/block - -23.1%
Here's the part almost nobody brings up alongside this: there's a long-documented quirk in Bitcoin's actual difficulty code where the solve-time of the FIRST block in each epoch never gets counted in that formula, the client only sums 2015 of the 2016 intervals. It's discussed on the difficulty-algorithms research repo tied explicitly to this same memorylessness question, and it's never been patched since fixing it needs a hard fork over an effect too small to justify the coordination cost. So the system isn't just "not memoryless" in the statistical sense above, the reference implementation has a literal, permanent case of forgetting one block's timing every epoch, baked in since the original code.
None of this touches the memorylessness of a single hash, it just means "the system is memoryless" is the wrong scope for a statement that's only true one layer down. If you want an actual forecast instead of "who knows, it's memoryless," the formula above, run against the current epoch's elapsed blocks, is sitting right there.