Установка
Сборка клиента
Клиент со всеми заданными опциями:context.Context, поэтому передайте контекст с крайним сроком, чтобы ограничить вызов:
Методы билдера
.URL(url) - Основной эндпоинт для отправки запросов. Если не задан, SDK читает переменную окружения ORBITFLARE_RPC_URL.
.URLs(urls...) - Задать основной и все резервные эндпоинты одним вызовом. Первый элемент - основной, остальные - резервные.
.FallbackURL(url) - Добавить один резервный эндпоинт. Вызывайте несколько раз, чтобы добавить несколько. При сбое основного SDK перебирает резервные по порядку.
.FallbackURLs(urls...) - То же, что FallbackURL, но принимает сразу несколько.
.APIKey(key) - Ваш лицензионный ключ OrbitFlare. Если не задан, SDK читает ORBITFLARE_LICENSE_KEY из окружения. Ключ подставляется в URL во время запроса, никогда не хранится в эндпоинте и не попадает в логи или ошибки.
.Commitment(level) - Уровень commitment по умолчанию для всех типизированных помощников. Варианты: "processed", "confirmed", "finalized". По умолчанию "confirmed".
.Retry(policy) - Управляет тем, как SDK повторяет неудавшиеся запросы. InitialDelay - ожидание перед первой повторной попыткой. Multiplier масштабирует задержку на каждой попытке. MaxDelay ограничивает backoff. MaxAttempts ограничивает общее число повторов (0 - бесконечно). По умолчанию: 100 мс начальная, 30 с максимум, множитель 2x, бесконечно.
.Timeout(duration) - HTTP-таймаут для каждого отдельного запроса. По умолчанию 30 секунд.
.Logger(logger) - *slog.Logger для повторов и отказоустойчивости запросов. Если не задан, логирование управляется переменной окружения ORBITFLARE_LOG (trace|debug|info|warn|error|silent, по умолчанию silent).
Доступные методы RPC
Типизированные помощники возвращают значения Go; всё остальное возвращаетjson.RawMessage, который вы можете разобрать в собственные типы.
GetSlot(ctx)
Возвращает номер текущего слота.
GetBalance(ctx, address)
Возвращает баланс аккаунта в lamports.
GetAccountInfo(ctx, address)
Возвращает полные данные аккаунта в виде json.RawMessage или nil, если аккаунт не существует. Данные в base64.
GetMultipleAccounts(ctx, addresses)
Получает несколько аккаунтов за один вызов. Автоматически разбивает на пакеты по 100 (лимит Solana на запрос), поэтому можно передать любое количество адресов.
GetLatestBlockhash(ctx)
Возвращает самый свежий blockhash и последнюю высоту блока, до которой он действителен.
GetTransaction(ctx, signature)
Получает подтверждённую транзакцию по её подписи. Возвращает полную транзакцию с метаданными в виде json.RawMessage.
GetSignaturesForAddress(ctx, address, limit)
Возвращает недавние подписи транзакций для адреса, начиная с новых.
GetProgramAccounts(ctx, programID)
Возвращает все аккаунты, принадлежащие программе. Может вернуть много данных.
GetRecentPrioritizationFees(ctx, addresses)
Возвращает недавние приоритетные комиссии для набора аккаунтов. Полезно для оценки цены compute unit.
SendTransaction(ctx, txBase64)
Отправляет подписанную транзакцию в сеть. Принимает сериализованную транзакцию в base64. Возвращает подпись транзакции.
SimulateTransaction(ctx, txBase64)
Симулирует транзакцию без отправки. Возвращает логи, потреблённые compute units и любые ошибки в виде json.RawMessage.
GetTokenAccountsByOwner(ctx, owner, mint, programID)
Возвращает токен-аккаунты кошелька. Передайте конкретный mint или ID токен-программы. Если обе строки пустые, используется программа SPL Token.
GetTransactionsForAddress(ctx, address, options)
Метод, специфичный для OrbitFlare, объединяющий getSignaturesForAddress и getTransaction в один вызов. Возвращает GetTransactionsResult со срезом Data и опциональным PaginationToken для получения следующей страницы.
Поддерживает четыре уровня детализации (signatures, none, accounts, full), двунаправленную сортировку, фильтрацию по времени/слоту, фильтрацию по статусу и включение токен-аккаунтов. options может быть nil для значений по умолчанию.
Request(ctx, method, params)
Вызвать любой RPC-метод по имени. SDK строит конверт JSON-RPC, выполняет повторы и отказоустойчивость и возвращает поле result в виде json.RawMessage.