Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to the guide
THE FINANCEBASE List yours

Guide

Why a Solana Transaction Can Remain Valid After It Fails—and How to Avoid Signing It Twice

By TheFinanceBase Team 10 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A Solana transaction can report an execution error, charge a fee, and still remain valid for submission until its recent blockhash expires. “Failed” describes what happened during execution; it does not necessarily describe whether the signed message can still be accepted by the cluster. Keep the original signature, track its blockhash lifetime, and do not ask the user to sign a replacement until the first transaction is confirmed or has demonstrably expired.

What “failed” means on Solana

Solana separates transaction execution from transaction lifetime. Once a transaction passes basic validation and reaches the execution stage, its instructions run in order. If an instruction returns an error, the state changes made by the transaction’s instructions are rolled back. The transaction fee is not rolled back: the fee payer is still charged for processing the transaction.

As an Amazon Associate I earn from qualifying purchases.

That execution error does not instantly erase the signed message from the network’s processing window. A transaction carries a recent blockhash, and validators use that blockhash to determine whether the message is still recent enough to process. The message can therefore be within its validity window even after an execution failure has been reported.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This distinction explains a common user experience: a wallet or application displays an error, yet a later submission or status lookup shows the same signature being processed. The error may have come from one instruction, while the blockhash remains current. Treating the error as automatic permission to create and sign a second transaction can produce duplicate actions, confusing balances, or a second fee.

#1 Best Overall
Ledger Nano X - Classic Crypto Wallet with Bluetooth | Compact, go anywhere, 1.1" display. Desktop & iOS/Android compatible
  • Effortlessly build your crypto portfolio via the all in one Ledger Wallet app: buy, sell, send, receive, swap, stake and more across popular blockchains. 15,000+ coins & tokens in a single dashboard. Keep a close eye on the market. Compare service providers. Track performance. Get timely alerts. Build your portfolio with confidence.
  • Enjoy Bluetooth connectivity, iOS access, and hours of battery use with this mobile-first, secure backup signer. Freedom you can depend on.
  • Genuine Check: confirm your signer is authentic during setup with the Ledger Wallet app.
  • Protect your signer: keep it in mint condition at all times with a bespoke Pod or Case to avoid scratches and everyday wear and tear.

Recent blockhashes give transactions a finite lifetime

An ordinary Solana transaction uses a recent blockhash. Solana’s transaction reference describes a processing-age limit of 150 slots for recent blockhashes. A slot is a unit of validator scheduling, not a fixed number of seconds, so 150 slots must not be converted into a universal timer.

When your application fetches a blockhash, the response includes both the blockhash and a lastValidBlockHeight. Save both values with the transaction you build. The blockhash identifies the signed message, while the last-valid block height gives you the protocol-based expiry boundary for that particular transaction.

Block height is the reliable expiry signal. Wall-clock rules such as “retry after 30 seconds” are unsafe because slot production can vary, an RPC node can lag, and network conditions can change. A transaction that appears quiet for a short period may still be accepted before its last valid block height.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why a missing status is not proof of expiry

A signature-status query answers what the cluster currently reports for that signature. It does not by itself prove that a transaction can no longer land. A status may be temporarily absent because the transaction has not reached the node you queried, the node’s history is limited, or propagation is still in progress.

Use getSignatureStatuses with the same confirmation commitment your application uses elsewhere. Record the returned signature and continue checking that same signature. Do not create a new user-facing signing request merely because one status request returns null.

Confirmation commitment matters because “processed,” “confirmed,” and “finalized” represent different levels of cluster observation. Pick a policy that fits the action—for example, an exchange withdrawal may require finalized status—then apply it consistently to status checks and block-height checks. A temporary lack of the chosen commitment is not equivalent to expiry.

Rank #2
Sale
TANGEM Crypto Wallet Pack of 3 – Trusted Cold Storage Hardware Wallet | 100% offline; Bitcoin, Ethereum, NFTs & altcoins; No seed phrase; NFC; Pack of 3, Self custody wallet
  • Proven security at scale: Over 9 years and millions of cards issued with no known remote hacks, while military‑grade EAL6+ security keeps your private keys locked inside the chip. Your cryptocurrencies stay strongly protected from online attackers.
  • Tap once to manage your entire crypto wallet across 90 blockchains - no USB cables or Bluetooth, no batteries, no setup. Access 14,100+ coins & tokens, DeFi, NFTs, and staking instantly from your phone
  • Smart backup: Use your second Tangem Wallet as your Backup keys with end‑to‑end encryption; no more papers, pictures. If one card is lost, the remaining can still restore full access, with an optional seed phrase available for advanced users.
  • Engineered to last up to 25 years: Waterproof (IP69K), shockproof and tested for extreme temperatures from −25°C to 50°C. A durable cold wallet with long‑term protection and independently audited security.
  • Trusted by 6 million users worldwide (4.9 App Store, 4.8 Google Play) - buy, sell, swap, stake, and spend cryptocurrency directly. The secure offline storage wallet designed for how people actually use crypto wallets

A safe retry sequence for an ordinary transaction

The following sequence prevents a replacement from racing the original message.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Fetch and retain the lifetime data. Request a recent blockhash, then store the returned blockhash and lastValidBlockHeight alongside the user action and the transaction’s serialized message.
  2. Build and sign once. Construct the transaction with its fee payer, instructions, account list, and blockhash. Collect every required signature and retain the resulting transaction bytes. Keep the user’s action linked to the resulting signature.
  3. Submit once and record the signature. Send the signed transaction and persist the signature returned by the RPC endpoint. If your infrastructure retries transport delivery, retry delivery of the same signed bytes rather than asking the user to sign a different message.
  4. Poll the original signature. Call getSignatureStatuses for that signature. If the status reports an execution error, show the error and explain that the fee was charged, but continue tracking the transaction’s lifetime until it is settled or expires.
  5. Check block height for expiry. Poll getBlockHeight at the selected commitment. The transaction’s recent-blockhash window has expired when the observed block height exceeds the saved lastValidBlockHeight.
  6. Decide only after settlement. If the signature reaches the required commitment, stop. If the blockhash expires without the required confirmation, mark the original attempt as expired and begin a new transaction flow.
  7. Rebuild after expiry. Fetch a fresh blockhash and create a new message. A changed blockhash creates different signed bytes, so collect all required signatures again before submitting the replacement.

For asynchronous transfers, Solana’s exchange-integration guidance specifically advises waiting for blockhash expiry before retrying a withdrawal that has not appeared confirmed or finalized. The same principle is useful for wallets and payment services: settle the original attempt or prove expiry before creating a second one.

Why changing a transaction requires new signatures

Signatures authorize a specific message, not an abstract intention such as “send 1 SOL.” The signed message includes the fee payer, recent blockhash, instruction order, account list, and instruction data. Changing any of those fields changes the message bytes.

Changing the blockhash alone is enough to invalidate every signature already collected. The same is true if you change the destination account, amount, fee payer, account metadata, instruction order, or instruction data. A replacement transaction is therefore a new authorization event, even when it represents the same business action.

Solana’s partial-signing documentation states: “Changing the fee payer, blockhash, instruction order, account list, or any instruction data produces a different message and invalidates every signature already collected.” In practice, never copy old signatures onto a rebuilt transaction and assume they remain valid. Re-run the complete signing flow with every required signer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recent-blockhash and durable-nonce transactions compared

Property Recent-blockhash transaction Durable-nonce transaction
Lifetime Limited by the recent-blockhash processing-age window; track the transaction’s lastValidBlockHeight. Uses a stored nonce, allowing delayed or offline signing outside the ordinary recent-blockhash window.
Execution failure Instruction state changes roll back and the fee remains charged. The nonce advancement and fee remain committed even when a later instruction fails.
Next attempt Wait for confirmation or expiry, then fetch a fresh blockhash and gather signatures on a new message. Refetch the advanced nonce and create a fresh message and signing flow.
Main risk A missing or late status is mistaken for expiry, causing a premature replacement. An old signed transaction is reused even though its nonce has already been consumed; nonce validation and execution failure are also confused.

Durable nonces are an on-chain account-and-instruction mechanism, not merely a longer timer. Solana’s current durable-nonce documentation warns that the feature may be deprecated in a future release, so confirm its status before designing a new system around it.

Rank #3
TANGEM Crypto Wallet Pack of 2 – Trusted Cold Storage Hardware Wallet | 100% offline; Bitcoin, Ethereum, NFTs & altcoins; No seed phrase; NFC, Self custody wallet
  • Seedless by design, nothing to steal: Your private key is generated inside the EAL6+ chip and never leaves it. No seed phrase is shown or typed at setup, so a tampered device, keylogger, or phishing site has nothing to capture. 9+ years, millions of card.
  • Tap once to manage your entire crypto wallet across 90 blockchains - no USB cables or Bluetooth, no batteries, no setup. Access 16,100+ coins & tokens, DeFi, NFTs, and staking instantly from your phone
  • Backup without a seed phrase: Your wallet is copied to 2 backup cards with end-to-end encryption, so there are no words on paper to lose or leak. Keep them in separate places; if one card is lost, the others restore full access. Optional seed phrase for advanced users.
  • Engineered to last up to 25 years: Waterproof (IP69K), shockproof and tested for extreme temperatures from −25°C to 50°C. A durable cold wallet with long‑term protection and independently audited security.
  • Trusted by 6 million users worldwide - buy, sell, swap, stake, and spend cryptocurrency directly. The secure offline storage wallet designed for how people actually use crypto wallets

Durable nonce failures need a different recovery path

A durable-nonce transaction advances the nonce before the transaction’s other instructions execute. If the transaction passes nonce validation and then an instruction fails, the nonce advancement is still committed and the fee is still charged. The old signed transaction cannot be treated as an unused attempt.

After processing, read the nonce account again. If another attempt is required, use the updated nonce value to build a completely new message and collect signatures again. Reusing the consumed nonce produces a different failure mode from an instruction error.

Nonce validation can fail before execution. Examples include an already-used nonce, an invalid or missing nonce account, or a missing nonce-authority signature. In that pre-execution validation case, the documented behavior is that no fee or instruction state change is committed. Do not apply that rule to a transaction that passed validation and later failed an instruction; those transactions have different fee and state outcomes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Common errors and what they tell you

Observed condition What it generally means What your application should do
Instruction execution error The transaction reached execution; instruction state changes were reverted and the fee was charged. Show the failure, retain the signature, and do not assume the blockhash has expired.
AlreadyProcessed The pipeline recognized a message already present in its status cache. Treat it as a duplicate-message signal, not as proof that your retry design is safe. Reconcile the original signature and user action.
BlockhashNotFound The blockhash is no longer in the recent queue, and the transaction is not a valid durable-nonce transaction. Fetch a new blockhash, rebuild the message, and obtain all required signatures again.
Nonce validation failure The nonce was already used, the nonce account or authority data was invalid, or the required authority signature was missing; execution did not begin. Correct the nonce account or authority data and start a new signing flow.
Status temporarily missing The queried node has not reported the signature at the requested commitment. Continue checking the same signature and monitor block height; do not infer expiry from one missing response.

Implementation pattern for an RPC client

The essential state machine is small. Store transaction metadata durably enough that a process restart does not cause a second signing prompt.

const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash(commitment);
transaction.recentBlockhash = blockhash;
transaction.feePayer = feePayer;

const signed = await signWithAllRequiredSigners(transaction);
const signature = await connection.sendRawTransaction(signed.serialize());

for (;;) {
  const status = await connection.getSignatureStatuses([signature]);
  const value = status.value[0];

  if (value?.err) {
    recordExecutionFailure(signature, value.err);
    // Keep tracking lifetime; do not sign a replacement here.
  }

  if (value?.confirmationStatus === requiredCommitment) {
    return { outcome: "confirmed", signature };
  }

  const height = await connection.getBlockHeight(commitment);
  if (height > lastValidBlockHeight) {
    return { outcome: "expired", signature };
  }

  await delay(pollInterval);
}

The exact SDK calls and commitment names can vary by client library, but the invariants do not: retain the original signature, compare block height with the saved boundary, and rebuild only after expiry. If an execution error is terminal for the business action—for example, an account has insufficient funds—your application can stop polling for success while still recording the signature and its fee consequence. It should not silently create a second signed transfer.

Designing the user experience so users do not sign twice

Separate “submitted,” “failed,” and “expired” states

Use labels that reflect protocol state. “Submitted—awaiting confirmation” means the signature is being tracked. “Execution failed” means the cluster reported an error and the fee was charged. “Expired without confirmation” means the recent-blockhash lifetime ended before the required commitment was observed. These are not interchangeable messages.

Rank #4
DCENT Hardware Wallet | Biometric Cold Storage, Bluetooth, Multi-Crypto
  • EAL5+ CERTIFIED SECURE ELEMENT + FINGERPRINT PROTECTION — Your private keys stay encrypted offline on a certified EAL5+ chip, the same security tier used in EMV bank cards. Built by DCENT, securing crypto since 2018. Fingerprint authentication adds a second layer no PIN-only wallet can match.
  • 10,000+ ASSETS NATIVE ON 100+ BLOCKCHAINS — Hold Bitcoin, Ethereum, XRP, Solana, Cardano, popular stablecoins (USDT, USDC), and NFTs in one wallet. No third-party apps, no fragmented setup — every supported asset works straight out of the box.
  • TAP-TO-SIGN MOBILE EXPERIENCE — Pair your wallet with the DCENT mobile app over Bluetooth. Manage tokens, review transactions, and access in-app swap features directly from your phone — no cables, no desktop required.
  • WEB3 & dAPP ACCESS VIA METAMASK — Connect to MetaMask and other browser extension wallets to manage NFTs, claim airdrops, and access dApps. A large screen and intuitive 4-button interface keep every transaction clearly visible before you sign.
  • SEAMLESS FIRMWARE UPDATES & 30-DAY MONEY-BACK GUARANTEE — Apply security updates without resetting your wallet or migrating funds. Backed by Amazon's 30-day money-back guarantee — your purchase is risk-free.

Disable duplicate signing prompts

Associate one application action with one active signature attempt. If the interface receives a second click while the first attempt is unresolved, show the existing transaction status instead of opening another wallet approval dialog. Persist an idempotency key for the business action so a page refresh cannot create an unrelated replacement.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make replacement authorization explicit

After expiry, tell the user that the original message is no longer valid and that a new transaction must be authorized. Display any changed amount, recipient, fee payer, or instruction data before requesting signatures. A new blockhash alone technically changes the message, even when all visible payment details remain the same.

Keep an audit record

Store the signature, serialized message or message hash, blockhash, last-valid block height, commitment policy, returned error, and timestamps. This record lets support staff distinguish an execution failure from an expired transaction, a duplicate submission, or a nonce validation problem.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Practical troubleshooting scenarios

The wallet says “failed,” but the recipient later received funds

Look up the original signature rather than sending another payment. The wallet may have displayed an instruction-level error from one attempt while a separate submission or prior attempt succeeded, or it may have shown a temporary RPC problem. Reconcile the signature at the chosen commitment and inspect the account history before taking action.

The signature is still missing after several polls

Query the same signature through a healthy RPC endpoint, verify that your commitment setting is consistent, and compare the current block height with the saved lastValidBlockHeight. Until the height passes that boundary, absence from one status response is not proof that the signed transaction cannot land.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The blockhash expired

Mark the original attempt expired, fetch a fresh blockhash, rebuild the transaction, and collect every required signature. Do not alter only the blockhash in a serialized transaction and reuse the old signatures.

Best Value
Trezor Safe 7 Crypto Hardware Wallet with Bluetooth for Android/iOS/Desktop | Charcoal Black, Aluminum Unibody, 2,5" TouchScreen, Wireless Charging, Quantum-Ready, IP54, Long-Lasting LiFePO? Battery
  • Dual-chip architecture for maximum protection: The next-gen, fully auditable TROPIC01 chip works alongside a certified EAL6+ Secure Element—completely NDA-free—to deliver radically transparent, industry-leading defense against physical attacks.
  • Quantum-ready security: Get protection against future threats with the first-ever hardware wallet designed with quantum-ready architecture.
  • See every detail with confidence: Our largest high-resolution color touchscreen makes it easy to navigate your assets, review transactions and manage your coins with clarity.
  • Wireless freedom with encrypted Bluetooth control: Manage, buy, swap and stake securely using Trezor Suite on desktop or mobile. Qi2-compatible wireless charging keeps your Trezor powered up. No cables required—security meets convenience.
  • Works seamlessly with Android, iOS and desktop: Connect wirelessly or via USB-C to your phone or computer. Manage your crypto anywhere with our companion Trezor Suite app.

An instruction failed and the user wants to try again immediately

First determine whether the failed transaction’s business effect is safely repeatable. Keep tracking the original signature until it is settled or expired. If a new attempt is appropriate after settlement, build a new message and use an application-level idempotency key to prevent two successful attempts from creating an unintended duplicate.

A durable-nonce transaction failed

Read the nonce account. If the transaction passed nonce validation, the nonce has advanced even though an instruction failed, so the old signed transaction cannot be reused. Build and sign with the newly fetched nonce. If validation failed before execution, correct the nonce or authority configuration and start over.

Fees and financial reconciliation

An execution failure still consumes the transaction fee. Your ledger should record the fee whenever the cluster accepted and processed the transaction, even if every instruction’s state change was rolled back. Do not refund or retry solely because the user saw an error message; first determine whether the original signature was processed, confirmed, finalized, or expired.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Solana’s transaction reference lists a 5,000-lamport base fee per signature, but fee schedules can change. Treat that figure as documentation context rather than a permanent price, and obtain the current fee information from the network when calculating a live charge.

Bottom line

A failed execution is not automatically an expired transaction. Keep the original signature and its lastValidBlockHeight, query status consistently, and wait until the transaction reaches the required commitment or the block height proves expiry. Only then build a replacement, and always collect signatures again because a changed blockhash creates a new message. Durable-nonce transactions follow the same principle of one message per signing flow, but a failed attempt also consumes the nonce, so the updated nonce must be fetched before another attempt.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a comment

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More guides

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.