本日初め、@heliuslabs新しいRPCメソッドであるgetTransactionsForAddress(gTFA)をリリースしました ボンネットの下でどのように機能するかについて話しましょう Solana トランザクションは通常、6-10 アカウント (最大 ~256) を参照します 「アカウント X の履歴を取得してください」とクエリすると、RPC にトランザクションをスキャンして、アカウントのリストに X を含むトランザクションを見つけるように依頼することになります これは本質的に干し草の山から針を見つけようとしているのです 「accounts」配列に標準インデックスを大規模に追加することはできません – データベースは可変長配列のインデックス作成に苦労します 解決策:一意の(トランザクション、アカウント)ペアごとに1つのエントリを持つ独自のインデックスを構築しました これは決して小さな偉業ではなく、~4,930億件の取引があります(そして増え続けています) 私たちのインデックスは現在、2兆3,000億(!)以上の行を保持しています サイズにもかかわらず、P50 のルックアップ時間は本稼動負荷下で ~8 ミリ秒です また、スロット、時間、ステータスなどで検索を強化するためのインデックスが他にもたくさんあります すべては、複数のリージョンにまたがってレプリケートされたペタバイト規模の最上位NVMEを備えた専用のベアメタルホスト上で実行されます TLDR – 私たちは苦しんだので、あなたはそうする必要はありません 楽しむ