BLOG January 8, 2020
As 2019 came to a close, offline and online events slowed down as many in the Neo community prepared to celebrate the holidays. Even so, there were noteworthy achievements made in the month of December.
On the development side, the NeoVM received significant improvements, including redesigned and simplified opcodes, and enhancements that speed up execution efficiency by more than 16x. In other items on the road to Neo3, a proposal for a new governance model was completed, whilst consensus was reached on a voting proposal for the new built-in Oracles.
Community development groups continued to deliver with NeoSPCC releasing an updated version of neofs-local, a private development environment for building and testing applications that use NeoFS. Coupled with the recently published NeoFS Proto library, developers now have all the tools they need to test the API and create Go applications with native support for NeoFS storage.
Another noteworthy release came from Alienworks in the form of NeoNodes. NeoNodes is a network monitoring system that aims to provide developers with a picture of available RPC nodes in the Neo ecosystem, which can be used to remotely obtain data from the blockchain or to relay transactions.
In December, the core developers have redesigned the instruction set for NeoVM and introduced object reference counter and variable slot features. Storage disaggregation is being implemented on Neo, and restrictions on the invoked contract are also added.
We focused on storage refactoring on Neo to support the needs of different scenarios. Currently LevelDB and RocksDB are already supported and are adding support for FASTER. At the same time, we have strengthened the security of the contract and increased the permission limit of contract invocation. On NeoVM, we are redesigning the instruction set in order to enhance the functionality of contracts and reduce the excessive usage constraints of contracts. The variable slot and the object reference counter are added, for easy management of the object life cycle.
-- Chuan Lu, NGD Protocol Group Leader
- Added a new SYSCALl: System.Contract.CallEx, restrictions on the invoked contract.
- Decoupled storage as an abstract storage layer, making LevelDB and RocksDB extension modules.
- Updated the serialization method to support the latest NeoVM.
- Added base64 in JsonSerializer to improve the compression rate and save storage space and bandwidth.
- Added Limits in MerkleBlockPayload.
- Set the price of RET to 0.
- Fixed timer's lock with wrong DNS and adjusted seed list initialization.
- Fixed bug in GetInvokeResult rpc method.
- Redesigned all opcodes, simplified them, made the semantics more clear, and strengthened some operation functions.
- Added variables slot for static fields, local variables, and arguments.
- Added explicit reference counting to manage object life-cycle, removed execution restrictions on many instructions to speed up execution efficiency by more than 16x.
- Added function pointers to allow developers to implement enumerators and other important smart-contract features.
- Added primitive and compound type to differentiate the primitive types boolean, integers and byte arrays, from compound types, maps and arrays.
- Added state in ExecutionContext for extension, and removed CallingScript in ExecutionContext.
Neo DevPack Dotnet
- Replaced Travis with GitHub actions.
- Adjusted the ABI naming format: camel name.
- Updated to support latest Neo.
- Added debug information.
- Added FeatureAttribute to prevent mistakes with multiples smart contracts in one assembly.
- Allowed neon to compile using the source files.
- Allowed to compile big switch cases.
Reorg and Upgrade
- Chose ‘N’ as the first letter of all address in Neo3.
- Neo-cli and neo-gui were merged into a single solution.
- The neo-plugins repository was renamed to neo-modules.
Added Limits in MerkleBlockPayload.
In December, NGD Shanghai continued to focus on accelerating the development of Neo3, and also improving the stability and performance of Neo3. Besides that, the Neo3 governance model and interoperability are also main areas that NGD Shanghai has been studying and discussing.
We focused on optimizing performance and we are considering adding StateRoot to Neo to ensure state consistency. In terms of performance optimization, we have tested in different environments and found that block generation is still not very stable and is still being optimized continuously.
Another interesting area of progress was Neo-GUI, in which we held many discussions around its front-end technology stack and product positioning. We took steps to investigate different paths, now it's under development.
-- Chuan Lu, NGD Protocol Group Leader
- DAPI implementation: Finished implementation, and integration with wallet browser extensions such as Teemo and Neoline.
- PR Tests: Conducted integration smoke test for 12 PRs in core Neo repos.
Proposal & Discussion
- Finished Neo3 governance model proposal.
- Agreed on built-in Oracle voting proposal after discussing with core developers.
- Proposed potential solutions for state root implementation via the P2P layer.
- Proposed new block syncing mechanism based on block index.
- Proposed contract redirection to avoid storage migration for smart contract migration.
- Neo modules: Added RestServer plugin to provide REST API for Neo node.
- Neo3-GUI: Finished prototype design, and simultaneously started work on UI/UX design and implementation.
- Interoperability: Started cross-chain integration - the first step is to support BTC & ETH cross-chain transformation on Neo3.
- Increased TPS via optimizing network and persistence layers for a 7 consensus node network.
- Finished documentation for RPC, Neo-CLI, and C# SDK, and updated them according to the progress of Neo3 development.
- Continued work on updates to Neo Toolkit for .NET. Watch for the 1.0 release in January.
- Neo Toolkit for Neo3 will be launched in the new year.
- Key updates have been made for the Visual DevTracker, Smart Contract Debugger and the Toolkit on Visual Studio Code Marketplace.
In December, many developer communities focused on integrating Neo3 support into their projects. COZ finished preparing documentation for neo3-python, made network changes to neon-js to match the Neo3 network list, and began refactoring Neon Wallet. Similarly, neow3j made its Neo 3.x branch its default development branch, NeoResearch worked on adjusting NeoCompiler Eco to Neo3, and NEL made a range of updates to Teemo-NEO3.0.
In other Neo3 progress, NeoResearch also worked a new "Cancel Phase" for the future dBFT, which will be one of the core changes alongside a new governance system for consensus nodes.
NeoSPCC completed a large body of work in December, pushing out new releases for NeoFS, NeoFS CLI, NeoFS Proto, NeoFS DropIn, NeoFS HTTP, and NeoFS Local. NeoSPCC also cut a new release for NeoGO, which now fully supports dBFT consensus, making it the second consensus-ready node implementation for the Neo blockchain.
Other notable progress includes Neo NEXT adding a range a new features to its NEOLine mobile wallet, including a news section, application search features, and fingerprint / FaceID integration, and the release of NeoNodes by Alienworks.
Full details of community development progress in December can be found below.
Neo Saint Petersburg Competence Centre
- Implemented benchmark stress test infrastructure tool for Neo nodes in Go and C# (will be adopted for Neo 3.0).
- Contributed to Oracles protocol and blockchain state root.
- Worked on BLS consensus node prototype, benchmark BLS vs ecdsa signature verification.
- Worked on NeoFS nodes stabilization.
- Memory consumption reduction in eventlog and object processing.
- Object service full refactoring.
- Stream processing pipeline for objects.
- Improved test coverage.
- Neofs-proto updates to contain full set of functions to build API.
- Processing security fixes (from Red4Sec) and updates of web services.
- NeoFS Local update with NeoFS nodes v0.2.
- Neofs-gorshok v0.0.5 - internal server to get information on NeoFS public TestNet.
- Released NeoFS Node v0.2.6.
- Released NeoFS CLI v0.2.3.
- Released NeoFS Proto v0.2.8.
- Released NeoFS DropIn v0.2.6.
- Released NeoFS HTTP v0.2.6.
- Released NeoGo v0.70.1.
- NeoGo node fully supports dBFT consensus.
- Improved dApp performance.
- Refactored crypto package.
- Implemented getblocks P2P.
- VM optimizations for stack management instructions and vm opcodes refactoring.
- Added hashed ID support for SYSCALLs and reworked VM interops initialization.
- Optimized NeoGo node performance and added Pprof metrics.
- Applied fix to mempool locking problem.
- Implemented multiple return support in smart contracts.
- Benchmarks for parallel CHECKSIG implementation.
- Two scientific papers (SCOPUS) were presented at "Majorov International Conference on Software Engineering and Computer Systems" in St. Petersburg, Russia, 12-13th December:
- "Data migration rate of the CRUSH-based distributed storage with dynamic topology"
- "The probability of timely redundant service of requests by a sequence of servers in a multi-level cluster"
- Finished authoring and preparing documentation.
- Improved storage layer and tests to be more developer friendly and inline with Neo3.
- Updated the smart contract module to be more consistent, using the new NeonObject model.
- Fixed commands for lint and test.
- Updated to use HexString class in transactions.
- Consolidate RPC features into RPCClient.
- Added changelog describing v5.
- Updated networks to match Neo3 network list (Neo3 only).
- Built proof-of-concept blockchain integration with Moodle LMS for online learning portal featuring token rewards.
- General bug fixes.
- Completed explicit network configuration settings page.
- Completed network configuration popover component.
- Made improvements to automated test coverage suite.
- Completed security audit and npm security vulnerability fixes.
- Small refactor of dashboard layout.
- Made progress on refactor related to integrating neon-js v5.0.0 into Neon Wallet to support Neo3.
- Several updates were applied to NeoCompiler Eco and the server was upgraded to a more powerful infrastructure.
- Conducted studies on mathematical and theoretical proofs for dBFT 2.0 and the use of State trees.
- Worked on adjusting NeoCompiler Eco to Neo3 and the possible integration with Neo3 Explorer Preview from CoZ.
- Worked on designing statistical tools for analysing pull requests with ANOVA using blocking factors, model validation, and automatic generation of comparison plots.
- Worked on the design of a new tool, based on NeoCompiler Eco, for automatically feeding the statistical model with any configuration of a Neo network.
- Worked on discussions and writings of more details for additional dBFT phase - "Cancel Phase" - which will be one of the core changes proposed for the future dBFT together with a new governance, based on Game Theory concepts, for easily contributing as a consensus node.
- Contributed to discussions on GitHub for achieving privacy on smart contracts, such as anonymous NEP-5 and the SciChain project.
Events and Partnerships
- Participated in Brazilian forum on blockchain, which included a major development bank and social institutions. The importance of having a verifiable data structure, which is reliable against previously unknown bugs, while still maintaining fundamental immutability guarantees was discussed and highlighted.
- Some Brazilian government entities indicated strong interest in Neo technology, due to its efficient node control via dBFT 2.0 consensus, especially when integrated via a hybrid permissioned public-access ledger, to a fully public ledger.
- Android latest version 1.3.0.
- iOS latest version 1.5.1.
- Added fingerprint recognition to Android.
- Added Face ID / Touch ID identity unlocking to iOS.
- Added information columns, including Chinese newsletter, community section, English news, and Twitter section.
- Increased the application section and added more dApps to the Neo series.
- Increased the application search - convenient for users searching existing applications and to open other links.
- Added third-party application jump user prompts.
- Added alert and application sharing functions.
- Fixed known bugs.
NEOLine wallet plugin
- Regulated wallet dAPI standards.
- Fixd known bugs.
- Updated the search button in the search bar.
- Adapted mobile UI.
Forpay asset custody system
- Optimized system architecture and improved stability.
- Increased support for BTC assets.
- Open asset custom freeze / thaw API.
- Updated API interface documentation for better reading experience.
Summarized daily active addresses, daily newly created addresses and daily cumulative created addresses on Neo in 2019.
- NeoSDK: Added modules to access local and NEL nodes. These nodes could be rapidly accessed through SDK calls.
- Research in progress for contract deployment methods on Neo3 TestNet.
- Teemo-NEO3.0 Updates:
- Fixed delay in balance display.
- Fixed delay in transaction verification.
- Improve the detection and display of abnormal information on transaction page.
- Improve the display of waiting status and abnormal information on transaction verification page.
- Adjusted UI issues.
- Implemented transaction model.
- Unified interface of contract interaction.
- Changed default branch from master-2.x to master-3.x.
- Unit Tests.
Presentations and events
Talked about Neo and neow3j at University of Applied Sciences Rapperswil, Switzerland, for M.Sc. students.
- Completed neo core audit.
- Completed neo-plugins audit.
- Pull Request source code security reviewed.
- December security pentest and open vulnerabilities review.
New launches and updates
- Neo employee Safety Awareness Campaign.
- Neo Charts adapted to updated Neo branding style.
Neo Network Monitor System
- Launched neonodes.io - a monitor using a lightweight architecture, which integrates the core monitor product functions, and will be open sourced afterwards.
- Almost completed testing and migration of MySQL on StateOfNeo, will be relaunched soon.
- Published 3 MainNet nodes and 3 TestNet nodes, please check neonodes.io for more information.
Neo Interactive Tutorial
- C#: Completed the script for first 2 lessons;
- Typescript: Slightly delayed, expected to complete the script for first 2 lessons and go open-source.
- Testing: It has been deployed on the server for joint debugging. A preview version will be launched in early January and internal testing will begin afterwards.
Approaching the end of the year, the NGD marketing team was busy with online activities such as Neo Live and holiday campaigns aiming to engage more projects in the ecosystem with the community. The Christmas campaign we ran on our official Twitter soon gained some popularity among the community. Looking back at 2019, we have been summarizing what we have achieved and what we could do better. Also, the team is busy preparing for some exciting activity lineups for early 2020, including details of the much anticipated Neo DevCon 2020. Stay tuned for another exciting year!
-- Adam Yang, NGD Marketing Content Manager
- Dec 12, Sergei Kopov, founder of 0xGames, joined Neo Live on Telegram and introduced the Neo version of the 0xWarriors game.
- Dec 12, Neo published a Neo Insights infographic titled “The State of Blockchain in China,” explaining how blockchain technology would solve social and economical issues in China and how local sectors are embracing the blockchain development strategy.
- Dec 19, NeoLogin co-founders, Thijs Maas and Albert Acebron, joined Neo Live on Telegram to introduce NeoLogin’s one-stop login solution for all Neo users to any game or dApp within the Neo ecosystem.
- Dec 19 - Dec 24, Neo hosted a “Santa Claus comes to Neo” Christmas campaign on Twitter. In collaboration with a few projects within Neo ecosystem, lucky followers received NFT prizes.
- Dec 21, Neo and TomoChain jointly hosted a meetup & workshop titled “Embrace & Connect” in Hanoi, Vietnam. John Wang, director of EcoGrowth at NGD, gave an overview of the Neo ecosystem, followed by project leaders showcasing various dApps and games on the platform.