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

bash
# 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:9545

Operator & deployer keys

bash
# 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

bash
# 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:

VariableDefaultMeaning
SHH_PROFILEopen-poolfull-privacy (Profile A) or open-pool (Profile B).
SHH_NETWORKlocalhostWhich deployments/<network>.json manifest to load.
SHH_CHAIN_ID31337The L3 chain id.
DENOMINATION100000000000000000Privacy Pool denomination in wei (0.1 ETH).
RELAYER_ADDRESSAddress the relayer binds into withdrawal proofs.
RELAYER_FEE_BPS50Relayer 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.