概要: RPCリクエストは、アプリケーションがSolanaクラスターへアクセスするためのゲートウェイです。これらのリクエストは、コンセンサスへの参加よりもこのタスクに専念する、いわゆるRPCノードによって処理されます。それでも、アプリケーションユーザーの視点からすると、RPCのパフォーマンスが悪いことは、クラスターのパフォーマンスが悪いことと何ら変わりません。ユーザーに優れた体験を提供し、Solanaのスピードと低レイテンシを実感してもらうためには、タスクに適したRPCインフラストラクチャを整備することが重要です。
開発: 開発者は、特に初期段階やテスト時には、ローカルクラスターを使用することが推奨されます。ローカルクラスターは公開クラスターよりも柔軟性が高く、最適化されていない初期イテレーションを自由に実行できます。ローカルクラスターを実行する最も簡単な方法は、Solana CLIツールスイートに含まれるsolana-test-validatorバイナリを使用することです。アプリケーションが安定した状態になったら、公開クラスターへのデプロイがより適切になります。
すべてのコード最適化タスクと同様に、RPCリクエストに関しては、少ないほど良いのです。同じデータに対して頻繁に繰り返し呼び出しを行うことは避けてください。RPCリクエストを直接行うクライアントを構築しないでください。「バックエンドレスdApp」は神話です。他人のインフラストラクチャに負荷をかけているだけです。コストのかかる呼び出し(特にgetProgramAccount、getSignaturesForAddress2、getConfirmedBlock)をアプリに最適化された方法でキャッシュし、そのキャッシュからユーザーに提供してください。公開前にコードを最適化する時間を取ることで、ユーザー体験の悪さに関する報告から多くの頭痛を回避でき、インフラストラクチャ費用を大幅に削減できます。
複数のプロバイダーが、公開Solanaクラスターへの無料RPCアクセスを提供しています。これらのサービスは、実際の環境でのテスト、初期デモ、小規模なプライベートベータプログラムに適しています。ただし、無料で提供されるものはその分の価値しかないことを念頭に置いてください。無料サービスは通常、自動スケーリングを行わず、レート制限があり、SLAを提供せず、悪用者を躊躇なくバンします。アプリケーションを一般公開する準備ができたら、プライベートRPCアクセスへの投資を検討する時期です。
無料RPCプロバイダーの例:
Testnet
Devnet
Mainnet-beta
アプリケーション間でのRPC要件の変動性により、汎用的な公開RPCインフラストラクチャが要件を満たすことはほとんどありません。ユーザーに良好な体験を提供するために、公開アプリケーションは独自のプライベートRPCアクセスを確保する必要があります。これにより、ユーザーの需要に応じて自動スケーリングを行い、アプリケーションに応じてレート制限を緩和し、他のアプリケーションのユーザーが自分のユーザーを圧迫しないという安心感を得ることができます。複数の組織が高可用性でオンデマンドのRPCサービスを提供しています。以下をご参照ください。プロバイダーのいずれも適合せず、独自のRPCサービスを運用する準備ができている場合は、Solana Foundationにガイダンスをお問い合わせください。