Delay Commission Updates
- Idea
- Draft
- Review
- Accept
- Implement
- Active
Decision brief
Why this proposal matters
Allow validators to update their commission rate at any time but delay those commission updates for at least one full epoch.
Proposal at a glance
What changes
- Allow validators to update their commission rate at any time but delay those commission updates for at least one full epoch.
Stakeholder map
Who is affected
Builders & client teams Medium impact
Update the core vote program to no longer restrict commission increases from happening during the first half of the epoch.
Action requirement unknownValidators & operators Medium impact
A feature gate will be used to simultaneously update vote program rules around commission rate updates as well as update the runtime's commission calculations at epoch boundaries.
Action requirement unknownUsers & stakers Medium impact
Stake delegators will have at least one full epoch to react to commission updates.
Action requirement unknownGovernance & ecosystem Impact unknown
No proposal-specific evidence was found for this group.
Action requirement unknownExact source revision
Full proposal document
6cc17538e266Summary
Allow validators to update their commission rate at any time but delay those commission updates for at least one full epoch.
Motivation
Validators should be able update their desired commission at any time. That said, stake delegators should always have ample time to re-delegate their stake in response to validator commission rate changes.
New Terminology
NA
Detailed Design
Runtime
For a given epoch E, the earned inflation rewards for each vote account are
calculated at the beginning of the next epoch E + 1. During inflation reward
calculation, use the inflation rewards commission rate from the vote account
state as it existed at the beginning of epoch E - 1. If the vote account did
not exist at that time, fall back to the vote account state at the beginning of
epoch E. And if the vote account did not exist then either, fall back
to the vote account state at the beginning of epoch E + 1.
UpdateCommission
Update the core vote program to no longer restrict commission increases from happening during the first half of the epoch.
Alternatives Considered
NA
Impact
Validators will need to wait at least one full epoch before their commission updates are applied.
Stake delegators will have at least one full epoch to react to commission updates.
Security Considerations
NA
Drawbacks (Optional)
Why should we not do this?
Backwards Compatibility (Optional)
A feature gate will be used to simultaneously update vote program rules around commission rate updates as well as update the runtime's commission calculations at epoch boundaries.
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 #249 · merged SIMD-0249: Delay Commission Updates 13 comments and reviews · Jan 19, 2026This presupposes that VoteStateV4 already exists, correct? If so, can you add a reference to that SIMD?
GitHub ↗If I create a vote account and start getting delegations in epoch E - 1, then those stakes aren't active until the start of epoch E, and they should receive rewards after epoch E. Actually at earliest they will start receiving rewards for epoch E + 1 (distributed in epoch E + 2) because that's the earliest epoch in which your vote account could be in the leader schedule. We use the stake distribution at the beginning of epoch E to determine the leader schedule for E + 1 and epoch E is the earliest epoch in which your vote account would be staked.
GitHub ↗I added a "Dependencies" section in https://github.com/solana-foundation/solana-improvement-documents/pull/249/commits/11759042a51adb5b01e2947f168a415ddc9bddb8
GitHub ↗I updated this section and explicitly called out the new validator case: https://github.com/solana-foundation/solana-improvement-documents/pull/249/commits/11759042a51adb5b01e2947f168a415ddc9bddb8
GitHub ↗Oh gotcha, I wasn't aware that it took an extra epoch to start earning voting rewards. I thought as soon as a validator had active stake, they could earn voting rewards. Thanks for the clarification!
GitHub ↗Sorry I was mixing up inflation rewards with block revenue. My explanation about the leader schedule makes no sense for inflation rewards. So yes, we need to handle new validators as you pointed out! It looks like it's also possible to delegate to a vote account that isn't fully initialized yet. So when a vote account is initialized and starts voting in epoch E it would already be earning rewards in that epoch. Since there are a few edge cases here that add complexity to the proposal I think it's best to simplify this SIMD to only being about commission rates being updated to basis points and then try to handle commission rugs in a separate SIMD.
GitHub ↗Simplified here https://github.com/solana-foundation/solana-improvement-documents/pull/249/commits/a25eca4528b3320f399c9992e92a9771a5f7e0d1 I still want to do the delay commission updates change at some point but I don't want that change to hold up getting the new UpdateCommissionBps instruction in because it's a blocker for https://github.com/solana-foundation/solana-improvement-documents/pull/123
GitHub ↗I moved the commission rate in basis points change to a new SIMD and reverted this SIMD back to dealing with delayed commission rate updates. New SIMD is here: https://github.com/solana-foundation/solana-improvement-documents/pull/291
GitHub ↗Provenance
Evidence & technical details
Rollout or chain data, source revisions, freshness and integrity. 2
Provenance
Evidence & technical details
Rollout or chain data, source revisions, freshness and integrity.SIMD
Deployment Status
Feature Gate not yet created
Exact source revision
Sources & integrity
- Proposal document pinned_commit_blob
6cc17538e26601e65beca89bbfa761e755720956 - simd-document document · stale · Oct 28, 2026
6cc17538e26601e65beca89bbfa761e755720956
One or more sources are unavailable.
simd.watch community discussion · SIMD-0249
Powered by Giscus · Sign in with GitHub to comment
Community comments load when this section approaches the viewport.