Protocol
This release introduces protocol version 19
⚠️ ⚠️ ⚠️ This protocol version introduces a new ChangeEpochV4 transaction kind which might appear in checkpoints as soon as the protocol version is activated on a network. As a consequence, all indexer instances must be upgraded to v1.16.x, as well as all custom indexers must bump their iota-data-ingestion-core dependency to at least 1.16.x to prevent disruptions! ⚠️ ⚠️ ⚠️
#9705: Adapt gas price feedback to the congestion limit overshoot feature and enable it on devnet. Add a separate gas price feedback mechanism for transactions using randomness and enable it on devnet.
#9453: Added metadata_in_module_bytes flag to allow the insertion of IOTA specific metadata in the serialized compiled modules (bytecode).
#9461: Add the publish_package_metadata. This enables the creation of an immutable object at publish/upgrade time when some known attributes (e.g., the authenticator function attribute) are found in the source code.
#9492: Add the flag move_auth and the protocol parameter max_auth_gas, which allow to enable the authentication of Abstract Accounts and define the maximum gas budget allowed for the execution of the authentication.
#9956: Switch consensus protocol to Starfish in testnet.
#9961: Enable passkey authentication support in mainnet.
#9175: Introduces a new variant of ConsensusTransactionKind to enable propagation of misbehavior reports
#9176: Introduces the VersionedScoringMetrics type, used to store misbehavior metrics about all authorities
#9177: Introduce Scorer component, which holds all info about metrics, reports and scores.
#9178: Introduce Scoring metric store
#9362: Enables misbehavior report validation
#9361: Introduce new scoring formulas for the validator score mechanism
#9363: Enables misbehavior report creation and dissemination.
#9424: Enables the creation of a new version of advance epoch transaction and new advance epoch function in iota-framework to modify rewards based on scores.
Nodes (Validators and Full nodes)
#8536: Introduce indexes pruner to authority store
#9492: Enable the authentication of Abstract Accounts.
#8530: Introduces the Scorer component
#9159: Introduce type ChangeEpochTransactionV4
Indexer
#9424: Enables a new ChangeEpochV4 system transaction which may appear in checkpoints for networks where score_based_rewards protocol config is enabled. Consequently a dependency bump is necessary for iota_data_ingestion_core library consumers (custom indexers) to prevent outages.
#9546: Enables a new ChangeEpochV4 system transaction which may appear in checkpoints for networks where calculate_validator_scores protocol config is enabled. Consequently a dependency bump is necessary for iota_data_ingestion_core library consumers (custom indexers) to prevent outages.
JSON-RPC
#8190: return error source information in dry run transactions
#9857: Don't set a next_cursor if !has_next_page
CLI
#9827: Add iota keytool tx-digest command to compute a digest for base64 encoded transaction bytes
#9875: Add execution error source to dry_run output
#9868: add iota keytool sign-raw command
#9443: Abstract Account support
- KeyStore can store account addresses (StoredKey::Account)
- iota keytool can handle account addresses
- iota client add-account and iota client sign commands
- iota client --auth-call-args and --auth-type-args options
- iota client ptb --auth-call-args and --auth-type-args options
#9895: Add iota keytool decode-sig command to decode base64 encoded signatures
Rust SDK
#9492: Add a new GenericSignature variant named MoveAuthenticator, which allows to authenticate Abstract Accounts.
#9857: Modified get_owned_objects() to allow more efficient select_gas() implementation that doesn't fetch all pages if not needed