Skip to Content

Scheme Registry

Each PQ signature scheme is registered in a compile-time table with a unique 1-byte prefix (0x070x0B) prepended to its serialized public key. Consensus script verification is gated by three flags: SCRIPT_VERIFY_PQ_STRICT (bit 13), SCRIPT_VERIFY_WITNESS_V1_512 (bit 14), and SCRIPT_VERIFY_SHA512 (bit 15).

This page is the canonical scheme/prefix registry. It is not a cryptographic primer; use Falcon and ML-DSA for scheme-level explanation.

Prefix table

PrefixDecimalSchemeMainnet statusActivation rule
0x077Falcon-512LiveAllowed before and after AuxPoW.
0x088Falcon-1024Built, not activeAllowed at and after AuxPoW activation.
0x099ML-DSA-44Built, not activeAllowed at and after AuxPoW activation.
0x0A10ML-DSA-65Built, not activeAllowed at and after AuxPoW activation.
0x0B11ML-DSA-87Built, not activeAllowed at and after AuxPoW activation.

Testnet allows all known schemes from block 1000 onward. Regtest allows all known schemes from genesis.

On-wire rule

Serialized PQ public keys carry a one-byte scheme prefix before scheme-specific public key bytes. The prefix selects the verification implementation and is also used by PQHD as the scheme' derivation element.

Unknown production prefixes are invalid. Prefixes 0xF0 through 0xFF are reserved for experimental use in code and must not be treated as mainnet consensus schemes.

Height gate

The scheme allowance rule is:

if height < nAuxpowStartHeight: only Falcon-512 is allowed else: all known schemes are allowed

On mainnet, nAuxpowStartHeight is currently disabled, so Falcon-1024 and ML-DSA are implemented but not active on mainnet. For the current network table, see Activation Status.

Consensus flags

FlagBitActivationEffect
SCRIPT_VERIFY_PQ_STRICT13AuxPoW heightRejects legacy Falcon-512 signature format and enforces strict post-AuxPoW verification.
SCRIPT_VERIFY_WITNESS_V1_51214AuxPoW heightEnables witness v1 64-byte script-hash validation.
SCRIPT_VERIFY_SHA51215AuxPoW heightEnables OP_SHA512.

Verification path

EvalScript() → EvalChecksig() → CheckPostQuantumSignature() → VerifyPostQuantumSignature() → CPubKey::Verify() → pq::VerifyPrefixed()

Wallet policy

PQHD wallet policy can choose default receive and change schemes, but wallet policy does not override consensus activation. A wallet must not create mainnet outputs using schemes or output types that are not active at the target height.

See also: Activation Status, PQHD Wallet, Signature Encoding, Verification Modes.

Last updated on