Solana : du devis au règlement
Solana transaction expiry: submitted is not confirmed
A recent blockhash limits validity; a timeout alone does not establish the final outcome.
Les articles et schémas techniques sont en anglais. La navigation est disponible en 7 langues.
Guides de référence
A short-lived transaction message
Ordinary Solana transactions carry a recent blockhash. Validators reject a transaction once that blockhash is outside the accepted processing window. This bounds how long the network must consider the same transaction for processing. Durable nonce transactions follow a different mechanism and should not be analysed as if they used the ordinary recent-blockhash lifecycle. 1
Follow block height and signature status
The getLatestBlockhash response includes lastValidBlockHeight. A confirmation flow can track the transaction’s signature and the relevant block-height condition, using a consistent commitment context. A fixed 60-second timer is a user-interface timeout, not consensus proof that a transaction can never land. RPC nodes can differ in freshness, and a response can be lost even when a transaction was processed. 2
Why blind retries confuse the record
Rebroadcasting the same signed transaction and constructing a new transaction are different actions. A fresh blockhash changes the message and requires a new signature. Before offering a new payment or trade, an interface needs to determine whether the earlier one settled or expired. Otherwise the user can mistake two distinct authorisations for a harmless network retry.
Preserve the useful evidence
A good support record includes the signature, the reported state, the observation time and the RPC commitment used. It never needs a seed phrase. Distinguish pending, failed on-chain, expired and unknown. An explorer not immediately showing a signature is an observation about that explorer at that moment, not proof of non-execution across the network.
Exemple concret
A wallet reports a request timeout, but the transaction’s signature later appears as confirmed. The timeout described a failed wait for a response. It did not reverse the transaction. Starting an equivalent newly signed trade before resolving that uncertainty could create a second trade.
