Contact Us
Blockchain Quantum Readiness Index

Quantum Readiness Score (QRS) — methodology v0.4 (2026-10-20)

QRS rates chains against a cryptographically relevant quantum computer (CRQC): one large enough to break today's elliptic-curve cryptography (ECC). Post-quantum (PQ) mechanisms resist that threat. Every rating needs public evidence or a repeatable on-chain measurement. score.py implements these rules.

Design rules

  1. Stage comes first. Every requirement must pass; high scores or good documentation cannot offset failures.
  2. Plans earn at most planned. Only usable mainnet code earns live-*; full credit needs production support and non-experimental code (see live-experimental).
  3. Live U requires no ECC key that can move funds, re-key or upgrade the account (hold). Contract/program PQ accounts and vaults must be immutable or upgradeable only by their own PQ key or another PQ-controlled authority. ECC-controlled timelocks only delay forged upgrades; they do not qualify.
  4. The weakest required slice limits the stage. For L2s, this includes proofs and upgrade keys controlling funds.
  5. Every state above unknown needs a URL. So does every stage gate and every n/a, except P on L1s. Missing evidence means unknown or an unmet gate.
  6. Exposure probes are published with a pinned block and hash. They affect scores only once they cover the full chain state.

Rosette — 6 slices

The rosette shows six areas of risk. L1s are base chains; L2s settle on another chain.

SliceWeightWhat it measures
U — User keys25Can users keep idle funds safe (hold) and spend with a PQ mechanism, with or without a signature (state), on mainnet?
C — Consensus20PQ or hybrid validator/sequencer signatures and finality (PoW chains: n/a, see below)
P — Proof system10Quantum resistance of L2 validity/fraud proofs. KZG/pairing = exposed; STARK/FRI/hash-based = ok
B — Bridges & messaging15PQ signatures on canonical bridges and interop
A — Admin & upgrade keys15Upgrade/freeze powers: PQ keys, or timelocks with a PQ override
M — Migration & recovery15A credible PQ migration path for exposed accounts, existing contracts and stored state, plus an ECC sunset

Why these weights

Weights affect only the secondary 0–100 score, never stages.

scripts/sensitivity.py tests each weight at 50%, 75%, 125% and 150%, rescaling others to total 100, plus equal weights. Spearman's rank correlation measures agreement with the published ranking, for capped and raw scores; ties use average ranks. The methodology page publishes data/sensitivity.json, regenerated by the site build. A test rejects stale committed results. Weights cannot change stages.

U — hold and state

U rates holding and spending separately. hold rates the best option a user has on mainnet today. The note says when the default account is weaker.

state rates spending with an approved PQ mechanism. Signature-less methods count: transaction-bound hash commitment/reveal or hash-based STARK proofs of secret knowledge.

hold and state rate the same account type. On L2s, hold looks at the account only. System upgrade keys (security councils, core contract admins) belong to slice A.

U counts as live only with a live state, an approved mechanism and hold of pq. Otherwise a live state earns at most 6 points and fails stage gates. A revoked or vulnerable U mechanism makes a pq hold that relies on it exposed.

Scope definitions

Live migration (M) must let existing accounts, contracts and stored state move to PQ protection. New PQ accounts alone count under U. Live M needs covers: {accounts, contracts, state}, all true; false or missing fields cap M at 6 points and fail gates. Below live, M is rated on the best published artifact (roadmap, spec or code). M is n/a only with evidence of no past ECC user keys, hence no legacy state.

A canonical bridge is core-team/foundation-operated or endorsed, or holds most of the chain's bridged value. B excludes third-party bridges.

Proof-of-work (Bitcoin, QRL, Abelian) has no block signatures to forge, so C is n/a with evidence. Grover-style mining speed-ups are out of scope.

L2 consensus (C) covers sequencer/proposer signatures. P (proofs), B (bridge) and A (upgrade keys) cover fund safety and gate L2 stages. An L2 cannot rate P as n/a; it is treated as unknown.

States and points

StatePointsArtifact required
exposed0ECC only, nothing better on any network
unknown0Unresearched or no evidence; treated as worst case
discussed1Forum idea, research post, draft or unaccepted proposal/RFC/PR
planned2Official core-team/foundation roadmap, or accepted/merged numbered spec (BIP/EIP/AIP/NEP/CAP/ACP) awaiting activation
in-dev4Merged core-team code, not enabled on a public network, or devnet only
testnet6Enabled on a public testnet
live-experimental6Mainnet, but authors label it experimental/unaudited, or no production wallet/SDK support
live-hybrid10Production-supported mainnet. PQ AND classical; both must be forged
live-pq10Production-supported mainnet, PQ only
n/aexcludedRisk does not exist; evidence required except P on L1s

Hybrid earns PQ-only credit because requiring both signatures is at least as strong as the PQ part. ECC OR PQ is not hybrid: the ECC path means the slice is rated as ECC-only.

Mechanism registry

Every live slice names a mechanism id and its deployed parameter_set where the registry defines sets. If the registry defines sets and the file names none, the slice is non-standard. List all other verification mechanisms in components, including SNARK wrappers and KZG commitments. The weakest component decides. Every component must be an approved registry mechanism; otherwise the slice is non-standard.

For proofs, include every commitment the verifier reads: data-availability commitments and state-trie hashes (e.g. Pedersen). This includes KZG blob proofs checked through Ethereum's point-evaluation precompile. Mentioning KZG, pairings, Groth16, PLONK, Pedersen, BN254 or BLS12-381 in a proof-system description/note without declaring it makes the slice non-standard. Declare the component or reword the description.

The methodology page shows the versioned registry, data/algorithms.json, used to check mechanisms and components. Entries list kind, allowed slices, parameter sets with NIST security levels, and status:

Unlisted mechanisms or approved ones outside their allowed slices are non-standard: at most 8 points, no stage gates. A status change re-rates every chain using that mechanism on the next build. The registry keeps a dated changelog.

Parameter sets and caveats are published, not scored in v0.3. Live slices show their deployed set's NIST category (e.g. ML-DSA-44: category 2; ML-DSA-87: category 5). NIST considers category 1 adequate; no penalty applies. XMSS/LMS in SP 800-208, standalone WOTS+ and hash commitments lack standard-assigned categories. The registry labels estimates and explains their basis.

Caveats appear with each mechanism. Falcon / FN-DSA signing needs floating-point arithmetic, complicating side-channel-safe hardware wallets; on-chain verification is unaffected. XMSS/LMS are stateful: each one-time key may sign once, so wallets must track which keys they have used.

Score 0–100 (secondary progress index)

score = Σ W·points / Σ W over in-scope slices (n/a excluded), × 10, then caps:

in_scope_weight shows how much of the rosette applies. research_coverage shows the weight of non-unknown slices out of 100. Both flag scores based on limited scope or research.

Stage gates

Each record in the chain file's gates needs ≥ 1 URL:

"Live" below means live-hybrid or live-pq with an approved mechanism; U also needs hold: pq.

Stages run from 0 to 7. Each stage requires every lower one. Stages 0–4 track how far PQ user accounts have got, read from the U slice alone. From Stage 5 users are actually protected, and every requirement must pass.

Getting ready (U n/a passes all four):

Protected:

An L2 names its settlement L1 in settles_on. From Stage 5 up, its stage cannot exceed that L1's stage: forgeable settlement-layer consensus or keys also threaten L2 withdrawals. Stages 0–4 are not capped, because an L2 can ship PQ accounts on its own.

v0.4 (2026-10-20) split the old Stage 0 into Stages 0–4 and renumbered Stages 1–3 as 5–7, with unchanged rules.

Measured exposure and adoption (published, not scored in v0.3)

pct_value_key_revealed is the share of sampled EOA value whose public key is already on-chain. The v0.1 probe samples recently active addresses, making account-chain results close to 100% by construction. Scoring waits for a full-state snapshot or indexer. Each result records chain, block number, block hash, RPC and sampling method.

adoption tracks value (pct_value_pq) and accounts (pct_accounts_pq) held in PQ accounts. Each dated point needs a method, evidence and at least one percentage. Shipping PQ accounts does not prove migration works. Trends matter as much as levels; a few percent after months signals trouble. Trends are published; scoring waits for cross-chain comparability. These measurements are intended for a future Stage 7 adoption threshold.

Process

Chain inputs live in chains/<chain>.json, and verbatim evidence quotes in docs/research/evidence/<chain>.md. scripts/check_evidence.py and scripts/check_quotes.py check URLs and quoted text against cited pages. score.py is deterministic: identical inputs, including as_of, produce identical stages and scores.

Review uses public PRs, a dispute window and per-chain changelogs. Re-run probes weekly; every slice change needs new evidence.

Prior art

qrindex.org (QRI), LayerQu, Hardy Index, Tectonic Quantum Tracker, Verdict, LatticeScan, and ZKNOX's PQbeat (Ethereum ecosystem). Most rate documents and roadmaps. QRS adds on-chain exposure measurements, proof/bridge/admin-key analysis and an open, deterministic scorer.

Mechanism registry 2026-10-13

Source: data/algorithms.json. cat. = standard-assigned NIST security category. est. = our estimate when no standard assigns one; notes explain the basis.

MechanismKindStatusSlicesParameter setsNotes
ML-DSA
FIPS 204
signatureapprovedU, C, B, A, MML-DSA-44 (cat. 2), ML-DSA-65 (cat. 3), ML-DSA-87 (cat. 5)
SLH-DSA
FIPS 205
signatureapprovedU, C, B, A, MSLH-DSA-SHA2-128s (cat. 1), SLH-DSA-SHA2-128f (cat. 1), SLH-DSA-SHAKE-128s (cat. 1), SLH-DSA-SHAKE-128f (cat. 1), SLH-DSA-SHA2-192s (cat. 3), SLH-DSA-SHA2-192f (cat. 3), SLH-DSA-SHAKE-192s (cat. 3), SLH-DSA-SHAKE-192f (cat. 3), SLH-DSA-SHA2-256s (cat. 5), SLH-DSA-SHA2-256f (cat. 5), SLH-DSA-SHAKE-256s (cat. 5), SLH-DSA-SHAKE-256f (cat. 5)
FN-DSA
Falcon, selected by NIST for standardization (2022); FIPS 206 (FN-DSA) pending
signaturecandidateU, C, B, A, MFN-DSA-512 (cat. 1), FN-DSA-1024 (cat. 5), Falcon-512 (cat. 1), Falcon-1024 (cat. 5), Falcon-1024-deterministic (est. 5), Falcon-512-BLAKE2s-h2p (est. 1), Falcon-512-Poseidon-h2p (est. 1)Deployed Falcon variants differ from each other and the eventual standard. They remain non-standard until FIPS 206 (FN-DSA) is final. Floating-point signing makes constant-time, side-channel-safe hardware wallets and secure elements harder to build. Integer-only verification leaves on-chain verification unaffected.
XMSS
RFC 8391; NIST SP 800-208 approves a subset (SHA2-256, SHA2-192, SHAKE256 sets)
signatureapprovedU, C, B, A, MXMSS-SHA2_10_256 (est. 5), XMSS-SHAKE256_10_256 (est. 5), XMSS-SHA2_10_192 (est. 3), XMSS-SHAKE256_10_192 (est. 3), XMSS-SHA2_16_256 (est. 5), XMSS-SHAKE256_16_256 (est. 5), XMSS-SHA2_16_192 (est. 3), XMSS-SHAKE256_16_192 (est. 3), XMSS-SHA2_20_256 (est. 5), XMSS-SHAKE256_20_256 (est. 5), XMSS-SHA2_20_192 (est. 3), XMSS-SHAKE256_20_192 (est. 3), XMSS-SHAKE_10_256 (est. 1), XMSS-SHAKE_16_256 (est. 1), XMSS-SHAKE_20_256 (est. 1)Wallets must track used leaves. Reusing a one-time leaf breaks security. RFC 8391-only sets lack SP 800-208 approval but share its hash-based security argument. We accept them and mark their basis.
LMS
NIST SP 800-208, RFC 8554
signatureapprovedU, C, B, A, MLMS_SHA256_M32_H5 (est. 5), LMS_SHAKE_M32_H5 (est. 5), LMS_SHA256_M24_H5 (est. 3), LMS_SHAKE_M24_H5 (est. 3), LMS_SHA256_M32_H10 (est. 5), LMS_SHAKE_M32_H10 (est. 5), LMS_SHA256_M24_H10 (est. 3), LMS_SHAKE_M24_H10 (est. 3), LMS_SHA256_M32_H15 (est. 5), LMS_SHAKE_M32_H15 (est. 5), LMS_SHA256_M24_H15 (est. 3), LMS_SHAKE_M24_H15 (est. 3), LMS_SHA256_M32_H20 (est. 5), LMS_SHAKE_M32_H20 (est. 5), LMS_SHA256_M24_H20 (est. 3), LMS_SHAKE_M24_H20 (est. 3), LMS_SHA256_M32_H25 (est. 5), LMS_SHAKE_M32_H25 (est. 5), LMS_SHA256_M24_H25 (est. 3), LMS_SHAKE_M24_H25 (est. 3)Wallets must track used leaves. Reusing a one-time leaf breaks security.
WOTS+
RFC 8391 component. SP 800-208 approves one-time signatures only within XMSS/LMS, not standalone use.
hash-based one-time signatureapprovedU, A, MWOTS+-SHA2-256-W16 (est. 5), WOTS+-SHAKE256-256-W16 (est. 5), WOTS+-Keccak-256 (est. 5)Each key may sign once. The protocol or program must enforce this; reorgs or mempool races can cause duplicate signing.
hash-commitment
Hash preimage resistance (same assumption as SLH-DSA/XMSS)
signature-less authenticationapprovedU, A, MSHA-256 (est. 5), SHA3-256 (est. 5), Keccak-256 (est. 5), BLAKE2s-256 (est. 5), PoseidonBind each reveal to its transaction to prevent front-running. Use each commitment once. Move the remaining balance to a fresh commitment in the same atomic transaction, or the account is one-time. Hash-locks with revealed preimages anyone can reuse (e.g. Stellar hash(x) signers) and pre-authorized-transaction signers are not general authentication.
STARK-PoK
Hash-based STARK proof of knowledge of a secret
signature-less authenticationapprovedU, A, M—Only transparent, hash-based proofs qualify. Pairing-based SNARK proofs of knowledge (Groth16, KZG-PLONK) are vulnerable. Bind the transaction as a public input to prevent replay and front-running.
STARK
STARK/FRI (hash-based)
proof systemapprovedP, B—List every other commitment the verifier reads as a component, including data-availability commitments (KZG blob proofs) and state-trie hashes (Pedersen).
hash-based-fault-proof
Merkle commitments + interactive one-step fraud proofs
proof systemapprovedP, B—List every other commitment the verifier reads as a component, including data-availability commitments (KZG blob proofs) and state-trie hashes (Pedersen).
KZG
Pairing-based polynomial commitment
proof systemvulnerableP, B—Shor's algorithm breaks discrete logarithms in pairing groups. Forged openings can make a verifier accept wrong blob data.
Groth16
Pairing-based zkSNARK
proof systemvulnerableP, B, U, A, M—Relies on elliptic-curve pairings (BN254/BLS12-381), which Shor's algorithm breaks.
Pedersen
Elliptic-curve Pedersen hash (e.g. over the STARK curve)
hash functionvulnerableU, C, P, B, A, M—Elliptic-curve discrete logarithms provide collision resistance. Shor's algorithm finds collisions, allowing forged Merkle proofs.
HAWK
NIST additional signatures process (round 3); withdrawn
signaturerevokedU, C, B, A, MHAWK-512 (cat. 1), HAWK-1024 (cat. 5)Its designer withdrew it in July 2026 after an AI-assisted attack (Anthropic's Mythos). A new way to solve its lattice isomorphism problem roughly halved key strength. Revoked 2026-07.
MAYO
NIST additional signatures process
signaturecandidateU, C, B, A, M—Multivariate scheme still under NIST review; not standardized.
Rainbow
NIST PQC round 3 finalist (dropped)
signaturerevokedU, C, B, A, M—Beullens broke it in 2022: level-1 key recovery takes about a weekend on a laptop. Revoked 2022-02.
SIKE
NIST PQC round 4 candidate (dropped)
key encapsulationrevoked——Broken by Castryck and Decru (2022): classical key recovery in hours. Revoked 2022-07.

Registry changelog

Weight sensitivity

Each weight tested at 50%, 75%, 125% and 150%; others rescaled to total 100. Equal weights tested too, across 21 chains. Lowest ranking agreement with published weights: ρ = 0.927 (before caps: 0.949). Stage changes: none. Reproduce: python3 scripts/sensitivity.py.

VariantSpearman ρρ (raw)Max rank moveMax score change
U ×0.50.9270.949614.0
U ×0.750.9720.98446.8
U ×1.250.9990.99716.4
U ×1.50.9940.993412.5
C ×0.50.9970.99943.6
C ×0.751.01.001.8
C ×1.250.9760.9941.7
C ×1.50.9760.98643.3
P ×0.50.9990.99911.2
P ×0.751.01.000.6
P ×1.250.9990.99910.6
P ×1.50.9960.99621.2
B ×0.51.00.99714.9
B ×0.751.00.99812.4
B ×1.250.9850.99642.4
B ×1.50.9750.98954.7
A ×0.50.9940.99424.1
A ×0.751.01.012.0
A ×1.250.9980.99811.9
A ×1.50.9980.99813.8
M ×0.50.9990.99713.7
M ×0.751.00.99901.8
M ×1.250.9860.99941.8
M ×1.50.9830.99643.5
equal weights0.9660.98258.2

Have a project in mind?

Drop us a line. LimeChain has built blockchain infrastructure since 2017, from core protocol work to wallets, bridges and smart contracts.

Contact Us

Open, repeatable scoring. Non-zero ratings need public evidence; missing evidence means unknown. Methodology v0.4 · mechanism registry 2026-10-13.