Skip to content

the second audit round: a provider that never connects, and a socket that is not persistent - #3026

Merged
Flotapponnier merged 2 commits into
devfrom
fix/ws-persistent-and-vc
Oct 17, 2026
Merged

Flotapponnier merged 2 commits into
devfrom
fix/ws-persistent-and-vc

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

the second audit round: a provider that never connects, a socket that is
not persistent, and a sample floor copied six times

Validation Cloud leaves the block-push benches. The bench audit put it
plainly: it sat fourth at 91% "Success" while Prometheus showed the socket
closed in every region. Over the last three hours, across six chains and
three regions:

chainstack       35,482 messages   34,936 blocks    3 disconnects
dwellir          35,478            34,936           0
quicknode        35,504            34,961           0
getblock         28,202            27,751           0
validationcloud       0                 0         542

542 reconnection attempts and not one frame. The logs say websocket: bad handshake in every region, so the endpoint refuses the upgrade: wrong URLs,
or a key without WebSocket rights. The 91% came from the HTTP call counters,
which keep ticking for a provider whose socket never opens, so the row was
publishing a reliability figure about a measurement that does not exist.

Same treatment as Alchemy two days ago, for a stronger reason: Alchemy
worked and was spending its own account, this has never worked at all. A
methodology bullet says so, with the figures, and the row returns when the
vendor gives us an endpoint that opens.

The specs still promised a persistent socket. I changed the harness this
morning to open for ten minutes in every hour and updated one bullet,
leaving seven sentences per spec saying "persistent" - including every
provider's formula, which is the line a reader checks a number against. The
first attempt at fixing that pushed all five formulas past the 240 character
cap, which is the same cap that caught me once before, so the formula drops
the adjective and the schedule is stated where there is room to explain it.

expected_n was one number copied six times. The schema computes
health = sampleSize / expected_n per provider, and these chains differ by 27
times: Ethereum produces a block every 12 seconds, BNB one every 750 ms. I
had set 1166 everywhere, which was the old value divided by the duty factor
rather than a measurement. They now come from Prometheus, head arrivals over
three hours of the new regime scaled to 24h and divided by the four
providers that remain, rounded down to two significant figures so the badge
does not fire on ordinary variance:

bnb 96000 · arc 78000 · hyperliquid 37000 · polygon 29000 ·
base 22000 · ethereum 3600

Gates: 253 specs valid, tsc clean, 597 tests.

not persistent, and a sample floor copied six times

**Validation Cloud leaves the block-push benches.** The bench audit put it
plainly: it sat fourth at 91% "Success" while Prometheus showed the socket
closed in every region. Over the last three hours, across six chains and
three regions:

    chainstack       35,482 messages   34,936 blocks    3 disconnects
    dwellir          35,478            34,936           0
    quicknode        35,504            34,961           0
    getblock         28,202            27,751           0
    validationcloud       0                 0         542

542 reconnection attempts and not one frame. The logs say `websocket: bad
handshake` in every region, so the endpoint refuses the upgrade: wrong URLs,
or a key without WebSocket rights. The 91% came from the HTTP call counters,
which keep ticking for a provider whose socket never opens, so the row was
publishing a reliability figure about a measurement that does not exist.

Same treatment as Alchemy two days ago, for a stronger reason: Alchemy
worked and was spending its own account, this has never worked at all. A
methodology bullet says so, with the figures, and the row returns when the
vendor gives us an endpoint that opens.

**The specs still promised a persistent socket.** I changed the harness this
morning to open for ten minutes in every hour and updated one bullet,
leaving seven sentences per spec saying "persistent" - including every
provider's formula, which is the line a reader checks a number against. The
first attempt at fixing that pushed all five formulas past the 240 character
cap, which is the same cap that caught me once before, so the formula drops
the adjective and the schedule is stated where there is room to explain it.

**expected_n was one number copied six times.** The schema computes
health = sampleSize / expected_n per provider, and these chains differ by 27
times: Ethereum produces a block every 12 seconds, BNB one every 750 ms. I
had set 1166 everywhere, which was the old value divided by the duty factor
rather than a measurement. They now come from Prometheus, head arrivals over
three hours of the new regime scaled to 24h and divided by the four
providers that remain, rounded down to two significant figures so the badge
does not fire on ordinary variance:

    bnb 96000 · arc 78000 · hyperliquid 37000 · polygon 29000 ·
    base 22000 · ethereum 3600

Gates: 253 specs valid, tsc clean, 597 tests.
…nnect

This branch forked before the blocker fix landed, so the six descriptions
conflicted: mine still said "pushes blocks first", dev had the corrected
"has the lowest median lag". Dev wins the claim; it simply stops naming
Validation Cloud, which leaves the cohort in this change.
@Flotapponnier
Flotapponnier merged commit 05685ac into dev Oct 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant