June Technical Development Monthly Report
Developer convenience was a common theme in June. Both the core Neo repositories and community-developed projects received new functionality to address pain points or otherwise reduce the time spent by builders integrating Neo into their applications.
In the Neo core, modifications to native contracts and the RPC system were the most prominent improvements in this direction. A new native contract method to check for the existence of a method in a smart contract avoids the cost and development effort in parsing a full ABI, and two RPC methods for handling iterators make it possible for integrators to retrieve data from an iterator without running into node limits.
Similarly, adjustments to community infrastructure followed the pattern. NGD Enterprise introduced the new contract download feature as part of the Neo Blockchain Toolkit; a powerful tool that enables developers to test their applications against live MainNet or TestNet contracts without leaving the safety of a local development environment.
An update to the neow3j devpack by AxLabs introduced contract interfaces, a helpful new way for Java developers to interact with deployed smart contracts. This functionality naturally complements the Toolkit’s contract download feature; smart contract authors can download a MainNet contract to their Neo Express instance, then write a Java contract with a dynamic contract interface that can interact with the downloaded contract and its real storage data.
Other notable efforts on the developer convenience front include the addition of WalletConnect API support to the NeoFS SDK by Neo SPCC, and a system fee override introduced into the NeoLine dAPI by NEXT to grant flexibility to dApp developers.
The full Neo global monthly development report for June can be found below.
Minor native contract adjustments to improve developer convenience and correct bugs
Three small changes to native contracts arrived in June. Native contract methods are now ordered using ordinal comparisons, bringing ASCII-compatibility to avoid state differences that could be caused by differences in region settings.
Additionally, a bug that prevented notifications from being emitted when new governance candidates are registered was corrected, and the new hasMethod was added to the ContractManagement native contract. This method makes it easy for developers to check if a given method exists on a smart contract without the need to parse the entire ABI, reducing GAS costs in the process.
NeoVM optimized to improve bootstrapping speed, execution, and deployed errors addressed
Optimizations to the NeoVM were completed, improving offline synchronization speed. VM execution errors in specific scenarios were also resolved by altering the method used to initialize thread-relative static fields, and a new method offset check on contract deployment was added to prevent out-of-bounds errors during deployment.
Improved iterator handling over RPC lands in neo-modules among other enhancements
Several modifications targeting the core Neo plugins were submitted in June. The most notable change was to the handling of iterator data returned by a smart contract over RPC. Two new methods, traverseiterator and terminatesession have been added to allow developers to retrieve all the data from an iterator without running into node limitations.
Other changes included a bug fix for the StateService findstates method, the new getcandidates RPC method was added to improve developer convenience for governance-related integrations, and an increase to the number of consensus nodes that would respond to RecoveryRequests in the DBFT module, improving consensus reliability.
Infrastructure and Tools Development
Assessed proposed fixes submitted following review of the GhostMarket and Muffin project contracts and began the auditing process for Saffron Finance.
Implemented a new contract download feature into Neo Express, enabling easy integration testing with production smart contracts & storage records in local environments.
Streamlined the contract invocation experience for neow3j developers with the addition of new contract interfaces in the devpack.
Completed support for the WalletConnect API in the NeoFS SDK and prepared the Morph.CDN service for its upcoming public launch.
Refined the recent addition of Ledger hardware wallet support into its Chrome extension wallet and made the system fee field overwritable at the application-level in the dAPI.
Improved the user experience for Neon Wallet Mobile with native NFT support and PKI authentication via WalletConnect.
NeoGo by Neo SPCC (https://github.com/nspcc-dev/neo-go)
Neo SPCC’s alternate Neo implementation in Go was on the receiving end of a laundry list of changes. Alongside various commits that tracked Neo 3.3.0 and 3.3.1 updates, the team pushed a range of new features and bug fixes. Notably, performance optimizations to improve TPS degradations from recent protocol changes, bug fixes in the RPC subsystem, dBFT fixes, and a number of logging, build, and CLI improvements were completed in June.
neow3j by AxLabs (https://github.com/neow3j/neow3j)
Neow3j v3.18 was released at the end of June, bringing support for the various changes introduced in Neo v3.3.1. The most notable improvement to the devpack was the introduction of new contract interfaces to streamline calls to other deployed smart contracts. The team also adjusted String concatenation by making the operation exclusive to String types, intended to prevent differences in expected encodings in JVM versus the NeoVM.
Boa by COZ (https://github.com/CityOfZion/neo3-boa/)
The maintainers of the Python smart contract compiler for N3 identified a number of potential improvements during the Polaris hackathon and in development of internal projects such as Props. Examples include the addition of a method for converting ECPoint and public key values to the script hash form, and the ability to define the length of a bytearray in its constructor. The latest release of Boa also brings support for Python 3.10 and an assortment of miscellaneous fixes.
Smart Contract & dApp framework
Neo Blockchain Toolkit by NGD Enterprise (https://marketplace.visualstudio.com/items?itemName=ngd-seattle.neo-blockchain-toolkit)
The powerful new contract download feature arrived in the Neo Blockchain Toolkit this month. This new feature, developed by NGD Enterprise in collaboration with COZ, allows developers to easily download smart contracts and their storage records from the N3 MainNet or TestNet and add them to a local Express-based private network.
Contract download makes testing application integrations or writing smart contracts that dynamically invoke existing contracts much easier. Developers can remain in full control of their local development environment while using real production data to ensure correct behavior.
Neon Wallet Mobile by COZ (https://github.com/CityOfZion/neon-wallet)
COZ completed the core implementation of its mobile wallet in June and is now shifting its priority to refinement of the user experience. Several bug fixes and performance enhancements were completed, and new features were added: native support for NFTs, and support for PKI authentication via WalletConnect
NeoLine by NEXT (https://neoline.io/en/)
Through June, the NEXT team iterated on the new functionality added in the previous month. Ledger hardware wallet support was improved and several bug fixes were completed. A notable addition was the overrideSystemFee field added to the dAPI, allowing applications the option to customize system fees as necessary.
NeoFS by Neo SPCC (https://fs.neo.org/)
A large number of NeoFS core and service improvements were completed in June. In the core, Neo SPCC refactored the CLI to improve its maintainability and unify common interfaces. Support for the WalletConnect API was integrated into the SDK, and local storage optimizations were added to improve performance and lower resource consumption.
On the Service front, the S3 gateway received bucket listing optimizations, while the HTTP gateway saw buffer size tweaks to internal components to improve object upload/download speeds. The REST gateway received support for WalletConnect signatures, providing a native solution for controlling NeoFS assets from web apps. Finally, the team updated details and pricing information for the upcoming launch of the Morph.CDN service, alongside integration of edge zoning support.
Auditing by Red4Sec (https://red4sec.com/en)
This month, the Red4Sec team started the auditing process for the smart contracts of Saffron Finance and reviewed fixes submitted for the GhostMarket exchange GhostMarket and Muffin. Further, latest modifications to the PayProxy project are also undergoing review.