Earn 5.29% APY staking with Solana Compass + help grow Solana's ecosystem

Stake natively or with our LST compassSOL to earn a market leading APY

Solana Transaction V1 Heads to Mainnet September 9: Format, Breaking Changes, and What It Unlocks

Solana ๐Ÿงญ Compass By Solana ๐Ÿงญ Compass

Solana Transaction V1 activates on mainnet September 9, expanding max tx size to 4,096 bytes and enabling ZK proofs, BLS signatures, and large multisigs.

Solana Transaction V1 Heads to Mainnet September 9: Format, Breaking Changes, and What It Unlocks

Solana SOL$101.17+4.1% is six days away from the most significant change to its transaction format since v0 introduced address lookup tables. On September 9, Anza plans to activate Transaction V1 on mainnet, expanding the maximum serialized transaction size from 1,232 bytes to 4,096 bytes. The format has been live on testnet since epoch 1025 on September 1, and Anza confirmed the September 9 date on August 29.

Keep up to date with the Solana eco
Follow us on Google News

The upgrade is defined by two Solana Improvement Documents. SIMD-0296 raises the size ceiling; SIMD-0385 defines the v1 message format that carries it. Both were authored by Anza engineers Jacob Creech and Andrew Fitzgerald. Together they resolve a bottleneck that has constrained Solana developers since the network launched, and introduce breaking changes for every RPC consumer, indexer, and analytics platform that reads blocks.

What SIMD-0296 and SIMD-0385 Define

The original 1,232-byte limit was set by Solana's conservative use of a 1,280-byte IPv6 MTU. When QUIC became the default transaction ingestion protocol in 2022, that ceiling became artificial: QUIC's RFC 9000 specifies no maximum stream size, so larger transactions can transit without fragmentation at the MTU layer. SIMD-0296 formalizes the 4,096-byte limit, chosen to match the standard 4 KiB memory page on validator hardware, keeping per-transaction memory handling cheap without requiring a single transaction to span multiple pages.

The v1 format defined in SIMD-0385 changes the transaction envelope substantially. The version discriminator byte moves to position zero (0x81 for v1), so infrastructure can identify the format without deserializing anything. Signatures move to the tail. A 32-bit TransactionConfigMask at a fixed offset encodes priority fees, compute unit limits, loaded accounts data size, and heap size directly in the message header, replacing the ComputeBudgetProgram instructions that v0 and legacy transactions used for the same purpose. That single fixed-offset read replaces instruction-list scanning for fee prioritization.

Address Lookup Tables are removed from v1. The format requires all account addresses to appear inline. This is a deliberate trade: v0 used ALTs to reference up to 64 accounts with one-byte indices because 64 inline 32-byte addresses would have overrun the 1,232-byte budget. At 4,096 bytes, 64 inline addresses consume 2,048 bytes, well within the new ceiling, so ALTs add complexity without practical benefit in the new format. Legacy and v0 transactions remain fully supported; nothing breaks for applications that do not adopt v1.

ZK Proofs, BLS Signatures, and Confidential Transfers: What Fits Now

The 1,232-byte limit made several cryptographic workloads either impossible or requiring multiple chained transactions. The Solana Foundation's upgrade documentation identifies the core unlocks.

Zero-knowledge proofs, such as those used by Confidential Transfers under the Token Extensions standard, produce payloads that exceed 1,232 bytes. Fitting a ZK proof inside a single transaction was not feasible under the old limit; developers either split operations across multiple calls or accepted that encrypted-balance transfers could not be atomic. At 4,096 bytes, ZK proofs land in a single transaction.

BLS signature schemes, which allow many individual signatures to be aggregated into one compact proof, become practical for single Solana transactions. This matters for cross-chain bridge attestations and validator-set signing where multiple parties must authorize one operation.

Large multisig wallets, including those used by institutional treasuries and DAOs through Squads, can now accommodate many more signatories without overflowing the transaction envelope. The SIMD-0296 proposal names nested multisig as a primary motivation alongside Winternitz one-time signatures and onchain BLS implementations without precompiles.

Why V1 Beats Jito Bundles for Atomicity

The byte expansion is the visible change. The structural shift is atomicity. SIMD-0296's motivation section is direct: developers who needed larger transaction space had been using Jito JTO$0.427+1.6% bundles as a workaround. Per Jito's documentation, bundles can include up to five transactions processed sequentially on an all-or-nothing basis within the block engine, but that guarantee operates inside Jito's infrastructure and competes on validator tips. A native v1 transaction carries Solana's protocol-level atomicity guarantee unconditionally: it either succeeds or fails as a single unit, without requiring bundle infrastructure.

For DeFi developers building complex swap routes or multi-step proofs, that distinction matters. A single v1 transaction that encompasses an entire operation reverts cleanly if any step fails. A bundle spanning five v0 transactions does not carry the same protocol-layer guarantee.

What Breaks for RPC Providers, Indexers, and Wallets on September 9

Transaction V1 is opt-in for senders; legacy and v0 formats continue working. For infrastructure that reads blocks, however, V1 is a breaking change the moment it appears on mainnet.

The Solana Foundation's migration documentation enumerates the failure modes:

Any RPC call to getTransaction or getBlock that omits maxSupportedTransactionVersion: 1 will error with code -32015 on a v1 transaction. For blockSubscribe over WebSocket, an unprepared consumer that encounters a v1 slot emits block: null and stops advancing, wedging on the first v1 slot without a loud error.

Indexers that derive priority fees and compute unit limits by scanning for ComputeBudgetProgram instructions will silently return zero for every v1 transaction. In v1, those values live in transactionConfig, not in the instruction list. This is the likeliest path to quietly wrong analytics rather than a loud failure.

Geyser and gRPC consumers face a separate issue: there is no version field in the protobuf. The correct detection order is to check for the presence of Message.config (field 7) first; if present, the transaction is v1. Checking the versioned flag first misclassifies every v1 transaction as v0, because versioned is true for both versions.

Helius hSOL$120.24+4.1% has published an Agave 4.2 migration checklist covering these requirements. Anza requires RPC providers to upgrade to Agave v4.2.2 or v4.3.0-beta.3 to handle v1 traffic correctly.

Per the Solana Foundation's upgrade page, minimum SDK versions for v1 support: @solana/kit 8.0.0 (read and send), @solana/web3.js 1.x at 1.99.0-beta.0 (read only, cannot build or send), and solana-* Rust crates at 4.2.x (read and send). Example code for all four supported languages is in the solana-foundation/transaction-v1-examples repository.

The upgrade lands alongside other Agave 4.2 changes. The first step of Solana's phased rent reduction under SIMD-0437 also activated this week, targeting a 90% cut to token account storage costs in five steps. Both changes reach mainnet under the same Agave 4.2 release.

Solana ๐Ÿงญ Compass
Solana ๐Ÿงญ Compass
@SolanaCompass

Solana Compass is an independent Solana analytics and staking platform, operating a validator on Solana mainnet since September 2021. Its network statistics and...


Comments

Please login to leave a comment.

Related tokens Open token โ†’

Solana tokens

Solana Token Markets

Explore all tokens โ†’