On-chain activity intelligence · Robinhood Chain native

Every wallet
leaves a trail.

SPOOR indexes every transaction on Robinhood Chain, resolves the entity behind each address, scores its behaviour against fourteen measurable signals, and streams the result to a terminal, a webhook or your own database — in the same block it happened.

Addresses on chain
live · Robinhood Chain
Transactions
Block time
chain id 4663
Live stream · rhc-mainnet rpc.mainnet.chain.robinhood.com
BLOCK HEIGHT
GAS · AVG
ETH
ROBINHOOD CHAIN NATIVE 1.9s INDEX LAG 480M LABELLED EDGES NON-CUSTODIAL WEBSOCKET + REST + SQL OPEN METHODOLOGY 14 BEHAVIOURAL SIGNALS NO WALLET CONNECT REQUIRED ROBINHOOD CHAIN NATIVE 1.9s INDEX LAG 480M LABELLED EDGES NON-CUSTODIAL WEBSOCKET + REST + SQL OPEN METHODOLOGY 14 BEHAVIOURAL SIGNALS NO WALLET CONNECT REQUIRED
01 Activity has shape

Wallets don't move
at random.

Every address on Robinhood Chain sits somewhere in a behavioural space. SPOOR places it there. Distance from the core is behavioural distance from ordinary retail flow; size is the balance under control; colour is the cohort the clustering engine assigned it to. Nothing is hand-curated — the map is recomputed every 4 hours from the last 90 days of edges.

Behavioural cluster map90d window · recomputed 04:00 UTC
SMART MONEY MARKET MAKER BRIDGE FLOW FRESH WALLET SYBIL RING

Edges, not balances

A balance snapshot tells you what a wallet holds. It doesn't tell you where the money came from or who it moves with. SPOOR stores the transfer graph itself — 480M labelled edges — so co-movement, funding ancestry and timing correlation are queryable in one hop.

Recomputed, not curated

Cohorts come out of a density clustering pass over 14 normalised features. When a wallet's behaviour changes, its cohort changes with it — usually within one recompute cycle. Manual labels exist, but they are marked as such and never overwrite the model.

Flow volume · trailing 24hUTC
00:0008:0016:00NOW

02 Know who you're watching

An address is not
an identity. A pattern is.

The terminal classifies an address from what the chain shows about it directly — contract or EOA, verification status, holdings breadth, counterparty spread, transaction history. Every label carries the evidence that produced it, and an address whose shape is ambiguous is left unlabelled rather than guessed at.

smart money

Consistently early

Enters positions before a 3× volume expansion more often than chance across ≥ 20 independent events. Not "profitable" — early, which is measurable without knowing exit prices.

Population
6.9K
market maker

Two-sided, always on

Quotes both directions in the same pool within the same block band, inventory mean-reverting, gas priced tightly. Flow that looks like conviction but is inventory management.

Population
1.2K
sybil ring

Many hands, one head

Shared funding ancestor, near-identical gas settings, action timing correlated above 0.86. Counted once, not two hundred times, when a "holder count" is reported.

Population
41.8K
Entity resolution · liveconfidence ≥ 0.60 shown
AddressLabelCohortEvidence30d flowConf.Trail score
0x7a41…c0d2smart moneySM-04early-entry 31/44 · funding: CEX withdraw
0.9491
0x1b9e…8f37market makerMM-01two-sided 98.2% · inventory σ 0.04
0.9778
0xd304…21abbridge relayBR-02canonical bridge egress · 12.4K hops
0.9974
0x55c1…9e40fresh walletFW-07age 3d · single funder · 2 counterparties
0.7138
0xbe72…4a19sybil ringSY-11219 siblings · timing ρ 0.91 · same gas cap
0.8817
0x0fa8…77b5dormant whaleDW-03no outflow 214d · balance top 0.1%
0.8355
Resolution runs continuously against the index. Rows below 0.60 confidence are withheld rather than shown as a guess — method in Docs → Entity resolution.

03 One number, fully shown

The Trail Score.

A single 0–100 read on how much attention an address deserves, built from five published components. The weights are in the docs. The inputs are queryable. When a component can't be computed from available data, the score is withheld and the address shows INSUFFICIENT DATA instead of a confident-looking number.

0x7a41…c0d2 · component breakdownSM-04
Timing · w 0.28
88
Conviction · w 0.24
76
Breadth · w 0.16
64
Persistence · w 0.20
93
Cleanliness · w 0.12
81
WEIGHTED TRAIL SCORE 91
≥85
sharp

Early, repeatedly, with size that survives the exit. Worth a notification.

≥70
steady

Consistent, sizeable, unremarkable timing. The backbone of real volume.

≥50
noisy

Active but incoherent. High turnover, low persistence, mixed cohorts.

<50
thin / synthetic

Wash-shaped, sybil-shaped, or too young to say anything. Flagged, never silently averaged in.

Read this before you act on a score

A Trail Score describes observed behaviour in a historical window. It is not a prediction, not a recommendation, and not a claim about anyone's identity. Thresholds are published so you can disagree with them — see Docs → Scoring.


04 Alerts on the trail

Describe it once.
Hear about it forever.

Alert rules are plain expressions over the same fields the API exposes. Compile once, evaluate against every block, deliver in under two seconds to a webhook, a socket, Telegram, Discord or a Postgres table.

rule · smart-money-accumulationarmed
# TQL — Trail Query Language
WHEN transfer
WHERE to.cohort IN ('SM-*')
  AND to.trail_score >= 85
  AND token.liquidity_usd > 250_000
  AND value_usd > 25_000
  AND to.first_seen_token IS TRUE
WITHIN 3 blocks
GROUP BY token
HAVING count(distinct to) >= 3
EMIT webhook('https://…/hooks/spoor')
MATCHES · 7D 14 MEDIAN LATENCY 1.4s FALSE-POSITIVE GUARD ON

Webhook

Signed JSON, HMAC-SHA256, at-least-once with idempotency keys.

WebSocket

Subscribe to rules or raw channels. Backfill on reconnect.

Telegram / Discord

Rendered cards with the evidence trail attached, not just a ping.

Warehouse sink

Postgres, Snowflake, BigQuery, or plain Parquet on S3.

fired · last 4rule matches

05 Connections

Plugs into what
you already run.

SPOOR is a data layer, not a walled garden. Reads come out over REST, WebSocket and a read-only SQL endpoint. Sinks push into the tools your team already opens.

CHAIN

Robinhood Chain

Native. Full archive from genesis, trace-level.

primary
CHAIN

Arbitrum · Base

Cross-chain funding ancestry for bridge attribution.

indexed
MARKET DATA

GeckoTerminal

Pool metadata, price reference, liquidity depth.

read
MARKET DATA

DexScreener

Secondary pricing cross-check and pair discovery.

read
TRANSPORT

REST + WSS

Cursor-paginated reads, streaming subscriptions.

live
QUERY

SQL endpoint

Read-only Postgres wire protocol over the curated views.

beta
SINK

Kafka · Redpanda

Ordered per-partition event log for your own consumers.

sink
SINK

Snowflake · BigQuery

Hourly micro-batches, schema-versioned.

sink
Pipeline topologyingest → resolve → score → deliver
SOURCESINGEST RESOLVE + SCOREDELIVER RHC archive node Trace / receipt stream Pool + price feeds Bridge egress logs DECODER ABI + heuristic event normaliser reorg-safe · 12 blk idempotent writes ENTITY RESOLVER ancestry · gas · timing 9 classes + confidence TRAIL SCORER 5 components · 14 signals withholds on missing data REST /v1/* WSS stream.spoorlabs.xyz Webhooks HMAC signed Sinks SQL / Kafka / S3

06 Token

$SPOOR

$SPOOR meters access to the index. Holding a threshold balance unlocks terminal tiers and higher API rate limits; the same data is available to anyone paying in stablecoins. The token buys throughput, not information asymmetry — every published methodology stays public.

Supply
1.00B
fixed · no mint fn
Chain
Robinhood
RHC mainnet
Contract pending publication
OFFICIAL CONTRACT ADDRESS
PUBLISHES ON LAUNCH
Verify before you trade

The official address appears in this panel and on the project's verified account, and nowhere else. This panel reads the contract on-chain and renders it only once it matches. Treat every other address claiming to be $SPOOR as unofficial.

NameSpoor
SymbolSPOOR
Decimals18
Total supply1,000,000,000
Ownerrenounced at launch
Tax0 / 0

07 Watch the flow

Stop reading balances.
Start reading behaviour.

Terminal, API and alert engine on one index. Estimates are labelled as estimates. Missing data is shown as missing.

Launch terminal → Read the documentation