Skip to content

collinsadi/opaque

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

248 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 ╔═══════════════════════════════════════╗
 ║              O P A Q U E              ║
 ╚═══════════════════════════════════════╝

Private payments & proof-backed reputation on Ethereum

Website  ·  GitHub  ·  SDK  ·  Docs  ·  Playground  ·  PSR Verifier Demo  ·  Demo

MIT License


Opaque is an open protocol for unlinkable receive addresses and optional reputation you can prove without doxxing your wallet. Think of it as: every payment can land at a fresh address only you control, while still letting apps verify things like “this person passed KYC” or “this account is in good standing”—using zero-knowledge proofs when you opt into that layer.

No single product owns the stack: there is a reference wallet at opaque.cash, a TypeScript SDK for builders, developer docs (guides + API reference + playground), and on-chain contracts you can read and deploy yourself.

Heads-up: This is experimental software. Stealth cryptography and local-only data paths have real trade-offs—read DISCLAIMER.md before relying on it for anything serious.


What the protocol does today

Stealth payments (EIP-5564) Recipients share a meta-address (not a single static deposit address). Senders derive a one-time address per transfer so observers cannot trivially link your incoming flow on-chain.
Registry Optionally map your normal Ethereum address to your meta-address so people can pay you by 0x… without pasting a long key—resolution is public; the unlinkability is in how funds are received.
Announcer Senders emit a compact announcement on-chain so the right recipient can discover which stealth outputs are theirs (with view tags so scanning stays practical).
Manual “ghost” receives The app can also generate one-time addresses without an on-chain announcement; those rely on local storage on the device—flexible, but not recoverable from chain state alone.
PSR — private reputation When you need it, attestation metadata can ride alongside announcements. The recipient can discover traits from their announcements, then build Groth16 proofs scoped to an action and verify against on-chain roots—showing that you qualify without exposing who you are to everyone.

Under the hood, heavy lifting uses Rust → WebAssembly for scanning and crypto, viem-friendly ABIs for contracts, and hosted circuit artifacts on opaque.cash for proof generation when you don’t self-host.


Build with the SDK

The @opaquecash/opaque package is the unified client: configure chain + RPC + wallet signature + WASM, pass indexer-shaped announcements, and get calldata for register/announce flows, owned outputs, balances by token, and PSR traits—without forcing a specific indexer or UI.

cd sdk && npm install && npm run build

Point your app at the published WASM entry (or your own build):

https://www.opaque.cash/pkg/cryptography.js

Full API surface, types, and lower-level packages (@opaquecash/stealth-*, @opaquecash/psr-*) live in sdk/packages/opaque/README.md.


Developer docs

The docs/ app is a Vite + React site: quick start, configuration, indexer integration, send/receive guides, PSR flows, API reference, and a playground.

cd docs && npm install && npm run dev

Use it alongside the SDK README when you’re wiring Graph-style announcement rows, reputation proofs, or custom deployments.


Repository map

Path What you’ll find
frontend/ Reference wallet UI (balances, send, receive, private balance)
sdk/ @opaquecash/opaque and modular stealth + PSR packages
docs/ Developer documentation site
infra/ Hardhat contracts, deploy scripts
scanner/ Rust WASM core; see scanner/WASM_BUILD.md

Contracts (Sepolia)

StealthMetaAddressRegistry 0x77425e04163d608B876c7f50E34A378624A12067
StealthAddressAnnouncer 0x840f72249A8bF6F10b0eB64412E315efBD730865
Groth16Verifier 0x78A169b6E308Fd5BfAfc728f216CdB06EcEdde06
OpaqueReputationVerifier 0x30B750Ae9851e104F8dbB4B8082b1a07a34885B0

Community

Issues and PRs are welcome—whether you’re fixing a doc typo, improving the SDK ergonomics, or integrating Opaque into something new.

Support: hello@collinsadi.xyz


MIT License · Built in public · opaque.cash

About

A stealth-address wallet and privacy protocol

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors