It took miners about 98 minutes to find block #820132 today. As I was waiting for it, I wondered: Had the hashrate fallen off a cliff?
According to some math*, a block taking 98 minutes or longer is expected to happen around once every 125 days*. Quite rare, but not alarmingly so.
According to some more math, three or more blocks appearing within three minutes of the last block happens a lot more often, around every 2 days.
But (although maybe a bit specific) the two events happening right after one another (in any order) is expected to happen only once every 47 years!
Seeing the fees pile up in the mempool as block #820132 was being mined also made me wonder if there is any significant reserve of old, normally unprofitable miners that are ready to be fired up as soon as the total reward of a block (subsidy + fees) reaches a certain point. If there were, I would expect a block taking 98 minutes or longer to be even more rare. But it could also help explain the observed behavior of blocks coming in faster after the initial delayed block.
Just my nerdy Bitcoin musings of the day.
*) The math, which I'm pretty sure but not absolutely certain is reasonably correct:
from scipy.stats import poisson DAY = 24 * 60 expected_period = 10 long_period = 98 blocks_per_longer_period = round(1 / poisson.cdf(0, long_period / expected_period)) print(f"{blocks_per_longer_period = }") # blocks_per_longer_period = 18034 days_per_longer_period = round(blocks_per_longer_period * expected_period / DAY) print(f"{days_per_longer_period = }") # days_per_longer_period = 125 short_window = 3 short_window_blocks = 3 blocks_per_shorter_window = round(1 / (1 - poisson.cdf(short_window_blocks - 1, short_window / expected_period))) print(f"{blocks_per_shorter_window = }") # blocks_per_shorter_window = 278 days_per_shorter_window = round(blocks_per_shorter_window * expected_period / DAY) print(f"{days_per_shorter_window = }") # days_per_shorter_window = 2 blocks_per_combined_event = round(blocks_per_longer_period * blocks_per_shorter_window / 2) print(f"{blocks_per_combined_event = }") # blocks_per_combined_event = 2506726 days_per_combined_event = round(blocks_per_combined_event * expected_period / DAY) print(f"{days_per_combined_event = }") print(f"{days_per_combined_event // 365 = }") # days_per_combined_event = 17408 # days_per_combined_event // 365 = 47
poisson.cdf(k, rate)
is the cumulative Poisson distribution. I.e., it returns the probability that the number of events within an interval is less than or equal tok
, withrate
being the expected number of events.