Share on Twitter
Share on Facebook
Share on Reddit
Share via Email
Share on LinkedIn
Share via RSS

The upcoming Neo3 platform brings with it many promises—new features, better performance, improved developer experience, and the possibility of real decentralization. For the independent and globally-distributed Neo developer community, the new protocol also brought no shortage of challenges, as backwards incompatible changes forced existing infrastructure to be re-tooled and re-designed for the new environment.

In many cases, this involved the unavoidable and arduous process of digging through the constantly evolving Neo3 codebase and checking for the latest causes for new test failures. In others however, teams took the opportunity to reassess their existing projects and look for new approaches that could improve tool longevity and usefulness for developers.

Despite the difficulties, these endeavours are vital for the accessibility of the Neo ecosystem. Rather than being restricted to the core’s support for C# contracts, efforts from the developer communities will bring Python, Java, Go, JavaScript/TypeScript, and other languages to the platform in preparation for the Neo3 MainNet launch.

Alongside the concentrated push to adapt existing tools for Neo3, various teams around the world still found time to innovate and introduce brand new products or features to the ecosystem. This article will look back through some of the major contributions of Neo’s global development communities.

Key projects

COZ

COZ began its year with the release of Neon 2.4. Launched at the end of January, this update provided small improvements across different areas of the wallet. Most notably, it introduced the split key wallet import option, enabling users to take advantage of vanity addresses computed by third-parties without revealing the final private key.

Under the hood, contributors were also working on internationalization efforts, culminating in the Neon 2.5 launch in April. Designed to offer improved access to Neo for the international community, this milestone release added nine new languages to the product. In the meantime, COZ was also working on its migration plan, planning out the next evolution for Neon and how best to support both Neo2 and Neo3.

The team also rolled out improvements to Boa. The Neo2 version was updated to support the new standard debug format and ABI file required by the Neo Blockchain Toolkit’s Debugger and DevTracker. This enabled Python contracts to be used with the toolkit.

Development of the Neo3 Boa version also began making considerable progress. Various new features added to the compiler opened up new areas of the Python language in Neo3 contracts. Function conversion, local variables, arithmetic, while and for loops, if statements, and other operations were supported by the end of May.

COZ also had a strong showing in the second half of the year, beginning with a rebrand announcement. Alongside the rebrand, the team unveiled its new and updated products, including the Dora block explorer, the re-designed Neopython suite, and an upcoming mobile version of the Neon wallet.

The Neopython overhaul divided its numerous applications into two distinct parts, the Mamba SDK and Boa compiler. Preliminary integration was completed for Mamba to interact with Neo3 networks, and a Preview3-compatible version of Boa was released, complete with a working NEP-5 example.

Under the hood, Mamba also makes use of the universal VM, a C++ port of the Neo3 virtual machine by COZ. By the end of July, the VM had achieved parity with Preview3’s implementation, and Python bindings were made available to the public.

COZ would continue to iterate on its products throughout the rest of the year. Across September and October, a contract invocation history and completed API served to boost Dora’s usefulness. For Boa, the addition of try-finally support and an ICO template in Boa opened new doors for developers. In the meantime, Neon wallet updates and work on the mobile versions continue to prime the service for a smooth transition into Neo3.

The year was closed out with new Mamba and Boa milestone releases. The former added support for generic contract execution and example node functionality, whilst the latter made the tool compatible with the new NEP-17 standard and Preview4 network.

AxLabs

For the first part of the year, the Swiss developer community AxLabs focused on the Neo3 version of Neow3j, its toolkit for Java developers. They closely followed Neo3 development through the first part of the year, integrating transaction model changes, the new address format, and multisig support into Neow3j. Other key Neo3 adaptations soon followed, including Base64 script encoding, transaction attribute changes, and RPC method updates.

Whilst adapting Neow3j components to Neo3, AxLabs also found the time to roll out official support for Kotlin in the Neo2 branch, publishing examples to help developers with integration. Other general updates were also implemented for Neo2, including a NEP-5 class to simplify token contract interaction.

AxLabs’ work through the first part of the year culminated in the neow3j v3.3.0 release in October, a milestone achievement for the team which marked full compatibility with Neo3 Preview3.

Alongside the various devpack and SDK improvements, the release included a near full-featured Java contract compiler, enabling developers to begin work on their own Neo3 smart contracts. The team rolled out several examples to help users get started, including a NEP-5 template and NameService contract.

Also in October, the team rolled out its own spin on a browser-based IDE and node, designed to streamline the onboarding process for new developers. The new VS Code-based Neo Playground provides fast access to code samples, contract examples, and test infrastructure without requiring any installation.

In September, the team would further improve the compiler with new functionality, preparing for the rollout of debugging capabilities in the next month. On the SDK side, the contract API underwent a re-design, and the team began adding support for BIP-32 key derivation, opening the potential for hierarchical deterministic wallets.

AxLabs concluded its year with further updates to the compiler, adding exception handling and event support, and the team provided the first Java-based NFT (NEP-11) contract example. Moving forward, the developers set their sights on Preview4 and later Preview5 compatibility, the last major milestones before the final Neo3 TestNet.

NeoSPCC

The St Petersburg team continued to focus its efforts across its two primary offerings, NeoFS and NeoGo. Both saw sustained development throughout the year, with incremental releases rolled out on a monthly basis.

For the flagship decentralized object storage system NeoFS, the year began with a focus on stability and fault recovery. The team also began experimenting with a prototype reputation system, which it would later refine and optimize throughout 2020.

New key components were also successfully implemented, including the Access Control List to enable permissioning. Neo SPCC began to explore smart contract-based replacements to the network’s Inner Ring node system, later electing to use a sidechain-based solution to improve governance efficiency.

In February, the team would release an Amazon S3 gateway for NeoFS, offering an alternative to the HTTP gateway and simplifying integration for existing applications that use S3 storage.

NeoGo development across the first half of the year focused on the Neo2 and Neo3 node implementations. Throughout January and February, missing functionality was pieced together until parity with the official C# client was finally achieved in March.

To enable testing and comparison of the Go and core C# nodes, Neo SPCC also produced the neo-bench tool. The results of these benchmarks helped the team make further improvements to the Neo2 node’s networking and consensus subsystems, and demonstrated that the alternate implementation had exceeded the core in terms of network performance. The tool was made open source in March.

In April, the team began to concentrate more on NeoGo for Neo3. A substantial body of work saw the addition of the new P2P transaction format, native contracts, new VM opcodes, interop changes, and other protocol changes inherited from the core.

As with the Neo2 implementation, Neo SPCC achieved feature parity in its Neo3 node against the Preview2 version in June. Analysis of the node on the Preview2 TestNet showed complete compatibility in storage changes, a milestone achievement for the team.

Despite the heavy Neo3-related development, the team ended Q2 with some major updates for the Neo2 Go node. A new Websocket-based notification subsystem was added, intended to provide developers with the ideal backend experience, and the node also received updates to support the new cross-chain functionality added to the core.

Neo SPCC began the second half of the year by revisiting neo-bench, adding Neo3 support and testing the latest changes across both the C# and Go implementations. The results showed significant improvements that had been achieved through the year, exceeding Neo2’s TPS by a factor of 10. In September, the team would later exceed 10K TPS during a test run for a single Go node.

In July, Neo SPCC released DevEnv, a replacement for neofs-local to help developers run their own networks for local testing. It also marked the first time that NeoFS source code was made public, including NeoFS nodes, and introduced a major API rework for improved C# compatibility.

Development also continued on NeoGo, both for the node and its included compiler for Go contracts. Support for new features in Neo3 were a priority, and by August the team had achieved full compatibility with Neo2 and Neo3 Preview3 across its two NeoGo node versions.

Through the remainder of the year, NeoFS development boasted substantial progress. The team began testing various pieces of the NeoFS architecture on the Preview3 TestNet, and published the source code for updated components including the new sidechain smart contracts.

The NeoFS CDN introduced in April received a lot of attention between September and November, which will help ensure fast access to files stored on the decentralized network. New components such as an edge manager and cache invalidator were implemented, and the HTTP/S3 gates were refined in preparation for public usage. Test coverage for the CDN was finally completed in November, prompting the team to begin deploying its components to Neo3 Preview4, ready for some real-world testing.

NEL

In the first half of the year, China-based development team NewEconoLabs focused its efforts across two main products, the NeoRay contract debugger and NEL Scan blockchain browser. Alongside bug fixes and new utilities for the Neo2 variants, NEL spent considerable time porting its tools over for Neo3.

The browser saw several updates, including a new contract page for viewing a list of all deployed contracts and related details. NEL also released a few incremental updates to the Teemo wallet, primarily consisting of bug fixes and general UI/UX improvements. The team also slowly pieced together Neo3 support, achieving private chain compatibility in March.

New functionality rolled out for the debugger included internal contract transaction tracking for detecting operations such as contract update or delete, and the ability to switch between different networks.

After achieving Preview2 compatibility, the team worked to add template import functionality and new language/version selectors to help developers ensure they are testing in the appropriate environment. Completed in April, this work helped make better use of the new ABI/manifest information created during contract compilation for Neo3.

Other updates aimed to further refine the developer experience with NeoRay, with new features including a TestNet GAS faucet and an optimized syntax hinting system. By August, the team was close to compatibility with Preview3, but had prioritized analysis of the available TestNet data in order to ensure accurate debugging and to correct any outstanding issues.

Preview3 support for NeoRay was finally achieved in September. Since then, the team has focused on bringing NELScan and its backend services up to date with the latest Neo3 modifications.

NGD Enterprise

The Seattle-based NGD Enterprise (formerly NGD Seattle) made its first splash in 2020 with the release of the Neo Blockchain Toolkit v1.0 in February. The toolkit was created as a VS Code extension, packaging the Neo Express private blockchain tool and Neo contract debugger into a single cohesive framework for contract development, deployment, and testing.

Neo Blockchain Toolkit also includes the Visual DevTracker, another extension that provides a UI alternative for various commands in the toolkit and gives easy access to block data from different Neo networks.

In March, the NGD Enterprise team completed preliminary support for Neo3, and added support for Python contract debugging after collaboration with COZ. The DevTracker was also updated with a new contract storage explorer, giving developers an easy way to check for the current state.

From April through June, the team continued to update the Toolkit with powerful new features including the disassembly view and dynamic/cross-contract call support. The Neo2 and Neo3 variants were developed in parallel, with Preview2 compatibility achieved in the latter by June.

During this time, two new offerings attracted the majority of attention from the community. The innovative Time-travel Debugging methods promised to provide developers with a new level of power when it comes to uncovering issues in contracts.

NGD Enterprise also found the time to create a preview build of the Visual Token Designer, a sandbox environment for creating/modifying tokens and artifacts within the Interwork Alliance’s Token Taxonomy Framework. The preview release was rolled out in July.

For the second half of the year, Neo3 support became the primary focus. August saw the release of Preview3-compatible versions of Neo Express and the Neo Debugger, supporting new features including exception handling.

The new versions represented a substantial step forward for the toolkit, enabling contract execution trace capture for recording and playing back transactions from different networks. These releases also included the first real support for time travel debugging and dynamic calls. Version 1.0 of the Visual Token Designer was also released in August, offering basic support for interaction with the TTF, such as creation of token definitions and property modifications.

Through the remainder of the year, NGD Enterprise would continue to iterate on the Neo3 versions of its products. By December, the team introduced the community to a brand new testing paradigm. Dubbed fractal debugging, the new technology was introduced as a methodology for troubleshooting transactions that move off-chain or across different networks.

Designed to compliment the time-travel debugging functionality, the concept makes use of message tracing, log analysis, and data visualization techniques to make these more complex executions more accessible to developers. For the first implementation, the team concentrated on debugging for oracle calls, starting with pre-specified JSON return data with the aim to move to real world data retrieval during tests.

NeoResearch

By the beginning of 2020, the Brazil-based NeoResearch team had successfully guided Neo’s consensus mechanism from its original sporking implementation to the reliable 2.0 version. Despite this achievement, which guaranteed single block finality and expedited consensus node fault recovery speed, it was clear that the mechanism still has room to grow further.

Enter dBFT 3.0, designed to help improve resilience and mitigate its propensity for liveness failures by preventing the majority of missed block opportunities. NeoResearch began its year with a detailed evaluation of the current state of dBFT, and began creating proposals regarding the next steps.

In the meantime, the team also highlighted the need to be able to mathematically verify real-world observations. A Mixed Integer Linear Programming (MILP) model was developed to enable thorough study of the dBFT consensus mechanism, used in March to prove chain sporks in dBFT 1.0 and their absence in 2.0.

Through May and June, NeoResearch released three new projects that emerged during the development of its neopt project. The team produced a Neo3 core implementation in C++, released as the neo-cpp-core project, which is compiled using Emscripten to produce a JS/C++ SDK for use by developers, called lib-neopt-core. Finally, the JS/WASM version of lib-neopt-core is linked with secure JavaScript-based cryptography libraries, packaged into the neopt-sdk to give developers easy access to Neo3 features.

NeoResearch would also revisit its MILP model for dBFT in June and July, successfully migrating the 2.0 version to an alternative Python-based tool. A new model developed for the dBFT 3.0 proposal was also created, which the team used to test extensions and speed-up methods and test for spork possibilities.

For the latter part of the year, NeoResearch members spent their time working on a final specification for dBFT 3.0, which was completed by September. Following a rise in academic interest in other tools created by the team, such as the Smart Account Composer, the team also spent time revising its documentation to help new developers and students get started.

NEXT

For the duration of 2020, the NEXT team spent the majority of its development efforts working to constantly improve its two core projects, the NeoLine wallet and NeoTube browser. Bug fixes, new features, and backend updates all served to improve the user friendliness and general applicability of the products offered by the Chinese developer community.

In February, NEXT began development of Squirrel, a block analysis and storage program for Neo2. The tool was completed and published in April, providing a useful way for developers to parse Neo chain data to a MySQL database.

Around the same time, work also began on non-fungible token support, both for the NeoLine wallet and NeoTube browser. Integration was completed in May, making the services some of the first in the ecosystem to offer full support for viewing, storing, and transferring NFTs.

Following the launch of the Flamingo full-stack DeFi platform in September, the NEXT team worked to optimize its backend architecture, improving performance and introducing new functionality including asset exchange rates and a notification system. A range of bug fixes and new seed nodes rolled out by the team also helped contribute to the stability of NeoLine and NeoTube as user demand increased.

By October, the team had successfully integrated Neo3 testnet support into both versions of its wallet. To accompany the change, improvements designed to better support users with wallets on multiple blockchains were also added.

NEXT ended the year with a new version of NeoTube, developed specifically for Neo3. The new explorer provides useful new functionality including detailed transaction breakdowns and dedicated token/contract pages.

Neo Tracker

The Seattle-based Neo Tracker team made its first mark in 2020 with a new version of its eponymous block explorer. Released in March, the new version included a variety of improvements such as a new ecosystem page and improved NEP-5 tracking, resolving balance inconsistencies in the data displayed on the explorer. Additionally, the website was given a visual refresh, updating the logo and color scheme in accordance with the Neo brand overhaul in 2019.

With the Neo Tracker explorer updated and working correctly, the team shifted its attention to NEO•ONE, its end-to-end development suite for Neo dApps. Several large updates to the Neo2 framework were deployed during 2020, beginning with an upgrade in May which offered APIs to interact with C# nodes and enabled network fees to be attached to transfers.

Further updates through June saw the team begin planning the Neo3 upgrade, evaluating whether to use the core C# VM or COZ’s new C++ implementation. Alongside these changes, minor fixes to the Neo Tracker explorer improved its uptime, and a Moonpay integration provided an accessible fiat-to-NEO onramp within the site’s wallet module.

Work completed in June and July culminated in the release of NEO•ONE 2.7, the final milestone release for the Neo2 version. The update included a number of important bug fixes, such as incorrect switch statement executions and integer storage mismatches that were causing TypeScript contracts to fail when compiling or testing. Documentation for the project also went through a number of improvements in the meantime, and support for the Neo debug format included in the release paved the way for TypeScript support in the Neo Blockchain Toolkit.

For the second half of the year, the Neo Tracker team concentrated on the NEO•ONE 3.0 milestone release. An alpha version for Neo3 was published on October, featuring near-complete Preview3 compatibility and support for the core C# VM, selected to ensure contract execution and storage consistency with other nodes on the test network. The team continued to iterate on the release through November and December, pushing bug fixes to node storage and RPC services to prepare the framework for developers building on the final Neo3 TestNet.

O3 Labs

Though the original O3 Labs team was acquired by Bitcoin.com in 2019, the team’s existing products remained active under the custody of Neo Global Development. Following the handover, NGD sought to find a new developer team to take on the responsibility of maintaining popular projects including the O3 wallet and explorer.

In May, it was announced that the O3 Labs community had successfully transitioned to new management. The new Chinese team would aim to further upgrade and optimize the original products whilst introducing new services to the Neo community.

The O3 wallet beta relaunch was announced at the beginning of July, offering desktop versions for Windows, Mac, and Linux, and mobile versions for iOS and Android. The included changes were mainly cosmetic, with interface alterations intended to improve the overall user experience.

Behind the scenes, the team had also begun development of new functionality to introduce later in the year. In early September, new versions were released with a newly redesigned interface. Functionally the wallet remained mostly unchanged; one notable change saw Neo- and Ontology-based tokens split into separate sections.

This change was a precursor to improved multi-chain support, which would be rolled out later in the year beginning with Bitcoin and Ethereum. O3 Labs also worked on NFT integration in this time, providing an alternative option to the NeoLine wallet and further encouraging the usage of NFTs in the community. Bitcoin support was finally implemented in November, with Ethereum following soon afterwards in mid-December.