The core development team came out swinging at the start of the year by completing the first fully functional version of the oracle system. The native oracle is one of the most groundbreaking parts of the N3 platform, used both to aid with NeoFS integration and to connect dApps on the Neo blockchain with the outside world.
Yet it was not the only Neo subsystem to see substantial progress in January: big upgrades to the state root service, a newly modularized consensus plugin, and significant core refactoring through the addition of the native LedgerContract significantly closed the distance left between Neo3 Preview4 and the eventual N3 launch version.
With all the MPT functionality complete for the state service, Preview5 was ready to be released. Deploying in early February, Preview5 was the first version based on the .NET 5.0 SDK and the final build before the release candidates.
Preview5 was primarily focused on polishing the node up for the official TestNet launch. However, on the feature side, two new VM opcodes were added to enable developers to easily raise numbers to a power or calculate square roots.
Neo rounded out Q1 with the N3 RC1 release. As the first true representation of what to expect from the N3 network, the upgrade brought with it a number of new toys for developers. Integration of NeoFS into the oracle service made it possible for smart contracts to access objects stored on NeoFS for the first time, enabling a range of new potential use cases yet to be explored.
Community development progress through Q1 remained in lockstep with the core—a pattern that would be replicated throughout the rest of the year. The deployments of Preview5 and RC1 were each quickly followed with tooling updates to adapt to changes.
For the Russia-based Neo SPCC, these efforts were split between its two primary offerings: NeoGo and NeoFS. The former project is home to a fully-featured node implementation, a Go compiler for smart contracts, and a Go SDK for application integrations. NeoGo was consistently one of the quickest community offerings to add support for new functionality between core releases.
Milestones on the NeoFS side included the launch of the NeoFS TestNet and sidechain nodes, deployed In December, Neo SPCC followed suit with its own contract testing framework, added to NeoGo in addition to experimental Windows support and the team’s typical avalanche of updates to NeoFS and its related services.
NeoGo v0.98.0 was also the most highly performant node on Neo yet. The update increased its networked performance from an average 8,800 TPS, measured on v0.97.2, to 12,500 with LevelDB and 15,400 TPS when using v0.98.0 with BoltDB.around the same time as Preview4. The team also completed the object placement functionality of the NeoFS HTTP gateway, which paved the way for Send.NeoFS, a demo product that demonstrated the ability for users to upload and download from NeoFS using conventional web browsers. Other NeoFS-related updates through Q1 included garbage collection for storage nodes, a cache invalidation feature for the NeoFS CDN, and a basic income settlement scheme.
As the various SDKs and compilers in the N3 ecosystem began to mature in Q1, other community teams would contribute more generalized infrastructure, intended to help developers get the most out of the available tools. Examples included the first version of the Neo Test Framework, released by the Seattle-based NGD Enterprise and completion of all the base functionality for an N3 version of NeoCompiler Eco, a web-based service for contract development and testing built by the NeoResearch team in Brazil.
The next two months were a mix of code optimizations, bug fixes, and various ad hoc improvements. Efforts in April culminated in the RC2 release in early May, and RC3 was soon to follow, deployed before the month was out.
Notable changes across the releases included the standard smart contract update function, a new C# smart contract compiler to replace the previous MSIL-based compiler, the addition of JSONPath to aid oracle response filtering, and functions in the StdLib native contract for Base58Check encoding/decoding, to name a few.
June followed as a month of consolidation, where the core team would address bugs and error handling deficiencies in numerous parts of the codebase. Iteration continued as before on key components such as the oracle, RPC, and consensus subsystems, intended to prepare them for the formal N3 release, now on the horizon.
New features still trickled in as they had in previous stages of N3’s pre-launch development. The block header format was updated to make room for the new nonce field, to be used alongside the newly implemented verifiable random function in consensus. The nonce is a fairly generated random number, unique in every block.
This random number can be accessed in smart contracts via the GetRandom syscall, simplifying life for developers that need access to RNG for the operation of their own applications.
The Neo Tracker team, also hailing from Seattle, successfully deployed RC1, RC2, and RC3 builds of NEO-ONE in Q2. Designed for TypeScript developers, the end-to-end framework brought with it a full node implementation, contract compiler, and APIs to facilitate the creation of full-stack Neo N3 applications.
Between RC2 and RC3, NGD Enterprise shipped a range of new guides for developers, plus a new sample dApp, the N3 PetShop. The sample is based on an equivalent project, the .NET Pet Shop, that was created as a demonstration of the capabilities of the first .NET platform release. Built with the same intentions in mind, the N3 PetShop included an Electron-based frontend, providing a new full-stack example codebase for budding Neo developers to learn from.
Neo SPCC maintained the rapid development pace it has come to be known for. The milestone launch of the NeoFS RC1 TestNet was accompanied by a plethora of upgrades, both to accompanying components and the protocol itself. The most notable advancements could be found in write cache optimizations for storage nodes, plus the addition of an advanced reputation monitoring system, based on an extension to the well-respected EigenTrust algorithm.
Other highlights included various other miscellaneous infrastructure improvements from other communities. The Spanish team Red4Sec sought to improve its auditing capabilities for the core protocol by creating new fuzzing tools, while NEXT completed support for the N3 DAPI in NeoLine and released a custom build for use with private N3 networks. In the meantime, COZ released its documentation portal Dojo, and published a preliminary version of the WalletConnect SDK for N3, bringing the network-agnostic protocol to Neo for the first time.
July saw the core development team focusing on optimization, bug fixes, and the last few features for inclusion as part of the launch version of N3. Examples included the new get random syscall, used to retrieve a random number generated each block, functionality that had been newly baked into Neo’s consensus mechanism, dBFT.
RC4 was deployed half way through the month as a culmination of optimizations, bug fixes, and client-side compatibility improvements, including support for operating nodes on macOS. Thorough testing of previous versions had unveiled several areas of the codebase in need of more efficient implementations—binary serialization, JSON deserialization, and GAS limit calculations to name a few. RC4 addressed these inadequacies, ensuring the network was ready for public and enterprise use.
Development of the initial N3 version had reached its zenith. The first formal build was released on Aug. 1, and deployment of the N3 MainNet followed a day later. Two minor updates would also occur in the same week, addressing minor bugs and removing the problematic Refuel feature, but the stability of the new network proved the N3 launch to be a resounding success.
With N3 finally in production, developers that had been following its development and experimenting on the release candidate builds could finally begin planning deployment of their own applications.
During Q3, the benefit of having a reliable independent development community was on full display. N3 didn’t launch with a long wait ahead for developers before they could start building—if the tooling wasn’t already N3 compatible, compatibility arrived moments later.
Neo SPCC released NeoGo with full N3 MainNet compatibility, for use as a highly performant node, compiler, and SDK on the same day as the MainNet launched. It joined the network with its own council node using the Go client, and was later elected to the ranks of the consensus nodes.
NGD Enterprise also deployed same day updates to N3 versions of Neo Blockchain Toolkit components, giving developers all the resources they need to develop, debug, test, deploy, and explore smart contracts in one place.
COZ pushed a MainNet-compatible Mamba SDK build on Aug. 2, followed a day later with Boa for N3. v0.9.0 brought support for user-imported modules as well as the most recent feature additions for smart contracts.
AxLabs was also quick to follow the launch, publishing neow3j for N3 on the 5th. Alongside the latest compatibility changes, the update included new interfaces for NFT contracts and additional RPC calls for use with Neo Express features.
The infrastructure would undergo further refinement through September, adapting to N3 minor releases and introducing new functionality. AxLabs provided the first version of its new test framework in neow3j, facilitating automated contract testing, and NeoResearch officially launched NeoCompiler Eco for N3.
The Neo Tracker team completed its initial NEO-ONE node implementation in August, adding logging utilities, P2P message parsing, and better error handling on transaction failures. A revised build was published in September, commemorated with the launch of a TS-based public RPC node for community use.
Another notable unveiling was the NeoTrace preview, leveraging the recent improvements to N3 state functionality. The command line tool made it possible to capture individual transactions or blocks from N3 networks and use them to debug real executions with live network data.
The N3 launch did little to slow the core developers’ endeavor to refine the Neo platform. With protocol essentials already in place, attention was turned to the user/developer experience of the platform. New RPC methods granted access to state data, opening up new opportunities for infrastructure and dApp projects alike, and CLI enhancements made using the core node implementation more approachable.
These updates would be packaged as part of the v3.0.3 release, alongside fixes for bugs and further protocol improvements. Unit testing had uncovered a relatively slow synchronization time, corrected by addressing logic errors and boundary conditions which were leading to excessive network resource usage. The result was a halving of the time to sync a Neo N3 node directly from the network.
Likewise, a relatively sluggish offline sync speed was also noted, this time corrected through a new caching mechanism for ECPoint keys. The cache, plus related refactoring, led to an extensive speed upgrade, comparable to that of the online sync speedup.
The team also began design for a Witness Scope enhancements, including a new scope and a bug fix for CheckWitness use in custom contract groups. Unlike most developments until this point, these changes focused less on the developer experience and more on the general user experience of Neo, chiefly the ability for users to securely use applications on the network.
The final Neo N3 release of the year would be v3.1. Protocol updates for the new build were completed in November, and the equivalent node client update followed soon after in the early days of December.
Sweeping improvements were bundled with v3.1: modularization of the Merkle Patricia trie module, a NEP-11 token tracker to join the existing NEP-17 tracker, and an update to the .NET 6.0 framework were just a few of the big ticket items.
The new Witness Scope, Rules, was also completed, enabling other scopes to be combined with a set of conditions to provide an innovative way for users to protect themselves from unwanted side effects when interacting with Neo applications.
With core functionality complete, many development communities had turned their attention towards test infrastructure. AxLabs had begun the wave in previous months with the release of contract testing facilities in neow3j, which it subsequently improved with the ability to programmatically compile, deploy, and invoke multiple contracts simultaneously.
NGD Enterprise followed suit by publishing Test Runner, the latest component to join the Neo Blockchain Toolkit, plus a formal version of the NeoTrace utility. Although unit testing support for smart contracts had been available for C# developers throughout 2021, the Test Runner release made it possible for developers using other languages to leverage the same infrastructure.
Red4Sec made waves of its own in Q4, putting its auditing expertise to work for numerous teams in the ecosystem. Critical vulnerabilities were detected and resolved in the core repos neo-devpack and neo-vm, and others were rectified in the NeoFS C# implementation and Flamingo smart contracts. The team also audited community projects, including ToTheMoon, Humswap, and NeoFS contracts.
Various user-facing tools saw significant improvement through the final months of the year. Neo Tracker launched its eponymous explorer for N3, including a new version of its time-tested web wallet, and the NEXT team activated support for NFTs in both the Chrome extension and mobile versions of the NeoLine wallet.
As perhaps the most widely used and regarded wallet in the Neo ecosystem since the times of AntShares, support for N3 in Neon Wallet was awaited by many. An initial update with N3 support in Neon landed on Aug 6, and a built-in asset migration function was added later in the month. The next task was a deceptively large one—enable the connection between Neon Wallet users and N3 applications.
Pre-N3 launch, COZ had released the WalletConnect SDK, accompanied by a web wallet, Aero, designed to assist testing for WC-compatible apps. After completing N3 support and its migration feature, the team moved to add WalletConnect to Neon.
It arrived in November, making it possible for N3 users to participate in governance using its Quickvote portal and WC. Ledger users were also supported, thanks to the recent publication of the N3 Ledger App. This marked the first time that Neon Wallet users could access a dApp directly from Neon, however more work was required to complete the WalletConnect integration for use with more complex applications.
A week later, COZ released the Neon Wallet for mobile to the public for the first time, following an extended beta testing period. The next desktop update wouldn’t follow until December, with the release of v2.11.0 as an early Christmas present to Neon desktop users. The fleshed out WalletConnect integration provided support for custom signature scopes and multi-invoke transactions, enabling Neon’s integration with the majority of N3 dApps.
In December, Neo SPCC followed through with its own contract testing framework, added to NeoGo in addition to experimental Windows support. v0.98.0 was also the most highly performant node on Neo yet—the update increased its networked performance from an average 8,800 TPS, measured on v0.97.2, to 12,500 with LevelDB and 15,400 TPS when using v0.98.0 with BoltDB.
The NeoGo update was prompted by the recent Neo v3.1.0 milestone, which would be the final update to Neo N3 in 2021. The N3 TestNet was upgraded to the new version on Dec. 6, marking the start of a two week testing phase to assess the platform’s stability. Both the C# and Go node implementations demonstrated themselves to be fully equipped for use in production, and the N3 MainNet was consequently updated on Dec. 21.
Neo N3 has been launched, refined, and best-in-class tooling for dApp developers has been firmly established across all supported languages: C#, Go, Java, Python, and TypeScript. Now it’s time to ask what’s next for Neo, moving into the new year?
Based on the last year of development, users can assuredly expect new features and optimizations at the protocol level, and for innovative new tools to emerge for developer and user usage alike. But the real strength of Neo, the world’s first truly full-stack Web3 platform, lies in what is created on top of it, on the application layer. Now, thanks to the diligent efforts of core and community developers alike, there are no hurdles left in the path of Web3 entrepreneurs.
So, what’s next for Neo? That depends. What will you build?