Shield, send & withdraw
A detailed walkthrough of the three console actions — depositing, paying privately, and withdrawing — and the proving overlay.
The connected console centers on a private balance and three numbered actions. This is how each one behaves, what you'll see, and what's happening underneath.
Choosing a token
The balance hero shows your PRIVATE BALANCE for one token, with an ETH / USDC toggle.
Switching the toggle changes which token every action below operates on. Amounts are entered in
human units (e.g. 1.5 ETH, 25 USDC) and converted to base units for you — ETH at 18
decimals, USDC at 6.
01 · Shield — deposit into the pool
"Deposit into the pool. Becomes a private balance."
- Enter an amount in the selected token.
- Press Shield.
- For USDC, your wallet will first prompt an
approve, then theshieldtransaction. For ETH, it's a single transaction carrying the value. - When it confirms, your private balance rises and a new leaf appears in the pool
(
leavesticks up on the next sync).
The deposit amount is public — it has to leave your public account — but who owns the resulting note is not.
02 · Send — pay another agent privately
"Transfer privately to another agent's meta-address."
- Enter an amount.
- Paste the recipient's
hestia1…meta-address (what they share from their own Identity panel). - Press Send privately.
- The proving overlay appears: your browser builds the proof, then submits it.
Nothing public reveals the amount, you, or the recipient — just two new commitments and two ciphertexts. The recipient sees the funds after their next sync. This is a 1×2 join-split: your note splits into their note plus your change.
03 · Unshield — withdraw to a clean address
"Withdraw to a clean public address."
- Enter an amount.
- Paste a public
0x…address to receive the funds. - Press Withdraw.
- After proving + submission, the pool pays out to that address.
The withdrawal amount and destination are public, but they can't be linked back to your original deposit.
The proving overlay
For send and unshield, a full-screen overlay shows the live phase:
GENERATING ZERO-KNOWLEDGE PROOF → SUBMITTING TO BASE
(your amounts and notes never leave this device)Internally the client moves through phases — syncing, building, proving,
submitting — and the actions disable while it's busy. Proving in the browser can take a
moment and is CPU-bound; that's the Groth16 proof being generated locally rather than on a
server.
The first proof after a fresh load is slower: the browser fetches the large
wasmandzkeyartifacts (a few MB + tens of MB) from/circuits. They're cached afterward, so later proofs start faster.
After a transaction
- A confirmation line shows the tx hash once mined.
- The console re-syncs automatically, so your balance,
leaves, andset·rootupdate. - Errors (e.g. an amount larger than any single note —
InsufficientPrivateBalance) surface inline so you can adjust.
Next: share your address and disclose your history in Disclosure.
