[stickies-v](https://bitcoin.stackexchange.com/users/129640/stickies-v) pointed out in a comment that the code calculating the progress increase per hour is in [`ModalOverlay::tipUpdate()`](https://github.com/bitcoin/bitcoin/blob/ce3b75690d10426e97d087ca600140a19bf180b7/src/qt/modaloverlay.cpp#L90-L117). Basically, it does as would be expected to find the percent change of a quantity: 1. Milliseconds elapsed between first and sample blocks:<br> **Δt = t_FirstBlock - t_SampleBlock** 2. How many milliseconds faster the sample block processed than the first block:<br> **Δprogress = t_FirstBlockProcess - t_SampleBlockProcess** 3. Gives:<br> **(% progress per hour) = Δprogress / (Δt × 1000 × 3600)**, where (1000 × 3600) = milliseconds in 1 hour. <sup>Actually, Δt and Δprogress are both negative numbers, but their ratio in step 3 above is positive.</sup>