๐ŸŸฉ Before you raise Solana priority fees again, check what you are actually paying for

A higher CU price is only half of the fee equation. The other half is the compute-unit limit you request.

At the network level:

total network fee = base fee + priority fee
base fee = signatures ร— 5,000 lamports
priority fee = ceil(CU price ร— CU limit / 1,000,000)

For a transaction with 1 signature, a CU price of 50,000 micro-lamports, and a requested CU limit of 300,000 CUs, the priority fee is:

ceil(50,000 ร— 300,000 / 1,000,000) = 15,000 lamports

After adding the 5,000 lamport base fee, the total network fee is 20,000 lamports, or 0.00002 SOL.

The practical detail is that priority fee is calculated from the requested CU limit, not from the compute the transaction actually consumes.

If simulation shows that a transaction usually needs around 180,000 CUs, but the app requests 600,000 by default, the priority fee is still charged on 600,000. Some margin is useful, but an oversized margin becomes repeated overpayment.

For production flows, fee tuning usually means simulating first, setting a realistic CU limit with a controlled buffer, estimating CU price dynamically, and checking whether higher spend actually improves landing.

๐Ÿ‘‰ Read our full guide

=========================
HighTower | Supanode | Get a 48h trial
Please open Telegram to view this post
VIEW IN TELEGRAM
๐ŸŸฉ Choosing a low-latency Solana RPC provider?

Do not start with the homepage number


The better starting point is where your workload runs and what it actually does.

A provider page can show regions, uptime, and latency, but your backend may be in a different cloud region, using heavier RPC methods, sending bursts of requests, tracking confirmations, or relying on fresh streams.

A useful benchmark should come from the same VPS or cloud region as the app, use the methods the app actually calls, and measure p50, p95, and p99 under realistic concurrency.

It should also include burst traffic, because 429s, stream delay, slot freshness, and confirmation tracking issues often stay invisible in clean single-request tests.

โžก๏ธ Read the full guide

=========================
HighTower | Supanode | Get a 48h trial
Please open Telegram to view this post
VIEW IN TELEGRAM
Choosing between managed and self-hosted Solana RPC?

Compare the trade-offs before you commit.

๐Ÿ‘‰ Read the guide

=========================
HighTower | Supanode | Get a 48h trial
Yellowstone gRPC changes the Solana data path from periodic requests to a live stream of filtered updates.

But the stream is only the ingestion layer. Teams still need to handle recovery after disconnects, ordering, deduplication, and storage.

โžก๏ธ Full trade-off breakdown

=========================
HighTower | Supanode | Get a 48h trial
150 markets ร— 3 feeds (trades, l2Book, candle) = 450 Hyperliquid WebSocket subscriptions

That's before user-specific streams. The public endpoint has a per-IP cap of 1,000 subscriptions and 10 unique users

๐Ÿ‘‰ Limit math and recovery patterns

=========================
HighTower | Supanode | Get a 24h trial
A trading system reconstructs and decodes a transaction from raw shreds before execution

It gets the intent early, but still does not know whether it actually succeeded.

So production stacks often split the job:

ShredStream โžก๏ธ early detection
gRPC / RPC โžก๏ธ execution result, confirmation, reconciliation

๐Ÿ‘‰ Full breakdown

=========================
HighTower | Supanode | Get a 24h trial
HTTP response: 200

RPC response: signature returned

Explorer: no transaction found


All three can describe the same Solana submission.

sendTransaction confirms that the RPC accepted the transaction, not that the leader received, scheduled, or included it.

The full submission-to-inclusion path

=========================
HighTower | Supanode | Get a 24h trial
Say you need every wallet that bought a token within five minutes of its creation.

Once swaps and creation events are decoded into tables, the core of the query becomes a join and a time condition:

s.block_time BETWEEN c.block_time
AND c.block_time + INTERVAL 5 MINUTE


RPC gives you the source transactions. Indexing turns them into tables.

Before this query works, the records still have to be backfilled, decoded, normalized, stored, and reprocessed when decoder logic changes.

Thatโ€™s the indexing work.

๐Ÿ‘‰ From raw Solana transactions to queryable data

=========================
HighTower | Supanode | Get a 24h trial
logsSubscribe has a scaling detail that matters for wallet monitoring: its mentions filter accepts exactly one Pubkey. Add a second, and the request fails with Invalid params.

So an address list becomes many subscriptions, not one wider subscription.

Monitoring 2,000 wallets means 2,000 subscription IDs to track, recreate after every reconnect, and check for missed events.

WebSocket may still carry the data just fine. But at that point, the simple option has become a subscription management system.

๐Ÿ‘‰ Full breakdown of Solana streaming options

=========================
HighTower | Supanode | Get a 24h trial
Follow a Pump.fun token from its first trade to its first PumpSwap swap.

That path runs across two Solana programs: Pump handles the bonding curve and migration, while PumpSwap takes over once the pool goes live.

Curve completion and migration are separate events. The curve can be full before the PumpSwap pool even exists.

๐Ÿ‘‰ Hereโ€™s how to follow every stage using WebSocket or Yellowstone gRPC

=========================
HighTower | Supanode | Get a 24h trial
๐Ÿ’ต Build, simulate, sign, submit, and confirm a custom Jupiter swap

Jupiter /build returns instruction groups instead of a finished transaction. That gives you room for custom logic, while the rest of the transaction lifecycle moves into your application.
From there:

โ†’ add custom instructions without breaking the routeโ€™s account-state assumptions
โ†’ simulate the complete transaction and set its CU limit from measured usage
โ†’ check onchain status before retrying the same signed transaction or rebuilding and re-signing

๐Ÿ‘‰ The full TypeScript flow, including tx.jup.ag vs your own RPC

=========================
HighTower | Supanode | Get a 24h trial
Please open Telegram to view this post
VIEW IN TELEGRAM
On Hyperliquid, a cancel can be processed before a buy that reached the network first

When both enter the same consensus batch, HyperCore processes cancels before actions containing GTC or IOC orders.

A resting sell order can therefore be removed before your buy is matched. Your buy executes against the updated book, potentially filling only part of the requested size. For an IOC order, the unfilled remainder is canceled.

๐Ÿ‘‰ The full walkthrough of HyperCoreโ€™s batch ordering and matching, with a worked order-book example

=========================
HighTower | Supanode | Get a 24h trial