Protocol
IOTA Protocol Version in this release: 10
#7722: Enable the new sequencer logic on Testnet and Mainnet. The new logic affects the order of execution of shared object transactions within consensus commits. See IIP3 for more details.
#7797: Increase the committee size to 80 on all networks
#7808: Enable new consensus features on the mainnet such as round prober, distributed vote scoring, new commit rule and garbage collection
#7811: Batching blocks when a block fetching request is received
#7456: Introduction of the gas price feedback mechanism and enabling it on Devnet. The mechanism informs senders of cancelled (due to shared object congestion) transactions about suggested gas prices they should have paid in order for their transactions to be scheduled and successfully executed. The suggested gas price is embedded in the sequence numbers (thus, they are different from those prior to enabling the mechanism) of congested objects, and it is included in the error messages of cancelled transactions.
#7991: Child objects mutations will not be counted as modified if the owner, value and type of the child objects stays the same between the start and end of a transaction.
#8046: Adds a new protocol config options to enable additional signature and linkage checks.
Nodes (Validators and Full nodes)
#7341: Added error categorization to the error metrics and added new metrics (validator_service_client_id_source_config_mismatch
, traffic_control_tally_error_types
)
#7510: Add support for TLS connections with self-signed cert on validator gRPC interface.
#7553: - Execution cache sizes can now be adjusted in the node config
#7831: - Nodes now download only the missing formal snapshot files instead of fetching the entire snapshot.
#7867: - Add backpressure to the WritebackCache
#7456: AuthorityEpochTables
now includes a new table deferred_transactions_v2
, which additionally holds suggested gas price for deferred transactions across multiple consensus commit rounds. At each consensus commit round, nodes also run a suggested gas price calculator that keeps track of congestion info and calculates the suggested gas price if the mechanism is enabled.
#8012: - Add metrics:
- spam_client_threshold
- error_client_threshold
- spam_proxied_client_threshold
- error_proxied_client_threshold
Indexer
🚨🚨🚨Indexer deployments🚨🚨🚨: this release includes a new Indexer database table, tx_wrapped_or_deleted_objects, which requires backfilling. Please follow the instructions provided here: Backfilling Instructions.
In case any errors appear, please refer to the Error Handling section of the documentation.
#7360: Fixes system-state values in epoch tables.
#7532: the iota-data-ingestion-core
supports reading checkpoints from hybrid historical storages. More information and examples on how to use the new feature can be found in #7424.
#7603: Adds a new RunBackfill
CLI command to backfill DB
tables.
#7995: Adds a new column epochs.first_tx_sequence_number
and repurposes epoch.epoch_total_transactions
to epoch.network_total_transactions
. This decouples epoch info from the checkpoints table, and eliminates db queries while extracting the data to persist. On the web interfaces (JSON-RPC, GraphQL) the view on the epoch data remains intact.
#7133: Introduces a new tx_wrapped_or_deleted_objects
table as part of a new database migration. Adds a TransactionFilterV2::WrappedOrDeletedObject(object_id)
variant to filter transactions that either wrapped
, created and then wrapped
, deleted
, or unwrapped and then deleted
the specified object. Introduces the new IndexerApi::query_transaction_blocks_v2
JSON-RPC API.
#8074: the iota-data-ingestion-core
CheckpointReader
applies the ReaderOptions.timeout_secs
also for historical checkpoint reads, previously only live checkpoint reads were respecting the provided timeout value.
JSON-RPC
#7766: vector<u8>
values for transaction inputs are parsed as raw vectors into the rpc response. Previously vectors with valid utf-8 codepoints were parsed as strings, which was error prone.
#7133: Introduces a new TransactionFilterV2::WrappedOrDeletedObject(object_id)
variant to filter transactions that either wrapped
, created and then wrapped
, deleted
, or unwrapped and then deleted
the specified object. Introduces the new IndexerApi::query_transaction_blocks_v2
JSON-RPC API.
GraphQL
#7564: Rename domain
to name
for IOTA-Names queries.
#7133: Introduces a new TransactionFilter::WrappedOrDeletedObject(object_id)
variant to filter transactions that either wrapped
, created and then wrapped
, deleted
, or unwrapped and then deleted
the specified object.
CLI
#7521: Added the -c
short flag for the iota client upgrade
command to pass the upgrade capability.
#7564: Rename domain
to name
in iota name
commands.
#7582: Add support for IOTA-Names address resolution in command arguments.
#6777: Add --sender
option to iota client call
and iota client ptb
commands, allowing users to override the default sender address when creating transactions. This enables compatibility with multisig workflows that require specifying a custom sender.
#7788: Fix the iota name availability
command by relying on entry existence and not target address set.
#7704: Introduces a new keystore v2 format. If a keystore v1 file (iota.keystore
+ iota.aliases
) is found then they are automatically migrated while keeping a copy of the old data named as (iota.keystore.migrated
+ iota.aliases.migrated
).
#7812: Fixed iota keytool multi-sig-combine-partial-sig
output to display multisigParsed details instead of a base64 string (still available from multisigSerialized field)
#7806: Support the --sender
flag for all relevant IOTA-Names CLI
commands.
#7842: Allow 0x0 address in Move.toml for package upgrades.
#7813: don't select coins with less than 0.009 IOTA for gas payments in iota name
commands
#7620: Add support for using a Ledger hardware wallet for all CLI signing operations. Use iota keytool import-ledger
to import an account.
#7881: Added iota client serialized-tx
, iota client serialized-tx-kind
commands and added support for gas sponsoring with --gas-sponsor <address>
and --tx-digest
to client tx commands
#6647: Make iota client split-coin
work with a single gas coin
#7918: Simplify the pay-iota
command by making the input coins optional.
#7958: Added --gas-price
and --gas-sponsor
flags to iota client ptb
. Also added support to accept multiple gas coins with --gas-coins
#7950: add default network environments { mainnet, testnet, devnet, localnet } to client.yaml
#8003: Removed obsolete prompt from iota client
if no client.yaml
existed
Rust SDK
#7429: Added ClientBuilder::tls_config()
to allow custom rustls
configurations. This is essential for platforms like Android that require special TLS initialization (e.g., using rustls-platform-verifier
).
#7840: Adds support for custom user defined headers in IotaClientBuilder
. You can define custom headers through the IotaClientBuilder::custom_headers
function to be added right before building.
#7456: ExecutionError
(and its equivalent ExecutionFailureStatus
) now contains a new variant ExecutionCancelledDueToSharedObjectCongestionV2
, which (besides congested objects) contains suggested gas price.
#7629: Add query_transaction_blocks_v2
and get_transactions_stream_v2
to support TransactionFilterV2
.