Basic model
Vaulkyrie formats
Vaulkyrie contains two compatible code paths because the project evolved from a smaller browser WOTS implementation to the current Solana Winternitz format.
The program and SDK accept either 512-byte legacy signatures or 896-byte Solana Winternitz signatures in the current instruction builders. New PQC Wallet flows should use the 896-byte Solana Winternitz format.
Message binding
The PQC wallet advance message binds:- Wallet id
- Current root
- Next root
- Destination pubkey
- Amount
- Sequence
pqcWalletAdvanceMessage in src/services/quantum/wots.ts. The Rust mirror is pqc_wallet_advance_message in crates/vaulkyrie-protocol/src/lib.rs.
Root advancement
Vaulkyrie stores a current signing root inPqcWalletState. A spend proves knowledge of the one-time key for that root and supplies a next root. If accepted, the program advances state to the next root and increments sequence.
This design makes reuse visible: after a successful spend, the old root should no longer be valid for future spends.
Blueshift credit
Vaulkyrie’s PQC direction is inspired by Blueshift Labs’ Solana Winternitz work. The Vaulkyrie implementation is its own code path, but the core idea of making a Solana-compatible Winternitz authorization flow is credited to that work. Primary Blueshift references:- Winternitz Signatures on Solana: https://learn.blueshift.gg/en/courses/winternitz-signatures-on-solana
- Winternitz Signatures with Pinocchio: https://learn.blueshift.gg/en/courses/winternitz-signatures-on-solana/winternitz-signatures-with-pinocchio
- Pinocchio Quantum Vault challenge: https://learn.blueshift.gg/en/challenges/pinocchio-quantum-vault
Source references
src/services/quantum/wots.tssrc/background/quantumVaultSession.tssrc/sdk/instructions.tscrates/vaulkyrie-protocol/src/lib.rscrates/vaulkyrie-sdk/src/instruction.rsprograms/vaulkyrie-core/src/instruction.rsprograms/vaulkyrie-core/src/processor.rs
