Skip to content

two live benches were each citing a source that no longer answers - #2921

Merged
Flotapponnier merged 2 commits into
mainfrom
release/two-dead-sources
Oct 9, 2026
Merged

Flotapponnier merged 2 commits into
mainfrom
release/two-dead-sources

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Cherry-pick of #2919 and #2920. Both found while researching infra categories; both are correctness bugs on published pages.

#2919 — evm-block-builders says seven MEV-Boost relays, there are six. bloxroute.max-profit.blxrbdn.com has no DNS record anywhere and delivered 0 payloads in 24h while the other six moved.

#2920 — oracle-deviation is titled "Chainlink vs Pyth" and has not read Pyth for 30+ days. Hermes' price paths now answer 401 anonymously. The published numbers stayed correct (the time-aligned headline drops a 30-day-old point), but subtitle, SEO description, abstract, Sources bullet and two FAQ answers all claimed four live no-auth sources.

They share a failure mode worth naming: a Prometheus counter never goes down and a gauge keeps its last value, so both dead sources looked alive. The relay showed 26,395 accumulated payloads; the Pyth price sat frozen at a real-looking number. Only increase() or changes() over a window tells the truth, and nothing on the site reads either.

go build, go vet and pnpm validate clean.

bloXroute's max-profit relay has no DNS record at all: NXDOMAIN at 8.8.8.8,
so not a local resolver artefact. It delivered 0 payloads in the last 24h
while the other six all moved (ultrasound 5841, titan 5523, aestus 2912,
bloxroute-regulated 2813, flashbots 264, agnostic 131).

The row looked alive for a precise reason worth recording: ebb_relay_payloads_total
is a counter, and a counter never goes down, so it kept displaying 26,395
accumulated payloads long after the host stopped resolving. Reading the total
says nothing; only increase() over a window does.

The spec advertised "seven MEV-Boost relays" in four places, including the FAQ
answer, and named bloXroute max-profit in two of them. Corrected to six.

Safe to drop: no published panel or query pins a relay label, the counter is a
methodology cross-check only, so no column goes null.

go build and go vet clean, pnpm validate clean.
Pyth Hermes' price paths now answer 401 to an anonymous client, and the
harness hardcodes one of them. Its Pyth leg has fetched nothing for at least
30 days: ocb_oracle_price{source="pyth"} shows 0 value changes over the full
retention window, against 746,773 for coinbase.

The published numbers were never wrong, which is exactly why nobody noticed.
The headline reads the time-aligned family, and lookupNearest cannot find a
30-day-old point inside alignTolerance, so Pyth was dropped and the figures
stayed honest 3-source deviations (6 to 8.5 bps, entirely plausible).

What was wrong is everything the page said. The subtitle, the SEO description,
the abstract, the Sources bullet and two FAQ answers all named Pyth as one of
four live sources, and the Sources bullet called all four "free, no-auth,
public endpoints". Corrected to three, with the reason stated.

Detection failed three ways and all three are worth remembering: the price
gauge holds its last value forever, ocb_oracle_alignment_miss_total reads 0
for every Pyth pair because a miss is only counted once a lookup is attempted,
and the one counter that did move, ocb_oracle_scrape_errors_total at ~34,500 a
day, has no reader. Same shape as the dead MEV relay found an hour earlier: a
counter that never goes down makes a dead source look alive.

The poller is commented out rather than deleted, so a key restores it in one
line. It was also sending ~34,500 rejected requests a day to a third party.

title and seo_title are deliberately untouched: they carry the page's ranking
history on "Chainlink vs Pyth", and retitling, or paying for a key to restore
the fourth source, is a call with a cost attached.

go build and go vet clean, pnpm validate clean.
@Flotapponnier
Flotapponnier merged commit e543767 into main Oct 9, 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