Connecting & your identity
How the console connects a wallet, derives your shielded identity from one signature, and what the status readouts mean.
Opening /app shows the connect screen: a blueprint dial, the line "Enter the shielded
layer," and a single Connect wallet button. Everything about your shielded identity comes
from that one action.
What happens on connect
- Wallet request. The console asks your browser wallet for an address using a
customtransport overwindow.ethereum. Install any Base-compatible wallet first; if none is found the console tells you so. - Chain switch. It asks the wallet to switch to the configured chain (Base / Base Sepolia / a local chain). If you decline, reads still work over the configured RPC and you can switch manually.
- One signature. It asks you to sign the fixed message
hestia.io/keys/v1. This is a plain message signature — not a transaction — so it costs nothing and moves nothing. - Key derivation. From that signature the console derives your four keys
(
deriveKeysFromSignature) — your identity. The secret keys live only in the page's memory. - Client ready. It builds a
Hestiaclient wired to your wallet (so the wallet signs and submits), an association provider that tracks the pool's deposits, and the proving artifacts served from/circuits. Then it syncs.
Connect ─► sign "hestia.io/keys/v1" ─► derive keys ─► Hestia.create ─► sync ─► ready
(no gas, no tx) (in-memory) (browser)The signature is your identity. Sign the canonical message with the same wallet and you always recreate the same shielded identity — there is nothing to back up. Sign something else, or connect a different wallet, and you get a different identity. The console always uses
hestia.io/keys/v1.
Reading the panel
After connect, the utility bar reads Hestia/Console/<your address> with an ONLINE · BASE
chip. The status strip gives you the live state:
| Readout | Meaning |
|---|---|
agent | Your connected public address. |
leaves | The number of commitments (leaves) in the pool's tree — its size. |
set·root | The current association root your spends prove against. |
| ↻ sync | Re-pull chain events: refresh notes, balance, leaf count, and association root. |
Press sync any time to bring your view up to date — for instance after someone pays you, so their note shows up in your balance.
Privacy during connect
- The signature and key derivation happen in the browser; no key material is sent anywhere.
- The console reads pool state through its backend indexer, which only ever serves public chain data (commitments, ciphertexts you trial-decrypt locally, nullifiers).
- Your private balance is reconstructed on the device by decrypting note blobs with your viewing key — see the shielded pool.
With an identity in hand, continue to shield, send, withdraw.
