Use cases / Solana copy trading

Follow a wallet. Make your own trade.

Turn observed wallet swaps into new trades with your own policy, limits and signing.

FOLLOWED WALLET source-01

Observed swap

Successful transaction at your selected commitment.

Supanode: event + transaction data
Your decoder + policyRecognize / allow / size / price-check
YOUR WALLET own-01

New transaction

Fresh route, own limits, own signature. Confirm the result.

Client: decide + build + sign + reconcile
Sample flow with a source signature and a separate signature for your new transaction.

A wallet mention is only the start.

A transaction can contain transfers, account setup and several nested program calls. Classify the whole supported action before you create a trade.

Solana copy trading starts with an observed wallet action. Your application identifies the swap, applies its own limits and signs a new transaction.

Supanode supplies streams, RPC reads and transaction delivery. You build the decoder, trading policy and bot.

Keep the first decoder narrow.

Start with one supported program version and one clearly attributed swap. Verify the wallet's authority, input and output mints, successful status and token-account ownership.

This example follows a wallet that authorizes a single supported swap. Unknown aggregators, multiple actions and unclear attribution are skipped until you add a tested adapter.

See Raydium CP-Swap's input/output model
Supported, successful swap CHECK POLICY
Decode the known instruction and its account roles. Match the followed wallet to the action, then validate the relevant balance changes.
Transfer or account setup SKIP
A transfer, ATA creation or SOL wrap is not sufficient evidence of a swap. Balance changes alone do not identify the trading intent.
Failed source transaction SKIP
Check the transaction error before acting on logs. A failed swap does not establish a completed trade; fees can still be charged.
Unknown or ambiguous route SKIP + RECORD
A new program version, unsupported multi-hop route or unclear authority needs a supported decoder. Do not guess a buy from token movements.

One swap can settle through several inner token transfers. Group them under the recognized action; treating every transfer as a fresh swap can trigger several unwanted trades.

Solana's parsed JSON can still contain partially decoded instructions. A wallet-address filter also does not cover every transfer involving its token accounts when the owner address is absent from the transaction account list.

Same direction.
A fresh price.

The source swap is an input to your decision. Your size and current liquidity determine a separate route.

Sample data
Synthetic trade amounts and labels.

Quote your own trade at the current price and check its result separately.

Source record: source-01100 A exchanged for 1,000 BConfirmed / successful / supported decoder

20 A

Your chosen input

Set by your policy and available balance.

198 B

Your new quote

Current route for your own size.

196.02 B

Your minimum output

Illustrative 100 bps tolerance on 198 B.
198 × (1 - 100 / 10,000) = 196.02 B

Scaling the source trade would suggest 200 B. Your fresh quote is 198 B. Slippage applies to this new quote; it does not restore the source price.

Own record: own-01Own route + own blockhash + own signatureResult: unknown until your transaction is checked

Limits belong to your application.

  • Allow the source wallet, mints and programs explicitly.
  • Choose your input size, exposure limit and maximum event age.
  • Check available inventory before copying a sell.
  • Inspect the new route, minimum output and total fee cap.
  • Skip stale or disallowed trades. Raising slippage changes your policy.

Simulation can expose a failure before submission. A successful simulation does not guarantee the transaction will execute.

Client pseudocode
action = decode_supported_swap(source_tx)
if action.failed_or_ambiguous:
    audit_and_skip()

key = (network, wallet, source_signature)
intent = reserve_once(key)
if not intent.is_new:
    stop_duplicate()

route = fresh_route(own_size, allowed_mints)
check_policy_route_and_simulation(route)
own_tx = build_and_sign(route, own_wallet)
persist_before_send(intent, own_tx)
submit(own_tx)
reconcile(own_tx.signature)
Implement these functions in your client using the decoder and transaction builder you support.

Start with the data you need.

For a limited watchlist, WS logs plus RPC transaction reads provide a clear starting architecture. gRPC transactions are an alternative when full payload delivery fits your workload.

Scroll the table sideways for the full comparison.

Data pathSupanode providesYou implement
WebSocket + RPCMention-filtered logs with signature and status. RPC reads the confirmed transaction.Backend WS client that supports auth headers, hydration queue, supported decoder, policy, persistent state and signer.
Yellowstone gRPC + RPCTransaction payloads filtered by specified addresses. RPC supports state checks and confirmation.Yellowstone client, supported swap decoding and local policy to classify address-matched transactions.
RPC pollingAvailable transaction-signature history and transaction lookups.Pagination, polling delay and rate control. Plan recovery within the 2-day Solana RPC replay window and the available method budget.

Start this example with WS + RPC or gRPC. A raw-shred path needs your own receiver, reconstruction pipeline and swap decoder.

Solana

RPC + WebSocket

STARTER · entry Bundle

For a focused account list and a measured workload.

  • 15 RPS · 5 TPS
  • 10 WebSocket connections
  • 100 subscriptions / connection · 1,000 total
  • No gRPC in this tier
From $40
/ 30 days

Request a free trial up to 24h; our team confirms availability and setup. Purchase with a Solana wallet and USDC portal balance.

Solana

RPC + WebSocket + gRPC

FOCUS · optional filtered events

For backends that need Yellowstone account or transaction events.

  • 25 RPS · 10 TPS
  • 1 gRPC subscription · up to 100 addresses
  • 20 WebSocket connections
  • WebSocket included · gRPC replay: 100 slots
From $99
/ 30 days

Request a free trial up to 24h; our team confirms availability and setup. Check subscription and watched-address limits.

Budget transaction reads alongside subscriptions.

Each getTransaction costs 10 RPC RPS units. Other reads and subscription commands share the budget; retries and backfill add load.

10 × hydrated candidates/s + other weighted RPC + subscription commands ≤ plan RPC budget

Use the equation to estimate RPC demand. Measure live activity and recovery traffic before choosing a tier.

RPC method weights and limits / gRPC subscription and address limits
Solana

TPU Sender

Optional · transaction delivery

Forward signed transactions through parallel delivery channels, including staked TPU connections with SWQoS. Use your RPC for reads, simulation, network confirmation and execution status.

  • 50 requests/s per client profile by default
  • Plus Solana network fees
  • No monthly subscription · trial on request

Submit your own signed transaction through RPC, or use optional TPU Sender. Account for any priority fees.

HTTP API-key access and separately authorized QUIK transport have different setup.

TPU Sender

Read Sender documentation

0.00015 SOL
minimum tip / transaction

Request an API key or a free trial up to 24h through Supanode on Telegram. Our team confirms trial availability and setup.

Budget for one selected Bundle, network fees, optional tips, external router/API access and your own server and storage. A Bundle covers the RPC, WS and gRPC services included in its tier.

Paid Bundle plans start in the portal with a Solana wallet. Request a free trial up to 24 hours from our team; availability and setup are confirmed separately. Paid Sender access follows its separate key and tip model.

Choose when a signal is actionable.

The example uses confirmed source transactions. If you act earlier, define how the client handles rollbacks and validates the source action.

processed
The node has processed the block, but it can roll back. Acting here needs an explicit rollback policy. A processed log does not mean a confirmed transaction lookup is already available.
confirmed
The block has a supermajority vote. This is the example's observation level; the client still validates the swap and checks its own later transaction.
finalized
The strongest network commitment. Account for the wait when deciding how your application reacts.

Observe commitment, source slot, first-seen time, queue delay and route age separately. A notification's arrival time is not the source execution time; transaction blockTime may be absent.

A reconnect must not buy twice.

Persist the event identity and trading intent. A repeated source signature or commitment upgrade updates the existing record.

BOUNDED ONE-SWAP EXAMPLE(network, followed_wallet, source_signature)

The policy version belongs in the record. Changing it must not accidentally turn an old event into a second purchase.

  1. Reconnect + buffer

    Restore the live subscription and buffer arriving events while you investigate the gap.

  2. Look back within limits

    Page available RPC signatures toward the saved checkpoint with overlap. Hydrate candidates within your rate budget.

  3. Merge + deduplicate

    Merge live and recovered signatures. Old recovered events are audit-only by default; fresh ones still pass the age gate.

  4. Resume or mark the gap

    If the checkpoint cannot be reached, mark an unresolved gap and pause automatic following until resync or an operator decision.

Solana RPC provides 2 days of replay; gRPC provides 100 slots. Budget recovery reads and validate the interval you recover. A new balance snapshot cannot prove that every missed trade was recovered.

Persist before submission.

Reserve the intent atomically and save your own signed bytes and signature before sending. If a send times out or the process restarts, check that signature before building another transaction.

Rebuild only after reconciliation.

Check the old transaction's status and expiry first. A replacement needs a fresh route and another policy check. Re-signing creates a new transaction and can create a second trade if the original already landed.

Null lookup / missing metadata
Retry only within the event-age budget, then record unresolved and skip.
RPC 429 / growing queue
Back off, retain state and expire stale candidates. Do not chase the old price.
No acceptable route / insufficient inventory
Skip with a recorded reason. Do not silently widen slippage or size.
Accepted send / unknown result
Track your own signature and transaction error. An RPC acknowledgement is not a completed swap.

Before you connect a bot.

What does my copy-trading client implement?

Implement source selection, supported swap decoding, allowlists and position sizing. Add transaction construction, signing and persistent state to track and recover each attempt.

Will every wallet transaction be a copyable trade?

No. Check successful status and decode a supported action with clear wallet attribution. Transfers, failed attempts and unknown program versions are not sufficient. The bounded example skips ambiguous routes and multiple actions. Extending support requires a tested adapter and an explicit policy.

Can I get the same price or ordering as the followed wallet?

The follower makes a new trade with a new size, route and signature. Check a fresh quote and set minimum output for that transaction; liquidity, price and ordering can change after the source trade.

Do I need gRPC and Sender from the start?

Start with WS + RPC for a limited watchlist. Use gRPC for transaction payloads within its plan and address limits, and add Sender as an optional delivery path. Choose capacity from observed activity, processing needs and recovery demand.

Can I connect directly from a browser?

Run the watcher on your backend with a WS client that supplies the authentication header. Keep service tokens and signing keys on the server.

Can I recover every event after a disconnect?

Solana RPC provides 2 days of replay; gRPC provides 100 slots. Match the gap to the available window and rate budget, validate recovered records and mark unresolved intervals explicitly. Keep your own durable records for a complete audit trail.

How should I validate the example?

Implement and test the supported decoder against the deployed program version. Validate API integration, endpoint behavior, duplicate handling and transaction reconciliation with your own workload. The sample amounts illustrate the arithmetic.

Build against the definitions.

Use these protocol definitions and product references to build and test your application.