bb84 Vault
Status: On devnet · Group: Identity & security
Funds that only a Falcon-512 signature can move.
Falcon-512 is the leading post-quantum signature candidate for Solana. bb84 Vault uses it at the app level, before the protocol supports it: keys are registered on-chain and every withdrawal is checked by a Solana program. No protocol change needed.
How it works: from key to withdrawal
- Seed. A Falcon-512 key is generated from QPU bits mixed with local randomness, so no one else, bb84 included, can compute it.
- Register. The 897-byte public key is stored once in the Quantum Proof Table with its QPU receipt and slot, like an address lookup table for keys.
- Fund. Anyone can send SOL to the vault or the smart wallet, or make the wallet the owner of token accounts.
- Q-Day switch. The owner turns on Q-Day mode. It's irreversible: from then on the Ed25519 key can't move funds.
- Spend. A Falcon signature over the exact instructions, nonce and expiry is verified on-chain; a relayer pays the fee.
Why a table: the Quantum Proof Table
A Falcon public key (897 bytes) and a signature (666 bytes) don't fit together in one Solana transaction (1,232 bytes). So, like address lookup tables do for addresses, the table stores each owner's Falcon key once. After that, each transaction carries only the signature.
The registration slot is public proof the key existed at that time. A future quantum attacker could break Ed25519, but can't go back in time to register a key earlier.
The Q-Day switch: one switch the owner can't undo
Before Q-Day the owner can still withdraw with Ed25519. After the switch, only a Falcon signature verified on-chain can move funds, even if the Ed25519 key leaks.
- Irreversible.
enable_qdaycan't be turned off. From then on,withdrawfails withQdayActive. - Bound to the payout. The Falcon signature covers the program, entry, destination, amount and a nonce, so a relayer can't redirect or replay it.
- Relayer-paid. The vault can't pay fees, so a throwaway relayer submits the transaction and never controls funds.
Cost per transaction (measured on devnet)
| Instruction | Compute | Transaction size |
|---|---|---|
register | 63,234 CU | 1,212 B |
withdraw_pq (Falcon-512 verify) | 298,426 CU | 962 B |
Vault creation fee: {{VAULT_FEE}}
What works on devnet
- Falcon key registered and vault funded
- Ed25519 withdrawal works before Q-Day
- Q-Day mode switched on
- Ed25519 withdrawal rejected after Q-Day (
QdayActive) - Falcon-512 withdrawal succeeds, relayer-paid
Key seeds: the devnet keys so far were seeded from simulator bits, labelled as such on-chain. A key from a real QPU run is next.
| Program | Network | Address |
|---|---|---|
qpt | Devnet | E4cwdChwHz3bqfeLUdJcRnPSsgKBEz7mwov1qCHgEmsK |
qpt | Mainnet | {{MAINNET_QPT_ADDRESS}} |
Related
The same key also runs a bb84 Wallet. · bb84 Multisig · All products
Updated about 1 hour ago
