Static Nonce Account Only
- Idea
- Draft
- Review
- Accept
- Implement
- Active
Decision brief
Why this proposal matters
The advance nonce instruction in a transaction can currently specify any account in the transaction as the account to advance. This proposal would restrict the advance nonce instruction to only be able to advance a statically included account.
Proposal at a glance
What changes
- nonce transaction
- A transaction that includes SystemInstruction::AdvanceNonceAccount as its first instruction.
- nonce account
Stakeholder map
Who is affected
Builders & client teams Medium impact
Clients who currently send nonce-transactions with looked up nonce accounts will need to change their behavior.
Action may be requiredValidators & operators Medium impact
Leader nodes MUST drop nonce transactions that do not meet this requirement without including them in a block.
Action may be requiredUsers & stakers Medium impact
Clients who currently send nonce-transactions with looked up nonce accounts will need to change their behavior.
Action may be requiredGovernance & ecosystem Medium impact
The advance nonce instruction in a transaction can currently specify any account in the transaction as the account to advance. This proposal would restrict the advance nonce instruction to only be able to advance a statically included account.
Action requirement unknownExact source revision
Full proposal document
f1f6c8b05dc2Summary
The advance nonce instruction in a transaction can currently specify any account in the transaction as the account to advance. This proposal would restrict the advance nonce instruction to only be able to advance a statically included account.
Motivation
- There is a separate proposal to relax the constraints on transaction account resolution. That proposal would allow transactions with invalid lookups or duplicate accounts to be included in a block, pay fees, but not processed.
- However, that relaxation cannot happen without specifying the interaction with nonce accounts. Rather than complicating the protocol and specifying the interactions between lookups and nonces, this proposal aims to simplify by restricting nonce accounts to statically declared accounts.
New Terminology
No new terminology is introduced. Clarification of existing terminology is provided:
- nonce transaction
- A transaction that includes
SystemInstruction::AdvanceNonceAccountas its first instruction.
- A transaction that includes
- nonce account
- The account specified in the first account of the
SystemInstruction::AdvanceNonceAccountinstruction in a nonce transaction.
- The account specified in the first account of the
- statically included account
- An account that has its'
Pubkeydirectly included in the transaction message.
- An account that has its'
Detailed Design
- Nonce transactions MUST have a nonce account index that is less the number of statically included accounts in the transaction.
- Leader nodes MUST drop nonce transactions that do not meet this requirement without including them in a block.
- Nonce transactions that do not meet this requirement are invalid and MUST result in the entire block being rejected by the validators.
Alternatives Considered
- Do nothing
- This means we cannot relax account resolution constraints
- Delete nonces entirely
- preferred by some, but is a separate proposal and a more thought-out transition plan is necessary.
Impact
- Clients who currently send nonce-transactions with looked up nonce accounts will need to change their behavior.
Security Considerations
- Requires a feature-gate to be enabled to avoid forking the network.
Backwards Compatibility
- Some previously valid transactions may not be valid under the new restrictions.
Evidence graph
Related proposals and rollout
One or more sources are unavailable.
Upstream review record
Upstream discussion & review
One or more sources are unavailable.
Provenance
Evidence & technical details
Rollout or chain data, source revisions, freshness and integrity. 3
Provenance
Evidence & technical details
Rollout or chain data, source revisions, freshness and integrity.SIMD
Deployment Status
7VVhpg5oAjAmnmz1zCcSHb2Z9ecZB2FQqpnEwReka9ZmExact source revision
Sources & integrity
- Proposal document pinned_commit_blob
f1f6c8b05dc205552d3c290a854a438392701107 - simd-document document · stale · Oct 19, 2026
f1f6c8b05dc205552d3c290a854a438392701107
One or more sources are unavailable.
One or more sources are unavailable.
simd.watch community discussion · SIMD-0242
Powered by Giscus · Sign in with GitHub to comment
Community comments load when this section approaches the viewport.