MadeOnSolMade on Sol
Pricing
Try freeGet real-time feedsSign in
MadeOnSolMade on Sol

Solana and Robinhood Chain intelligence — KOL wallet tracking, deployer intelligence, all-DEX trade streams, and a developer API. Discover, compare, and build.

Product

  • Solana Data API
  • Robinhood Chain API
  • Robinhood Chain x402
  • MCP Servers & SDKs
  • x402 for AI Agents
  • Pricing
  • Enterprise / For Businesses

Solutions

  • Trading Bots
  • Wallet Tracking
  • Copy Trading
  • Token Scanners
  • Trading Terminals
  • DEX Data
  • Smart Money
  • Token Risk
  • AI Agents
  • ShredPrism Stream
  • View all solutions

Developers

  • API Docs
  • WebSocket Streaming
  • Changelog
  • API Status
  • Latency Benchmarks
  • Data Integrity
  • Data Dictionary
  • Methodology

Resources

  • All Tools
  • Compare Tools
  • Best Trading Bots
  • Best DEXs
  • Best Wallets
  • Best Analytics
  • Best DeFi
  • Best Snipers
  • Blog
  • Blog Archive
  • Signal Scorecard
  • Tool Uptime
  • Community
  • Submit a Tool
  • Advertise

Company

  • About
  • Contact
  • Security
  • Privacy
  • Terms
  • DPA
  • Disclaimer

© 2026 MadeOnSol

MadeOnSol — eenmanszaak, Hulshout, Belgium · KBO/BTW BE 1039.535.538 (art. 56bis, no VAT charged)

Runs on our own dedicated EU servers — self-hosted data stack, own Robinhood Chain node · security

Follow us on XPowered by:constant·k — Private Solana RPC Services
SolutionsShredPrism Stream

Early Solana signals

Follow the wallets. Catch the token changes.

MadeOnSol ShredPrism is a filtered Solana WebSocket feed of supported instruction observations with separately correlated execution outcomes.

See Ultra plans Read the stream contract
event families
6
eligible plans
ULTRA+

Put launches, wallet trades, locks, liquidity and migrations into one workflow. Choose your own wallets, save private lists and follow known tokens across the supported event families.

Included with ULTRA from €131/month. Business and Enterprise inherit access.

Ultra, Business and Enterprise. Solana only. MadeOnSol provides data; your application decides how to use it.

The problem

A launch alert shows only one part of a token's story. A wallet may buy, a pool may change, or a lock instruction may appear next. Bring the supported actions into one feed without mistaking an instruction for a completed transaction.

One feed, six kinds of early activity

Token launches

early:deploys

Supported outer Pump and LaunchLab creates.

Locks and vesting

early:locks

Initial supported Streamflow, Jupiter Lock and Bonfida instructions.

Wallet trade intent

early:trades

Supported Pump and PumpSwap buys/sells, with custom wallets or KOL/dev/alpha labels.

Liquidity changes

early:liquidity

Supported PumpSwap pool creation, deposit and withdrawal instructions.

Token migrations

early:migrations

Supported Pump migration v1/v2 instructions.

Token changes

early:token_changes

Supported base SPL Token and Token-2022 actions; extension-only behavior is outside this coverage.

Initial protocol coverage is partial. Unsupported wrappers, CPI/router-only legs and other venues are not inferred. Observations describe instruction intent; later transaction status is separate evidence.

Show me

Start with the wallets you care about

Request a stream token with an eligible API key, connect to the returned early_ws_url, then send this control after the socket opens. Replace YOUR_WALLET with a valid Solana address.

  1. Follow buy instructions

    This watches supported trades by the instruction actor. It is not complete wallet transaction history or a copy-trade execution service.

    Custom wallet subscription
    {
      "type": "subscribe",
      "sub_id": "my-wallets",
      "channels": [
        "early:trades"
      ],
      "filters": {
        "wallets": [
          "YOUR_WALLET"
        ],
        "directions": [
          "buy"
        ]
      }
    }

Keep intent and outcome separate

early:observed starts with unknown execution. early:outcome links through observed_event_id. A successful transaction status does not turn requested amounts into measured swap fills.

Keep your feed focused

Private wallet lists

Save account-private wallet groups through WS/SDK, edit with revision checks and reuse them after reconnecting.

Precise filters

Combine wallets, mints, protocols and actions; narrow trades by buy/sell direction and exact raw-amount bounds.

Follow known tokens

The token helper combines the six families for your chosen mint, including quote/input/output mint matches.

Optional compact format

Reduce repeated JSON keys while preserving full fields. Full JSON stays the default; compact is a bandwidth trade-off.

Managed TypeScript client

Use bounded reconnect, per-subscription checkpoints, awaited handlers and explicit recovery gaps.

Inspectable measurements

Review raw local results below and measure your own client receipt. No fixed millisecond lead is promised.

Measured 8 October 2026 · three separate measurement categories

What we measured, and what it means for you

515 / 515

matched launches reached a customer client before the confirmed firehose

+290 ms

median lead (p95 +459 ms) observed in this benchmark

6 channels

delivered over the public endpoint; launches timed, the other families counted for delivery

Public endpoint / client-sideMeasured 2026-10-08

Real customer measurement · 2026-10-08

One client in the Netherlands (residential ISP, through Cloudflare to madeonsol.com), Node v24.12.0, ws 8.21.3, against early-stream 84ea4aec (six channels). 30 minutes of admission in 3 separate windows. Early observations and the MadeOnSol DEX firehose (Kaldera Yellowstone gRPC, confirmed commitment, successful transactions only) arrived in the same process and were timestamped on one monotonic clock, then matched by transaction signature and slot.

Launches: lead of the early observation (positive = early arrived first)
Compared withp50p95p99Matched / ref. unmatchedResult
ProcessedNot measured in this run
Confirmed290.0 ms458.9 ms1448.9 ms *515 / not countable100% earlier

Processed: Not measured on the customer path: our processed-commitment feed is only reachable inside our production network, and a measurement there would not be customer-side.

* p99 is uncertain: uncertain: n=515 (p99 rests on 6 sample(s)).

Per window (launches vs confirmed)
WindowEarlyMatchedEarlierp50p95p99
Window 1 (08:04 to 08:14 UTC)277189100%279.1 ms448.2 ms730.2 ms
Window 2 (08:15 to 08:25 UTC)221162100%303.0 ms424.8 ms762.7 ms
Window 3 (08:27 to 08:37 UTC)209164100%287.0 ms479.3 ms1832.2 ms

192 early launches had no reference match (23 failed on chain, 169 succeeded). Failed launches never appear in the reference, which carries successful transactions only. Successful launches without a developer buy in the create transaction produce no trade frame, the likely reason for the rest (not proven per transaction).

Trades: matched sample only (not a coverage figure)
Sampled early tradesMatchedEarlierp50p95p99
41,9289,78499.49%297.7 ms481.1 ms1668.6 ms

Matched pairs only, from a 1-in-10 sample of pump.fun and PumpSwap transactions. 32,144 sampled early trades and 4,187 reference trades stayed unmatched (early trade intent includes failed instructions; venue tagging and outer-instruction scope differ), so this is not a coverage figure.

Delivered during the run, all six channels (delivery only)
ChannelObservationsOutcomes
early:trades496,191494,708
early:token_changes81,66183,305
early:deploys8131,782
early:liquidity140138
early:migrations4747
early:locks55

A channel with few or no events in a short window is no sample, not a broken channel or proof of coverage.

0 duplicate observations, 5 gap frames. All gap frames were lookup-table timeouts scoped to the trade-side channels, none for launches. Both sockets dropped once at the same moment (08:27:57 UTC, close code 1006, likely the client network path) and reconnected without resume, so window 3 has a short blind interval.

  • Observed in this benchmark from one client, one ISP and one region; not a fixed or guaranteed head start for every customer.
  • An early observation is provisional instruction intent; the reference is a confirmed, successful execution. This compares the first signal with a reference of different finality.
  • 100 % earlier within matches is not 100 % detection, and zero gaps is not full market coverage.
  • Launch timing does not establish the same lead for the other five channels; locks, liquidity, migrations and token changes were measured for delivery only.
  • Three 10-minute windows without incidents are not an uptime or latency SLA.

Download the raw customer measurement. One client, region and window: not a fixed or guaranteed head start.

Core production probeInternal, measured 2026-10-08, not a customer measurement

A probe on our production host consumed the early stream and the confirmed DEX firehose over local ports with one clock. It shows the relative arrival of the two feeds inside our network, without Cloudflare or a customer connection. Per-transaction samples were not kept for these release checks; the file holds the summary distributions.

Launches vs confirmed, on the production host
RunMatchedEarlierLead p5Lead p50Lead p95Receive to publish p50
Deploys-only release check after the HTTP/2 flow-control window fix (2c4828ad, deploys)98100%183 ms306 ms486 ms1 ms
Six-channel final validation (84ea4aec, all)118100%172 ms303 ms445 ms1 ms

Go-live monitor 2026-10-08T05:55:19Z to 2026-10-08T06:12:55Z: 0 restarts, no gap reasons, receive-to-publish p50 at most 1.981 ms, 511 launches and 312,153 other channel events decoded. Internal host path: no Cloudflare, no WAN, no customer network. Not a customer head start.

Local developmentMeasured 7 October 2026, before release

Local development checkpoints (not customer measurements)

Decoder only: milliseconds per 64-transaction batch
Modep50p99
Sniper / reference codec0.402 ms1.385 ms
Six families / reference codec1.753 ms3.037 ms
Six families / optimized codec0.422 ms1.060 ms

300 measured batches, 19,200 unsigned synthetic transactions per mode after 30 warmups, mixed legacy/v0/v1 and identical output hashes for the six-channel modes. Node v24.19.0, INTEL(R) XEON(R) PLATINUM 8573C. Excludes provider transport, worker queues, sockets, real DB/RPC and cold address lookups. This measures decoder work, not the time a user receives a signal.

Local loopback: sniper client-receipt p99, three fresh processes per mode
Format / checkpointRun 1Run 2Run 3Observation bytes
Before / full73.823 ms179.848 ms110.826 msNot recorded
After / full54.727 ms65.468 ms60.448 ms3,894,756
After / compact-v167.557 ms63.422 ms76.516 ms3,221,476
After / mixed72.877 ms69.947 ms62.721 ms3,558,116

Each run submits eight simultaneous 60-transaction batches to a real worker/gateway/journal, with eight healthy clients plus one paused socket, mock DB/status RPC and no provider or WAN. Timing ends in a separate client message handler, including JSON parsing and compact expansion. All expected healthy-client observations arrived with zero reported gaps. Accounting success does not prove a production latency target; eight batches cannot establish sustained peak capacity.

Compact saved 17.3% of observation bytes in this corpus. Its median of the three p99 samples was 67.557 ms, versus 60.448 ms for full JSON. This is a bandwidth option, not a demonstrated latency improvement. Cold-host variance and all baseline outliers are retained.

Methodology, raw results and file hashes

The client-side benchmark used the public discovery and WebSocket endpoints from a machine outside our network; the core probe ran on our production host; the local checkpoints ran on a development machine with synthetic input. lead_ms = reference receipt minus early receipt on one monotonic clock; positive means the early observation arrived first. Solscan block timestamps provide chain context, not millisecond receipt evidence.

Read the full methodology

  • Client-side summary (JSON) sha256 027a8a52c7b38119a43d765a242ba0c7ac21cbc31882f219ca587fe581a284d0
  • Client-side raw samples (JSON) sha256 d5da14933494e12002fd16ccae64b3a03a5bfde7e05fe8b15572c5b4da3494be
  • Client-side raw samples (CSV) sha256 bef9e8dd634f05680b6658e708916bf52bbafc0cf58414e771b73f9c2282dbea
  • Core production probe (JSON) sha256 d965b8d3551b1cf895dcf868b22981cbf81ea54f70053f5e4c082991ffc7a144
  • Methodology sha256 d8c9b5df75a9a0be4078d55f8db2a3fa32e29d83359d48c18be770b73bbbd23c
  • Local decoder results (2026-10-07) · Local loopback runs · Local summary and provenance

Try it

Connect an eligible account

Use the developer dashboard for your API key and token discovery. Keep credentials on your backend. This feed requires an active ULTRA+ subscription.

Open developer dashboard Read the quickstart

Build outcomes

What teams can build

  • Private wallet monitoring
  • Launch-to-migration token timelines
  • Lock and liquidity instruction alerts
  • Internal research and signal pipelines

ULTRA is for internal use. Displaying MadeOnSol data to your own end users requires Business; redistribution and raw resale require Enterprise terms. Compare usage rights

Keep going

Related

Product

Launch signals

The deploy feed and its REST/webhook compatibility paths.

Solution

DEX data

Use the separate DEX stream for normalized trade data.

Solution

Wallet tracking

Combine early intent with indexed wallet context.

Docs

API reference

Controls, outcomes, filters, recovery and SDK usage.

FAQ

Questions teams ask

Does ShredPrism cover every transaction by a custom wallet?+
No. Custom wallets filter supported trade instructions by their actor. Current coverage includes supported Pump and PumpSwap variants; unsupported venues, hidden router/CPI legs and ordinary wallet transfers are not a complete transaction feed.
How far ahead will a ShredPrism signal reach me?+
No fixed lead is promised. In our 8 October 2026 client-side benchmark (one client in the Netherlands, public endpoint, three 10-minute windows), all 515 matched launches arrived before the confirmed DEX firehose, with a median lead of 290 ms. That is one client and one comparison: a processed-commitment comparison was not measured on the customer path, and the other five channels were measured for delivery, not lead.
Are ShredPrism private wallet lists public?+
No. Lists belong to your authenticated account and are separate from public KOL/alpha rosters and the confirmed wallet tracker. They are managed through authenticated WebSocket controls or the TypeScript SDK.
Can I recover every missed ShredPrism event?+
No. Recovery is bounded and process-local. Live frames can arrive during replay; deduplicate IDs, handle explicit gaps and do not treat incomplete recovery as complete history.
Does compact-v1 make ShredPrism faster?+
The local corpus used fewer observation bytes, but compact encoding and client expansion cost time. Full JSON is the default; benchmark both formats with your own consumer.

Next step

Build your first focused early feed

Check the evidence, connect your account and choose a narrow subscription.

  1. 1 · ProofReview benchmarks Local results, workload and the unmeasured customer comparison.
  2. 2 · TryOpen dashboard Discover the stream with an eligible account.
  3. 3 · DocsRead the protocol Wire examples and recovery semantics.
  4. 4 · PlanCompare plans ULTRA+ access and usage rights.