IntersectMBO / IntersectMBO/ouroboros-consensus

Specify cross-era ticking/forecasting for Cardano

Open
#418 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Haskell
Stars
67
Forks
43
Avg merge
5d 13h
Merged PRs (30d)
43

Description

Right now, the semantics of cross-era ticking/forecasting is purely implementation-defined, driven by whatever does not cause any concrete issues, rather than principled considerations.

- See [here](https://ouroboros-consensus.cardano.intersectmbo.org/docs/for-developers/HardWonWisdom/#how-does-cross-era-forecasting-work) for forecasting.
- See https://github.com/IntersectMBO/ouroboros-consensus/blob/106ce89c51e4b6d144b15d02bf78513e947817e6/ouroboros-consensus-cardano/src/ouroboros-consensus-cardano/Ouroboros/Consensus/Cardano/CanHardFork.hs#L708-L723 and #339 for an explanation why the current approach to ledger state ticking (**translate-then-tick**, ie first translate, then tick across the era/epoch boundary using the logic of the new era) is at the very least surprising in this case.
- Chain-dep state ticking is also underspecified (eg on the transition from TPraos to Praos, should the extra entropy nonce have been used if non-neutral?).

We should try to improve the situation here, and should be in a decent position for this as we now have a sizeable sample of era transitions whose requirements/particularities can guide our judgement. This requires input from the Ledger team, but the Consensus team can start by drafting a proposal. Possible outcomes are:

- Decide on how responsibility for the cross-era logic should be distributed across Consensus and Ledger. (Right now, it is a mix between the Ledger-provided `TranslateEra` instances, and how/when Consensus invokes them. At the very least, it should be clarified what the exact requirements/guarantees here are.)
- Very concrete example question: The ledger events of which era should be emitted when ticking across an era boundary?
- Enriching the existing specifications with cross-era behavior (eg in the existing Ledger specs PDFs, or in the [formal ledger specifications](https://github.com/input-output-hk/formal-ledger-specifications)).

Crucially, any semantics we decide on has to be compatible with mainnet.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.