AxLabs released neow3j 3.24.2 on July 7, bringing the Java SDK into alignment with Neo 3.10 by adding support for the new RPC methods introduced in Neo-CLI v3.10.0. The release covers message signing and verification, multi-party transaction signing workflows, and DeferredRelay plugin integration, all without breaking changes to existing code.

neow3j is the second major SDK to add explicit Neo 3.10 RPC support, following NeoGo v0.120.0 in mid-June.

Message signing and verification

neow3j 3.24.2 adds SDK support for the signmsg and verifymsg RPC methods, enabling developers to sign arbitrary messages using wallet accounts and verify those signatures programmatically.

Both methods support an optional replay protection parameter. When enabled, the signing digest incorporates the network identifier, producing SHA256(network || Hash256(payload)) rather than signing the raw payload directly. This prevents signatures from being reused across different Neo networks, a security consideration raised during Neo Council discussions around the feature’s initial implementation in Neo-CLI.

Multi-party transaction signing

The release also adds support for the sign and relay RPC methods, which address a known pain point in Neo development: coordinating signatures across multiple parties for multisig transactions.

The workflow allows different signers to pass a ContractParametersContext back and forth between neow3j instances or between neow3j and Neo-CLI until all required signatures are collected. Once complete, the fully signed context is relayed to the network. This is particularly relevant for governance and enterprise custody scenarios where multiple parties must authorize a transaction before it can be broadcast.

The SDK’s existing ContractParametersContext class received significant enhancements to support these workflows, including full RPC exchange format documentation and improved null-safety.

DeferredRelay plugin support

neow3j 3.24.2 introduces Java-level access to the DeferredRelay node plugin, which was added in Neo-CLI v3.10.0. The plugin handles transactions with future validity windows, meaning cases where a transaction’s validUntilBlock value falls outside the current relay window.

Rather than requiring the sender to monitor block heights and manually resubmit, the plugin queues these transactions and automatically relays them once the validity window opens. Three new RPC methods are now accessible through the SDK: getpendingvaliduntilrelay for querying the plugin’s queue, and two variants of getPendingTransaction for retrieving individual queued transactions.

The feature pairs naturally with multi-party signing workflows, where the time required to collect signatures from multiple parties may push the transaction’s intended execution window further into the future.

Compiler fix and test updates

On the devpack side, neow3j 3.24.2 fixes a compiler version injection issue. Previously, snapshot builds could report unreleased version numbers in compiled contract artifacts, making it unclear whether a contract was built with an official release or a development build. The compiler now derives its version at build time, with snapshot builds correctly including a -SNAPSHOT suffix in NEF files and ABIs.

The release also updates test tooling to Neo Express v3.10.0 and upgrades the Testcontainers library to v2.0.3 for improved Docker compatibility.

Upgrade path

The release requires no code changes for existing users. Upgrading from v3.24.1 involves updating the version number in Gradle or Maven dependencies. Seven pull requests were merged for this release, totaling approximately 1,835 lines of changes across the SDK and devpack.

The full release notes can be found at the link below:
https://github.com/neow3j/neow3j/releases/tag/3.24.2