Published on Sat Sep 20 2025 19:00:00 GMT-0500 (Central Daylight Time) by Orkid Labs
TL;DR
-
Launched blog: /blog index + /blog/[slug], sanitized Markdown (remark/rehype), SEO metadata
-
Live
/pulseJSON for the status UI (route mix, OPM 5m, p95/p99, mempool snapshot) -
/versionvisible on both frontend and API -
tipP90GweiandsandwichIntensitynow reflect on‑chain activity (no defaults) -
Footer brand + neutral sitewide copy; socials conditional via env
-
Build snapshot: Next.js 14.2.31, 48 routes, homepage first‑load ~147 kB
What we shipped
Live telemetry for humans (and ops)
- Backend:
GET /pulsereturns a compact, null‑safe snapshot: routeMix (private vs standard), opportunities/min (5m rolling), p95/p99 latency, mempool (tipP90Gwei, mempoolRate, sandwichIntensity), and policy flags. - Frontend: Status page polls
/pulseevery 10s;/health,/version,/metricsuseNEXT_PUBLIC_API_URL; unknowns render as—(we don’t fabricate zeros).
Version visibility everywhere
- Fixed
/version404 on the frontend via a Next.js proxy route to the API/version. A tiny fix with big ops impact.
Mempool signal accuracy (physics over vibes)
- Tip estimates: Added a legacy‑tx tip proxy (derived from
gasPriceviaLEGACY_TIP_FACTOR) so P90 isn’t stuck at 50; introduced an idle fallback that samples providerfeeDataonly when the WS stream is quiet, avoiding bias during lulls. - Sandwich intensity: Triggered on relative high‑gas bursts (vs P75) and low‑value router flows (small min threshold). The metric now moves with actual bursts vs staying pinned at 0.
Brand and UX polish
- Footer icon now matches the header brand mark; neutral sitewide copy; Twitter/GitHub icons appear only when env URLs are set (Email always visible).
Blog system + sanitization
-
Post pages include canonical URL + OG/Twitter cards via
generateMetadata. -
New
/blogindex and/blog/[slug]pages with SEO-friendly slugs; index is pagination-ready. -
Markdown is rendered server-side via remark/rehype and sanitized with
rehype-sanitize; external links userel="nofollow noopener noreferrer".
Why we optimize for signal quality
- Traders need credible signals, not theatrics. A “default 50 gwei” looks stable in a dashboard and destroys edge in production.
- We treat missing data explicitly as
null. It keeps charts honest and tells ops exactly what needs attention. - Private routing posture is a product choice, not a toggle: simulate → protect‑first → (optional) fallback per policy, never dual‑broadcast.
Operator’s notes (what we learned)
- Polygon still sees meaningful legacy tx flow; ignoring it skews tip percentiles.
- Relative triggers (vs P75) catch bursts a fixed threshold misses and behave better across regimes.
- Status and version endpoints are “ops compounding”: tiny to build, huge for incident response.
Build‑in‑public scoreboard
- Status page: refreshed every 10s from
/pulse - Route mix: private vs standard surfaced for audit
- Latency health: p95/p99 visible at a glance
- Mempool:
tipP90Gwei,mempoolRate,sandwichIntensity(optional fields, never faked)
What’s next
- Deeper private‑route simulation and inclusion reporting; explicit TTLs and replacement policies surfaced end‑to‑end.
- Add
lastUpdateTsandsampleCountto/pulsefor faster sanity checks. - Env‑gated “raw metrics” view to compare provider variance.
- Continue integrating the physics engine (FMD) with the canonical Opportunity schema and MATIC gas compatibility.
—
Built by Cadence System · “Research and infrastructure for MEV strategy and execution.”
Editor’s note: This post was updated on September 19, 2025 to include a custom Open Graph image for improved social media sharing. No content changes were made.
Written by Orkid Labs
← Back to blog