NGD has released the latest version of neo-cli, version 2.10.0, which is due to be rolled out to TestNet consensus nodes on March 18th. The update includes numerous changes designed to increase the stability and performance of the NEO blockchain.
The most noteworthy changes are the inclusion of dBFT 2.0, an updated version of NEO’s consensus mechanism, and a set of memory pool performance improvements.
dBFT 2.0 refers to an assortment of updates that aim to increase the reliability of the consensus mechanism. One of the most important changes is the addition of the ‘Commit’ phase of the consensus algorithm, which ensures that only one block will ever exist at a specific block height. This will resolve the single block fork issue that has caused peer node outages in the past on the NEO MainNet, and ensures that transaction finality is always preserved.
The new version also includes a regeneration strategy for consensus nodes. These changes are designed to allow a consensus node to automatically recover the latest consensus state, following a fault such as a network outage or hardware issue. This removes the need for a manual reset in a variety of circumstances, which is hoped to help maintain stability and low block times even when faults occur.
Memory Pool Improvements
The NEO MainNet has occasionally encountered erratic block times when under heavy load, particularly when the memory pool is full of free transactions. Previously, nodes would re-verify all transactions between blocks, instead of only verifying as many as are necessary to fill the next block. This resulted in wasted computation that could cause severe performance issues.
Due to these pending transactions being re-sent to the blockchain mailbox, transactions would not remain sorted which could also prevent priority transactions being correctly flagged as such.
Neo-cli 2.10.0 includes various changes intended to resolve both of these issues, which are hoped to dramatically improve network performance under load and allow transactions with network fees to be properly prioritized.
The latest neo-cli release also includes a number of bug fixes, in addition to support for deploying or invoking contracts directly from within neo-cli. The full changelog can be viewed here.
To coincide with the release, the first section of the NEO community yellowpaper has been released, which provides the technical specifications for the updated dBFT consensus mechanism.
The yellowpaper provides background on Practical BFT and how NEO’s delegated BFT differentiates from it. It also provides information on how block finality is ensured and provides a detailed description of how the consensus mechanism operates.
Furthermore, the yellowpaper addresses the new regeneration strategy of dBFT 2.0, and also outlines potential faults and other considerations. A mathematical model for failures and attacks on BFT protocols (in particular for dBFT) has also been presented, though it is currently still under development.