今天早些時候 @heliuslabs 推出了新的 RPC 方法 getTransactionsForAddress (gTFA) 讓我們來談談它的運作原理 Solana 交易通常參考 6-10 個帳戶(最多可達 ~256) 當你查詢 "給我帳戶 X 的歷史記錄" 時,你是在要求 RPC 掃描交易並找到那些在其帳戶列表中包含 X 的交易 這本質上是在大海撈針 你不能簡單地在 "accounts" 陣列上添加標準索引,因為在規模上,數據庫在索引可變長度陣列時會遇到困難 解決方案:我們建立了自己的索引,每個唯一的 (transaction, account) 配對都有一個條目 這可不是一件小事——目前有 ~4930 億筆交易(還在增長中) 我們的索引目前擁有超過 2.3 兆 (!) 行 儘管規模龐大,P50 查詢時間在生產負載下約為 ~8 毫秒 我們還有許多其他索引來支持按槽位、時間、狀態等查詢 所有這些都運行在專門構建的裸金屬主機上,配備了數PB的頂級 NVMEs,並在多個地區進行複製 簡而言之——我們受苦是為了讓你不必受苦 享受吧