# Wallet

Canonical: https://docs.projectbabbage.com/docs/guides/wallet

Practical guides for integrating BRC-100 wallet authentication, transactions, keys, encryption, signatures, permissions, and certificates.

Wallet guides cover the practical BRC-100 integration points your app will use after the first quickstart.

![BRC-100 wallet interface showing permissioned app access to transactions, baskets, keys, encryption, certificates, and network discovery](https://docs.projectbabbage.com/assets/images/docs/brc100-wallet-interface.webp)

Use `WalletClient` from `@bsv/sdk` as the normal app entry point:

```ts
import { WalletClient } from '@bsv/sdk'

const wallet = new WalletClient('auto')
await wallet.waitForAuthentication()
```

Then choose the guide for the capability you need.

<LinkCard title="Authentication" description="Sign HTTP requests with AuthFetch and verify them server-side." to="/docs/guides/wallet/auth" forceStyledRender={true} />

<LinkCard title="Transactions" description="Create, sign, abort, list, and internalize wallet actions." to="/docs/guides/wallet/transactions" forceStyledRender={true} />

<LinkCard title="Key Use" description="Request derived public keys and keep private keys inside the wallet." to="/docs/guides/wallet/key-use" forceStyledRender={true} />

<LinkCard title="Encryption" description="Encrypt and decrypt app data with wallet-controlled keys." to="/docs/guides/wallet/encryption" forceStyledRender={true} />

<LinkCard title="Signing" description="Create and verify signatures for app protocols." to="/docs/guides/wallet/signing" forceStyledRender={true} />

<LinkCard title="Permissions" description="Design permission prompts that are narrow, understandable, and revocable." to="/docs/guides/wallet/permissions" forceStyledRender={true} />

<LinkCard title="Certificates" description="Request, present, and verify selective identity proofs." to="/docs/guides/wallet/certificates" forceStyledRender={true} />

## Production Checklist

- Test with more than one BRC-100 wallet path where possible.
- Request only the minimum capability needed for the current feature.
- Explain permissions in product UI before the wallet prompt appears.
- Treat identity keys as stable technical identifiers, not human-readable names.
- Never ask users to paste seed phrases, private keys, or recovery material into your app.
- Link to the [wallet reference](https://bsv-blockchain.github.io/ts-sdk/reference/wallet/) for method-level details.
