-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
ADR 037: Governance Split Votes #7733
Conversation
Is there any preference to whether the vote struct is done as currently proposed in the ADR:
vs creating a new SubVote struct that contains Option+Rate?
|
Concept ACK! |
I prefer the sub-vote option @sunnya97. I don't see any merit to splitting up the types, since they're logically so connected. |
This is a very important feature to me. I am trying to reach out to custodians to see if they would embrace it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This does break backwards compatibility and I see that as a negative but it is not listed.
Please try to find a way to do this that doesn't break existing APIs, esp MsgVote
. Introduce a new msg instead. I see this a rather niche use case and shouldn't be exposed to users by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do agree that we should avoid breaking existing message types and APIs, but I don't see this as niche at all. I think this will be very useful, even for the average user. ACK
@aaronc If we want to keep the types the same for easier wallet compatibility, could we just create a new Msg type, but not a separate underlying struct? If SimpleVote and WeightedVote were two different structs in state, we'd have to create a new vote interface that both of those satisfy, and this will likely be a larger change. Instead, the on-chain Vote struct could include weighted votes, and a simple MsgVote (backwards compatible) received by the chain is just converted to a single Option WeightedVote that's stored in state. So we'd have:
|
@sunnya97 that could work 👍 We could also do this for type Vote struct {
ProposalID int64
Voter sdk.Address
Option VoteOption // if set to VOTE_OPTION_UNSPECIFIED, then Options is set instead
Options []WeightedVoteOption
} Btw, I'm not completely opposed to breaking changes in .proto files we've marked as |
We really want to encourage large custodians to build a proxy voting infrastructure to go with their staking operations. This is a complement to efforts like staking derivatives to ensure the viability of proof of stake as large custodians become more and more important. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks sensible to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very interesting add on for custodians.
Description
This ADR introduces the concept of governance split votes. Please see the ADR for details.
Coauthored with @antstalepresh
Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.
docs/
) or specification (x/<module>/spec/
)godoc
comments.Unreleased
section inCHANGELOG.md
Files changed
in the Github PR explorerCodecov Report
in the comment section below once CI passes