Skip to content
Chapters

Build

Wallets: the user should not have to install anything

The user installs nothing: embedded wallets, Wallet Standard and gas paid by the app.

The most expensive mistake in a demo: requiring an extension install and four signatures.

Option When How
Embedded wallet — Privy, Dynamic, Turnkey, Crossmint, Phantom Embedded A product for people who have no wallet Login with email, Google or passkey; the wallet creates itself. Privy and Phantom have native Solana support
Wallet Standard@solana/kit-plugin-wallet + @solana/react A product for people who already live in crypto (Phantom, Solflare, Backpack) It is what create-solana-dapp ships. Do not use @solana/wallet-adapter-* for new projects
Hybrid Most products Embedded by default, external as an option

Pay the gas for the user. A transaction costs 5,000 lamports in base fee per signature, charged even if it fails — a fraction of a cent: let the app pay it and the user never sees "you need SOL".

  • With Privy: feePayer pointing at a wallet in your backend; the client signs with the embedded wallet, the backend verifies the contents and signs as fee payer. Always verify the transaction in the backend before signing it: an authenticated session, program IDs and instructions on an allowlist, writable accounts, amounts, the expected fee payer, the cluster, and a per-user rate limit. An endpoint that signs whatever it is sent is an open wallet.
  • With Kora (cargo install kora-cli): a signing service that charges the fee in any token (USDC, your own) or subsidises it.

For the demo: leave an account already logged in and funded on devnet. Record a backup video the night before.