Сегодня ранее @heliuslabs запустила новый метод RPC, getTransactionsForAddress (gTFA) давайте поговорим о том, как это работает под капотом транзакции solana обычно ссылаются на 6-10 аккаунтов (до ~256) когда вы запрашиваете "покажите мне историю аккаунта X", вы просите RPC просканировать транзакции и найти те, которые включают X в свой список аккаунтов это по сути попытка найти иголку в стоге сена вы не можете просто добавить стандартный индекс в массив "аккаунты" в больших масштабах – базы данных испытывают трудности с индексированием массивов переменной длины решение: мы создали свой собственный индекс, с одной записью на каждую уникальную пару (транзакция, аккаунт) это не простое дело – существует ~493 миллиарда транзакций (и это число растет) наш индекс в настоящее время содержит более 2,3 триллиона (!) строк несмотря на размер, время поиска P50 составляет ~8 мс под нагрузкой в производстве и у нас есть много других индексов для поддержки поиска по слоту, времени, статусу и т.д. все работает на специально созданных физических серверах с петабайтами первоклассных NVMEs, реплицированных в нескольких регионах короче говоря – мы страдали, чтобы вам не пришлось наслаждайтесь