Skip to main content

System level user stories from CIP1694

forbid push to main

PersonaDescription
Ada holderAny individual or entity holding ada but not participating in the protocol 
Stake holderAny individual or entity holding ada and participating in the protocol by delegating stake to a pool
Committee Member (CC)An individual or entity appointed to be part of the constitutional committee
Committee OperatorA technical individual in control of a hot credential authorized by a CC to submit votes to the chain
Delegate representative (DRep)An individual or entity that registers as actively take part on the governance of the system  
Governance actorA stake holder that initiates a governance action   
Stake pool operatorA technical individual running a stake pool for himself, or for another individual or entity
AuditorA third party security expert, regulatory entitity, or any party auditing governance state, treasury, and history

User Stories

User Story IdDescriptionUser StoryComponent
CIP.001aConstitutionAs a Stakeholder, I want a Cardano Constitution that captures the core values and principles so that governance bodies can compare governance actions to it and decide whether it is in line with the community's values and principles.Off-chain
CIP.001bHash value of the off-chain Constitution is recorded on-chainAs 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.Node
CIP.002Node records Committee member key hashes, terms and statusAs a Stakeholder, 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.Node
CIP.003Authorization CertificateAs a Committee Member, I want to generate and submit a Cold to Hot Credential Authorization certificate so that I can sign votes using the hot credential and keep the cold credential in safe storage.Node / CLI
CIP.004Record cold credentials and authorization certificates on chainAs a committee member, I want the ledger to accurately maintain the record of key-hashes, terms, and cold to hot credentials authorization maps for active and expired members so that only votes from active Committee members count.Node
CIP.005Replacing the Constitutional Committee via a governance actionAs a Governance Actor, I want to submit a governance action to replace all or part of the current constitutional committee so that committee members who have lost the confidence of stakeholders can be removed from their role.Node/CLI/Govtool
CIP.006Size of the Constitutional CommitteeAs a Stakeholder, I want the minimal size of the Constitutional Committee to be a protocol parameter so that it can be adjusted via a governance action.Node/CLI/Govtool
CIP.007Committee voting threshold (quorum) can be modifiedAs a Stakeholder, I want the committee quorum (the fraction of committee required to ratify a gov action) to be not fixed so that it can be modified via a governance action.Node/CLI/Govtool
CIP.008Electing an empty committeeAs a Stakeholder, I want to have the option of electing an empty committee so that governance actions don’t need the votes of a Constitutional Committee to be ratified.Node
CIP.009Constitutional Committee members have a limited termAs a Stakeholder and as a Committee Member, I want each Committee Member to have an individual term so that the system can have a rotation scheme.Node
CIP.010Tracking committee member expirationsAs a Stakeholder, 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 the community can plan ahead and agree on new CC member.Node
CIP.011Automatically expire committee members that have completed their termsAs a Stakeholder and as a Committee Member, I want the system to automatically expire committee members that have reached their term so that only votes from active committee members count towards ratification.Node
CIP.012Resign as committee memberAs a committee member, I want to be able to resign my responsibilities with the Cardano Community while minimizing the effects on the system.Node / CLI
CIP.013State of no-confidenceAs a Stakeholder, 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.Node / CLI / GovTool
CIP.014Constitutional Committee below committeeMinSizeAs a Stakeholder, I want, when the number of non-expired committee members falls below the minimal size of the committee, only update-committee and no-confidence governance actions can be ratified.Node
CIP.015Proposal policyAs a Stakeholder, I want the option for the constitution to be accompanied by a script so that governance actions proposing parameter changes or treasury withdrawals that violate accepted limits are automatically restricted.Node
CIP.016Delegate votes to a registered Delegate RepresentativesAs a Stakeholder, I want to delegate voting rights to a registered Delegate Representative (DRep) so that I can participate in the governance of the system backing up votes with my stake.Node / CLI / GovTool
CIP.017Delegate to always abstainAs a Stakeholder, I want to delegate my stake to the predefined option 'Abstain' so that my stake is marked as not participating in governance.Node / CLI / GovTool / cardano-wallet
CIP.018Delegate to no-confidenceAs a Stakeholder, 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.Node / CLI / GovTool / cardano-wallet
CIP.019Inactive DRepsAs 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, to avoid leaving the system in a state where no governance action can pass.Node
CIP.020DRep credentialsAs a DRep, I want to be identified by a credential that can be a verification key (Ed25519) or a Native or Plutus Script, so that I can register and vote on governance actions with a signing key or with the evaluation of a script logic.Node
CIP.021DRep registration certificateAs a DRep, I want to generate and submit a registration certificate so that the system recognizes my credentials and counts my votes on governance actions proportionally to the voting stake delegated to me.Node / CLI / GovTool
CIP.022Vote delegation certificateAs a Stakeholder, I want to generate a vote delegation certificate, enabling me to delegate my voting rights to either a default or a registered DRep.Node / CLI / GovTool / cardano-wallet
CIP.023DRep retirement certificateAs a DRep, I want to generate and submit a retirement certificate so that the system and stakeholders know that I’m no longer voting on governance actions and that stakeholders should re-delegate.Node / CLI / GovTool
CIP.024DRep retirement certificate is applied immediately after being accepted on-chainAs a DRep, I want my retirement certificate to be applied immediately upon acceptance on-chain, with the DRep deposit returned in the same transaction, ensuring no waiting time.Node / CLI / GovTool
CIP.025per-DRep stake distributionAs an Ada Holder, I want the system to calculate the stake distribution per DRep, ensuring 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.Node
CIP.026Bootstrapping phasePlease refer to LINK-
CIP.027As a Stakeholder I want that when bootstrapping phase ends, the system blocks rewards withdrawals for stake credentials that are not delegating to a DRep.Node
CIP.028Types of governance actionsAs 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
Node
CIP.029Governance action initiationAs 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.Node/CLI/GovTool
CIP.030Governance actions must provide a depositAs a Stakeholder, I want Governance Actors to be required to provide a deposit in lovelace. This deposit should be returned once the action is either ratified or expired, to prevent the network from being spammed with meaningless governance actions.Node/CLI/GovTool
CIP.031aContents of governance actionsAs 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.
Node/CLI/GovTool
CIP.031bNew committee/threshold GA additional dataAs 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.
Node/CLI/GovTool
CIP.031cUpdate the constitution GA additional dataAs a governance actor creating a Update to the constitution GA, I wan to include
- An anchor to the Constitution and an optional script hash of the proposal policy.
Node/CLI/GovTool
CIP.031dHardfork initiation GA additional dataAs a governance actor creating a hardfork initiation governance action, I want t include
- The new (greater) major protocol version.
Node/CLI/GovTool
CIP.031eProtocol parameter changes GA additional dataAs a governance actor creating a protocol parameter change GA, I want to include
- The parameter to change and their new values.
Node/CLI/GovTool
CIP.031fTreasury withdrawal GA additional dataAs a governance actor creating a treasury withdrawal GA, I want to include
- A map from stake credentials to a positive number of Lovelace.
Node/CLI/GovTool
CIP.032As a Stakeholder, I want governance actions submitted in a transaction and admitted to the chain to remain active for up to govActionLifetime epochs. These actions should be 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.Node
CIP.033Enactment of ratified actionsAs a Stakeholder, I want ratified actions to be automatically enacted at the next epoch transition following their ratification.Node
CIP.034Governance action deposit returnsAs a Governance Actor, I want governance action deposits to be returned immediately after ratification or expiration.Node
CIP.035Deposits 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.Node
CIP.036Proposal policyAs 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.Node/CLI/GovTool
CIP.037Multiple protocol parameter updatesAs a Governance Actor I want a governance action to allow multiple protocol parameter changes at once.Node/CLI/GovTool
CIP.038Delay of ratificationAs 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.Node
CIP.039Motion of no confidence requirements for ratificationAs an stake holder 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
Node
CIP.040New committee/threshold (normal state) Requirements for ratificationAs an stake holder 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
Node
CIP.041New committee/threshold (state of no-confidence) Requirements for ratificationAs an stake holder 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
Node
CIP.042Update to the Constitution or proposal policy Requirements for ratificationAs an stake holder 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.
Node
CIP.043Hard-fork initiation Requirements for ratificationAs an stake holder 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
Node
CIP.044Protocol parameter changes, network groupAs an stake holder 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
Node
CIP.045Protocol parameter changes, economic groupAs an stake holder 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
Node
CIP.046Protocol parameter changes, technical groupAs an stake holder 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
Node
CIP.047Protocol parameter changes, governance groupAs an stake holder 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
Node
CIP.048Treasury withdrawal Requirements for ratification.As an stake holder 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
Node
CIP.049The network group protocol parametersAs an stake holder 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)
Node
CIP.050The economic group protocol parametersAs an stake holder 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)
Node
CIP.051The technical group protocol parametersAs an stake holder 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)
Node
CIP.052The governance group protocol parametersAs an stake holder 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)
CIP.053Thresholds for Info is set to 100%As an stake holder 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.Node
CIP.054Preventing accidental clash of actions of the same typeAs 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. This is to prevent accidental clashes between actions.Node/CLI/GovTool
CIP.055Governance action enactment prioritizationAs 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
Node
CIP.056Governance action order of enactmentAs a Stakeholder, I want governance actions to be enacted in the order of their acceptance to the chain.Node
CIP.057Governance actions automatic enactmentAs a Stakeholder, I want ratified actions to be automatically enacted at the next epoch boundary.Node
CIP.058No duplicate committee membersAs a Stakeholder, I want each pair of credentials in a committee to be unique, ensuring no duplicate committee members.Node
CIP.059Governance action IDAs 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. This ID shall be used for casting votes.Node
CIP.060Vote transactions contentsAs 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.
Node/CLI/GovTool
CIP.061SPO and DREP votes are proportional to the stake delegated to themFor 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.Node
CIP.062CC votesAs an stake holder I want each current committee member to have one vote.Node
CIP.063Active voting stakeAs a Stakeholder I want the active voting stake to be the total registered stake minus the abstain votes stake (both credential DReps and AlwaysAbstain)Node
CIP.064Unregistered stake behaves like Abstain vote.As a Stakeholder, I want unregistered stake to be treated as an abstain vote; meaning, it should not count towards the active voting stake.Node
CIP.065Registered stake that did not vote behaves like a 'No' voteAs 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.Node
CIP.066New Plutus script purpose for scriptsAs an stake holder I want a new voting purpose for Plutus scriptsPlutus
CIP.067Any new vote overrides any older vote for the same credential and roleAs a Stakeholder, I want new votes on a governance action to override any previous votes for the same credential and role, allowing individuals to change their minds.Node
CIP.068Voting ends when an action is ratified and transactions containing further votes are invalidAs a Stakeholder, I want the voting period to terminate immediately after an action is ratified or expires.Node
CIP.069Governance state tracking governance action progressAs 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.Node
CIP.070Remove MIR certificatesAs a Stakeholder, I want MIR certificates to be removed, ensuring that the only way to withdraw funds from the treasury is through a ratified Treasury Withdrawal governance action.Node
CIP.071Remove genesis certificatesAs a Stakeholder, I want genesis certificates to be removed. In Conway era these are no longer useful or required.Node
CIP.072Changes to the existing ledger rulesAs an stake holder I want the ledger to adjust its rules to accommodate for the governance features, i.e. Delegations, Certificates, Proposals, Votes, Ratification, Enactment.Node
CIP.073Changes to the local state-query protocolAs an stake holder 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
Node7CLI/GovTool
CIP.074Ratification of Security related parametersThe security relevant protocol parameters require the approval of the three governing bodies.
* maxBBSize
* maxTxSize
* maxBHSize
* maxValSize
* maxBlockExUnits
* minFeeA
* minFeeB
* coinsPerUTxOByte
* govActionDeposit
*minFeeRefScriptsCoinsPerByte
Node
CIP.075Auditor review of current network parametersAs an Auditor, I want to audit the current state of the network parameters so that I can ensure they align with the governance decisions.GovTool/db-sync
CIP.076Auditor review of current technical parametersAs an Auditor, I want to audit the current technical parameters, including consenus and cost models, to verify their compliance with the network parameters specified.GovTool/db-sync
CIP.077Auditor review of current economic parametersAs an Auditor, I want to audit the current economic parameters, including parameters affecting transaction fees, taxes, and staking rewards, to assess their impact on the network's economy.GovTool/db-sync
CIP.078Auditor review of current governance parameters and voting thresholdsAs an Auditor, I want to audit the current governance parameters and voting thresholds for governance actions to fail or ratify to verify their appropriateness and adherence to governance rules, adherence to the constitution, and enforcement of voting thresholds.GovTool/db-sync
CIP.079Auditor review of current state of the treasuryAs an Auditor, I want to audit the current state of the treasury, including the total amount of Ada, to assess the current balance and the system's financial health.GovTool/db-sync
CIP.080Auditor needs access to historical proposals affecting network parametersAs an Auditor, I want to access and review the history of proposals related to network parameters, including their outcomes, to track governance effectiveness over time.GovTool/db-sync
CIP.081Auditor needs access to historical proposals affecting technical parametersAs an Auditor, I want to access and review the history of proposals related to technical parameters, including both ratified and failed proposals, to understand technical evolution and parameter change impact.GovTool/db-sync
CIP.082Auditor needs access to historical proposals affecting economic parametersAs an Auditor, I want to access and review the history of proposals related to economic parameters, focusing on their ratification status, to evaluate economic policy changes.GovTool/db-sync
CIP.083Auditor needs access to the historical record of all governance proposals and voting thresholdsAs an Auditor, I want to have access to the history changes to governance parameters, the proposals, and the voting thresholds. I want to audit the changes made over time, and to 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.GovTool/db-sync
CIP.084Auditor needs access to the history of treasury withdrawalsAs an Auditor, I want to audit the history of treasury withdrawals, including amounts, dates, and recipient wallet addresses, to ensure transparency and accountability.GovTool/db-sync
CIP.085DRep Id is blake2b-224 of drep vkeyAs a DRep, I want to verify proper Drep Id is being generated that is it should be outcome of blake2b-224 hash of DRep verification key.Node/CLI
CIP.086Change delegationAs a stakeholder, I want to change my voting delegation to a different Drep. After I have first delegate to a DRep say DRep 1 I want to change my delegation to another Drep 2, my vote delegation should be updated to Drep2.Node
CIP.087No multiple delegationAs a stakeholder, I should not be able to submit multiple voting delegations to different Dreps. The voting rights should be delegated to a single DRep only, even If I submit multiple voting delegation certificates.Node
CIP.088No delegation without stake registrationAs a stakeholder, I should not be able to delegate my votes without registering my stake address first.Node
CIP.089No retirement before registerAs a DRep, I should not be able to retire my DRep before registering it.Node
CIP.090No multiple DRep registrationAs a DRep, I should not be able to register my DRep multiple times using the same DRep credentials.Node