Send a transaction
Sign a transaction, choose an encoding and decide whether to run preflight.
Build and sign the complete transaction before you submit it. SWQoS forwards your bytes unchanged. Include a tip transfer to a live tip account, or use a declared tip if it is enabled for your key.
Read the blockhash from a separate Solana RPC provider. SWQoS is send-only, so it cannot supply getLatestBlockhash or confirm your transaction.
Formats and size limits
| Transaction format | Maximum wire size | JSON-RPC encoding |
|---|---|---|
| Legacy | 1,232 bytes | base58 or base64 |
| v0, including address lookup tables | 1,232 bytes | base58 or base64 |
| v1 | 4,096 bytes | base58 up to 1,232 bytes; base64 above that |
The Solana network must support the transaction format you choose. See Limits for request and transaction counts.
JSON-RPC defaults to base58. Set encoding: "base64" for base64 wire transactions, including those produced by @solana/kit. /binary, QUIC streams and IPC take raw bytes; /plaintext takes the shared raw payload as base64 text.
Checks before sending
Submit a fully signed transaction. An all-zero first signature returns unsigned; a signature count that differs from the message returns signature_count. Acceptance does not verify that the transaction can execute.
Fund the fee payer for Solana's network fees. A tip does not cover those fees. With preflight off, check the blockhash lifetime and validate your instructions before sending.
Durable nonce transactions are supported. Use Solana's normal nonce structure and sign with the nonce account's current blockhash.
Preflight
Preflight is off by default. Over hosted JSON-RPC, set skipPreflight: false to simulate before dispatch:
{
"encoding": "base64",
"skipPreflight": false,
"preflightCommitment": "confirmed",
"minContextSlot": 123456789
}The slot above illustrates the option: supply your own context slot when you need one, or omit it. preflightCommitment defaults to finalized; minContextSlot has no default. Neither field is used when preflight is off.
A simulation error returns simulation_failed, including the node's err, logs and other result fields. If simulation is unavailable, times out or cannot meet minContextSlot, SWQoS returns retryable preflight_unavailable.
A QUIC transaction stream's preflight flag always means processed commitment, with no minimum context slot. Through the local agent, JSON-RPC preflight also becomes a regional QUIC check at processed; the agent does not forward your JSON-RPC commitment or context-slot choice. Raw HTTP, datagrams, unidirectional streams and bundles have no preflight option.
Delivery
Single transactions can be delivered to upcoming leaders and eligible block engines. A successful response does not identify the path or guarantee block-engine delivery.
See sendTransaction for requests and errors. After submitting, confirm the signature through your Solana RPC provider. maxRetries does not ask SWQoS to resend.