Zum Hauptinhalt springen
In diesem Leitfaden baust du ein Dashboard, das anzeigt, was eine beliebige Solana-Adresse hält und was sie gerade tut. Du rufst ihr vollständiges Portfolio aus Token, NFTs und SOL mit einem einzigen DAS-Aufruf ab, lädst den Transaktionsverlauf mit dem exklusiv bei Helius verfügbaren getTransactionsForAddress und streamst neue Aktivitäten live über transactionSubscribe. Probiere es zuerst als eingebettete Demo aus und baue es anschließend als vollständige Next.js-App.

Probiere es live aus

Füge deinen API key und eine beliebige Wallet-Adresse ein, um die drei Komponenten zusammen in Aktion zu sehen: Portfolio, Verlauf und Live-Feed. Deine App stellt dieselben Daten dar.

Baue es als Next.js-App

Grab the full app on GitHub

Klone das vollständige Starterprojekt – die fertige Next.js-App aus dieser Anleitung, bereit für npm install && npm run dev.
Das obige Widget ruft Helius direkt im Browser auf und legt dadurch deinen API key offen. In einer echten App speicherst du den Key auf dem Server. Diese Anleitung verwendet den Next.js App Router mit zwei Route-Handlern, damit dein Key niemals den Client erreicht: Einer leitet RPC-Aufrufe weiter, der andere überträgt den WebSocket-Feed als Server-Sent Events.
Voraussetzungen: Node.js 18+ und ein Helius API key.
1

Scaffold the project

Du verwendest das Helius SDK für die RPC-Aufrufe und ws für den Live-WebSocket-Feed.Füge deinen Key zu .env.local hinzu:
.env.local
2

Proxy RPC calls through a route handler

Dadurch bleibt dein API key auf dem Server. Der Client sendet eine Methode und Parameter hierher. Der Handler führt sie über das Helius SDK aus, das deinen Key anhängt und den request für dich erstellt.
app/api/helius/route.ts
3

Relay the live feed over Server-Sent Events

Der Browser kann ohne den Key keinen Helius-WebSocket öffnen. Öffne den WebSocket stattdessen auf dem Server und streame die Signaturen per SSE an den Client.
app/api/stream/route.ts
4

Render the dashboard

Die Seite lädt das Portfolio und den Verlauf über den Proxy und abonniert anschließend den SSE-Feed für Live-Updates.
app/page.tsx
5

Run it

Öffne http://localhost:3000, füge eine Wallet-Adresse ein und klicke auf Laden. Das Portfolio und der Verlauf werden sofort angezeigt. Der Live-Feed füllt sich, sobald neue Transaktionen die Wallet betreffen.

Was passiert hier?

Ein DAS-Aufruf für das gesamte Portfolio

getAssetsByOwner mit showFungible: true und showNativeBalance: true gibt fungible Token, NFTs (Standard-NFTs und komprimierte NFTs) sowie das native SOL-Guthaben in einer einzigen response zurück. Du brauchst daher keine separaten Aufrufe von getBalance oder getTokenAccountsByOwner. Teile items anhand von interface auf, um Token und NFTs getrennt zu gruppieren. Jedes Element enthält eigene Metadaten. Daher liefert derselbe Aufruf die Daten für beide Listen. Verwende content.metadata.name für den Namen und content.links.image für das Logo oder Bild. Fungible Token enthalten außerdem ein token_info-Objekt mit balance als Rohwert sowie decimals und symbol. Teile balance durch 10 ** decimals, um den lesbaren Betrag zu erhalten. Nicht jeder Token hat einen Namen oder ein Logo. Verwende daher sinnvolle Fallbacks, wenn diese Angaben fehlen.

Vollständiger Verlauf mit einem request

getTransactionsForAddress gibt den Transaktionsverlauf der Wallet zurück. Mit filters.tokenAccounts: "balanceChanged" enthält er außerdem Übertragungen über die zugehörigen Token-Konten der Wallet. Diese Aktivitäten würde ein einfacher Aufruf von getSignaturesForAddress nicht erfassen. Verwende transactionDetails: "full", um vollständige Transaktionsdaten statt nur Signaturen abzurufen.

Echtzeit-Updates ohne Polling

transactionSubscribe sendet jedes Mal eine Nachricht, wenn eine Transaktion die Wallet betrifft. Polling ist daher nicht nötig. Wenn du dem Filter tokenAccounts: "balanceChanged" hinzufügst, werden auch die Token-Konten der Wallet berücksichtigt. So erscheinen eingehende SPL-Übertragungen im Feed – dieselben Aktivitäten, die auch der Verlaufsaufruf erfasst. Wenn du das Abonnement über einen serverseitigen Route-Handler weiterleitest, bleibt dein API key vom Client fern.

Nächste Schritte

getAssetsByOwner

Alle Anzeigeoptionen, die Paginierung und die vollständige Struktur der Asset-response.

getTransactionsForAddress

Erweiterte Filterung nach Zeit, slot, Token, Richtung und Betrag.

transactionSubscribe

Filteroptionen und payload-Struktur für den Live-WebSocket-Feed.

Deploy your own program

Als Nächstes stellst du über Helius ein Solana-Programm im Devnet bereit.