-
Notifications
You must be signed in to change notification settings - Fork 610
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
x/gov Improvements #1517
Comments
So after syncing with @ValarDragon, we agreed that we'll stick with (1) and (2) and leave it open for iteration and improvement for when we upgrade to SDK v0.46 in the future. For (2), we'll have to have type ProposalVotingPeriod struct {
MsgType string // e.g. "/cosmos.params.v1beta1.ParameterChangeProposal"
VotingPeriod time.Duration
} Then when handle submitting the proposal, we do a lookup and attempt to match the type. If the type exists, we use it. Otherwise, we use the base/default voting period. |
What is the purpose of Is it sufficient to only have a |
@p0mvn I didn't realize we had that field as I completely forgot Osmosis made existing modifications to |
Makes sense, the difference should be minimal. @alexanderbez Where do you see me helping out? I'm fine with taking any part that I can help out on |
Same here! Available to parrelize on any fronts |
We modified voting end time? I don't remember us changing that, are we sure its not in SDK v0.44.x? Looks like its there in upstream: https://github.com/cosmos/cosmos-sdk/blob/v0.45.4/x/gov/types/gov.pb.go#L253 That value there isn't provided by the user, its set by the state machine upon a proposal entering voting period |
You're right @ValarDragon -- my comment/proposal still stands then I think. |
These are all now complete, the only remaining part is to approve #1 via governance and release |
Creating this issue in the osmosis repo, although, if accepted, would be implemented in our fork of the Cosmos SDK.
There are a few improvements to the
x/gov
module that if made would provide huge benefits for users and gov UX, all of which can be implemented independently with different priorities, although should be implemented with all of them in mind. I'll outline as follows:1. 2/3 Majority Emergency Voting Periods
There have been a few instances where a chain needs to enact an emergency upgrade via a text proposal, but needs to bypass the standard voting period, where once 2/3+ of voting power vote yes (or no) by a certain time (e.g. 24h after proposal creation), the proposal is considered "accepted". See Osmosis prop 226 as an example.
Notably, this would most likely be useful on Text-based proposals, but there can be cases made where this could prove to be useful on other proposal types as well.
The high-level implementation would look like follows:
Expedited
(bool) field on proposal types and the interface.ExpeditedDuration
(time.Duration) field on proposal types and the interface.x/gov
to store an additional index for expedited proposalsEndBlock
inx/gov
to:2. Proposal-based Voting Periods
In the same light as (1), there are many instances where the community and validators of the network would desire that certain proposal types have a different voting period than the "base" one. E.g. an incentive update proposal would arguably require less time to mature than compared to a software upgrade proposal which could be deemed more contentious.
The high-level implementation would look like follows:
VotingPeriod
field on proposal types and the interface. When zero-value, assume base voting period is used.CustomVotingPeriodQuorum
param in the x/gov modulex/gov
to set the existing maturity index to account for custom voting periodsEndBlock
inx/gov
to:CustomVotingPeriodQuorum
is met.3. Custom Proposer-based Voting Periods
This is similar to (2) and given that to modify the custom
VotingPeriod
of a proposal type, a hard-fork upgrade would be required, I propose we combine (2) and (3) such that the customVotingPeriod
is provided by the proposal's proposer. Everything else remains the same.The text was updated successfully, but these errors were encountered: