getTransactionsForAddress, exclusivo de Helius, y transmitirás la actividad nueva en vivo mediante transactionSubscribe. Primero lo probarás como una demostración integrada y luego lo crearás como una aplicación completa de Next.js.
Pruébalo en vivo
Pega tu clave de API y cualquier dirección de billetera para ver cómo funcionan juntas las tres partes: el portafolio, el historial y un feed en vivo. Estos son los mismos datos que renderizará tu aplicación.Créalo como una aplicación de Next.js
Grab the full app on GitHub
Clona el proyecto inicial completo: la aplicación de Next.js terminada de este tutorial, lista para
npm install && npm run dev.Requisitos previos: Node.js 18+ y una clave de API de Helius.
1
Scaffold the project
ws para el feed de WebSocket en vivo.Agrega tu clave a .env.local:.env.local
2
Proxy RPC calls through a route handler
Esto mantiene tu clave de API en el servidor. El cliente envía aquí un método y sus parámetros, y el manejador los ejecuta mediante el SDK de Helius, que adjunta tu clave y crea la solicitud por ti.
app/api/helius/route.ts
3
Relay the live feed over Server-Sent Events
El navegador no puede abrir un WebSocket de Helius sin la clave. En su lugar, abre el WebSocket en el servidor y transmite las firmas al cliente con SSE.
app/api/stream/route.ts
4
Render the dashboard
La página carga el portafolio y el historial mediante el proxy y luego se suscribe al feed de SSE para recibir actualizaciones en vivo.
app/page.tsx
5
Run it
Qué está sucediendo
Una llamada a DAS para todo el portafolio
getAssetsByOwner con showFungible: true e showNativeBalance: true devuelve tokens fungibles, NFT (estándar y comprimidos) y el saldo nativo de SOL en una sola respuesta, por lo que no necesitas llamadas separadas a getBalance ni getTokenAccountsByOwner. Divide items según interface para agrupar los tokens y los NFT por separado.
Cada elemento incluye sus propios metadatos, por lo que la misma llamada alimenta ambas listas. Usa content.metadata.name para el nombre e content.links.image para el logotipo o la imagen. Los tokens fungibles también incluyen un objeto token_info con los valores sin procesar balance, decimals e symbol. Divide balance entre 10 ** decimals para obtener la cantidad legible. No todos los tokens incluyen un nombre o logotipo, así que usa valores alternativos adecuados cuando falten.
Historial completo en una sola solicitud
getTransactionsForAddress devuelve el historial de transacciones de la billetera y, con filters.tokenAccounts: "balanceChanged", también incluye las transferencias de las cuentas de token asociadas de la billetera, una actividad que una llamada simple a getSignaturesForAddress no detectaría. Usa transactionDetails: "full" para obtener los datos completos de las transacciones en lugar de solo las firmas.
Actualizaciones en tiempo real sin sondeos
transactionSubscribe envía un mensaje cada vez que una transacción afecta a la billetera, por lo que nunca necesitas hacer sondeos. Agregar tokenAccounts: "balanceChanged" al filtro también permite detectar las cuentas de token de la billetera, de modo que las transferencias SPL entrantes aparezcan en el feed: la misma actividad que cuenta la llamada al historial. Retransmitir la suscripción mediante un manejador de rutas del servidor mantiene tu clave de API fuera del cliente.
Próximos pasos
getAssetsByOwner
Todas las opciones de visualización, la paginación y la estructura completa de la respuesta de activos.
getTransactionsForAddress
Filtrado avanzado por tiempo, slot, token, dirección y cantidad.
transactionSubscribe
Opciones de filtrado y estructura de la carga útil para el feed de WebSocket en vivo.
Deploy your own program
Siguiente recorrido: implementa un programa de Solana en devnet mediante Helius.