Protocol Tallinn#
This page lists the changes brought by protocol Tallinn with respect to Seoul (see Protocol changes). For the list of changes brought by Seoul with respect to Rio, see Protocol Seoul.
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 Tallinn 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_024_PtTALLiN of
the master branch of Octez and the full documentation in
this page.
Environment Version#
Protocol Tallinn uses the same environment version V15 as protocol Seoul.
Smart Rollups#
Data Availability Layer#
Adaptive Issuance#
Michelson#
Added a new instruction
INDEX_ADDRESS. It provides a unique identifier of typenatfor values of typeaddress, stored in the context. (MRs !18866, !18943)Added a new instruction
GET_ADDRESS_INDEX. It returns the unique identifier of typenat optionfor values of typeaddress, if the address has already been indexed throughINDEX_ADDRESS; it returnsNoneotherwise. (MR !18866)Improved error message when using non packable values with
PACK,FAILWITHandEMIT, and in parameters of partially appliedLAMBDA. (MR !19889)
Gas improvements#
RPC Changes#
Breaking change Updated RPC
GET /chains/<chain_id>/blocks/<block_id>/helpers/validatorsto group delegates by level. The returned list contains one element for each queried level (by default, only the current level), and contains five fields: thelevelitself, theconsensus_thresholdrequired for the current level, theconsensus_committeeof the current level, theall_bakers_attest_activatedwhich indicates the activation status of the “All Bakers Attest” feature, anddelegateswhich is the list of validators for that level. Each element of this last list contains the fields present in the previous version of this RPC:delegate, “slots” which have been renamed torounds,consensus_key, andcompanion_key(optional). Also include new fields for delegates,attesting_power, with their attesting power for the level, andattestation_slot, their slot for the given level. (MRs !18931, !18959, !18984, !19886)Breaking change Updated RPC
GET /chains/<chain_id>/blocks/<block_id>/context/issuance/expected_issuance. Output fieldbaking_reward_bonus_per_slothas been replaced withbaking_reward_bonus_per_block, andattesting_reward_per_slotwithattesting_reward_per_block. Their respective values are consequently 7000 times as high as before (since there are 7000 slots per block). (MR !18959)Added a new RPC
GET /chains/<chain_id>/blocks/<block_id>/helpers/baking_power_distribution_for_current_cycle. It returns the total baking power and baking power distribution for all the active delegates, that are used to determine consensus rights for the current cycle. (MRs !18019, !19898)Added a new RPC
GET /chains/<chain_id>/blocks/<block_id>/helpers/tz4_baker_number_ratio?cycle=<cycle>. It returns the portion of active delegates that sign with a BLS key. Thecycleargument, if omitted, defaults to the current cycle. (MRs !19093, !19710)Added a new RPC
GET /chains/<chain_id>/blocks/<block_id>/context/destination/<destination>/index. It returns the index of the given destination (e.g. tz1, Smart Rollup addresses, etc.), ornullif the destination has not been indexed by the opcodeINDEX_ADDRESSyet. (MR !18944)Added a new RPC
GET /chains/<chain_id>/blocks/<block_id>/helpers/all_bakers_attest_activation_level. It returns the first level at which the All Bakers Attest feature activates. If this level is not yet set, it returnsnullinstead. (MR !19757)
Blocks and block receipts#
Breaking change Removed obsolete field
adaptive_issuance_votefrom the block header, and fieldsadaptive_issuance_vote_emaandadaptive_issuance_activation_cyclefrom the block metadata. Note that the adaptive issuance activation cycle (which is 748 on mainnet) can still be queried via the RPCGET /chains/<chain>/blocks/<block>/context/adaptive_issuance_launch_cycle. (MR !19215)Added fields related to consensus in block metadata:
attestationsandpreattestations. They can benullwhen the corresponding consensus operations are not required in the block. Otherwise, they contain three fields: thetotal_committee_powerandthreshold, as described in the consensus documentation, and therecorded_power, summing the power of all (pre)attestations of the block. (MR !19835)Added
all_bakers_attest_activation_levelfield in block metadata, which returns the activation level of the “All Bakers Attest” feature if the feature is set to activate. The field remainsnullotherwise. (MR !19835)
Operation receipts#
Added a new field
address_registry_diffto the operation metadata. It contains the addresses that have been newly indexed through the opcodeINDEX_ADDRESS. (MR !18870)Breaking change Updated attestation and preattestation receipts metadata. The
consensus_powerfield is now divided in two parts: an integer fieldslots, which corresponds to the number of slots attributed to the delegate, and represents its consensus power until “All Bakers Attest” activates, and an optional string fieldbaking_powerparsed as an int64, which is the baking power of the delegate, and represents its consensus power once “All Bakers Attest” activates. This last field is not in the receipt until “All Bakers Attest” activates. (MRs !18915, !19835)
Errors#
Protocol parameters#
6s Block Time (MRs !19045, !19473)#
Breaking change Block time has been reduced from 8 seconds to 6 seconds on mainnet (on ghostnet, it remains unchanged at 4 seconds). That is, a block can be produced with a delay of 6 seconds with respect to the previous block, if the latter is at round 0.
This reduced block time comes with the updates of multiple related protocol parameters:
Parameter (unit) |
Old (seoul) value |
New value |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Smart rollup protocol parameters have also been updated accordingly, in order to preserve the same durations as in the previous protocol. For example, the challenge window is still two weeks.
Parameter (unit) |
Old (seoul) value |
New value |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Note that the smart_rollup_max_active_outbox_levels has not been
updated, because the current storage implementation of the executed
outbox message in the Layer 1 does not allow for a safe update. As a
consequence, the maximal allowed period for withdrawal of assets from
smart rollups to Layer 1 has been reduced from ~14 days to ~10 days.
Feature flags#
Replaced the feature-controlling parameter
all_bakers_attest_activation_levelwithall_bakers_attest_activation_threshold. This causes all-bakers-attest to activate as soon as the ratio of bakers that use a tz4 consensus keys exceeds the specified threshold, set to 50% in protocol Tallinn. (MR !19093)
Bug Fixes#
Breaking change Updated cache functions to include the context when needed. Previously backtracked gas costs for some cache calls are now properly accounted for, increasing by at most 2 units of gas per function call. (MR !19134)