ShredQuasar
Raw Solana shreds delivered as UDP datagrams to an address you register, from dedicated regions.
ShredQuasar sends raw Solana shreds to an address you nominate, as UDP datagrams. There is no connection, no request and no client library: once a destination is registered, packets arrive.
It is the same data ShredPrism works from, one stage earlier. ShredPrism reassembles shreds into entries and delivers them over gRPC; ShredQuasar hands over the shreds themselves and leaves reassembly to the receiver.
Whether this is the right feed
ShredQuasar suits a reader that already has, or will write, code that understands the Solana shred format. There is no filtering, no client library and no delivery guarantee, and the work of turning shreds back into transactions belongs to the receiver.
ShredPrism carries the same data from the same sources with that work already done, over a transport that retransmits what it loses. Where the reassembly is not the point of the exercise, it is the better fit and it is included on Nexus.
What arrives
| Property | Behaviour |
|---|---|
| Payload | One Solana shred per datagram, forwarded byte for byte |
| Framing | None. No header, wrapper or sequence number is added |
| Order | Every destination receives the same packets in the same order they were sent |
| Content | The full feed, unfiltered, data and coding shreds alike |
| Datagram size | About 1.2 KB. A shred is at most 1,232 bytes, and every region measures close to that once IP and UDP headers are counted. |
| Stage | Before reassembly. See Data Stages. |
Shreds carry transactions, not account state
Balances, program accounts and bonding-curve state do not exist at this stage: the runtime produces them during execution, which has not happened yet. A transaction seen here may also fail, land on a fork that is later dropped, or never confirm at all. Anything acting on this feed has to hold that uncertainty itself, and confirm through Solana RPC where it matters.
ShredQuasar combines shreds sourced from the fastest known shred providers with shreds from constant-k's own validator. Combining sources means a fragment missed by one can still arrive.
UDP gives no delivery guarantee
Packets are sent once. There is no retransmission, acknowledgement or flow control, and a datagram dropped anywhere on the path is gone without notice. A receiver that cannot tolerate loss belongs on ShredPrism, which carries the same data over TCP.
Regions
ShredQuasar runs in New York, Frankfurt and Amsterdam. Each region is bought separately and sends its own copy of the feed. A destination registered in more than one region receives each region's copy.
Receiving the feed
The destination is registered on the My Account page as an IPv4 address and a UDP port. IPv6 is not accepted.
Two things have to be true at the receiving end:
- The address is reachable from the public internet. A host behind NAT without a forwarded port does not receive the feed.
- Something is listening on the port registered. Nothing is sent to establish the session first, so a closed port produces ICMP unreachable replies and nothing else.
A change to the registered destination takes effect within 1 to 2 minutes. Stopping takes the same.
Confirming packets arrive
Because nothing is negotiated, the feed either arrives or it does not. tcpdump on the receiving host, on the port registered (9000 in this example), is the shortest check:
sudo tcpdump -n -i any udp port 9000 -c 20Twenty datagrams of roughly 1.2 KB each means the feed is arriving and the remaining work is in the reader.
Bandwidth and receiver sizing
The feed tracks network activity rather than a fixed rate. Measured in New York and Frankfurt:
| Measure | Per destination |
|---|---|
| Datagram rate | About 7,000 per second |
| Throughput | Roughly 70 to 75 Mb/s, near 9 MB/s |
| Over a month | Around 24 TB, sustained |
Two consequences worth planning for. A metered or capped connection is unsuitable, and many providers bill egress and ingress together. A receiver also has to drain the socket fast enough: at 7,000 datagrams a second, a reader that blocks on parsing fills the socket buffer and the kernel discards the overflow silently. Reading on one thread and parsing on another, with a raised SO_RCVBUF, is the usual arrangement.
Reassembly
What arrives is shreds, not transactions. Turning them back into entries and transactions is the receiver's work, and it is the reason most readers of this feed are written in Rust against the Agave crates that already model the shred format.
| Step | What it involves |
|---|---|
| Parse the shred header | Slot, index, FEC set and whether the shred carries data or coding |
| Group by FEC set | A set is 32 data shreds and 32 coding shreds. A complete set of data shreds reassembles directly; coding shreds recover what is missing, through Reed-Solomon. |
| Reassemble entries | Concatenate the data payloads of a set and deserialize |
| Deserialize transactions | Each entry carries its transactions, before execution |
Because coding shreds are on the wire, a set can still be recovered when some data shreds are lost. This is what makes a lossy transport workable, and it is the reason a receiver should implement recovery rather than treat a gap as a gap.
rpcpool/deshred-example is a maintained Rust reference that does the whole pipeline, including recovery, and is a reasonable starting point for a receiver. It is not a constant-k project and carries no support from us.
Entries covers the entry layout and the deserialization that follows, which is identical once reassembly is done. Where that work is not wanted, ShredPrism delivers the result of it.
Access
ShredQuasar is sold per region, separately from the RPC plans, and does not require a Nexus subscription.
| One region | Both regions | |
|---|---|---|
| Per month | $299 | $499 |
| Per year | $2,990 | $4,990 |
A one-hour trial is available per region from the pricing page. It requires an account, it is tied to the IP address it is activated from, and each IP address gets one trial. Checking both regions starts both clocks at once.
A registered destination can be changed once every 24 hours. The page shows the time remaining until the next change is allowed.
Troubleshooting
| Symptom | Where to look |
|---|---|
| Nothing arrives at all | The destination is not reachable from the public internet, nothing is bound to the port, or a firewall or security group in front of the host is dropping the traffic. Allowing inbound UDP on the port registered on My Account, from any source, is enough: packets arrive on exactly that port. |
| Nothing arrives, and the destination was just registered or changed | A change takes 1 to 2 minutes to reach the region. |
tcpdump sees packets, the reader does not | The reader is bound to 127.0.0.1 rather than 0.0.0.0, or to a different port than the one registered. |
| Gaps that get worse under load | The socket buffer is overflowing. See below. |
| Some FEC sets never complete | Expected on a lossy transport. Recovery from coding shreds is what closes them, and a set missing more than it can recover is a real loss. |
Kernel-side drops are counted per host rather than per socket, and are the usual cause of gaps that correlate with busy slots:
netstat -su | grep -iE 'packet receive errors|receive buffer errors'A number that climbs while the feed runs means datagrams are arriving faster than the reader drains them. Raising SO_RCVBUF buys headroom; moving parsing off the receiving thread fixes it.
Measuring the head start
The reason to take this feed is that it arrives before anything else, so the number worth having is your own. Record the first time a transaction signature is seen in a reassembled entry, subscribe to the same signature through Solana RPC at processed, and compare timestamps across a few thousand transactions. The distribution, not a single sample, is the answer, and it is specific to the distance between your host and the region.
ShredQuasar or ShredPrism
Both carry the same stage of data from the same sources. The difference is transport and who does the reassembly.
| ShredQuasar | ShredPrism | |
|---|---|---|
| Transport | UDP datagrams, pushed | gRPC over HTTP/2 with TLS |
| Payload | Raw shreds | Serialized entries |
| Loss | Possible and silent | Retransmitted by TCP |
| Reassembly | Yours | Done |
| Client | Anything that opens a UDP socket | A gRPC client |
| Sold as | Its own per-region product | Included on Nexus |