feat(x/gov): Add separate quorum for expedited proposal
Description
Closes: #18990
Author Checklist
All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.
I have...
- [ ] included the correct type prefix in the PR title
- [ ] confirmed
!in the type prefix if API or client breaking change - [ ] targeted the correct branch (see PR Targeting)
- [ ] provided a link to the relevant issue or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] included the necessary unit and integration tests
- [ ] added a changelog entry to
CHANGELOG.md - [ ] updated the relevant documentation or specification, including comments for documenting Go code
- [ ] confirmed all CI checks have passed
Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.
I have...
- [ ] confirmed the correct type prefix in the PR title
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage
Walkthrough
The Cosmos governance module (x/gov) has been updated to include a new expedited_quorum field that allows for a separate quorum requirement for expedited proposals. This change aims to mitigate the risks associated with the shorter voting periods for expedited proposals by ensuring they cannot be approved with a disproportionately small amount of stake. The expedited_quorum is distinct from the standard quorum and can be configured independently.
Changes
| File | Change Summary |
|---|---|
proto/cosmos/gov/v1/gov.proto |
Added expedited_quorum field to Params message. |
x/gov/keeper/tally.go |
Replaced params.Quorum with params.ExpeditedQuorum for quorum calculation. |
x/gov/simulation/genesis.go |
Added handling for ExpeditedQuorum parameter in RandomizedGenState. |
x/gov/types/v1/params.go |
Introduced DefaultExpeditedQuorum; updated NewParams, DefaultParams, and ValidateBasic for new parameter validation. |
Assessment against linked issues
| Objective | Addressed | Explanation |
|---|---|---|
Introduce a separate expedited_quorum field for expedited proposals (#18990) |
✅ | |
| Mitigate risks of expedited proposals being pushed through with small stake (#18990) | ✅ | |
Allow configuration of expedited_quorum separate from standard quorum (#18990) |
✅ | |
Align expedited_quorum with existing expedited proposal parameters (#18990) |
✅ | |
Validate the new expedited_quorum parameter (#18990) |
✅ |
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Tips
Chat
There are 3 ways to chat with CodeRabbit:
Note: Auto-reply has been disabled for this repository by the repository owner. The CodeRabbit bot will not respond to your comments unless it is explicitly tagged.
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. Examples:-
@coderabbitai generate unit tests for this file. -
@coderabbitai modularize this function.
-
- PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:-
@coderabbitai generate interesting stats about this repository from git and render them as a table. -
@coderabbitai show all the console.log statements in this repository. -
@coderabbitai read src/utils.ts and generate unit tests. -
@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
-
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
CodeRabbit Commands (invoked as PR comments)
-
@coderabbitai pauseto pause the reviews on a PR. -
@coderabbitai resumeto resume the paused reviews. -
@coderabbitai reviewto trigger a review. This is useful when automatic reviews are disabled for the repository. -
@coderabbitai resolveresolve all the CodeRabbit review comments. -
@coderabbitai helpto get help.
Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
CodeRabbit Configration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - The JSON schema for the configuration file is available here.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json
CodeRabbit Discord Community
Join our Discord Community to get help, request features, and share feedback.
Hi @Hemanthghs, do you need help pushing this to the finish line?
Hi @Hemanthghs, do you need help pushing this to the finish line?
Hi @julienrbrt, I am not sure about the default expedited quorum value and also adding test cases.
Hi,
I am not sure about the default expedited quorum value and also adding test cases.
I thought I answered. I think we can do this: https://github.com/cosmos/cosmos-sdk/pull/19087#discussion_r1472065297 If you don't feel like working on this anymore, no worries, but please tell us so we can re-assign someone else, as we need this before the feature freeze.
As we need this for v0.51, I'll be taking over this PR. Thanks, @Hemanthghs, for your contribution!