TriportRPC

slotsUpdatesSubscribe

Subscribes to fine-grained slot lifecycle events — shreds received, bank created, frozen, dead, optimistically confirmed, rooted — for every slot the node observes.

Solanasol.pubsubpro+ — per-method tier gating on /ws/sol

Where slotSubscribe emits one frame per processed slot, slotsUpdatesSubscribe opens the hood: it streams a slotsUpdatesNotification for every stage of a slot's life as the node sees it. The type field names the stage — firstShredReceived (the first piece of the leader's block arrived over the network), createdBank (execution began), completed (all shreds received), frozen (the bank hash was computed; a stats object reports transaction counts), dead (the slot was abandoned — a skipped or failed block), optimisticConfirmation (a supermajority of stake voted on it), and root (finalized). Each event carries the slot, a nanosecond-scale timestamp from the node's clock, and for createdBank the parent slot.

It takes no parameters, and it is a firehose: expect several events per slot, i.e. ten-plus frames per second sustained. The audience is correspondingly specialized — latency engineering and cluster observability rather than application logic. Use it to measure block-propagation timing (firstShredReceivedcompleted deltas), to detect skipped slots and leader failures in real time via dead events, to trade on optimisticConfirmation (which lands well before full finality), or to build per-slot pipelines that need to distinguish "replayed" from "confirmed" from "rooted" states precisely.

Handle it defensively. The method is flagged unstable in stock Solana: event names and semantics can change between releases, and not every RPC setup exposes it — Triport serves it on /ws/sol, but code written against it is less portable than the stable families. Events describe the serving node's pipeline, so timings differ between nodes, and during forks you will see updates for slots that later die. There is no replay: a reconnect loses the intervening events and you must resubscribe (session-scoped, as always). If all you need is "a new slot happened" or "finality advanced", the far cheaper slotSubscribe / rootSubscribe are the right tools. Stop the stream with slotsUpdatesUnsubscribe.

Parameters

None — params is an empty array (or omitted).

Response

Subscribe ack:

A stream of per-stage events follows, several per slot:

{
  "jsonrpc": "2.0",
  "method": "slotsUpdatesNotification",
  "params": {
    "subscription": 9932,
    "result": {
      "slot": 348392112,
      "timestamp": 1755500001756,
      "type": "optimisticConfirmation"
    }
  }
}

A frozen event additionally carries execution stats:

{
  "jsonrpc": "2.0",
  "method": "slotsUpdatesNotification",
  "params": {
    "subscription": 9932,
    "result": {
      "slot": 348392112,
      "timestamp": 1755500001514,
      "type": "frozen",
      "stats": {
        "numTransactionEntries": 448,
        "numSuccessfulTransactions": 1230,
        "numFailedTransactions": 41,
        "maxTransactionsPerEntry": 12
      }
    }
  }
}
result (on ack)integer
Subscription id — pass it to slotsUpdatesUnsubscribe.
params.result.slotinteger
The slot the event refers to.
params.result.timestampinteger
Node-local Unix timestamp (milliseconds) of the event.
params.result.typestring
firstShredReceived, completed, createdBank, frozen, dead, optimisticConfirmation, or root.
params.result.parentinteger
Parent slot — present on createdBank.
params.result.statsobject
Transaction-count stats — present on frozen.
params.result.errstring
Reason the slot died — present on dead.

Errors

CodeMeaningWhen it happens
4003forbiddenYour tier is below pro (tier_insufficient).
4001unauthorizedMissing or invalid API key on the upgrade / auth frame.
4029rate_limitedSubscribe rate exceeded for your tier.

Notes

  • Firehose: several events per slot, 10+ frames/sec — consume off the socket quickly or you will build backpressure.
  • Unstable API: event set and shapes may shift between Solana releases; gate on type values you know and ignore unknown ones.
  • Node-local view: timestamps and ordering reflect the serving node, not a cluster-wide truth; dead slots are normal fork noise.
  • Related methods: slotsUpdatesUnsubscribe, slotSubscribe (one event per slot), rootSubscribe (finality only).