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.
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.
The four patterns
A pattern is a match in public numbers or timing. Each one is printed beside what it does not show.
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.
| Route | Returns |
|---|---|
| /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/ring | Every vault in the default ring with its balance and share of supply, and the SOL pool. |
| /api/v1/health | Whether the reader is up and how old its last read is. Makes no upstream calls. |
| Field | Meaning |
|---|---|
| status | in_ring, not_in_ring or unreadable for a coin; seen, not_seen or unreadable for a wallet. |
| asOf | The chain slot, the indexer slot and the time of the read. |
| partial, cuts | True when a list was cut, with what is missing and why. A cut list is never presented as whole. |
| limitations | What the answer does not show, in plain sentences. |
| amounts | Always { raw, decimals, decimal } as exact strings. Never a float. |
| hidden values | Always { "hidden": true }. Never a number and never null. |
| Error | HTTP | Meaning |
|---|---|---|
| invalid_address | 400 | The value is not a base58 Solana address. |
| rate_limited | 429 | Too many requests from this address. Wait for the retry-after header. |
| budget_exceeded | 503 | The read needed more upstream calls than one request may use. |
| busy | 503 | Too many reads in flight. Try again shortly. |
| upstream_unavailable | 502 | The data source could not be reached. |
Questions and corrections: @unshieldedxyz on X