Skip to main content
En esta guía, crearás un panel que muestra qué contiene cualquier dirección de Solana y qué está haciendo en este momento. Obtendrás su portafolio completo de tokens, NFT y SOL con una sola llamada a DAS, cargarás el historial de transacciones con 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.
El widget anterior llama a Helius directamente desde el navegador, lo que expone tu clave de API. En una aplicación real, debes mantener la clave en el servidor. Este tutorial usa el App Router de Next.js con dos manejadores de rutas para que tu clave nunca llegue al cliente: uno actúa como proxy para las llamadas RPC y el otro retransmite el feed de WebSocket como eventos enviados por el servidor.
Requisitos previos: Node.js 18+ y una clave de API de Helius.
1

Scaffold the project

Usarás el SDK de Helius para las llamadas RPC e 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

Abre http://localhost:3000, pega una dirección de billetera y haz clic en Load. Verás de inmediato el portafolio y el historial, y el feed en vivo se completará a medida que nuevas transacciones afecten a la billetera.

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.