TriportRPC

network: "base" chain_id: 8453 guide: "flashblocks" availability: "unknown" validation: "positive_fixture" evidence_kind: "positive_fixture" tier_min: "pro" tier_provisional: true

Base Flashblocks feed

Evidence: offline positive_fixture; raw capture began 2026-09-08T13:20:42.137Z. Minimum tier: Pro. decoder_validated=false remains the canonical readiness gate.

The raw node firehose is the internal primary. It pushes without an eth_subscribe request and is never exposed directly to clients. The staged client template is {WSSBase}/ws/base-feed/{key}, normalized to /ws/base-feed with scope base:feed; clients receive only bounded normalized events.

What the fixture proves

The accepted offline capture contains 57 Brotli-decoded JSON messages and 1,055 decoded EIP-2718/RLP transactions. Five index-0-anchored final sequences matched 1,017 canonical transaction hashes in order, including five 0x7e deposits. Those numbers describe one fixture, not capacity or a live SLA.

For those five final deltas, the captured provisional block_hash was independently reproduced as:

LegacyKeccak256(RLP(the same 21-field header with stateRoot replaced by 32 zero bytes)).

That explains the fixture mismatch but does not make the value canonical. The executed RPC header has a nonzero state root and a different canonical hash. Intermediate deltas lack an independent canonical partial-header oracle; deployed producer version, safe/finalized status, and current availability remain unknown. Therefore the normalized feed is always preconfirmed until separate canonical reconciliation, and decoder_validated=false remains visible.

Normalized schema example

This synthetic empty-delta object matches the frozen AsyncAPI shape. It is not a captured event and contains no transaction bytes.

{
  "payload_id": "0x0000000000000001",
  "index": 0,
  "base": {},
  "diff": {
    "state_root": "0x00",
    "receipts_root": "0x00",
    "gas_used": "0x0",
    "block_hash": "0x00",
    "transactions": []
  },
  "provenance": "raw_flashblocks_primary",
  "finality": "preconfirmed"
}

payload_id is opaque, not a block hash or global cursor. index is an unsigned sequence value with no protocol maximum of 9 or 10. Consumers require index 0/base anchoring, contiguous deltas, bounded reorder/gap/reorg handling, original-byte Keccak transaction hashes, and independent number/parent/ordered-transaction reconciliation.

Hydration is degraded, not full preconfirmation

Hash hydration is opt-in and runtime-disabled. Its coverage is observed_hashes_only, retries and provider budgets are bounded, unresolved hashes stay visible, and full_preconf=false. A later canonical match cannot reconstruct the original preconfirmation time or missed pending-only events.

See the Base feed AsyncAPI and JSON-RPC WS guide.