Key Highlights:
- Agave PR #12588 suppressed the commission rate field in outward-facing reward payloads following the activation of custom collectors under SIMD-0232.
- Solana delays commission rate changes across epochs under SIMD-0249, meaning a validator’s currently displayed commission often differs from the rate applied to past payouts.
- Staking participants and third-party tools like Jito, Marinade, and Trillium must rely on complex historical reconstructions or runtime snapshots to independently audit applied validator fees.
Agave PR #12588 and the Disappearing Commission Field
Following the merge of Agave pull request #12588 on May 20, the commission field in outward-facing reward payloadsārelayed through block queries and subscriptionsāappears empty upon the activation of the custom-collector feature. This suppression affects both accumulated validator commission rewards and individual stake reward receipts. Crucially, an empty commission field does not indicate that a validator charged a zero percent fee; rather, it reflects that the specific piece of metadata has been omitted from the exported reward record. The Agave validator client’s internal calculation pipeline continues to apply commission to gross rewards before suppressing that value in the outward-facing receipt.
The engineering rationale behind this suppression stems from SIMD-0232, the protocol specification introducing custom collectors. Custom collectors allow validators to route commission earnings directly to secondary, designated collection accounts. Because an accumulated reward payload can combine fee income rerouted across multiple destinations, developers determined that displaying a single aggregate commission rate would be technically inaccurate. However, the implementation simultaneously suppressed the rate for single, direct stake accounts, stripping away a straightforward metric that tokenholders historically used to audit their individual staking yields.
Understanding Solana’s Delayed Epoch Commission Mechanics
Auditing historical commission fees on Solana is fundamentally complicated by protocol-level timing delays. Under the SIMD-0249 specification, updates to a validator’s commission rate do not take effect immediately. For rewards accrued during epoch E, the standard operational sequence captures the active commission rate at the start of epoch Eā1, runs performance operations during epoch E, and executes reward calculations at the start of epoch E+1. While fallback logic exists for newly initialized vote accounts without older history, this structural delay ensures that a validatorās latest publicly visible vote-account state is separated from the historical rate used for an older payout.
As a result, inspecting a validator’s current on-chain configuration via an ordinary account read can easily result in referencing the wrong rate to explain a previous reward period. This visibility barrier was highlighted in engineering discussions as early as July 16, which noted that effective commission and collector values were maintained in cached runtime states inaccessible via standard remote procedure calls (RPC). Agave contributor ax-x2 subsequently submitted an RPC request on October 18, noting that standard methods like getVoteAccounts return the latest setting while the runtime calculation relies on an earlier saved rate. The contributor proposed adding an optional response exposing the effective inflation commission alongside its epoch and bank slot; as of late October, the request remained an open proposal without an active implementation.
Third-Party Reconstruction: Jito, Marinade, and Trillium
In the absence of a built-in historical rate link inside individual reward payloads, ecosystem participants and tooling providers have turned to specialized methods to match historical payouts with accurate commission rates:
- Jito Validator History Program: Archives up to 512 epochs of validator account history by executing a copy instruction that logs the commission, epoch, and slot directly from a vote account. However, logging a point-in-time vote account setting does not by itself prove that this specific observation was the delayed rate used by the runtime calculation.
- Marinade Snapshot Parser: Offers a more direct route to runtime states by parsing inflation commission from epoch-stakes snapshots alongside the vintage of the value and fallback counters. Marinade cautions, however, that archives lacking vintage metadata or bounded snapshots cannot automatically be assumed to represent the effective applied fee.
- Trillium APY Metrics: Takes an alternative approach by tracking actual stake-account balance expansion from epoch 1070 onward. By measuring real net yield independently of the displayed commission and maintaining a strict distinction between an unknown rate and a zero fee, Trillium calculates delegator performance even when fee receipts are missing.
Why This Matters
For institutional delegators, decentralized staking protocols, and retail SOL holders, the absence of unambiguous fee metadata creates operational friction in performance tracking and auditing. Relying solely on headline APY or currently advertised validator commission rates can mask the actual fee taken during delayed distribution windows. While staking platforms such as P2P.org maintain that overall distributed rewards reconcile, independently verifying the fee breakdown behind those net payments requires delegators to reconstruct historical epoch boundaries.
Furthermore, inflation commission is only one part of the validator revenue equation. With MEV commission and transaction priority fee sharing functioning as distinct components of total validator returns, comprehensive fee transparency remains fragmented. Proposed improvementsāincluding storing effective commission rates directly inside vote-state accounts across activation epochs and expanding RPC visibilityāremain under consideration, but until concrete upgrades are deployed, verifying commission accuracy continues to demand rigorous, account-level historical analysis.
Frequently Asked Questions
Does an empty commission field mean my validator charged zero fees?
No. Following Agave PR #12588, an empty commission field simply means the metadata has been suppressed in outward-facing reward payloads to accommodate the SIMD-0232 custom collector architecture. The Agave runtime continues to apply the validator’s commission internally before publishing the reward record.
How does SIMD-0249 delay validator commission updates?
Under SIMD-0249, changes to a validator’s commission do not apply instantly. To calculate rewards earned during epoch E, the protocol captures the commission rate set at the beginning of epoch Eā1 and executes the actual reward calculation at the beginning of epoch E+1. Consequently, querying a validator’s current on-chain state will often display a rate different from the one used for past rewards.
How can staking delegators verify the commission rate applied to past rewards?
Because native reward payloads lack this historical tag, delegators must reconstruct the data using snapshot parsers such as Marinade’s snapshot tool, archival services like Jito’s Validator History Program, or historical yield trackers like Trillium that measure net balance increases directly at epoch boundaries.




