Docs

What a ring still shows, and how to read it

Paste a coin or a wallet and see what Helius Privacy Rings leave public: every deposit, every withdrawal, who sent and who received.

What it reads

Helius Privacy Rings are a shielded pool on Solana. A wallet deposits a coin into the ring, moves it between private balances, and withdraws it. In the default ring, a transfer between two private balances hides the asset and the amount.

Everything else stays public: every deposit, every withdrawal, the wallets on both ends, the time, and the balance of each coin's vault. That public part is what this site reads. It does not decrypt anything and it does not guess what is hidden.

A hidden value is always shown like this: . Grey dots, never a number.

Reading a report

Paste a coin's mint address or a wallet address. A report opens with one sentence stating the most notable public fact, then the record behind it.

In the ringThe coin has a vault. The report lists what went in and out.
Not in the ringThe coin has no vault, so none of its supply is shielded.
UnreadableThe reader could not read it and says why. Nothing is stated.

For a wallet the statuses are seen in the ring and not seen. A wallet report lists its public deposits and withdrawals and its private transactions: when each happened and who signed it, with the amount and asset hidden.

Open a real report: Ring Cat (RCAT)

The four patterns

A pattern is a match in public numbers or timing. Each one is printed beside what it does not show.

Same wallet

A wallet deposits and the same wallet later withdraws. The report says whether the amounts are identical and how long passed.

What this does not showThe ring hides which deposit funds which withdrawal. The same wallet appearing on both sides is a public fact; what happened inside the ring in between is not readable.

Same amount

A deposit and a withdrawal of the exact same amount by different wallets, within 30 days. The report says how many deposits of that exact amount came before.

What this does not showEqual amounts can be a coincidence, and the ring hides which deposit funds which withdrawal. This shows a match in public numbers, not a link between the two wallets.

Withdraw, then sell

A wallet withdraws and then sells the same coin within 1 hour. Checked for coins with up to six withdrawing wallets; beyond that the report says it was not checked.

What this does not showA sale after a withdrawal is a timing fact. It does not show why the wallet sold or that the sold tokens are the withdrawn ones.

Fan out

One deposit followed, within 24 hours, by withdrawals to at least 3 different wallets that together take out no more than went in.

What this does not showSeveral withdrawals following one deposit is a pattern in public timing. The ring hides which deposit funds which withdrawal, and the wallets may be unrelated.

The balance check

For every coin in the ring the report adds up all public deposits, subtracts all public withdrawals, and compares the result with the vault's balance on chain. If they match, the record is complete. If they differ, the report says by how much and whether direct transfers to the vault explain it.

The check is exact, to the base unit. There is no tolerance.

Limits

  • Amounts and assets of private ring transfers are not readable and are never estimated. They are reported as hidden.

  • This report reads public chain and indexer records only. It shows what is still readable, not what happened inside the ring.

  • A wallet address is not an identity. Nothing here says who controls a wallet.

A report is a read at one moment. It carries the chain slot and time it was read at, and an answer may be served from cache for up to about half an hour. If a list was cut, the report says which one and why.

Nothing here is advice, and a report with no patterns is not a clean bill: it means nothing was found in what is public today.

API

The site reads through a public JSON API. Every route is a GET, needs no key, and is limited to 30 requests a minute per IP address.

RouteReturns
/api/v1/coin/{mint}Status, the headline sentence, the vault balance and share of supply, every public deposit and withdrawal, the patterns and the balance check.
/api/v1/wallet/{address}Whether the wallet is registered, its private transactions (signers and time; amount and asset hidden) and its public deposits and withdrawals.
/api/v1/ringEvery vault in the default ring with its balance and share of supply, and the SOL pool.
/api/v1/healthWhether the reader is up and how old its last read is. Makes no upstream calls.

Example

curl https://unshielded.xyz/api/v1/coin/BwBtBQzFkL3Ac22qnpFLvZXMb6cDNbyZdSEsH9iG12me

{
  "apiVersion": "v1",
  "kind": "coin",
  "status": "in_ring",
  "asOf": { "chainSlot": 467832948, "blockTime": 1794337784 },
  "partial": false,
  "summary": { "headline": "19.5% of supply went into the ring ..." },
  "shielded": { "raw": "0", "decimals": 6, "decimal": "0" },
  "deposits": [ { "blockTimeUtc": "2026-11-10T16:03:17.000Z", "wallet": "Qxic...", "amount": { ... } } ],
  "withdrawals": [ ... ],
  "evidence": [ { "kind": "same_wallet", "text": "...", "limits": "..." } ],
  "conservation": { "result": "pass", "differenceRaw": "0" }
}
FieldMeaning
statusin_ring, not_in_ring or unreadable for a coin; seen, not_seen or unreadable for a wallet.
asOfThe chain slot, the indexer slot and the time of the read.
partial, cutsTrue when a list was cut, with what is missing and why. A cut list is never presented as whole.
limitationsWhat the answer does not show, in plain sentences.
amountsAlways { raw, decimals, decimal } as exact strings. Never a float.
hidden valuesAlways { "hidden": true }. Never a number and never null.
ErrorHTTPMeaning
invalid_address400The value is not a base58 Solana address.
rate_limited429Too many requests from this address. Wait for the retry-after header.
budget_exceeded503The read needed more upstream calls than one request may use.
busy503Too many reads in flight. Try again shortly.
upstream_unavailable502The data source could not be reached.

Questions and corrections: @unshieldedxyz on X