osmosis-labs / cosmos-sdk

:chains: A Framework for Building High Value Public Blockchains :sparkles:
https://cosmos.network/
Apache License 2.0
14 stars 31 forks source link

feat!(x/gov): implement a minimum amount per deposit (backport #19312) #510

Closed mattverse closed 5 months ago

mattverse commented 6 months ago

Description

Backport: https://github.com/cosmos/cosmos-sdk/pull/19312 and https://github.com/cosmos/cosmos-sdk/pull/18146


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...

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...

Summary by CodeRabbit

czarcas7ic commented 6 months ago

@mattverse can you ping when e2e test is passing and i will review

mattverse commented 6 months ago

@czarcas7ic this is r4r!

czarcas7ic commented 5 months ago

Dont we already have this here https://github.com/osmosis-labs/cosmos-sdk/pull/510/files#diff-08bbfe14de423426949f72887bae76f115db4bc2478cd7c3d60e44a4325c7711R221

czarcas7ic commented 5 months ago

Yeah I am fairly confident this is already implemented but just with a different name @mattverse, can you double check my claim

czarcas7ic commented 5 months ago

Going to set as draft until response

mattverse commented 5 months ago

@czarcas7ic This is different from the initial minimum deposit we have. The Initial minimum deposit state we have sets the min amount that needs to be inputted for the initial deposit.

This state is for having a minimum deposit for each deposit tx user can make.

coderabbitai[bot] commented 5 months ago

Walkthrough

The update introduces a min_deposit_ratio to the governance module, ensuring deposits for proposals meet a minimum value ratio. This involves adding validation functions, updating tests to accommodate the new deposit requirements, and modifying various files to integrate the new parameter. The changes aim to enhance the governance process by enforcing a minimum deposit standard, reflected across tests, keeper functions, and parameter settings.

Changes

Files Change Summaries
proto/cosmos/gov/v1/gov.proto Added min_deposit_ratio in Params message.
tests/e2e/gov/deposits.go
tests/e2e/gov/query.go
tests/e2e/gov/tx.go
x/gov/keeper/deposit_test.go
x/gov/simulation/operations_test.go
Updated tests to reflect new min_deposit_ratio and adjusted deposit amounts. Removed one test function.
x/bank/app_test.go
x/gov/abci_test.go
x/gov/keeper/msg_server_test.go
Updated test amounts from 5 or 100 to 100000 stake coins.
x/gov/keeper/deposit.go
x/gov/keeper/export_test.go
x/gov/keeper/msg_server.go
Added validation for deposit amounts and ratios. Updated function signatures to include new parameters.
x/gov/migrations/v4/... Added min_deposit_ratio in JSON and store migrations.
x/gov/simulation/... Adjusted simulation logic for new min_deposit_ratio.
x/gov/types/errors.go
x/gov/types/v1/params.go
Added new error for invalid deposit denom. Updated Params with min_deposit_ratio.
CHANGELOG.md Documented the addition of min_deposit_ratio feature.

"In the realm of code, where logic does play,
A new rule emerges, in governance's sway.
🐰 With a hop and a skip, on this bright day,
'Minimum deposit ratio', is here to stay.
Let's celebrate, for together, we pave the way,
Towards a future, where fairness does lay."
🌟🥕

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?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

Tips ### Chat There are 3 ways to chat with CodeRabbit: - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit-tests for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in 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 `@coderabbitai` in 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 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 pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to 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.yaml` file to the root of your repository. - The JSON schema for the configuration file is available [here](https://coderabbit.ai/integrations/coderabbit-overrides.v2.json). - 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](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback.
mattverse commented 5 months ago

@czarcas7ic another reason Im sure that these are two different things is that upstream also has these two different states. Linking the proto file below for reference.

https://github.com/cosmos/cosmos-sdk/blob/main/x/gov/proto/cosmos/gov/v1/gov.proto#L296 https://github.com/cosmos/cosmos-sdk/blob/main/x/gov/proto/cosmos/gov/v1/gov.proto#L343