Transaction Landing

The art and challenge of getting your transaction successfully included in a block, influenced by priority fees, RPC quality, and network congestion, and a key metric traders obsess over during volatile markets.

What is Transaction Landing / Blockhash Expiration

To "land" a transaction simply means to have it successfully included in a block—signed, broadcast, and confirmed on-chain. Blockhash expiration is Solana's automatic deadline for this event. Every transaction carries a recent blockhash acting as a timestamp, and the network will reject any transaction if that blockhash gets older than 150 slots or so. Since each slot takes roughly 400ms, you have about a minute before your signed transaction becomes invalid.

Think of a restaurant reservation as your contract. The host is promising a specific table for a specific time window. Walk in inside that window and you're good. Walk outside it, and the reservation just vanishes–there's no fee for not showing up, and they aren't holding a table for you in a month. "Landing" is the same. The expiring hold is your blockhash. No one will show up next year and present an expired restaurant reservation.

How Landing and Expiration Work Technically

You sign a swap in Phantom, which stamps your transaction with the most recent blockhash available in your view. Your RPC provider (a node relay such as Helius) then sends the transaction to the current block producer (the leader) and the next few leaders, because Solana preannounces its leadership schedule. If you're unsuccessful at the first producer, your RPC provider tries again at each successive leader until you land or your blockhash expires around 150 slots out.

If congestion is occurring, your chances can improve by prioritizing your transaction in the leader's queue with a priority fee, or even "buying" inclusion with Jito tips through bundle auctions. For the most extreme times, you can utilize staked connections–which are given bandwidth priority in a stake-weighted quality of service protocol called SWQoS–while non-staked connections are being rate-limited. During the congestion storms in 2024, this difference was critical: public RPCs had very low landing success rates for weeks, while RPCs with staked back-end connections maintained landing rates near 100%. The infrastructure stack has certainly improved since then, but the lesson stands: who you send from matters.

In terms of fee mechanics, precision is critical: an unsuccessful transaction costs zero, since fees are only charged on inclusion. But a successful transaction can fail downstream: your swap fails due to slippage on Jupiter, but you still paid the transaction fee–5,000 lamports base fee, plus the priority fee you attached–because the network executed and rejected your transaction.

How Expiration Compares to Ethereum

Ethereum transactions never expire, so a valid but unsigned ETH transaction will remain valid forever so long as the nonce (the transaction counter) stays the same on the user's account. This is why it's normal for a stuck transaction to suddenly land after 2-4 hours due to dropping gas prices, potentially at an unfavourable price. By contrast, in Solana an expired signed-but-not-sent transaction expires within 60 seconds. There's no possibility of your expired signature being accepted in the future, and validators will never experience hundreds of GB of pending transactions filling up their memory. In rare cases where you might need a transaction to stay valid- an offline signer or a future scheduled treasury withdrawal- there are durable nonces available that replace the expiring blockhash with a non-expiring one. It requires an opt-in mechanism.

Why Landing Matters in Practice

Here is the nightmare scenario. You're trying to buy a token as it rockets upward on pump.fun. You send a swap using a free RPC, and your spinner never moves. After 60s you get an expiration error: nothing landed. You paid nothing, you missed the move entirely, and signing a replacement at a worse price. The guy next to you, however, sent with Helius using auto-tuned priority fees, and his transaction landed 2 slots. Same chain, same moment, but better infrastructure.

The good news is the defaults are doing most of this work for you now: Phantom's default auto-retries, priority fee attachments, and serious RPC providers all offer staked backend infrastructure. Platforms like Drift are built to route to hardened transaction senders. The caveat here is that, even though expiration provides a hard failure guarantee, there is no guarantee of success during congestion. You will still lose that 60s, and no fee setting will fully insulate you from the risk of a wasted attempt.

Does an expired transaction cost you anything?

An expired transaction costs you nothing but time: there is no fee charged to the user if it fails to land, because fees are only charged on inclusion, and an unlanded transaction was never included at all.

Contents

Writen By

Stay Updated - Follow us on X

Project review threads, dApp insights, announcements, news, and more.