Research

Measure, reproduce and question Qanum: experiments, benchmarks with their raw data, test networks and review material.

This page is for researchers, universities, evaluators and partners. It lists what can be measured and reproduced today, where the method and the data are, and which questions are still open. Every number below comes from a published document with its method; none of them comes from an independent audit, which mainnet still requires.

Source code access. The official repository is private during the pre-release phase, so the source code cannot be downloaded from this site yet. Public access will open shortly. To request access now, write to partnerships [at] qanum [dot] org.

Contents

Crypto agility, end to end

Qanum treats no signature scheme as permanent (whitepaper §3.2, §6.2 and §6.5). Every key in an output carries its suite ID. A suite enters by height (suites5) and leaves new outputs by height (retire12); outputs created before stay spendable forever. Testnet runs both heights at 0, so it is level 5 from its genesis. On regtest both heights move with -testactivationheight=suites5@<h> and -testactivationheight=retire12@<h>, so the transition can be replayed.

The suite migration experiment runs that transition on a regtest network of four real qanumd nodes with the production verifier (liboqs): one miner, one user with level-1/2 coins, one node that never enforces the retirement and one that does not know level 5. The wallet moves its coins with migratesuites, the old suites are retired, and the chain is rolled back and forward across both heights. Every step is asserted (39 checks) and the measurements are written to results.json and summary.md.

First results (aarch64, 8 cores, 19 October 2026)

MeasureLevel 1/2Level 5
Payment with one input3,881 bytes (ML-DSA-44)7,368 bytes (ML-DSA-87)
Verify units of one single-key input100290
Authorization bytes of a P2RKPQ recovery spend7,895 (SLH-DSA-128s)29,863 (SLH-DSA-256s)
cargo build --release --locked --bin qanumd --bin qanum-cli
cd test/functional
# As a test (PASS or FAIL):
python3 qan_framework.py feature_suite_migration.py
# As an experiment, writing the measurements:
python3 feature_suite_migration.py --out /tmp/suite-migration

The experiment script and its write-up are in the main branch of the repository and ship with the next release. The pieces it drives, migratesuites and -testactivationheight, are in v0.9.0. Limits stated by the write-up: one machine, no real latency, minimum difficulty, a small wallet; multisig, vault and HTLC outputs are not migrated automatically.

Post-quantum costs, measured

A level-5 key and signature take about 7.2 KB, so Qanum prices authorization apart from base data and bounds the cryptographic work of a block with verify units (whitepaper §10). The verify-unit constants were set from these measurements. Each run is pinned to one core, one job at a time; the raw output and the machine state before and after are published, and the reduction rules are pinned by a test.

Median verification timeARM big coreARM little corex86-64 (EPYC)
ML-DSA-87166.6 µs544.4 to 546.3 µs54.4 to 55.1 µs
SLH-DSA-SHAKE-256s1.88 to 1.89 ms6.66 to 6.67 ms1.16 to 1.24 ms

A block at the authorization-bytes limit (415 ML-DSA-87 spends) validates in 152 ms on the ARM big core and 553 ms on the little core, on one thread with every signature verified. The full tables cover key generation, signing, ML-KEM-1024, single transactions and full blocks.

cargo build --release --locked --example pq_bench
QANUM_BENCH_COMMIT=<commit> taskset -c <core> target/release/examples/pq_bench --out <file>.jsonl

Measurements on other processors are welcome: the budget bounds time, so the constants follow the slowest core.

Your own test network

Testnet data

The public testnet has 75-second blocks and coins with no value. Two sources of data:

Daily telemetry (public)

A seed node records the chain and its own state every 5 minutes with read-only RPC calls (since 19 October 2026; the block history starts at the testnet genesis, 11 October 2026). Once a day the complete UTC days, up to yesterday, are published here under CC BY 4.0. Peer addresses and node identities are never recorded.

MeasureLast 7 daysLast 30 days
Last complete dayLoading
Height at the end of that day
Blocks
Block interval, median / mean (target 75 s)
Interval, 90th percentile / maximum
Transactions other than the coinbase
Seed node peers, mean / maximum
Stale tips
Reorganizations

Suggested credit: Qanum testnet telemetry, https://qanum.org/research/. For now the two seed nodes do most or all of the mining, so stale-block and reorg counts are not representative of a larger network. This is still the history that §9.9 of the whitepaper calls for: it says the stale-block rate of a 75-second chain has not been measured yet.

Full telemetry (on request)

The 5-minute node snapshots (connections, peers per version and connection type, median ping, mempool, chain tips, uptime) and the detail of every stale tip and reorganization are available to research partners on request at partnerships [at] qanum [dot] org.

Review material

The repository also holds the consensus specification, the external audit package and the CVE and BIP registers; they open with it.

Open questions

Measurements that would feed decisions to be frozen before mainnet (the benchmark plan and whitepaper §9.9):

Collaborate

Qanum is released under MIT OR Apache-2.0, so code, data and documents can be reused in research. For research collaboration, early source access or joint projects, write to partnerships [at] qanum [dot] org.