Skip to content

feat: RPC reliability study tooling and ingestion load test - #9

Merged
macjayz merged 4 commits into
mainfrom
feat/rpc-study
Oct 29, 2026
Merged

macjayz merged 4 commits into
mainfrom
feat/rpc-study

Conversation

@macjayz

@macjayz macjayz commented Oct 29, 2026

Copy link
Copy Markdown
Owner

RPC reliability study (roadmap Phase 3)

  • scripts/study/collect.ts polls Ethereum mainnet endpoints (publicnode, drpc, blastapi, mevblocker, onfinality by default) every 15s through @heightproof/web3 with cross-provider verification on.
  • scripts/study/report.ts prints per-provider availability, JSON-RPC errors inside 200s, rate limiting, latency, head lag versus the other providers in the same tick, and disagreement at equal height.
  • Opt-in compose profile: docker compose --profile study up -d; report with docker compose --profile study run --rm study npm run study:report.

Ingestion load test

scripts/load/ingest.ts and first results in docs/performance.md: the API accepts ~2,000 events/s per client IP until the 600 req/min limit; one worker drains ~1,030 REST events/s but only ~100 EVM RPC events/s (about nine detector context queries per RPC event). The RPC path is the scaling limit to work on next.

Replaces #7, which GitHub closed when its base branch was deleted after #3 merged.

The roadmap's Phase 3 measurement study needs real traffic, collected for days
without supervision. scripts/study/collect.ts polls several Ethereum mainnet
endpoints every 15s through @heightproof/web3 (eth_blockNumber, eth_getBalance,
an eth_call) with cross-provider verification on, so every answer and every
detector finding lands in Heightproof. It signs up a dedicated workspace on
first run and keeps the key in a state file, so restarts write to the same
project.

scripts/study/report.ts reads the results from Postgres and prints a Markdown
summary per provider: transport failures, JSON-RPC errors inside 200s, rate
limiting, latency, chain-head lag against the other providers in the same
tick, and disagreement at equal height from verification runs.

Runs as an opt-in compose profile:
  docker compose --profile study up -d
  docker compose --profile study run --rm study npm run study:report
scripts/load/ingest.ts drives POST /v1/events at fixed concurrency with a real
project key, then samples Postgres every second to measure how fast the worker
drains the backlog. docs/performance.md records the first run: the API accepts
~2,000 events/s per client IP until the 600 req/min rate limit, the worker
processes ~1,030 REST events/s but only ~100 EVM RPC events/s, because each RPC
event runs about nine detector context queries before it is written.
@macjayz
macjayz merged commit c960f90 into main Oct 29, 2026
8 checks passed
@macjayz
macjayz deleted the feat/rpc-study branch October 29, 2026 17:55
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