We need a mechanism to coordinate miners to make new blocks every two minutes. And we cannot rely on any centralized clock to tell us the time, so what can be do? Well, remember that the way we picked which miner got the price and could write the next block was by making them all do crazy hard math calculations until one of them got it right before the others? Well, that outcome is pretty random, since it’s designed not to be a predictable outcome (otherwise what’s the point) so it may very well be that the miners will take very different times to find those results. That would mean that we would have very different times between new blocks, rendering our money chaotic and unreliable. We don’t want that.
But, what we could do is to change how difficult the number the miners have to find is with every round, so in average it takes them 2 minutes to find it. Mind-blown moment right there.
Monero does that to ensure the time it takes for you to get your new transaction written on the next block to be two minutes in average. The protocol looks at the time lapse between the last 700 or so blocks, trims the 100 ones that are either too long or too short, and makes an average. If the average is shorter than 2 minutes, it’ll proportionally rise the difficulty of the next number to guess so it takes longer. The system does this with every block, so the averages (and difficulties) don’t change dramatically. If the time between blocks is longer, it lowers the difficulty of the ruffle’s next round.
This self-balancing act is simple yet super effective and stabilizes the whole system, allowing it to adapt to new situations without having to rewrite the rules of the game. It’s like your body that can breathe faster and deeper if we need to pump more oxygen faster to our muscles, and run from a lion (or a thief), and then breathe calmly to save energy and rest once we’re safe.
Now that we got the miners to release blocks in tempo, where can they find the transactions to include in those blocks?