Last time we tried to explain the core concepts of how the blockchain works, explaining the unique signature, hashing and how the blocks are filled. In this edition of the blog, we are going to cover why the process we went through makes the blockchain immutable

As we covered last time, except for the first block in a blockchain, each block has the Hash function of the previous block. With new blocks being added every few minutes and there are over 650k blocks and counting in existence, changing the transactional store in your favour or trying to create new coins is going to be pretty challenging. This is because you will need to update not just the block you wanted to change and find an approved unique signature.  You will need update every single block after in the chain. As I hope you can imagine, it is very costly and time-consuming, but we will try to explain why it is impossible.

Let's say you wanted to go back two blocks and update the records so that a transaction between two parties was massively inflated, or you suddenly created new bitcoins.  You would update the ledger with this change and then need to start calculating a new hash function for this corrupted block. Then once that is found, you would need to take this hash and begin calculating the hash for the next block. Remember, the previous block's hash is part of the input for the calculation of the new block's hash. Therefore, the current hash of the next block is incorrect as it is referring to a now invalidated hash.  After successfully updating the next block's hash in the chain, you will need to calculate the hash for the latest block with the hash for the block you just calculated to keep it within a chain. However, while you are doing this hash function calculation, for the block you intended to corrupt and the two blocks after it, more and more blocks have been added to the blockchain, so you must keep altering the following block to keep the new blocks linked, Therefore, unless you have more computational power than the entire blockchain network combined, you will never be able to catch up with the network adding more blocks to the chain.

Your change to the previous block can never keep up with the rest of the network, and it will be ignored forever. The only way for you to catch up is to calculate hashes faster than the whole network combined so you can update the hash of your corrupt block and all the subsequent ones in time before the next one is added. Now on a blockchain network like Bitcoin, which has millions and millions of users, it is a safe assumption that one entity or even a group of entities will not have enough computational power than the rest combined. Therefore, the network will never accept changes, and it becomes immutable.   However, in theory, it is possible, if there is one actor with 51% of the network's power, you could update the blockchain. Nevertheless, the computational power and cost to do this would be immense, and if there were some way to do this, it would likely yield no monetary benefit. This is because the blockchain and bitcoin value is a network based on trust. Therefore, if an actor took control of the network,  Bitcoin would lose its value as users lose faith.

One last point to clarify, we have understood why the blockchain is immutable, how it uses cryptography and miners for security and the ability to move funds, but how is it governed? You may be thinking that all of this is a pretty clever way to decentralise money, but surely someone governs it and determines the rules. The Blockchain protocol was invented by a pseudonymous creator Satoshi Nakamoto who is still unknown to the public. Although the bitcoin still stored in his original wallet is worth over $44 billion at the moment, so probably can see why he does not want to be known. Satoshi and collaborators worked on the open-source code in the early days, and in theory, anyone can update the bitcoin as it is open source. However, as it requires a majority of people in the network to agree to changes going live it is almost impossible for any one entity to take over the network and update the code maliciously. So now releases/upgrades are managed by large not for profit organisations and passionate developers - essentially, it is governed by the users for the users.