Docs
Signatures
Kalyx uses two signature schemes, for two different jobs. A validator signs duties with ML-DSA-87. A spending account signs transfers with XMSS. They are not interchangeable, and neither one is the elliptic-curve lock a large quantum computer is expected to break.
Why these, and not the usual lock
Shor’s algorithm is aimed at factoring and at the elliptic-curve discrete log. That is the math behind the signatures most chains still use for accounts and for validators. A quantum computer that can run it does not “guess harder.” It solves that math.
ML-DSA-87 is a lattice scheme, the FIPS 204 parameter set. XMSS is built from hash functions, and it is stateful. Neither problem is the one Shor solves. That is the claim. It is not a warranty that no future method can ever touch them, and it is not a promise that the clients have finished an audit.
ML-DSA-87, the validator key
| Piece | Size |
|---|---|
| Public key | 2,592 bytes |
| Signature | 4,627 bytes |
| Fork version this chain signs for | 0x10000038 |
The beacon knows the public key. When it is that key’s turn, the block carries a 4,627-byte signature over the duty. A wrong signature is not a block. A key signed for a different fork is a different key, and this beacon rejects it. There is no classical key sitting beside it as a fallback. Software that expects a 32-byte public key will not parse this one. That mismatch is the parameter set, not a bug in the explorer.
The secret half of this key does not belong in a browser, a chat, or a model. The signer is the place it is allowed to live.
XMSS, the spending account
An ordinary transfer can still be signed with XMSS. The seed is 51 bytes, written as 0x and 102 hex characters. There is no word list.
XMSS is stateful. The seed grows a tree of leaves, and each leaf may sign once. Use the same leaf twice and that account’s security is gone. Two copies of a wallet that both think they own the next leaf will do exactly that. One wallet, one next leaf, and the leaf moves forward after every successful signature.
The browser wallet keeps that seed in the tab and writes it only into an encrypted file you download. It does not turn the seed into a validator key. The sizes are different because the jobs are different.