System Tests Coverage

Latest update: 2024-10-04

Legend: Success Badge Failure Badge Partial Coverage Badge Uncovered Badge Unplanned Badge

CLI User Stories

Status for Story ID

Title

Story Overview

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

Query constitution.

As any persona, I want to query the on-chain constitution, so that I can know the url where it is stored and the document hash, so that I can verify authenticity.

CIP1694 User Stories

Status for Story ID

Title

Story Overview

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 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-CIP2

Node records Committee member key hashes, terms and status

As 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.

image-CIP3

Authorization Certificate

As 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.

image-CIP4

Record cold credentials and authorization certificates on chain

As 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.

image-CIP5

Replacing the constitutional committee via a governance action

As 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.

image-CIP6

Size of the constitutional committee

As 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.

image-CIP7

Committee voting threshold (quorum) can be modified

As 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.

image-CIP8

Electing an empty committee

As 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.

image-CIP9

Constitutional committee members have a limited term

As 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.

image-CIP10

Tracking committee member expirations

As 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.

image-CIP11

Automatically expire committee members that have completed their terms

As 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.

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 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.

image-CIP14

Constitutional Committee below committeeMinSize

As 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.

image-CIP15

Proposal policy

As 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.

image-CIP16

Delegate votes to a registered Delegate Representatives

As 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.

image-CIP17

Delegate to always abstain

As a Stakeholder, 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 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.

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 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.

image-CIP21

DRep registration certificate

As 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.

image-CIP22

Vote delegation certificate

As 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.

image-CIP23

DRep retirement certificate

As 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.

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, with the DRep deposit 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.

image-CIP85

DRep Id is blake2b-224 of drep vkey

As 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.

image-CIP86

Change delegation

As 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.

image-CIP87

No multiple delegation

As 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.

image-CIP88

No delegation without stake registration

As a stakeholder, I should not be able to delegate my votes without registering my stake address first.

image-CIP89

No retirement before register

As a DRep, I should not be able to retire my DRep before registering it.

image-CIP90

No multiple DRep registration

As As a DRep, I should not be able to register my DRep multiple times using the same DRep credentials.

Governance guardrails User Stories

Status for Story ID

Title

Story Overview

image-GR001

Prevent an unconstitutional txFeePerByte value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for txFeePerByte.

image-GR002

Prevent an unconstitutional txFeeFixed value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for txFeeFixed.

image-GR003

Prevent an unconstitutional monetaryExpansion value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for monetaryExpansion.

image-GR004

Prevent an unconstitutional treasuryCut value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for treasuryCut.

image-GR005

Prevent an unconstitutional minPoolCost value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for minPoolCost.

image-GR006

Prevent an unconstitutional utxoCostPerByte value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for utxoCostPerByte.

image-GR007a

Prevent an unconstitutional executionUnitPrices [priceMemory] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for executionUnitPrices[priceMemory].

image-GR007b

Prevent an unconstitutional executionUnitPrices [priceSteps] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for executionUnitPrices[priceSteps].

image-GR008

Prevent an unconstitutional maxBlockBodySize value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxBlockBodySize.

image-GR009a

Prevent an unconstitutional maxTxExecutionUnits [memory] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxTxExecutionUnits[memory].

image-GR009b

Prevent an unconstitutional maxTxExecutionUnits [steps] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxTxExecutionUnits[steps].

image-GR010a

Prevent an unconstitutional maxBlockExecutionUnits [memory] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxBlockExecutionUnits[memory].

image-GR010b

Prevent an unconstitutional maxBlockExecutionUnits [steps] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxBlockExecutionUnits[steps].

image-GR011

Prevent an unconstitutional maxValueSize value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxValueSize.

image-GR012

Prevent an unconstitutional collateralPercentage value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for collateralPercentage.

image-GR013

Prevent an unconstitutional maxCollateralInputs value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxCollateralInputs.

image-GR014a

Prevent an unconstitutional poolVotingThresholds [motionNoConfidence] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolVotingThresholds[motionNoConfidence].

image-GR014b

Prevent an unconstitutional poolVotingThresholds [committeeNormal] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolVotingThresholds[committeeNormal].

image-GR014c

Prevent an unconstitutional poolVotingThresholds [committeeNoConfidence] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolVotingThresholds[committeeNoConfidence].

image-GR014d

Prevent an unconstitutional poolVotingThresholds [hardForkInitiation] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolVotingThresholds[hardForkInitiation].

image-GR014e

Prevent an unconstitutional poolVotingThresholds [ppSecurityGroup] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolVotingThresholds[ppSecurityGroup].

image-GR015a

Prevent an unconstitutional dRepVotingThresholds [motionNoConfidence] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[motionNoConfidence].

image-GR015b

Prevent an unconstitutional dRepVotingThresholds [committeeNormal] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[committeeNormal].

image-GR015c

Prevent an unconstitutional dRepVotingThresholds [committeeNoConfidence] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[committeeNoConfidence].

image-GR015d

Prevent an unconstitutional dRepVotingThresholds [updateToConstitution] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[updateToConstitution].

image-GR015e

Prevent an unconstitutional dRepVotingThresholds [hardForkInitiation] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[hardForkInitiation].

image-GR015f

Prevent an unconstitutional dRepVotingThresholds [ppNetworkGroup] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[ppNetworkGroup].

image-GR015g

Prevent an unconstitutional dRepVotingThresholds [ppEconomicGroup] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[ppEconomicGroup].

image-GR015h

Prevent an unconstitutional dRepVotingThresholds [ppTechnicalGroup] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[ppTechnicalGroup].

image-GR015i

Prevent an unconstitutional dRepVotingThresholds [ppGovGroup] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[ppGovGroup].

image-GR015j

Prevent an unconstitutional dRepVotingThresholds [treasuryWithdrawal] value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepVotingThresholds[treasuryWithdrawal].

image-GR016

Prevent an unconstitutional committeeMinSize value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for committeeMinSize.

image-GR017

Prevent an unconstitutional committeeMaxTermLimit value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for committeeMaxTermLimit.

image-GR018

Prevent an unconstitutional govActionLifetime value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for govActionLifetime.

image-GR019

Prevent an unconstitutional maxTxSize value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxTxSize.

image-GR020

Prevent an unconstitutional govDeposit value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for govDeposit.

image-GR021

Prevent an unconstitutional dRepDeposit value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepDeposit.

image-GR022

Prevent an unconstitutional dRepActivity value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for dRepActivity.

image-GR023

Prevent an unconstitutional minFeeRefScriptCoinsPerByte value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for minFeeRefScriptCoinsPerByte.

image-GR024

Prevent an unconstitutional maxBlockHeaderSize value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for maxBlockHeaderSize.

image-GR025

Prevent an unconstitutional stakeAddressDeposit value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for stakeAddressDeposit.

image-GR026

Prevent an unconstitutional stakePoolDeposit value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for stakePoolDeposit.

image-GR027

Prevent an unconstitutional poolRetireMaxEpoch value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolRetireMaxEpoch.

image-GR028

Prevent an unconstitutional stakePoolTargetNum value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for stakePoolTargetNum.

image-GR029

Prevent an unconstitutional poolPledgeInfluence value

As an ADA holder, when submitting an update protocol parameters proposal, the governance guardrail should prevent an unconstitutional value for poolPledgeInfluence.