# STRK20 by Example > Learn Starknet Privacy (STRK20) with runnable examples - privacy pools, notes and nullifiers, viewing keys, the Starknet Wallet API, anonymizer contracts, and wallet-builder SDK flows. Every page is available as raw Markdown at the .md URLs below; the full site in one file is at https://strk20-by-example.org/llms-full.txt. ## Concepts - [What is STRK20?](https://strk20-by-example.org/what-is-strk20.md) - An introduction to Starknet Privacy - confidential token transfers on a public chain - [Builder Privacy Overview](https://strk20-by-example.org/builder-privacy-overview.md) - Choose the right STRK20 integration path: Starknet Wallet API, anonymizer contracts, building privacy wallets, sub-accounts, or prover infrastructure. - [Notes & Nullifiers](https://strk20-by-example.org/notes-and-nullifiers.md) - The UTXO note model - how private balances are stored, spent and protected from double-spending - [Encryption & Viewing Keys](https://strk20-by-example.org/viewing-keys.md) - How viewing keys, domain-separated masking and ECDH on the STARK curve keep note data private - [Channels & Note Discovery](https://strk20-by-example.org/channels-and-subchannels.md) - Directional channels, per-token subchannels and the scan algorithm recipients use to find their notes - [Actions, Phases & Proofs](https://strk20-by-example.org/actions-and-proofs.md) - The phased action model, the per-token balance invariant, and how transactions are proven with Stwo - [Compliance & Auditing](https://strk20-by-example.org/compliance.md) - Selective disclosure via an auditor-escrowed viewing key, fund tracing, and known privacy limits ## Get Started : Build Private Applications - [Overview](https://strk20-by-example.org/overview.md) - A concise builder overview for choosing the right STRK20 integration route - [Anonymizer Contract Anatomy](https://strk20-by-example.org/helpers/privacy-invoke.md) - The privacy_invoke pattern - how the pool calls external contracts and credits open notes - [Swap Helper](https://strk20-by-example.org/helpers/swap-helper.md) - A DEX swap anonymizer contract - trade privately through any AMM using the balance-delta idiom - [Vesu Lending Helper](https://strk20-by-example.org/helpers/vesu-lending-helper.md) - Earn lending yield privately - the official reference helper for Vesu ERC-4626 vaults - [Escrow](https://strk20-by-example.org/helpers/escrow.md) - A deferred-delivery escrow anonymizer contract - send privately to someone who has not registered yet - [Starknet Wallet API](https://strk20-by-example.org/starknet-wallet-api/overview.md) - The standard route for private dapps on Starknet: ask a privacy-enabled wallet to shield, transfer, and withdraw via starknet.js. - [starknet-start](https://strk20-by-example.org/starknet-wallet-api/starknet-start-hook.md) - Use the starknet-start useStrk20 React hooks as a convenience wrapper over the Starknet Wallet API. - [starknet.js](https://strk20-by-example.org/starknet-wallet-api/starknet-js.md) - Call the Starknet Wallet API directly with starknet.js WalletAccountV6 for non-React apps or finer control. ## Build Privacy Wallets - [Getting Started](https://strk20-by-example.org/sdk/getting-started.md) - Build privacy wallets on Starknet with the low-level STRK20 SDK and createPrivateTransfers - [Register](https://strk20-by-example.org/sdk/register.md) - Register your viewing key in the privacy pool with the builder or autoRegister - [Deposit](https://strk20-by-example.org/sdk/deposit.md) - Approve the pool, then deposit public ERC-20 tokens into a private note - [Transfer](https://strk20-by-example.org/sdk/transfer.md) - Spend private notes and transfer an amount to a recipient, with change back to you - [Deposit + Transfer](https://strk20-by-example.org/sdk/deposit-transfer-surplus.md) - Deposit and transfer in one transaction, with surplusTo directing the remainder - [Withdraw](https://strk20-by-example.org/sdk/withdraw.md) - Withdraw private notes back to a public Starknet address as ERC-20 tokens - [Multi-Operation Batches](https://strk20-by-example.org/sdk/multi-op-batch.md) - Chain several operations on one token and several tokens in a single transaction - [Channels & Setup Requirements](https://strk20-by-example.org/sdk/setup-requirements.md) - Check what setup a recipient needs with discoverRequirement and open channels explicitly - [Discovering Notes](https://strk20-by-example.org/sdk/note-discovery.md) - Scan your channels for unspent notes with discoverNotes and discoverChannels - [Discovery Providers](https://strk20-by-example.org/sdk/discovery-providers.md) - Choose between IndexerDiscoveryProvider and ContractDiscoveryProvider - [Proving Configuration](https://strk20-by-example.org/sdk/proving-config.md) - Configure ProvingServiceProofProvider, pick provingBlockId, and submit proofs correctly ## Applications - [Anonymous Airdrop](https://strk20-by-example.org/app/anonymous-airdrop.md) - Placeholder page for anonymous airdrop examples ## Agent Tooling - [Agent Skill](https://strk20-by-example.org/agent-skill.md) - Let your coding agent plan and build an STRK20 integration for your app