R3E Network released v2.1.0 of NeoRust, a production-hardening update to the Rust SDK for Neo N3 and Neo X that focuses on making failures explicit and recoverable. The update, published on July 10, arrives less than a month after the breaking v2.0.0 release on June 17, which introduced unified error types and builder patterns.
NeoRust is maintained by Jimmy Liao, Neo core developer and R3E Network founder. The SDK, distributed as the neo3 crate on crates.io, provides a high-level API for building applications on Neo N3 and Neo X, covering wallet management, smart contract interaction, NEP-17 token operations, and transaction simulation. It is distinct from neo-rs, R3E’s separate Rust-based Neo N3 node implementation.
Error handling and retry improvements
The central theme of v2.1.0 is turning silent or generic failures into structured, actionable errors. A new DecimalAmount::try_from_raw method validates raw base-unit values from RPC responses and user input before they enter application state, replacing the now-deprecated from_raw. Deserialization routes through this validation path, preventing malformed amounts from propagating.
Provider-aware unified errors now preserve full error classification from the provider layer, including rate-limit, retry, validation, and network categories, rather than collapsing them into generic transport strings. JSON-RPC and provider errors expose helpers that indicate whether an error is retryable, whether it represents a rate limit, and whether a transaction was deterministically rejected.
The retry logic has been redesigned accordingly. Deterministic failures such as invalid transactions return immediately without retrying, while transient failures use capped exponential backoff. Rate-limit responses honor bounded Retry-After guidance from JSON-RPC error envelopes.
Transaction rebroadcasts are now outcome-aware: an already-known transaction is treated as accepted rather than an error, deterministic node rejections become transaction errors carrying the hash, and only transient provider failures trigger retries.
Neo X improvements
Callers can now build and submit Alloy TransactionRequest values directly for Neo X, removing a legacy u64 value limit imposed by the previous transaction wrapper. This enables full-width EVM transactions on Neo X. Existing NeoXTransaction serialization and send methods remain available for backward compatibility.
Security updates
Provider URLs now redact usernames, passwords, query strings, and fragments from both Display and Debug output, preventing accidental credential leakage in logs and error messages. JSON-RPC error data and HTTP response bodies are also excluded from general-purpose formatting.
The release updates openssl to 0.10.81 and cmov to 0.5.4, addressing high-severity OpenSSL advisories. The cargo deny policy now rejects yanked packages and narrows advisory exceptions, and example and CLI manifests are explicitly marked as non-publishable to restrict crates.io release scope to the neo3 package only.
Compatibility
The minimum supported Rust version has been raised from 1.83 to 1.91, enforced in CI. Developers pinned to earlier toolchain versions will need to upgrade before adopting v2.1.0.
The deprecated DecimalAmount::from_raw retains its zero-fallback behavior for 2.x source compatibility, and all Neo X entry points preserve their existing accessors alongside the new checked conversions. Integer conversions across contract, policy, bridge, and transaction paths now reject negative or oversized values instead of wrapping through unchecked casts.
Rapid iteration
The pace of development reflects the SDK’s push toward production readiness. Following the comprehensive code quality improvements in v1.0.3 earlier this year, R3E shipped three releases in under a month: v2.0.0, a same-day security patch in v2.0.1, and now v2.1.0. The release process itself was hardened during publication, with automation now validating package and changelog versions, requiring annotated tags reachable from master, and running formatting, linting, tests, and supply-chain policy checks before creating the GitHub release.
Liao announced the release on July 12, highlighting checked amounts, structured errors, smarter retries, outcome-aware rebroadcasts, full-width Neo X transactions, and safer error redaction as the key additions.
The full release notes can be found at the link below:
https://github.com/r3e-network/neo-rust-sdk/releases/tag/v2.1.0
neonewstoday.com