Overview
This major release brings significant improvements to the MultiversX smart contract development experience, featuring a modernized payments API, enhanced type safety, and updated toolchain compatibility.
Rust Edition 2024 Upgrade
The SDK has been upgraded to Rust Edition 2024, requiring a minimum compiler version of 1.85.
This change is mostly internal, developers will only be affected by the minimum Rust version increase.
Note: because there are still some issues with wasmer 6 on linux machines for compilers starting with 1.89, we are making sure to keep compatibility with older compilers for a while longer.
Revolutionary Payments API
The new payments API introduces a unified approach to handling both EGLD and ESDT tokens, treating them equally for consistent and predictable behavior.
New Types
TokenId: A more concise and ergonomic replacement for token identifiers with consistent EGLD.
- EGLD is always serialized as EGLD-000000
- Shorter, cleaner code
- Unified handling across all token types
Payment: The new payment type that combines token identifier and amount.
- Type Safety: Uses NonZeroBigUint amounts to prevent zero-value payments at compile time
- Consistency: Treats EGLD and ESDTs uniformly
- Ergonomics: Cleaner API surface for common payment operations
Enhanced call_value API
- all() - Complete Payment Collection
- single() - Strict Single Payment
- single_optional() - Flexible Single Payment
- array() - Fixed-Size Payment Array
Advanced Features
MultiTransfer Marker
Force ESDT multi-transfer even when not strictly required:
Deprecated APIs
Should no longer be used, since they rely on the assumption that EGLD cannot be transferred together with ESDTs, which is no longer valid, since Spica.
- EgldOrMultiEsdtPayment → Use Payment
- call_value().any_payment() → call_value().all(), or other appropriate methods.
Enhanced Numeric Types
NonZeroBigUint Implementation
The feature was heavily tested, using a large suite of auto-generated tests. These tests have also increased the security of BigInt and BigUint operators.
Benefits:
- Compile-Time Safety: Prevents zero-value payments and operations
- Full Operator Support: All mathematical operations available
- Performance: Some operations, such as addition of two non-zero numbers require no runtime checks.
SDK Improvements
Transaction Parsing Fix
Resolved issues with parsing transactions containing large values in Smart Contract Results (SCRs):
- Better handling of big number serialization
- Improved transaction parsing reliability
- Enhanced compatibility with complex transaction scenarios
Dependency Updates
All framework dependencies have been upgraded to their latest versions, providing:
- Security patches and bug fixes
- Performance improvements
- Enhanced compatibility with the broader Rust ecosystem
Benefits Summary
- Enhanced Type Safety: Compile-time prevention of zero-value payments
- Unified Token Handling: EGLD and ESDTs treated consistently
- Improved Developer Experience: Cleaner APIs and better error handling
- Future-Ready: Latest Rust features and dependency versions
This release represents a significant step forward in smart contract development ergonomics while maintaining the security and performance standards expected in blockchain development.
More details: GitHub↗
Latest Releases
Do you need more information?
Discover the Ecosystem


