APEX · Arc · post-quantum

Quantum-safe vault

Keep USDC behind a lock that quantum computers cannot break: a hash-based one-time key that changes after every withdrawal.

🔑 Your key never leaves this browser. Save it: lose it, lose the money.

1 · Your vault key

2 · Your vault

Connect a wallet on Arc. Your vault is found from your key and your wallet address.

3 · Put USDC in

4 · Take USDC out (quantum-safe)

Your browser makes a 16 KB Lamport signature over exactly this amount, recipient and the vault's next key. Nobody can change any of them. About 0.02 USDC of gas.

How it works · fine print
  • Your vault key is made in this browser and never sent anywhere. Whoever has it can empty the vault; whoever loses it loses the money. Save it like a seed phrase.
  • Your normal wallet still pays gas and sends the transactions, but it cannot move vault money without the vault key.
  • New contract: one outside security review is in progress. Keep amounts small. No owner, no fee, no way for us to recover anything.
  • Contract 0x6c217e12ce9b6f6a964977c614765eaae95c78b6 on Arc, verified source. No owner, no fee, no upgrade.
  • Key n of your vault = keccak256(domain, chain, contract, vault id, n, your vault key). Each one-time key has 2 × 256 secrets; its public part is one hash, stored on chain. A withdrawal reveals one secret per bit of the message; the vault then moves to key n+1.
  • Security rests on keccak256 (about 128-bit strength even against a quantum search). It protects the right to spend: your ordinary wallet could be broken in the future and the vault would still hold. The USDC token and the Arc chain themselves still use ordinary keys.
  • Version 3, after two outside security reviews: keys are never reused, nobody else can block your next key, and a payout that cannot be made still retires the key and keeps the money in the vault, so a key never has to sign twice. This page computes the message it signs itself and reads your vault from two independent networks.
  • Experimental: this page allows at most 10 USDC per deposit and 25 USDC per vault.
  • One message per key: if a withdrawal is sent but never lands, retry the same amount and recipient. This page refuses a different one under the same key, because a one-time key that signs two different messages starts to leak.
  • Earlier versions (v1 0x9515a233, v2 0x13306b50) were replaced after the reviews; only our own test money was ever in them.