Methodology

How this check works

Every number on the result panel comes from public chain data and a scoring function that runs in your browser. This page documents both, so a result can be checked rather than taken on trust.

Shor's algorithm, run on a sufficiently large quantum computer, derives a private key from the matching public key, and it does not reverse a hash. The whole assessment therefore reduces to one question, asked identically on every chain: is the public key needed to spend these funds already visible on-chain?

An address whose key is still behind a hash is shielded today. An address whose key has been published is exposed, permanently, and no future action can un-publish it. The only thing that changes is what is left sitting behind that key.

What this measures

Exposure, rather than imminent theft. Exposure is readable from the chain right now. Whether a machine capable of acting on it arrives in 2030, 2035 or later is a forecast, and credible sources disagree. Both positions are cited below.

Classification

When each chain publishes a key

Bitcoin

  • ExposedP2TR bc1p…. The output key is itself a tweaked public key on-chain, exposed from the moment it is funded.
  • ExposedP2PK and bare multisig. The key sits in the output script. Mostly Satoshi-era coins, with no conventional address to paste.
  • ExposedReused hash addresses. The spending input reveals the key, so an address that has spent and still holds a balance is exposed.
  • ShieldedP2PKH, P2SH, P2WPKH, P2WSH that have never spent. Only a hash has ever been on-chain.

Ethereum and EVM

  • ExposedNonce above zero. The account has sent a transaction, so its key is recoverable from that signature.
  • ExposedEIP-7702 delegated accounts. These carry code 0xef0100… but stay key-controlled. Tools that test only for code misclassify them as contracts.
  • ShieldedNonce zero. Only the address, which is a hash, has ever been on-chain.
  • SeparateContract accounts. No key of their own. Their exposure belongs to whichever keys control them, which this check does not follow.

Solana

  • ExposedSystem-owned accounts. A Solana address is an ed25519 public key with no hash in front of it, so a funded account is exposed from the moment it exists.
  • SeparateToken accounts and PDAs. Owned by a program, with no private key behind them.
  • NoneUnfunded addresses. No account exists on-chain, so nothing is at stake yet.

EVM addresses are checked across Ethereum, Base, Arbitrum, Optimism, Polygon and BNB Chain in parallel. Exposure on any one of them exposes the key everywhere, because it is the same key, and balances are summed across all of them for the value-at-stake figure.

Bitcoin balances and spend counts come from mempool.space, falling back to Blockchair, which also supplies the first-spend timestamp behind the exposure-age term. When neither reports one, exposure age is shown as unmeasured rather than guessed.

One nuance worth stating plainly: the genesis coinbase output is a P2PK script with an exposed key, but the address commonly quoted for it is a P2PKH address that has never spent. Pasting that address returns shielded, which is correct for the address and incomplete for the coins.

Scoring

The score starts at 100 and subtracts

Small enough to read in one sitting, and it runs client-side in /assets/js/score.js so you can inspect the exact code that produced your number.

SignalConditionDeduction
Public key exposureVisible on-chain, structurally or through reuse−40
Time exposedOver 2 years−10
1 to 2 years−8
6 to 12 months−6
3 to 6 months−4
1 to 3 months−2
Value at stakeOver $10M−50
$1M to $10M−40
$100K to $1M−30
$10K to $100K−20
$1K to $10K−10
Above zero−5

The value-at-stake deduction counts in full when the key is exposed, and at 40% when it is still shielded. A large balance behind a published key is live risk. The same balance behind a key that is still hashed is latent risk that only becomes real when the address spends, and a careful cold wallet should not be graded like a compromised one.

The result is floored at zero. Grades are A+ at 95 and above, A at 85, B at 75, C at 65, D at 35, and F below that. Risk reads very low at 90 and above, low at 75, medium at 60, high at 40, and very high below that.

Three choices in this model differ from how comparable tools score. Value at stake is measured in US dollars rather than native units, so Bitcoin, Ethereum and Solana results are directly comparable. Exposure age is applied to the score rather than only displayed. Stakes are weighted by whether the key is actually exposed, which keeps the headline verdict and the grade in agreement.

Privacy

What the server does and does not keep

  • NeverAddresses are written to a datastore. The cache and rate limiter key on an HMAC of the input, so nothing can be read back as a list of addresses.
  • NeverA private key, seed phrase, signature or wallet connection is requested. Reading public chain data needs none of them.
  • LocalScoring happens in your browser. The server reads public chain data on your behalf, the way a block explorer does, and returns raw facts.
  • HashedNotification signups store an email against an HMAC commitment of the address, never the address itself, and require confirmation before anything is sent.
Sources

Every number, and where it came from

ClaimSource
6.04M BTC, 30.2% of supply, with exposed public keysGlassnode, 2026
Roughly 4M BTC, about 25% of supply; the earlier classic estimateDeloitte Netherlands
Up to 65% of Ether in accounts with recoverable public keysGershteyn and Alber, 2026
Under 1M noisy qubits to break RSA-2048, down from 20M in 2019Gidney, Google Quantum AI, 2025
1.7 to 2.3M BTC exposed and effectively un-migratableChaincode Labs, 2025
Roughly even expert odds on a capable quantum computer by 2035Global Risk Institute, 2025
Elliptic-curve signatures planned for disallowance after 2035NIST IR 8547, draft, 2024
The contrary view: roughly 10,200 BTC at practically exploitable near-term riskCoinShares, 2026

Gidney measures RSA-2048 rather than the elliptic-curve signatures these chains use. It is cited because it moved the resource estimates, not because it breaks Bitcoin.

Limits

What this check does not do yet

  • FloorOnly native balances are counted. Tokens held by an exposed address are not yet included, so value at stake is a floor rather than a total.
  • PartialExposure age is unavailable on Solana, and on Bitcoin when the enrichment source does not answer. It is reported as unmeasured and scores nothing.
  • UnscoredContract and program-owned accounts are described rather than scored. Following their controlling keys is planned, not shipped.
  • MissingExtended public keys, which would scan a whole wallet at once instead of one address, are not supported.

Check an address against everything on this page.

Run a Check