BLOG February 13, 2021
Neo started the new year strong with the release of Preview5, a milestone achievement. As the most evolved form of Neo to date, Preview5 introduces a further simplified architecture via the new LedgerContract, and enables oracle usage for the first time through the Oracle service module.
This release contains the majority of the new functionality planned for Neo3’s final revision and will be a close match to the formal TestNet version, scheduled to launch in March. One of the last remaining major tasks, integration with NeoFS, has been a key point of development through January.
Slowly but surely the grand vision for Neo is becoming reality. Thanks to the efforts of both core and community developers alike, Neo is on track to onboard the next generation of blockchain developers and cement itself as the most user- and developer-friendly blockchain platform.
Through January, the Neo core developer team completed the development of the Oracle service module. This will be installed by oracle nodes, allowing them to serve oracle requests. Since the oracle contract and related logic were already released in Preview4, developers will now be able to begin testing smart contracts that access external resources in a decentralized manner.
State root was also a high priority task for the team to complete, using MPT to ensure block execution consistency. Included as part of the Preview5 node upgrade, the implementation introduces the necessary storage and validation logic and adds the required RPC methods/commands for interaction with the state service.
January also saw the introduction of new logic, such as the new native LedgerContract. This will store core data such as blocks and transactions, replacing various database tables to further simplify the code in Neo3. The decision to introduce this new contract led the team to release Preview5 in February, to be followed by a formal TestNet planned for March. These networks will be almost identical, the only major difference being the integration of NeoFS in the latter. More detailed information can be found here.
The state root implementation for Neo3 was split across three main parts. One part (#431) focused on storage logic and relevant P2P handlers, whilst another introduced RPC methods/commands (#475) for fetching the current state, verifying proofs, and more. Both of these parts were successfully merged and released as part of the Neo3 Preview5 node upgrade.
The final part of the implementation introduces necessary validation logic (#470). Currently, under review, this PR will add the validation service to establish consensus on state root and enables nodes to store only the latest state in order to remain lightweight.
In January, the core developer team completed the Oracle service (#326), the module responsible for enabling nodes to fulfill oracle requests. Various optimizations and fixes were applied throughout, and initial tests have shown good results across various scenarios. Now merged, this marks the completion of Neo’s native oracle functionality.
NeoFS is a distributed, decentralized object storage network developed by Neo SPCC. Built with Neo blockchain integration in mind, NeoFS aims to support the shift away from third-party storage providers, providing users with complete control over their data. The service is designed to work with Neo smart contracts, allowing for truly decentralized applications, and can also be used as a content delivery network. Users can rent out storage in return for Neo GAS tokens or use GAS to store files in the network.
NeoFS was initially created in Go, however, NGD is currently working to transplant NeoFS logic to C# for improved integration with C# nodes. Over the past month, the team has added the Audit modules to an FSNode plugin and updated the unit tests for the Inner Ring. The full integration with NeoFS is expected to be completed in March, ready for the formal TestNet.
In a bid to further simplify the codebase for Neo3, the new native Ledger Contract was created. This contract is the new home of any functionality related to the ledger itself, such as Block/TrimmedBlock and Transaction. The new approach gives a more unified design to the protocol, which functions predominantly through native contracts, with the implementation removing over 800 lines of unnecessary code.
Minimal impacts upon performance were noted during testing, leading to it being merged into the master branch. Since the changes also affect other repos, compatibility PRs were created for neo-node (#724), neo-modules (#477), and neo-devpack-dotnet (#440). All three have been merged, completing the preliminary LedgerContract implementation.
Modularity has been a recurring theme in Neo3’s development, and January was no exception to this type of work. Since consensus logic is only used by a subset of all full nodes on the network, the decision was made to move it from neo-core to a new plugin, dBFT module (#2212, #453). This also improves the future upgradability of the component and also opens up the ability for users to swap in different consensus mechanisms in their own Neo networks. Only nodes with the dBFT plugin will be able to run consensus logic in Neo3.
The team also worked to introduce a new Neo Name Service (#2201, #422) in January. The goal of this new system is to replace the hex strings used for contract/account addresses with human-readable strings that are easy to remember. Users will be able to initiate transactions directly to a certain domain name, providing a more user-friendly alternative to public addresses. The service is implemented as a new native contract, NameService.
Other noteworthy changes include the ability for plugins to send their own custom messages (#2101), and the addition of a new opcode, POPITEM, into the Neo system (#387, #427). This opcode will remove the specified item from the list on the top of the stack, and then push that item into the stack.
Infrastructure and Tools Development
Achieved two milestones by successfully concluding the Perp Trading Competition and launching FIP#2: Redesign of the Flamingo asset flow.
Progressed development of its compiler and client for Preview4, which will enable TypeScript developers to build and deploy Neo3 smart contracts.
Developed NeoLine and NeoTube in step with progress on Neo3 Preview5, including the scheme design for the Neo3 dAPI, voting, and migration.
Launched the NeoFS TestNet and sidechain nodes alongside Preview4, and completed the first implementation of HTTP gate object putting.
Updated NeoCompiler Eco for Neo3, featuring a visual redesign by Brazilian agency CodeLabs in order to improve user experience for developers.
Shipped initial releases of the Neo Test Framework, introducing industry-leading support for test-driven development and pushing Neo as the most developer-friendly blockchain platform.
Flamingo Finance by NGD
Between January 9th and 22nd, Flamingo attracted more than 500 community members around the world to participate in the Perp Trading Competition. The competition concluded with more than 1000 daily trades and a total trading volume of more than $4 billion USD. Rewards were distributed to the Top 39 ranked participants. During the competition, several areas requiring improvements were identified. The team is already working to improve the underlying mechanisms and overall user-friendliness of the protocol.
Towards the end of the month, the Flamingo team also introduced FIP#2 to improve the overall usability and asset interoperability of the platform. Under this proposal, significant changes will be made to optimize the cross-chain asset flow process while maintaining value pegging to the original asset.
NeoGo by Neo SPCC
Changes to NeoGo in January were mainly focused on adapting the node to match core Neo changes. Notable additions include POPITEM support, consensus updates and extensible P2P payloads, and CALLT plus its associated app engine changes.
Explorer & Monitor
Dora by COZ
In January, COZ updated the Dora backend to bring it in line with the latest changes from Preview5, support for manifests and events in the process. A Neo3 front end for users has also been completed and will be released in the near future.
NeoTube by NEXT
The team completed its adaptation of the NeoTube explorer to Preview4. A redesigned UI for the contract page also accompanies the changes, with solutions for page data display issues.
Smart Contract Compiler
Boa by COZ
Boa received a number of updates in January. In addition to alignment with the latest Preview versions, support for user-defined manifest fields and new interops for iterator, enumerator, and storage were added. Alongside the changes, unit tests and the test-driven-development framework and documentation were enhanced. Python 3.7 is now also supported, in alignment with Mamba, and ICO template and Atomic Swap contract examples are now available.
Neon.js by COZ
Towards the end of January, COZ released Neon.js v5.0.0-next.5, providing Neo3 Preview4 compatible support for the most commonly used blockchain interaction patterns.
Mamba by COZ
COZ updated its Mamba SDK for Python to align it with the Preview4 release and began working on compatibility with the more recent Preview5 release. Accompanying updates to the Blink Universal VM and BigInteger libraries were also completed in order to support new Neo3 Preview releases.
Smart Contract & dApp framework
neow3j by AxLabs
Over the last month, the team released neow3j 3.6.0 and 3.6.1, making the neow3j SDK, devpack, and compiler fully compatible with Neo3's Preview4 release. Since then, the team has worked to adapt neow3j to Neo3 Preview5, with the goal of bringing the project to the same maturity as the C# smart contract tooling in the Neo ecosystem.
NEO•ONE by NEO Tracker
Through January, the team worked to close in on the NEO•ONE v3.1 release, which will support Preview 4 compatibility and includes its TypeScript Smart Contract Compiler. With this release, users will be able to write a Smart Contract in TypeScript and deploy it to the Neo3 Preview4 TestNet.
Neo Blockchain Toolkit by NGD Enterprise
NGD Enterprise rolled out Preview4 compatibility for Neo Blockchain Toolkit components, and began work on support for the latest Preview5 release. deVadoss also published an article in the Neo Column, introducing the concepts behind test-driven development and how the team is supporting this approach in the Toolkit. The article can be read in full here.
Neon by COZ
Neon Wallet contributors rolled out a number of updates to the desktop wallet through January. Dutch language support was introduced, and a number of performance tweaks were added. The team also corrected parsing for the SWTH token, and completed work on a new design iteration. The mobile version of Neon wallet is now in qualification.
NeoLine by NEXT
NEXT upgraded the mobile and Chrome extension versions of its NeoLine wallet, achieving compatibility with Neo3 Preview4. In the background, the team also fixed a few known bugs and optimized network performance for the application.
NeoFS by Neo SPCC
The team’s efforts in January culminated in a NeoFS TestNet launch, testing its sidechain nodes alongside the Preview4 TestNet. Notable updates include a control service for monitoring health, the network view of the storage node, and managing its status. Neo SPCC also added support for multiple RPC endpoints and implemented data audit settlements in preparation for the next release.
Other improvements include a basic income economy model for storage nodes, and a new pre-configured docker image of the storage node, intended to speed up TestNet deployments. Work was also completed on the various NeoFS services, such as a draft implementation for object putting through HTTP gates.
The team also published an article comparison NeoFS to Storj.
NeoCompiler Eco by Neo Research
In January, the Brazil-based Neo Research team accomplished almost all outstanding milestones for NeoCompiler Eco. The team pushed a new design for the neo compiler website, making it the new standard for Neo3 and introducing a redirect for the old Neo2 version. Nodes used by the service are all up to date with the master branch, and other behind the scenes infrastructure improvements have unified its blockchain interaction through neo-cli rather than using third party interfaces.
Marketing and Operations
Jan 3th - 5th, Da Hongfei was interviewed by CoinTelegraph for a series of new-year articles. Da shared his views on Bitcoin, blockchain adoption, and industry trends.
Jan 5th, Da Hongfei, Yuan Gao, and Longfei Wang were invited to participate in the end-of-year special edition of “Crypto Intelligence Bureau” by TuoniaoX and shared their views on public chains, DeFi, and Neo3.
Jan 8th, John deVadoss published a Neo Column article that delves into the practices of Test-Driven Development (TDD), and why his team has built out support for TDD in the Neo Blockchain Toolkit.
Jan 18th, Da Hongfei joined the Asian Financial Forum online to share his views on the “State of Blockchain.”
Jan 20th, Neo Foundation developer community specialist, Longfei Wang joined an O3 Live AMA and discussed the various new changes in Neo3, its all-in-one suite of tools, and how it will offer a seamless developer experience.
Jan 29th, Da Hongfei published an article titled “Next on Flamingo: The Blueprint of DeFi Interoperability” to illustrate the rationale behind Flamingo and Flamincome’s upgrade proposals.
The Switcheo network underwent a node upgrade to improve its overall performance, while Demex added support for Ledger.
Translateme.Network launched its commercial API version 1.0. Web-services can use the API to provide translated versions of their content to users in three available languages at costs lower than existing competitors.
Blockchain-Platform-as-a-Service provider Morpheus Labs listed two Neo dApps last month: Flamingo.Finance and PolyNetwork. These two solutions will be available to developers that use the Morpheus Labs AppLibrary. Developers using the Morpheus Labs collaborative development environment can also use the Neo Blockchain Toolkit.
Poly Network continued to grow its interoperable protocol network as it announced partnerships with Binance Smart Chain.