Sending Transactions
Optimizing transactions on the Solana network is key to ensuring the highest success rate. In the guide below, we'll cover some common strategies and resources you can use.
Why transactions fail
The success rate of your dApp’s transactions on Solana will depend on several factors:
-
Network congestion: during periods of high network activity, transaction success rates can decrease due to increased competition for block space and processing resources. Transaction prioritization: Solana uses a fee market where higher priority fees can improve the chances of a transaction being processed quickly. Transactions with lower fees may fail more often during congested periods.
-
Transaction compute units (CU): Solana has a maximum CU per block of 48M, which is often met during periods of congestion. By using CUs more efficiently in programs (reduced logging, smaller data types, etc.) developers can improve the likelihood of transactions being included in a given block.
-
sendTransaction parameters: a few of the sendTransaction RPC method parameters (for example
skipPreflight
andmaxRetries
) allow for some control over how the transaction is processed and can affect the overall success rate. Adjusting these parameters involves trade-offs, and different values may be appropriate for different use cases. -
RPC infrastructure: for a transaction to succeed, it must be forwarded to an RPC node that is synchronized with the latest state of the blockchain. Therefore the performance, reliability and scalability of the node infrastructure which a dApp uses to submit transactions is critical.
Helpful resources
Solana Developer Guide
- How to use Priority Fees on Solana
- How to Optimize Compute Usage on Solana
- How to Request Optimal Compute Budget
- Durable & Offline Transaction Signing using Nonces