How it works
Chaineye reads public data only. It never asks for a signature, never holds funds and never moves anything. This is everything that happens between pasting an address and seeing a score.
What gets read
Every public chain publishes the same three things about an address: the transactions it signed, the balances it holds, and the addresses on the other side of each transfer. Chaineye collects those and looks at their shape.
| Chain | Source | Collected |
|---|---|---|
| Solana | JSON-RPC node | The last 100 signatures, 14 parsed transactions, SOL balance, SPL token accounts |
| Robinhood Chain | JSON-RPC and a Blockscout-compatible explorer | Native balance, nonce, address transaction list, token balances |
Counterparties are matched against a label set of custodial exchanges, bridges, privacy tools and common infrastructure. DEX routers and launchpad programs are filtered out first, because nearly every active wallet touches them and they say nothing about you.
How the score works
Six signals, weighted to total 100. A signal that matches means part of the wallet is readable, and its points are added.
| Signal | Points | Matches when |
|---|---|---|
| Custodial exchange contact | 25 | A labelled exchange address appears as a counterparty |
| Counterparty spread | 20 | More than 25 unique counterparties in the window reviewed |
| Shielded transfers | 20 | No privacy-routed transfers found |
| Single-address pattern | 15 | More than 40 transactions signed by this address |
| History depth | 10 | First activity more than 120 days ago |
| Portfolio visibility | 10 | One or more readable token balances |
The score measures how legible a wallet is. It says nothing about whether its keys are secure, and nothing about whether anything it did was wrong.
Solana and Robinhood Chain
Paste either kind of address and Chaineye picks the chain from its format: base58 for Solana, 0x for Robinhood Chain. The switch in the header does the same thing by hand.
On Solana, connecting Phantom reads your public key and runs the check on it. Nothing else is requested and no signature is asked for.
Robinhood Chain history comes from a Blockscout-compatible explorer. Until one is configured on a deployment, Robinhood Chain reads cover balance and transaction count only, and the report says so.
Market data
Token positions come from the DexScreener public API, filtered to Solana, keeping the deepest pool per token for price, 24-hour volume, liquidity and market cap. The mini chart is minute OHLCV from GeckoTerminal for that pool. If OHLCV is unavailable, the chart falls back to DexScreener’s 5-minute, 1-hour, 6-hour and 24-hour price changes.
The “Being watched” feed on the home page is built from DexScreener’s top boosts, latest boosts and latest token profiles, then hydrated the same way. Nothing is seeded — it’s live on first load.
What is stored
A scan result is written to Cloudflare KV under scan:<chain>:<address> for about a minute, holding the matched and passed signals for that address. Charts and the feed are cached the same way. There are no accounts and nothing else is kept.
What it can’t tell you
- Whether an unlabelled counterparty is an exchange. The label set is finite, so “clear” means nothing matched, not that nothing exists.
- Anything about addresses you’ve never used on chain.
- Whether your address is already tied to your name off chain — in a group chat, a profile or a leaked database.
API
Every third-party request goes through the Worker, so no data provider ever sees a visitor’s browser.
GET /api/scan?chain=solana|robinhood&address=<address>
GET /api/chart?pool=<pool address>
GET /api/trending
GET /api/paper?id=<arXiv id> # reading-list PDFs, served for the in-page viewer
Run your own
Chaineye is one Cloudflare Worker with static assets and a single KV namespace.
npx wrangler login
npx wrangler kv namespace create Chaineye_KV # paste the id into wrangler.jsonc
npx wrangler dev
npx wrangler deploy
The public Solana RPC is fine for trying it out but rate-limits under real traffic. Point SOLANA_RPC_URL at a dedicated provider before you share a link.