November/December Technical Development Monthly Report
To close out 2021, the core development team focused on small-scale improvements, bug fixes, and developer conveniences. The recent popularity of NFT projects on Neo N3 led to the elevation of NEP-11 support in the core node, seen with the release of a new tracker module. The TokensTracker plugin supersedes the previous NEP-17 only plugin and can be configured to track either token standard and enable respective RPC methods.
Amongst the developers of tooling and infrastructure, the common theme was test frameworks. AxLabs, Neo SPCC, and NGD Enterprise each released new tooling to simplify automated testing of smart contracts.
While the former two were primarily designed for Java and Go developers, the latter took the form of a new tool built specifically to grant non-C# developers access to the C# test framework. Alongside the existing tools from COZ, N3 developers have never had better access to the resources they need to get new apps fully prepared for production use.
Neo updated to v3.1 with new witness scope and NFT tracking module
Through November, the core developer team and NGD worked towards the Neo v3.1 release. The update brought improvements to numerous parts of the core, with some changes producing new features for users and developers.
The new Rules witness scope gives even greater control over signature usage in transactions, providing users additional tools for safe interaction on the N3 network. The Rules scope allows other scopes and conditions to be combined and nested, making it possible to further restrict signature usage even across complex contract call chains.
Another new tool, the TokensTracker plugin, adds RPC support for new NEP-11 calls, making it easy to fetch an account’s NFT balances, transfers, or look up token properties. The module contains both the original NEP-17 tracker and the newly implemented functionality for NFT tracking.
Under the hood, optimization of the Task Manager and the addition of an ECPoint cache are expected to bring further improvement to client performance and synchronization speed. Neo v3.1 is also the first release to be based on .NET 6.0, the newest and fastest LTS release from Microsoft.
Neo v3.1 was released on December 2, then deployed to the TestNet four days later on December 6. Following a two-week assessment period, during which the implementation proved stable, the N3 MainNet was upgraded, taking place on December 21.
Testing underway for C# storage node and notary service for NeoFS
Most recently, the draft implementation of the C# storage node has been submitted and is undergoing testing. NGD also ported Neo SPCC’s notary service, an extension to the Neo P2P protocol that provides a signature collection service. The service aids in the process of building and relaying multi-signature transactions and is already applied within the internal operations of NeoFS.
Infrastructure and Tools Development
Refined WalletConnect implementation in Neon desktop and released the first Neon mobile version to the public.
Added a versatile new test framework to neow3j, making it easy to compile, deploy, and invoke any number of contracts for testing.
Achieved record high-performance milestones in NeoGo node and added a new contract testing framework for developers.
Published the Neo Test Runner, enabling non-C# developers and frameworks to run unit tests with the C# Test App Engine.
Performed contract auditing for various ecosystem initiatives and projects, including NeoFS C#, Flamingo, Humswap, and TOTHEMOON.
Enhanced the NFT transfer function in NeoLine wallet and redeployed NeoTube for improved global service.
Notable bodies of work completed to achieve full NeoCLI v3.1 compatibility included implementation of the new Rules witness scope, NEP-11 tracking functionality, invoked contract tracing, amongst others. The team also performed an Oracle service stress test in November, producing a report used to help inform the Neo Council in its decision to reduce Oracle request fees.
In early December, v0.98.0 was released, fully compatible with the latest NeoCLI v3.1 updates. Thanks to the latest round of optimizations, the new implementation clocked in at a record high 50,000 TPS in a single-node test. Other improvements included support for multiple multisigs in the notary subsystem, various compiler optimizations, support for base64 script hashes in util convert, and many more.
The team also refactored tests for the native contracts, adjusting them to make use of a new testing framework added with the native release. The test framework makes it easy for developers to write their own automated contracts tests in Go.
Explorer & Monitor
The N3 version of NeoTube received a few minor upgrades and bug fixes over the past months. A fix for a bug that caused page jumps to be logically disordered was resolved, and the website was redeployed and accelerated to provide a better service globally.
Smart Contract Compiler
COZ’s Python compiler was updated to v0.10.1 at the end of November, adding support for Neo v3.1 and Python v3.9. The new release featured new built-in methods, class properties on user-created classes, and a number of critical defect mitigations.
Like Boa, Mamba received a number of UX improvements through November and December. Of particular note is a new RPC client interface, making it easy for Mamba users to interface with Neo N3 blockchain nodes. On the side, team members also undertook a number of exploratory projects associated with new tools, such as automated SDK nucleation and an NFT initiative.
The neow3j toolkit received a range of extensions across November and December, the most notable improvement being the addition of a new test framework. The framework makes it convenient to compile and deploy any number of contracts for testing, with support for programmatic deployment configuration.
The milestone v3.14 build also packed in new functions for script building, RPC support for the new NEP-11 tracker module in NeoCLI, and a new deserializer for contract parameters. In the devpack, notable changes include support for multi-dimensional arrays, support for integers as keys in Storage methods, and the two new opcodes to improve the efficiency of struct and map construction.
Neo Blockchain Toolkit by NGD Enterprise
The release of the Neo Test Runner was the headline achievement for NGD Enterprise in recent months. Building on the unit testing framework already built into the Neo Blockchain Toolkit, the Test Runner is a mechanism designed to make it easy for non-C# developers to run unit tests against the same Test App Engine as the C# test framework. Other Toolkit components also received updates, mostly bringing them in line with the Neo v3.1 release.
COZ poured significant work into the Desktop and Mobile versions of Neon wallet. In November, the first public version of the BIP39-compatible mobile wallet was released, supporting both Legacy and N3 on launch. On the Desktop side, production integration of WalletConnect would be the most notable addition.
The implementation would undergo further refinement over the following weeks, resulting in multi-invoke and custom signature scope support landing in December. This made Neon desktop ready for general integration with Neo N3 dApps. In the meantime, the team also made substantial progress on bringing WalletConnect support to the mobile version.
Development work for the NeoLine wallet primarily focused on the mobile version, where NEXT added a GAS claim button, support for NEP-5 cross-chain functionality, and optimizations for the N3 NFT transfer function. The optimizations for NFT transfers were also implemented in the Chrome extension version.
Through November, the Neo SPCC team published new builds of various NeoFS components, including node v0.26.1, with a fix for the LOCODE database, contract v0.12.1, which fixed container name registration, and v0.17.0 of the HTTP gateway, which brought improvements to session token handling.
Other assorted upgrades included the implementation of a Restic plugin for the NeoFS backend, an improved continuous replication scheme, and integration with NeoFS.CDN for Send.NeoFS. The team also completed multipart upload support in the S3 gateway and began development of CDN-specific apps.
Further releases to core components and services would follow in December. A major node update would introduce response status codes and storage subnets, and the S3 gateway release would include the multipart upload feature alongside newly added CORS support. Neo SPCC also added an enhanced endpoint healthcheck module into CoreDNS and some minor bug fixes and optimizations in the storage engine.
Code audit from Red4Sec (http://red4sec.com/en)
Red4Sec split its attention between core protocol and ecosystem project auditing through November and December. In the former, issues in the neo-devpack and neo-vm were studied, and critical vulnerabilities that could affect funds in the C# implementation of NeoFS were resolved.
For ecosystem projects, the team applied its testing services to the Humswap, Flamingo, and ToTheMoon teams. Important issues were discovered and resolved in smart contracts by the latter two.
GrantShares DAO beta deployed to TestNet
Development efforts on the GrantShares DAO have chiefly focused on smart contracts. Following successful design discussions, through November AxLabs took the lead on implementation and completed several features: the creation of proposals, hashing of proposals, and increased test coverage.
Rounding out the year, the team has also completed the development of GrantShares smart contracts. Notably, a beta version of the DAO contract has now been deployed on the Neo N3 TestNet.
New enhancements to WalletConnect support by COZ
Having first released WalletConnect for Neo N3 in October, COZ has been hard at work adding in missing functionality and other improvements. Over the last two months, the team pushed an update to enable new features such as multi-invokes and the full range of witness scopes. Attention was also given to documentation to aid with integration for developers, and support for authentication via signing was implemented.
Neo official website: https://neo.org
Follow Neo on Twitter: @Neo_Blockchain