Перейти к основному содержанию

Установка

Сборка клиента

Клиент со всеми заданными опциями:
У большинства из них есть разумные значения по умолчанию. Минимальная настройка:
Каждый метод принимает 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.

RequestRaw(ctx, body)

Отправить сырую строку тела JSON-RPC. Те же повторы и отказоустойчивость, что и у всего остального.

Полный пример

Программа, которая проверяет состояние сети, получает баланс SOL кошелька и ищет недавние транзакции.