-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change the way SPO votes are counted #578
Comments
Lucsanszky
added a commit
to IntersectMBO/cardano-ledger
that referenced
this issue
Oct 3, 2024
Lucsanszky
added a commit
to IntersectMBO/cardano-ledger
that referenced
this issue
Oct 3, 2024
Lucsanszky
added a commit
to IntersectMBO/cardano-ledger
that referenced
this issue
Oct 3, 2024
Lucsanszky
added a commit
to IntersectMBO/cardano-ledger
that referenced
this issue
Oct 3, 2024
9 tasks
Lucsanszky
added a commit
to IntersectMBO/cardano-ledger
that referenced
this issue
Oct 3, 2024
Lucsanszky
added a commit
to IntersectMBO/cardano-ledger
that referenced
this issue
Oct 3, 2024
3 tasks
4 tasks
4 tasks
williamdemeo
added a commit
that referenced
this issue
Oct 24, 2024
* Change the way SPO votes are counted This closes issue #578. * recorded work in CHANGELOG WIP section * fix SPO vote count function * fix TeX error so Conway pdf compiles with Fig 35 looking decent * change SPO votes calculation to agree with Haskell implementation * Stop passing in `CertState` to `RatifyEnv` * Update SPO vote calculation conformance --------- Co-authored-by: Lucsanszky <[email protected]>
Reopening because the PR had a bug |
4 tasks
4 tasks
williamdemeo
added a commit
that referenced
this issue
Oct 29, 2024
* Change the way SPO votes are counted (Fix) This closes issue #578. * hide `λ where` and find an indent that compiles and looks okay * address PR change requests * improve description of new SPO default voting policy In particular, make sure it's clear that the credential used for voting is not the same as the credential which can now be used to set the default voting behavior. * address PR change requests
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This issue reflects the corresponding cardano-ledger issue, and the description below is nearly identical to the description given there.
It has been brought up by a number of community members that the way we currently compute SPO votes is not what everyone expected.
Current implementation is such that for
HardForkInitiation
behavior is exactly the same as for DReps, however for the other three governance actions, that SPOs can vote on, behavior is different for SPOs that did not vote. In other words for these three governance action types:NoConfidence
UpdateCommittee
ParameterUpdate
(when it includes updates to parameter belonging to the security group)the default vote counted for SPOs that didn't vote is
Abstain
, instead ofNo
. The default vote ofNo
is the behavior for DReps, while for SPOs it is default only whenHardForkInitiation
is proposed.Current behavior is specified in the following lines of the spec:
formal-ledger-specifications/src/Ledger/Ratify.lagda
Lines 378 to 380 in 762d3f4
The corresponding implementation is here.
This led to some concerns about inclusion of SPOs in future parameter updates, which is why many have suggested we mimic the behavior of DReps exactly. However, defaulting of SPOs to vote
No
raises other concerns. In particular there is a danger that sensible proposals could be inadvertently blocked by SPOs that are not active enough. Inactivity could be potentially blamed either on indifference or issues with legality for some SPOs.In order to solve this conundrum we made it the topic of Ledger Working Group Meeting #4 and had a very productive discussion with some community members and came up with the following ingenious solution:
Everyone agreed right off the bat that a mechanism for allowing SPOs to choose whether they wanted to default to
Abstain
instead ofNo
would solve the problem. However making a change toPoolParams
is impossible without a new era. Also, whenever the issue of customizingPoolParams
has surfaced during Conway development, it was apparent that such a change would be too ambitious and result in extensive delay to Conway delivery. This has to do with the fact thatPoolParams
is not a type family yet. Since adding a custom field to thePoolParams
with an optional default vote was not an option, we almost discarded this idea. It was then that Martin Lang of ATADA Stake Pool proposed an interesting and unexpected solution: we could achieve the ability for SPOs to specify a default vote if we choose to mimic the default delegation of ppRewardAccount that is specified in thePoolParams
.To be more specific the solution to this problem is as follows:
No
fromAbstain
for all of the three proposals in question.AlwaysNoConfidence
DRep and count default vote asYes
only onNoConfidence
proposals for that SPO.AlwaysAbstain
DRep and count default vote asAbstain
for that SPO on all three:NoConfidence
,UpdateCommitee
andParameterUpdate
proposals.This is not a terribly complicated logic to implement, which means that we can almost certainly take care of in time for the protocol version
10.0
, i.e. the intra-era hard fork, a.k.a Chang+1.The text was updated successfully, but these errors were encountered: