Protocol Seoul#
This page lists the changes brought by protocol Seoul with respect to Rio (see Protocol changes). For the list of changes brought by Rio with respect to Quebec, see Protocol Rio.
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 Seoul can be found here.
The code is available in directory src/proto_023_PtSeouLo of
the master branch of Octez and the full documentation in
this page.
Environment Version#
This protocol requires an updated protocol environment version (V15) from R version (V14).
Environment V15 uses signature V2. This change impacts the way BLS signatures are handled. In previous environments that used signature V1, the BLS signatures were expected to be produced with the
Augmentedcryptographic scheme. Starting from V15, they are expected to be produced with theProof of possessioncryptographic scheme. (MR !17036)Environment V15 also exposes two new functions:
partial_op_validationandadd_valid_operationwhich are the result of splittingadd_operationin two steps.
Smart Rollups#
Data Availability Layer#
DAL rewards are no longer distributed to bakers that are not eligible for attestation rewards for the same cycle. (MR !17934)
Adaptive Issuance#
Michelson#
A new instruction named
IS_IMPLICIT_ACCOUNThas been added. It provides a conversion from typeaddressto typekey_hash. (MR !12436)
Gas improvements#
Breaking Changes#
All existing tz4 addresses have been unrevealed. Indeed, starting in this protocol, tz4 addresses need a proof of possession provided in the reveal operation. This change ensures that existing tz4 addresses will also have to provide such a proof before sending other operations. This does not change anything about the revelation of new addresses, or non-tz4 addresses. (MR !18078) However, to handle any address it is recommended to update all the tools producing or processing reveal operations to a Seoul-compatible version (see breaking changes).
../context/contracts/<pkh>result now contains, when called on an implicit account, a boolean fieldrevealedthat tells if the public key of the manager has been revealed.
Operations#
Added new operation kinds Preattestations_aggregate and Attestations_aggregate. (MRs !15244, !17485)
The
Revealoperation has a new optionalprooffield, which is only present if the manager key is a tz4 (BLS key). This change requires updating all the tools producing or processing reveal operations to a Seoul-compatible version (see breaking changes). This change also results in an increase of gas cost per reveal of a tz4 public key. (MR !18095)
Warning
Introduction of this new optional field might still lead to breaking changes for tool providers see breaking changes.
The optional
prooffield of theUpdate_consensus_keyoperation is now required if (and only if) the new consensus key is a tz4 (BLS key). Its encoding now exclusively accepts BLS signatures. (MR !17360)Added a new manager operation kind
Update_companion_key, allowing managers to register a companion key. (MR !17320)In order to enable denunciations of aggregated consensus operations, the
Double_preattestation_evidenceandDouble_attestation_evidenceoperations have been replaced with a newDouble_consensus_operation_evidenceoperation. 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. (MR !18032)The
Dal_entrapment_evidenceoperation has a newconsensus_slotfield, and itsattestationfield may now contain any kind of consensus operation. For the evidence to be valid,attestationmust be either a standalone attestation forconsensus_slot, or an attestations aggregate whose committee includesconsensus_slot. (MR !18073)
Operation receipts#
Reworked the receipts for the
Double_consensus_operation_evidenceandDouble_baking_evidenceoperations (MR !18103):The
balance_updatesfield has been removed, because these operations no longer produce them since the Oxford protocol.The
forbidden_delegatefield has been renamed topunished_delegateand is no longer optional, because forbidding the punished delegate has been systematic since the Paris protocol.A new
rewarded_delegatefield has been added, because it’s no longer easily retrievable from the balance updates since Oxford.A new
misbehaviourfield has been added, containing the misbehaviour’s level, round, and kind (double-baking/double-attesting/double-preattesting).
Aggregate operations receipts update. Return the consensus power for each delegate in the committee (MR !18435)
RPC Changes#
Modified
GET /chains/<chain_id>/blocks/<block_id>/context/contracts/<pkh>result now contains, when called on an implicit account, a boolean fieldrevealedthat tells if the public key of the manager has been revealed.Added
GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<delegate_pkh>/companion_key, which returns the active companion key of the given delegate. Returnsnoneif key is not yet set. (MR !17236)Updated
GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<delegate_pkh>/with the new fieldcompanion_keywhich returns the active companion key of a given delegate (noneif not yet set), and the list of pending updates to that key in the following cycles. (MR !17236)Updated
GET /chains/<chain_id>/blocks/<block_id>/helpers/validators?delegate=<delegate_pkh>&level=<level_id>with the new optional fieldcompanion_key, only present if the delegate has an active companion key and this companion key is needed for crafting and validating attestations at the queried level. (MRs !17703, !17957)Added a new RPC
GET /chains/<chain>/blocks/<block>/helpers/total_baking_powerto retrieve the total baking power for the current cycle. (MR !17553)
Errors#
Protocol parameters#
Bug Fixes#
Minor Changes#
The finalize_unstake pseudo-operation can now be performed by any account, not just the owner of the unstaked funds. This allows finalization of unstake requests to be done automatically by a third party - for example a finalization bot. (MR !17950)
Consensus operations with non-minimal slots are now filtered by mempools (MR !18040).
Consensus operations with different slots are no longer considered a punishable misbehaviour. (MR !18043)
Internal#
Added
octez_riscv_pvmas a dependency for the protocol environment. (MR !15918)Added
companion_keyfor delegates. These keys are used to build attestations for tz4 addresses, and are registered the same way as consensus keys. They are used at validation time for the consensus, so the type of the storagedelegate_sampler_statehad to be updated. (MR !17213)Moved remaining RPC implementations to the protocol plugin. (MR !14079)