Getting Started
Configuration & environment
The environment variables that point shh at a settlement layer, select a profile, and configure the relayer — plus the public config the backend exposes and the rule that secrets never cross into it.
Copy .env.example to .env and fill it in. The defaults target a local devnet; switching to Base Sepolia or mainnet is a matter of swapping RPC URLs and keys.
Settlement & RPC
# Settlement layer (Base) RPCs
BASE_MAINNET_RPC_URL=https://mainnet.base.org
BASE_SEPOLIA_RPC_URL=https://sepolia.base.org
# L3 (shh) RPC — local devnet by default
SHH_RPC_URL=http://localhost:9545Operator & deployer keys
# Default Anvil/Hardhat account #0 — replace before any testnet/mainnet use.
DEPLOYER_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
# Sequencer / batcher / proposer / admin (local devnet)
GS_SEQUENCER_PRIVATE_KEY=
GS_BATCHER_PRIVATE_KEY=
GS_PROPOSER_PRIVATE_KEY=
GS_ADMIN_PRIVATE_KEY=Compliance & verification
# Association Set Provider (compliance) signer
ASP_SIGNER_PRIVATE_KEY=
# Block explorer / contract verification
BASESCAN_API_KEY=Profile & pool selection
The profile and denomination are read by the backend and recorded in the deployment manifest:
| Variable | Default | Meaning |
|---|---|---|
SHH_PROFILE | open-pool | full-privacy (Profile A) or open-pool (Profile B). |
SHH_NETWORK | localhost | Which deployments/<network>.json manifest to load. |
SHH_CHAIN_ID | 31337 | The L3 chain id. |
DENOMINATION | 100000000000000000 | Privacy Pool denomination in wei (0.1 ETH). |
RELAYER_ADDRESS | — | Address the relayer binds into withdrawal proofs. |
RELAYER_FEE_BPS | 50 | Relayer fee in basis points (0.5%). |
Public config — secrets never leak
The backend exposes a curated, secret-free view of this configuration at GET /api/config (see Wallet backend API). It reads contract addresses from the deployment manifest, the circuit artifact paths, and the relayer's address and fee — never any private key.