~/xroot.dev/research $

Research

What reading the chain directly turns up — protocol economics, wire formats, raw account parsing, and the things the documentation leaves out. Every figure is verified against a primary source.

FEATURED SERIES

Building a Real-Time Solana Data Pipeline

A comprehensive 3-part guide on ingesting, decoding, and analyzing the Solana firehose with zero data loss using Rust, NATS, and ClickHouse.

Filter
fec
11 min read

Solana Shred Recovery: When Valid Shreds Form an Invalid Erasure Batch

A Solana erasure batch is 32 data and 32 coding shreds under one signed Merkle root, and every shred in it can verify while the batch is wrong. SIMD-0504 and Agave’s new “always recover” path make every validator rebuild every batch. In our model, the old code’s outcome depended on which shreds arrived; under the new one, none of 800,000 rebuilds of a malformed batch passed.

SolanaTurbineAgaveConsensus
Read article
ws
11 min read

Solana WebSockets That Stay Connected but Miss Updates

Measured on mainnet on 5 November 2026: a finalized logsSubscribe stream on Agave 4.4 never scanned 3% of slots and missed one finalized transaction in thirty, with no error and no disconnect. Why programSubscribe and logsSubscribe read one slot per update, why confirmed is better but not complete, the open fix, and the reconciliation loop that catches the gap.

SolanaRPCWebSocketsIndexing
Read article
⇄
11 min read

Two Tokens, One Stock: The Weekend Arbitrage Nobody Ran

Eleven Uniswap v4 pools on Robinhood Chain swap Ondo and Robinhood tokens for the same stock at a stored rate. Read from the chain for their first week: one account set them up and can change the rate, they carried 0.05% of the tokens’ trading, and on the first weekend no Ondo token was bridged in or out.

Robinhood ChainTokenized StocksUniswap v4On-chain Data
Read article
free
10 min read

Which Solana Programs Still Depend on the Legacy Allocation Syscall?

sol_alloc_free_ has been banned from new SBPFv0 deployments on mainnet since August 2023, but SBPFv3 can still deploy it, and Memo v1 still calls it 4n + 2 times per instruction. We scanned mainnet binaries for it, counted Memo v1’s calls in a VM, and checked SIMD-0706’s deployment rule: a one-account memo would go from 661 to 1,261 compute units.

SolanaRuntimeSBPFSyscalls
Read article
sha
10 min read

When a Solana Feature Activates but Its Program Migration Fails

SIMD-0690 makes the runtime hash a replacement program before swapping it in. Replayed on the real p-ATA buffer from mainnet: the hash matches, every failure leaves the gate active and the Associated Token Account program unchanged, and if the gates activate out of order Agave and Firedancer deploy different bytes.

SolanaFeature GatesRuntimeRust
Read article
fee
8 min read

Why Solana’s getFeeForMessage Is Not a Transaction-Validity Check

Agave 4.5 makes getFeeForMessage return a fee for expired blockhashes and wrong durable nonces; null now means only bad compute-budget instructions. Measured on the old code, it was never an expiry check: it priced transactions for 150 blocks after the node rejected them with “Blockhash not found”. What a fee promises, and what to call instead.

SolanaRPCAgaveFees
Read article
sim
10 min read

When Solana Transaction Simulation Disagrees With Execution

Ten transactions on a local Agave 4.2.1 validator, simulated and then sent. Every simulated fee and balance matched what landed, but accounts came back null for every failure, while six of eight failures still landed without preflight and paid 5,000 lamports, two of them using up a durable nonce. How to read a simulation, what Agave #16616 changes inside the bank, and who it reaches.

SolanaRPCAgaveTransactions
Read article
v12
9 min read

Token-2022 v12: What Changed for Rust Developers

Token-2022 v12 rewrites the program on Pinocchio and roughly halves the compute cost of a transfer, but every cluster still runs v11.1.0. What breaks in Rust code (the native processor signature, the zk-ops feature, two TLV helpers), why confidential keys stay identical under zk-sdk 8, and an upgrade order that works.

SolanaToken-2022RustConfidential Transfers
Read article
exp
11 min read

Why Changing a Solana Cryptographic Syscall’s Compute Price Requires a New Feature Gate

SIMD-0529’s big_mod_exp syscall got a new feature key on 1 November because its price changed after the old key had shipped in Agave 4.3.0 to 4.4.0. Both price formulas timed in Rust on the library Agave calls: time per compute unit varied 440-fold under the draft price and 1.7-fold under the final one. Plus what both clients charge for a failing call, which is not what the SIMD says.

SolanaSyscallsFeature GatesRust
Read article