Forking Issues Of The Neo Cryptocurrency Platform
One of the most well-known smart contracts platform NEO was launched in February 2014. Back then its name was Antshares, but the project got rebranded in June 2017.
NEO is a non-profit community-driven blockchain project. The main goal of its developers is to build a so-called Smart Economy. In order to perform properly, this type of economy is to be supported by the automatic digital assets management. It has a huge community on various social media platforms, including Reddit, Discord, Github, and Twitter. It uses its own virtual machine, while NEO smart contracts can be written in C#, Java, Python, and other popular coding languages.
NEO fork protection
But what about forks? In theory, NEO uses a fork-proof consensus called “Delegated Byzantine Fault Tolerance” (dBFT). Its main property is that the system cannot fork even hypothetically. It requires 66% of participant approvement for a new block to be accepted, while any kind of BFT protocol requires at least 50% of agreement. This means that either the whole network accepts a new block at once, or it doesn’t accept it whatsoever.
NEO Super pseudo fork
Particular attention should be given to the NEO Super project, a so-called NEO fork, which is planned to be performed on November 10, 2018. More references about forking can be found in the project’s FAQ. For instance, authors mention a common practice of making the original coin’s name a part of the new token, and talk about the features NEO Super will inherit from the original NEO project. Another reference can be found in the coins distribution section, where the authors talk about the ways of sharing new tokens out among NEO holders.
So what kind of forking do we mean when there is a mathematical proof that NEO cannot be forked? It seems it is all about the convenience of the new project adoption. As the authors state in the whitepaper, BTC-to-BCH forking is impossible for NEO blockchain. So NEO Super is not actually a fork. It adopts some NEO properties and features within Ethereum. This allows appealing to the NEO community and encourage users to participate. In fact, it will be another ERC20 token. We can compare this approach with Stellar’s semi-fork called Kin examined ealier.
The fork that actually happened
Despite the statements above, in September 2018 there was an event that brought a lot of confusion regarding the possibility of forking in NEO. Frankly, this was not a fork as we understand this phenomenon, but something similar to it. As the developers explained later, the original protocol assumed three steps to be performed. However, in order to decrease the delays and resources wasting issues, the third step was removed from the particular implementation. As a result, two correct blocks appeared because of the network latency and multiple routes. Both of them were valid. The system had no default behaviour scenario for this event, thus many nodes failed to resolve the issue.
The problem was resolved by patch though. However, the question of whether this was a protocol flaw or a special case of forking is still open.
We can conclude that even negligible chances of unwanted consequences are to be taken into consideration. The emergence of two correct blocks in the “unforkable” network is not the only case. Another example is hash collision that happened in the Bitcoin blockchain in 2014. Either way, due to its protocol, NEO seems to be less subjected to forking.