Раніше сьогодні @heliuslabs запустили новий метод RPC, getTransactionsForAddress (gTFA) Поговоримо про те, як це працює під капотом Транзакції Solana зазвичай стосуються 6-10 облікових записів (до ~256) коли ви запитуєте "отримати мені історію рахунку X", ви просите RPC просканувати транзакції та знайти ті, які включають X у свій список рахунків Це, по суті, спроба знайти голку в копиці сіна Ви не можете просто додати стандартний індекс до масиву "accounts" у масштабі – бази даних борються з індексацією масивів змінної довжини Рішення: ми створили власний індекс, з одним записом на унікальну пару (транзакція, рахунок) Це неабиякий подвиг – налічується ~493 мільярди транзакцій (і їх кількість постійно зростає) Наш індекс наразі налічує понад 2,3 трильйона (!) рядків незважаючи на розмір, час пошуку P50 становить ~8 мс при виробничому навантаженні І у нас є багато інших індексів для пошуку потужності за слотом, часом, статусом тощо всі вони працюють на спеціально створених хостах з голого металу з петабайтами першокласних NVME, відтворених у різних регіонах tldr – ми страждали, щоб вам не довелося Насолодитися