Your wallet keys are generated in a way quantum computers can't reverse. Bitcoin's wallet system breaks under quantum attack — Tidecoin's doesn't.
PQHD is Tidecoin's custom wallet key derivation system that replaces Bitcoin's BIP-32. BIP-32 relies on elliptic curve arithmetic for key derivation — Shor's algorithm makes any exposed extended public key (xpub) equivalent to an exposed private key. PQHD uses hardened-only derivation with SHA-512-based KDF, supporting all five NIST post-quantum signature schemes with encrypted multi-seed storage.
BIP-32's extended public key (xpub) mechanism derives child public keys from a parent public key using elliptic curve point addition. In a quantum setting:
derives the private key from any public key in polynomial time
is equivalent to an exposed xpriv
supports the homomorphic public key derivation that BIP-32's non-hardened derivation requires
PQHD eliminates this vulnerability by using hardened-only derivation — every path element uses the private key material, and no public-key-only derivation exists.
m / 10007' / 6868' / scheme' / account' / change' / index'
All elements are hardened (high bit set):
10007' — Tidecoin PQHD purpose6868' — Tidecoin coin typescheme' — PQ scheme identifier (Falcon-512, Falcon-1024, ML-DSA-44/65/87)account', change', index' — user-controlled derivationSHA-256("Tidecoin PQHD seedid v1" || master_seed) — domain-separated identifier
HMAC-SHA-512 from 32-byte master seed
HMAC-SHA-512 chained using parent secret material
HKDF-based stream key derivation with scheme-specific domain separation
Scheme-specific conversion — Falcon uses first 48 bytes, ML-DSA uses first 32 bytes as deterministic seed
Independent seeds with per-seed scheme policies
Different PQ schemes for different seeds
Set default receive and change address schemes
Seeds encrypted with wallet master key (PQHDCryptedSeed)
All secret material cleansed via memory_cleanse() after use
Proprietary PQHD origin metadata fields for offline signers
wpkh(pqhd(SEEDID)/purpose'/cointype'/scheme'/account'/change'/index')