IOTA Protocol Weekly - May 12, 2026

May 12, 2026: Testnet release v1.23.1-beta introduces protocol version 26, runtime feature flags, and node pruning improvements.

IOTA Staking Team 3 min read
IOTA protocol update
Share:

Testnet release v1.23.1-beta is live. This prerelease introduces protocol version 26, runtime feature flag queries, and several updates across nodes, JSON-RPC, the Rust SDK, and more. Not for production use.

Protocol Changes

  • Protocol version 26 is now active on the testnet.
  • Added is_feature_enabled() in iota::protocol_config to let Move code query protocol feature flags at runtime (#11443).

Node Updates

  • Pruning changes: epoch-db-pruning-period-secs config parameter removed. Pruning now runs automatically at every epoch transition, addressing a memory leak and ensuring consistent sync behavior (#11463).
  • State sync improvements: Peer tracking hardened with a new handshake protocol, stale peer handling, and periodic cleanup to prevent memory growth during extended syncs (#11451).
  • Debug format for ObjectId changed from 0x... to ObjectId("0x...") (#11331).
  • Periodic checkpoint progress status messages added; log spam reduced (#11450).

Indexer Changes

  • JSON-RPC can now fetch objects from fallback KV storage if the indexer database doesn’t contain the requested version (e.g., due to pruning) (#11312).
  • Heads-up: The old IOTA Indexer CLI will be removed in v1.24. It was deprecated in v1.3.1. Update any dependent scripts now.

JSON-RPC Updates

  • Dropped schemars/JsonSchema dependencies from iota-types. JSON schema generation moved to iota-json-rpc-types (#10508).
  • Sequence numbers now display in decimal format in error messages (#11326).
  • Fixed "Could not find the referenced object" errors for concurrent shared-object transactions (#11397).
  • IotaExecutionStatus::Failure error strings now align with ExecutionError variants. Field names in error messages updated (e.g., arg_idx β†’ argument) (#11395).

GraphQL Optimization

  • Mutation.executeTransactionBlock performance improved (#11439).

CLI Updates

  • Owner formatting updated to use the SDK's Display implementation. Example: Address(<addr>) instead of Account Address (<addr>) (#11390).
  • Argument::GasCoin now displays as Gas in CLI output and PTB snapshots (#11393).

Rust SDK Changes

  • Breaking changes: Several methods removed or renamed due to crate externalization. Key changes include:
    • SequenceNumber methods like next, increment, and decrement are now fallible. Replaced by iota-sdk-types::Version (#11326).
    • IotaAddress methods updated. Notable changes: random_for_testing_only β†’ random, to_inner replaced by into_bytes, and Default is no longer derived (#11330).
    • ObjectID methods removed and replaced by iota-rust-sdk::ObjectId (#11331).
    • Digest and related types are now re-exports of iota_sdk_types::Digest. Changes include renamed constants, updated methods, and a unified Debug representation (#11338).
    • GasCostSummary is now a re-export of iota_sdk_types::gas::GasCostSummary. Removed new_from_txn_effects (#11337).
    • Identifier, StructTag, and TypeTag are now re-exports of iota_sdk_types equivalents. Public API updated to use methods instead of direct field access (#11355).

Testnet users should focus on adapting to the protocol v26 changes and updating any scripts or tools that rely on the soon-to-be-removed IOTA Indexer CLI. Full details are in the release notes.

Sources: v1.23.1-beta, v1.23.0-alpha, v1.22.1

I

Written by IOTA Staking Team

Expert in IOTA staking, blockchain technology, and DeFi strategies. Providing actionable insights to help you maximize your staking rewards.

Share this article:

Related Articles

```