PumpCheck: operators
What a supplier needs to serve pump-check.
- Service ID
pump-check- Required version
pump-check >= 1.0- Image
ghcr.io/thefeloniousmonk/pump-check:1.1.1- Minimum RAM
- 1 GB
- Minimum disk
- 2 GB
- RPC types
- REST (expected)
Backend
The pump-check container (Node 22, SQLite store on a volume; built from github.com/TheFeloniousMonk/portal-services, pump-check/backend) behind the HA RelayMiner. It ingests new pools from DexPaprika every 2 minutes on a rolling 30-day credit ledger, precomputes each token through Pocket's public RPC (failing over to two public endpoints per chain only for request-time reads), and answers checks from the store plus live re-reads. Each supplier sets its own free DexPaprika and Blockscout keys in the app's Service settings. Since 1.1, suppliers' nodes share chain-verified token facts and Base holder snapshots over a peer API on port 8090, routed at /pump-check-peer (deploy/routes.json). Outbound HTTPS to the RPC endpoints, DexPaprika and Blockscout.
REST
Backend: pump-check container on :8080; mount at /
POST /v1/check and /v1/recent with a JSON body, plus GET /v1/version, /healthz, /v1/capabilities, /v1/openapi.json. Every response is a JSON object, including errors (which carry an 'error' field); token names are escaped against gateway phrases.
Notes
A check of 10 tokens answers within about 11 s. SAGE operators: type generic (its name for passthrough), rpc_types ["rest"], relay_timeout at least 15s.
Health checks
| Type | Request | Expect | Why |
|---|---|---|---|
| REST | GET /v1/version | $.service matches ^pump-check$ | Identity probe: pins the backend to this service. |
| REST | GET /healthz | $.status matches ^ok$ | Readiness: an ingest completed in the last 10 minutes and at least one chain's RPC answers. |
| REST | POST /v1/check{"tokens":[{"chain":"solana","address":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}]} | $.results[0].checks.freeze_authority.value matches ^7dGbd2QZcCKcTndnHcTL8q7SMVXAkp688NTQYwrRCrar$ | Functional probe: USDC's freeze authority, read live through Solana RPC. Stable, and proves a real chain read. |
Running it
Build the backend from backend/, or pull the published image:
docker pull ghcr.io/thefeloniousmonk/pump-check:1.1.1Images are tagged with the version the backend reports at GET /v1/version. Keep up with the required version above; an older backend can reject requests that newer callers send.
The service's deploy/ folder has:
- add-to-relayer.sh
- answers.json
- docker-compose.yaml
- relay-test.sh
- relayer-service.yaml
- rendered
- routes.json
- settings.json
The service's docs cover its settings and anything a supplier must provide.