BLOG May 23, 2022
With the Polaris Launchpad hackathon underway, the Neo ecosystem was bustling with activity. As participating teams worked to refine their submissions, development communities planned new features and usability enhancements, with the newest batch of Neo developers in mind.
In the Neo core, a small step towards much greater heights was achieved with the addition of MODPOW and MODMOL. These methods are used in modular arithmetic, enabling key new use cases, including scalable and private applications using zero-knowledge proofs.
Red4Sec continued efforts to secure ecosystem projects, lending its expertise to review Flamingo Flund, GrantShares and others. Meanwhile, AxLabs made a breaking change to the assert keyword in Java contracts, better reflecting the intention of its use by preventing catchable exceptions from being thrown.
Whilst iterating on the Storage schema enhancements in the Neo Blockchain Toolkit, NGD Enterprise also turned its gaze to a new target—a TypeScript smart contract compiler.
The full Neo global monthly development report for April can be found below.
New opcodes land in NeoVM to enable advanced cryptography and zero-knowledge applications
MODPOW and MODMUL have landed in NeoVM, providing support for modular exponentiation and multiplication in smart contracts respectively. Initially proposed by NeoResearch members over three years ago, the new opcodes make it possible to serve the needs of advanced cryptographic applications on-chain, including RSA and zero-knowledge proofs.
Improvements for GetTransactionSigners and other changes merged into Neo core
Introduced in Neo 3.2.1, the ability to get transaction signers was introduced. The implementation missed a traceability check for the transaction, potentially making it easier for a sandwich attacker to find if a target transaction was included in the same block. This was resolved, in addition to a number of other fixes, including an overflow for the contract update counter, an issue related to committee size in policy checks, and a problem retrieving signers from StackItem when using the Rules scope.
Infrastructure and Tools Development
Reworked the neow3j compiler’s use of the assert keyword in neow3j to throw unrecoverable halts rather than catchable exceptions.
Corrected bugs across NeoGo and extended the NeoFS CDN service in preparation for an economic test on N3 TestNet.
Explored development of a new TypeScript compiler for N3, restructured Neo Express code for testability, and enhanced the storage schema previews for NCCS and Debugger.
Launched block explorer infrastructure for the T5 TestNet and developed custom network options to the NeoLine extension wallet for Chrome.
Neared completion of contract audits for GrantShares, GhostMarket, Flamingo FLUND, and other ecosystem projects.
Numerous updates landed in NeoGo over the course of the last month. In addition to protocol extensions for the Neo 3.2.x releases, the team implemented optimizations and fixes across the RPC service, notary subsystem, and CLI. Support for historic calls and bigger integers in functions was added to the RPC service, along with a new option to delay service launch until the chain is fully synchronized.
A new neow3j update landed in April which made the library compatible with Neo 3.2 releases. Version 3.17.0 brought with it improvements to the assert keyword, which now leads to an unrecoverable halt rather than a catchable exception in NeoVM. Developers are advised to review the changelog to familiarize themselves with breaking changes and best practices.
Smart Contract & dApp framework
NGD Enterprise continued to iterate on Neo Blockchain Toolkit through April, adding updates for compatibility with the upcoming Neo 3.2 release and working on updated storage schema previews for NCCS and Neo Debugger. On the side, a restructuring of Neo Express code was pursued, targeting better dependency management and testability.
The team is also exploring development of a brand new TypeScript compiler for N3 contracts, building on the work begun by the NEO Tracker team in the NEO-ONE codebase.
In April, NEXT launched a new node service for the N3 T5 TestNet, including block data parsing and a separate explorer page for the network. Additionally, the team committed updates for NeoLine. Bug fixes were implemented for the mobile wallet, while a new custom network function and wallet list refactoring were completed for the extension version.
Significant upgrades for NeoFS were completed by Neo SPCC in April, touching the platform’s contracts, SDK, node, and external services. In the SDK, the team implemented a code generator for API Protobufs, intended to provide a detailed and user-friendly interface for building Go applications that integrate with NeoFS.
The node was updated with an initial implementation of the Object Tree service and homomorphic hash switching, granting extended functionality and performance to NeoFS networks.
Neo SPCC published updates across all NeoFS Services, including CoreDNS, CDN, and the HTTP/S3 gateways. The HTTP gateway received improved docs, defaults, examples, and support for container nice name resolving, intended to improve the overall UX. In the S3 gateway, the team added the prototype Object Tree integration, in addition to its own bug fixes and documentation improvements.
The CDN changes included updates to the billing component, enabling payment per 10K requests, and an update to the CDN contract to handle DNS records of Edge Managers. The team looks to launch a CDN economic test on the N3 TestNet in the near future.
Auditing by Red4Sec (https://red4sec.com/en)
The Red4Sec team entered the final phases of code audit delivery for several ecosystem projects, including GrantShares, Flamingo’s new FLUND contracts, and NeoFS. Reviews of pull requests for recent PayProxy modifications are underway, and an audit has begun for a new project in the network, MyMuffin.