Skip to content
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

Validator Min. Commission 5% #109

Closed
fragwuerdig opened this issue Feb 12, 2023 · 14 comments · Fixed by classic-terra/cosmos-sdk#3
Closed

Validator Min. Commission 5% #109

fragwuerdig opened this issue Feb 12, 2023 · 14 comments · Fixed by classic-terra/cosmos-sdk#3
Assignees
Labels
enhancement New feature or request in scope Work approved by the community

Comments

@fragwuerdig
Copy link
Collaborator

fragwuerdig commented Feb 12, 2023

Problem definition
With the passing of proposal 11322 the community expressed the wish to implement a minimum commission of 5% for validators on the network. This highly relates to #89.

Update: Given that this is feature in Cosmos SDK 0.46, a temporary solution that allows for a minimum 5% commission to be enforced for all validators should be sufficient.

@fragwuerdig fragwuerdig added enhancement New feature or request in scope Work approved by the community labels Feb 12, 2023
@fragwuerdig fragwuerdig self-assigned this Feb 12, 2023
@ZaradarBH ZaradarBH added this to the Proposal 11168 milestone Feb 13, 2023
@inon-man
Copy link
Collaborator

inon-man commented Feb 14, 2023

This issue reminds me of the millions of people who suffer from the side effects of policies created without deep reflection by the government. It sounds simple, but it requires a lot of research.

CosmosSDK does not allow us to query addresses participated in voting for closed proposals which is frustrating. I wish to see how many addresses actually participated in voting and how the voting power is distributed.

Terra Classic's token economics are completely broken, so I don't think it's mandatory to implement just because a proposal is passed.

@inon-man
Copy link
Collaborator

There could be a misunderstanding in what I wrote above, but my opinion is that in-depth discussions is required, rather than rushing to create and apply solution because the proposal is passed.

@ZaradarBH
Copy link
Contributor

ZaradarBH commented Feb 15, 2023

I agree with @inon-man and have always been of the opinion that in the current situation the "Tokenomics of Terra" are broken to the point where we have to assume that governance is owned by the few lucky people who caught the bottom and that we will have to build for a long time to attract enough new investors to dilute that voting power in a meaningful way. This consequently is also why trying to "force redelegation via constraints" is never going to work until we can associate addresses with a DID component ala https://hypersign.id/ or https://identity.foundation/ion/.

With that said I think the min commission makes sense for another reason, namely ensuring the validators are actually economically viable to run. As such that is more important to me then trying to enforce decentralization via centralized code changes and arguments about voting power (which is already tightly controlled and a situation best resolved by the market itself if we want a sustainable foundation for the future). The best way to achieve this imho is by incentivize the network and governance to course correct via introducing new features that can incentives "real world utility" that can be taxed and increase the rewards for the network validators to the point where they can more then break even and thus do not have to resort to "veto blocking to collect fees" or "partitioning their validators to circumvent the BFT guard".

@ZaradarBH ZaradarBH added discuss Still being debated needs specification This issue has not been sufficiently specified labels Feb 15, 2023
@ZaradarBH ZaradarBH changed the title [FEATURE] Validator Min. Commission 5% Validator Min. Commission 5% Feb 15, 2023
@ZaradarBH
Copy link
Contributor

See discussion @ #127

@ZaradarBH ZaradarBH removed the discuss Still being debated label Feb 16, 2023
@LuncBurner
Copy link
Collaborator

Re-opened this item as we should have resourcing to have this completed during Q2, and due to it passing governance. It will be prioritized such that it does not impact the proposed timing of the upgrade to parity.

@nghuyenthevinh2000
Copy link
Contributor

cosmos/cosmos-sdk#10529

waiting for core to update to cosmos - sdk 46, then gov change params for min commission

@alchemist-ti
Copy link
Contributor

alchemist-ti commented May 23, 2023

Set validator min conmission rate

Abstract

This poposal aims to set the minimum commission rate(aka. min_commission_rate) for validators to 5%, and it's beeter to change the min_commission_rate via ParamsChangeProposal.

Implementation

Option 1

Add ante module that stores the min_commission_rate parameter and checks the commission rate of validator in anteHandler before delivering stakingtypes.MsgCreateValidator and stakingtypes.MsgEditValidator.

Reference: terra-money/core#47

Option 2

If we don't need to change min_commission_rate via ParamsChangeProposal, we can just hardcode the min_commission_rate=5% in anteHandler. Nso need to add ante module.

Option 3

Fork cosmos-sdk and cherry-pick this PR: cosmos/cosmos-sdk#10529. We already use a forked cosmos-sdk in our repo, so it does not violate our design principles.

Option1 vs Option2 vs Option3

Option Code Upgrade cosmos-sdk to v0.46 User experience after cosmos-sdk to v0.46
Option1 More Need to migrate params and remove ante module ParamsChangeProposal.subspace ante to staking
Option2 Less Need to migrate params smooth
Option3 Less No need: proto diff refer classic-terra/cosmos-sdk@v0.45.13-classic...cosmos:cosmos-sdk:v0.46.0 smooth

Migration

Each option requires a forced increase of the validator's commission to 5%.

We can implement it in the next UpgradeHandler, which contains the following logic:

  • if val.commission < min_commission_rate, val.commission=min_commission_rate.
  • if val.max_commission < min_commission_rate, val.max_comission=min_commission_rate.

@nghuyenthevinh2000
Copy link
Contributor

I am good with option 3

@StrathCole
Copy link
Collaborator

What is with validators that have set MAX commission rate to < 5% ?

@fragwuerdig
Copy link
Collaborator Author

I am good with option 3

Me too.

@alchemist-ti
Copy link
Contributor

What is with validators that have set MAX commission rate to < 5% ?

will be update to 5%

@fragwuerdig
Copy link
Collaborator Author

@alchemist-ti - following @StrathCole's suggestion I would add this logic to upgrade handler

If min_commission > val.max_commission
val.max_comission=min_commission

@alchemist-ti
Copy link
Contributor

alchemist-ti commented May 23, 2023

@alchemist-ti - following @StrathCole's suggestion I would add this logic to upgrade handler

If min_commission > val.max_commission
val.max_comission=min_commission

❤️ make sense. I updated to upgrade handler logic.

@LuncBurner
Copy link
Collaborator

LuncBurner commented May 25, 2023

Proceeded with option 3 as per Alchemist-ti's recommendation. Attempting to include this in the v2.1.0 release -- to be confirmed.

@LuncBurner LuncBurner removed the needs specification This issue has not been sufficiently specified label May 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request in scope Work approved by the community
Projects
No open projects
Status: Abandoned
Status: Done
Development

Successfully merging a pull request may close this issue.

8 participants