ZUL://DOCSPRIVACY LAYER 2 — SETTLED ON SOLANA
INDEX
INTERFACES — /docs/wallets

Wallets

ZUL rides Solana's wallet ecosystem instead of inventing one. Signing a transaction is chain-agnostic — a wallet signs bytes — so any wallet that implements the standard wallet-adapter interfaces can sign for ZUL. The dapp supplies the L2 connection; the wallet supplies signatures.

How dapps integrate

PATTERN
// the only ZUL-specific line is the RPC endpoint
const connection = new Connection(ZUL_RPC, "confirmed");

// wallet-adapter signs as usual; the dapp sends to the L2
const sig = await sendTransaction(tx, connection);
  • Balances and historyshown inside wallet UIs usually query the wallet's own (Solana mainnet) endpoints — they won't display L2 state. Dapps read ZUL state themselves through the RPCand show it in-app, the way this site's bridge does.
  • Fees are ZUL, so a fresh account needs gas before its first transaction — the faucet exists for exactly this (see Gas).

Shielded keys

Pool ownership uses its own key material (spending keys, viewing secrets for trial decryption) managed by the SDK's shielded client, with notes kept in an encrypted local store. v1 derives and stores these locally rather than asking wallets to understand pool semantics — wallet-native shielded accounts are a roadmap concern, not a protocol requirement.

Hardware wallets

SCOPE

Hardware-wallet connections (USB/WebHID transports) are explicitly out of scope across the ZUL web stack — by project policy, only software wallet-adapter wallets are targeted.

Want the chain visible inside a wallet UI? Backpack supports custom RPC endpoints per network — the screenshot walkthrough is in Add ZUL to Backpack.