Skip to content

Releases: multiversx/mx-sdk-rs

sc 0.64.0, codec 0.24.0, chain 0.21.0, sdk 0.14.0, scenario-format 0.25.0

18 Dec 20:11
v0.64.0
537b478

Choose a tag to compare

  • Switched to Rust edition 2024, minimum compiler version becomes 1.85.
  • New payments API:
    • New objects: TokenId and Payment. Besides them having shorter names, they treat EGLD the same as all other ESDTs, making their handling easier. EGLD is always serialized as EGLD-000000.
    • Payment amounts are NonZeroBigUint, a new refinement type that prevents the value from being zero. This prevents at compile time zero-value payments from occurring.
    • New call_value methods:
      • all() - all payments, EGLD and ESDT;
      • single() - expect precisely one payment, and retrieve that payment. Crash for no payments, or for multiple payments;
      • single_optional() - expect either zero or one payments. Returns an Option of Payment reference;
      • array() - expect the exact number of payments and retrieve them as array.
    • MultiTransfer marker for forcing an ESDT multi transfer, even when not strictly necessary.
    • Deprecated EgldOrMultiEsdtPayment and call_value``any_payment.
    • ManagedVecRef renamed to Ref.
    • Token identifier display fix.
  • NonZeroBigUint implementation, including all common operators. Additional fixes for the BigInt and BigUint operators.
  • SDK - fixed an issue with parsing transactions with large values in SCRs.
  • Upgraded all dependencies.

sc 0.63.3

18 Dec 18:14
v0.63.3
b9e8498

Choose a tag to compare

  • Reverted the EsdtTokenIdentifier ABI name to TokenIdentifier.

sc 0.63.2

18 Dec 18:14
v0.63.2
9bacbe9

Choose a tag to compare

  • Legacy whitebox test block timestamp APIs renamed and made type-safe.

sc 0.63.1

18 Dec 18:14
v0.63.1
813927c

Choose a tag to compare

  • Blockchain API renames: epoch_start_block_* -> get_epoch_start_block_*, for consistency.
  • Set block timestamp methods renamed to block_timestamp_seconds and block_timestamp_millis, respectively, also for consistency.

sc 0.63.0, chain 0.20.0, sdk 0.13.0, scenario-format 0.24.0

17 Nov 17:23
v0.63.0
cba1251

Choose a tag to compare

  • New block info API, which returns timestamps as either TimestampSeconds or TimestampMillis, instead of just u64:
    • New types for measuring time, not only timestamps, but also durations (DurationSeconds and DurationMillis);
    • Previous functions deprecated in favor of the new ones as follows:
      • get_block_timestamp -> get_block_timestamp_seconds
      • get_block_timestamp_ms -> get_block_timestamp_millis
      • same for previous block and epoch start block
      • get_block_round_time_ms -> get_block_round_time_millis;
    • Support for TimestampSeconds and TimestampMillis when setting up blackbox tests;
    • Mandos support for millisecond timestamps, in both mandos-go and mandos-rs.
  • Rust VM support for fallible sync calls. Adjusted event logs to match the Go VM.
  • Contract build improvements:
    • The Rust version is now sent to the wasm build command via CLI, always. This overrides all other settings, giving the framework full control over the Rust version used.
    • The Rust version can be configured in sc-config.toml. This overrides all other settings. If missing, the current config will be detected and used explicitly.
    • The wasm-opt version can be specified in sc-config.toml. While sc-meta cannot install or change this version, it will crash if there is a version mismatch, signalling problems with reproducible builds.
    • The sc-meta standalone tool signals version incompatibilities when building contracts. Most importantly it writes a warning to console if multiversx-sc version < v0.58 and rustc ≥ v1.87.
    • Added a deprecated VM hooks checker mechanism. Currently only checks for legacy call value getters.
    • ABI build info improvements:
      • Added host;
      • Added LLVM version;
      • Rustc version guaranteed to match the one used for building the wasm binary;
      • Ensured historical backwards compatibility, back to the first version of the ABI format.
  • TokenIdentifier renamed to EsdtTokenIdentifier, since the old name was misleading. Old name kept as alias, for backwards compatibility.
  • Fixed proxy imports in snippets.

sc 0.62.0, chain 0.19.0, sdk 0.12.0

24 Sep 12:24
v0.62.0
1ba9c2d

Choose a tag to compare

  • BLS signing support in tests.
  • Gas simulations available in the interactor:
    • Simulation only;
    • Auto-simulate to find gas estimation.
  • sc-meta post-build validation improvements:
    • Fixed opcode checker to support call_indirect.
    • Opcode versioning in sc-config.toml and opcodde checker.
    • Post-build VM hook signature validation.
  • Proxy generator fix for enums with explicit discriminants.
  • Removed legacy typed mandos scenario and interactor syntax.

sc 0.61.0, chain 0.18.0, sdk 0.11.3

04 Sep 21:06
v0.61.0
ee29670

Choose a tag to compare

  • BLS crypto function support in the Rust VM. Functionality is guarded by the bls feature flag.
  • Managed buffer slices out of bounds handled in the framework.
  • Interactor - fixed log management.

sc 0.60.0, chain 0.17.0, sdk 0.11.2

08 Aug 18:57
v0.60.0
2a2c589

Choose a tag to compare

  • Block info hooks:
    • Rust VM support for the new block/round info hooks: getBlockTimestampMs, getPrevBlockTimestampMs, getBlockRoundTimeMs, epochStartBlockTimestampMs, epochStartBlockNonce, epochStartBlockRound;
    • Blackbox test syntax for setting all block info.
  • Cleanup after Barnard:
    • Removed the barnard feature. All functionality is routed to the new Barnard hooks, where appropriate.
    • Reverted routing non-fallible transfer execute through the fallible vm hook. This preserves pre-Barnard behavior for most cases.
  • sc-meta install mx-scenario-go retries several times in case of connection issues.

sc 0.59.1, codec 0.23.1, chain 0.16.1, sdk 0.11.1

24 Jul 08:53
v0.59.1
9aa8d44

Choose a tag to compare

  • Governance proxy improvements.
  • Codec: added support for using u128.
  • SDK/interactors:
    • Added logging for http requests and responses;
    • Fixed an issue with retrieving results from transactions with multi-transfer ESDT.
    • Fixed a VM query error handling issue.

sc 0.59.0, codec 0.23.0, chain 0.16.0, sdk 0.11.0

03 Jul 21:00
421b2e7

Choose a tag to compare

  • Support for Barnard features
    • barnard feature for smart contracts, can be enabled in the contract's Cargo.toml or sc-config.toml;
    • Blockchain API new features:
      • Code hash API;
      • Block info:
        • Timstamps in milliseconds: get_block_timestamp_ms, get_prev_block_timestamp_ms, epoch_start_block_timestamp_ms;
        • Block round time: get_block_round_time_ms;
        • Epoch start info: epoch_start_block_timestamp_ms, epoch_start_block_nonce, epoch_start_block_round.
      • ESDT info:
        • Token type API supplied by the protocol (get_esdt_token_type);
        • get_esdt_token_data provides the token type supplied by the protocol;
        • EsdtTokenType updated with new ESDT types (meta & dynamic tokens).
    • New transaction mechanisms:
      • Fallible synchronous call;
      • Fallible transfer-execute;
      • Both are integrated in the unified syntax;
      • Simplified several scenarios by routing all through the fallible tx VM hooks.
    • Optimisations:
      • Multi-transfer call value including the direct EGLD is now provided by the VM directly.
      • Direct conversion between ManagedBuffer and i64 (small integer) now provided directly by the VM.
  • Back transfers now support multi-transfers with EGLD properly
    • New BackTransfer structure contains back-transfers as a multi-transfer list;
    • It contains methods to filter and extract EGLD or single ESDT values;
    • New implementation of ReturnsBackTransfers and ReturnsBackTransfersReset, which work with this payment list;
    • ReturnsBackTransfersEGLD now supports multi-transfer;
    • Old implementations renamed to *Legacy.
  • New proxies for system smart contracts:
    • Governance system SC;
    • Delegation system SC.
  • Core crate updates:
    • Bech32Address:
      • Deduplicated and moved to the core crate, guarded by a std feature;
      • Support for custom HRP;
    • BLSKey and BLSSignature types, to help the interaction with the delegation contract.
  • sc-meta:
    • Support for building contracts with std library;
    • test-gen support for #[should_panic] annotation.
  • Validator processing in the SDK, including parsing from pem.
  • Event log name can now be empty or missing in declaration, the method name will be used in this case.
  • Fixed a bug in mandos-rs, it was not handling a failing scQuery properly.
  • Codec: improved multi-value length handling.