Every scan runs through a deterministic 9-step pipeline. Steps 4, 5, and 6 run in parallel to minimise latency. Results are cached for 7 days to protect Arkham API credits.
Steps 4, 5 & 6 run in parallel
Arkham inbound transfers, Arkham outbound transfers, Hyperliquid volume, and Slice Analytics all fire simultaneously via Promise.allSettled(). Total wall-clock time is dominated by the slowest of these (~10–15s for Arkham), not their sum.
A wallet address is submitted — either via the web UI or a direct API call to POST /api/scan/:address. Supports EVM (0x…), Solana, and Tron (T…) addresses.
Before hitting any external API, the server checks the local database for a cached result. If the same wallet was scanned within the last 7 days, the stored result is returned instantly — zero Arkham credits consumed.
Arkham's intelligence endpoint resolves the wallet address to a known entity (e.g. 'Binance Hot Wallet 3', 'Vitalik Buterin'). This is used for two purposes: exchange wallet exclusion and display labelling.
Two Arkham transfer fetches run in parallel — inbound and outbound — covering the last 3 years of on-chain activity. Each fetch retrieves up to 500 transfers at 2 credits per row.
Simultaneously with the Arkham fetch, the Hyperliquid native API is queried for the wallet's all-time trading volume (cumVlm). This is the only perps platform with a direct volume API — all others are measured via on-chain deposits.
The Slice Analytics API is queried in parallel with Arkham. Slice provides an independent scoring signal — particularly for Polymarket prediction market activity. If Slice returns a higher volume for any category, it overrides the Arkham figure.
All 500 outbound transfers are processed in a single pass. Each transfer is classified into Casino, Perps, or DEX using a priority chain: entity type first (most reliable), then keyword matching (fallback). Volume is accumulated per platform.
Each category's total volume is looked up against its tier table (Casino: 25 tiers, Perps: 15, DEX: 15, Whale: 30). The highest reward across all categories becomes the winning offer. Turnover is calculated using an EV-optimised multiplier.
The final merged result is stored in the database with a 24-hour expiry (fire-and-forget — doesn't delay the response). The full result is returned to the caller in a single JSON response.
| Scenario | Credits | Wall Time |
|---|---|---|
| Exchange wallet (rejected at step 3) | 1 | ~400ms |
| Cache hit (same wallet, < 24h) | 0 | ~50ms |
| Fresh scan — low-activity wallet (< 100 transfers) | ~202 | ~5–8s |
| Fresh scan — typical wallet (500 transfers) | ~1,002 | ~10–15s |
| Fresh scan — max depth (500 per direction) | ~1,002 | ~12–18s |
* Arkham charges 2 credits per transfer row returned. 1 credit for intelligence lookups. Current plan: 10,000 credits/month. Contact [email protected] for enterprise pricing.
/api/scan/:addressFull wallet scan. Returns winning category, level, reward, turnover, and all category scores. Cached for 24h.
/api/claim/:addressMark a wallet as having claimed their reward. EVM addresses only. Calls Slice PUT /claim.
Authorization: Bearer <HOUSEBETS_API_KEY> — contact the team to obtain a key.