From d82e5b7c615907844816c38ae3a89646f9c84927 Mon Sep 17 00:00:00 2001 From: Jared Corduan Date: Wed, 8 Jun 2022 21:30:50 -0400 Subject: [PATCH 1/4] CIP for names surrounding features --- CIP-namesSurroundingFeatures/README.md | 103 +++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 CIP-namesSurroundingFeatures/README.md diff --git a/CIP-namesSurroundingFeatures/README.md b/CIP-namesSurroundingFeatures/README.md new file mode 100644 index 000000000..4c9e2b34a --- /dev/null +++ b/CIP-namesSurroundingFeatures/README.md @@ -0,0 +1,103 @@ +--- +CIP: ? +Title: Names surrounding features +Authors: Jared Corduan +Status: Draft +Type: Informational +Created: 2022-06-09 +License: CC-BY-4.0 +--- + +## Simple Summary / Abstract + +This CIP seeks to clarify the language around groups of features. +At the very least, it provides some history. + +## Motivation / History + +When @CharlesHoskinson conceived of Cardano, he had a vision for what features the network would support. +This vision is still present on the [Cardano roadmap website](https://roadmap.cardano.org). +In particular, the features are grouped into "phases", which are mostly named after poets (Goguen is the exception). +The word "era" is used interchangeably with "phases" on the roadmap. + +The word "era", however, has been muddled by an implementation detail in the Cardano ledger. +The Shelley phase was implemented as an entire re-write of the code from the Byron phase. +While the consensus layer for the Shelley phase was written with an abstraction in place for the ledger, +the ledger layer was not written with any abstractions to make future phases possible. +Upon starting into the Goguen phase, the ledger team retroactively introduce a notion of "era" +into the ledger code, and deemed the Shelley features "the Shelley era". +In hindsight, however, the word "era" in unfortunate, since the Goguen phase was completed in the ledger +by what was called "the Allegra era, the Mary era, the Alonzo era, and the Babbage era". +The names Allegra and Mary were chosen for their connection to the poet Percy Shelley, +and were only intended to be used as +[variable names](https://github.com/input-output-hk/cardano-ledger/blob/1cbf1fc2bb005a8206e5b5a7cdf44d35baaca455/eras/shelley-ma/impl/src/Cardano/Ledger/Allegra.hs#L40) +for a very specific abstraction used in the ledger code. +(The story is even a bit more confusing, since the Allegra and Mary era share a lot of code +and are specified together in the "Shelley-MA +[specification](https://hydra.iohk.io/job/Cardano/cardano-ledger/specs.shelley-ma/latest/download-by-type/doc-pdf/shelley-ma). +The letters "MA" can hilariously refer to both "Mary Allegra" and "Multi-Assets".) +How did we then go from poets to Alonzo? +Recall that "Goguen" was the only non-poet named in the phases on the Cardano roadmap. +We found it fitting, therefore, to name the ledger era which introduced Plutus +after the person who invented the lambda calculus +(Plutus Core uses a variant of [system F](https://en.wikipedia.org/wiki/System_F).). +Moreover, going forward, we decided to use names in A, B, C, ... order, names coming from +other people who walk the line between mathematics and computer science. +One lack of consistency to notice is that we have used both first and last names. +The inconsistency was mostly driven by the desire to find short and memorable names. + +Another complication to the story is the notion of "intra-era hard forks". +A new era _must_ be introduced with a hard fork, but the ledger can also +change semantics during a controlled hard fork with another mechanism, namely +an intra-era hard fork. +This is an implementation detail which involves bumping the major protocol version +but not creating a new ledger era. +The Alonzo era experienced an intra-era hard fork when going from major protocol version 5 to 6. +See this [table](https://github.com/input-output-hk/cardano-ledger/wiki/First-Block-of-Each-Era) +in the cardano-ledger repository's wiki. + +Yet another complication stems from the named releases. +We chose to honor the late Cardano community member and Bulgarian mathematician Vasil Dabov +by naming a release date after him. +The ledger era after the Alonzo era was named Babbage. +Babbage is a feature set, Vasil is a release date which ushered in the Babbage era. + +Lastly, it is important to understand that not all of the semantic changes to the Cardano network involve the ledger, +though the changes to the ledger are often the most user-facing. +Changes to the consensus protocol or the networking layer may also involve a hard fork. +Moreover, there is an abstraction that sits between the consensus and ledger layers, +which we have named the "protocol" (a regrettably vague name). +The distinction between the ledger protocols and the ledger eras +correspond roughly to how block headers are validated (protocol) versus +how block bodies are validated (era). +The Shelley era used the "transitional Praos" protocol (or TPraos for short). +It consisted of Praos together with a transition system to move away from Ouroboros-BFT. +The Babbage era replaced TPraos with Praos. + +## Specification + +Let us use the following language: + +* **Phase** - A phase in Cardano is a high level collection of features described on the Cardano roadmap. +* **Ledger Era** - A ledger era (or era for short if there is no confusion) in Cardano is a collection of ledger features introduced at a hard fork. Moreover, starting with the Alonzo era, they will be named after mathematicians and computer scientists (preferably both!) in A, B, C, ... ordering. Some letters might prove challenging. +* **Intra-era Hardfork** - An intra-era hard fork in Cardano is a small and focused semantic change to the ledger which requires a hard fork. +* **Consensus mechanism** - A consensus mechanism in Cardano is a collection of consensus features introduced at a hard fork. Historically, these have had the name "Ouroboros" in them. +* **Ledger Protocol** - A ledger protocol in Cardano is a collection of ledger features sitting between the consensus layer and the ledger layer, roughly characterized by block header validation. +* **Release Dates** - When we are confident about the release of a new features, we can chose to honor Cardano community members by naming a date after them. + + +## Rationale + +If we can agree to common language, it will greatly improve communication among ourselves and also with new community members. + +## Backwards compatibility + +Since this is an issue of language, we will strive to use consistent language going forward, and we can correct misalignment when we find it. + +## Path to Active + +We will use this CIP as our common language going forward. + +## Copyright + +This CIP is licensed under Apache-2.0 From 3776a1cbdba1944c481ca7bfbd77595789c86992 Mon Sep 17 00:00:00 2001 From: Jared Corduan Date: Fri, 10 Jun 2022 22:44:42 -0400 Subject: [PATCH 2/4] feature table --- CIP-namesSurroundingFeatures/README.md | 4 ++-- CIP-namesSurroundingFeatures/feature-table.md | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 CIP-namesSurroundingFeatures/feature-table.md diff --git a/CIP-namesSurroundingFeatures/README.md b/CIP-namesSurroundingFeatures/README.md index 4c9e2b34a..f28a6afe7 100644 --- a/CIP-namesSurroundingFeatures/README.md +++ b/CIP-namesSurroundingFeatures/README.md @@ -53,8 +53,6 @@ an intra-era hard fork. This is an implementation detail which involves bumping the major protocol version but not creating a new ledger era. The Alonzo era experienced an intra-era hard fork when going from major protocol version 5 to 6. -See this [table](https://github.com/input-output-hk/cardano-ledger/wiki/First-Block-of-Each-Era) -in the cardano-ledger repository's wiki. Yet another complication stems from the named releases. We chose to honor the late Cardano community member and Bulgarian mathematician Vasil Dabov @@ -74,6 +72,8 @@ The Shelley era used the "transitional Praos" protocol (or TPraos for short). It consisted of Praos together with a transition system to move away from Ouroboros-BFT. The Babbage era replaced TPraos with Praos. +A table of all the features, as of the time this CIP was submitted, can be found [here](feature-table.md). + ## Specification Let us use the following language: diff --git a/CIP-namesSurroundingFeatures/feature-table.md b/CIP-namesSurroundingFeatures/feature-table.md new file mode 100644 index 000000000..096e79a82 --- /dev/null +++ b/CIP-namesSurroundingFeatures/feature-table.md @@ -0,0 +1,12 @@ +# Cardano Features + +| Date | Phase | Era | Slot Number | Epoch Number | Protocol Version | Ledger Protocol | Consensus Mechanism | Notes | +| ------- | ------- | -------:| -----------:| ------------:| ----------------:| ---------------:| -------------------:| ------------------:| +| 2017/09 | Byron | Byron | 0 | 0 | 0,0 | - | Ouroboros Classic | | +| 2020/02 | Byron | Byron | 3801600 | 176 | 1,0 | - | Ouroboros BFT | | +| 2020/07 | Shelley | Shelley | 4492800 | 208 | 2,0 | TPraos | Ouroboros Praos | | +| 2020/12 | Goguen | Allegra | 16588800 | 236 | 3,0 | TPraos | Ouroboros Praos | | +| 2021/03 | Goguen | Mary | 23068800 | 251 | 4,0 | TPraos | Ouroboros Praos | | +| 2021/09 | Goguen | Alonzo | 39916975 | 290 | 5,0 | TPraos | Ouroboros Praos | | +| 2021/10 | Goguen | Alonzo | 43372972 | 298 | 6,0 | TPraos | Ouroboros Praos | intra-era hardfork | +| | Goguen | Babbage | | | 7,0 | Praos | Ouroboros Praos | Vasil HF | From d64083558c773a3544d901e7573bfaccd7faf31f Mon Sep 17 00:00:00 2001 From: Jared Corduan Date: Mon, 27 Jun 2022 15:14:33 -0400 Subject: [PATCH 3/4] disambiguate protocol version from other schemes --- CIP-namesSurroundingFeatures/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CIP-namesSurroundingFeatures/README.md b/CIP-namesSurroundingFeatures/README.md index f28a6afe7..d9df0e5e9 100644 --- a/CIP-namesSurroundingFeatures/README.md +++ b/CIP-namesSurroundingFeatures/README.md @@ -74,6 +74,14 @@ The Babbage era replaced TPraos with Praos. A table of all the features, as of the time this CIP was submitted, can be found [here](feature-table.md). +Note that the protocol version mentioned above is unrelated to the node-to-node and node-to-client protocol versions. +The consensus layer maintains a versioning scheme for the node queries which does not necessarily +align with the protocol version described in this CIP. + +Note also that the protocol version present inside of each block header indicates the maximum supported protocol version +that the block producer is capable of supporting (see section 13, Software Updates, of the +[Shelley ledger specification](https://hydra.iohk.io/job/Cardano/cardano-ledger/shelleyLedgerSpec/latest/download-by-type/doc-pdf/ledger-spec)). + ## Specification Let us use the following language: From 14e3aa40677c1eae081fdc000201c8d6373eb001 Mon Sep 17 00:00:00 2001 From: Jared Corduan Date: Wed, 29 Jun 2022 13:49:58 -0400 Subject: [PATCH 4/4] rename as CIP 59 and progress to Active And also re-title as Terminology Surrounding Core Features --- {CIP-namesSurroundingFeatures => CIP-0059}/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {CIP-namesSurroundingFeatures => CIP-0059}/README.md (99%) diff --git a/CIP-namesSurroundingFeatures/README.md b/CIP-0059/README.md similarity index 99% rename from CIP-namesSurroundingFeatures/README.md rename to CIP-0059/README.md index d9df0e5e9..d0e297a5f 100644 --- a/CIP-namesSurroundingFeatures/README.md +++ b/CIP-0059/README.md @@ -1,8 +1,8 @@ --- -CIP: ? -Title: Names surrounding features +CIP: 59 +Title: Terminology Surrounding Core Features Authors: Jared Corduan -Status: Draft +Status: Active Type: Informational Created: 2022-06-09 License: CC-BY-4.0