Stop special-casing of Vote CU cost
- Idea
- Draft
- Review
- Accept
- Implement
- Active
Decision brief
Why this proposal matters
This proposal removes the use of statically defined compute unit (CU) costs for Simple Vote transactions and instead accounts for them in the same way as normal transactions when enforcing block CU limits. This also renders the Vote CU limit obsolete. Because this change affects consensus behavior, it must be gated behind a feature flag.
Proposal at a glance
What changes
- Stop using statically defined CU values for Simple Vote transactions.
- Calculate the cost of Simple Vote transactions using the same cost model and accounting path as normal transactions.
- Remove vote CU limit.
Stakeholder map
Who is affected
Builders & client teams Impact unknown
No proposal-specific evidence was found for this group.
Action requirement unknownValidators & operators Medium impact
The impact on cost consuming/tracking, and CU reserving for simple vote can be summarized in table:
Action requirement unknownUsers & stakers Medium impact
Cost tracking: The impact is expected to be minimal, as the actual executed CU consumption of Simple Vote transactions is identical to the previously statically defined value for the vast majority of votes. CU consumption will only change for unusual vote transactions that still classify as simple votes (e.g.…
Action requirement unknownGovernance & ecosystem Medium impact
This proposal removes the use of statically defined compute unit (CU) costs for Simple Vote transactions and instead accounts for them in the same way as normal transactions when enforcing block CU limits. This also renders the Vote CU limit obsolete. Because this change affects consensus behavior, it must be gated behind a feature flag.
Action may be requiredExact source revision
Full proposal document
0616093b2952Summary
This proposal removes the use of statically defined compute unit (CU) costs for Simple Vote transactions and instead accounts for them in the same way as normal transactions when enforcing block CU limits. This also renders the Vote CU limit obsolete. Because this change affects consensus behavior, it must be gated behind a feature flag.
Motivation
Simple Vote transactions currently reserve a fixed, statically defined number of compute units for cost tracking, based on the assumption that the Vote program, as a builtin program, has a static execution CU cost. However, SIMD-0387 specifies that the Vote program will be removed from builtin cost modeling. As a result, the cost of Simple Vote transactions should no longer rely on static CU assumptions and should instead be calculated in the same manner as other transactions.
New Terminology
N/A
Detailed Design
- Stop using statically defined CU values for Simple Vote transactions.
- Calculate the cost of Simple Vote transactions using the same cost model and accounting path as normal transactions.
- Remove vote CU limit.
Alternatives Considered
N/A
Impact
The impact on cost consuming/tracking, and CU reserving for simple vote can be summarized in table:
| Total consumed CUs | Total reserved CUs | |
|---|---|---|
| Current | 3428 | 3428 |
| Proposed | 3428* | 19812** |
Cost tracking: The impact is expected to be minimal, as the actual executed CU consumption of Simple Vote transactions is identical to the previously statically defined value for the vast majority of votes. CU consumption will only change for unusual vote transactions that still classify as simple votes (e.g. two signatures, or additional writable accounts), or unusually large vote accounts.
[ * ]statically define CUs for simple vote includes 1 signature (720 CU), 2
write locks (600 CU), 1 vote instruction which has 2,100 CU, and 8 CU to load small accounts, total 3428 CU. All components stay same except the CU for loaded accounts data size may change, which is a small part overall CUs.
- Block production: [ ** ] Under the current cost model, Simple Vote transactions may have higher estimated CUs ( about 16K additional CUs) due to inclusion of default account data loading costs. For block-packing strategies that reserve CUs upfront and refund unused CUs after execution, this may result in larger initial CU reservations for Simple Vote transactions, followed by refunds. This effect is specific to such “reserve-then-refund” packing strategies.
Security Considerations
N/A
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 #458 · merged SIMD-0458: Stop using static SimpleVote transaction cost 20 comments and reviews · Apr 13, 2026Thanks, bw-solana(https://github.com/bw-solana)! ⚠️ Status: Cannot merge yet - Missing approval from: Firedancer (ptaffet-jump(https://github.com/ptaffet-jump), topointon-jump(https://github.com/topointon-jump), 0x0ece(https://github.com/0x0ece), lidatong(https://github.com/lidatong), or ripatel-fd(https://github.com/ripatel-fd))
GitHub ↗I think the loaded account data size is rounded up, so the "proposed consumed CUs" in the table is not right? No?
GitHub ↗I think the loaded account data size is rounded up, so the "proposed consumed CUs" in the table is not right? No? it's 8CU per 32K (round up), most vote accounts are below 32K, but if it's 35K, then it'd round up to 16 CU.
GitHub ↗suggestion Simple Vote transactions is identical to the previously statically defined value for the vast majority of votes. CU consumption will only change for unusual vote transactions that still classify as simple votes (e.g. two signatures, or additional writable accounts), or unusually large vote accounts.
GitHub ↗Thanks, ptaffet-jump(https://github.com/ptaffet-jump)! ⚠️ Status: Cannot merge yet - Missing approval from: Anza (t-nelson(https://github.com/t-nelson), sakridge(https://github.com/sakridge), or bw-solana(https://github.com/bw-solana))
GitHub ↗✅ All approvals received! @tao-stones, you can now merge this by commenting /merge. ✅ Status: Ready to merge
GitHub ↗/merge
GitHub ↗✅ Merge successful! tao-stones(https://github.com/tao-stones)'s PR has been merged.
GitHub ↗Provenance
Evidence & technical details
Rollout or chain data, source revisions, freshness and integrity. 1
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
0616093b2952ed6de52c4a27d66aadd11d48d4f9 - simd-document document · current · Sep 11, 2026
0616093b2952ed6de52c4a27d66aadd11d48d4f9
One or more sources are unavailable.
simd.watch community discussion · SIMD-0458
Powered by Giscus · Sign in with GitHub to comment
Community comments load when this section approaches the viewport.