CIP 55 - Babbage Era Protocol Parameters
This CIP extends CIP-0028 to introduce a change to one of the Alonzo protocol parameters in the Babbage era, namely
We propose to have this updateable parameter be based on bytes instead of words (eight bytes).
Additionally, two Alonzo era protocol parameters were removed, namely the decentralization parameter and the extra entropy parameter.
Lovelace Per UTxO Byte
Since the Shelley era, there has been an minimum number of lovelace requirement for every unspent transaction output. This requirement acts like a deposit, guarding the network from dust (the proliferation of small-valued unspent transaction outputs). Initially it was a constant value, since the Shelley era UTxO were simple and quite uniform. Starting in the Mary era, however, the constant value was replace with a formula to account for the variability in outputs that contained multi-assets. The formula was changed again in the Alonzo era. Both the Mary and the Alonzo era formulas provide an upper bound on the size in memory of an unspent transaction output in the Haskell implementation. We would like to simplify the formula to instead count the number of bytes in the CBOR serialization.
Two Alonzo era protocol parameters need to be removed for the Babbage era, since they relate to
Transitional Praos (named
TPraos in the code base) is the addition of two features to
which were added to provide a smooth transition from
In particular, Transitional Praos included an overlay schedule which could be tuned by the
d == 1 means that all the blocks are produced by the BFT nodes,
d == 0 means that none of them are).
It also included a way of injecting extra entropy into the epoch nonce.
The extra entropy feature was used precisely once, and was
by one of the original authors of the Praos paper.
The Babbage era removes both of the "transitional" features of TPraos, rendering the decentralization parameter and the extra entropy parameter useless.
The removal of the decentralization parameter and the extra entropy parameter is self explanatory.
We now describe the specification of the
The name of the protocol parameter is actually
coinsPerUTxOWord in the Haskell implementation.
It should be renamed to
Translation from the Alonzo era to the Babbage era
At the moment that the hard fork combinator translates the Alonzo era ledger state to the Babbage era,
the current value of
coinsPerUTxOWord will be converted to
⌊ coinsPerUTxOWord / 8 ⌋
The new minimum lovelace calculation
In the Babbage era, unspent transaction outputs will be required to contain at least
(160 + |serialized_output|) * coinsPerUTxOByte
many lovelace. The constant overhead of 160 bytes accounts for the transaction input and the entry in the UTxO map data structure (20 words * 8 bytes).
We would like the formula for the minimum lovelace in a unspent transaction output be simpler and easier to reason about by all users of the Cardano network, while at the same time accounting for the size of the output.
The translation section
explains how we will transition from the
coinsPerUTxOWord parameter to the
Starting in the Babbage era, update proposals that want to modify
coinsPerUTxOByte must bear in mind
that the measurement is in bytes, not words.
The two protocol parameters that have been removed,
extraEntropy, can no longer be used
in protocol parameter updates.
Path to Active
As of the time of this writing, this CIP has been implemented, but not release, in the Cardano ledger.
This CIP is licensed under Apache-2.0