pq1... Post-Quantum Hybrid Address Format
Adds pq1... Bech32m address type for Schnorr (BIP 340) + Falcon-1024 (NIST FIPS 204 Level 5) hybrid post-quantum signatures.
Motivation
Post-quantum readiness for Bitcoin. As quantum computing advances, Bitcoin addresses need a migration path. This PR introduces a hybrid address format that combines classical Schnorr (128-bit) with Falcon-1024 (230-bit PQ) security, providing defense-in-depth against both classical and quantum adversaries.
Technical Details
- Witness version: 2
- Program size: 1825 bytes (32B Schnorr pubkey + 1793B Falcon-1024 pubkey)
- Encoding: Bech32m with
pq1HRP - Solver:
TxoutType::WITNESS_V2_PQHYBRIDdetection - Composite signatures:
schnorr_sig(64B) || falcon_sig(~1271B)
Security
| Layer | Algorithm | Security | Standard |
|---|---|---|---|
| Classical | Schnorr secp256k1 | 128-bit | BIP 340 |
| Post-Quantum | Falcon-1024 | 230-bit PQ | NIST FIPS 204 Level 5 |
Files Changed (15 files, +215 lines)
src/script/falcon.cpp/h— Falcon-1024 via liboqssrc/script/shrincs.cpp/h— Hash-based SHRINCS (580B compact)src/script/pq_sig.cpp/h— PQ signature routingsrc/script/hybrid_schnorr_pq.cpp/h— Hybrid Schnorr+Falcon verifysrc/script/solver.cpp/h— Witness v2 detectionsrc/key_io.cpp—pq1Bech32m encodingsrc/test/pqhybrid_tests.cpp— 5 test casesdoc/pqhybrid-address.md— Documentation
Tests
- Falcon-1024 keygen/sign/verify (including wrong key/message rejection)
- SHRINCS hash chain verification (580-byte)
- PQ signature routing (Falcon vs SHRINCS auto-detect)
pq1address encoding format- Hybrid composite signature structure validation
Dependencies
- liboqs 0.15.0+ (Falcon-1024)
- secp256k1 with Schnorr module (already default)
Example Address
pq1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...