Redstring

Method

Every number on a token page comes from the steps below. Nothing is hidden behind the score: each factor is listed with its rule.

01

Scan

We read the token's metadata over RPC, then the top 250 holders at the latest block. Holder lists come from Blockscout when a key is set; otherwise we replay every ERC-20 Transfer log from the deploy block and compute balances ourselves.

Each holder is labelled: exchange (CEX), DEX pool, burn, bridge, contract or deployer. Labels come from a seed list, explorer name tags, DexScreener pair addresses, and contracts that answer token0().

Exchange wallets tagged on any EVM chain are recognised on every chain where the address has no code: a wallet address is one private key everywhere, so it is the same exchange. Contracts are never matched across chains.

Hubs no list knows are inferred. A contract that traded with 25 or more addresses is treated as a pool or router. A wallet that traded with 25 or more addresses, or paid gas for three or more holders, is treated as a likely exchange when it has sent an exchange-scale number of transactions (10,000 on Robinhood Chain, 50,000 on the other chains). Inferred labels say “inferred”.

Name-tag data: eth-labels by dawsbot, MIT licence, github.com/dawsbot/eth-labels.

02

Link

Two wallets are joined by a line when one of these is true:

  • They sent the token to each other.
  • Their first native gas came from the same address.
  • They bought from a pool in the block liquidity was added.

Lines are merged into groups with union-find. Exchanges, pools, routers, bridges and burn addresses are never connectors, or every holder would collapse into one group. A shared funder that paid more than 60 holders is treated as an unlabelled exchange and ignored.

Linked means connected by on-chain activity, not proven to be one owner.

03

Score

Start at 100. Each factor takes points off. 70 and above is Low risk, 40–69 Moderate, under 40 High.

Largest linked group−1.5 × % of supplycap −40
Deployer-linked supply−2 × %cap −25
Launch-block buyers still holding−1 × %cap −15
Groups with 5+ wallets−2 eachcap −10
Fresh-wallet farms (5+ wallets, one gas funder)−1 × %cap −10
Top 10 non-exempt holders−0.5 × (% − 20) when above 20%cap −30
Liquidity under 5% of market cap−10
04

Seal

The finished snapshot is serialised as canonical JSON (keys sorted, no whitespace) and hashed with keccak256. Pending hashes are batched into a Merkle tree; its root goes on-chain in one transaction to the AuditAnchor contract on Robinhood Chain, which emits Anchored(root, count, timestamp).

Download the snapshot JSON from a token's Seal tab and run npm run verify -- --snapshot file.json from the Redstring repo to check the hash, the Merkle proof and the on-chain event.

05

Limits

Clustering is a heuristic. Two friends can share a funder; one person can use wallets that never touch. Scores are not financial advice.

Every token page lists what a scan could not check (for example, gas funders when no HyperSync token is configured, or launch-block buys when only part of the transfer history was available).

06

Dispute a label

If a wallet is labelled wrong, or an exchange wallet is acting as a connector, tell us with the chain, the address and what it is. Confirmed labels are added to the seed list and apply to the next scan.