Blockchains using proof of work are often referred to as immutable ledgers: everything written in such a blockchain is there to stay. It is impossible to alter or replace that information. But is it really impossible to enforce changes in a blockchain, to change the history of transactions and redistribute coins? The simple answer is: it’s not impossible, just very, very difficult.
Blockchains may not be perfectly immutable, but one would be hard-pressed to find a digital system of such complexity that is. As a matter of fact, cryptocurrency blockchains achieve an enviable level immutability compared to other forms of digital money. Many measures have been taken by their developers to ensure that these cryptocurrencies function as reliable and unchangeable ledgers without needing to trust a central authority to keep records straight.
This article explores the fringe cases in which a blockchain’s contents can undergo changes and shows where the idea of immutability might leave something to be desired.
Blockchain immutability essentials
- Blockchain reaches an outstanding level of immutability, but it is not perfectly immutable.
- A successful 51% attack could lead to changes in the history of transactions in a PoW blockchain.
- Forking is a way to change the blockchain if the fork has sufficient community support.
- Transactions need to reach the state of practical finality for most merchants and exchanges to consider them complete.
A 51% attack on public blockchains
One of the most obvious ways in which it is possible to modify the history of a blockchain is by means of a 51% attack (also known as a double-spending attack, because it allows the perpetrator to re-spend coins that have already been spent).
In a 51% attack scenario, the attacker takes control of a blockchain by having the majority of the hashing power (the computing power required to generate new blocks). This allows them to modify the history of transactions as they see fit, funding particular accounts while draining others.
However, pulling off a 51% attack on a popular blockchain is easier said than done and would require an enormous amount of money (for high-grade mining equipment) and electricity (to run the equipment) to succeed. It is also not economically viable since it would most likely bring about a crash in the price of the targeted cryptocurrency.
Blockchain forks and immutability
Forking is another instance where the history of transactions can undergo a change. Hard forks have the power to change almost everything about a blockchain (see Bitcoin Cash) and also make it possible to redistribute coins.
This is what happened with the Ethereum DAO fork. In 2016, a major Ethereum-based smart contract, known as the Decentralized Autonomous Organization, was exploited and 3.6 million ETH were stolen from it (worth around 50 million USD at the time). In order to alleviate the damage done, the majority of Ethereum users decided to adopt a fork which returned the stolen ETH.
Of course, this fork could only have been implemented with a majority vote, and it was the case that the vote in favor of the fork won by a strong margin. It is unlikely that the DAO investors would have acted this way if it had not been about returning their stolen ETH. They sacrificed immutability, and with it DAO’s top value of “code is law,” in favor of recovering funds lost due to an exploit in DAO’s smart contract.
Practical finality of cryptocurrency transactions
When a transaction is conducted on a blockchain, it needs to be finalized. We usually think of it in terms of the transaction being mined, meaning that it is included in a block. However, most merchants and exchanges that deal with crypto do not consider this sufficient and demand that a certain number of blocks be added to the blockchain after the one containing your transaction.
They do this because the inclusion in the latest block is no guarantee of finality. In fact, no transaction ever reaches absolute finality. A variety of factors, from malicious miners to network connectivity, could mean that the last block is not legitimate and has a probability (albeit small) that it may still undergo a change – validators could reject it, continuing the blockchain on an alternative path.
However, with every block added on top of the one with your transaction, the possibility of it being final increases. At a certain point, when the transaction is embedded deeply enough, it reaches the state of practical finality, after which point its immutability is as good as certain. This does not require extreme depth. You usually need to wait for 3-6 Bitcoin blocks (around an hour) and around 12 Ethereum blocks (usually no more than 4 minutes) for your transaction to be finalized.
Practical immutability beyond doubt
So, while blockchains are not 100% immutable and can, in extreme and rare cases, be changed even against the wishes of their developers and users, they are close enough to this goal to be called practically immutable. For proof of work blockchains like Bitcoin, the more mining power they have, the more immutable they get. This means that larger blockchains with more support from the community are harder to change than smaller blockchains.
When it comes to monetary systems, large public blockchains provide the highest degree of transparency and immutability that we’ve been able to achieve so far. As they get bigger and gather more support, they will only become more immutable.