Skip to main content
Technical proposal SIMD-0079 Implemented

Allow Commission Decrease at Any Time

  1. Idea
  2. Draft
  3. Review
  4. Accept
  5. Implement
  6. Active

Decision brief

Why this proposal matters

The commission_updates_only_allowed_in_first_half_of_epoch feature disallows commission decrease in the second half of epoch. Given that the purpose of this feature was to prevent 'rug pulls' which are accomplished by increasing commission at the end of epoch and then decreasing commission at the beginning of next epoch, disallowing decreases during the second half of epoch is unnecessary. A feature gate must be added to support this SIMD as all validators' vote programs must treat commission change instructions the same or else consensus will diverge.

Source-backed reading aid · source language: EN

Proposal at a glance

What changes

  • A feature will be added which, when enabled, must cause all node implementations' vote program's set-commission instruction handling to first check whether the proposed commission change is a decrease or no change, and if so, do not invoke the "only allow commission change in first half of epoch" rule.
  • The commission_updates_only_allowed_in_first_half_of_epoch feature disallows commission decrease in the second half of epoch. Given that the purpose of this feature was to prevent 'rug pulls' which are accomplished by increasing commission at the end of epoch and then decreasing commission at the beginning of next epoch, disallowing decreases during the…

Stakeholder map

Who is affected

Builders & client teams Medium impact

A feature will be added which, when enabled, must cause all node implementations' vote program's set-commission instruction handling to first check whether the proposed commission change is a decrease or no change, and if so, do not invoke the "only allow commission change in first half of epoch" rule.

Action may be required
Validators & operators Medium impact

When activated, breaks the ability of older Solana node software to verify ledgers with this feature.

Action requirement unknown
Users & stakers Impact unknown

No proposal-specific evidence was found for this group.

Action requirement unknown
Governance & ecosystem Impact unknown

No proposal-specific evidence was found for this group.

Action requirement unknown

Exact source revision

Full proposal document

Source-language document. Technical identifiers and evidence remain unchanged. f1f6c8b05dc2

Summary

The commission_updates_only_allowed_in_first_half_of_epoch feature disallows commission decrease in the second half of epoch. Given that the purpose of this feature was to prevent 'rug pulls' which are accomplished by increasing commission at the end of epoch and then decreasing commission at the beginning of next epoch, disallowing decreases during the second half of epoch is unnecessary.

A feature gate must be added to support this SIMD as all validators' vote programs must treat commission change instructions the same or else consensus will diverge.

Motivation

Some validator operators may need to decrease commission in order to satisfy their own operational criteria.

As an example, a validator operator may have a policy whereby any error that results in reduced stake account rewards for the epoch, will result in the operator choosing to reduce commission to 0% for that epoch to ensure that stake accounts are not disadvantaged by that error. Not being allowed to do this in the second half of an epoch is a problem because it would prevent that commission change until the next epoch, which will not allow this policy to take effect for stake accounts which were de-activating during the epoch.

Alternatives Considered

No alternatives were considered.

New Terminology

None

Detailed Design

A feature will be added which, when enabled, must cause all node implementations' vote program's set-commission instruction handling to first check whether the proposed commission change is a decrease or no change, and if so, do not invoke the "only allow commission change in first half of epoch" rule.

Impact

Validators will now be able to decrease commission at any time in the epoch, but only increase commission in the first half of epochs (because of the commission_updates_only_allowed_in_first_half_of_epoch feature already implemented).

Security Considerations

None

Drawbacks

It may cause additional confusion to validators who might not understand why some types of commission changes succeed only in the first half of epochs while others succeed always.

Backwards Compatibility

This feature requires a feature gate because software which includes the implementation will allow certain set-commission transactions to succeed where software without the implementation would fail those transactions. Thus all validators must be updated to the new functionality at an epoch boundary so that all validators agree on the result of executing those transactions.

When activated, breaks the ability of older Solana node software to verify ledgers with this feature.

Evidence graph

Related proposals and rollout

One or more sources are unavailable.

Upstream review record

Upstream discussion & review

GitHub review is editorial context, not evidence of on-chain support, voting, or outcome.

PR #79 · merged SIMD-0079: Allow commission decrease at any time during an epoch 36 comments and reviews · Jan 19, 2026
@ripatel-fd

Well, the purpose of sections is documented for a reason in the template. Clearly stating the impact on each SIMD helps with prioritizing work on these features (which always involve a lot of testing, btw). Unless I'm mistaken, this seems like "nice to have" level of importance to the ecosystem.

GitHub ↗
@bji

Impact How will the implemented proposal impacts dapp developers, validators, and core contributors? The text included states how the change will impact validators. There is no impact to the other categories outside of the truism that "any change could affect anyone".

GitHub ↗
@jacobcreech

Do we know how many validators have the policy mentioned in the motivation section, or how common this problem is? Something like that would be nice to document as impact, because I agree with Richard that unless we understand that this change does seem "nice to have"

GitHub ↗
@bji

Is one good reason not enough?

GitHub ↗
@ripatel-fd

I asked my colleagues to review and approve once I have a second opinion from my team. (It looks good to me). Thanks for submitting this.

GitHub ↗
@ripatel-fd

Is one good reason not enough? @bji Yes -- Long story short, we should to scrutinize feature activations more, especially by triaging them by usefulness. The impact section would be the place to make an argument why the feature is important. The text included states how the change will impact validators. If most validators didn't notice activation of this feature, is it really impactful? But your point is valid, the template should be clearer about the purpose of this section. Considering this doesn't improve performance or reliability and it's unclear whether anyone else will use this feature, I would say it's barely enough justification. The risk of any feature flag is that it halts the ne

GitHub ↗
@bji

The original feature which prevented changes to the commission in the second half was an over-reach. It had a goal ("prevent rug pulls") and it created collateral damage by implementing a more restrictive than necessary policy. It doesn't seem like the best way to have technical discussions to have to provide justification for whether or not the reasons are "good enough". What you think is important, someone else might not. It's necessary to include importance in prioritization of effort, but when discussing technical merits of a proposal, I think justification just should be a minor factor, and having "one good reason" should be good enough. In this case, I've already given a justification

GitHub ↗
@bji

Green light from Firedancer side, but considering this low priority. Thank you; the implementation has already been provided to Solana Labs as a PR so from their perspective it should be an easy thing to take. Once it's reached consensus within the cluster Firedancer would have to implement it; but I think it's a very easy implementation.

GitHub ↗

simd.watch community discussion · SIMD-0079

Powered by Giscus · Sign in with GitHub to comment

Community comments load when this section approaches the viewport.

Provenance

Evidence & technical details

Rollout or chain data, source revisions, freshness and integrity.
2

SIMD

Deployment Status

Document lifecycleImplemented
CategoryCore protocol
Devnetactive Epoch 737
Testnetactive Epoch 705
Mainnet-Betaactive Epoch 704
decoMktMcnmiq6t3u7g5BfgcQu91nKZr6RvMYf9z1Jb

Exact source revision

Sources & integrity

  • Proposal document pinned_commit_blob
    f1f6c8b05dc205552d3c290a854a438392701107
  • simd-document document · stale · Oct 16, 2026
    f1f6c8b05dc205552d3c290a854a438392701107

One or more sources are unavailable.