Processing Of Natural Cryptocurrency Forks
So why bother after all?
To answer this question, we should imagine the consequences of forking briefly discussed in the previous article. Let’s assume that we would like to transfer some money to our friend. We create a transaction and send it to a miner. The miner finds the block and our transaction gets validated.
But soon we find out that another valid block was created at the same time, and it became more popular than ours. After a while, it appears that our transaction is not valid anymore because the network has refused it. And this all happens in a natural way, without any malicious behavior involved.
How to fight such forks?
This issue has no perfect solution considering the applied Proof-of-Work approach. Each node acts on its own, while information exchange among nodes or any other kind of cooperation is impossible here. Moreover, the Bitcoin protocol has an adjustment procedure that changes the problem's complexity when the average time of closing blocks gets less than 10 minutes. Such a mechanism makes any cooperation pointless because any pooling of efforts leads to accelerated mining, which will subsequently result in another adjustment.
Ethereum uses the same approach, but the average block closing time in this case is around 15 seconds, which is significantly less than Bitcoin’s. In Ethereum, natural forks have much more chances to be created.
The same problem, different solutions
Bitcoin and Ethereum handle this issue differently. Bitcoin simply drops the shortest chain. Since it takes less time to close a block than to calculate a single hash, the simultaneous creation of two parallel blocks is very rare.
Ethereum, on the contrary, has many blocks calculated in parallel. To handle them, a special “uncles” system is applied. In this system, parallel blocks are attached to the main chain after it is specified, and this process has several important consequences. First, almost every uncle block is considered partially correct and its author receives a part of a regular reward (and also without transaction fees as transactions in uncle blocks are not considered valid). Second, there are less incentives to support your blockchain split even if it might bring you a reward. This reduces the level of unnecessary competition. And finally, this approach partially supports CPU-resistant mining in the Ethereum environment.
Natural forks for DAG solutions
Apart from blockchain, there are other DLT solutions based on directed acyclic graphs (DAG). Their main difference is that forks are a natural and suitable part of these solutions. This is mainly because these approaches use transactions as main data units instead of blocks. Same transactions or even same transactions outputs cannot be held in different blocks simultaneously. This means that the blocks which were found later will be dropped as soon as the duplication happens.
On the other hand, the transaction-based approach does not require dropping the whole block. The system just has to refuse a specific transaction. The most famous representatives of this solution are Hedera with its hashgraph and IoTA with its tangle. In both cases, if the whole network will be separated in several shards they will eventually merge as soon as the connection is restored. Of course, we are not talking about cases of malicious node behavior aimed at performing double spending. This threat is essential for all types of DLT technologies.
What else can happen?
In addition to the natural forking, there are many examples of artificial ones. Some of them were planned in advance as blockchain evolution projects or the split of two communities due to misunderstanding. Others appeared by mistake. There are yet others that were created to do harm. The most popular cases of artificial forks will be discussed in the following articles.