Confidential USDC payments that stay sealed after Q-Day
For payroll, supplier and treasury payments on Solana. Every amount is a 32-byte commitment on chain; only the payee and the auditor can open it, with ML-KEM-768.
your note
- Payee
- —
- Auditor
- —
- 4,024 / 4,096 B per transfer
Every note is copied the moment it lands
Validators and archival RPC nodes keep each commitment and both envelopes. Keeping them costs an archive only storage.
Copied13 notes · 31,824 bytes
Q-Day, read from the archive
A quantum computer starts with the copies. Token-2022 confidential transfers keep an ElGamal handle for each amount, D = r·P, with the key P on chain. One discrete log per key opens the amount.
One auditor key opens a whole mint
Every Token-2022 transfer also carries a handle for the mint’s auditor: solve that one key and every amount the mint ever moved lies open. A Hindsight note has no handle to solve. Its commitment hides the amount perfectly, and its openings travel under ML-KEM-768.
Token-2022 confidential transfersReadable 24 of 24
HindsightReadable 0 of 24
How a note moves
The payer’s client commits to the amount with a fresh random r, proves both the note and the new balance lie in [0, 2⁶⁴), and seals the opening twice. The range proof, the note and both envelopes travel in one v1 transaction.
The pool’s auditor decrypts its envelope, checks that v·G + r·H equals C_note, and attests notes in batches. Where the pool requires it, nothing can be accepted before that.
The payee decrypts the other envelope, runs the same check, and accepts: the program adds C_note to the payee’s balance commitment, closes the note and refunds its rent to the payer.
A payee can only take in a note whose opening checks out. One that fails goes back to the payer, who created the opening and can always take it back.
- Compute budget and the rest87
- Auditor envelope1,208
- Payee envelope1,208
- Note fields110
- Range proof1,001
- 9 accounts and blockhash320
- Signature and header90
One transfer, proof, note and both envelopes, in one v1 transaction
4,024of 4,096 bytes
Measured on a local validator, Agave 4.3.0, with the program deployed and native proof verification on.
- amounts, whole: no 48-bit cap and no split into 16 and 32 bits
- 64-bit
- compute units for a whole transfer, 200,000 of them the range proof, measured on a local validator
- 226,570
- bytes in a payee’s X-Wing key, registered once
- 1,216
- bytes per envelope, one for the payee and one for the auditor
- 1,208
- bytes in a note account, its rent refunded to the sender when the note closes
- 235
How long must a payment stay secret?
Salaries, supplier pricing, treasury positions, legal settlements and advisory fees stay sensitive for a decade or more. Set how long; the line shows the deadlines that lifetime runs past.
Paid in 2026 and secret for 10 years: it must hold until 2036.
- 2030EU data confidential for 10+ years protected from quantum attack
- 2030NIST 112-bit ECDH, ECDSA and RSA deprecated
- 2031UK NCSC highest-priority migrations complete
- 2035NIST quantum-vulnerable public-key algorithms disallowed
Its lifetime runs past 4 of 4 deadlines.
What ships with the pool
- Attests notes in batches, with a p95 target under 10 seconds
- Holds its X-Wing key for each epoch in its own service, apart from the API
- A console with CSV and ledger exports and selective-disclosure reports
- Turns a CSV of payees into lanes and ordered transfer chains
- Runs several accounts of one employer as lanes in parallel, every intermediate commitment computed ahead
- Retries what fails and reconciles against the chain
- TypeScript, with its range proofs in Rust compiled to WebAssembly
- Commitments, range proofs and X-Wing envelopes
- A sealed self-record per account, so a device holding the keys reads its balance back from the chain
- Serves each envelope by its hash, and tells the payee’s open app the moment a note lands
- Whatever it serves is checked against the hash the note carries on chain, so it holds nothing anyone has to trust
Run a payroll cycle on Hindsight
Hindsight is opening to design partners who pay salaries, suppliers or treasury flows in USDC on Solana. Tell us what you run and we set up a first cycle with you.
Requests open with the launch
This form opens here when the service goes live. Meanwhile, the docs and the papers describe how it works.