Protocol Alpha¶
This page documents the changes brought by protocol Alpha with respect to Nairobi (see Protocol naming).
The code can be found in directory src/proto_alpha of the master
branch of Octez.
Contents
Environment Version¶
This protocol requires a different protocol environment version than Nairobi. It requires protocol environment V10, compared to V9 for Nairobi.
Simplify the timelock
opening_result
type in the environment as we do not deal withBogus_cipher
any longer. (MR !8404)
Smart Rollups¶
Add the support for bootstrapped smart rollups in storage initialization, similarly to bootstrapped accounts and smart contracts. (MR !8552)
Remove the origination proof from the smart rollups’ origination operation. (MR !8817)
The field
commitment
in the operationSc_rollup_cement
is now removed. It was no longer used and was deprecated in Nairobi. This also mean that the commitment does not need to be provided in the client command. (MR !8850)- Before::
./octez-client cement commitment <commitment hash> from <src> for smart rollup <smart rollup address>
- Now::
./octez-client cement commitment from <src> for smart rollup <smart rollup address>
Adaptive Inflation (ongoing)¶
This protocol asks the bakers to set their votes for the adoption of the adaptive inflation feature. They may use the per-block votes file, or CLI option
--adaptive-inflation-vote
. If they do not vote for the adaptive inflation feature, the vote defaults to “pass” (unlike for the liquidity baking vote, which is mandatory).Introduce feature flag for Adaptive Inflation. (MR !8566)
Add parameter
staking_over_baking_limit
as the limit of co-staked tokens over the baked tokens for a given baker. (MR !8744)Add parameter
max_costaking_baker_count
to limit the number of bakers an account can co-stake to. (MR !8766)
When the feature flag is enabled, the following extra changes happen:
Most rewards (baking rewards, baking bonuses, attestation rewards, revelation rewards) are paid on the frozen deposits balance rather than the spendable balance. Manager operations fees and denunciation rewards are still paid on the spendable balance. (MR !8091)
Breaking Changes¶
Protocol parameter
ratio_of_frozen_deposits_slashed_per_double_endorsement
is converted from the ratio1/5
into the percentage50%
and renamed topercentage_of_frozen_deposits_slashed_per_double_endorsement
. (MR !8753)Protocol parameter
double_baking_punishment
is converted from a fixed value of640tz
into the percentage11%
and renamed topercentage_of_frozen_deposits_slashed_per_double_baking
. (MR !8753)Since protocol Ithaca, the ratio of delegated tez over the delegate’s frozen deposit must be at most 9. Until now, this was ensured by a protocol parameter named
frozen_deposits_percentage
(whose value is 10%) representing the minimal percentage of frozen deposit. We convert it from a percentage to a factor nameddelegation_over_baking_limit
whose value is 9. (MR !8884)The frozen deposits are not computed automatically from the baker’s total stake (own tokens and delegated ones). Hence there are no automatic transfers of the baker’s spendable balance to their frozen deposits. Bakers need to use the
stake
pseudo-operation to increase their frozen deposits. (MR !8087)The Exponential Moving Average of the Liquidity Baking Toggle Vote is now represented on 64 bits (instead of 32 bits in previous versions of the protocol). This affects the binary and JSON encodings of block receipts, the
liquidity_baking_toggle_ema_threshold
parameter, and theliquidity_baking_escape_ema
field of the context. Note that in JSON, 32-bit integers are represented as JSON numbers but 64-bit integers are represented as JSON strings. (MR !8987)The context field
liquidity_baking_escape_ema
is renamedliquidity_baking_toggle_ema
. (MR !8987)
RPC Changes¶
Split duplicated argument
pkh
in RPCsmart_rollups/smart_rollup/<address>/staker1/<pkh>/staker2/<pkh>/timeout
andsmart_rollups/smart_rollup/<address>/staker1/<pkh>/staker2/<pkh>/timeout_reached
into/staker1/<staker1_pkh>/staker2/<staker2_pkh>
. This changes the RPC description but not its use. (MR !8339)Update context with new reward parameters. This changes the JSON from the RPC
/chains/main/blocks/head/context/constants
. (MR !8657)Remove the RPC for computing smart rollups’ origination proofs
smart_rollups/all/origination_proof
. (MR !8817)Add the consensus key’s public key to the reponse of the
../context/delegates/<delegate_pkh>/consensus_key
RPC. (MR !8856)
Minor Changes¶
Improve the error for implicit account type check. (MR !7714)
Remove infinite source
Double_signing_evidence_rewards
and take reward from the punishment instead. (MR !7758)Remove zero tickets from a big map of a mainnet contract during migration. (MR !8111)
Add a
Stake
operation, implemented as an entrypoint of external operations to implicit accounts, for delegates only. (MR !8120)Add a Total supply counter in the storage. (MRs !8732, !8739)
Internal¶
Fail earlier when a smart rollup commitment is in conflict when cementing. (MR !8128)
split smart rollup origination fct for readibility. (MR !8276)
Remove the deprecated and unused
tx_rollup_l2_address
Michelson type. (MR !8546)Add an internal represention case for the
UNIT
Michelson instruction. (MR !8579)Encoding that supports
endorsement
kind in JSON are now suffixed with_with_legacy_attestation_name
. Non legacy encoding supportsattestation
kind. (MRs !8563, !8531)Michelson: remove legacy behaviour related to contract type. (MR !5800)
Michelson: cleanup legacy annotation management. (MR !8208)
Michelson: refactor management of metadata in ty smart constructors. (MR !8420)
Michelson: remove unused deprecated tx_rollup_l2_address type. (MR !8546)
Rename
source
intosender
. (MR !7373)Improve efficiency of solving the baker PoW challenge. (MR !8403)
Refactor declarations of
make_empty_context
andmake_empty_tree
for easier use. (MR !8550)Move notions of Smart rollup address and various smart rollup hashes types to the shell to make them common to all protocols though the environment. (MR !8562, MR !8625)
Refactoring : stake splitted between a frozen part and a delegated part. (MRs !8051, !8885)
Refactoring : rewards computed as a relative portion of the total amount of tez rewarded per minute (about 85tez/min). (MR !8657)
Introduce the notion of rollups “machine” which can compute the semantics of a given rollup, but cannot be used to generate or verify proof. (MR !8815)
Consensus: optimized validation of attestations by maintaining a set of forbidden delegates instead of checking through an I/O that the delegate has a sufficient frozen deposit. (MR !8722)
Refactor punishing transfers to be closer to each other. (MR !7759)
Remove almost all transaction rollup logic from the protocol. (MR !8466)
Fix encoding names for rewards. (MR !8716)
Use
pair
type instead of*`
for Michelson pairs. (MR !8720)Add new function
of_list
to build a Merkle list. (MR !8853)Improve some aspects in the PlonK code. (MR !8730)
Store a history of percentages of slashed deposits. (MR !8828)
Renaming the
endorsement_power
andpreendorsement_power
fields from consensus operation receipt toconsensus_power
in the non legacy encoding. (MR !8531)