BLOG August 29, 2022
Developer conveniences are the primary deliveries from the Neo core in July, while plumbing for more significant enhancements to the platform continues under the surface. At the top level, developers will find a convenient new native contract method and improved asset details when using the TokenTracker API.
Deeper in the core, ApplicationEngine updates were to facilitate dynamic script execution at runtime, enabling new application scenarios, and Neo’s C# implementation of BLS12-381, the most widely adopted elliptic curve for zero-knowledge proofs, enjoyed its v0.1 release.
Community development teams followed similar patterns. Convenient new features such as Neow3j’s Hash160 and Hash256 constructors, support for NeoGo on ARM, and automatic standards detection in Boa show the same desire to improve DX and increase possibilities.
Like the Neo core, more significant progress occurs out of sight. Neo SPCC began implementing a large-scale refactoring of its RPC packages in July, designing new interfaces for network interaction and cutting out redundant code. Similarly, COZ began preparations for a Dora API rework, and broke ground on a new project to improve the accessibility of ecosystem project design assets.
The full Neo global monthly development report for July can be found below.
New native contract method for checking method exists in a deployed contract
The ContractManagement native contract received a new feature in July. The new “hasMethod” function in the ContractManagement contract makes it easy for developers to check if a method exists in a deployed contract without attempting to parse the ABI.
Contracts cannot be deployed if a method offset is out-of-bounds
An issue that allowed contracts with a method offset that is out-of-bounds for the contract script to be deployed has been found. Though the contract would be properly handled in NeoVM, contracts with malformed manifest data will now be properly rejected on deployment.
GetNep17Balance RPC method response improved in TokenTracker plugin
Previously, the TokenTracker plugin for NeoCLI would return an array of balances, including the token script hash, the integer amount, and the last block that the balance changed. A recent improvement has extended this interface with the asset’s contract name, symbol, and decimals for developer convenience.
Infrastructure and Tools Development
Completed Neow3j updates bringing Neo v3.3.1 compatibility, new convenience constructors, and fee optimization.
Initiated an RPC refactoring for NeoGo and enabled support for running on ARM hardware such as Mac M1 laptops.
Prepared a rework of the Dora API provider, began working on a method to standardize project design assets, and added automatic contract standards detection to Boa.
Improved NFT functionality, logic for selecting fast nodes, and improved wallet search functionality following user feedback on v3.5.
Reviewed fixes for MyMuffin and GhostMarket smart contracts and detected an error in Neo core which prevented use of Assert in safe methods.
COZ made progress on a number of features intended to support the developer experience of Dora, including a method to provide standard design assets such as token logos across all ecosystem tools. A ground-up refresh for the API provider is also in the works. In the meantime, the team will update its backend to a more scalable solution to meet current and future demands.
Updates to the Go node implementation centered on the RPC packages this month. Neo SPCC began to scope an overhaul of the RPC client, with new APIs designed to better fit the needs of backend use cases. Initial work completed so far involved tidying up packages and removing repetitive code.
NeoGo was also updated in accordance with Neo v3.4 changes, including iterator sessions and various native contract improvements. The team also provided test builds for ARM computers, making it possible to run NeoGo on Mac M1 devices. Other changes in July include documentation and CLI message improvements, compiler fixes, and interop updates.
AxLabs kickstarted the month with the release of neow3j 3.18.0, featuring full compatibility with the latest features introduced in Neo v3.3.1. Over the following weeks, the team progressed towards a minor revision that would bring new convenience constructors for Hash160, Hash256, and ECPoints from string literals, plus bug fixes. Contract writers will find more options for string concatenation, a fee optimization when initializing empty arrays, and a better developer experience with the RPC invokefunction method.
In July, COZ completed the work to support new Neo v3.2 features, including the getAddressVersion interop, Murmur32 hash method in the CryptoLib, and other new native contract methods. The team also implemented manifest groups and trusts into NeoMetadata and support for automatic contract standards detection for NEP-11 and NEP-17 compliant contracts.
Following the v3.5 update, NEXT gathered feedback from community members to identify further optimizations. In July, the team improved the logic for selecting fast nodes, allowing searches for listed wallets, improved NFT functionality, and optimized the NFT data list.
This month, COZ worked towards new releases of the desktop and mobile versions of Neon Wallet which will address various defects, update packages, and enhance performance. In particular, the mobile wallet will receive minor user experience enhancements that were identified during Consensus 2022.
Numerous updates were completed for NeoFS components in July. The node implementation received performance enhancements and bug fixes, plus improved documentation and configuration options. A fix for integer types in the NeoFS contract will also make it possible to build on 32-bit architectures.
The S3 and HTTP Gateways received their own changes, including ACL mapping issues, new health metrics, documentation tweaks and other quality of life improvements. Neo SPCC also prepared its new REST Gateway for public release.
Finally, the team improved the criteria of connection switching when using the Go SDK, plus various endpoint and documentation updates for NeoFS Services including Morph.CDN, the Net Monitor, and the Web Stat UI, with each nearing launch on T5.
Auditing by Red4Sec (https://red4sec.com/en)
In July, the Red4Sec team reviewed fixes of the Muffin token and Mufftroller contracts for the MyMuffin project. During the audit, an issue in the Neo core was uncovered which prevented the use of Assert in safe methods. Red4Sec also reviewed fixes for GhostMarket smart contracts.