One of the first decentralized applications was DAO. This DApp was a failure, as many of the funds raised were diverted by a hacker who managed to access the network due to some programming defects. Being an innovative technology project, the solution to the problem created would also have to be innovative.
Being a project of great importance for the Ethereum network at that stage, special measures were needed to correct this situation - the interest around the project was enormous, after all, 15% of the ether created so far had been raised. So the DAO team had the help of Buterin and the rest of Ethereum.
In the end, the solution found was to release an update to the Ethereum software to correct the problem that allowed the hacker to divert his funds. It would also be necessary to forcibly remove funds from the hacker's account, and return them to the original owners. However, this solution raised important questions that divided the Ethereum community. Adopting this solution would imply slightly changing the Ethereum blockchain, which many considered an affront to the values that the technology proposed. The forced change in the amounts of Ethereum in the account of the hacker and its previous owners was a violation of the concept of immutability that the community believed to be one of the most important characteristics of the technology. One of the fears was creating a precedent for governments and other powerful entities in the future to be able to demand changing blockchains to fulfill their interests.
Buterin believed that, due to the network being in such an initial and experimental phase, a precedent was not being set and, being such an important voice in the community, that was the option chosen: create a fork in the Ethereum chain by updating the software and correcting the problems created by DAO - a “hard fork“.
These forks can be used to improve blockchain architectures, but in this case the community was divided and this raised problems for the network. A bifurcation means that there are two chains and it is between them that the community will divide, since each node in the network will have to choose which one it wants to support. A divided community means that all resources are divided between the old chain and the new chain. Even network users must decide which chain they prefer to follow. With the division of users and resources, the original value of the network will also decrease and weaken it as these architectures live in a large part of the communities that create, adopt and improve them.
In this case, the Ethereum Classic was created, which according to its website is the original version of the Ethereum chain “free from subjective transaction manipulation”, perpetuating the view of those who believe that blockchains cannot be changed under any circumstances.
This was an extreme and very controversial case because it called into question an important characteristic of the blockchain - immutability.
However, the previous rules were maintained and in that specific block where the fork happened, the current chain of Ethereum is still linked to the previous chain. As shown in the image above, the difference between this block and others in the chain is that two different and separate chains are created from it.
Therefore, although the rules are changed from then on, the past remains unchanged. What in this case was forcibly changed, and hence the controversy, were the amounts of ether both in the hacker's wallet and in the wallets of its previous owners, from where that ether had been taken. These changes occur only in the chain that accepted the change and in the blocks that are part of it exclusively.
This method can be used to make improvements to the software. Although the mentioned case is an extreme case in which the community is divided, there are other cases in which these changes are adopted by the entire community and from then on, all nodes in the network are governed by the new rules. There is also a bifurcation with two blocks to be created, with the difference that, because there are no miners that follow one of the chains, it ends up dying and one block remains to be resolved. Consequently, the value of this chain also dies as it does not have a community to support it. This event is called a soft fork.
What distinguishes these two types of forks is mainly the relationship between the rules of the chain before and after the fork. As illustrated in the image above, the rules applied in the chain after a soft fork are stricter than the rules before the fork. That is, the old rules continue to be accepted in the new chain and the previous nodes continue to be valid in the new chain.
On the other hand, the opposite happens for the hard fork. The new rules are an expansion of the old rules and make them invalid in the new chain. Nodes that do not upgrade will be rejected and will not be able to enter the new chain for not following the rules that govern it.
Thus, there are arguments to support both types of bifurcations. Hard forks offer programmers more flexibility and freedom, as they don't have to worry about fitting the new rules into the old ones. Therefore, it allows significant changes and improvements to the network.
Soft forks also have benefits. They are more convenient for users, as they do not have to make any updates to use the new chain. For this reason too, only the consent of the programmers and miners is necessary since even if a user tries to make a transaction based on the previous rules it will be rejected by the new rules. As a result, there is less likely to be a break in the chain as there are fewer people having to agree to the changes.
In other words, there are several ways to be able to implement improvements in the infrastructure of crypto assets that can make them more agile, with greater capacity or introduce new tools to them, but all of them require that these changes be accepted by the community that will benefit from them. Also in this characteristic is the community that keeps the blockchain alive and healthy.