This is a Polynode-run, point-in-time benchmark. It measures customer-visible WebSocket delivery from one network location and does not guarantee future performance from every region or provider version. The external RPC supplied only post-window chain truth and contributed no competitive arrival timestamps.
857 ms confirmation lead
Polynode
status_update arrived first on 30,316 of 30,328 matched RTDS transactions.823 ms confirmed-fill lead
Polynode’s first confirmed
trade callback arrived first on 30,043 of 30,328 matched transactions.2.285-second pending lead
Polynode pending arrived first on every transaction shared with RTDS.
100% exact-fill coverage
Polynode delivered all 82,092 canonical on-chain fills with zero unresolved misses.
Bottom line
The confirmed-path improvement was visible at both lifecycle layers:- Polynode
status_updateled RTDS activity by 856.6 ms at P50, 1.129 seconds at P75, and 1.657 seconds at P99. Polynode arrived first on 99.960% of matched transactions. - Polynode’s first confirmed
tradecallback led RTDS activity by 822.9 ms at P50, 1.095 seconds at P75, and 1.609 seconds at P99. Polynode arrived first on 99.060% of matched transactions. - Polynode pending led RTDS activity by 2.285 seconds at P50, 2.724 seconds at P75, and 3.800 seconds at P99, arriving first on 100% of matched transactions.
Thirty-minute headline: Polynode vs RTDS
The verifier re-read both boundary blocks after analysis. Their hashes still matched the recorded manifest.
Coverage
Latency
A positive lead means the named Polynode path arrived first. Every percentile uses only matched transaction hashes.
RTDS activity is a public timing baseline, not an exact pending or confirmed lifecycle label. The table keeps Polynode’s pending, transaction-confirmation, and first confirmed-fill callbacks separate.
Adverse observations
RTDS arrived before Polynodestatus_update for 12 of 30,328 matched transactions. Those 12 transactions occupied two blocks, and the worst observed Polynode loss was 98.0 ms.
RTDS arrived before Polynode’s first confirmed trade callback for 285 matched transactions across 19 blocks. The worst observed loss was 2.268 seconds. This first-callback timing result does not affect the exact-fill audit: Polynode still delivered all 82,092 canonical fills.
RTDS missed 702 eligible transactions across 24 blocks:
The three scored silent intervals were detected only after 10.7–10.8 seconds without global activity. In each case, the missing block run preceded the reconnect and activity resumed immediately after resubscription. A fourth audited reconnect occurred during the post-window confirmation tail and did not change the eligible denominator.
Explicit Struct-pending control
The non-overlapping control requested Struct’s documented pending mode directly:subscribe_all: true and an empty rejected array. The collector used a raw WebSocket and stamped each callback before JSON parsing.
The three-minute scored interval covered 2,863 transactions and 7,590 fills across blocks 91,971,403–91,971,519. Polynode pending arrived first on all 2,784 matched transactions by 30.023 seconds at P50. Polynode had also delivered status_update before every matched Struct pending callback, by 28.424 seconds at P50.
The 79 unmatched Struct transactions receive no synthetic latency penalty. They remain missing in the coverage result.
Signal mapping
The feeds do not use identical lifecycle names, so the mapping was fixed before collection.Methodology and integrity
Server Two connected every compared WebSocket from the same process in each window.process.hrtime.bigint() stamped callbacks before parsing or normalization. After warm-up, the harness armed the first eligible block at tip + 2; at core completion it closed the denominator at tip - 2. The 60-second tail allowed late confirmation callbacks to arrive before analysis.
An external Polygon RPC then enumerated every current Polymarket CLOB OrderFilled log and receipt in the eligible range. It was a post-window verifier only: it supplied no competitive arrival timestamp and is not part of Polynode’s production ingestion or delivery path.
The harness extends Struct’s published RTDS benchmark with Polynode lifecycle capture and independent exact-fill truth. Both windows used the same immutable source hashes. The TypeScript compiler and all five regression tests passed, both boundary hashes rechecked, the RPC audit recorded zero failures, no raw-frame write backpressure occurred, and every retained artifact passed its SHA-256 inventory.
Claim boundaries
- These are point-in-time measurements from one independent network vantage.
- RTDS activity is retained as a public baseline and is not relabeled pending or confirmed.
- Confirmed Polygon logs cannot enumerate pending transactions that never confirm.
- Missing competitor callbacks are coverage misses, not automatic latency wins.
- First confirmed-fill timing is transaction-granular; exact fill completeness is audited separately.
- The Struct control and RTDS headline are non-overlapping and are never pooled into one distribution.
- The benchmark records observable callbacks and makes no claim about any provider’s private implementation.
Evidence
- Compact result and claim-evidence bundle
- Credential-free benchmark source
- RTDS missing transactions
- RTDS stalls and competitor-first samples
- Struct missing pending transactions
- Polynode confirmed-fill missing set
- Published-artifact checksums
References
- Polymarket real-time data reference
- Polymarket contract registry
- Struct trades-room reference
- Polynode WebSocket overview
- Polynode settlement event
- Polynode status update event
- Polynode trade event

