All articles
solanavalidatoragaveinfrastructurerpcperformancerelease

Agave v4.2: 200ms slots, XDP by default, and what breaks for validators and RPC operators

Agave v4.2 targets 200ms slot times — halving Solana's current 400ms — and ships breaking changes for validators (XDP transmit now requires CAP_NET_ADMIN), RPC operators (confidential transfer JSON output changed), and CLI users (vote-account Alpenglow support). Mainnet general adoption August 10.

Share
devrels.xyz/a/124short link

The Agave v4.2 branch was cut on June 29. Testnet validators are asked to adopt it on July 6, devnet upgrades July 13, and mainnet-beta general adoption is scheduled for August 10, with feature activations beginning August 17. All dates are subject to change — watch the Anza Discord before upgrading. Full schedule on GitHub.

The headline: 200ms slots

Anza CEO Brennan Watt has confirmed the team is targeting a reduction in slot time from 400ms to 200ms. That is not a v4.2 feature activation — it is a multi-release infrastructure initiative — but v4.2 is a staging ground for the optimisations that make it possible.

The plumbing work is already producing results. Turbine retransmit latency dropped from ~600ms to ~0.8ms using XDP (Express Data Path) enhancements. That is three orders of magnitude. Replay Stage verification was made asynchronous in v4.0. v4.2 continues the push: XDP transmit is now enabled by default, moving more of the network stack into kernel-bypass mode.

Running parallel to this is the Alpenglow consensus initiative, targeting ~150ms finality by eliminating on-chain vote transactions and replacing Tower BFT. Alpenglow features are landing in v4.1/v4.2. The combined target: sub-200ms finality on a permissionless global network.

Breaking changes for validators

XDP transmit on by default (requires new Linux capabilities)

This is the most operationally significant change in v4.2. XDP transmit in SKB (copy) mode is now enabled by default on Linux. Your validator process now requires two additional Linux capabilities:

bash
# v4.2 requires these capabilities on Linux
CAP_NET_ADMIN   # network interface configuration
CAP_NET_RAW     # raw socket access (XDP path)

# If you run as root, these are already present.
# If you run as a non-root user (recommended), add them:
sudo setcap cap_net_admin,cap_net_raw+ep $(which agave-validator)

# To revert to legacy UDP sockets and skip the capability requirement:
agave-validator --no-xdp [other flags...]

# Note: --no-xdp means no XDP retransmit gains.
# Production validators should add the capabilities, not use --no-xdp.

Additionally, when XDP is enabled, gossip egress will no longer accept private or loopback addresses. Validators that gossip to localhost or RFC1918 addresses for any reason need to reconfigure before upgrading.

Turbine shred ingestion stricter

Turbine shred ingestion now rejects shreds dated more than half an epoch in the future. This is an anti-spam measure. Validators with clock drift or incorrect system time may see shreds dropped. Ensure NTP is synchronised before upgrading.

Blockstore legacy format removed

The old bincode reward column format in the blockstore is no longer supported in v4.2. If you are running a validator that has not been through a v4.x release yet (e.g. upgrading from v3.x directly), the blockstore needs to be migrated before upgrading. The migration ran automatically on any node that touched v4.0 or v4.1, so most operators are already clear.

Deprecated CLI flags

bash
# REMOVED / DEPRECATED in v4.2 — update your startup scripts:

# Deprecated (no-op, will be removed in a future release):
--accounts-db-access-storages-method   # no replacement needed, remove it

# Renamed:
--accounts-db-cache-limit-mb           # → --accounts-db-write-cache-limit
--experimental-poh-pinned-cpu-core     # → --poh-pinned-cpu-core

Breaking changes for RPC operators

Confidential transfer JSON output changed

If you parse jsonParsed transaction data for confidential transfer instructions, the field names have changed. The previous output incorrectly used source and destination fields on depositConfidentialTransfer and withdrawConfidentialTransfer instructions. These operations act on a single token account, so both fields have been replaced by a single account field.

json
// Before v4.2 (incorrect labeling):
{
  "type": "depositConfidentialTransfer",
  "info": {
    "source": "TokenAccount111...",
    "destination": "TokenAccount222..."
  }
}

// After v4.2 (correct):
{
  "type": "depositConfidentialTransfer",
  "info": {
    "account": "TokenAccount111..."
  }
}

New RPC method

RpcClient::get_latest_blockhash_with_commitment_and_context is new in v4.2. It returns the blockhash alongside context including the slot number — useful for applications that need to correlate blockhash freshness with a specific slot without making a separate RPC call.

rust
// New in v4.2
let (blockhash, context) = rpc_client
    .get_latest_blockhash_with_commitment_and_context(CommitmentConfig::confirmed())
    .await?;

println!("blockhash: {}", blockhash);
println!("at slot:   {}", context.slot); // slot now available directly

CLI changes

Alpenglow vote-account support

The vote-account CLI command now supports Alpenglow. The JSON output format has changed — integrations that parse solana vote-account --output json need to be updated. The new format includes Alpenglow-specific fields.

Keystone hardware wallet

Hardware wallet support has been extended to include Keystone via the usb://keystone path. This joins the existing Ledger and Trezor integrations. Validator operators running signing ceremonies with hardware wallets now have a third option.

bash
# Keystone signing — new in v4.2
solana-keygen pubkey usb://keystone
solana transfer <recipient> 1 --keypair usb://keystone

Upgrade timeline

bash
# Recommended upgrade path for validators:

# 1. Jul 6  — Testnet: upgrade and monitor
# 2. Jul 13 — Devnet: feature activations begin
# 3. Jul 20 — Tag mainnet-beta upgrade candidate
# 4. Jul 27 — Volunteer validators (10% stake)
# 5. Aug 3  — Volunteer validators (25% stake)
# 6. Aug 10 — General adoption recommended
# 7. Aug 17 — Mainnet-beta feature activations begin

# Check Anza Discord (#validator-announcements) before each step.
# All dates subject to change.

# Before upgrading:
# 1. Remove deprecated flags from startup scripts
# 2. Add CAP_NET_ADMIN and CAP_NET_RAW to validator binary (or use --no-xdp)
# 3. Ensure NTP is synchronised (Turbine rejects future-dated shreds)
# 4. Update any jsonParsed confidential transfer parsing code

Keep reading

Get new articles in your inbox

Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.

Agave v4.2: 200ms slots, XDP by default, and what breaks for validators and RPC operators | devrels.xyz