Conceptos básicos de la billetera
8 ejemplos para empezar con las billeteras de Solana: 5 básicos y 3 intermedios.
Requisitos previos
Los navegadores necesitan una extensión de billetera o una billetera móvil que implemente el Estándar de Billetera (anteriormente protocolo wallet-adapter). Tu dApp utiliza hooks de adaptador; nunca toca claves secretas.
Ejemplos básicos
1. Descripción general del Estándar de Billetera
Las billeteras exponen connect, disconnect y signTransaction a las aplicaciones registradas.
// Las billeteras se registran a través de eventos de ventana - los adaptadores las descubren
console.log("Instala Phantom o Solflare para firmar en el navegador");- Los usuarios custodian las claves; las dApps solicitan firmas por acción.
- La conexión es opcional por origen.
- Los móviles utilizan enlaces profundos y MWA en lugar de extensiones.
2. Solo lectura sin billetera
Utiliza RPC para obtener 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();- Las páginas de marketing y los exploradores no necesitan conexión de billetera.
- No limites los datos públicos detrás de la conexión.
- Los mismos patrones RPC que los Conceptos básicos de @solana/kit.
3. Experiencia de usuario del flujo de conexión
Muestra el botón de conexión solo cuando la acción requiere firma.
"use client";
export function ConnectHint() {
return <button type="button">Conecta la billetera para continuar</button>;
}- La conexión diferida aumenta la conversión en comparación con el modal de aterrizaje.
- Muestra la dirección truncada después de la conexión.
- Ofrece desconexión en el menú de cuenta.
4. Advertencia de desajuste de clúster
La red de la billetera debe coincidir con la RPC de la aplicación.
const CLUSTER = "devnet"; // documentar en el pie de página de la UI- El desajuste entre devnet y mainnet de Phantom causa errores de simulación confusos.
- Muestra una insignia del clúster activo en la cabecera.
- Bloquea envíos cuando la billetera informa de una cadena incorrecta.
5. Aprobación de transacción
Las billeteras muestran efectos legibles por humanos antes de firmar.
// Construye el mensaje sin firmar en la aplicación; la billetera firma después de que el usuario confirma- Mantén un número razonable de instrucciones por aprobación.
- Simula antes de solicitar cuando sea posible.
- Decodifica errores para los usuarios después del rechazo.
Ejemplos intermedios
6. Soporte multi-billetera
Permite a los usuarios elegir entre las billeteras instaladas.
// El modal de billetera lista Phantom, Solflare, Backpack, etc.- No codifiques una sola marca de billetera.
- El descubrimiento del Estándar de Billetera es automático con los adaptadores.
- Prueba con al menos dos billeteras en QA.
7. Firma de mensajes para autenticación
Las firmas fuera de la cadena prueban el control de la clave pública.
// wallet.signMessage(new TextEncoder().encode("Inicia sesión en MyApp"))- Utiliza mensajes al estilo SIWS vinculados al dominio.
- Verifica ed25519 en el servidor.
- Nunca trates la firma sola como una sesión permanente; expira los tokens.
8. Ruta de billetera de hardware
Ledger firma a través de un proxy de aplicación de billetera.
// El usuario conecta Ledger a través de Phantom/Solflare- Más pasos de confirmación: ajusta los tiempos de espera de la experiencia de usuario.
- La firma ciega debe estar desactivada para programas desconocidos.
- Ver Billeteras de hardware y móviles.
Versiones de la pila: Esta página fue 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 y LiteSVM 0.6.x.