Best Performance for Landing Transactions

Optimizing Transaction Performance

For paid tiers, bloXroute automatically enhances transaction propagation using multiple advanced features.

To ensure high speed and inclusion rate for singular transactions, follow these guidelines:

1. Priority Fee:

  • Add a compute price instruction to your transaction for better prioritization.

  • Use the Priority Fee Stream to fetch the recommended fee in real-time.

const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({ 
  units: 1000000 
});

const addPriorityFee = ComputeBudgetProgram.setComputeUnitPrice({ 
  microLamports: 1 
});

const transaction = new Transaction()
.add(modifyComputeUnits)
.add(addPriorityFee)
...
  );

2. Include a Tip Instruction:

  • Ensure your transaction includes a tip for enhanced propagation.

  • The service fee is based on the features used (e.g., staked connections).

  • Use the Bundle Tip Stream to determine an optimal tip amount.

import (
	"github.com/gagliardetto/solana-go"
	"github.com/gagliardetto/solana-go/programs/system"
)

const (
	// BloxrouteTipAddress is from here and may fall out of date from time to time. Check our docs:
	// https://docs.bloxroute.com/solana/trader-api-v2/front-running-protection-and-transaction-bundle
	BloxrouteTipAddress = "HWEoBxYs7ssKuudEjzjmpfJVX7Dvi7wescFsVx2L5yoY"
)

// CreateBloxrouteTipTransactionToUseBundles creates a transaction you can use to when using PostSubmitBundle endpoints.
// This transaction should be the LAST transaction in your submission bundle
func CreateBloxrouteTipTransactionToUseBundles(privateKey solana.PrivateKey, tipAmount uint64, recentBlockHash solana.Hash) (*solana.Transaction, error) {
	recipient := solana.MustPublicKeyFromBase58(BloxrouteTipAddress)

	tx, err := solana.NewTransaction([]solana.Instruction{
		system.NewTransferInstruction(tipAmount, privateKey.PublicKey(), recipient).Build()}, recentBlockHash)
	if err != nil {
		return nil, err
	}

	signatures, err := tx.Sign(func(key solana.PublicKey) *solana.PrivateKey {
		if key.Equals(privateKey.PublicKey()) {
			return &privateKey
		}
		return nil
	})
	if err != nil {
		return nil, err
	}

	tx.Signatures = signatures

	return tx, nil
}

If your language of choice is not included above, you can create an instruction referencing our tip-receiving addresses

3. Submission Endpoint Configuration:

  • Use the submit endpoint (*You shall submit the transaction to the closest region and the global endpoint in parallel) with the following parameters for best performance:

    • frontRunningProtection: false

    • useStakedRPCs: true

    • submitProtection: SP_LOW

# USE HTTP, NOT HTTPS, FOR THE BEST PERFORMANCE

curl -X 'POST' \
  'http://ny.solana.dex.blxrbdn.com/api/v2/submit' \
  -header "Authorization: $AUTH_HEADER" \
  -d '{
 "transaction": {"content": "AjF+Br2CUIENJqV1...BAAABCQ=="},
 "frontRunningProtection": false,
 "useStakedRPCs": true,
 "submitProtection": SP_LOW
}'

4. Send to the right regions

Global — Submit ONLY

Use the Global endpoint to automatically route your transaction submits to the closest Trader API transaction-handling instances. This reduces end-to-end latency and improves landing performance—especially when your bot is within ~2 ms RTT of a Trader API region. For best results, send to the Global endpoint in parallel with your preferred regional endpoint(s).

Host: global.solana.dex.blxrbdn.com

How to use

  • Primary target: Point your Trader API base URL/host to the Global endpoint

  • Parallelization: Also send the same transaction to your nearest regional endpoint(s) in parallel to maximize time-to-first-land.

  • No other config changes needed.

  • Global only supports http

Region
Host

Global (recommended)

global.solana.dex.blxrbdn.com

Choose your closest region

For consistent best performance, pair the Global endpoint with the closest region to where your bot runs.

  • Find regions & hosts: See the full, always-updated list here: https://docs.bloxroute.com/solana/trader-api/introduction/regions

  • Pick the nearest region: Choose the region with the lowest RTT from your bot host. If you’re already ~2 ms from a Trader API region, the Global endpoint will typically select it—and parallel sends ensure you still catch the fastest path.

  • Practical tip: Measure latency from the same machine that runs your bot.

Latency check examples

# Quick TCP connect timing (good proxy for RTT)
curl -s -o /dev/null -w "connect:%{time_connect}\n" http://<region-host>


# ICMP ping (if enabled on your network)
ping -c 5 <region-host>

Parallel submit pattern (pseudo-code)

# Send once to Global, and in parallel to your nearest region(s)
targets = [
  "http://global.solana.dex.blxrbdn.com",
  "http://<your-nearest-region-host>"  # from the Regions page above
]


# Fire in parallel; accept the first success
first_ok = race([submit_tx(t, tx_bytes) for t in targets])
return first_ok

Guidance

  • Always include Global in your send set.

  • Add 1–2 closest regions in parallel for resilience and the best possible landing time.

  • Keep your region list current using the Regions page linked above.

5. Make sure to keep the HTTP connection live.

The maximum duration for the Trader API keep-live is about 60 seconds. We recommended doing a "keep-live" request every 60 seconds. You can execute a GET request (like, rate-limit) or omit the api-key.

Commonly used Submission Modes.

This table summarizes different submission modes by different parameter configurations.

Mode - Nickname
Parameter config
Require tip?
Description

Fastest mode

frontRunningProtection: False, useStakedRPCs: True, submitProtection: SP_LOW

Yes. Min: 0.001 SOL

  • Max speed by leveraging staked RPC connections.

  • Ideal for time-sensitive transactions.

Fully MEV-protected mode

frontRunningProtection: True, submitProtection: SP_HIGH

Yes. Min: 0.001 SOL

  • Protects against MEV attacks using Jito bundles.

  • Slightly slower if consecutive non-Jito validators are present.

In-the-middle mode

frontRunningProtection: True, fastBestEffort: True, submitProtection: SP_MEDIUM

Yes. Min: 0.001 SOL

  • Balances speed and protection by propagating to Jito and low-risk validators.

  • Low-risk validators are identified by bloXroute.

Last updated