Back to Blog

Table of Contents

Highlights

Agave 2.3 Patch Notes: What's Coming

Written By

Brian Wong - DevRel, Anza

June 19, 2025

Agave 2.3 delivers a range of improvements across validator performance, developer tooling, and quality of life. This release features updates to snapshot handling, enhancements to the SBPF toolchain, and a revamped TPU client.

Notable Agave 2.3 Updates 

Feature

Summary

Greedy Scheduler Default

central-scheduler-greedy is now the default, improving performance by reducing scheduling conflicts and idle processing time.

Snapshot Changes

New --no-snapshots flag added for clear snapshot disabling; full snapshots now occur every 50k slots; previous disabling method is deprecated. Account notifications for Geyser are no longer deduplicated when restoring from a snapshot.

TimedTracedEvent ABI

ABI has been updated; validators must update external tools relying on tracing logs.

SBPF Toolchain

Developers can now explicitly target SBPF versions (v0-v3); SBPFv3 programs exclusively use Rust; added --optimize-size flag reduces binary size.

CLI Improvements

Simplified stake withdrawals with withdraw-stake AVAILABLE; solana-test-validator now binds securely to localhost by default.

New TPU Client 

tpu-client-next is the new implementation of the TPU forwarder client, focusing on increased throughput and reduced latency.

Gossip Shred Version

Ensures correct shred_version in gossip, preventing nodes with incorrect configuration from joining the cluster incorrectly.

RPC Updates

simulateTransaction now includes loadedAccountsDataSize, which reports the total bytes of account data loaded during simulation.

Performance Improvements

We added multiple optimizations in Agave 2.3 to improve epoch transitions and reduce I/O overhead.

  • Faster epoch transitions: Epoch reward calculation at each epoch boundary now completes in ~500ms. This reduces the length of any empty slot gap when an epoch ends, improving transaction landing and validator rewards.

  • AccountsDB optimizations: Storage overhead has been dramatically reduced – disk I/O is down by ~75%, and repair request volume is reduced by ~85%. These improvements contribute to more consistent performance under heavy network traffic.

Snapshots

We’re making some quality of life changes to snapshots in this release to improve clarity. 

  • Added --no-snapshots which disables snapshot generation, old --snapshot-interval-slots 0 method is deprecated.

  • Default full snapshot interval: 25,000 -> 50,000 slots

  • Geyser plugin account notifications are no longer deduplicated when restoring from a snapshot.

Wen-Restart

This is a feature that we hopefully never need to use. It automates cluster restart when the chain crashes. Better safe than sorry.

  • Added wen-restart cluster recovery feature.

TimedTracedEvent ABI

We’ve updated the event tracing interface to include some new diagnostics, which requires corresponding updates in external tools.

  • TimedTracedEvent ABI format changed for bank tracing logs. Validators should clear any old tracing data after upgrading and update external analytics tools to match the new format. (#5646)

Greedy Scheduler Default

The greedy scheduler has been performing well in testing and it reduces overhead by avoiding the full dependency graph used in the old central scheduler so we are turning it on by default.

  • central-scheduler-greedy is now activated by default. 

SBPF Toolchain

We are making some quality of life changes for developers on the SBPF toolchain and deprecating the rarely used C-based toolchain with SBPFv3. 

  • Developers can now target specific BPF VM versions (v0-v3) when building programs.

  • SBPFv3 programs are now Rust-only. The C-based toolchain is no longer supported for SBPFv3.

  • Added a new build flag --optimize-size to produce smaller program binaries for deployment. This optimization may incur a slight increase in CU usage.

CLI Improvements

Quality-of-life enhancements in command-line tools streamline common workflows and improve default security for local testing.

  • Added withdraw-stake AVAILABLE command to withdraw all available unstaked lamports. (#4483)

  • Changed the solana-test-validator to bind RPC services to localhost by default.

New TPU Client

We revamped our TPU networking bottlenecks, focusing on increased throughput and reduced latency in transaction processing.

  • Replaced the long-standing ConnectionCache with tpu-client-next as the new default TPU forwarder. This new client dramatically increases packet throughput and reduces latency and jitter in transactions sent to the cluster leader. It also lowers CPU and memory usage on validators under load.

  • The new TPU client is fully backward-compatible. No special action is required to use it, but if any issues arise operators can revert to the old behavior by launching with the --use-connection-cache flag, restoring the 2.2 implementation.

Number of transactions successfully submitted to the leader under synthetic load.

ConnectionCache is on the left, tpu-client-next on the right.

Gossip Shred Version Enforcement

Our network gossip protocols are improved to ensure only correctly configured nodes join the cluster, preventing accidental misconfiguration.

  • Gossip now enforces the correct shred_version when nodes attempt to join the network via gossip. Inbound gossip connections are accepted only if the node’s shred version matches the cluster’s, rejecting mismatched nodes early.

  • The prior exception that allowed “gossip spy” nodes with no shred match to connect has been removed. Operators running spy or observer nodes must now obtain the proper shred version from a cluster entrypoint or explicitly set it via command-line to join successfully.

RPC Updates

We added a new Solana RPC API to improve transparency into simulating resource usage for developers.

  • The simulateTransaction RPC method now returns a new field: loadedAccountsDataSize, which reports the total bytes of account data that were loaded during the transaction simulation. 

Important Breaking Changes
  • Using --snapshot-interval-slots 0 to disable snapshots is now deprecated; use --no-snapshots flag.

  • The TimedTracedEvent logging ABI was updated; any external tracing tools that consume these logs will require updates and old trace data should be cleared.

  • SBPFv3 now exclusively supports the Rust toolchain. The C toolchain is no longer supported for SBPFv3 programs.

Agave 2.3 enhances validator performance and usability significantly. Validators and developers are encouraged to upgrade. Stay tuned for future updates as Agave continues to unlock more block capacity, improve hardware efficiency, and help Solana remain competitive at scale.

Useful Links