メインコンテンツへスキップ
このガイドでは、任意のSolanaアドレスが何を保持しているか、現在何をしているかを表示するダッシュボードを構築します。トークン、NFT、SOLの完全なポートフォリオを単一のDAS呼び出しで取得し、Helius専用のgetTransactionsForAddressでトランザクション履歴を読み込み、新しい活動をtransactionSubscribeを通じてライブでストリーミングします。最初に組み込みデモとして試し、その後フルのNext.jsアプリとして構築します。

ライブで試す

APIキーと任意のウォレットアドレスを貼り付けて、ポートフォリオ、履歴、ライブフィードの3つが一緒に動作する様子を確認してください。これはアプリがレンダリングする同じデータです。

Next.jsアプリとして構築する

GitHubで完全なアプリを取得

完成したNext.jsアプリ — このウォークスルーからの完成したスターターをクローンして、すぐに使用可能です。
上記のウィジェットはブラウザからHeliusに直接呼び出しを行い、APIキーが公開されてしまいます。実際のアプリではキーをサーバーに保存します。このウォークスルーではNext.jsのApp Routerを使用し、2つのルートハンドラーを使用してキーがクライアントに届かないようにします。1つはRPC呼び出しをプロキシし、もう1つはWebSocketフィードをServer-Sent Eventsとしてリレーします。
前提条件: Node.js 18+ および Helius APIキー
1

プロジェクトのスキャフォールド

RPC呼び出しにはHelius SDKを使用し、ライブWebSocketフィードにはwsを使用します。キーを.env.localに追加します:
.env.local
2

ルートハンドラーを経由してRPC呼び出しをプロキシする

これにより、APIキーはサーバーサイドに留まります。クライアントはここにメソッドとパラメータを投稿し、ハンドラーがHelius SDKを通じて実行し、あなたのキーを添付し、リクエストを構築します。
app/api/helius/route.ts
3

ライブフィードをServer-Sent Events経由でリレーする

ブラウザはキーなしでHelius WebSocketを開けません。代わりに、サーバーでWebSocketを開き、署名をクライアントにSSEでストリームします。
app/api/stream/route.ts
4

ダッシュボードをレンダリングする

ページはプロキシを通じてポートフォリオと履歴を読み込み、その後SSEフィードにサブスクライブしてリアルタイム更新を受け取ります。
app/page.tsx
5

実行する

http://localhost:3000 を開き、ウォレットアドレスを貼り付け、「Load」をクリックします。ポートフォリオと履歴がすぐに表示され、新しいトランザクションがウォレットに関わるとライブフィードが更新されます。

何が起こっているのか

ポートフォリオ全体を1回のDAS呼び出しで

getAssetsByOwnershowFungible: trueshowNativeBalance: trueは、ファンジブルトークン、NFT(標準および圧縮)、およびネイティブSOL残高を単一のレスポンスで返すため、別々のgetBalanceまたはgetTokenAccountsByOwner呼び出しが不要です。トークンとNFTをグループ化するには、itemsinterfaceで分割します。 それぞれのアイテムには独自のメタデータが含まれており、同じ呼び出しが両リストを強化します。名前にはcontent.metadata.name、ロゴやアートワークにはcontent.links.imageを使用します。ファンジブルトークンには、名前やロゴがない場合があるため、それに備えて適切に対処してください。

単一のリクエストで完全な履歴

getTransactionsForAddressはウォレットのトランザクション履歴を返し、filters.tokenAccounts: "balanceChanged"を使用すると、ウォレットの関連トークンアカウントでの転送も含まれます。これにより、通常のgetSignaturesForAddressが見逃すアクティビティも含まれます。完全なトランザクションデータを取得するには、transactionDetails: "full"を使用します。

ポーリングなしでリアルタイム更新

transactionSubscribeは、トランザクションがウォレットに触れるたびにメッセージをプッシュするので、ポーリングは不要です。フィルタにtokenAccounts: "balanceChanged"を追加すると、ウォレットのトークンアカウントも一致し、着信SPL転送がフィードに表示されます。このサブスクリプションをサーバーサイドのルートハンドラーを通じてリレーすると、APIキーがクライアントに届かないようにします。

次のステップ

getAssetsByOwner

すべての表示オプション、ページネーション、完全なアセットレスポンスの形状。

getTransactionsForAddress

時間、スロット、トークン、方向、および量による高度なフィルタリング。

transactionSubscribe

ライブWebSocketフィードのフィルタオプションとペイロード形状。

独自のプログラムをデプロイ

次のトラック: Heliusを通じてSolanaプログラムをdevnetにデプロイ。