Protocol Parameters (Babbage Era)
Abstract
This CIP extends CIP-0028 to introduce a change to one of the Alonzo protocol parameters in the Babbage era, namely lovelacePerUTxOWord
.
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.
Motivation
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.
Transitional Praos
Two Alonzo era protocol parameters need to be removed for the Babbage era, since they relate to TPraos
.
Transitional Praos (named TPraos
in the code base) is the addition of two features to
Praos,
which were added to provide a smooth transition from
Ouroboros-BFT.
In particular, Transitional Praos included an overlay schedule which could be tuned by the d
parameter
(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
explained wonderfully
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.
Specification
The removal of the decentralization parameter and the extra entropy parameter is self explanatory.
We now describe the specification of the coinsPerUTxOByte
parameter.
Rename
The name of the protocol parameter is actually coinsPerUTxOWord
in the Haskell implementation.
It should be renamed to coinsPerUTxOByte
.
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).
Rationale
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.
Backwards compatibility
The translation section
explains how we will transition from the coinsPerUTxOWord
parameter to the coinsPerUTxOByte
parameter.
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, d
and extraEntropy
, can no longer be used
in protocol parameter updates.
Path to Active
- The Cardano Babbage era is activated.
Copyright
This CIP is licensed under Apache-2.0