BLOG November 25, 2021
Since the beginning of Neo N3 Mass Migration, wallets new and old have completed the voyage to the N3 network. By the end of September, over 65% of native assets had successfully migrated. Neo users have signaled their readiness to tap into the potential of the platform, and developers in the Neo community worked tirelessly to arm creators of next-gen applications with the tools they need to succeed with their applications.
The distributed nature of development in the Neo ecosystem means the ecosystem continues to evolve in a variety of directions. Over the last two months, the general theme has been one of reflection—what is the state of N3 now? What do builders on N3 still need?
Each team in the ecosystem, from core developers to independent development groups, asks itself similar questions, and each determines its own answer. COZ's answer was to address the needs of the end user directly, continuing its efforts to usher in WalletConnect as the ideal protocol for connecting wallets with dApps in the Neo N3 ecosystem.
As it continues to onboard Java developers to the N3 platform, AxLabs observed the need for better testing facilities. In response, it built a new test framework for Java smart contracts, included as one among a plethora of other upgrades to the Neow3j library.
In the Neo core, attention temporarily turned away from new functionality to instead explore usability enhancements and unlock the latent power of existing features. The most notable example is the StateService, which received new RPC calls for accessing archived data. Having helped encourage the update, NGD Enterprise proved quick to capitalize. The team launched its new Neo Trace tool, a command line utility that uses the state service to capture transaction traces from any Neo N3 network, letting developers debug with real network data as if it was running on the blockchain itself.
Regular readers of the Neo Global Monthly Report will notice a change in format for this edition. We are updating the composition of these reports to make them easier for readers to consume: Instead of delivering one report every month detailing all activities within the Neo ecosystem, we will begin alternating each month between focusing on general progress and focusing on development.
This edition is the latter and will guide you through the most noteworthy development progress. Included below are updates from both the Neo core protocol developers and the independent global community groups focused on N3 ecosystem tooling and infrastructure.
Neo v3.0.3 released by core development team
In September, Neo’s core development team completed the outstanding tasks remaining for the Neo v3.0.3 release, published on October 8, 2021. Though intended primarily as a hotfix version to correct bugs, the update also included some new pieces of functionality:
- ECC encryption/decryption methods for the core
- Two RPC queries for accessing archived state data
- CLI user experience enhancements including color prefixing
The TestNet upgrade soon followed the release, allowing time for a week of testing before the planned MainNet update.
Next round of NeoFS components ported to C# undergoing testing
Progress was made over the last months of the C# port of NeoFS. The Storage node plugin has progressed through the testing stage, and auditing of the code for the InnerRing and CLI plugins has begun.
Once the remaining parts have completed testing and been released, NeoCLI users will be able to equip their nodes with the required functionality to play each of the available roles in the decentralized NeoFS network. Efforts are still headed by NGD, with assistance from Neo SPCC and code review contributions by Red4Sec.
New node optimizations and functionality in development
October saw the development of numerous Neo N3 optimizations. Particular emphasis was placed on the online/offline blockchain synchronization speed and network transmission performance of Neo nodes. Improvements and bug fixes reached several parts of the core codebase, including the NeoVM and the Oracle, StateRoot, and RpcClient services.
Notable improvements include:
- NGD’s Unit Testing team reported slow online synchronization of nodes. Consequent research into the TaskManager module uncovered logic errors and fixed boundary conditions in order to reduce network consumption. After the changes, the online data synchronization speed has doubled.
- The UT team also raised awareness of the current offline node synchronization speed, leading to investigation into the most time-consuming parts of related code. The introduction of an ECPoint cache to improve the efficiency of block persisting and refactoring of slow code has resulted in a doubled offline synchronization speed and, to an extent, TPS improvements.
VM member variable initial values
- An issue in the incorrect initialization of class members variables in smart contracts was uncovered. Fixes have been applied to solve the two resulting bugs, which affected both the default values of class members and initial assignment of member variables when calling the constructor.
- Support for catching of Execution Engine exceptions
- Logic synchronization of manifest classes in devpack
- Adding validators count in RPC Client
- A series of logic fixes for loading contracts, historical state, and empty values in stateroot
- A stricter transaction script checking mechanism, which increases checks of some illegal values
- Fixed a bug where the Oracle service would not automatically start after resynchronization
- Fixed missing exception fields in RpcClient.Execution
- Fixed the bug that MakeTransactionAsync does not check call result
Infrastructure and Tools Development
Launched N3 version of NEO Tracker with MainNet and TestNet integration, with support for exploring blocks, contracts, assets, and addresses.
Released Neon Wallet updates with WalletConnect 2.0 integration and a voting dApp to allow Ledger users to vote and earn GAS on N3.
Updated Neow3j with a new test framework for Java contract developers and began design and development of the community-focused GrantShares DAO contract platform.
Completed the initial NeoFS sFTP gateway prototype and NNS plugin for CoreDNS server implementation.
Unveiled NeoTrace, a new component of the Neo Blockchain Toolkit that allows developers to capture transaction executions from any N3 network and time-travel debug them.
Audited code across various ecosystem departments, including the N3 core codebase, the C# NeoFS port, and smart contracts for new and existing community projects.
Upgraded the NeoLine wallet with preliminary support for NFTs and enhanced the UX of the N3 NeoTube explorer in accordance with user feedback.
Revamped its online development environment NeoCompiler Eco for N3, allowing developers to write, compile, deploy, and test smart contracts without leaving the browser.
NeoGo by Neo SPCC (https://github.com/nspcc-dev/neo-go)
The highly performant Go implementation of Neo N3 received its usual torrent of updates over the last two months. Core protocol updates, RPC protocol fixes, and improvements to the multisig functionality in the notary extension were all completed. The team also implemented an experimental P2P state exchange extension.
Other notable changes include a heavily optimized System.Storage.Find implementation, dropped support for BadgerDB and Redis, and some new test modes for neo-bench.
Explorer & Monitor
Dora by COZ (https://dora.coz.io/)
Dora received a range of enhancements on the backend. Upgrades to the API have been implemented in order to support new features in the future, intended for release over the coming months. The TypeScript SDK has also been improved, and work has begun on a Python counterpart.
N3 NeoTube by NEXT (https://neo3.neotube.io/)
NEXT’s N3 blockchain explorer received updates on both the front and backend, with changes originating from community suggestions. In the frontend, an improvement to the asset decimal number display on the transaction details page was added. On the backend, the nodes were upgraded to v3.0.3 and the logic for contract information data analysis was optimized.
N3 NEO Tracker by NEO Tracker (https://n3.neotracker.io/)
October saw the NEO Tracker team successfully deploy the N3 version of its blockchain explorer. The majority of functionality enjoyed by NEO Legacy users over the years has found its way into the new N3 version of the site, including block, transaction, asset, and contract information. Moving forward, the team seeks to provide other useful information and add new enhancements to the wallet and overall user experience.
Smart Contract Compiler
Boa v0.10.0 was released in September, adding features that align with the team’s emphasis on dApp architecture. Additions in the new version include support for user-defined classes, interfaces to N3 native contracts, and Python’s builtin max and min methods with string and byte arguments.
The popular JS SDK by COZ received several updates over the last two months. A breaking change to the getversion RPC call from Neo v3.0.3 and unnecessary sorting of the witnesses in the TransactionBuilder were completed, along with a tweak to signing to accommodate Ledger.
Work began on a lightweight version of Mamba intended for use in a similar way to neon.js, COZ’s JS SDK. Once complete, Python developers will have a way to quickly integrate N3 into their existing applications. The groundwork for the RPC client has been laid, with a range of methods already completed.
neow3j by AxLabs (https://github.com/neow3j/neow3j)
The AxLabs team released Neow3j v3.13.1 in October with the initial version of its new test framework for Java smart contracts. Released under the devpack-test module, the functionality should make testing Java contracts more seamless by integrating with established testing tools. An integration test and corresponding example contract have been provided to demonstrate its usage.
Various other enhancements accompanied the test framework, including helper methods, compatibility changes for the Neo v3.0.3 release, and improved error reporting in the compiler.
NeoCompiler Eco by Neo Research (https://neocompiler.io/)
Neo Research’s in-browser development environment has been available in the Neo ecosystem since 2018, providing an avenue for new developers to get started without installing any software. In October, the team officially launched the N3 counterpart, complete with a UI design refresh.
Users can write, compile, deploy, and invoke C# smart contracts, view consensus messages, and access various useful type converters. Other improvements include updates to other projects from the team, including C++ and JS implementations of CSBigInteger which required fixes to the numerics calculation.
NEO•ONE by NEO Tracker (https://neo-one.io/）
Version 3.8.0 of NEO•ONE for N3 was published in September, with an N3 v3.0.3 compatible node implementation able to sync with MainNet and TestNet. The compiler and client packages received numerous fixes and upgrades, and a public node for RPC requests has been deployed at https://staging.neotracker.io/rpc.
Neo Blockchain Toolkit by NGD Enterprise
In October, the NGD Enterprise team released the neo-trace tool, a new addition to the Neo Blockchain Toolkit. The tool makes use of the new N3 state service upgrades and makes it easy to create a debug trace file from any transaction or block execution on an N3 network, including TestNet and MainNet.
When coupled with the source code for the smart contract being invoked, it can be used to easily recreate errors and bugs from real transactions and determine their origin in the Neo Debugger.
Neon by COZ (https://neonwallet.com/)
Neon Wwallet experienced a whirlwind of development over September and October, with six full releases and several release candidate versions. Beginning in early September, the team implemented Neo N3 Ledger support and Legacy to N3 migration, UI and address validation fixes, a patch for failing Legacy GAS claims, and preliminary WalletConnect 2.0 integration.
Development also continued on Neon Wallet mobile, soft launched in late August, with the goal of completing Neo N3 integration.
NeoLine by NEXT (https://neoline.io/en/)
NeoLine, one of the most commonly used wallets in the N3 ecosystem, received a batch of new features over the previous two months. Both the mobile and Chrome extension versions are now host to N3 NFT functionality, with support for balance checking, trading, and transaction information.
Other user experience improvements include a new wallet selection page for initial login, updates to the API, and began preparation for an upcoming v2 iteration with support for custom networks.
NeoFS by Neo SPCC (https://fs.neo.org/)
Two months of development effort in the NeoFS core yielded several new releases and general improvements. Node versions v0.24.1, v0.25.0, and v0.26.0 were released, with an RPC node sync state bug fix and various NNS-focused additions.
The team also worked to improve NeoFS usability, with better documentation for developers, API status codes for better error logging, and initial steps towards continuous replication for faster object synchronization after storage failures.
Upgrades were also pushed to the various NeoFS services. In September, the team released an upgraded S3 gateway with improved performance, POST upload support, and bug fixes, while completing the prototype of its sFTP gateway. An NNS plugin for the CoreDNS server implementation was completed, and contract improvements for DNS zone transfer were added.
October also heralded further upgrades, with CORS support and multipart uploading in the S3 gateway, ZIP streaming of folders for the HTTP gateway, and implementations of the CDN contract, edge-manager, and cdn-tool. The team is now working on further CDN components, specifically the analytic and billing tools.
Code audit from Red4Sec (http://red4sec.com/en)
Across September and October, Red4Sec put its auditing skills to good use, working across the Neo N3 core, NeoFS C# port, and various smart contract codebases. Two community projects had their contracts tested by the team—one new one, ToTheMoon, and one currently undisclosed contract migrating from Legacy to N3.
COZ spearheads WalletConnect adoption in Neo N3 ecosystem
Maintaining course from previous months, COZ has continued to enhance the Neon wallet & WalletConnect SDK in an effort to make the protocol production-ready in the Neo N3 ecosystem. The team proposed contract parsing code enhancements to the N3 Ledger app, and assisting with staging of WalletConnect support in the official Neo governance portal.
COZ has also begun the formalization process of Flyby hackathon projects, taking them from MVP status to fully-fledged ecosystem projects.
NGD Enterprise joins GBBC board to help establish global token standards
The merger between the InterWork Alliance, of which NGD Enterprise is a member, and the Global Blockchain Business Council was announced in September. The combination of the two organizations is intended to further drive the global adoption of standards, protocols, and schemas necessary for harnessing blockchain technology.
InterWork’s Token Taxonomy Framework will be the GBBC standard, established as a cross-industry set of specifications and making use of tools such as the Visual Token Designer. NGD was approved to join the GBBC Board by unanimous vote and received induction into the Swiss Registry.
AxLabs takes point on a new community DAO initiative
AxLabs recently began a new Twitter thread series dubbed “Neow3j Trivia”, highlighting various features of the platform and how developers can get started using the library to create their own smart contracts. The first thread introduced the powerful neo-express tool by NGD Enterprise, showcasing how Java developers can interface with its features via Neow3j.
The AxLabs team has also been a leading figure behind the GrantShares program, a new initiative intended to produce an N3 community DAO for funding projects. AxLabs conducted a workshop to gather perspectives from other community members and integrated the results into the platform’s design and development.