From fefc21662f8e64a92655668eff390d83d663dd71 Mon Sep 17 00:00:00 2001 From: Martin Kourim Date: Tue, 20 Feb 2024 09:38:20 +0100 Subject: [PATCH] Update User Stories template There are new used stories added * https://github.com/IntersectMBO/cardano-test-plans/blob/750a10833121e7d79ee97758b110050f1e04a5a6/docs/user-stories/01-cip1694.md * https://github.com/IntersectMBO/cardano-test-plans/blob/750a10833121e7d79ee97758b110050f1e04a5a6/docs/user-stories/02-cardano-cli.md --- src_docs/chang_user_stories_template.md | 274 -------- src_docs/chang_user_stories_template.rst | 795 +++++++++++++++++++++-- 2 files changed, 729 insertions(+), 340 deletions(-) delete mode 100644 src_docs/chang_user_stories_template.md diff --git a/src_docs/chang_user_stories_template.md b/src_docs/chang_user_stories_template.md deleted file mode 100644 index fe49a454a..000000000 --- a/src_docs/chang_user_stories_template.md +++ /dev/null @@ -1,274 +0,0 @@ -System Tests Coverage -===================== - -The page is updated about once a week until the coverage is complete. - -Latest update: **TODAY** -  - -**Legend:** ![Success Badge][success-badge] ![Failure Badge][failure-badge] ![Uncovered Badge][uncovered-badge] -  - - -CLI User Stories ----------------- - -| Status for Story ID | Title | Story Overview | -|---------------------|-------|----------------| -|[![Status Badge][CLI001-badge]][CLI001-link]| Obtain constitution hash for verification (HOLDER) [→][CLI001-req] | **As** an Ada holder, **I want** to obtain the hash of the off-chain text of a Constitution, **so that** I can compare it against the hash registered on-chain to verify its authenticity. | -|[![Status Badge][CLI002-badge]][CLI002-link]| Generate hash of the off-chain constitution (HOLDER) [→][CLI002-req] | **As** an Ada holder, **I want** to generate the hash of the off-chain text for a proposed Constitution, **so that** the hash can be utilized in a governance action. | -|[![Status Badge][CLI003-badge]][CLI003-link]| Generate Committee member cold key pair (CCM) [→][CLI003-req] | **As** a potential Constitutional Committee member, **I want** to generate COLD key pair, **so that** I can be proposed for the Committee in a Governance action. | -|[![Status Badge][CLI004-badge]][CLI004-link]| Generate committee member hot key pair (CCM) [→][CLI004-req] | **As** potential Constitutional Committee member, **I want** to generate HOT key pair, **so that** I can authorise the Hot key to sign votes on behalf of the Cold key. | -|[![Status Badge][CLI005-badge]][CLI005-link]| Authorization certificate (CCM) [→][CLI005-req] | **As** a Constitutional Committee member, **I want** to issue a authorization certificate from my cold key to a hot key, **so that** I can sign my votes using the hot key and keep the cold key in cold storage and can authorise a new hot key in case the original one is compromised. | -|[![Status Badge][CLI006-badge]][CLI006-link]| Generate committee member key hash (CCM) [→][CLI006-req] | **As** a potential Constitutional Committee member, **I want** to generate the key hashes for my cold and hot keys, **so that** they can be used by third parties to propose me as a new Constitutional Committee member and for identification purposes once I've been elected as Constitutional Committee member. | -|[![Status Badge][CLI007-badge]][CLI007-link]| Committee member resignation certificate (CCM) [→][CLI007-req] | **As** a Constitutional Committee member, **I want** to be able to generate a resignation certificate, **so that** I can submit it to the chain on a transaction to signal to the Ada holders that I'm resigning from my duties as CC member. | -|[![Status Badge][CLI008-badge]][CLI008-link]| Generate DRep keys (HOLDER) [→][CLI008-req] | **As** an Ada holder, **I want** to generate Ed25519 keys, **so that** I can register as a DRep. | -|[![Status Badge][CLI009-badge]][CLI009-link]| Generate DRep ID (DRep) [→][CLI009-req] | **As** a DRep, **I want** to generate a DRep Id, **so that** Ada holder can use it to delegate their votes to me and my voting record can be tracked. | -|[![Status Badge][CLI010-badge]][CLI010-link]| DRep Registration Certificate Generation (DRep) [→][CLI010-req] | **As** a DRep, **I want** to generate a DRep registration certificate, **so that** I can submit it on a transaction and the Ada holders can delegate their votes to me. | -|[![Status Badge][CLI011-badge]][CLI011-link]| DRep Retirement Certificate Generation (DRep) [→][CLI011-req] | **As** a DRep, **I want** to generate a DRep retirement (unregistration) certificate, **so that** I can submit it on a transaction and can get my DRep deposit back. | -|[![Status Badge][CLI012-badge]][CLI012-link]| DRep Metadata Hash Generation (DRep) [→][CLI012-req] | **As** a DRep, **I want** to generate the hash of my DRep metadata, **so that** I can supply it when registering as DRep. | -|[![Status Badge][CLI013-badge]][CLI013-link]| Create Update Constitution Governance Action (HOLDER) [→][CLI013-req] | **As** an Ada holder, **I want** to create a governance action that updates the constitution, **so that** it can be submitted to the chain and be voted by the governance bodies. | -|[![Status Badge][CLI014-badge]][CLI014-link]| Create Update Constitutional Committee Governance Action (HOLDER) [→][CLI014-req] | **As** an Ada holder, **I want** to create a governance action that updates the Constitutional Committee, **so that** it can be submitted to the chain and be voted by the governance bodies. | -|[![Status Badge][CLI015-badge]][CLI015-link]| Create Treasury Withdrawal Governance Action (HOLDER) [→][CLI015-req] | **As** an Ada holder, **I want** to create a governance action to withdraw funds from the treasury, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: `cardano-cli conway governance action create-treasury-withdrawal`. | -|[![Status Badge][CLI016-badge]][CLI016-link]| Create info governance action (HOLDER) [→][CLI016-req] | **As** an Ada holder, **I want** to create an info governance action, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: `cardano-cli conway governance action create-info`. | -|[![Status Badge][CLI017-badge]][CLI017-link]| Create update protocol parameters governance action (HOLDER) [→][CLI017-req] | **As** an Ada holder, **I want** to create a governance action to update protocol parameters, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: `cardano-cli conway governance action create-protocol-parameters-update`. | -|[![Status Badge][CLI018-badge]][CLI018-link]| Create no-confidence governance action (HOLDER) [→][CLI018-req] | **As** an Ada holder, **I want** to create a no-confidence governance action, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: `cardano-cli conway governance action create-no-confidence`. | -|[![Status Badge][CLI019-badge]][CLI019-link]| Create Hard-fork initiation governance action (HOLDER) [→][CLI019-req] | **As** an Ada holder, **I want** to create a governance action to initiate a hardfork, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: `cardano-cli conway governance action create-hf-init`. | -|[![Status Badge][CLI020-badge]][CLI020-link]| View governance action file (HOLDER) [→][CLI020-req] | **As** an Ada holder, **I want** to inspect the contents of a governance action file, **so that** I can verify it is correct before submitting it in a transaction. Command: `cardano-cli conway governance action view`. | -|[![Status Badge][CLI021-badge]][CLI021-link]| Create a governance action vote (DRep/SPO/CCM) [→][CLI021-req] | **As** a DRep, SPO or CC member, **I want** to create a vote for a governance action, **so that** I can include it in a transaction and submit it to the chain. Command: `cardano-cli conway governance vote create`. | -|[![Status Badge][CLI022-badge]][CLI022-link]| View vote file (DRep/SPO/CCM) [→][CLI022-req] | **As** a DRep, SPO or CC member, **I want** to inspect the contents of a vote file, **so that** I can verify it is correct before submitting it in a transaction. Command: `cardano-cli conway governance vote view`. | -|[![Status Badge][CLI023-badge]][CLI023-link]| Build a transaction with to submit proposal (HOLDER) [→][CLI023-req] | **As** an Ada holder, **I want** to build a transaction that includes a proposal (containing a governance action), **so that** I can later sign and submit to the chain. Command: `transaction build`. | -|[![Status Badge][CLI024-badge]][CLI024-link]| Build transaction for proposal vote (DRep, SPO, CCM) [→][CLI024-req] | **As** a DRep, SPO or CC member, **I want** to build a transaction that includes my vote on a particular governance action, **so that** I can later sign and submit to the chain. Command: `transaction build`. | -|[![Status Badge][CLI025-badge]][CLI025-link]| Build RAW transaction for proposal vote (HOLDER) [→][CLI025-req] | **As** an Ada holder, **I want** to build a transaction that includes a proposal (containing a governance action), **so that** I can later sign and submit to the chain. Command: `transaction build-raw`. | -|[![Status Badge][CLI026-badge]][CLI026-link]| Build RAW transaction for proposal vote (DRep/SPO/CCM) [→][CLI026-req] | **As** a DRep, SPO or CC member, **I want** to build a transaction that includes my vote on a particular governance action, **so that** I can later sign and submit to the chain. Command: `transaction build-raw`. | -|[![Status Badge][CLI027-badge]][CLI027-link]| Create stake registration certificate (HOLDER) [→][CLI027-req] | **As** an Ada holder, **I want** to create a conway cddl-compliant stake registration certificate. | -|[![Status Badge][CLI028-badge]][CLI028-link]| Create stake deregistration certificate (HOLDER) [→][CLI028-req] | **As** an Ada holder, **I want** to create a conway cddl-compliant stake deregistration certificate to get my deposit back. | -|[![Status Badge][CLI029-badge]][CLI029-link]| Delegate vote to DRep (HOLDER) [→][CLI029-req] | **As** an Ada holder, **I want** to delegate my votes to a DRep (registered or default), **so that** my stake is counted when the DRep votes. | -|[![Status Badge][CLI030-badge]][CLI030-link]| Delegate stake to SPO and votes to DRep with a single certificate (HOLDER) [→][CLI030-req] | **As** an Ada holder, **I want** to delegate my stake to a stake pool AND my votes to a DRep (registered or default) with a single certificate. | -|[![Status Badge][CLI031-badge]][CLI031-link]| Query governance state (ANY) [→][CLI031-req] | **As** any persona, **I want** to query the nodes for the currentGovernance state, **so that** I can inform my decisions. | -|[![Status Badge][CLI032-badge]][CLI032-link]| Query committee state (CCM) [→][CLI032-req] | **As** a CC member, **I want** to query the Constitutional Committee state, **so that** I can find my expiration term and whether my hot key authorization certificate has been recorded on chain. | -|[![Status Badge][CLI033-badge]][CLI033-link]| Query DRep state (HOLDER) [→][CLI033-req] | **As** an Ada holder, **I want** to query the DRep state, **so that** I can find detailed information about registered DReps. | -|[![Status Badge][CLI034-badge]][CLI034-link]| Query DRep stake distribution (HOLDER) [→][CLI034-req] | **As** an Ada holder and DRep, **I want** to query the DRep stake distribution, **so that** I can find the weight (of the votes) of each DRep. | -|[![Status Badge][CLI035-badge]][CLI035-link]| Expand query stake-address-info to show deposits and vote delegation (HOLDER) [→][CLI035-req] | **As** an Ada holder, **I want** to query my stake address information, **so that** I can learn to which pool and DRep I'm delegating to and the value in lovelace of my deposits for delegating and for submitting governance actions. | -|[![Status Badge][CLI036-badge]][CLI036-link]| Register script based DReps. [→][CLI036-req] | | -|[![Status Badge][CLI037-badge]][CLI037-link]| Unregister script based DReps. [→][CLI037-req] | | -|[![Status Badge][CLI038-badge]][CLI038-link]| Script based CC GA. `--add` `--remove`. [→][CLI038-req] | | - - -CIP1694 User Stories --------------------- - -| Status for Story ID | Title | Story Overview | -|---------------------|-------|----------------| -|[![Status Badge][CIP001-badge]][CIP001-link]| Hash value of the off-chain Constitution is recorded on-chain [→][CIP001-req] | **As** an Ada holder, **I want** the ledger state to record the hash of the current constitution, **so that** I can verify the authenticity of the off-chain document. | -|[![Status Badge][CIP002-badge]][CIP002-link]| Node records Committee member key hashes, terms and status [→][CIP002-req] | **As** an Ada holder, **I want** the key hash of active and expired Committee Members and their terms to be registered on-chain, **so that** the system can count their votes. | -|[![Status Badge][CIP003-badge]][CIP003-link]| Authorization Certificate [→][CIP003-req] | **As** a Committee Member, **I want** to submit a Cold to Hot key Authorization certificate, **so that** I can sign my votes using the hot key and keep my cold keys safely in cold storage. | -|[![Status Badge][CIP004-badge]][CIP004-link]| Record cold credentials and authorization certificates on chain [→][CIP004-req] | **As** a committee member, **I want** node’s ledger state to accurately maintain the record of key-hashes, terms, and cold to hot key authorization maps for active and expired members, **so that** only votes from active Committee members are considered. | -|[![Status Badge][CIP005-badge]][CIP005-link]| Replacing the constitutional committee via a governance action [→][CIP005-req] | **As** an Ada holder, **I want** to be able to submit a governance action to replace all or part of the current constitutional committee, **so that** committee members that have lost confidence of Ada holders can be removed from their duties. | -|[![Status Badge][CIP006-badge]][CIP006-link]| Size of the constitutional committee [→][CIP006-req] | **As** an Ada holder, **I want** the size of the constitutional committee to be adjustable (a protocol parameter), **so that** I can propose a different size via a governance action. | -|[![Status Badge][CIP007-badge]][CIP007-link]| Committee voting threshold (quorum) can be modified [→][CIP007-req] | **As** an Ada holder, **I want** that the committee threshold (the fraction of committee required to ratify a gov action) is not fixed, **so that** I can propose a different threshold via a governance action. | -|[![Status Badge][CIP008-badge]][CIP008-link]| Electing an empty committee [→][CIP008-req] | **As** an Ada holder, **I want** to be able to elect an empty committee if the community wishes to abolish the constitutional committee entirely, **so that** governance actions don’t need the votes of a constitutional committee to be ratified. | -|[![Status Badge][CIP009-badge]][CIP009-link]| Constitutional committee members have a limited term [→][CIP009-req] | **As** an Ada holder, **I want** each committee member to have an individual term, **so that** the system can have a rotation scheme. | -|[![Status Badge][CIP010-badge]][CIP010-link]| Tracking committee member expirations [→][CIP010-req] | **As** an Ada holder, **I want** the system to keep track of the expiration epoch of each committee member, **so that** the information is publicly available in the ledger and can be consumed by anyone interested. | -|[![Status Badge][CIP011-badge]][CIP011-link]| Automatically expire committee members that have completed their terms [→][CIP011-req] | **As** an Ada holder, **I want** the system to automatically expire committee members that have reached their term, **so that** only active committee members can vote. | -|[![Status Badge][CIP012-badge]][CIP012-link]| Resign as committee member [→][CIP012-req] | **As** a committee member, **I want** to be able to resign my responsibilities, **so that** I can stop my responsibilities with the Cardano Community while minimizing the effects on the system. | -|[![Status Badge][CIP013-badge]][CIP013-link]| State of no-confidence [→][CIP013-req] | **As** an Ada holder, **I want** to submit a governance action to depose the current constitutional committee and put the system in a no-confidence-state, **so that** the community must elect a new constitutional committee. | -|[![Status Badge][CIP014-badge]][CIP014-link]| Automatically enter a state of no-confidence [→][CIP014-req] | **As** an Ada holder, **I want** the system to automatically enter a state of no-confidence when the number of non-expired committee members falls below the minimal size of the committee, **so that** only update-committee governance actions can be ratified. | -|[![Status Badge][CIP015-badge]][CIP015-link]| Proposal policy [→][CIP015-req] | **As** an Ada holder, **I want** a supplementary script to the constitution, **so that** some proposal types are automatically restricted. | -|[![Status Badge][CIP016-badge]][CIP016-link]| Delegate representatives [→][CIP016-req] | **As** an Ada holder, **I want** stake credentials to delegate voting rights to a registered delegate representative (DRep), **so that** I can participate in the governance of the system. | -|[![Status Badge][CIP017-badge]][CIP017-link]| Delegate to always abstain [→][CIP017-req] | **As** an Ada holder or an exchange, **I want** to delegate my stake to the predefined option 'Abstain', **so that** my stake is marked as not participating in governance. | -|[![Status Badge][CIP018-badge]][CIP018-link]| Delegate to no-confidence [→][CIP018-req] | **As** an Ada holder, **I want** to delegate my stake to the predefined DRep 'No Confidence', **so that** my stake is counted as a 'Yes' vote on every 'No Confidence' action and a 'No' vote on every other action. | -|[![Status Badge][CIP019-badge]][CIP019-link]| Inactive DReps [→][CIP019-req] | **As** an Ada holder, **I want** DReps to be considered inactive if they don’t vote for `drepActivity`-many epochs, **so that** their delegated stake does not count towards the active voting stake, this to avoid leaving the system in a state where no governance action can pass. | -|[![Status Badge][CIP020-badge]][CIP020-link]| DRep credentials [→][CIP020-req] | **As** a DRep, **I want** to be identified by a credential (A verification key (Ed2559) or a Native or Plutus Script), **so that** I can register and vote on governance actions. | -|[![Status Badge][CIP021-badge]][CIP021-link]| DRep registration certificate [→][CIP021-req] | **As** a DRep, **I want** to generate a registration certificate, **so that** the system recognizes my credentials and counts my votes on governance actions. | -|[![Status Badge][CIP022-badge]][CIP022-link]| Vote delegation certificate [→][CIP022-req] | **As** an Ada holder, **I want** to generate a vote delegation certificate, **so that** I can delegate my voting rights. | -|[![Status Badge][CIP023-badge]][CIP023-link]| DRep retirement certificate [→][CIP023-req] | **As** a DRep, **I want** to generate a retirement certificate, **so that** the system and Ada holders (delegators) know that I’m no longer voting on governance actions and they should redelegate. | - -[success-badge]: https://img.shields.io/badge/success-green -[failure-badge]: https://img.shields.io/badge/failure-red -[uncovered-badge]: https://img.shields.io/badge/uncovered-grey - -[CLI001-badge]: https://img.shields.io/badge/CLI001-grey -[CLI002-badge]: https://img.shields.io/badge/CLI002-grey -[CLI003-badge]: https://img.shields.io/badge/CLI003-grey -[CLI004-badge]: https://img.shields.io/badge/CLI004-grey -[CLI005-badge]: https://img.shields.io/badge/CLI005-grey -[CLI006-badge]: https://img.shields.io/badge/CLI006-grey -[CLI007-badge]: https://img.shields.io/badge/CLI007-grey -[CLI008-badge]: https://img.shields.io/badge/CLI008-grey -[CLI009-badge]: https://img.shields.io/badge/CLI009-grey -[CLI010-badge]: https://img.shields.io/badge/CLI010-grey -[CLI011-badge]: https://img.shields.io/badge/CLI011-grey -[CLI012-badge]: https://img.shields.io/badge/CLI012-grey -[CLI013-badge]: https://img.shields.io/badge/CLI013-grey -[CLI014-badge]: https://img.shields.io/badge/CLI014-grey -[CLI015-badge]: https://img.shields.io/badge/CLI015-grey -[CLI016-badge]: https://img.shields.io/badge/CLI016-grey -[CLI017-badge]: https://img.shields.io/badge/CLI017-grey -[CLI018-badge]: https://img.shields.io/badge/CLI018-grey -[CLI019-badge]: https://img.shields.io/badge/CLI019-grey -[CLI020-badge]: https://img.shields.io/badge/CLI020-grey -[CLI021-badge]: https://img.shields.io/badge/CLI021-grey -[CLI022-badge]: https://img.shields.io/badge/CLI022-grey -[CLI023-badge]: https://img.shields.io/badge/CLI023-grey -[CLI024-badge]: https://img.shields.io/badge/CLI024-grey -[CLI025-badge]: https://img.shields.io/badge/CLI025-grey -[CLI026-badge]: https://img.shields.io/badge/CLI026-grey -[CLI027-badge]: https://img.shields.io/badge/CLI027-grey -[CLI028-badge]: https://img.shields.io/badge/CLI028-grey -[CLI029-badge]: https://img.shields.io/badge/CLI029-grey -[CLI030-badge]: https://img.shields.io/badge/CLI030-grey -[CLI031-badge]: https://img.shields.io/badge/CLI031-grey -[CLI032-badge]: https://img.shields.io/badge/CLI032-grey -[CLI033-badge]: https://img.shields.io/badge/CLI033-grey -[CLI034-badge]: https://img.shields.io/badge/CLI034-grey -[CLI035-badge]: https://img.shields.io/badge/CLI035-grey -[CLI036-badge]: https://img.shields.io/badge/CLI036-grey -[CLI037-badge]: https://img.shields.io/badge/CLI037-grey -[CLI038-badge]: https://img.shields.io/badge/CLI038-grey -[CLI001-link]: https://github.com/CLI001-404 -[CLI002-link]: https://github.com/CLI002-404 -[CLI003-link]: https://github.com/CLI003-404 -[CLI004-link]: https://github.com/CLI004-404 -[CLI005-link]: https://github.com/CLI005-404 -[CLI006-link]: https://github.com/CLI006-404 -[CLI007-link]: https://github.com/CLI007-404 -[CLI008-link]: https://github.com/CLI008-404 -[CLI009-link]: https://github.com/CLI009-404 -[CLI010-link]: https://github.com/CLI010-404 -[CLI011-link]: https://github.com/CLI011-404 -[CLI012-link]: https://github.com/CLI012-404 -[CLI013-link]: https://github.com/CLI013-404 -[CLI014-link]: https://github.com/CLI014-404 -[CLI015-link]: https://github.com/CLI015-404 -[CLI016-link]: https://github.com/CLI016-404 -[CLI017-link]: https://github.com/CLI017-404 -[CLI018-link]: https://github.com/CLI018-404 -[CLI019-link]: https://github.com/CLI019-404 -[CLI020-link]: https://github.com/CLI020-404 -[CLI021-link]: https://github.com/CLI021-404 -[CLI022-link]: https://github.com/CLI022-404 -[CLI023-link]: https://github.com/CLI023-404 -[CLI024-link]: https://github.com/CLI024-404 -[CLI025-link]: https://github.com/CLI025-404 -[CLI026-link]: https://github.com/CLI026-404 -[CLI027-link]: https://github.com/CLI027-404 -[CLI028-link]: https://github.com/CLI028-404 -[CLI029-link]: https://github.com/CLI029-404 -[CLI030-link]: https://github.com/CLI030-404 -[CLI031-link]: https://github.com/CLI031-404 -[CLI032-link]: https://github.com/CLI032-404 -[CLI033-link]: https://github.com/CLI033-404 -[CLI034-link]: https://github.com/CLI034-404 -[CLI035-link]: https://github.com/CLI035-404 -[CLI036-link]: https://github.com/CLI036-404 -[CLI037-link]: https://github.com/CLI037-404 -[CLI038-link]: https://github.com/CLI038-404 -[CLI001-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI001 -[CLI002-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI002 -[CLI003-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI003 -[CLI004-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI004 -[CLI005-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI005 -[CLI006-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI006 -[CLI007-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI007 -[CLI008-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI008 -[CLI009-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI009 -[CLI010-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI010 -[CLI011-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI011 -[CLI012-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI012 -[CLI013-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI013 -[CLI014-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI014 -[CLI015-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI015 -[CLI016-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI016 -[CLI017-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI017 -[CLI018-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI018 -[CLI019-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI019 -[CLI020-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI020 -[CLI021-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI021 -[CLI022-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI022 -[CLI023-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI023 -[CLI024-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI024 -[CLI025-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI025 -[CLI026-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI026 -[CLI027-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI027 -[CLI028-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI028 -[CLI029-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI029 -[CLI030-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI030 -[CLI031-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI031 -[CLI032-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI032 -[CLI033-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI033 -[CLI034-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI034 -[CLI035-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI035 -[CLI036-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI036 -[CLI037-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI037 -[CLI038-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/02-cardano-cli.md#CLI038 - -[CIP001-badge]: https://img.shields.io/badge/CIP001-grey -[CIP002-badge]: https://img.shields.io/badge/CIP002-grey -[CIP003-badge]: https://img.shields.io/badge/CIP003-grey -[CIP004-badge]: https://img.shields.io/badge/CIP004-grey -[CIP005-badge]: https://img.shields.io/badge/CIP005-grey -[CIP006-badge]: https://img.shields.io/badge/CIP006-grey -[CIP007-badge]: https://img.shields.io/badge/CIP007-grey -[CIP008-badge]: https://img.shields.io/badge/CIP008-grey -[CIP009-badge]: https://img.shields.io/badge/CIP009-grey -[CIP010-badge]: https://img.shields.io/badge/CIP010-grey -[CIP011-badge]: https://img.shields.io/badge/CIP011-grey -[CIP012-badge]: https://img.shields.io/badge/CIP012-grey -[CIP013-badge]: https://img.shields.io/badge/CIP013-grey -[CIP014-badge]: https://img.shields.io/badge/CIP014-grey -[CIP015-badge]: https://img.shields.io/badge/CIP015-grey -[CIP016-badge]: https://img.shields.io/badge/CIP016-grey -[CIP017-badge]: https://img.shields.io/badge/CIP017-grey -[CIP018-badge]: https://img.shields.io/badge/CIP018-grey -[CIP019-badge]: https://img.shields.io/badge/CIP019-grey -[CIP020-badge]: https://img.shields.io/badge/CIP020-grey -[CIP021-badge]: https://img.shields.io/badge/CIP021-grey -[CIP022-badge]: https://img.shields.io/badge/CIP022-grey -[CIP023-badge]: https://img.shields.io/badge/CIP023-grey -[CIP001-link]: https://github.com/CIP001-404 -[CIP002-link]: https://github.com/CIP002-404 -[CIP003-link]: https://github.com/CIP003-404 -[CIP004-link]: https://github.com/CIP004-404 -[CIP005-link]: https://github.com/CIP005-404 -[CIP006-link]: https://github.com/CIP006-404 -[CIP007-link]: https://github.com/CIP007-404 -[CIP008-link]: https://github.com/CIP008-404 -[CIP009-link]: https://github.com/CIP009-404 -[CIP010-link]: https://github.com/CIP010-404 -[CIP011-link]: https://github.com/CIP011-404 -[CIP012-link]: https://github.com/CIP012-404 -[CIP013-link]: https://github.com/CIP013-404 -[CIP014-link]: https://github.com/CIP014-404 -[CIP015-link]: https://github.com/CIP015-404 -[CIP016-link]: https://github.com/CIP016-404 -[CIP017-link]: https://github.com/CIP017-404 -[CIP018-link]: https://github.com/CIP018-404 -[CIP019-link]: https://github.com/CIP019-404 -[CIP020-link]: https://github.com/CIP020-404 -[CIP021-link]: https://github.com/CIP021-404 -[CIP022-link]: https://github.com/CIP022-404 -[CIP023-link]: https://github.com/CIP023-404 -[CIP001-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP001 -[CIP002-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP002 -[CIP003-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP003 -[CIP004-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP004 -[CIP005-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP005 -[CIP006-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP006 -[CIP007-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP007 -[CIP008-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP008 -[CIP009-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP009 -[CIP010-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP010 -[CIP011-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP011 -[CIP012-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP012 -[CIP013-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP013 -[CIP014-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP014 -[CIP015-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP015 -[CIP016-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP016 -[CIP017-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP017 -[CIP018-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP018 -[CIP019-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP019 -[CIP020-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP020 -[CIP021-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP021 -[CIP022-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP022 -[CIP023-req]: https://github.com/IntersectMBO/cardano-test-plans/blob/087ecaba1584907d911da3b2dc64499f794eb3cd/docs/user-stories/01-cip1694.md#CIP023 diff --git a/src_docs/chang_user_stories_template.rst b/src_docs/chang_user_stories_template.rst index 009a8176b..71fcad472 100644 --- a/src_docs/chang_user_stories_template.rst +++ b/src_docs/chang_user_stories_template.rst @@ -23,241 +23,253 @@ CLI User Stories - |image-CLI1| - Obtain constitution hash for verification (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to obtain the hash of the off-chain text of a Constitution, **so that** I can compare it against the hash registered on-chain to verify its authenticity. - - |image-CLI2| - Generate hash of the off-chain constitution (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to generate the hash of the off-chain text for a proposed Constitution, **so that** the hash can be utilized in a governance action. - - |image-CLI3| - Generate Committee member cold key pair (CCM) - `→ `__ + `→ `__ - **As** a potential Constitutional Committee member, **I want** to generate COLD key pair, **so that** I can be proposed for the Committee in a Governance action. - - |image-CLI4| - Generate committee member hot key pair (CCM) - `→ `__ + `→ `__ - **As** potential Constitutional Committee member, **I want** to generate HOT key pair, **so that** I can authorise the Hot key to sign votes on behalf of the Cold key. - - |image-CLI5| - Authorization certificate (CCM) - `→ `__ + `→ `__ - **As** a Constitutional Committee member, **I want** to issue a authorization certificate from my cold key to a hot key, **so that** I can sign my votes using the hot key and keep the cold key in cold storage and can authorise a new hot key in case the original one is compromised. - - |image-CLI6| - Generate committee member key hash (CCM) - `→ `__ + `→ `__ - **As** a potential Constitutional Committee member, **I want** to generate the key hashes for my cold and hot keys, **so that** they can be used by third parties to propose me as a new Constitutional Committee member and for identification purposes once I’ve been elected as Constitutional Committee member. - - |image-CLI7| - Committee member resignation certificate (CCM) - `→ `__ + `→ `__ - **As** a Constitutional Committee member, **I want** to be able to generate a resignation certificate, **so that** I can submit it to the chain on a transaction to signal to the Ada holders that I’m resigning from my duties as CC member. - - |image-CLI8| - Generate DRep keys (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to generate Ed25519 keys, **so that** I can register as a DRep. - - |image-CLI9| - Generate DRep ID (DRep) - `→ `__ + `→ `__ - **As** a DRep, **I want** to generate a DRep Id, **so that** Ada holder can use it to delegate their votes to me and my voting record can be tracked. - - |image-CLI10| - DRep Registration Certificate Generation (DRep) - `→ `__ + `→ `__ - **As** a DRep, **I want** to generate a DRep registration certificate, **so that** I can submit it on a transaction and the Ada holders can delegate their votes to me. - - |image-CLI11| - DRep Retirement Certificate Generation (DRep) - `→ `__ + `→ `__ - **As** a DRep, **I want** to generate a DRep retirement (unregistration) certificate, **so that** I can submit it on a transaction and can get my DRep deposit back. - - |image-CLI12| - DRep Metadata Hash Generation (DRep) - `→ `__ + `→ `__ - **As** a DRep, **I want** to generate the hash of my DRep metadata, **so that** I can supply it when registering as DRep. - - |image-CLI13| - Create Update Constitution Governance Action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a governance action that updates the constitution, **so that** it can be submitted to the chain and be voted by the governance bodies. - - |image-CLI14| - Create Update Constitutional Committee Governance Action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a governance action that updates the Constitutional Committee, **so that** it can be submitted to the chain and be voted by the governance bodies. - - |image-CLI15| - Create Treasury Withdrawal Governance Action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a governance action to withdraw funds from the treasury, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: ``cardano-cli conway governance action create-treasury-withdrawal``. - - |image-CLI16| - Create info governance action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create an info governance action, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: ``cardano-cli conway governance action create-info``. - - |image-CLI17| - Create update protocol parameters governance action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a governance action to update protocol parameters, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: ``cardano-cli conway governance action create-protocol-parameters-update``. - - |image-CLI18| - Create no-confidence governance action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a no-confidence governance action, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: ``cardano-cli conway governance action create-no-confidence``. - - |image-CLI19| - Create Hard-fork initiation governance action (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a governance action to initiate a hardfork, **so that** it can be submitted to the chain and be voted by the governance bodies. Command: ``cardano-cli conway governance action create-hf-init``. - - |image-CLI20| - View governance action file (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to inspect the contents of a governance action file, **so that** I can verify it is correct before submitting it in a transaction. Command: ``cardano-cli conway governance action view``. - - |image-CLI21| - Create a governance action vote (DRep/SPO/CCM) - `→ `__ + `→ `__ - **As** a DRep, SPO or CC member, **I want** to create a vote for a governance action, **so that** I can include it in a transaction and submit it to the chain. Command: ``cardano-cli conway governance vote create``. - - |image-CLI22| - View vote file (DRep/SPO/CCM) - `→ `__ + `→ `__ - **As** a DRep, SPO or CC member, **I want** to inspect the contents of a vote file, **so that** I can verify it is correct before submitting it in a transaction. Command: ``cardano-cli conway governance vote view``. - - |image-CLI23| - Build a transaction with to submit proposal (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to build a transaction that includes a proposal (containing a governance action), **so that** I can later sign and submit to the chain. Command: ``transaction build``. - - |image-CLI24| - Build transaction for proposal vote (DRep, SPO, CCM) - `→ `__ + `→ `__ - **As** a DRep, SPO or CC member, **I want** to build a transaction that includes my vote on a particular governance action, **so that** I can later sign and submit to the chain. Command: ``transaction build``. - - |image-CLI25| - Build RAW transaction for proposal vote (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to build a transaction that includes a proposal (containing a governance action), **so that** I can later sign and submit to the chain. Command: ``transaction build-raw``. - - |image-CLI26| - Build RAW transaction for proposal vote (DRep/SPO/CCM) - `→ `__ + `→ `__ - **As** a DRep, SPO or CC member, **I want** to build a transaction that includes my vote on a particular governance action, **so that** I can later sign and submit to the chain. Command: ``transaction build-raw``. - - |image-CLI27| - Create stake registration certificate (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a conway cddl-compliant stake registration certificate. - - |image-CLI28| - Create stake deregistration certificate (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to create a conway cddl-compliant stake deregistration certificate to get my deposit back. - - |image-CLI29| - Delegate vote to DRep (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to delegate my votes to a DRep (registered or default), **so that** my stake is counted when the DRep votes. - - |image-CLI30| - Delegate stake to SPO and votes to DRep with a single certificate (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to delegate my stake to a stake pool AND my votes to a DRep (registered or default) with a single certificate. - - |image-CLI31| - Query governance state (ANY) - `→ `__ + `→ `__ - **As** any persona, **I want** to query the nodes for the currentGovernance state, **so that** I can inform my decisions. - - |image-CLI32| - Query committee state (CCM) - `→ `__ + `→ `__ - **As** a CC member, **I want** to query the Constitutional Committee state, **so that** I can find my expiration term and whether my hot key authorization certificate has been recorded on chain. - - |image-CLI33| - Query DRep state (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to query the DRep state, **so that** I can find detailed information about registered DReps. - - |image-CLI34| - Query DRep stake distribution (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder and DRep, **I want** to query the DRep stake distribution, **so that** I can find the weight (of the votes) of each DRep. - - |image-CLI35| - Expand query stake-address-info to show deposits and vote delegation (HOLDER) - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to query my stake address information, **so that** I can learn to which pool and DRep I’m delegating to and the value in lovelace of my deposits for delegating and for submitting governance actions. - - |image-CLI36| - - Register script based DReps. - `→ `__ + - Query constitution. + `→ `__ - - - |image-CLI37| - - Unregister script based DReps. - `→ `__ + - Register script based DReps. + `→ `__ - - - |image-CLI38| + - Unregister script based DReps. + `→ `__ + - + - + + - |image-CLI39| + - Script based CC GA. ``--add`` ``--remove``. + `→ `__ + - + - + + - |image-CLI40| - Script based CC GA. ``--add`` ``--remove``. - `→ `__ + `→ `__ - CIP1694 User Stories @@ -274,146 +286,658 @@ CIP1694 User Stories - Story Overview - - - |image-CIP1| + - |image-CIP1a| + - Constitution + `→ `__ + - **As** a Stakeholder, **I want** the ledger to maintain a record of the hash value of the current constitution together with a URL hosting the off-chain document, **so that** I can verify the authenticity of the off-chain document. + - + + - |image-CIP1b| - Hash value of the off-chain Constitution is recorded on-chain - `→ `__ + `→ `__ - **As** an Ada holder, **I want** the ledger state to record the hash of the current constitution, **so that** I can verify the authenticity of the off-chain document. - - |image-CIP2| - Node records Committee member key hashes, terms and status - `→ `__ + `→ `__ - **As** an Ada holder, **I want** the key hash of active and expired Committee Members and their terms to be registered on-chain, **so that** the system can count their votes. - - |image-CIP3| - Authorization Certificate - `→ `__ + `→ `__ - **As** a Committee Member, **I want** to submit a Cold to Hot key Authorization certificate, **so that** I can sign my votes using the hot key and keep my cold keys safely in cold storage. - - |image-CIP4| - Record cold credentials and authorization certificates on chain - `→ `__ + `→ `__ - **As** a committee member, **I want** node’s ledger state to accurately maintain the record of key-hashes, terms, and cold to hot key authorization maps for active and expired members, **so that** only votes from active Committee members are considered. - - |image-CIP5| - Replacing the constitutional committee via a governance action - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to be able to submit a governance action to replace all or part of the current constitutional committee, **so that** committee members that have lost confidence of Ada holders can be removed from their duties. - - |image-CIP6| - Size of the constitutional committee - `→ `__ + `→ `__ - **As** an Ada holder, **I want** the size of the constitutional committee to be adjustable (a protocol parameter), **so that** I can propose a different size via a governance action. - - |image-CIP7| - Committee voting threshold (quorum) can be modified - `→ `__ + `→ `__ - **As** an Ada holder, **I want** that the committee threshold (the fraction of committee required to ratify a gov action) is not fixed, **so that** I can propose a different threshold via a governance action. - - |image-CIP8| - Electing an empty committee - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to be able to elect an empty committee if the community wishes to abolish the constitutional committee entirely, **so that** governance actions don’t need the votes of a constitutional committee to be ratified. - - |image-CIP9| - Constitutional committee members have a limited term - `→ `__ + `→ `__ - **As** an Ada holder, **I want** each committee member to have an individual term, **so that** the system can have a rotation scheme. - - |image-CIP10| - Tracking committee member expirations - `→ `__ + `→ `__ - **As** an Ada holder, **I want** the system to keep track of the expiration epoch of each committee member, **so that** the information is publicly available in the ledger and can be consumed by anyone interested. - - |image-CIP11| - Automatically expire committee members that have completed their terms - `→ `__ + `→ `__ - **As** an Ada holder, **I want** the system to automatically expire committee members that have reached their term, **so that** only active committee members can vote. - - |image-CIP12| - Resign as committee member - `→ `__ + `→ `__ - **As** a committee member, **I want** to be able to resign my responsibilities, **so that** I can stop my responsibilities with the Cardano Community while minimizing the effects on the system. - - |image-CIP13| - State of no-confidence - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to submit a governance action to depose the current constitutional committee and put the system in a no-confidence-state, **so that** the community must elect a new constitutional committee. - - |image-CIP14| - Automatically enter a state of no-confidence - `→ `__ + `→ `__ - **As** an Ada holder, **I want** the system to automatically enter a state of no-confidence when the number of non-expired committee members falls below the minimal size of the committee, **so that** only update-committee governance actions can be ratified. - - |image-CIP15| - Proposal policy - `→ `__ + `→ `__ - **As** an Ada holder, **I want** a supplementary script to the constitution, **so that** some proposal types are automatically restricted. - - |image-CIP16| - Delegate representatives - `→ `__ + `→ `__ - **As** an Ada holder, **I want** stake credentials to delegate voting rights to a registered delegate representative (DRep), **so that** I can participate in the governance of the system. - - |image-CIP17| - Delegate to always abstain - `→ `__ + `→ `__ - **As** an Ada holder or an exchange, **I want** to delegate my stake to the predefined option ‘Abstain’, **so that** my stake is marked as not participating in governance. - - |image-CIP18| - Delegate to no-confidence - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to delegate my stake to the predefined DRep ‘No Confidence’, **so that** my stake is counted as a ‘Yes’ vote on every ‘No Confidence’ action and a ‘No’ vote on every other action. - - |image-CIP19| - Inactive DReps - `→ `__ + `→ `__ - **As** an Ada holder, **I want** DReps to be considered inactive if they don’t vote for ``drepActivity``-many epochs, **so that** their delegated stake does not count towards the active voting stake, this to avoid leaving the system in a state where no governance action can pass. - - |image-CIP20| - DRep credentials - `→ `__ + `→ `__ - **As** a DRep, **I want** to be identified by a credential (A verification key (Ed2559) or a Native or Plutus Script), **so that** I can register and vote on governance actions. - - |image-CIP21| - DRep registration certificate - `→ `__ + `→ `__ - **As** a DRep, **I want** to generate a registration certificate, **so that** the system recognizes my credentials and counts my votes on governance actions. - - |image-CIP22| - Vote delegation certificate - `→ `__ + `→ `__ - **As** an Ada holder, **I want** to generate a vote delegation certificate, **so that** I can delegate my voting rights. - - |image-CIP23| - DRep retirement certificate - `→ `__ + `→ `__ - **As** a DRep, **I want** to generate a retirement certificate, **so that** the system and Ada holders (delegators) know that I’m no longer voting on governance actions and they should redelegate. + - + + - |image-CIP24| + - DRep retirement certificate is applied immediately after being accepted on-chain + `→ `__ + - **As** a DRep, **I want** my retirement certificate to be applied immediately upon acceptance on-chain, **so that** the DRep deposit is returned in the same transaction, ensuring no waiting time. + - + + - |image-CIP25| + - per-DRep stake distribution + `→ `__ + - **As** an Ada Holder, **I want** the system to calculate the stake distribution per DRep, **so that** each DRep's vote is weighted according to the actual stake delegated to them. This per-DRep stake distribution should use the stake snapshot from the last epoch boundary. + - + + - |image-CIP26| + - Bootstrapping phase + `→ `__ + - + - + + - |image-CIP27| + - Block rewards withdrawals for stake credentials that are not delegating to a DRep + `→ `__ + - **As** a Stakeholder **I want** that when bootstrapping phase ends, the system blocks rewards withdrawals for stake credentials that are not delegating to a DRep. + - + + - |image-CIP28| + - Types of governance actions + `→ `__ + - **As** a Stakeholder **I want** the governance system to allow 7 different types of governance actions: + + 1. Motion of no-confidence A motion to create a state of no-confidence in the current Constitutional Committee + 2. New Constitutional Committee and/or threshold and/or terms Changes to the members of the Constitutional Committee and/or to its signature threshold and/or terms + 3. Update to the Constitution or proposal policy A modification to the Constitution or proposal policy, recorded as on-chain hashes + 4. Hard-Fork Initiation Triggers a non-backwards compatible upgrade of the network; requires a prior software upgrade + 5. Protocol Parameter Changes Any change to one or more updatable protocol parameters, excluding changes to major protocol versions ("hard forks") + 6. Treasury Withdrawals from the treasury + 7. Info + - + + - |image-CIP29| + - Governance action initiation + `→ `__ + - **As** a Stakeholder, **I want** any stakeholder to be able to submit a governance action without restrictions, beyond those necessary for a transaction of this type to be considered valid. + - + + - |image-CIP30| + - Governance action initiation + `→ `__ + - **As** a Stakeholder, **I want** Governance Actors to be required to provide a deposit in lovelace **so that** I can prevent the network from being spammed with meaningless governance actions. This deposit should be returned once the action is either ratified or expired. + - + + - |image-CIP31a| + - Contents of governance actions + `→ `__ + - **As** a Governance Actor, **I want** every governance action to contain the following elements: + + - a deposit amount + - a reward address to receive the deposit back + - an anchor for any metadata + - a hash digest value of the last enacted governance action of the same type (except for Treasury withdrawals and Info), to ensure the action can be processed by the node, accepted on-chain, and considered by the governance bodies. + - + + - |image-CIP31b| + - New committee/threshold GA additional data + `→ `__ + - **As** a Governance actor creating a New Committee governance action, **I want** to specify the following additional data: + + - The set of verification key hash digests for members to be removed. + - A map of verification key hash digests to epoch numbers for new members - and their term limit in epochs. + - A fraction representing the quorum threshold. So that I can create a governance action that aligns with the Conway CDDL ensuring it is comprehensible and can be accurately processed by the ledger. + - + + - |image-CIP31c| + - Update the constitution GA additional data + `→ `__ + - **As** a Governance actor creating a Update to the constitution GA, **I want** to include an anchor to the Constitution and an optional script hash of the proposal policy. + - + + - |image-CIP31d| + - Hardfork initiation GA additional data + `→ `__ + - **As** a Governance actor creating a hardfork initiation governance action, **I want** to include the new (greater) major protocol version. + - + + - |image-CIP31e| + - Protocol parameter changes GA additional data + `→ `__ + - **As** a Governance actor creating a protocol parameter change GA, **I want** to include the parameter to change and their new values. + - + + - |image-CIP31f| + - Treasury withdrawal GA additional data + `→ `__ + - **As** a governance actor creating a treasury withdrawal GA, **I want** to include a map from stake credentials to a positive number of Lovelace. + - + + - |image-CIP32| + - Governance action maximum lifetime + `→ `__ + - **As** a Stakeholder, **I want** governance actions submitted in a transaction and admitted to the chain to remain active for up to govActionLifetime epochs **so that** these actions are checked for ratification at every epoch boundary within their govActionLifetime. If an action gathers enough 'yes' votes to meet the thresholds of the governing bodies, it is ratified; otherwise, if it fails to gather sufficient 'yes' votes during the active period, the proposal expires and is removed. + - + + - |image-CIP33| + - Enactment of ratified actions + `→ `__ + - **As** a Stakeholder, **I want** ratified actions to be automatically enacted at the next epoch transition following their ratification. + - + + - |image-CIP34| + - Governance action deposit returns + `→ `__ + - **As** a Governance Actor, **I want** governance action deposits to be returned immediately after ratification or expiration. + - + + - |image-CIP35| + - Deposits count towards voting power (stake) + `→ `__ + - Governance action deposits are added to the deposit pot and count towards the stake of the reward address to which they will be returned, to ensure that the proposer can back their own action with their voting power. + - + + - |image-CIP36| + - Proposal policy + `→ `__ + - **As** a Stakeholder, **I want** governance actions that attempt to change protocol parameters or involve treasury withdrawals to include the supplementary script from the constitution in the witness set, either directly or via reference inputs, whenever such a script exists. + - + + - |image-CIP37| + - Multiple protocol parameter updates + `→ `__ + - **As** a Governance Actor **I want** a governance action to allow multiple protocol parameter changes at once. + - + + - |image-CIP38| + - Delay of ratification + `→ `__ + - **As** a Stakeholder, **I want** the ratification of all other governance actions to be delayed until the first epoch following the enactment of a successful motion of no-confidence, the election of a new Constitutional Committee, a constitutional change, or a hard-fork. + - + + - |image-CIP39| + - Motion of no confidence, requirements for ratification + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a Motion of no confidence governance action requires: + + - DRep votes to be >= than DrepVotingThreshold for NoConfidence as a percentage of active voting stake. + - SPO votes to be >= than PoolVotingThreshold for NoConfidence as a percentage of the total delegated active stake for the epoch + - + + - |image-CIP40| + - New committee/threshold (normal state), requirements for ratification + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a New committee/threshold (normal state) governance action requires: + + - DRep votes to be >= than DrepVotingThreshold for CommitteeNormalState as a percentage of active voting stake. + - SPO votes to be >= than PoolVotingThreshold for CommitteeNormalState as a percentage of the total delegated active stake for the epoch + - + + - |image-CIP41| + - New committee/threshold (state of no-confidence), requirements for ratification + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a New committee/threshold (state of no-confidence) governance action requires: + + - DRep votes to be >= than DrepVotingThreshold dvtCommitteeNoConfidence as a percentage of active voting stake. + - SPO votes to be >= than pvtCommitteeNoConfidence as a percentage of the total delegated active stake for the epoch + - + + - |image-CIP42| + - Update to the Constitution or proposal policy, requirements for ratification + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a Update to the Constitution or proposal policy governance action requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than DrepVotingThreshold for UpdateToConstitution as a percentage of active voting stake. + - + + - |image-CIP43| + - Hard-fork initiation, requirements for ratification + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a Hard-fork initiation governance action requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than DrepVotingThreshold for HardForkInitiation as a percentage of active voting stake. + - SPO votes to be >= than PoolVotingThreshold for HardForkInitiation as a percentage of the total delegated active stake for the epoch + - + + - |image-CIP44| + - Protocol parameter changes, network group + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a network group protocol parameter change requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than DrepVotingThreshold for PPNetworkGroup as a percentage of active voting stake + - + + - |image-CIP45| + - Protocol parameter changes, economic group + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a economic group protocol parameter change requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than DrepVotingThreshold for PPEconomicGroup as a percentage of active voting stake + - + + - |image-CIP46| + - Protocol parameter changes, technical group + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a technical group protocol parameter change requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than `DrepVotingThreshold` for PPTechnicalGroup as a percentage of active voting stake + - + + - |image-CIP47| + - Protocol parameter changes, governance group + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a governance group protocol parameter change requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than DrepVotingThreshold PPGovGroup as a percentage of active voting stake + - + + - |image-CIP48| + - Treasury withdrawal, requirements for ratification + `→ `__ + - **As** a Stakeholder **I want** that the ratification of a Treasury withdrawal governance action requires: + + - A minimum of CommitteeThreshold members must approve the Governance action + - DRep votes to be >= than DrepVotingThreshold for TreasuryWithdrawal as a percentage of active voting stake + - + + - |image-CIP49| + - The network group protocol parameters + `→ `__ + - **As** a Stakeholder **I want** the network group consist of: + + - maximum block body size (maxBBSize) + - maximum transaction size (maxTxSize) + - maximum block header size (maxBHSize) + - maximum size of a serialized asset value (maxValSize) + - maximum script execution units in a single transaction (maxTxExUnits) + - maximum script execution units in a single block (maxBlockExUnits) + - maximum number of collateral inputs (maxCollateralInputs) + - + + - |image-CIP50| + - The economic group protocol parameters + `→ `__ + - **As** a Stakeholder **I want** that the economic group consist of: + + - minimum fee coefficient (minFeeA) + - minimum fee constant (minFeeB) + - delegation key Lovelace deposit (keyDeposit) + - pool registration Lovelace deposit (poolDeposit) + - monetary expansion (rho) + - treasury expansion (tau) + - minimum fixed rewards cut for pools (minPoolCost) + - minimum Lovelace deposit per byte of serialized UTxO (coinsPerUTxOByte) + - prices of Plutus execution units (prices) + - + + - |image-CIP51| + - The technical group protocol parameters + `→ `__ + - **As** a Stakeholder **I want** that the technical group consist of: + + - pool pledge influence (a0) + - pool retirement maximum epoch (eMax) + - desired number of pools (nOpt) + - Plutus execution cost models (costModels) + - proportion of collateral needed for scripts (collateralPercentage) + - + + - |image-CIP52| + - The governance group protocol parameters + `→ `__ + - **As** a Stakeholder **I want** that the governance group consist of: + + - governance voting thresholds + - governance action maximum lifetime in epochs (govActionLifetime) + - governance action deposit (govActionDeposit) + - DRep deposit amount (drepDeposit) + - DRep activity period in epochs (drepActivity) + - minimal constitutional committee size (ccMinSize) + - maximum term length (in epochs) for the constitutional committee members (ccMaxTermLength) + - + + - |image-CIP53| + - Thresholds for Info is set to 100% + `→ `__ + - **As** a Stakeholder **I want** the two thresholds for the Info action be set to 100% since setting it any lower would result in not being able to poll above the threshold. + - + + - |image-CIP54| + - Preventing accidental clash of actions of the same type + `→ `__ + - **As** a Stakeholder **I want** all governance actions, except for Treasury withdrawals and Infos, to include the governance action ID of the most recently enacted action of the same type **so that** accidental clashes between actions can be prevented. + - + + - |image-CIP55| + - Governance action enactment prioritization + `→ `__ + - **As** a Stakeholder **I want** actions that have been ratified in the current epoch to be prioritized for enactment in the following order: + + - Motion of no-confidence + - New committee/threshold + - Update to the Constitution or proposal policy + - Hard Fork initiation + - Protocol parameter changes + - Treasury withdrawals + - Info + - + + - |image-CIP56| + - Governance action order of enactment + `→ `__ + - **As** a Stakeholder **I want** governance actions to be enacted in the order of their acceptance to the chain. + - + + - |image-CIP57| + - Governance actions automatic enactment + `→ `__ + - **As** a Stakeholder **I want** ratified actions to be automatically enacted at the next epoch boundary. + - + + - |image-CIP58| + - No duplicate committee members + `→ `__ + - **As** a Stakeholder **I want** each pair of credentials in a committee to be unique, ensuring no duplicate committee members. + - + + - |image-CIP59| + - Governance action ID + `→ `__ + - **As** a Stakeholder **I want** the transaction ID and index of the transaction that submits the governance action to the chain to serve as the governance action ID **so that** this ID shall would be used for casting votes. + - + + - |image-CIP60| + - Vote transactions contents + `→ `__ + - **As** a Stakeholder **I want** each vote transaction to consist of the following elements: + + - a governance action ID + - a role (Constitutional Committee member, DRep, or SPO) + - a governance credential witness for the role + - an optional anchor for information relevant to the vote (as defined above) + - a 'Yes'/'No'/'Abstain' vote. + - + + - |image-CIP61| + - SPO and DREP votes are proportional to the stake delegated to them + `→ `__ + - For SPOs and DReps, the number of votes cast ('Yes', 'No', or 'Abstain') shall be proportional to the amount of Lovelace delegated to them at the time the action is checked for ratification. + - + + - |image-CIP62| + - CC votes + `→ `__ + - **As** a Stakeholder **I want** each current committee member to have one vote. + - + + - |image-CIP63| + - Active voting stake + `→ `__ + - **As** a Stakeholder **I want** the active voting stake to be the total registered stake minus the abstain votes stake (both credential DReps and AlwaysAbstain). + - + + - |image-CIP64| + - Unregistered stake behaves like Abstain vote + `→ `__ + - **As** a Stakeholder **I want** unregistered stake to be treated as an abstain vote **so that** it should not count towards the active voting stake. + - + + - |image-CIP65| + - Registered stake that did not vote behaves like a 'No' vote + `→ `__ + - **As** a Stakeholder **I want** any registered stake that did not submit a vote, whether through its DRep or SPO, to be counted as a 'No' vote. + - + + - |image-CIP66| + - New Plutus script purpose for scripts + `→ `__ + - **As** a Stakeholder **I want** a new voting purpose for Plutus scripts. + - + + - |image-CIP67| + - Any new vote overrides any older vote for the same credential and role + `→ `__ + - **As** a Stakeholder **I want** new votes on a governance action to override any previous votes for the same credential and role **so that** individuals could change their minds. + - + + - |image-CIP68| + - Voting ends when an action is ratified and transactions containing further votes are invalid + `→ `__ + - **As** a Stakeholder **I want** the voting period to terminate immediately after an action is ratified or expires. + - + + - |image-CIP69| + - Governance state tracking governance action progress + `→ `__ + - **As** a Stakeholder **I want** the governance state section of the ledger to track the progress of governance actions to include: capturing votes, tracking the expiration epoch, and other relevant information until the actions are either ratified or expired. + - + + - |image-CIP70| + - Remove MIR certificates + `→ `__ + - **As** a Stakeholder **I want** MIR certificates to be removed **so that** the only way to withdraw funds from the treasury is through a ratified Treasury Withdrawal governance action. + - + + - |image-CIP71| + - Remove genesis certificates + `→ `__ + - **As** a Stakeholder **I want** genesis certificates to be removed. In Conway era these are no longer useful or required. + - + + - |image-CIP72| + - Changes to the existing ledger rules + `→ `__ + - **As** a Stakeholder **I want** the ledger to adjust its rules to accommodate for the governance features, i.e. Delegations, Certificates, Proposals, Votes, Ratification, Enactment. + - + + - |image-CIP73| + - Changes to the local state-query protocol + `→ `__ + - **As** a Stakeholder **I want** the ledger to adjust the local state query protocol to accommodate for new queries that provide insights about governance, at least: + + - Governance actions currently staged for enactment + - Governance actions under ratification, with the total and percentage of yes stake, no stake and abstain stake + - The current constitutional committee, and constitution hash digest + - + + - |image-CIP74| + - Ratification of Security related parameters + `→ `__ + - The security relevant protocol parameters require the approval of the three governing bodies. + + - maxBBSize + - maxTxSize + - maxBHSize + - maxValSize + - maxBlockExUnits + - minFeeA + - minFeeB + - coinsPerUTxOByte + - govActionDeposit + - minFeeRefScriptsCoinsPerByte + - + + - |image-CIP75| + - Auditor review of current network parameters + `→ `__ + - **As** an Auditor, **I want** to audit the current state of the network parameters, **so that** I can ensure they align with the governance decisions. + - + + - |image-CIP76| + - Auditor review of current technical parameters + `→ `__ + - **As** an Auditor, **I want** to audit the current technical parameters, including consenus and cost models **so that** I can ensure their compliance with the network parameters specified. + - + + - |image-CIP77| + - Auditor review of current economic parameters + `→ `__ + - **As** an Auditor, **I want** to audit the current economic parameters, including parameters affecting transaction fees, taxes, and staking rewards **so that** I can assess their impact on the network's economy. + - + + - |image-CIP78| + - Auditor review of current governance parameters and voting thresholds + `→ `__ + - **As** an Auditor, **I want** to audit the current governance parameters and voting thresholds for governance actions to fail or ratify **so that** I can verify their appropriateness and adherence to governance rules, adherence to the constitution, and enforcement of voting thresholds. + - + + - |image-CIP79| + - Auditor review of current state of the treasury + `→ `__ + - **As** an Auditor, **I want** to audit the current state of the treasury, including the total amount of Ada, **so that** I can assess the current balance and the system's financial health. + - + + - |image-CIP80| + - Auditor needs access to historical proposals affecting network parameters + `→ `__ + - **As** an Auditor, **I want** to access and review the history of proposals related to network parameters, including their outcomes, **so that** I can track governance effectiveness over time. + - + + - |image-CIP81| + - Auditor needs access to historical proposals affecting technical parameters + `→ `__ + - **As** an Auditor, **I want** to access and review the history of proposals related to technical parameters, including both ratified and failed proposals, **so that** I can understand technical evolution and parameter change impact. + - + + - |image-CIP82| + - Auditor needs access to historical proposals affecting economic parameters + `→ `__ + - **As** an Auditor, **I want** to access and review the history of proposals related to economic parameters, focusing on their ratification status, **so that** I can evaluate economic policy changes. + - + + - |image-CIP83| + - Auditor needs access to the historical record of all governance proposals and voting thresholds + `→ `__ + - **As** an Auditor, **I want** to access history changes to governance parameters, the proposals, and the voting thresholds, **so that** I can audit the changes made over time and verify compliance with governance rules, and evaluate the impact of these changes on governance actions' outcomes, with the primary purpose to verify voting thresholds were enforced. + - + + - |image-CIP84| + - Auditor needs access to the history of treasury withdrawals + `→ `__ + - **As** an Auditor, **I want** to audit the history of treasury withdrawals, including amounts, dates, and recipient wallet addresses, **so that** I can ensure transparency and accountability. .. |Success Badge| image:: https://img.shields.io/badge/success-green .. |Failure Badge| image:: https://img.shields.io/badge/failure-red .. |Uncovered Badge| image:: https://img.shields.io/badge/uncovered-grey + .. |image-CLI1| image:: https://img.shields.io/badge/CLI001-grey :target: https://github.com/CLI001-404 .. |image-CLI2| image:: https://img.shields.io/badge/CLI002-grey @@ -490,8 +1014,15 @@ CIP1694 User Stories :target: https://github.com/CLI037-404 .. |image-CLI38| image:: https://img.shields.io/badge/CLI038-grey :target: https://github.com/CLI038-404 -.. |image-CIP1| image:: https://img.shields.io/badge/CIP001-grey - :target: https://github.com/CIP001-404 +.. |image-CLI39| image:: https://img.shields.io/badge/CLI039-grey + :target: https://github.com/CLI038-404 +.. |image-CLI40| image:: https://img.shields.io/badge/CLI040-grey + :target: https://github.com/CLI038-404 + +.. |image-CIP1a| image:: https://img.shields.io/badge/CIP001a-grey + :target: https://github.com/CIP001a-404 +.. |image-CIP1b| image:: https://img.shields.io/badge/CIP001b-grey + :target: https://github.com/CIP001b-404 .. |image-CIP2| image:: https://img.shields.io/badge/CIP002-grey :target: https://github.com/CIP002-404 .. |image-CIP3| image:: https://img.shields.io/badge/CIP003-grey @@ -536,3 +1067,135 @@ CIP1694 User Stories :target: https://github.com/CIP022-404 .. |image-CIP23| image:: https://img.shields.io/badge/CIP023-grey :target: https://github.com/CIP023-404 +.. |image-CIP24| image:: https://img.shields.io/badge/CIP024-grey + :target: https://github.com/CIP024-404 +.. |image-CIP25| image:: https://img.shields.io/badge/CIP025-grey + :target: https://github.com/CIP025-404 +.. |image-CIP26| image:: https://img.shields.io/badge/CIP026-grey + :target: https://github.com/CIP026-404 +.. |image-CIP27| image:: https://img.shields.io/badge/CIP027-grey + :target: https://github.com/CIP027-404 +.. |image-CIP28| image:: https://img.shields.io/badge/CIP028-grey + :target: https://github.com/CIP028-404 +.. |image-CIP29| image:: https://img.shields.io/badge/CIP029-grey + :target: https://github.com/CIP029-404 +.. |image-CIP30| image:: https://img.shields.io/badge/CIP030-grey + :target: https://github.com/CIP030-404 +.. |image-CIP31a| image:: https://img.shields.io/badge/CIP031a-grey + :target: https://github.com/CIP031a-404 +.. |image-CIP31b| image:: https://img.shields.io/badge/CIP031b-grey + :target: https://github.com/CIP031b-404 +.. |image-CIP31c| image:: https://img.shields.io/badge/CIP031c-grey + :target: https://github.com/CIP031c-404 +.. |image-CIP31d| image:: https://img.shields.io/badge/CIP031d-grey + :target: https://github.com/CIP031d-404 +.. |image-CIP31e| image:: https://img.shields.io/badge/CIP031e-grey + :target: https://github.com/CIP031e-404 +.. |image-CIP31f| image:: https://img.shields.io/badge/CIP031f-grey + :target: https://github.com/CIP031f-404 +.. |image-CIP32| image:: https://img.shields.io/badge/CIP032-grey + :target: https://github.com/CIP032-404 +.. |image-CIP33| image:: https://img.shields.io/badge/CIP033-grey + :target: https://github.com/CIP033-404 +.. |image-CIP34| image:: https://img.shields.io/badge/CIP034-grey + :target: https://github.com/CIP034-404 +.. |image-CIP35| image:: https://img.shields.io/badge/CIP035-grey + :target: https://github.com/CIP035-404 +.. |image-CIP36| image:: https://img.shields.io/badge/CIP036-grey + :target: https://github.com/CIP036-404 +.. |image-CIP37| image:: https://img.shields.io/badge/CIP037-grey + :target: https://github.com/CIP037-404 +.. |image-CIP38| image:: https://img.shields.io/badge/CIP038-grey + :target: https://github.com/CIP038-404 +.. |image-CIP39| image:: https://img.shields.io/badge/CIP039-grey + :target: https://github.com/CIP039-404 +.. |image-CIP40| image:: https://img.shields.io/badge/CIP040-grey + :target: https://github.com/CIP040-404 +.. |image-CIP41| image:: https://img.shields.io/badge/CIP041-grey + :target: https://github.com/CIP41-404 +.. |image-CIP42| image:: https://img.shields.io/badge/CIP042-grey + :target: https://github.com/CIP042-404 +.. |image-CIP43| image:: https://img.shields.io/badge/CIP043-grey + :target: https://github.com/CIP043-404 +.. |image-CIP44| image:: https://img.shields.io/badge/CIP044-grey + :target: https://github.com/CIP044-404 +.. |image-CIP45| image:: https://img.shields.io/badge/CIP045-grey + :target: https://github.com/CIP045-404 +.. |image-CIP46| image:: https://img.shields.io/badge/CIP046-grey + :target: https://github.com/CIP046-404 +.. |image-CIP47| image:: https://img.shields.io/badge/CIP047-grey + :target: https://github.com/CIP047-404 +.. |image-CIP48| image:: https://img.shields.io/badge/CIP048-grey + :target: https://github.com/CIP048-404 +.. |image-CIP49| image:: https://img.shields.io/badge/CIP049-grey + :target: https://github.com/CIP049-404 +.. |image-CIP50| image:: https://img.shields.io/badge/CIP050-grey + :target: https://github.com/CIP050-404 +.. |image-CIP51| image:: https://img.shields.io/badge/CIP051-grey + :target: https://github.com/CIP051-404 +.. |image-CIP52| image:: https://img.shields.io/badge/CIP052-grey + :target: https://github.com/CIP052-404 +.. |image-CIP53| image:: https://img.shields.io/badge/CIP053-grey + :target: https://github.com/CIP053-404 +.. |image-CIP54| image:: https://img.shields.io/badge/CIP054-grey + :target: https://github.com/CIP054-404 +.. |image-CIP55| image:: https://img.shields.io/badge/CIP055-grey + :target: https://github.com/CIP055-404 +.. |image-CIP56| image:: https://img.shields.io/badge/CIP056-grey + :target: https://github.com/CIP056-404 +.. |image-CIP57| image:: https://img.shields.io/badge/CIP057-grey + :target: https://github.com/CIP057-404 +.. |image-CIP58| image:: https://img.shields.io/badge/CIP058-grey + :target: https://github.com/CIP058-404 +.. |image-CIP59| image:: https://img.shields.io/badge/CIP059-grey + :target: https://github.com/CIP059-404 +.. |image-CIP60| image:: https://img.shields.io/badge/CIP060-grey + :target: https://github.com/CIP060-404 +.. |image-CIP61| image:: https://img.shields.io/badge/CIP061-grey + :target: https://github.com/CIP061-404 +.. |image-CIP62| image:: https://img.shields.io/badge/CIP062-grey + :target: https://github.com/CIP062-404 +.. |image-CIP63| image:: https://img.shields.io/badge/CIP063-grey + :target: https://github.com/CIP063-404 +.. |image-CIP64| image:: https://img.shields.io/badge/CIP064-grey + :target: https://github.com/CIP064-404 +.. |image-CIP65| image:: https://img.shields.io/badge/CIP065-grey + :target: https://github.com/CIP065-404 +.. |image-CIP66| image:: https://img.shields.io/badge/CIP066-grey + :target: https://github.com/CIP066-404 +.. |image-CIP67| image:: https://img.shields.io/badge/CIP067-grey + :target: https://github.com/CIP067-404 +.. |image-CIP68| image:: https://img.shields.io/badge/CIP068-grey + :target: https://github.com/CIP068-404 +.. |image-CIP69| image:: https://img.shields.io/badge/CIP069-grey + :target: https://github.com/CIP069-404 +.. |image-CIP70| image:: https://img.shields.io/badge/CIP070-grey + :target: https://github.com/CIP070-404 +.. |image-CIP71| image:: https://img.shields.io/badge/CIP071-grey + :target: https://github.com/CIP071-404 +.. |image-CIP72| image:: https://img.shields.io/badge/CIP072-grey + :target: https://github.com/CIP072-404 +.. |image-CIP73| image:: https://img.shields.io/badge/CIP073-grey + :target: https://github.com/CIP073-404 +.. |image-CIP74| image:: https://img.shields.io/badge/CIP074-grey + :target: https://github.com/CIP074-404 +.. |image-CIP75| image:: https://img.shields.io/badge/CIP075-grey + :target: https://github.com/CIP075-404 +.. |image-CIP76| image:: https://img.shields.io/badge/CIP076-grey + :target: https://github.com/CIP076-404 +.. |image-CIP77| image:: https://img.shields.io/badge/CIP077-grey + :target: https://github.com/CIP077-404 +.. |image-CIP78| image:: https://img.shields.io/badge/CIP078-grey + :target: https://github.com/CIP078-404 +.. |image-CIP79| image:: https://img.shields.io/badge/CIP079-grey + :target: https://github.com/CIP079-404 +.. |image-CIP80| image:: https://img.shields.io/badge/CIP080-grey + :target: https://github.com/CIP080-404 +.. |image-CIP81| image:: https://img.shields.io/badge/CIP081-grey + :target: https://github.com/CIP081-404 +.. |image-CIP82| image:: https://img.shields.io/badge/CIP082-grey + :target: https://github.com/CIP082-404 +.. |image-CIP83| image:: https://img.shields.io/badge/CIP083-grey + :target: https://github.com/CIP083-404 +.. |image-CIP84| image:: https://img.shields.io/badge/CIP084-grey + :target: https://github.com/CIP084-404