Skip to content

feat: validator 30% of bonded tokens limit #1044

Open
danflo27 wants to merge 18 commits into
mainfrom
dan-val-30-limit
Open

feat: validator 30% of bonded tokens limit #1044
danflo27 wants to merge 18 commits into
mainfrom
dan-val-30-limit

Conversation

@danflo27

@danflo27 danflo27 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Description

max_validator_power_share reporter module param (default 0.30) that blocks a single bonded validator from gaining active bonded stake above 30% of total bonded tokens in ante handler an reporter keeper

Related Issue

Fixes #

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • State Changes (please describe)"
  • Chain Changes (please describe):
  • Daemon Changes
  • Tests
  • Added Getter

Testing

unit/integration/e2e

Checklist

  • Code follows project style guidelines
  • I have added appropriate comments to my code
  • I have updated the documentation accordingly
  • I have added tests that prove my fix or feature works
  • go test ./... is passing locally
  • make e2e is passing locally

danflo27 added 7 commits June 25, 2026 09:30
Introduce the ADR 1013 module parameter with proto, generated bindings,
validation, and a dedicated sentinel error for cap violations.
Add cap checks for direct delegations and cap-aware refund routing in
ReturnSlashedTokens, FeeRefund, and WithdrawTip with fallback scanning.
Project validator active-set changes and MsgUnjail re-entry so staking
and authz messages are rejected when they would exceed the cap.
Set the 0.30 default during upgrade so existing chains enable the
validator power cap alongside the reporter power cap.
Split bonded and unbonded refund amounts from the reporter keeper and
move truncation dust to the bonded pool so mixed-origin slashes settle correctly.
Cover ante enforcement, keeper refund paths, and cap-enabled genesis
fixtures; extend stake projection helpers and ICQ genesis stripping.
Small-validator devnets and shared test setup exceed 30% bonded stake,
so default genesis and setup disable the cap unless tests opt back in.
danflo27 added 11 commits June 25, 2026 12:21
Extract ValidatePowerShareParam, PowerShareEnabled, and ExceedsPowerShare
so reporter and validator cap sites share one param/enforcement definition.
Replace validatorPowerCapState with explicit maxShare and projectedBondedDelta
arguments and reuse shared types helpers for cap checks.
Move active-set projection and validator power share checks into a dedicated
ante file and simplify unjail tracking for M2 isolation.
…uting

Extract delegateToStakeAndEmit, route truncation dust in ReturnSlashedTokens,
and move dust policy out of the dispute caller.
Document max_validator_power_share enforcement sites, design decisions,
and module readme param coverage.
@danflo27 danflo27 requested a review from akremstudy June 25, 2026 20:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant