NEO News Today presents its second NEO community development summary. This report covers notable contributions made to both the core NEO protocol and independent projects created by community-based developers throughout December 2018 and January 2019.
A new initiative has taken the form of a monthly conference between NEO developer groups, NEO Global Development and the NEO founders. The meetings aim to improve communication between different teams in the NEO ecosystem in preparation for the migration to the NEO 3.0 platform.
The discussion also provides an opportunity for each group to note what they are focusing on for the upcoming months, which NEO News Today will explore in more detail in an upcoming article.
One conference has been held at the time of publishing, with the following representatives:
- NEO Foundation – Da Hongfei, Erik Zhang
- NEO Global Development – Grace Gui
- City of Zion – Fabio Canesin, Tyler Adams, Chris Hagar
- Neo Research – Igor and Vitor Coelho
- Red4Sec – Shargon, Belane
- NewEconoLabs – Robbie Wang, Yongxin Liu
- NEO SPCC – Sergei Liubich, Anatoly Bogatyrev
- AxLabs – Guil Sperb Machado
- NEO•ONE – Alex DiCarlo
- NEO News Today – Dean Jeffs
NEO Protocol Contributions
dBFT and neo-cli Improvements
Throughout December and January, community developers have continued prioritizing NEO’s dBFT consensus mechanism and neo-cli client. Further testing of the first ODBFT update has been completed, spearheaded by NeoResearch.
On January 29th, the NEO network encountered a stale block issue which resulted in block explorers and RPC nodes falling behind the blockchain. This issue will be permanently fixed pending the release of the third consensus stage, which has been successfully tested following work done by Shargon of City of Zion and Red4Sec.
These key changes are being finalized in a single pull request, ready to be merged with the Master code. Work is being completed on a regeneration strategy, which will complement the other changes by allowing consensus nodes to be automatically recovered if they fail.
NewEconoLabs has also made progress on its LightDB project, a replacement for the LevelDB database currently used by NEO nodes. Local testing has been completed, with NEL claiming it will use LightDB on its node in the future. The NEL team hopes it will “dramatically improve NEO’s TPS.”
The developers behind the decentralized workforce platform Moonlight have released the source code for its Asteroid load balancer. The load balancer acts as a reverse proxy, helping light applications stay connected with fully synced NEO RPC nodes that are performing properly. More information on the Asteroid load balancer may be found here.
Finally, City of Zion and Splyse developer Joe Stewart (@hal0x2328) has created two optional neo-cli plugins that aim to benefit the dApp ecosystem. The first implements an RPC method called findstorage, which is intended to allow dApps to quickly read information from smart contracts in cases where there are large quantities of results from a query and pagination is required.
The second plugin is NeoPubSub, which sends smart contract notifications to a Redis Pub/Sub queue in real time. This creates a simple interface that dApps may use to receive notifications from multiple smart contracts via a websocket.
Memory Pool Update
Aphelion developer Jsolman proposed a number of changes to NEO’s memory pool system, which are designed to address performance issues caused when the mempool reaches high capacity. The issues would reduce NEO’s ability to cope with burst network loads, and could also delay transactions that had been sent with priority fees due to existing transactions being re-verified before new transactions could be given priority.
The changes prevent all transactions from needing to be re-verified each block by limiting this to a subset of the transactions equal to the amount required to fill the block (currently 500). Transactions are now also kept sorted whilst in the memory pool, reducing the need for nodes to check to see which transactions should have priority.
The changes are expected to dramatically improve NEO’s performance and help stabilize block times when the network is under heavy load. The changes are expected to be included as part of the neo-cli 2.9.5 release.
O3 Labs has released an update to its NEO dAPI, a protocol created to give dApps easy access to existing NEO wallets. This removes the need for dApp creators to build their own wallets and has the potential to improve the user experience and security for users.
O3 has also added a feature to its address scanner that allows NEO users to easily view how many transactions are currently in the mempool. If the backlog exceeds 500 transactions, it may explain why a transaction is delayed.
City of Zion
In mid-January, CoZ released version 0.8.3 of neo-python, a NEO node and SDK written in the Python language. The update was large scale, including a full CLI refactor alongside various stability/usability improvements. A detailed summary of changes may be found here.
The neo-local project also saw considerable development in January, which can be used to quickly deploy a personal NEO blockchain for running tests without prior knowledge. Neo-local has been updated to use the latest neo-python version, and testing for multi-OS support is currently underway.
CoZ developer @cryptotuga has added autoheal functionality to the Docker containers, allowing them to restart automatically after they become unhealthy. This change intends to prevent neo-local users from needing to manually debug the system when failures arise.
In addition, a stop command has been added to neo-local to allow containers to be stopped after the stack has been started. The command will be extended in the future to allow individual containers to be stopped.
The Neon Wallet v2.1 release candidate has been delayed, pending improvements to the send function user experience and QR functionality. Most of January has been spent addressing minor bugs, enhancing code quality, improving test coverage and initial research/steps toward implementing new major features. These changes may be easily tracked here.
Some of these major features include manual node selection, support for infinite Ledger hardware wallet public addresses, and potential UI solutions for pending transactions.
In addition to the LightDB database replacement for NEO nodes, NEL released an online debugging tool for NEO smart contracts called NeoRay based on the NeonDebug toolkit, with currently only C# code being supported. More information on NeoRay may be found here.
In its January development report, NEL noted that development had begun on its Teemo browser extension wallet. In addition to offering users with an accessible browser wallet for accessing dApps without revealing their private key, it will also act as a dApp development platform, aiming to simplify dApp development.
A summary of NEL’s January development may be found here.
NEO St. Petersburg Competency Center
The latest dev team to join the ecosystem, NEO SPCC, has released a report covering progress it made in Q4 of 2018. The report documents the current development of its decentralized file storage platform, contributions to the neo-go and neo-storm projects, and Russian translations for the official NEO documentation. NEO News Today’s report summary can be read here.
Researcher Alexey Vanin published an article about task distribution in BFT protocols, with a goal of improving NEO’s scalability by minimizing task pool sizes across its nodes. The summary can be read here.
The group also attended the MICSECS-2018 conference in St. Petersburg, where they presented their research on decentralized file systems. Three works were presented:
- A zero-knowledge data validation method based on the homomorphic hash function
- A network map and data placement model
- Efficiency improvements for gossip protocols in distributed systems
On January 31st, NEO SPCC released a tutorial on setting up a full-fledged environment that allows for the auto-import of smart contracts. Smart contracts can be easily imported using neo-python prompt in the original City of Zion PrivateNet docker, but it is inconvenient to do so every time the environment is set up.
NEO SPCC’s NEO PrivateNet with auto smart contract import functionality may be downloaded here.