Delegated Byzantine Fault Tolerance Consensus Mechanism
This write-up is meant to give a basic understanding of how the Consensus Mechanism known as Delegated Byzantine Fault Tolerance, works. The notion is explained in a macro sense with respect to NEO — without in-depth technicality that might confuse beginner.
Delegated Byzantine Fault Tolerance or dBFT for short is a consensus mechanism that was made popular by a cryptocurrency called NEO. dBFT essentially works in a similar fashion to a country’s governance system, having its own citizens, delegates, and speakers to ensure that the country (network) is functional. The method is closer to PoS rather than PoW, by utilizing voting system to choose delegates and speaker.
Citizens =NEO tokens holder (ordinary nodes)
Delegates = Bookkeeping Nodes (with specific requirements to be elected as one)
The requirements to be chosen as delegates:
- Solid internet connection
- 1000 GAS
- Specific equipment
Speaker = One of the randomly chosen delegate
Citizens vote for delegates; each citizen has the ability to give their vote regardless of the amount of token that they hold. One of these delegates is then chosen at random to be the speaker. The job of these delegates is to listen to the citizens’ demands which are the various transactions being made on the network. The delegates will then keep track of all the transactions within the network and document them on a ledger.
When it comes down to verifying a block, the speaker that was randomly selected needs to propose his/her block. The speaker will then send his/her block to all the other delegates in order for the delegates to match their own blocks with the speaker block to ensure its validity. At least 2/3 of the delegates need to agree on the block that was proposed by the speaker before it is accepted and added to the network. In the instance that less than 2/3 of the delegates agree, a new speaker will be randomly chosen again and the whole procedure restarts.
The NEO network runs on two tokens, NEO and GAS. GAS is basically the payout/dividends that the delegates will receive for their bookkeeping activity in ensuring that the network is functional. Users of NEO token pays in GAS to run smart contracts, and the fees are proportional to the amount of computing resources consumed by the smart contract. In the long run, the production of GAS by owning NEO will slowly deplete every year until 2038, as the amount of GAS available is capped at 100 million GAS.
51% Attack & Centralization Problem
NEO offers finality over availability. Basically, it is almost impossible to launch a 51% attack on the NEO network. However, this advantage comes with a sacrifice that a lot of critics tend to point out; NEO is currently not a real cryptocurrency yet as it is still centralized.
To put it simply, NEO has a much small number of nodes compared to other cryptocurrency networks. Moreover, the bookkeeper nodes or delegates of the NEO network are currently still being held primarily by the NEO council. Which makes it rather impossible to launch a 51% attack due to how centralize it currently is.
In the future, when these bookkeeper nodes are more decentralized (the NEO Council claims that they will decentralize the bookkeeper nodes in the future once the platform is fully developed), there will be legal responsibility in respect to the role. As the identities of the bookkeeper nodes are known, they can face potential legal repercussion if they try to do malicious actions. Moreover, NEO also plans to work with large corporations as bookkeeping nodes, which will definitely not try to do malicious actions as it will tarnish their reputations.
Lastly, the NEO network can not be forked. In essence, if there is a 51% attack or a situation where more than 1/3 of the delegates constantly disagree with the bookkeeping nodes, then the network can be potentially put on hold. As one can see, the procedure of the NEO network is not as decentralized as PoW or PoS, which has been a growing concern on the community.
On March 3rd, the NEO network stopped working temporarily due to a node being disconnected from the network, causing concerns among the community.