Summary
CIP-1694 governance is partially implemented in Dingo. Phases 1-2 are complete (data structures, DRep management, voting power calculation, activity/expiry tracking, voter type mapping — PRs #1329, #1373). Phases 3-4 are partial (CC hot key auth and resignation done; CC member expiry, threshold calculations, no-confidence handling, parent action chain validation, action expiry not yet). Phases 5-8 are not started.
This issue tracks the remaining work needed for Conway-era governance compliance: vote tallying, ratification, enactment, and epoch boundary processing. The gouroboros conformance suite for these areas (314 Conway tests including GOV/GOVCERT/ENACT/RATIFY/EPOCH) already passes for the protocol layer, so the validation rules are well-defined.
Phase 5 — Vote Tallying
- DRep vote tallying against active stake distribution
- SPO vote tallying against active stake distribution
- CC vote tallying with member quorum
- Threshold checking against per-action thresholds defined in protocol parameters
Voting thresholds (already defined in protocol params):
- DRep:
dvtCommitteeNoConfidence, dvtCommitteeNormal, dvtHardForkInitiation, dvtPPEconomicGroup, dvtPPGovGroup, dvtPPNetworkGroup, dvtPPTechnicalGroup, dvtTreasuryWithdrawal, dvtUpdateToConstitution
- SPO:
pvtCommitteeNoConfidence, pvtCommitteeNormal, pvtHardForkInitiation, pvtPPSecurityGroup
Phase 6 — Ratification & Enactment
- Detect when an action has crossed all required thresholds (DRep + SPO + CC where applicable)
- Enact
ParameterChange
- Enact
UpdateCommittee (add/remove CC members)
- Enact
NewConstitution (update constitution hash)
- Enact
TreasuryWithdrawal (move funds from treasury)
- Schedule
HardForkInitiation for the next epoch boundary
Phase 7 — Certificate Processing (Completion)
- Wire all governance certificate types into the existing ledger certificate pipeline (most done; verify completeness for
RegPool, UnregDRep, vote/stake delegation combos)
- Voting procedure processing (vote messages on actions)
- Proposal procedure processing (action submission with deposit)
- Parent action chain validation: previous action root tracking. Requires a
gov_roots table not yet created.
Phase 8 — Epoch Boundary Processing
- Wire ratification + enactment into the epoch transition code path (
event/epoch.go EpochTransitionEvent)
- Recalculate tallies at boundary
- Process ratifications discovered during the epoch
- Enact actions
- Expire old / unratified actions and return their deposits
- CC member expiry tracking (currently CC member expiry epoch is not stored in the DB — needs schema + migration)
Action Types Reference
| Action |
CC Vote |
DRep Vote |
SPO Vote |
| NoConfidence |
- |
yes |
yes |
| UpdateCommittee |
- |
yes |
yes |
| NewConstitution |
yes |
yes |
- |
| HardForkInitiation |
yes |
yes |
yes |
| ParameterChange |
yes |
yes |
varies |
| TreasuryWithdrawal |
yes |
yes |
- |
| Info |
- |
yes |
yes |
Testing
- Unit tests for tallying, threshold checking, ratification detection per action type
- Integration tests for full proposal → vote → ratify → enact flow per action type
- Test edge cases: tied votes, threshold-exactly-met, expired actions, withdrawn actions
- Test against real mainnet data once enactment lands
Roadmap
Q2 2026 — testnet block production prerequisites; Conway-era compliance.
Summary
CIP-1694 governance is partially implemented in Dingo. Phases 1-2 are complete (data structures, DRep management, voting power calculation, activity/expiry tracking, voter type mapping — PRs #1329, #1373). Phases 3-4 are partial (CC hot key auth and resignation done; CC member expiry, threshold calculations, no-confidence handling, parent action chain validation, action expiry not yet). Phases 5-8 are not started.
This issue tracks the remaining work needed for Conway-era governance compliance: vote tallying, ratification, enactment, and epoch boundary processing. The gouroboros conformance suite for these areas (314 Conway tests including GOV/GOVCERT/ENACT/RATIFY/EPOCH) already passes for the protocol layer, so the validation rules are well-defined.
Phase 5 — Vote Tallying
Voting thresholds (already defined in protocol params):
dvtCommitteeNoConfidence,dvtCommitteeNormal,dvtHardForkInitiation,dvtPPEconomicGroup,dvtPPGovGroup,dvtPPNetworkGroup,dvtPPTechnicalGroup,dvtTreasuryWithdrawal,dvtUpdateToConstitutionpvtCommitteeNoConfidence,pvtCommitteeNormal,pvtHardForkInitiation,pvtPPSecurityGroupPhase 6 — Ratification & Enactment
ParameterChangeUpdateCommittee(add/remove CC members)NewConstitution(update constitution hash)TreasuryWithdrawal(move funds from treasury)HardForkInitiationfor the next epoch boundaryPhase 7 — Certificate Processing (Completion)
RegPool,UnregDRep, vote/stake delegation combos)gov_rootstable not yet created.Phase 8 — Epoch Boundary Processing
event/epoch.goEpochTransitionEvent)Action Types Reference
Testing
Roadmap
Q2 2026 — testnet block production prerequisites; Conway-era compliance.