Breaking Changes#
This section presents the breaking changes that users may encounter between successive protocols or successive Octez versions. It complements the respective protocol changelogs and Octez changelog by gathering all breaking changes in one place and providing more context when appropriate.
For each change, there may be subsections Deprecation and Breaking
changes. The former subsection will explain what changes can be made during a
deprecation phase to adapt smoothly to the new changes. The latter subsection
will present the changes that can not be done by the deprecation mechanism and
that may be breaking.
In the particular case of RPC changes, you may consult complementary information on RPC versioning, covering how new versions are introduced, the deprecation policy, and a concrete calendar of RPCs planned to be removed.
Protocol Tallinn#
Full Protocol Tallinn Changelog
6s Block Time#
Protocol Tallinn reduces the block time from 8 seconds to 6 seconds on mainnet. 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.
Multiple protocol and smart rollup parameters have been updated in consequence, to ensure that their duration in terms of minutes/hours/weeks remains the same as in protocol Seoul. A full list of affected parameters with their old and new values can be found here.
Unlike other parameters, the value of parameter
smart_rollup_max_active_outbox_levels remains unchanged in terms
of blocks. This means that the actual duration of the maximal allowed
period of withdrawal has decreased from ~14 days in protocol Seoul to
~10 days in protocol Tallinn.
Consensus changes#
With the All Bakers Attest feature implemented in protocol Tallinn come changes to the consensus. Most of these changes will take effect only when the feature activates, but in some cases, the format of operations or RPCs have been updated to include more information.
In particular, the attestation and preattestation receipts metadata have been updated.
The consensus_power field is now divided in two parts: an integer field slots,
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 field
baking_power parsed 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.
To track the activation status of the “All Bakers Attest” feature, the field
all_bakers_attest_activation_level has been added in the block metadata.
It returns the activation level of the feature if it is set to activate.
The field remains null otherwise.
Additionally, fields related to the consensus were added in the block metadata:
attestations and preattestations. They can be null when the corresponding
consensus operations are not required in the block. Otherwise, they contain three fields:
the total_committee_power and threshold, as described in
the consensus documentation, and the
recorded_power, summing the power of all (pre)attestations
of the block.
Breaking changes to RPCs#
Among the RPC changes brought by protocol Tallinn, the following are potentially breaking:
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.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).
Removed obsolete fields from the block header and block receipts#
The obsolete field adaptive_issuance_vote has been removed from
the block header in protocol Tallinn, and fields
adaptive_issuance_vote_ema and
adaptive_issuance_activation_cycle from the block metadata.
Note that the adaptive issuance activation cycle (which is 748 on
mainnet) can still be queried via the RPC GET
/chains/<chain>/blocks/<block>/context/adaptive_issuance_launch_cycle.
Very slight increase in gas cost when calling smart contracts#
Protocol Tallinn fixes a minor bug that caused some gas costs to be omitted in cache functions. As a result, gas costs for smart contract calls has increased by at most 2 units of gas each time the cache is accessed.
Octez Version 24#
Octez Version 23#
Full Octez Version 23 Changelog
Operation encoding changes#
Multiple client commands and RPCs in Octez v23 are affected by the operation encoding changes in protocol Seoul described below. It is recommended to update any tool producing or processing reveal operations to a Seoul-compatible version.
Unique baker executable and unique accuser executable#
Starting with Octez v23, the single executable octez-baker
(previously named octez-experimental-agnostic-baker) is no longer
experimental, and should be preferred over the protocol-suffixed
executables octez-baker-<proto-hash>, which will be deprecated in
v24, and will be removed in a later version.
Similarly, Octez v23 also introduces a single executable
octez-accuser meant to gradually replace the protocol-suffixed
executables octez-accuser-<proto-hash>.
Stricter validation for JSON configuration files#
Previously, the parser would silently ignore any content that appeared after the first valid JSON object. Starting with Octez v23.0~rc2, any extraneous data in a configuration file will cause the function to return an error.
This change affects the configuration files of the node, client, signer, baker, accuser, smart rollup node, and DAL node.
Protocol Seoul#
Operation encoding changes#
Protocol Seoul adds new operations and changes the encoding of some existing operations, for instance by adding new fields. These changes are related to the support for tz4 BLS addresses and their aggregated signatures.
Backward compatibility#
Most of the changes in the encodings of existing operations are either purely added operations (e.g. update_companion_key) or optional fields that should not break (e.g., for operations reveal and update_consensus_key).
Warning
However, tool providers which do not use encodings but rather p2p message
format may experience some issues. For example, the reveal
operation has a new boolean field to mark the presence of the optional proof for
tz4 revelation.
Users of such tools should check that they are operating versions compatible with the changes introduced by the Seoul protocol, and upgrade them if needed.
Breaking changes#
Starting in protocol Seoul, the Double_preattestation_evidence and
Double_attestation_evidence operations are replaced with a
new Double_consensus_operation_evidence operation,
in order to enable denunciations of aggregated consensus operations. This new
operation contains a denounced slot and two denounced consensus
operations. For the evidence to be valid, the denounced operations
must both be preattestations (each one may be aggregated or not) or
both be attestations. Moreover, both must involve the denounced
slot, that is, be either a standalone operation for this slot or an
aggregate whose committee includes this slot.
The receipts for these operations have also been reworked, see Operation receipts.
All existing tz4 addresses are being unrevealed when protocol S is adopted, and they must provide a proof of possession to be revealed again, see Breaking Changes. This proof may be generated using the client command:
octez-client create bls proof for <alias>
Octez Version 22#
Full Octez Version 22 Changelog
Baker: Explicit choice on using DAL or not via the CLI#
Octez v21.3 introduces the new --without-dal option for the baker daemon.
In Octez v21.3, this option is not mandatory and will only trigger a warning.
Starting from Octez v22, launching a baker daemon requires an explicit mention of the DAL.
The recommended approach is to run a DAL node and start the baker using the --dal-node <uri> option.
If you do not wish to use a DAL node, you can opt-out by using the --without-dal option.
Older changes#
For features deprecated or broken in older Octez versions and protocols, see Deprecated features.
Upcoming changes#
Warning
Changes described in this section concern code that has been merged into the master branch but has not been released yet! They are meant as a heads-up for developers wanting to known in advance how future releases and protocols may impact developers and users.
Upcoming release#
N/A
Development protocol Alpha#
N/A