Hindsight

Paying

Deposit

On the Account page, enter an amount under Deposit from your wallet and approve the transaction. USDC moves from your wallet's token account into the pool's vault, and your confidential balance grows by the amount less the 5 bps ramp fee, which goes to the protocol fee account in the same transaction (fees). A deposit is public: anyone can see that your wallet deposited that amount. What you send from your balance afterwards is not.

A single deposit is limited to the pool's deposit cap, and the pool as a whole to its pool cap; the fees page shows both.

Send a payment

On the Send page, enter:

  • The payee's wallet address. The payee must have set up their account (registered a key and opened an account in the pool); the app checks before it builds anything.
  • The amount in USDC, up to your confidential balance.
  • A memo of up to 32 bytes. It is sealed together with the amount, so only the payee and the auditor read it.

Then choose Send. In your browser, the app:

  1. commits to the amount with a fresh random blinding: ;
  2. builds one range proof showing that both the amount and your remaining balance lie in ;
  3. seals the amount, the blinding and the memo twice, to the payee's key and to the auditor's key;
  4. uploads the two envelopes to the relay, which stores them by their hash;
  5. asks your wallet to sign one v1 transaction carrying the proof and the transfer instruction.

On chain, your balance commitment loses and a note account appears with the commitment and the hash of both envelopes. Your app keeps the note's opening on this device, so it can take the note back if it is returned.

A transfer is one transaction of about 4,024 bytes and about 225,000 compute units. The note account holds rent until the payee accepts; accepting refunds it to you.

When a payment comes back

A note can come back to you in two ways:

  • The payee returns it, at any time. A payee returns a note whose envelope doesn't open to its commitment, or any note they don't want.
  • You reclaim it after the pool's return timeout has passed without the payee accepting it.

Your Inbox lists the notes you sent under Notes you sent, each with its amount, because your device kept its opening. Once a note passes the return timeout, choose Take back. A note that is back with you, whether its payee returned it or you took it back, shows Accept back: accepting adds it to your balance again, and no attestation is needed for a note back with its sender.

Payroll and batches

To pay many payees at once, use Payroll: it plans the whole batch from a CSV file and sends it as ordered transfers.