Protocol
This release introduces protocol version 24
#11073: Switch consensus protocol to Starfish in all networks
#11044: - Bump RocksDB version to 0.24.0
#11039: Add tx_data_bytes and signed_tx_bytes to AuthContext. Add the signing Intent representation to the iota framework.
Nodes (Validators and Full nodes)
#11126: Authority gRPC metrics were renamed for consistency (inflight_grpc => authority_grpc_inflight_requests, grpc_requests => authority_grpc_requests, grpc_request_latency => authority_grpc_request_latency)
Indexer
#10988: Unwrapped objects are now included in transaction object changes. A run-backfill object-changes-unwrapped command is available to populate historical data.
#11040: iota_tryGetObjectBeforeVersion JSON-RPC endpoint returns the bcs encoded object bytes when an object is found
#10875: - Pruning mechanism switched to use the per-table watermarks, allowing for independent pruning of every table with retention policies configured separately for every table (using already existing --pruning-config-path argument)
- Optimistic indexing now uses object based dependency check, making it resilient to pruning of old (dependent) transactions.
- The
--optimistic-pruner-batch-sizeCLI argument is deprecated and no longer used. Optimistic transactions are now pruned by the unified pruner. - RPC reads now detect querying pruned data ranges when possible and return appropriate error.
- More aggressive autovacuuming has been configured for pruned tables. Operators using large databases should ensure sufficient
shm_size(e.g.2g) on the Postgres container for effective vacuuming.
#11116: 🪛 Fixes an issue with execution errors not being propagated on the transaction response errors fields.
#11120: ⚠️ Maintenance required: Introducing a new migration in to remove the redundant objects_owner index following v1.20. Operators should update their IOTA Indexer instances and restart the writer service.
#11185: ⚠️iota-data-ingestion-core, the IndexerExecutor::run() is removed as part of CheckpointReaderV1 deprecation effort. Users shall migrate to IndexerExecutor::run_with_config() instead which will use the CheckpointReaderV2 as default. In this regard setup_single_workflow also had breaking changes, the remote_store_url accepts a RemoteUrl instead of a String.⚠️
JSON-RPC
#10988: Transaction responses now include unwrapped objects in the objectChanges field.
#10473: Expose effectiveCommissionRate as part of the IotaValidatorSummary in iotax_getLatestSystemStateV2 following IIP8
GraphQL
#10412: Introducing a new field effectiveCommissionRate in query paths for validators, following IIP8. Before IIP8 (i.e. protocol version 20) effectiveCommissionRate = commissionRate
#11120: ⚠️ Maintenance required: Introducing a new migration in IOTA Indexer requires updating GraphQL and restarting service.
CLI
#10866: Removed deprecated iota start, iota genesis, iota genesis-ceremony, and iota fire-drill stub commands
#10989: - Enables TLS on connections to validators over the gRPC
interface.
gRPC
#10989: - Enables TLS on connections to validators over the gRPC
interface.
REST API
#10566: ⚠️⚠️⚠️ The REST API has been fully removed in this release. ⚠️⚠️⚠️