Noções Básicas de Wallet
8 exemplos para você começar com wallets Solana - 5 básicos e 3 intermediários.
Pré-requisitos
Browsers precisam de extensão de wallet ou wallet mobile que implemente o Wallet Standard (antigo protocolo wallet-adapter). Seu dApp usa hooks de adapter - nunca toca secret keys.
Exemplos Básicos
1. Visão Geral do Wallet Standard
Wallets expõem connect, disconnect e signTransaction para apps registrados.
// Wallets register via window events - adapters discover them
console.log("Install Phantom or Solflare for browser signing");- Usuários custodiam keys; dApps solicitam assinaturas por ação.
- Conexão é opt-in por origin.
- Mobile usa deep links e MWA em vez de extensões.
2. Read-Only Sem Wallet
Use RPC para saldos antes de conectar.
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc(process.env.NEXT_PUBLIC_RPC_URL!);
const bal = await rpc.getBalance(address("PUBKEY")).send();- Páginas de marketing e explorers não precisam de wallet connect.
- Não bloqueie dados públicos atrás de connect.
- Mesmos padrões RPC de Noções Básicas @solana/kit.
3. UX de Fluxo de Connect
Mostre botão connect apenas quando ação exigir assinatura.
"use client";
export function ConnectHint() {
return <button type="button">Connect wallet to continue</button>;
}- Lazy-connect aumenta conversão vs modal na landing.
- Exiba endereço truncado após connect.
- Ofereça disconnect no menu de conta.
4. Aviso de Mismatch de Cluster
Rede da wallet deve corresponder ao RPC do app.
const CLUSTER = "devnet"; // document in UI footer- Mismatch Phantom devnet vs mainnet causa erros confusos de simulação.
- Mostre badge de cluster ativo no header.
- Bloqueie sends quando wallet reportar chain errada.
5. Aprovação de Transação
Wallets exibem efeitos legíveis antes de assinar.
// Build unsigned message in app; wallet signs after user confirms- Mantenha contagem de instructions razoável por aprovação.
- Simule antes de promptar quando possível.
- Decodifique erros para usuários após rejeição.
Exemplos Intermediários
6. Suporte Multi-Wallet
Deixe usuários escolher entre wallets instaladas.
// Wallet modal lists Phantom, Solflare, Backpack, etc.- Não hardcode uma marca de wallet.
- Descoberta Wallet Standard é automática com adapters.
- Teste com pelo menos duas wallets em QA.
7. Assinatura de Mensagem para Auth
Assinaturas off-chain provam controle de pubkey.
// wallet.signMessage(new TextEncoder().encode("Sign in to MyApp"))- Use mensagens estilo SIWS com domínio vinculado.
- Verifique ed25519 no servidor.
- Nunca trate assinatura sozinha como sessão eterna - expire tokens.
8. Caminho de Hardware Wallet
Ledger assina via proxy do app de wallet.
// User connects Ledger through Phantom/Solflare- Mais passos de confirmação - ajuste timeouts de UX.
- Blind signing deve estar desligado para programas desconhecidos.
- Veja Wallets Hardware e Mobile.
Versões do stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.