Skip to main content
Technical proposal SIMD-0083 Accepted

Relax Entry Constraints

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

Decision brief

Why this proposal matters

Remove the constraint that transaction entries cannot contain conflicting transactions.

Source-backed reading aid · source language: EN

Proposal at a glance

What changes

  • both require a write-lock on the same account, or
  • one transaction requires a write-lock, and the other requires a read-lock on the same account.
  • Each entry must be deserializable via bincode (or equivalent) into a structure:

Stakeholder map

Who is affected

Builders & client teams Medium impact

where Hash and VersionedTransaction are defined in solana-sdk.

Action requirement unknown
Validators & operators Impact unknown

No proposal-specific evidence was found for this group.

Action requirement unknown
Users & stakers Medium impact

Remove the constraint that transaction entries cannot contain conflicting transactions.

Action requirement unknown
Governance & ecosystem Medium impact

This proposal is backwards compatible with the current protocol, since it only relaxes constraints, and does not add any new constraints. All previously valid blocks would still be valid. However, newly produced blocks may no longer be valid under the old protocol.

Action requirement unknown

Exact source revision

Full proposal document

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

Summary

Remove the constraint that transaction entries cannot contain conflicting transactions.

Motivation

The current constraint that transactions within entries must not conflict with each other is unnecessary. It is a constraint, that made the current labs-client implementation easier, but is not required for the protocol to function correctly. The removal of this constraint simplifies the protocol, and allows more flexibility in the implementation of both block-produciton and block-validation.

Alternatives Considered

  1. Do nothing
    • This is the simplest option, as we could leave the protocol as is. However, this leaves the protocol more complex than it needs to be.
  2. Remove the constraint, but execute conflicting transactions by priority.
    • This is a more complex option than the current proposal.
    • It also gives less flexibility to the block-producer, since transactions would be re-ordered.

New Terminology

Conflicting transactions are defined as transactions that either:

  1. both require a write-lock on the same account, or
  2. one transaction requires a write-lock, and the other requires a read-lock on the same account.

Tick entries are defined as entries that contain no transactions.

Detailed Design

Currently, if a transaction entry within a block contains transactions that conflict, the entire block is marked invalid. The proposal is that this constraint is removed entirely, and entries are allowed to contain transactions that conflict with each other.

If transactions within an entry conflict with each other, they must be executed sequentially, in the order they appear in the entry. This decision gives the most freedom in block-production, as it allows for arbitrary ordering of transactions within an entry by the block-producer.

If the proposal is accepted, the individual entry constraints are as follows:

  1. Each entry must be deserializable via bincode (or equivalent) into a structure:

     struct Entry {
       num_hashes: u64,
       hash: Hash,
       transactions: Vec<VersionedTransaction>,
     }
    

    where Hash and VersionedTransaction are defined in solana-sdk.

  2. Tick entries are valid only if the sum of num_hashes in all entries, including the tick entry itself, since the previous tick entry match the hashes_per_tick field of the Bank. This value is subject to change with feature gates, but is currently 12500. This means if a tick entry's num_hashes field exceeds the hashes_per_tick field of the Bank, the entry is invalid.

If any of these constraints are violated, the entire block is invalid.

Impact

  • The protocol is simplified
  • Block-production is more flexible

Security Considerations

This proposal changes the protocol and would break consensus. This proposal will require a feature-gate, so that all validators can change behavior at the same time.

Drawbacks

None beyond the security considerations above.

Backwards Compatibility

This proposal is backwards compatible with the current protocol, since it only relaxes constraints, and does not add any new constraints. All previously valid blocks would still be valid. However, newly produced blocks may no longer be valid under the old protocol.

Evidence graph

Related proposals and rollout

One or more sources are unavailable.

Upstream review record

Upstream discussion & review

One or more sources are unavailable.

simd.watch community discussion · SIMD-0083

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 lifecycleAccepted
CategoryCore protocol
Devnetinactive
Testnetinactive
Mainnet-Betainactive
ENTRYnPAoT5Swwx73YDGzMp3XnNH1kxacyvLosRHza1i

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.

One or more sources are unavailable.