メインコンテンツへスキップ
RPC の使用を最適化することで、パフォーマンスが大幅に向上し、コストが削減され、ユーザーエクスペリエンスが向上します。このガイドでは、効率的な Solana RPC のやり取りのための証明された技術を紹介します。

クイックスタート

トランザクション最適化

コンピュートユニット、優先料金、トランザクション送信を最適化

データ取得

アカウントとプログラムデータを効率的に取得するパターン

リアルタイムモニタリング

WebSocket サブスクリプションとストリーミングデータの最適化

ベストプラクティス

パフォーマンスガイドラインとリソース管理

トランザクション最適化

コンピュートユニット管理

1. 実際の使用量を判断するためにシミュレートする:
2. マージンを持たせて適切な制限を設定する:

優先料金の最適化

1. 動的料金見積もりを取得する:
2. 優先料金を適用する:

トランザクション送信のベストプラクティス

データ取得の最適化

強化されたページネーションメソッド (V2)

大規模なデータクエリには、新しい V2 メソッドをカーソルベースのページネーションで使用します:

⚡ パフォーマンス向上

getProgramAccountsV2getTokenAccountsByOwnerV2 は大規模データセットを扱うアプリケーションに重大なパフォーマンス改善を提供します:
  • 設定可能な制限: リクエストあたり1-10,000アカウント
  • カーソルベースのページネーション: 大規模クエリでのタイムアウトを防止
  • インクリメンタル更新: リアルタイム同期には changedSinceSlot を使用
  • メモリ使用の改善: 全てを一度に読み込む代わりにデータをストリームする
例: 効率的なプログラムアカウントクエリ
リアルタイムアプリケーションのためのインクリメンタル更新:

データ取得最適化

効率的なアカウントクエリ

トークン残高の確認

トランザクション履歴

完全なアドレス履歴を得るには、アドレス専用の getTransactionsForAddress メソッドを使います。この方法は、トークンのアカウント活動を含む完全なトランザクションデータを一度に返します(Helius専用)。

送金履歴

トークンやSOLの動きだけが必要な場合 - 支払い、ポートフォリオ活動、バランス調整 - は、getTransfersByAddress を使用します(Helius専用、Developer プラン以上が必要)。これは、オーナー、ミント、量、桁数が解決された解析済みの転送オブジェクトを返すため、トランザクションの解析を完全にスキップできます。
指針: 完全なトランザクションペイロードや非転送活動が必要な場合は getTransactionsForAddress を、台帳や支払い追跡のためのクリーンな転送記録が必要な場合は getTransfersByAddress を使用してください。

リアルタイムモニタリング

アカウントサブスクリプション

プログラムアカウントのモニタリング

トランザクションモニタリング

高度なパターン

スマート再試行ロジック

メモリ効率の良い処理

接続プーリング

パフォーマンスモニタリング

RPC使用量の追跡

ベストプラクティス

コミットメントレベル

  • 使用対象: WebSocket サブスクリプション、リアルタイム更新
  • レイテンシー: 約400ms
  • 信頼性: ほとんどのアプリケーションにとって良好

リソース管理

エラーハンドリング

避けるべき一般的な落とし穴

以下の一般的な間違いを避けてください:
  • WebSocket サブスクリプションを使わずにポーリングする
  • 必要な部分データのみで全体のアカウントデータを取得する
  • 複数のクエリに対してバッチ操作を使用しない
  • レート制限を無視し、適切な再試行ロジックを実装しない
  • finalized コミットメントを使用する場合に、confirmed が十分
  • サブスクリプションを閉じずにメモリリークを引き起こす

関連メソッド

このガイドで取り上げた最適化技術は、次の WebSocket と RPC メソッドを参考にしています:

getTransactionsForAddress

フィルタリング、ソート、トークンアカウントサポート付きの完全なトランザクション履歴 (Helius専用)

getTransfersByAddress

支払いと調整のための解析済みトークンと SOL 転送履歴 (Helius専用)

getTransaction

シグネチャで完全なトランザクション詳細を取得

getProgramAccounts

プログラムが所有するすべてのアカウントを取得

getTokenAccountsByOwner

ウォレットのトークンアカウントを取得

getMultipleAccountsInfo

複数のアカウント詳細をバッチで取得

getAccountInfo

単一のアカウント情報を取得

accountSubscribe

WebSocket 経由でアカウントの変更を購読

programSubscribe

WebSocket 経由でプログラムアカウントの変更を購読

logsSubscribe

WebSocket 経由でトランザクションログを購読

まとめ

これらの最適化技術を実装することで、以下を達成できます:
  • API コールボリュームの60-90%削減
  • リアルタイムオペレーションの大幅なレイテンシー削減
  • ターゲットクエリによる帯域幅使用量の削減
  • スマート再試行ロジックによるエラー耐性の向上
  • 効率的なリソース使用による運用コストの削減

次のステップ

これらの最適化を実装する準備は整いましたか?トランザクション固有のベストプラクティスについては、トランザクション最適化ガイド をご覧ください。