BLOG February 10, 2020
January was a short month for the Neo ecosystem, with development communities in the West returning from Christmas and New Year's holidays and communities in the East preparing for the Chinese New Year holidays. Nevertheless, a great deal was still achieved throughout the month.
Neo Core Developers and NGD teams focused on bringing libraries in line with the latest NeoVM changes and made progress on dBFT 3.0 as well as supporting these efforts through ongoing quality assurance and testing of critical PRs. The community development groups continued to work on infrastructure, both improving upon available Neo 2.x products and moving forward on Neo3 preparations.
A highlight of January was the addition of a consensus node hosted by Everstake, a Kyiv-based staking service platform, to the Neo3 Preview1 TestNet. The Everstake node marks the beginning of decentralization on the Neo3 TestNet, and as more Neo3 Preview versions become available, the current Neo 2.x consensus node hosts will gradually join the Neo3 TestNet.
The Coronavirus epidemic has caught the world by surprise but the government and the society is managing the situation with utmost efforts. NGD members are all back at work safe and sound, and all operations are running as usual. Although we have to delay some planned offline events such as the much anticipated Neo DevCon due to recent travel and visa restrictions, we are already working hard for a more exciting event which will showcase more progress on Neo3 and ecosystem projects.
In January we focused on bringing libraries such as neo and neo-devpack-dotnet in line with the latest NeoVM changes, and fixed some hidden vulnerabilities. These updates form a critical part of Neo3 Preview2, aiming to reduce many contract development constraints and better facilitate the needs of developers.
Another interesting area of progress was dBFT 3.0. NeoResearch has published a pre-release recently, which focuses on multiple redundant proposals to reduce the burden of a single Primary. More details are still being researched, including potential changes to the economic model and improvements to node distribution.
- Upgraded to latest NeoVM version (Neo.VM.3.0.0-CI00201). #1374
- Added contract ID by using a global counter. #1405 #1400
- Allowed client to verify imported blocks. #1415
- Added data size non-negative check in DecompressLz4. #1381
- Set limits in MerkleBlockPayload. #1377
- Removed notifications from ReferenceCounter. #1422
- Fixed undefined layout behaviours: UInt160, UInt256. #1387
- Fixed parallel transaction verification bug. #1408
- Continued dBFT 3.0 discussion
- Reverted boolean type removal. #274
- Added new unit tests. #276
- Added pointer script check. #280
- Allow the use ofOperandSizeAttribute outside NeoVM. #285
- Fixed INITSLOT bug. #283
- Updated Neo nuget. #530
- Updated .NET SDK version in dockerfile. #527
- Fixed bug with create address. #532
- Added dependencies on fedora. #529
- Updated FASTER storage plugin. #180
- Improved network fee calculation. #178
- Updated NuGet versions of all modules. #174
Neo Devpack .NET
- Fixed notequal with null problem. #183
- Updated to support the latest NeoVM version. #182
- Unified returns. #180
During the first month of 2020, the main focus of NGD Shanghai continues to be the acceleration of the development of Neo3 as well as continued quality assurance for all critical PRs in order to get all of Neo3’s components ready for the next big preview release. We also launched an in-depth investigation into Neo's infrastructure, looking for ways to upgrade and enhance the development experience of Neo3.
Other areas where we are making great progress are the Neo3 economic model and interoperability protocol. Following preliminary discussions around the Neo3 governance and economic model, a refined proposal has been created to facilitate its implementation. In terms of the interoperability protocol, we have been implementing MPT (Merkle Patricia Trie) in order to add StateRoot to Neo and also to develop the Neo cross-chain relayer and required contracts to support asset transformation between blockchains.
- Assisted in adding smart contract ID to solve the contract redirection problem.
- Added boundary checking for the Neo cryptographic library.
- Replaced FIFOCache with HashSetCache for caching transactions in order to improve Node performance.
- Fixed a bug for Nep5Tracker not updating account balances under certain scenarios
- Finished testing neo-celer channel locally.
- Performed in-depth investigation of Neo development tools and upgrade points to advance and improve Neo3 infrastructure.
- Continued to develop components required for cross-chain protocols, including Go SDKs, cross-chain contracts, etc.
- Neo3-GUI: started to develop wallet model while designing UI/UX in parallel.
- Neo3 PR quality control: finished 37 PR tests, following up 10 PRs.
- Implementing Merkle Patricia Trie for Neo3, 80% complete.
- Implementing new block syncing mechanism based on block index, 80% complete.
- Simulating node performance tests under different locales, 80% complete.
NGD Seattle made progress in supporting Python in the Neo Toolkit for .NET, targeting a preview release for Neo DevCon. Version 1 of the Neo Toolkit for .NET was launched alongside the Lunar New Year and reported strong community feedback. In regards to Neo3, NGD Seattle is in the planning stages of creating Neo 2.x to Neo3 migration tools for C# smart contracts and will sim-ship the Neo3 version of the Neo Toolkit for .NET shortly after preview availability.
- Neo Toolkit for .NET v1 launched with the Lunar New Year. Very strong feedback from community and input has provided momentum for this release.
- Neo Toolkit support for Python is now in progress; we anticipate providing our community with a preview release at DevCon to continue the feedback cycle.
- Planning in progress for Migration Tools from Neo 2.x to Neo3 for C# Smart Contracts. More to come on this. Please watch this space.
- Neo Toolkit for .NET support for Neo3 will sim-ship very shortly after the preview availability.
Much of the work completed by community development groups in January comprised of improvements to existing projects or further iterations on the path to Neo3.
Next resolved several bugs in its NeoLine mobile wallet and implemented UI optimizations, while the NeoLine browser plugin also received some attention. Next made various updates to its NeoTube explorer, providing additional statistics for GAS transactions, and making some infrastructure changes.
NEL made some adjustments to its own blockchain explorer, modifying styles and making other quality of life improvements. Further, a language selection option was added to the Teemo extension's wallet creation page.
Neo SPCC continued development on NeoFS and NeoGo and made over a dozen new version releases across its entire suite of projects. Notable NeoFS achievements included stability improvements regarding memory allocation and fault recovery, while a prototype of the reputation system was also implemented.
COZ released a new version of Neon Wallet that included split-key wallet imports that can be leveraged as an alternative to multi-sig wallets, and also to allow third parties to compute vanity public addresses. Extensive work was also dedicated to the continued design and development of Neo3-Python.
Full details of all community development progress in January can be found below.
Neo Saint Petersburg Competence Centre
- Improvements to memory allocation in NeoFS Node.
- New Object-model for PUT: pipeline as a stream without pre-processing before upload.
- Persistent consensus state for NeoFS nodes has been implemented: Inner Ring nodes have the possibility to repair their state or load it locally after faults.
- Extended object’s read operations functionality (raw read, non-assembled node).
- The prototype of the Reputation system for nodes has been implemented.
- Implemented historical weight estimate of global trust (Reputation system).
- dBFT in the NeoFS has been updated (improvements and bug fixing).
- Verify object and session token routines now perform locally without Inner Ring key manager.
- New releases:
- Neofs-node v0.2.7, v0.2.8, v0.2.9, v0.2.10
- Neofs-cli v0.2.4, v0.2.5
- Neofs-dropper v0.2.7, v0.2.8
- Neofs-api (old neofs-proto) v0.2.9, v0.2.10, v0.2.11, v0.2.12
- Neofs-crypto v0.2.3
- Neofs-gw v0.2.7
- Neofs-proto (new) v0.0.1
- Reworked logging using uber/zap.
- Added support for single-node setups.
- Improved networking and consensus subsystem based on benchmarking results.
- Extended Go smart contract compiler support for language features.
- Benchmark tool for Neo nodes in Go and C# implementation.
- Added smart contract manifest support (with ABI, features, permissions and groups) + ~50% test coverage.
- Updated the cryptography core package to support ECDSA signing and verification to support the previous point.
- Studied up on CFFI, Python.boost, pybind11 and CPython's extension API. Prototyped some in order to be able to make a sound choice for the neo3-python VM extension.
- Started the extension implementation.
- Studied neo-vm 3.x changes to clarify/validate design intentions.
- Performed work and refactoring related to integrating neon-js v5.0.0-next into Neon wallet in order to support Neo3.x (WIP).
- Rewrote authentication modules to work with Neo3.
- Full regression testing and bug triage on Neon 2.4.
- Release of Neon 2.4.
- Project planning around Neo 2.x => Neo3 migration as related to Neon.
- Design, planning, and copy gather for internationalization/translation effort
- Dependency updates.
- Implemented responsive styled README.md.
- Continued R&D on education platform.
- R&D on neo-local / neo-halite merge integration.
- Finished detailed report on dBFT technology and perspectives. Proposal of a dBFT 2.0+ consensus, with extra resilience against synchrony attacks.
- Finished detailed report on dBFT technology and perspectives. Proposal of some variants for dBFT 3.0 consensus, with multiple block proposals and safe participation for staked p2p guest nodes during consensus.
- LibBFT project has fixed major memory leaks and is ready for large scale testing.
- neocompiler.io platform backend was renewed and improved by adopting kind security recommendations from Red4Sec community.
NeoLine mobile terminal
- Android latest version 1.4.1 & iOS latest version 1.6.1
- Added message center module to optimize message push function.
- Optimized the UI layout of some application models.
- Optimized the third-party application jump process.
- Optimized application search box logic.
- Fixed the problem of adapting the page size of newsletter sharing on some models.
- Fixed known and reported bugs.
NeoLine wallet plugin
- Updated asset logos.
- Updated exchange rate conversion methods.
- Updated RPC node request logic to add protections against timeouts.
- Added GAS statistics for each address in the last 30 and 90 days.
- Fixed known bugs surrounding GAS change statistics for each address.
- Updated the server data node.
- TestNet data maintenance: deleted data related to invalid assets, positions, transactions, etc.
NEL Blockchain Browser:
- Fixed bugs that caused small numbers to be displayed in scientific notation.
- Modified the style of all transaction information lists in the Neo 2.x version and the transaction information list under the query address. Added UTXO asset change and transaction fee information to the list.
- Added transaction fee item to NEP-5 transaction list when viewing contracts.
Teemo Wallet Plugin:
- Added language switching option on wallet creation page.
- Added Teemo.NEO.addEventListener.
- Added Teemo.NEO. RemoveEventListener.
- Modified the content of neo-debug to adapt to the changes of neo-vm and neo-project, output dumpinfo.
- Continued the implementation of the Neo3 transaction model.
- Implemented Neo3 addresses.
- Performed refactoring to simplify APIs and code complexity for Neo3.
- Started the migration from Travis to GitHub Actions.
- Reviewed all the January pull requests in all Neo 2.x projects.
- Reviewed all the January pull requests in all Neo3 projects.
- Update neo-resilience in order to test the latest Neo3 changes:
- Fix txgen node build.
- Fix Logs export bug.
- Better error handling for docker builds and executions.
- Updated consensus wallets.
- Updated txgen wallet.
- Compile LevelDB, SystemLog, and RpcServer plugins from source.
- Updated Stats plugin.
- Updated TxFlood plugin.
- New Basic test.
- Renamed neo repo names.
- Completed Lesson1 (Typescript).
- Added mempool function.
- Added analysis function.
- Updated UI.
- MainNet service is online.
- All problems on were solved on TestNet and the platform is ready to provide service in February.
January was rather a shorter month due to the New Year and Chinese New Year holidays. Besides celebrating the festive spirit with the community, the marketing team also hosted several important NeoLive guests who shared insights on the latest happenings within the Neo ecosystem.
- Jan 9, Edison, Founder of NEXT, joined Neo Live on Telegram and introduced the NeoLine digital wallet: Gateway to the Internet of Value.
- Jan 16, John deVadoss, Head of NGD Seattle, joined Neo Live on Telegram and introduced Neo Blockchain Toolkit, describing how it could help developers kick start dApp development.
- Jan 17, NGD set up a collection of academic articles written by Neo communities on Medium which will be updated frequently with the latest publications.
- Jan 23, John Wang, Director of EcoGrowth NGD & Jack Yeu, COO of Switcheo Network, joined Neo Live on Telegram and answered questions from the community about the deepened partnership between Neo and Switcheo.
- Jan 14-23, NGD published a series of articles summarizing Neo community activities in 2019 on Chinese social media platforms.