IntersectMBO / IntersectMBO/ouroboros-network
Improve the process of updating protocol versions
- Dominant language
- Haskell
- Stars
- 296
- Forks
- 104
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 4
Description
We need a clear write-up of:
- Which kinds of protocol versions exist?
- Protocol version inside the block header that is used to indicate readiness for a HF, which is configured in consensus.
- MaxMajorProtocol version, which indicates the highest version of the protocol the node can support.
- The actual protocol version, which is maintained by the ledger inside the protocol parameters.
- What is the meaning of each protocol version?
- Where are they set (hard-coded)?
- How intra-era hardforks interact with versions? See [this 5 to 7](https://github.com/input-output-hk/ouroboros-network/blob/548af5bd5cafa3d42267afad1ceac63bff152f53/ouroboros-consensus-cardano-tools/src/Cardano/Node/Protocol/Cardano.hs#L267) jump in versions due to an intra-era hardfork.
- When should `NodeToNode` versions be changed and why?
We should hide the constructor of `MaxMajorProtVer` so that issues like [this one](https://github.com/input-output-hk/ouroboros-network/pull/3891/files#) can be prevented from happening in the future.
The protocol versions documentation should live in [`cardano-node`](https://github.com/input-output-hk/cardano-node/), and other upstream repositories such as [`ouroboros-network`](https://github.com/input-output-hk/ouroboros-network) and [`cardano-ledger`](https://github.com/input-output-hk/cardano-ledger) should refer to it and include key pieces of information about this topic.
# Related issues
- input-output-hk/ouroboros-consensus#22.
- input-output-hk/ouroboros-network#3925.
- input-output-hk/ouroboros-consensus#325.
- input-output-hk/ouroboros-consensus#635.
Contributor guide
Assessment
This issue has not been assessed yet.