Agave 4.2 Breaking Changes: Eight Migration Items for Solana Developers Before Transaction V1 Activates
Triton One's Agave 4.2 migration guide covers Transaction V1 getBlock failures, Token-2022 field removals, new reward types, and Yellowstone gRPC minimums.
Solana SOL$101.44+0.7% Solana's Agave 4.2 validator client is rolling out on mainnet this week, the same release that cut slot times to 350ms. It also ships the code for Transaction V1, a new format that expands maximum transaction size from 1,232 to 4,096 bytes under SIMD-0296 and SIMD-0385. Triton One Triton One published an eight-point migration guide on August 21 that documents the changes indexers, RPC consumers, and streaming clients must address before the v1 feature gate activates.
That framing captures the real risk: several changes will cause incorrect data or silent failures rather than immediate crashes, making them harder to catch without targeted audits.
Transaction V1 and getBlock: Set maxSupportedTransactionVersion Now
The most time-sensitive migration item concerns getBlock and getTransaction calls. Transaction V1 ships in Agave 4.2 but activates through a separate feature gate; the code is live on mainnet before the gate fires. Once the gate opens, any getBlock or getTransaction call that has not declared maxSupportedTransactionVersion: 1 will fail when it encounters a v1 transaction.
Kendra Ross's guide describes the correct order: upgrade the SDK, confirm the decode path handles v1 transactions, then set maxSupportedTransactionVersion: 1 on every getBlock and getTransaction call. Setting the parameter early is safe: it works against the current mainnet state and positions integrations for the gate activation. Indexers that decode raw transaction bytes also need to recognise the new v1 wire format.
Token-2022 Confidential Transfer Field Removal
The jsonParsed output for depositConfidentialTransfer and withdrawConfidentialTransfer instructions is changing. Agave 4.2 removes the source and destination fields and replaces them with a single account field. The original field names were incorrect; both instructions operate on one token account, not two, so the replacement label is accurate.
Any parser that reads source or destination from those instruction objects must be updated to read account instead. Beyond the field rename, Anza Anza's Token-2022 3.x interface brings broader instruction parsing: permissioned burn (initialize, burn, burnChecked), unwrapLamports, confidentialBurn, and batch operations now parse correctly. Mints with previously unrecognised extensions will produce populated extension arrays rather than empty ones.
Fewer Account Updates and the Liveness Signal Problem
Validators running Agave 4.2 skip writing account state for accounts a transaction locked for writing but did not modify. Those accounts no longer emit updates in getBlock responses or gRPC account streams. The fee payer always changes and always emits an update, but other writable accounts that go unmodified will be absent from the response.
Transaction-to-account matching logic that assumes a write lock implies an account update will produce incorrect results: a missing update now means "unchanged," not an error. Any liveness or volume monitoring built on account update frequency will also see reduced notification rates; the guide recommends removing liveness checks based on update frequency and re-baselining volume alerts to avoid false incidents.
New deactivated Reward Type in Block Responses
The rewardType field in getBlock and blockSubscribe reward objects gains a new value: deactivated. It identifies final payout events when stake accounts deactivate. Reward objects are otherwise unchanged from Agave 4.1; only the set of values expands.
Closed enum parsers that treat an unrecognised rewardType as an error or silently drop the record will miss these payouts. The fix is to treat rewardType as an open set and explicitly decide whether deactivation payouts belong in staking-yield totals.
Replace Hardcoded 400ms Slot Duration Assumptions
Agave 4.2 is the release that moved slot times from 400ms to 350ms. The Solana SDK's own slot duration constant had not caught up to 350ms at the time of the release, per Ross's guide. Any indexing pipeline or timing logic with a hardcoded 400ms assumption will produce incorrect estimates for time-based queries, slot ranges, and rate calculations.
Streaming Clients: Go and Rust Minimum Versions
For Rust consumers of Dragon's Mouth, the minimum required versions are yellowstone-grpc-client 12.0.0 with a recommended upgrade to 13.3.0, and yellowstone-grpc-proto 12.6.0. Go clients need to regenerate from the latest protobuf definitions and solana-storage-proto to pick up the new data structures.
Dragon's Mouth subscription requests, filters, tokens, and endpoints require no changes; the protobuf already carries the new reward types and account update semantics as correctly typed data.
The full migration guide with implementation detail for each item is published on the Triton One blog, authored by Kendra Ross.
Comments
Please login to leave a comment.
Contents
- Transaction V1 and `getBlock`: Set `maxSupportedTransactionVersion` Now
- Token-2022 Confidential Transfer Field Removal
- Fewer Account Updates and the Liveness Signal Problem
- New `deactivated` Reward Type in Block Responses
- Replace Hardcoded 400ms Slot Duration Assumptions
- Streaming Clients: Go and Rust Minimum Versions
Related Content
Running and Scaling Solana RPCs (w/ Brian Long, co-founder of Triton) - Solfate Podcast #37
Solana Changelog Oct 9 - Program Runtime ABI v2, Updating Rust to 1.81.0, Agave v2.0 transition
Solana Changelog Nov 6th
WTF RPC? w/ Brian Long (Triton One)
Solana Changelog April 25 - Last Restart Slot Syscall, Helium Migration, and Developer Updates
Solana Changelog November 6th
Solana Changelog Aug 28 - Simulate Compute Units, Deprecating Legacy Vote Instructions, and Radar Hackathon
Solana Transaction V1 Heads to Mainnet September 9: Format, Breaking Changes, and What It Unlocks
Solana Changelog - Nov 20 - Agave validator v2.0, loaded account costs
Solana Changelog April 25 - Last Restart Slot Syscall, Helium Migration, and Developer Updates
Solana Changelog Jun 12 - Optional Borsh, Precompiles, and new Web3.js
Solana Changelog April 18 - Automatic Repair, Saga, and Helium
Solana V1 Transactions Now Testable Locally as Mainnet Activation Nears
Solana Changelog - Mar 19: Anza's Agave Client, Compute, and create-solana-program
Triton One's Cloudbreak Cuts getProgramAccounts Latency 99% With Postgres-Indexed Account Storage
Latest news
Solana Apps Hit $7.935M Daily Revenue on September 12, Topping Four Chains Combined
Solana Tokenized Stocks Beat NYSE and NASDAQ Combined in Volume, With 63% of Trades After Market Hours
Yakovenko Proposes QoS Filter to Exclude Slot-Delaying Validators From Solana
GameStop Tokenized as GMEx on Solana, Now Trading 24/7 Across DEXs via xStocks
Kamino Vaults Cross $100M in Deposits From Binance Wallet Users
Backpack Securities Opens Mint and Redeem API to All Solana Developers
HeyWallet Shuts Down, Giving Users Until November 1 to Backup Solana Wallets
1-800-Flowers ($FLWS) Lists on Solana via Backpack Securities, Posts $22M on Day One
Solana Reclaims Daily DEX Volume Lead Over Robinhood Chain, $3.25B to $2.72B
Backpack Adds Searchable Earnings Transcripts, Analyst Estimates, and Earnings History to All 41 Tokenized Stock Pages
Solana Token Markets