Protocol U025#

This page lists the changes brought by protocol U025 with respect to Tallinn (see Protocol changes). For the list of changes brought by Tallinn with respect to Seoul, see Protocol Tallinn.

For a higher-level overview of the most salient new features see the announcement blog.

An overview of breaking changes and deprecations introduced in protocol U025 can be found here. These changes are also listed below in their respective topical section, tagged with Breaking change or Deprecation.

The code is available in directory src/proto_025_PsGXQmSv of the master branch of Octez and the full documentation in this page.

Environment Version#

Protocol U025 uses environment version V16 (upgraded from V15). (MR !19389).

  • Environment V16 introduces signature V3 supporting ML-DSA-44 signature scheme and tz5 addresses. Note that signatures V2 are compatible with signature V3. Full changes can be found here.

Smart Rollups#

  • The rollup now validates imported DAL pages using the DAL parameters that were active at the time of publication. This aligns rollup validation with the protocol rules when DAL parameters change across protocol versions. (MR !20402)

  • The refutation game now includes an additional delay of one commitment period before starting, to allow for DAL page imports under dynamic attestation lag. (MR !20674)

  • The WASM PVM no longer depends on the protocol context for proof production. (MRs !20521, !20901, !20902)

  • The WASM PVM V6 has been repurposed for durable storage migration. (MR !20907)

Consensus#

Baker Selection: Smooth Weighted Round Robin (under feature flag)#

  • Implemented a new algorithm for the baker selection. The current Alias method is used to determine the validator that should bake a block for a given level and round. After the feature flag swrr_new_baker_lottery_enable is activated, the selection would use SWRR (Smooth Weighted Round Robin), which is a deterministic method to distribute the round 0 of all the levels for a given cycle. The higher rounds are then using a shifted version of this list. This method still remains proportional to the stake of the baker, and aims to reduce variability of block distribution, especially for small bakers. This feature is under a feature flag, and the feature flag is disabled on mainnet. (MR !20084, MR !21091)

Data Availability Layer#

  • Reduced attestation_lag from 8 to 5. (MR !19442)

  • Increase number of slots to 160. (MR !20457)

  • Increase slot size to 380_832 bytes. (MR !20457)

  • Introduced a new protocol parameter attestation_lags, with the value [1; 2; 3; 4; 5], to represent the list of lags (offsets in levels from the published level) at which bakers can attest the availability of a slot’s shards. Having multiple lags allows bakers to attest earlier when they download shards quickly, while still offering later opportunities if more time is needed. (MRs !19994 and !20429)

  • DAL parameters are now stored per protocol, allowing rollups to use the correct parameters when validating pages across protocol boundaries. (MRs !19674, !20567, !20569)

  • Slot attestation history storage has been optimized. (MR !20814)

  • Introduced a new optional field lag_index to DAL entrapment evidence operations. (MR !20360)

  • Introduced a new RPC GET /chains/<chain>/blocks/<block>/helpers/decode_dal_attestation/<bitset_as_decimal> which decodes a DAL attestation bitset (given as a decimal integer) into an explicit representation of attested slots per lag. (MR !21065)

  • Introduced a new RPC POST /chains/<chain>/blocks/<block>/helpers/encode_dal_attestation which encodes an explicit representation of attested slots per lag into a DAL attestation bitset. (MR !21094)

Enshrined Liquid Staking (under a feature flag)#

  • Added support for native contracts: contracts enshrined in the protocol that behave like smart contracts but are implemented directly in protocol code. Native contracts are addressable, can be called by other contracts, and support Michelson views. They are gated behind the native_contracts_enable feature flag, disabled by default on mainnet. (MRs !19378, !19583, !20093, !19709)

  • Introduced the sTEZ native contract, a liquid staking token implementing the FA2.1 standard. Users can deposit tez to receive sTEZ tokens, redeem tokens to request unstaking, and finalize redemptions after the standard unstake finalization delay. The exchange rate between sTEZ and tez evolves based on the protocol activity (staking rewards and slashing). (MRs !19901, !19963, !19974, !20192, !20276, !20546)

  • The sTEZ contract implements FA2.1 entrypoints: transfer, balance_of, update_operators, approve (with finite and infinite allowances), export_ticket, import_ticket, import_ticket_from_implicit, and lambda_export for ticket interoperability. It also exposes views: get_balance, total_supply, is_token, is_operator, get_allowance, and get_token_metadata. (MRs !20516, !20768, !20789, !20633, !20863, !20906, !21092, !20953, !20540, !20829, !21023)

  • The sTEZ contract emits FA2.1 events for transfers, balance updates, supply changes, allowance updates, and operator changes. (MR !20508)

  • Added RPCs for querying sTEZ state: total_supply, total_amount_of_tez, and exchange_rate. (MRs !20002, !20642, !19980)

  • Bakers can register and unregister as sTEZ delegates, and the frozen sTEZ balance is accounted for in the full staking balance. (MRs !20763, !20777, !21097)

Adaptive Issuance#

  • Added stez_frozen field to staking balance representation to track sTEZ stake allocations for baking rights computation. (MR !21097)

Gas improvements#

Breaking Changes#

  • Introduced a new format for the bitset representing baker-attested DAL slots, used in the DAL payload of consensus attestation operation, and protocol-attested DAL slots, used in a block metadata’s field "dal_attestation". The format is described in the header of the file src/proto_025_PsGXQmSv/lib_protocol/dal_attestations_repr.mli. (MRs !20734 and !20731)

RPC Changes#

Operation receipts#

Errors#

Protocol parameters#

Feature flags#

  • Added native_contracts_enable, that enables enshrined contracts in the protocol. The flag is disabled by default on the mainnet. (MR !19709)

  • Added tz5_account_enable, that enables tz5 ML-DSA-44 account support in the protocol. The flag is disabled by default on the mainnet. (MR !20680)

  • Added dynamic_lag_enable, that enables dynamic attestation lag support for the DAL. The flag is enabled on mainnet. (MR !20125, !20429)

  • Added swrr_new_baker_lottery_enable, that enables the SWRR baker selection algorithm. The flag is disabled by default on the mainnet. (MR !19978)

Cryptography#

  • Support for ML-DSA-44 signatures and introduction of a new account type whose address has the prefix tz5 (whose keys are ML-DSA-44 key pairs), under feature flag. In the protocol, tz5 accounts are under a feature flag tz5_account_enable, which is disabled by default on the mainnet. On testing networks where this feature flag is enabled, tz5 accounts cannot be registered as delegates, and tz5 keys cannot be used as consensus keys. (MRs !20251, !20680)

Bug Fixes#

Minor Changes#

  • Renamed internal storage First_level_of_protocol to Protocol_activation_level. (MR !19848)

  • Optimized cache lookups for stake information. (MRs !20706, !20291)

Internal#

  • Various WASM PVM refactorings: removed proof production dependency on protocol context, extracted in-memory PVM to standalone library, repurposed V6 for durable storage migration. (MRs !20521, !20679, !20901, !20902, !20907)

  • Refactored DAL code: moved code from raw context to dedicated module, introduced Dal_attestations_repr, optimized storage. (MRs !20717, !20227, !20814)