Skip to main content
Technical proposal SIMD-0458 Review

Stop special-casing of Vote CU cost

  1. Idea
  2. Draft
  3. Review
  4. Accept
  5. Implement
  6. 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.

Source-backed reading aid · source language: EN

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 unknown
Validators & operators Medium impact

The impact on cost consuming/tracking, and CU reserving for simple vote can be summarized in table:

Action requirement unknown
Users & 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 unknown
Governance & 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 required

Exact source revision

Full proposal document

Source-language document. Technical identifiers and evidence remain unchanged. 0616093b2952

Summary

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 CUsTotal reserved CUs
Current34283428
Proposed3428*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, 2026
@simd-botbot

Thanks, 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 ↗
@ptaffet-jump

I think the loaded account data size is rounded up, so the "proposed consumed CUs" in the table is not right? No?

GitHub ↗
@tao-stones

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 ↗
@ptaffet-jump

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 ↗
@simd-botbot

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 ↗
@simd-botbot

✅ All approvals received! @tao-stones, you can now merge this by commenting /merge. ✅ Status: Ready to merge

GitHub ↗
@simd-botbot

✅ Merge successful! tao-stones(https://github.com/tao-stones)'s PR has been merged.

GitHub ↗

simd.watch community discussion · SIMD-0458

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.
1

SIMD

Deployment Status

Document lifecycleReview
CategoryCore protocol

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.