Обзор
getTransactionsForAddress — эксклюзивный RPC-метод Helius, который возвращает историю транзакций адреса и поддерживает расширенную фильтрацию, гибкую сортировку и эффективную пагинацию. Он не входит в стандартный RPC Solana.
В отличие от getSignaturesForAddress, который возвращает только подписи и пропускает связанные токен-аккаунты, getTransactionsForAddress может за один вызов вернуть полные данные транзакций, включая активность связанных токен-аккаунтов (ATA) кошелька. Поэтому это самый быстрый способ получить полную историю адреса для ретроспективной загрузки, индексирования и аналитики.
Этот метод возвращает до 1 000 полных транзакций за вызов.
Flexible sorting
Сортируйте в хронологическом (сначала старые) или обратном порядке (сначала новые).
Advanced filtering
Фильтруйте по диапазонам времени, слотам, подписям, статусу и переводам токенов.
Full transaction data
Получайте полные сведения о транзакциях за один вызов без дополнительного запроса getTransaction.
Token accounts
Включайте транзакции для связанных токен-аккаунтов адреса.
Когда использовать
ИспользуйтеgetTransactionsForAddress, если вам нужны:
- Полная история токенов кошелька, включая связанные токен-аккаунты
- Быстрая ретроспективная загрузка одним вызовом для индексатора или конвейера данных
- Анализ транзакций и отчётность по времени или слотам
- Фильтрация по статусу для получения только успешных или только неудачных транзакций
- Хронологическое воспроизведение истории (сначала старые транзакции)
- Анализ запуска токена: первые транзакции выпуска и ранние держатели
- История пополнения кошелька и поиск контрагентов
- Отчёты для контроля соответствия требованиям и аудита за определённый период
getTransfersByAddress.
Поддержка сетей
Быстрый старт
1
Get your API key
Получите ключ API на панели управления Helius.
2
Query with advanced features
Получите все успешные транзакции кошелька между двумя датами, отсортированные хронологически:
3
Understand the parameters
В этом примере показаны основные возможности:
- transactionDetails: задайте
'full', чтобы получить полные данные транзакций за один вызов - sortOrder: используйте
'asc'для хронологического порядка (сначала старые) или'desc', чтобы сначала получить новые - filters.blockTime: задайте диапазоны времени с помощью
gte(больше или равно) иlte(меньше или равно) - filters.status: отфильтруйте только транзакции
'succeeded'или'failed' - filters.tokenAccounts: включите переводы, выпуски и сжигания для связанных токен-аккаунтов
Параметры запроса
string
обязательно
Закодированный в Base-58 публичный ключ аккаунта, для которого запрашивается история транзакций
string
по умолчанию:"signatures"
Уровень детализации возвращаемых транзакций:
signatures: основные сведения о подписи (быстрее)full: полные данные транзакции (устраняют необходимость в вызовах getTransaction, поддерживается лимит до 1 000)
string
по умолчанию:"desc"
Порядок сортировки результатов:
desc: сначала новые (по умолчанию)asc: сначала старые (хронологический порядок, удобен для анализа истории)
number
по умолчанию:"1000"
Максимальное количество возвращаемых транзакций:
- До 1000 при
transactionDetails: "signatures" - До 1000 при
transactionDetails: "full"
string
Токен пагинации из предыдущего ответа (формат:
"slot:position")string
по умолчанию:"finalized"
Уровень подтверждения:
finalized или confirmed. Уровень подтверждения processed не поддерживается.object
Расширенные параметры фильтрации для сужения результатов.
object
Фильтрация по номеру слота с помощью операторов сравнения:
gte, gt, lte, ltПример: { "slot": { "gte": 1000, "lte": 2000 } }object
Фильтрация по временной метке Unix с помощью операторов сравнения:
gte, gt, lte, lt, eqПример: { "blockTime": { "gte": 1640995200, "lte": 1641081600 } }object
Фильтрация по подписи транзакции с помощью операторов сравнения:
gte, gt, lte, ltПример: { "signature": { "lt": "SIGNATURE_STRING" } }string
Фильтрация по статусу успеха или сбоя транзакции:
succeeded: только успешные транзакцииfailed: только неудачные транзакцииany: успешные и неудачные транзакции (по умолчанию)
{ "status": "succeeded" }string
по умолчанию:"none"
Фильтрация транзакций для связанных токен-аккаунтов:
none: возвращать только транзакции, которые ссылаются на указанный адрес (по умолчанию)balanceChanged: возвращать транзакции, которые ссылаются на указанный адрес или изменяют баланс принадлежащего ему токен-аккаунта (рекомендуется)all: возвращать транзакции, которые ссылаются на указанный адрес или любой принадлежащий ему токен-аккаунт
{ "tokenAccounts": "balanceChanged" }object
Фильтрация транзакций, в которых запрашиваемый адрес участвовал в переводе токенов, соответствующем контрагенту, направлению, выпуску или диапазону необработанной суммы. Все поля необязательны и объединяются по логике AND.Пример:
{ "tokenTransfer": { "direction": "in", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }string
Адрес контрагента. Соответствует переводам, на другой стороне которых находится этот адрес.
string
по умолчанию:"any"
Фильтрация по направлению перевода относительно запрашиваемого адреса:
in: переводы, полученные запрашиваемым адресомout: переводы, отправленные запрашиваемым адресомany: входящие и исходящие переводы
string
Выпуск токена, по которому выполняется фильтрация.
object
Сравнение суммы с использованием необработанного значения в блокчейне, а не значения для интерфейса или значения с учётом десятичных знаков. Поддерживает
gt, gte, lt и lte.string
Формат кодирования данных транзакции (применяется только при
transactionDetails: "full"). Такой же, как в API getTransaction. Варианты: json, jsonParsed, base64, base58number
Задайте максимальную возвращаемую версию транзакции. Если параметр не указан, будут возвращены только устаревшие транзакции. Задайте
1, чтобы включить устаревшие транзакции, а также транзакции v0 и v1.number
Минимальный слот, в котором можно обработать запрос
Учёт использования
Успешные ответы учитываются в зависимости от возвращаемых данных:Ответ
Структура ответа зависит отtransactionDetails. Режим подписей возвращает компактные записи подписей, а полный режим — полные объекты транзакций и метаданных.
- Signatures Response
- Full Transaction Response
Поля ответа
Поле
transactionIndex доступно только в getTransactionsForAddress. Другие похожие конечные точки, такие как getSignaturesForAddress, getTransaction и getTransactions, не содержат этого поля.
В полном режиме meta представляет собой полный объект метаданных транзакции, структура которого идентична результату getTransaction. Он содержит preTokenBalances и postTokenBalances, поэтому изменения балансов токенов можно вычислять непосредственно из ответа без дополнительных вызовов — например, для обнаружения обменов.
Фильтры
Дляslot, blockTime и signature можно использовать операторы сравнения, а также специальные фильтры status, tokenAccounts и tokenTransfer. При объединении нескольких фильтров результат сужается до их пересечения.
Операторы сравнения
Эти операторы работают как запросы к базе данных и позволяют точно управлять диапазоном данных.Фильтры перечислений
Примеры объединённых фильтров:
Связанные токен-аккаунты
В Solana кошелёк не хранит токены напрямую. Вместо этого кошельку принадлежат токен-аккаунты, в которых и хранятся токены. Когда кто-либо отправляет вам USDC, они поступают на ваш токен-аккаунт USDC, а не на основной адрес кошелька. Этот метод уникален тем, что позволяет запрашивать полную историю токенов, включая связанные токен-аккаунты (ATA) кошелька. Нативные RPC-методы, такие какgetSignaturesForAddress, не включают ATA.
Фильтр tokenAccounts управляет этим поведением:
none(по умолчанию): возвращает только транзакции, которые напрямую ссылаются на адрес кошелька. Используйте этот вариант, если вас интересуют только прямые взаимодействия с кошельком.balanceChanged(рекомендуется): возвращает транзакции, которые ссылаются на адрес кошелька или изменяют баланс принадлежащего кошельку токен-аккаунта. Спам и несвязанные операции, такие как сбор комиссий или делегирование, исключаются, что позволяет получить чистое представление о значимой активности кошелька.all: возвращает все транзакции, которые ссылаются на адрес кошелька или любой принадлежащий ему токен-аккаунт.
tokenAccounts не поддерживает транзакции до декабря 2022 года. Он зависит от метаданных переводов токенов, добавленных в Solana в слоте 111,491,819. Для охвата более ранней активности см. обходное решение для исторических токен-аккаунтов.
Фильтр переводов токенов
ФильтрtokenTransfer сужает результаты до транзакций, в которых запрашиваемый адрес участвовал в переводе токенов, соответствующем определённым критериям: конкретному контрагенту, выпуску, направлению или диапазону суммы.
Используйте его, чтобы отвечать на такие вопросы:
- Когда этот кошелёк получил USDC от определённого контрагента?
- Покажите все исходящие переводы на сумму более 1 000 токенов.
- Когда этот кошелёк взаимодействовал с этим конкретным выпуском?
filters в конфигурации запроса:
tokenTransfer необязательны. Несколько полей объединяются по логике AND.
Операторы диапазона сумм:
Операторы сумм можно объединять, например
{ "gte": 1000000, "lte": 5000000 } для замкнутого диапазона. tokenTransfer сочетается с другими фильтрами верхнего уровня (slot, blockTime, status и tokenAccounts); итоговый результат представляет собой их пересечение.
Примеры
Аналитика по времени
Создайте ежемесячные отчёты по транзакциям:Создание выпуска токена
Найдите транзакцию создания выпуска для определённого токена:Транзакции пополнения
Найдите, кто пополнил определённый адрес:Переводы токенов
Выполните фильтрацию поtokenTransfer, чтобы выделить определённые перемещения токенов.
Поступления USDC на адрес:
Пагинация
Если количество транзакций превышает установленный лимит, используйтеpaginationToken из ответа, чтобы получить следующую страницу. Токен представляет собой простую строку в формате "slot:position", которая указывает API, откуда продолжить.
Используйте токен пагинации из каждого ответа для получения следующей страницы:
Несколько адресов
Нельзя запросить несколько адресов в одном запросе. Запрос каждого адреса считается отдельным запросом API и учитывается соответствующим образом. Чтобы получить транзакции для нескольких адресов, запросите каждый адрес в одном и том же временном окне или диапазоне слотов, а затем объедините и отсортируйте результаты:Рекомендации
Производительность. ИспользуйтеtransactionDetails: "signatures", если полные данные транзакций не нужны. Устанавливайте разумные размеры страниц для ускорения ответов и фильтруйте по диапазонам времени или конкретным слотам для более точных запросов.
Фильтрация. Начните с общих фильтров и постепенно сужайте результаты. Используйте временные фильтры для аналитики и создания отчётов. Объединяйте несколько фильтров для точных запросов по определённым типам транзакций или периодам времени.
Пагинация. Сохраняйте токены пагинации, если позже потребуется возобновить крупные запросы. Отслеживайте глубину пагинации при планировании производительности. Используйте порядок по возрастанию, когда нужно воспроизвести исторические события в хронологическом порядке.
Обработка ошибок. Корректно обрабатывайте ограничения частоты запросов с помощью экспоненциальной задержки. Проверяйте адреса перед отправкой запросов и при необходимости кэшируйте результаты, чтобы сократить использование API.
Ограничения и особые случаи
Небольшой набор адресов направляется в устаревший архив, ограничен резервным сканированием слотов или возвращает пустой результат. Для обнаружения токен-аккаунтов до слота 111,491,819 также требуется обходное решение. Разверните разделы ниже, чтобы получить полную информацию.Unsupported and specially-routed addresses
Unsupported and specially-routed addresses
Перенаправление в старый архив. Запросы для этих адресов направляются в нашу старую архивную систему.
Резервное сканирование слотов. Запросы для этих адресов перенаправляются в нашу новую архивную систему и доступны через последовательное сканирование слотов (не более 100 слотов). Однако эти данные не индексируются.
Возвращается пустой результат (
is_reserved_address). Запросы перенаправляются в нашу новую архивную систему, однако данные не индексируются, поэтому запросы возвращают пустой результат.Workaround: historical token account discovery (before slot 111,491,819)
Workaround: historical token account discovery (before slot 111,491,819)
Для адресов с активностью токен-аккаунтов до слота 111,491,819 фильтр
tokenAccounts не может определить владельца, поскольку поля owner в метаданных баланса токенов тогда ещё не существовало. Чтобы получить полные результаты, можно вручную обнаружить эти токен-аккаунты, разобрав инструкции ранних транзакций, а затем параллельно запросить getTransactionsForAddress для каждого из них.Чем этот метод отличается от getSignaturesForAddress?
Если вы знакомы со стандартным методомgetSignaturesForAddress, то getTransactionsForAddress объединяет многоэтапные процессы в один вызов и добавляет фильтрацию, сортировку и поддержку токен-аккаунтов. Пошаговое преобразование существующего кода описано в руководстве по миграции.
Получение полных транзакций одним вызовом
При использованииgetSignaturesForAddress нужны два шага:
getTransactionsForAddress достаточно одного вызова:
Получение истории токенов одним вызовом
При использованииgetSignaturesForAddress сначала нужно вызвать getTokenAccountsByOwner, а затем выполнить запрос для каждого токен-аккаунта:
getTransactionsForAddress достаточно задать filters.tokenAccounts:
Дополнительные возможности
Chronological sorting
Сортируйте транзакции от старых к новым с помощью
sortOrder: 'asc'.Time-based filtering
Фильтруйте по диапазонам времени с помощью фильтров
blockTime.Status filtering
Получайте только успешные или неудачные транзакции с помощью фильтра
status.Simpler pagination
Используйте
paginationToken вместо запутанных подписей before/until.Следующие шаги
Indexing guide
Используйте getTransactionsForAddress для ретроспективной загрузки и синхронизации индекса Solana.
getTransfersByAddress
Разобранная история только переводов для платежей и сверки.
API reference
Полная схема запроса и ответа для getTransactionsForAddress.
Historical data overview
Сравните все методы получения исторических данных Solana.