The data contained in Bitcoin’s blockchain is stored across numerous nodes all across the world while the owners of these nodes have free access to this data. If you can control some part of the network, what a big temptation it must be to edit the transactional history in your own favor! Just add a few lines to the public ledger and get a few hundred or a few hundred thousand bitcoins to your wallet. What can be easier?
However, this is not something we can observe in the case of Bitcoin. We are totally sure of the network’s protection and that such a thing can never come to reality. All this is possible thanks to the hashing algorithm that is the backbone of security in the world of cryptocurrencies.
In this article, our experts at Numbrs give a detailed explanation of this mechanism, its peculiarities, and its benefits.
How does hashing work?
First, it’s important to give a little bit of theoretical background.
In cryptography, a hash function serves to convert an array of any size into a compressed numerical value of the predefined length. With its help, you can encode any data via a specific cryptographic algorithm and turn it into a string.
For example, if you take the phrase “I love you” and hash it via a cryptographic algorithm SHA-256 that is used specifically in Bitcoin, you will get a string that contains 64 symbols. If you do that same for any other phrase, or number, or a mix of letters, symbols, and numbers with no human meaning, the output string will be different, but it will still consist of the same number of symbols.
With that said, it’s important to note the following aspects:
- If you hash the same information, you will always get the same result regardless of how many times you do this. Every time you put in the phrase “I love you”, you will get the following hash: “c33084feaa65adbbbebd0c9bf292a26ffc6dea97b170d88e501ab4865591aafd”. Come and try it yourself.
GitHub: This is what you get when you combine “I love you” + SHA256
- A tiny change in the input data leads to a total change of the output hash which will have no correlation with the previous one. For example, if you add an exclamation mark and feed “I love you!” to the hashing function, you will get “c22fe0282c7b45b0926fb3e33efd375a5e195c4c838c96075e3877b2ac2b7911”.
GitHub: Make a tine change in the input data to get a totally different result
- Hence, you may be sure that if the hashes of two arrays coincide, the arrays themselves coincide as well. The probability of getting the same hash while encoding different input data exists, but it tends to zero.
- To calculate a hash of a single function requires a very small amount of computing resources.
- There is no technical way to calculate the input data if you have only its hash at hand. This can only be done by brute force. Unlike the hashing function itself, this process is very complicated and requires much more computing resources.
All these features make hashing an ideal tool to maintain security in the digital space. While initially it was used primarily to secure signatures, index data, authenticate messages, and detect duplicate data, the introduction of Bitcoin in 2008 has become one more of its primary use cases.
How does hashing secure Bitcoin?
Now, let’s get to the practical side of things and see why hashing makes Bitcoin so secure.
If you explore a random block in Bitcoin’s network, you will see Block Hash right on the top of the page. In order to get this hash, you apply the cryptographic algorithm to the transactional details and the hash of the previous block. Strictly speaking, there are other elements of data involved, but these two pieces make up the basis, hence we simplify the explanation for illustrative purposes.
BlockExplorer: Block Hash is the core element of the blockchain
As it’s been mentioned above, any small change in the input information leads to the total change of the hash. Thus, if some malicious node holder decides to change one of the previous blocks, the hash of the next block will change as well along with the rest of the whole chain.
Such an attack is possible in theory, but in order to accomplish it, one should gain control over the majority of nodes. We’ve explained it in detail in the article about 51% attack. Since Bitcoin is the most popular cryptocurrency supported by a big number of nodes, a malicious miner would have to invest an incredible sum of money to conduct this attack which would eventually turn out to be unprofitable. And this is exactly what makes Bitcoin so secure.
The role of hashing in the mining process
Another important topic to discuss here is what hashing has to do with mining.
Miners all across the world group unconfirmed transactions and place them into blocks. In addition to transactional info, they also include a random number called nonce and hash the blocks after that. The goal of miners is to obtain a block with a specific number of zeros in the beginning.
Miners brute force different nonce numbers to fit this requirement. Once some block is found, it is added to the chain, the lucky miner gets a reward and transactions get confirmed.
The point is, the variability of transactional information is limited, hence the number of variants a miner has to brute force is small. Adding a random number into the equation significantly improves the variability and makes the process of finding a hash much more complex.
Blockhain.com: A random number nonce is added so as to fit the cryptographic requirement. At the time of writing, miners have to obtain hashes with 19 zeros
Hashing in other cryptocurrencies
Thanks to Bitcoin’s open code, many developers have created their own cryptocurrencies trying to improve this aspect or the other. Some of the most famous examples include:
- Bitcoin Cash (BCH).
- Bitcoin SV (BSV).
- Emercoin (EMC).
- Namecoin (NMC).
- Peercoin (PPC).
- BitcoinDark (BTCD).
- Litecoin Cash (LCC).
All these altcoins, just like Bitcoin, rely on the proof-of-work consensus mechanism. Those that are based on the proof-of-stake use hashing as well. Although PoS-based cryptocurrencies don’t require calculating the hash, it is still needed to ensure the security of the network and eliminate attacks.