BLOG April 19, 2022
In March, the Neo core progressed towards a new milestone version, Neo 3.2. Updates were relatively scattered, split between bug fixes, C# compiler enhancements, and some new features. Developers building contracts will find a new addition to the native CryptoLib contract; an implementation of the Murmur hash function, a fast and cost-efficient option when hashing without cryptographic guarantees is required.
One of the most significant changes came in the form of a simple setting adjustment—by altering the maximum transaction per block limit, the N3 TestNet’s TPS limit will receive a substantial increase, ensuring transactions can be processed in a timely manner as more new decentralized applications begin to deploy on the network.
On the tooling front, NGD Enterprise made waves with the release of a new Debugger preview. The preview brought with it several enhancements to the debugging experience in the Neo Blockchain Toolkit, with a focus on changes in the storage view. Developers using compatible compilers (currently only C#) will be able to decorate their code with type information that will be emitted in the standard debug info files during compilation.
The Neo Debugger uses this data to provide an improved overview of contract storage and runtime value types, making it easy for developers to visualize contract data when debugging executions.
Neo SPCC also brought forward several improvements to the developer experience, both for its Go node/SDK implementation and NeoFS client. In the former, developers will find a new contract bindings generator to quickly interact with custom contracts via Go, while the latter received various UX improvements and bug fixes.
Several ecosystem projects underwent security reviews by Red4Sec this month, including contracts for NeoFS, Flamingo, and the new GrantShares DAO project championed by AxLabs.
The full March Neo global monthly development report can be found below.
Neo Compiler C# updated to support latest C# 10 syntax
The core compiler for C# smart contracts received an update that added support for the new namespace syntax introduced alongside .NET 6.0. Other changes in the compiler improved the contract naming option (now —base-name) and fixed a path bug that generated an exception at runtime.
N3 TestNet throughput limit primed for 10x increase
A modification to the MaxTransactionsPerBlock setting for TestNet will change the limit from 512 to 5000 transactions per block in the next release. This raises the throughput capacity of the network from 34~ to over 333 transactions per second, allowing nodes to completely empty a full 50,000 transactions mempool in only 10 blocks. A corresponding change in the DBFTPlugin config was also made to accommodate the new maximum system fee and size for blocks.
Murmur32 hash function added to native CryptoLib contract
Support for the Murmur non-cryptographic hash function was added to the native contract crypto library, introducing a new tool for developers to use on-chain when efficient hashing is required. The function is more GAS efficient than SHA256, making it a good choice for hash-based lookups where cryptographic security (resistance to reversal) is not required.
Bug fixes completed for issues in core Neo plugin modules
A number of issues were detected and resolved following research performed on the N3 TestNet chain. Out-of-memory issues caused during JSON processing are prevented through new limits to the result stack size in the RpcServer and ApplicationLogs plugins, plus GAS limits for the TokenTracker module. These limits can be adjusted in the appropriate config files. The team also addressed a local information leak in the Oracle service.
Infrastructure and Tools Development
Added struct annotation and inheritance support for instance classes, plus new utility methods in the SDK
Implemented a contract bindings generator for Go and assorted improvements to NeoFS components
Shipped the preview release of the latest Neo Debugger with storage schema enhancements
Implemented a GAS claim button in the NeoLine extension wallet for N3 and several bug fixes
Completed contract audits for GrantShares, NeoFS, and a review of recent Flamingo Finance modifications
March saw the release of neo-go v0.98.2, adding garbage collection for stale MPT state data and full support for Windows. The update included compiler enhancements, a contract bindings generator, and various other improvements.
Also in the new release, the team dropped support for Go v1.15, adding 1.18 support in its stead. Alongside bug fixes, significant time was also spent developing fuzzing tests and refactoring internal tests to use neotest more extensively.
Smart Contract Compiler
AxLabs released neow3j v3.16.0 in March. Developers using the new version will find new types supported for the instanceOf keyword, utility methods for creating contract groups and retrieving unsigned transactions, and support for struct inheritance, amongst other improvements and bug fixes.
Smart Contract & dApp framework
In March, NGD Enterprise shipped the preview release of the updated N3 Debugger, bringing new productivity improvements for developers. The changes primarily affect the storage view, where key/value byte streams are decoded into higher-order types for readability and ease-of-use. The Neo smart contract compiler for C# was updated to facilitate the changes; once compilers for other languages follow suit, all contract developers in the N3 ecosystem will be able to benefit from the new Debugger enhancements.
The team also made progress on a Neo 3.2 compatible version of the Neo Blockchain Toolkit, expected to ship near the Neo 3.2 release date.
NEXT’s Chrome extension wallet NeoLine received several upgrades this month. A direct GAS claim button for N3, dAPI tip logic optimization, caching adjustments, and bug fixes were implemented into newer wallet versions.
Neo SPCC completed several NeoFS upgrades over the past month, culminating in four module updates: neofs-contract v0.15.0, neofs-node v0.27.6, neofs-http-gw v.0.19.0, and neofs-s3-gw v0.19.0.
Contract updates resulted in improved GAS efficiency and raised the number of network maps that can be stored in the netmap contract. The node update predominantly focused on bug fixes, with new functionality instead being ushered into a v0.28 preview release. The S3 gateway received support for notification configuration, placement policy overriding, and other improvements, and the HTTP gateway received bug fixes and support for spaces in object attributes.
Developers using the neofs-cli will find new UX improvements, such as a progress bar for downloads/uploads and a new command for bearer token creation. Neo SPCC also worked to develop a RESTful API prototype and S3 Authmate UX improvements.
Auditing by Red4Sec (https://red4sec.com/en)
A number of new smart contracts have been scheduled for review by the Red4Sec team. The team completed an audit for the GrantShares stack, NeoFS environment testing, a review of recent Flamingo modifications, and has begun studying solutions for the PayProxy project.