CanaryDocsKeep funds in a Q-Vault

Keep funds in a Q-Vault

Every Solana wallet address is an Ed25519 public key. A Q-Vault holds your SOL and tokens under two keys: your wallet's Ed25519 key for everyday spending, and a Falcon-512 key, a post-quantum signature scheme, that you keep offline. The vault names a trigger rung. When that rung reads Solved, the vault stops accepting Ed25519 for good, and only the Falcon-512 key can move funds.

The two paths

Ed25519 (your wallet)Falcon-512 (your key file)
Before the trigger fallsInstant spends up to the instant budget; larger spends wait out the delaySpends at any time; cancels any queued Ed25519 spend
After the trigger fallsRejected, permanentlySpends at any time
AssetsThe vault's one instant asset (SOL in the app)SOL, USDC and other supported tokens

1. Create your Falcon-512 key

On Q-Vault, choose Generate a key. The key is made in your browser and held only in that page's memory. Choose Save the secret file and keep the file offline: it is the only way to move funds once the trigger rung falls. The app never stores or sends it. To use the key later, choose Load a key file.

Size
Falcon-512 public key897 bytes
Falcon-512 signature666 bytes

2. Create the vault

With a key loaded, set:

  • Trigger rung: the rung whose fall closes the Ed25519 path. A lower rung closes it earlier.
  • Delay: how long a larger Ed25519 spend waits before it can execute. During the delay your Falcon-512 key can cancel it.
  • Instant budget: how much SOL Ed25519 may spend at once without waiting.

Choose Create and confirm the key. The wallet approves eight transactions at once: the vault, the key written in chunks, and a Falcon-512 signature over the vault that proves you hold the key. A vault whose key is not confirmed can't take Falcon spends, so the app does both in one go. Fund the vault only after it shows Falcon Confirmed.

3. Deposit

Pick SOL or USDC, enter an amount and choose Deposit.

4. Spend with Ed25519

Enter an amount and a recipient and choose Spend with Ed25519.

  • Within what is left of the instant budget, the spend goes out at once.
  • The budget refills only after a full delay passes with no instant spend. A stolen wallet key can take at most one budget's worth before you notice.
  • A spend larger than the instant limit is queued. It shows under the vault with the time it unlocks; choose Execute after that time. Until then, Cancel with Falcon stops it.
  • A spend within the limit but above what is left of the budget waits until the budget refills.
  • Ed25519 moves only the vault's instant asset. Other assets, USDC included, move with the Falcon-512 key.

5. Spend with Falcon-512

Load your key file, enter an amount and a recipient, and choose Spend with Falcon. The wallet approves four transactions: the signature is staged on chain in chunks, then the spend executes. A Falcon spend needs no delay and works before and after the trigger falls.

Each Falcon signature covers the exact action (the vault, the asset, the amount, the recipient), a nonce and the vault's own instance salt, so it can't be replayed, retargeted or reused on another vault or network.

When the trigger falls

The moment the trigger rung reads Solved, the vault refuses every Ed25519 spend, including queued ones. Trip records that permanently in the vault; anyone can call it, and the app offers it on any vault whose trigger has fallen. From then on, only your Falcon-512 key spends.

The vault program also lets the owner lock a vault at any time with its lockdown instruction, which has the same effect.

Keeping the key safe

  • Keep the secret file offline, and keep a second copy.
  • Load it only into the Canary app, only when you spend.
  • The vault program supports rotating to a new Falcon-512 key: the current key signs the rotation and the new key proves you hold it.
  • Before the trigger falls, your wallet can always move the vault's SOL, its instant asset, through the instant budget and the queue. USDC and other assets move only with the Falcon-512 key, so keep the second copy of the file somewhere separate.