BLOG October 25, 2022
September Technical Monthly Development Report
Highlights
Another month of development has been completed in the Neo ecosystem, and with it come new conveniences and opportunities for developers. In September, Neo’s core developers completed the work to support dynamic scripts at contract runtime, creating new and unexplored possibilities for smart contracts. Other notable improvements include a new native contract method to simplify iteration over contracts on a network, and various enhancements for NeoCLI plugin modules.
On the infrastructure side, community teams also sought to provide conveniences of their own for developers and users alike. NEXT enhanced the NeoLine wallet to make it the first option for Neo users looking to transfer tokens via NeoNS names, and AxLabs began building out its NeoFS module for the neow3j SDK, which will open the door for Java applications integrating with decentralized storage.
Also this month, COZ initiated work on a Mamba SDK improvement to make invoking contracts over RPC more user-friendly, and Neo SPCC brought its historic invocation functionality to the NeoGo CLI, allowing builders to integrate more deeply with the Neo blockchain by accessing past states.
The full Neo global monthly development report for September can be found below.
Protocol Development
Neo Core
Support for running dynamic scripts at contract runtime merged into the Neo Core
Work over the past months to facilitate execution of dynamically loaded scripts at contract runtime was completed in September. This update enables new use cases and possibilities for contracts where users may want to submit custom logic to be executed. For security, these scripts may only be executed in read-only mode and can not affect state.
New API to retrieve a contract by its ID added to the ContractManagement native contract
The GetContractById method makes it possible for users to retrieve a contract using its designated ID, a number that is deterministically generated based on the historic deployment order of contracts on a Neo network. This makes it convenient for developers who wish to iterate over contracts, and is also useful in networks where non-native contracts have well known IDs but may have different contract hashes between networks, such as in NeoFS development environments.
Consensus logic modified to prevent unnecessary ChangeView delays
The DBFT mechanism used by consensus nodes received a small change in September. The improvement ensures that the round timer will only be extended if a commit is received from the current consensus view, rather than any previous views. This avoids the potential for desynchronization, caused by a node being late to trigger a ChangeView when chosen to process a RecoveryRequest.
Assorted improvements and bug fixes completed for Neo Modules
Several of the core Neo plugins received changes this month. A new plugin, SQLite wallet, was created to encapsulate the logic for handling .db3 wallets. An issue that causes node crashes in the NEP-11 tracker was resolved, and an error when reinstalling the ApplicationLogs plugin via the reinstall command was also fixed. The RPC Client’s getBlockHash method was also updated to correct the data type for the index parameter, and finally the DBFT plugin received a bug fix for prepare requests in recovery messages.
Infrastructure and Tools Development
Highlights
AxLabs
Designed and began implementation of a new neow3j module to allow developers to conveniently interact with NeoFS.
Neo SPCC
Enhanced NeoGo’s CLI with historic state invocation functionality and released the NeoFS REST Gateway to onboard web developers.
NGD Enterprise
Released Neo WorkNet, a new Neo Blockchain Toolkit component that allows users to fork public networks into their own private development instances.
NEXT
Integrated NeoNS into both versions of the NeoLine wallet, facilitating transfers to human-readable domain names.
Red4Sec
Started the auditing process for a new smart contract in the pipeline for the Flamingo Finance project.
COZ
Iterated on a new high-level facade in Mamba to make it more convenient for Python developers to interact with contracts or execute customized scripts over RPC.
Node
NeoGo by Neo SPCC (https://github.com/nspcc-dev/neo-go)
Development on NeoGo was primarily split between CLI enhancements, continuation of the team’s RPC refactoring, and general changes for compatibility with the upcoming Neo v3.5 release. In the CLI, users will find support for historic invocations and offline signing, and improved examples/documentation for client usage will help developers get up to speed with the latest RPC changes.
SDK
neow3j by AxLabs (https://github.com/neow3j/neow3j)
AxLabs turned its attention to NeoFS this month, scoping the design for a new module to handle all related interactions. Development on the SDK and API is now underway. Additionally, the team improved neow3j’s RPC error handling with more informative exceptions to improve developer experience.
Mamba by COZ (https://github.com/CityOfZion/neo-mamba)
In September, COZ began implementation of a new facade designed to make it easy for Python developers to invoke smart contracts over RPC. Initial efforts resulted in the implementation of base contract wrappers and helper functions for processing invocation results.
Smart Contract & dApp framework
Neo Blockchain Toolkit by NGD Enterprise (https://marketplace.visualstudio.com/items?itemName=ngd-seattle.neo-blockchain-toolkit)
NGD Enterprise unveiled the latest addition to the Neo Blockchain Toolkit this month. The Neo WorkNet tool makes it possible for developers to easily fork existing public networks such as MainNet and TestNet into a locally operated private network.
The feature works on the same principle as the Neo Trace tool, but on a much larger scale, and makes it possible for developers to locally test complex scripts and multi-stage contract interactions using real production data.
Wallet
NeoLine by NEXT (https://neoline.io/en/)
The Mobile and Chrome Extension versions of the NeoLine wallet received NeoNS support in September, making it possible for users to send and receive assets using their domain names as identifiers instead of public addresses. Bugs were resolved in the Mobile version, and the Chrome version was migrated to the Manifest V3 platform.
NeoFS
NeoFS by Neo SPCC (https://fs.neo.org/)
Neo SPCC completed a large assortment of NeoFS improvements in September. Core upgrades focused primarily on the NeoFS node implementation, providing access control in public containers, improved control over configuration management, and assorted other changes.
The S3 Gateway received a number of software quality improvements this month, in the form of bug fixes and better credential management. The REST Gateway was also launched in an effort to improve the experience of building web applications that integrate with NeoFS.
Audit
Auditing by Red4Sec (https://red4sec.com/en)
This month, Red4Sec began auditing a new smart contract planned for the Flamingo Finance platform, and continued to make their usual contributions to the Neo core.