IntersectMBO / IntersectMBO/cardano-ledger

Uncouple DReps from Committee Members

Open
#3,647 0 comments 0 reactions 0 assignees View on GitHub
:credit_card: technical-debt ConwayEra
Dominant language
Haskell
Stars
295
Forks
179
Avg merge
4d 7h
Merged PRs (30d)
29

Description

Current design in the spec forced a suboptimal code structure. Namely DRep and Constitutional Committee members are grouped throughout the codebase into Gov entity. This is incorrect, because Stake Pools and regular ADA holders also participate in the governance.

Starting with Conway we'll have four entities in Cardano:

* StakeCredentials - delegators: voting power
* StakePools - delegatee: community block producers and voters
* DReps - delegatee: community voters
* Constitutional Committe members - voters

We should split their logic accordingly wherever it makes sense:

* [x] - Introduce `CommitteeState`
* [ ] - Introduce `DRepsState`
* [ ] - Remove VState.
* [ ] - Inline `CommitteState` and `DRepsState` into `CertsState`
* [ ] - Split GOVCERTS into `DREP` and `COMMITTEE` rules
* [ ] - Split `GovCert` into `DRep` and `Committee` certs.

Contributor guide

Open the contributing guide

Research direction

Start by reading the current Gov entity structure and the existing CommitteeState implementation in the cardano-ledger codebase. Trace how DReps and Constitutional Committee members are represented, then work through the remaining checklist items. Done means their logic and certificates are separated as described, with VState and the shared GovCert/GOVCERTS structures removed or split where appropriate.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
blockchain
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.