Privacy capabilities
Three layers, kept apart.
What each privacy capability does, who it hides information from, and what stays public. Transactional controls are enabled only through a reviewed protocol adapter.
Screen privacy
AvailableMasks values on this device's screen. Toggle it in the top bar. It never changes what the public chain shows for an address.
Shielding through a protocol
Not configuredPrivacy integration not configured. PRIVACY_ADAPTER is not set.
What a pool hides
- • Which balance of a supported asset belongs to which address inside the protocol's pool
- • The amount and counterparty of a transfer made inside the pool
Still visible to
- • You, through the protocol's client-side notes and viewing keys
- • Anyone you hand a viewing key or proof to
- • The protocol's rules and any compliance screening it applies at entry or exit
Remains observable
- • The public deposit that moves tokens into the pool and the address that sent it
- • The public withdrawal that moves tokens out and the address that receives them
- • Pool-level totals, fees, and timing patterns
Limitations
- • Hiding a number on this screen is not shielding; the public chain still shows the balance
- • Shielding depends on the specific protocol, its audit status and its anonymity set
- • Entry and exit transactions can be correlated by timing and amount
Supported assets
None. A configured adapter reports which registry assets its pool accepts; without one, no asset can be shielded here.
What a reviewed adapter must provide
getSupportedAssets— which registry assets the pool acceptsgetPrivacyScope— hidden, visible-to, observable, limitationsgetDepositQuote— fees and public entry implicationsprepareDeposit/prepareWithdrawal— simulated, narrowly scoped callsgetPrivateBalance— from client-side notes, never a servergetTransactionStatus— pending, confirmed, reverted, rejected from chain evidence
The boundary lives in src/lib/privacy/adapter.ts. See the integration documentation for the registration rules.
Selective eligibility
Proving one requirement without publishing the identity file behind it is handled on the eligibility page, with its own provider boundary.
Open eligibility