Skip to main content

Key derivation


Unified signer

One adapter shape over EIP-1193, viem WalletClient, and Solana wallet-adapter. requestSetupSignature(signer) prompts for the SETUP_MESSAGE signature; pass the same shapes to OpaqueClient.fromWallet. See OpaqueClient overview.

Recipient resolution

Building blocks behind client.resolveRecipient. parseMetaAddressValue validates that both 33-byte halves are real curve points. isOnsNameInput(name, parentName) gates the ONS path (depth-1 subnames of the parent in force). The Solana mirror primitives (fetchOnsMirrorRecord, getOnsMirrorRecordPda, onsNameHash, decodeOnsMirrorRecord, fetchSnsTxtRecord) live in @opaquecash/stealth-chain-solana.

Chain deployments

These getters read the generated @opaquecash/deployments registry; import that package directly for raw addresses, ABIs, and Solana program ids. See Deployments.

Indexer normalization


PSR codecs (@opaquecash/psr-core)


Chain adapters

Use adapters directly only when bypassing OpaqueClient.scan. Most apps should use client.scan. Starknet (testnet preview) ships its adapter and call builders in @opaquecash/stealth-chain-starknet, PSR proof-verification/gating helpers in @opaquecash/psr-chain-starknet, and resolves deployments via getStarknetDeployment("sepolia"). See Starknet.

Solana PSR (namespaced)

Avoids computeSchemaId name clash with psr-core:

Prover artifacts

Default Groth16 wasm/zkey URLs point to opaque.cash /circuits/....

Types reference