Repository navigation
feat: RPC reliability study tooling and ingestion load test - #9
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RPC reliability study (roadmap Phase 3)
scripts/study/collect.tspolls Ethereum mainnet endpoints (publicnode, drpc, blastapi, mevblocker, onfinality by default) every 15s through@heightproof/web3with cross-provider verification on.scripts/study/report.tsprints 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.docker compose --profile study up -d; report withdocker compose --profile study run --rm study npm run study:report.Ingestion load test
scripts/load/ingest.tsand first results indocs/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.