| title | Opaque Protocol |
|---|---|
| description | Stealth payments, provable reputation, and cross-chain announcements in one TypeScript SDK. |
Opaque is a cross-chain privacy stack for unlinkable payments and zero-knowledge reputation. Configure one client (@opaquecash/opaque) and integrate stealth sends, PSR attestations, inbox scanning, and Groth16 proofs without touching chain-specific libraries directly.
| Capability | Description |
|---|---|
| Stealth payments (CSAP) | EIP-5564 meta-addresses, one-time stealth destinations, on-chain announcements |
| Reputation (PSR) | Schema registry, stealth-bound attestations, Groth16 proofs without revealing identity |
| Cross-chain (UAB) | Relay announcements over Wormhole so payments on one chain appear in the other chain's inbox |
flowchart LR
App["Your app"] --> Client["OpaqueClient"]
Client --> EVM["Ethereum\nRegistry · Announcer · PSR"]
Client --> SOL["Solana\nRegistry · Announcer · PSR"]
Client --> STARK["Starknet\nRegistry · Announcer · PSR verify"]
Client --> WASM["cryptography.wasm\nscan · sweep · prove"]
Client --> UAB["UAB / Wormhole\ncross-chain inbox"]
| Chain | ID / cluster | Status |
|---|---|---|
| Ethereum Sepolia | 11155111 |
Stealth, PSR V2, UAB, reputation verifier |
| Solana devnet | devnet |
Stealth, PSR V2, reputation verifier |
| Starknet Sepolia | 0x534e (SN) |
Stealth, PSR verify/gate, reputation verifier (testnet preview) |
Contract addresses ship inside the SDK (see Deployments). Override any address via OpaqueClient.create({ contracts: { ... } }).
Most apps only need @opaquecash/opaque (plus @opaquecash/react for React
apps). Contract addresses and program ids ship in the generated
@opaquecash/deployments registry. Lower-level packages (stealth-chain,
psr-core, uab, etc.) are re-exported when you need a narrow surface. See
Installation.