Документация Solana RPC endpoint | ERPC

Документация Solana RPC endpoint

Используйте ERPC как ваш Solana RPC endpoint для HTTP JSON-RPC запросов и WebSocket подписок. Тот же эндпоинт Solana подходит для стандартных RPC methods, а API key можно получить и проверить в ERPC Dashboard.
Добавьте ваш API key в параметр api-key.
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>

Примеры:

Ниже приведен пример HTTP request.
bash
curl https://edge.erpc.global?api-key=<YOUR_API_KEY> --header 'Content-Type: application/json' --data '{
  "jsonrpc":"2.0","id":1,
  "method":"getBlockHeight"
}'
Ниже приведен пример подписки WebSocket. Host используется тот же, что и для HTTP.
text
wss://edge.erpc.global?api-key=<YOUR_API_KEY>
bash
# Example: subscribe to slot updates
wscat -c "wss://edge.erpc.global?api-key=<YOUR_API_KEY>"
# After connected, send:
{"jsonrpc":"2.0","id":1,"method":"slotSubscribe"}
Получить и проверить ваш API key можно в ERPC Dashboard: ERPC Dashboard
Если вам нужна latency ниже, чем у WebSocket, рассмотрите Geyser gRPC или ShredStream. Детали можно обсудить с нами в ERPC Dashboard.

History Access

Добавьте history=true к URL edge.erpc.global HTTP-запроса, чтобы искать более старые блоки и транзакции; значение должно быть строго true, в нижнем регистре. Кроме getTransactionsForAddress, запрос без history=true обслуживается из недавнего диапазона, который хранит каждая нода; опция применяется к этим методам:
  • getBlock
  • getBlockTime
  • getBlocks
  • getBlocksWithLimit
  • getTransaction, включая getParsedTransaction
  • getSignaturesForAddress
  • getSignatureStatuses, если searchTransactionHistory равен true
  • getTransactionsForAddress, если transactionDetails равен "full" (требуется History Access)
Укажите API key и опцию в URL как параметры запроса:
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>&history=true
Или передайте Authorization: Bearer <YOUR_API_KEY> как заголовок, а опцию оставьте в URL:
text
https://edge.erpc.global?history=true
Ниже приведен пример HTTP-запроса с использованием History Access.
bash
curl 'https://edge.erpc.global?history=true' \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
  "jsonrpc":"2.0","id":1,
  "method":"getBlock",
  "params":[<SLOT>,{"maxSupportedTransactionVersion":1}]
}'
Для всех методов, кроме getTransactionsForAddress в режиме "full":
  • Каждый вызов, обслуженный через History Access, стоит на 640 токенов больше обычной цены: getBlock стоит 42 + 640 = 682.
  • Доплата тоже применяется к результату null, пустому или частичному, полученному через History Access. Для неудавшегося поиска доплаты нет.
  • Вызов, обслуженный из недавних данных, сохраняет обычную цену, даже с history=true.
  • Batch считает каждый вызов отдельно; getSignatureStatuses считается один раз за вызов, а не за подпись.
  • Не используйте history=true при опросе недавних транзакций: к каждому null там применяется доплата.
Бесплатные лимиты, в том числе у тарифа Free, имеют ограничение для History Access. Тариф Free ограничен одним запросом с History Access в 10 секунд.
Вызов getTransactionsForAddress с transactionDetails, равным "full", относится к History Access — и для недавних, и для старых транзакций:
  • Вызов требует history=true в URL edge.erpc.global. Запрос без этой опции отклоняется с ошибкой History Access (код -32011) и ничего не стоит.
  • С history=true вызов стоит 420 + 640 × N токенов: обычная цена 420 плюс 640 за каждую из N полученных транзакций, недавних или старых. Строка без транзакции не учитывается.
  • Вызов нужно отправлять отдельным запросом. Batch, содержащий его, отклоняется — с history=true или без него: на каждый вызов в batch возвращается ошибка -32600 с сообщением This request is not available in a mixed JSON-RPC batch. Please send it as a separate request., и ни один из них не отправляется.
Режим signatures по умолчанию не требует history=true, и доплаты за него нет. Чтобы опрашивать адрес в поисках новых транзакций, используйте режим signatures и получайте нужные транзакции через getTransaction.
Поиск более старых блоков или транзакций может занимать намного больше времени, чем обычный запрос, — в некоторых случаях секунды. History Access — отдельная опция, которая отделяет такие поиски от обычных запросов, чтобы обычные запросы оставались быстрыми.
Без history=true запрос getBlock или getBlockTime для более старого слота может вернуть такую ошибку:
json
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32011,
    "message": "This request needs history access. Add history=true to the endpoint URL.",
    "data": {
      "erpcCode": "ERPC_HISTORY_OPTION_REQUIRED"
    }
  },
  "id": 1
}
getTransaction, getParsedTransaction и getSignatureStatuses (с searchTransactionHistory: true) возвращают null для подписи старше, чем хранит нода, а getSignaturesForAddress, getBlocks и getBlocksWithLimit возвращают пустой или частичный результат.
Запрос с history=true может вернуть такие сообщения:
  • This plan has reached its limit for history access. Add a paid plan to use tokens for history access. — показывается, когда бесплатный лимит, например у тарифа Free, достигает ограничения.
  • History access is unavailable while your token balance is low. Add tokens. — показывается на платном тарифе, когда баланс токенов низкий.
  • On the Free plan, history access is limited to one request per 10 seconds. Slow down or use a paid plan. — показывается на тарифе Free, когда запросы с History Access приходят слишком быстро.

Solana RPC Methods и документация

Полный список methods, parameters и спецификаций subscriptions доступен в официальной документации. Она охватывает и HTTP, и WebSocket usage для Solana RPC.