Block space efficiency matters, but it’s not the binding constraint right now. FYI right now it is actually CPU efficiency that’s the propagation bottleneck (not bandwidth, not UTXO db). If there’s just 1 TX missing then compact block relay won’t propagate the block until full validation is completed. In principle this can be solved, then it will be just PoW check and Merkle tree verification on relaying critical path and bandwidth will become the bottleneck. Check analysis here: ac-0353f40e / Faster Blocks for Bitcoin Cash · GitLab
Our limit right now is 32 MB, but only about 100-200kB are used. Even if everyone switched to SPHINCS+ as default, we’d go up to ~16 MB and TX fee would jump 80x-160x (still cheap, tho). But we don’t plan to remain at 20k TXs/day forever. So yes, post q-day we will need something more efficient as the daily driver.
What I’m saying is: secp256k1 will remain as the efficient daily driver. What we need first is a hedge, not an immediate replacement. We will just keep using secp256k1. SPHINCS+ would be used only as a nuclear bunker to survive q-day, as a place to where you safely evacuate to temporarily. We don’t know when q-day will happen. By the time it happens maybe FN-DSA and ML-DSA will get broken and replaced by something else. Chances are SPHINCS+ won’t. The bunker survives. Then when dust settles you can move from the bunker to something more efficient.
The wallet complexity is exactly the problem. Stateful schemes (WOTS+, XMSS, LMS) break catastrophically on index reuse. A wallet restore from seed, a hardware signer reset, or a poorly-implemented exchange hot wallet burns the key, and the user learns about it only when their coins are stolen. The CHIP explicitly rejects stateful schemes in the OP_CHECKSIG path for this reason: that opcode carries an implicit contract of “reuse is safe.” Adding a footgun to it is worse than adding nothing.
We can add those primitives later as a parallel path. They don’t replace SPHINCS+ but give wallets that want to build custom constructions the tools to do so. The CHIP just ships one reliable complete scheme first.
Bitcoin didn’t ship with OP_ECADD and OP_ECMUL and let everyone implement their own signature scheme in Script. Satoshi picked ECDSA, it was good enough, and that standardization is why seed imports between wallets actually work. SPHINCS+ fills the same role for the PQ era: one scheme everyone can target. SLH-DSA is FIPS 205 final: no pending changes, no wire-format risk. That’s what makes it a reliable bunker you can commit to now.
Only later did people think about adding primitives for other curve operations. But first, we needed a reliable OP_CHECKSIG. SPHINCS+ gives us that for the PQ era. Give it a decade and we may add a lighter registry entry for the daily driver, and dedicated opcodes for stateful schemes, but the bunker is the prerequisite. Something like this strategy:
Step 1: SPHINCS+ activated in consensus
- Reliable migration target for everyone
Step 2: Vault pattern (userspace)
- Self-sovereign migration option for proactive users
- Deterministic from seed, no extra backup
- Quantumroot (LM-OTS vault) fits here, too, available already now without needing any consensus changes
Step 3: Commit-delay-reveal-challenge (future consensus)
- Protocol-level migration for legacy secp256k1 coins
- Needs SPHINCS+ as its reliable target
- Needs to be specified BEFORE secp256k1 lockdown
- Users can start aging commitments early
Step 4:
- Lighter OP_CHECKSIG in the future when lattices mature more
- More efficient stateful signature support with dedicated opcodes