getTransactionsForAddressでトランザクション履歴を読み込み、新しい活動をtransactionSubscribeを通じてライブでストリーミングします。最初に組み込みデモとして試し、その後フルのNext.jsアプリとして構築します。
ライブで試す
APIキーと任意のウォレットアドレスを貼り付けて、ポートフォリオ、履歴、ライブフィードの3つが一緒に動作する様子を確認してください。これはアプリがレンダリングする同じデータです。Next.jsアプリとして構築する
GitHubで完全なアプリを取得
完成したNext.jsアプリ — このウォークスルーからの完成したスターターをクローンして、すぐに使用可能です。
前提条件: Node.js 18+ および Helius APIキー。
1
プロジェクトのスキャフォールド
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
実行する
何が起こっているのか
ポートフォリオ全体を1回のDAS呼び出しで
getAssetsByOwnerとshowFungible: true、showNativeBalance: trueは、ファンジブルトークン、NFT(標準および圧縮)、およびネイティブSOL残高を単一のレスポンスで返すため、別々のgetBalanceまたはgetTokenAccountsByOwner呼び出しが不要です。トークンとNFTをグループ化するには、itemsをinterfaceで分割します。
それぞれのアイテムには独自のメタデータが含まれており、同じ呼び出しが両リストを強化します。名前には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にデプロイ。