NEO is a Chinese cryptocurrency, which imitates Ethereum in large parts with its blockchain ecology. It offers Smart Contracts and Distributed Apps and is currently still mainly represented on the Chinese crypto market.
NEO emerged in 2016 from its predecessor
NEO compared to Ethereum
The design of NEO is very close to the Ethereum model: Smart Contracts, which enable a wide range of financial and other transactions, are attached to the blockchain. These transactions are carried out by Distributed Apps (dApps), which in turn are executed by a virtual platform, the NeoVM – Neo Virtual Machine.
A short-term advantage of NEO over Ethereum is the programming language used. Instead of creating its own programming language called “Solidity” like Ethereum, NEO uses the well-known languages Java and C#. In the short term, this opens the way for a broader field of programmers to start programming Smart Contracts, but in the medium term, Solidity can be used to map various issues much more efficiently and securely.
NEO can currently handle around 10,000 transactions per second, while Ethereum can only handle around 15 transactions per second. However, the Ethereum team is currently working very hard on their own PoS algorithm and other scaling solutions.
How does consensus work at NEO?
To achieve consensus (what happened and what didn’t?), NEO does not use a proof of work algorithm, but with DBFT (Delegated Byzantine Fault Tolerance), a special form of a proof of stake algorithm.
Delegated Byzantine Fault Tolerance
The “Byzantine fault” in the blockchain area is an error in which a functioning node acts dishonestly. “Delegated Byzantine Fault Tolerance is the consensus algorithm used in the NEO blockchain to ensure fault tolerance and bypass this problem.
In order to understand the consensus mechanism of NEO more easily, it is a good idea to deal with the so-called Byzantine error.
The problem of Byzantine generals stems from an Ottoman legend and is said to have occurred during the siege of Constantinople (today Istanbul) in 1453. Several generals stood with their troops in front of the city walls of Constantinople. Since the city had very good defensive structures, it was urgently necessary that all generals attacked at the same time. Unfortunately, the generals didn’t trust each other and tried to let another general run into the open knife by attacking alone and beating him devastatingly. This would make the Sultan’s general displeased and the rest of the generals would be more glorious if they won.
All generals communicated with each other to determine a common time of attack. The problem now is: How does a general know if he’s being set up by another general? How can it be ensured that the generals can trust each other and that a traitor can be found?
Mathematically, the problem can only be solved if the loyal and honest generals make up at least two-thirds of the total. In a nutshell, in NEO’s “Proof of Stake” world there is a randomly selected node that sends a proposal to the rest of the nodes about what consensus should be. The remaining nodes then vote on it and if more than two thirds (66%) of the nodes are in favour, this proposal becomes consensus. If less than 66% are in favour, a new node is selected and the process starts all over again. The remaining nodes, however, do not simply vote arbitrarily, but calculate a hash value, which must first confirm the proposal of the determining node.
What happens if the randomly selected node deliberately makes a wrong proposal?
The proposal is simply rejected because more than 66% of the other nodes do not calculate the same hash value as the proposed value.
What happens if several nodes deliberately reject the correct proposed consensus?
In this case, it is important to distinguish whether more than 33% reject the consensus or not. If more than 33% reject the consensus, it is rejected and a new node is randomly determined. If less than 33% reject the proposal, it will be accepted. In this case, for example, you can identify particularly trustworthy and less trustworthy nodes by paying attention to the number of wrong votes.