Aware of how difficult mining could be?
Tech Aficionado through this post gives you an insight into how mining causes difficulties.
In the past, I made a post explaining how blockchains work, and in it, I also explain what mining is. In a nutshell, mining is the process of creating a new block for a blockchain and filling that block with transactions. But what I didn’t explain is the “mining difficulty.” To understand what it is, let’s look again at the problem that blockchains try to solve: creating consensus amongst a bunch of computers or nodes on the internet. In the case of a cryptocurrency, that is agreeing about how individual users have spent coins. It might not seem like it, but this is a challenging problem to solve. Nodes on this network aren’t always honest, and they can appear or disappear whenever they like.
Now, imagine you want to join the Bitcoin network. Your computer goes out on the internet and looks for other nodes that are participating. But how does your computer know which one to trust? Everyone one of these nodes could be trying to game the system and make themselves rich. The solution proposed by the creator of Bitcoin was simple: the longest valid chain is the one to pick.
But this alone is not enough. If you’re an attacker, you could fabricate a very long chain with false transactions, and everyone will think that yours contains the truth. To solve this problem, Satoshi slowed down the process of creating new blocks with the proof-of-work algorithm. This is almost like a lottery where your computer is doing a bunch of random calculations to try and be the first to solve a cryptographic puzzle. Your chances of solving it are quite low. It's almost like all miners in the world are trying to pick the same, complex lock. Everyone tries a bunch of combinations, but in the end, only one can solve it first and when that happens, you have to start all over again to create the next block. On average, there is one computer every 10 minutes that solves the puzzle and gets the mining reward for creating a new block. This time delay of 10 minutes makes it impossible to artificially create the longest chain because the probability that your computer alone can pick this lock - or solve the puzzle – on time, is highly unlikely. You need many people, trying many random combinations to get it done within the timeframe.
There is one more issue: our computers get faster over time, so newer computers could perform more calculations and potentially create blocks in under 10 minutes. Meaning an attacker could purchase a bunch of really fast computers and try to get ahead of everyone else. Luckily, Satoshi thought of this as well, and this brings us finally to the mining “difficulty.” This is a number that controls how hard your computer has to work to create a new block and this isn’t a fixed number. It is automatically adjusted every 2016th block. The system looks at how fast these blocks were created. Normally this should take exactly two weeks. If more blocks were created in that time period, the difficulty is increased. If fewer blocks were created, the difficulty is reduced. That seems simple enough, but why would the difficulty have to be adjusted every two weeks? We don’t get massive computer upgrades every two weeks, right? Well, the system also has to compensate for the number of people that are mining. More miners mean that there is a higher chance of someone solving the puzzle in a shorter timeframe, which means the difficulty should be increased to maintain it and the opposite is true as well. If a lot of people stop mining, the creation of blocks will be longer and thus the difficulty has to be reduced.
So in summary, the difficulty adjustment makes sure that mining new blocks always takes around 10 minutes, no matter how fast our computers are and no matter how many people are mining. Great system but it has one big drawback, it tends to lead to centralization. See, the main reason why people are mining is because of the profits. As long as your mining operation is profitable, you keep it going. However, an increase in difficulty could mean that your mining operation now consumes more electricity than it generates in rewards, at which point you’re forced to stop your mining operation. This means that only bigger miners remain active because they have economies of scale. In the case of Bitcoin, we see a few big mining farms and mining pools taking a significant portion of this “mining market.” Not only does this centralize a technology that was meant to be completely distributed, but it also opens the doors for these large mining farms to run attacks against the network.
Fun fact: if you’re a developer, you might be thinking that this Satoshi guy is brilliant because he thought of all of this. But he’s not perfect and also makes mistakes. There is a small bug in the difficulty adjustment code of Bitcoin. After 2016 blocks the difficulty is recalculated but the code only looks at the first 2015 blocks. So if all blocks took exactly 10 minutes to mine and the last block took 100 days to mine, it wouldn’t affect the difficulty at all.
Hope you like this and if you did, make sure to hit like and comment on the post if you like it. Do share it with your friends and family.
Easy up Tech - Tech Aficionado