FAQ - Geyser gRPC Stream

Q. В каких регионах расположены ваши ноды?

Сейчас мы эксплуатируем ноды в следующих регионах:
  • Frankfurt (FRA)
  • Amsterdam (AMS)
  • London (LON)
  • New York (NY)
  • Tokyo (TY)
  • Singapore (SGP)
  • Sydney (SYD)
ERPC измеряет фактическую сетевую задержку по реальным маршрутам и автоматически выбирает регион с наименьшей задержкой, а не ориентируется на расстояние по прямой. Такой подход не только снижает задержку для отдельных пользователей, но и повышает общую эффективность сети и усиливает глобальную устойчивость ERPC к потенциальным атакам.
Если в вашей среде оптимальный регион не выбирается автоматически, свяжитесь с нами через ERPC Web Dashboard.

Q. Задержка показывает 9999ms и выбирается неоптимальный регион. Что делать?

Для выбора региона gRPC ERPC отправляет ICMP-запросы для измерения задержки на зарегистрированный вами IP-адрес с перечисленных ниже прокси-хостов. Разрешите входящие эхо-запросы ICMP со всех указанных исходных IP-адресов. Если их блокирует межсетевой экран (ufw, облачный межсетевой экран, группа безопасности и т. д.), результат измерения может составить 9999ms, и может быть выбран неоптимальный регион. Несколько IP-адресов в одном регионе относятся к разным хостам проверки; необходимо разрешить их все.
РегионИсходные IP-адреса ICMP
🇳🇱 Amsterdam82.21.43.34, 151.244.92.36
🇺🇸 New York151.243.244.5
🇩🇪 Frankfurt151.241.178.20, 151.241.178.34, 151.241.178.21
🇬🇧 London151.241.65.4
🇯🇵 Tokyo143.20.238.66
🇸🇬 Singapore151.245.186.2
🛰️ Far Point143.20.238.73

Q. Я добавил IP в allowlist, но подключение всё равно не работает. Что проверить?

ERPC gRPC и Shreds endpoints используют обычный HTTP на порту 80, защищённый IP allowlist. Они не используют HTTPS/TLS на порту 443.
Если вы копируете пример клиента другого провайдера, в нём по умолчанию может быть :443 или HTTPS. Если заменить только домен, порт и TLS-настройки могут остаться прежними, и подключение не заработает.
Endpoints ниже приведены как примеры. Замените их на свой endpoint, показанный в dashboard. Используйте его в HTTP-формате или явно укажите порт 80, если клиент требует host и port:
Обычный gRPC
  • Неверно: grpc-fra1-1.erpc.global:443
  • Верно: grpc-fra1-1.erpc.global:80
  • Верный URL-формат: http://grpc-fra1-1.erpc.global
Burst gRPC
  • Неверно: grpc-fra1-burst.erpc.global:443
  • Верно: grpc-fra1-burst.erpc.global:80
  • Верный URL-формат: http://grpc-fra1-burst.erpc.global
Аутентификация основана на зарегистрированном IP-адресе. Не добавляйте headers x-token, token или Authorization для ERPC gRPC или Shreds endpoints, если это явно не указано на конкретной странице продукта.

Q. Что такое Geyser gRPC Burst?

Geyser gRPC Burst — это shared gRPC-уровень ERPC с низкой задержкой для чувствительных к задержке потоковых нагрузок Solana. Он предоставляет тот же интерфейс Yellowstone/Geyser gRPC, что и обычный gRPC-сервис, включая подписки на account, transaction, slot и block, но использует выделенную для Burst региональную инфраструктуру.
Сейчас Burst работает в Frankfurt, Amsterdam и New York. Система выбирает лучший доступный регион Burst для вашего зарегистрированного IP на основе реальных измерений задержки.

Q. Какие IP нужно разрешить для Burst gRPC?

Burst использует перечисленные выше региональные источники ICMP-проверок для выбора региона по задержке. Указанные ниже адреса — это IP-адреса клиентских конечных точек Burst, а не источники ICMP-проверок; разрешайте их только в том случае, если ваш межсетевой экран для исходящего трафика ограничивает подключения к выбранной конечной точке.
RegionBurst DomainIP Address
🇩🇪 Frankfurtgrpc-fra1-burst.erpc.global64.130.41.234
🇳🇱 Amsterdamgrpc-ams1-burst.erpc.global64.130.55.180
🇺🇸 New Yorkgrpc-ny6-burst.erpc.global64.130.59.217
Если перечисленные выше источники ICMP-проверок заблокированы, ERPC Dashboard может показывать 9999ms, а Burst может выбрать неоптимальный регион. Блокировка адреса конечной точки Burst влияет на подключение клиента, а не на измерение задержки.

Q. Burst — это то же самое, что Direct Shreds или ShredStream?

Нет. Burst — это полноценный Yellowstone/Geyser gRPC поверх стандартного интерфейса gRPC. Он подходит, когда вам нужны потоки block, slot, transaction или account из gRPC-клиента.
Direct Shreds / ShredStream — это отдельный продукт на основе UDP для сырых данных shred, и он может быть предпочтительнее, когда приоритетом является максимально ранний путь к данным до формирования блока. Эти два продукта обслуживают разные интерфейсы и нагрузки.

Q. Раньше я использовал только WebSocket. Могу ли я использовать gRPC? Есть примеры?

Да. Вы можете быстро протестировать gRPC и начать разработку с помощью SLV.
Для shared endpoint, который можно проверить без токена, выполните:
bash
slv check grpc --endpoint <YOUR_ENDPOINT> --token none
Подробности смотрите в нашем руководстве по быстрому старту gRPC.

Q. Можно ли зарегистрировать два IP-адреса?

На одну подписку можно использовать один endpoint. Если вам нужны два IP-адреса, потребуется оформить две отдельные подписки.

Q. Есть ли ограничения на фильтры?

В Shared Geyser gRPC действуют меры разумного использования, чтобы один stream не потреблял ресурсы, нужные другим клиентам ERPC. По текущему правилу Shared отклоняется любая непустая map blocks, в том числе узкий запрос блоков. Каждый фильтр account должен содержать account, owner или поддерживаемый cuckoo filter; одних memcmp или dataSize недостаточно.
Уберите отклонённую форму и подпишитесь только на данные, нужные приложению. Подписка на transactions или metadata block может подойти без передачи полного block. Dedicated Geyser gRPC подходит, когда легитимная нагрузка выходит за рамки Shared по форме или ресурсам; он не делает невалидные параметры валидными и не исправляет медленный client.

Q. Как собрать ошибку gRPC до повторного подключения?

Сохраните первую ошибку до того, как цикл переподключения заменит её. Запишите status и message gRPC из initial metadata и trailers вместе с x-erpc-error-code, x-erpc-error-reason и x-erpc-doc-url. Когда ERPC сообщает о паузе, запишите также x-erpc-retry-after-seconds и x-erpc-retry-at (Unix seconds).
Ошибка может выглядеть так: ERPC [STREAM_GUARD_SLOW_READER]: .... Вставьте отображённую ошибку или её code в поиск FAQ. Каноническое объяснение есть в FAQ ERPC gRPC. Не рассчитывайте на получение trailer, если соединение закрылось досрочно.
Можно искать и по симптому: медленный получатель, отключение, пропускная способность, задержка доставки, backlog, пауза, повтор, неверный аргумент, ресурс исчерпан, доступ запрещён, регистрация IP, слишком много streams, полные blocks или все accounts.

Q. Мой получатель медленный: что означает STREAM_GUARD_SLOW_READER с ResourceExhausted (8)?

ERPC увидела недостаточный прогресс записи или задержку доставки в этом stream. Одна только задержка доставки не определяет причину. Проверьте потери в сети, фактическую пропускную способность, возможности host и успевает ли consumer приложения. Сузьте подписанные данные и вынесите обработку из цикла приёма в ограниченную очередь. Ограниченная очередь сдерживает использование памяти, но не исправляет постоянно медленный consumer. Если ERPC вернула срок retry, дождитесь его до переподключения.

Q. Что означает STREAM_GUARD_EGRESS_BUDGET с ResourceExhausted (8)?

Совокупный трафик IP превысил лимит Shared, поэтому связанные streams могут закрыться вместе. Уменьшите объём данных и ненужные параллельные streams и дождитесь возвращённого срока. Эта egress-пауза длится 600 секунд и не продвигает лестницу штрафов, хотя уже действующая более длинная пауза может сохраниться.

Q. Что означает STREAM_GUARD_PENALTY_ACTIVE с ResourceExhausted (8)?

Предыдущая пауза из-за медленного reader или egress всё ещё активна. Сохраните первую ошибку ERPC, устраните причину и дождитесь возвращённого срока; не переподключайтесь раньше для проверки. Первое учитываемое нарушение — предупреждение. Следующее нарушение в первом часовом окне запускает паузу на 60 секунд; следующие ступени — 300, 1800 и 86400 секунд. Отключение короче 60 секунд относится к тому же инциденту. Возвращённый срок retry является окончательным.

Q. Что означает STREAM_GUARD_SHAPE_BLOCKS с PermissionDenied (7)?

Текущее правило Shared отклоняет любую непустую map blocks, даже при узком запросе. Удалите map blocks. Используйте transactions и/или metadata block, когда они отвечают задаче; ни то ни другое не заменяет полный block. Для полных blocks нужен Dedicated Geyser gRPC; это не означает, что для Shared доступен план выборочных blocks.

Q. Что означает STREAM_GUARD_SHAPE_ACCOUNTS_ALL с PermissionDenied (7)?

Элемент фильтра account должен выбирать данные через account, owner или поддерживаемый cuckoo filter. Одних memcmp и dataSize недостаточно. Ограничьте запрос account одной из этих поддерживаемых форм или используйте Dedicated Geyser gRPC, когда нужен полный stream accounts.

Q. Что означает STREAM_GUARD_SHAPE_REJECT_PENALTY с ResourceExhausted (8)?

Повторные отклонённые или невалидные subscriptions вызвали паузу. Исправьте исходный запрос, сохраните его первую ошибку ERPC и дождитесь возвращённого срока. Раннее закрытие соединения может выглядеть как transport error, поэтому сохраните первую ошибку ERPC до того, как цикл переподключения её скроет.

Q. Что означает STREAM_ADMISSION_LIMIT_REACHED с ResourceExhausted (8)?

Ёмкость admission сейчас заполнена. Закройте неиспользуемые или дублирующиеся streams, проверьте выделенную ёмкость для соединения и повторите попытку, когда появится capacity. Этот ответ сам по себе не означает, что активен штраф с таймером.

Q. Что означает STREAM_ADMISSION_IP_NOT_ADMITTED с PermissionDenied (7)?

ERPC не смогла допустить соединение, в том числе после окончания льготного периода регистрации IP. Сравните фактический исходящий IP с зарегистрированным IP и подтвердите текущий статус доступа. Дайте изменению регистрации распространиться, не предполагая фиксированное время, и обратитесь в поддержку, если состояние сохраняется.

Q. Что означает STREAM_ADMISSION_SOURCE_UNAVAILABLE с Unavailable (14)?

ERPC не смогла определить источник этого соединения в тот момент. Используйте backoff и попробуйте позже. Если это продолжается, обратитесь в поддержку с первой ошибкой и её metadata; ответ не доказывает неисправность сети или сервера клиента.

Q. Что означает STREAM_ADMISSION_SNAPSHOT_UNAVAILABLE с Unavailable (14)?

ERPC не смогла проверить доступ в тот момент. Используйте backoff и попробуйте позже, а при продолжении обратитесь в поддержку. Повторная регистрация, расширение filters или покупка Dedicated Geyser gRPC не исправляют этот ответ о доступности.

Q. Что означает ERPC_GRPC_INVALID_ARGUMENT с InvalidArgument (3)?

Запрос содержит неверные параметры, options, types полей, keys или комбинации filters. Исправьте запрос до повтора. Повторные невалидные запросы могут повлиять на существующую лестницу отклонений, а Dedicated Geyser gRPC не делает невалидные параметры валидными.
В сообщении об ошибке сразу после кода следует (reason: <token>), и тот же токен возвращается в заголовке ответа x-erpc-error-reason. Найдите токен ниже, чтобы увидеть, что изменить. Если действует лимит, он указан в сообщении об ошибке.
ReasonЧто это значитЧто изменить
too_many_filtersВ запросе больше именованных фильтров или data slice, чем допускает один запрос.Используйте в запросе меньше именованных фильтров (или data slice) этого типа.
empty_filterУ фильтра нет ни одного адреса, а пустой фильтр означает «всё».Укажите в каждом фильтре хотя бы один адрес (accounts: account или owner; транзакции: список account). Shared gRPC не обслуживает пустой фильтр.
too_many_addressesВ одном поле фильтра указано слишком много адресов.Укажите в одном поле фильтра меньше адресов: разнесите их по разным фильтрам или сократите список.
address_not_allowedВ фильтре указан адрес, который Shared gRPC не разрешает.Уберите из фильтра этот адрес с высоким трафиком.
filter_name_too_longИмя фильтра слишком длинное.Используйте более короткие имена фильтров (ключи map).
invalid_commitmentНедопустимый уровень commitment.Используйте processed, confirmed или finalized.
invalid_addressВ фильтре есть недопустимый адрес.Каждый адрес должен быть корректным адресом Solana в base58 (без пустых строк, пробелов и неверной длины).
invalid_signatureНедопустимое значение подписи транзакции.Используйте корректную подпись транзакции в base58.
invalid_account_data_filterНедопустимый фильтр данных account.Исправьте фильтры memcmp, datasize и данных token account и держите их число в пределах лимита из сообщения.
invalid_data_sliceНедопустимые data slice.Отсортируйте data slice по offset и не допускайте их перекрытия.
blocks_include_not_allowedПараметры подписки blocks недоступны в Shared gRPC.Не указывайте blocks, используйте подписку на транзакции или blocks_meta.
invalid_token_accounts_modeНедопустимый режим token accounts.Используйте ALL (0) или BALANCE_CHANGED (1).
invalid_argumentНи одна из причин выше не подходит.Проверьте фильтр и параметры запроса перед повторной попыткой.

Q. Что означает ERPC_GRPC_REQUEST_FAILED, когда gRPC возвращает другой ненулевой status?

Запрос завершился неудачей с валидным status gRPC, который определяет следующий шаг. Исправьте запрос с OutOfRange (11), если исторический диапазон невалиден; используйте backoff для status доступности, такого как Unavailable (14). Не считайте каждый ненулевой status временным и не повторяйте каждый ответ без изменений.

Q. Какой регион вы рекомендуете?

Единственного постоянно лучшего региона нет. Solana — глобальная сеть, и роль лидера переходит от валидатора к валидатору с каждым slot. В регионах с большим числом валидаторов и более крупным stake leader slots выпадают чаще, что может помочь транзакциям быстрее попадать в блок. Обратная сторона в том, что конкурирующий трафик концентрируется там же, поэтому менее загруженный регион иногда может дать лучший результат в зависимости от вашей стратегии.
Практичная отправная точка такая: если важнее всего стабильный поток leader slots, выбирайте регион с высокой плотностью валидаторов, например Frankfurt или Восточное побережье США; если приоритет — исполнение по кратчайшему пути, размещайтесь рядом с конкретным целевым валидатором. Используйте Validators Solutions, чтобы понять публичное распределение сети Solana, а затем — ERPC Leader Slot API и реальные измерения, чтобы решить, что вам подходит: размещение в одном регионе, в двух регионах или глобальное.
Solana Mainnet Distribution Report

Q. Мне нужна задержка примерно ~400ms или ниже.

Чтобы добиться задержки на уровне примерно 400ms или ниже, учитывайте следующие ключевые моменты:
  • Реалистичное понимание значений ping: Значения ping отражают идеальные условия и не показывают фактическую задержку при потоковой передаче данных — обычно такая задержка примерно в 5 раз выше ping. Например, ping 100ms между континентами на практике означает около 500ms задержки. Поэтому для достижения ~400ms инфраструктуру необходимо размещать в том же регионе.
    • Типичные ориентиры по ping:
      • Одна сеть: ~0.1ms
      • Private Network Interconnect (PNI): ~0.2ms
      • Один дата-центр: ~0.3ms
      • Один город: ~1ms
      • Соседняя страна: ~5–10ms
      • Межконтинентально: ~100–300ms
  • Не полагайтесь на среднюю задержку: Валидаторы Solana географически распределены по всему миру, а leader schedule случайным образом меняется с каждой эпохой. Ориентироваться на среднюю задержку, чтобы добиться ~400ms, непрактично. Вместо этого нужно точно отслеживать расписание валидаторов в нужном вам регионе и выявлять slots с наименьшей задержкой. Чтобы стабильно добиваться минимальной задержки, нужна инфраструктура во всех релевантных регионах. Внутри одного региона данные можно получать за десятки миллисекунд, а передавать за считаные миллисекунды.
  • Отслеживание leader schedule: Отслеживайте leader schedule валидаторов для вашего региона с помощью ERPC Leader Slot API (getLeaderSlots). Он возвращает предстоящий leader schedule, stake weight для текущей эпохи, приблизительную геолокацию валидаторов и эталонные значения ping, чтобы вы могли определить slots с наименьшей задержкой, на которые стоит нацелиться, еще до их наступления. Публичные картографические данные и нативные RPC APIs полезны для общего понимания сети, но их точности недостаточно для выбора момента исполнения. Leader Slot API закрывает этот пробел с детализацией, нужной для routing и trading-решений.
Validators Solutions - данные сети Solana
Данные сети Solana: Validators Solutions

Q. Как добиться zero-block (zero-slot) trading?

Чтобы успешно добиться zero-block (zero-slot) trading, нужны более продвинутые стратегии, в частности:
  • Определение зон возможностей: Валидаторы Solana распределены по всему миру, и физически невозможно обеспечить оптимальную задержку для каждого slot. Поэтому отслеживайте leader schedule валидаторов в регионе, где размещена ваша инфраструктура, и определяйте наиболее выгодные зоны возможностей. Размещение инфраструктуры в нескольких регионах также может дать преимущество. Например, Frankfurt является ключевым регионом из-за высокой плотности валидаторов, поэтому лидеры там выбираются чаще и торговых возможностей больше.
    Используйте ERPC Leader Slot API (getLeaderSlots), чтобы узнавать предстоящий leader schedule, stake weight для текущей эпохи, приблизительные геоданные валидаторов и эталонные значения ping с гораздо большей точностью, чем дают публичные картографические источники данных или нативные RPC APIs. Это позволяет наметить зоны возможностей еще до наступления нужных slots и исполнять сделки почти с нулевой задержкой.
  • Развертывание dedicated nodes: Если вам сложно конкурировать, рассмотрите развертывание dedicated nodes. На shared nodes возникает задержка из-за трафика других пользователей, поэтому они не рекомендуются. Кроме того, размещение dedicated node в той же сети, что и ваше приложение, значительно снижает сетевую задержку и оптимизирует производительность.

Q. Можно ли использовать конкретный endpoint?

Чтобы сохранять среду с низкой задержкой, наша система автоматически выбирает ближайшую доступную ноду. Если вы хотите использовать конкретный endpoint, мы рекомендуем арендовать сервер, расположенный как можно ближе к этому endpoint.

Q. Почему я получаю ошибку 401?

Чтобы сохранять среду с низкой задержкой, мы применяем ограничения по IP. Если у вас нет подписки или ваш IP не зарегистрирован, вы получите ошибку 401.
Пожалуйста, еще раз проверьте, что зарегистрированный IP совпадает с вашим текущим IP доступа.

Q. Почему я получаю ошибку 429?

Вы достигли лимита соединений, предусмотренного вашим планом.
Если вы сталкиваетесь с этой ошибкой, рассмотрите возможность обновления плана. Если вам нужно больше соединений, чем дает наш премиальный план, более подходящим вариантом будет dedicated gRPC node.

Q. Почему dedicated endpoints быстрее?

Shared endpoints используются несколькими клиентами, которые делят одни и те же ресурсы. По мере роста трафика задержка становится более вероятной. Серверные ресурсы физически ограничены, и объем работы, который они могут обработать, конечен. Когда одновременно приходит слишком много запросов, их приходится обрабатывать последовательно, что приводит к более медленному времени ответа.
Хотя мы применяем различные меры для оптимизации производительности даже на shared endpoints, на dedicated endpoints вы являетесь единственным пользователем ресурса. Это означает, что другие пользователи никак на вас не влияют, и вы получаете стабильно быстрые и предсказуемые ответы.
Кроме того, dedicated endpoints поддерживают варианты соединения без TLS, например HTTP. За счет пропуска TLS handshake (около 20ms) соединение становится еще быстрее по сравнению с HTTPS.

Q. После оформления подписки акционная цена будет повышена?

Пока ваша подписка активна, цена со скидкой, зафиксированная при оформлении, остается в силе. Среды, выдерживающие нагрузку Solana в реальном времени, — глобально дефицитный ресурс, и мы планируем поэтапно повышать базовые цены вслед за ростом спроса на оборудование и сеть. Конфигурации с более высокими характеристиками и регионы с высоким спросом раскупаются быстрее всего, поэтому зафиксировать текущую промо-цену — самый экономичный выбор в долгосрочной перспективе.

Q. Я хочу платить криптовалютой

Криптоплатежи доступны в ERPC Web Dashboard, если страна вашего зарегистрированного платежного адреса входит в число стран Евросоюза. Вы можете использовать SOL, USDC или EURC для покупки ERPC Credits.
Используйте эти ERPC Credits, чтобы активировать или продлевать планы ERPC. Откройте панель, выберите оплату криптовалютой и отправьте перевод со своего кошелька — панель проверит транзакцию и зачислит ERPC Credits на ваш аккаунт.
Поддерживаемые страны: Австрия, Бельгия, Болгария, Венгрия, Германия, Греция, Дания, Ирландия, Испания, Италия, Кипр, Латвия, Литва, Люксембург, Мальта, Нидерланды, Польша, Португалия, Румыния, Словакия, Словения, Финляндия, Франция, Хорватия, Чехия, Швеция, Эстония.
Для стран, которых нет в списке, используйте оплату кредитной картой.

Q. Как добиться минимально возможной задержки?

Мы настоятельно рекомендуем сочетать dedicated gRPC node с нашим сервером Bare-Metal.
Они находятся в одной сети, что позволяет организовать приватную связь с нулевой дистанцией без выхода в интернет. Такая конфигурация дает крайне низкую задержку, обычно около 0.1ms ping.
Если нужны дополнительные подробности, свяжитесь с нами через ERPC Web Dashboard.

Q. Какая здесь задержка?

Задержка зависит от способа измерения и вашей конкретной среды использования. Важнее не точное числовое значение, а то, соответствует ли задержка вашим реальным рабочим требованиям.
У нас есть простые в использовании инструменты на TypeScript и Rust для измерения задержки.

Q. Этот RPC (gRPC, Shreds) быстрее других?

Мы проектируем каждый план с расчётом на скорость и рады, когда её измеряют бок о бок с любым другим провайдером. Результаты зависят от региона, от того, используете ли вы shared или dedicated endpoint, от протокола (WebSockets, gRPC или Shreds) и от языка программирования вашего клиента.
Если окажется, что наш сервис медленнее, сообщите нам через ERPC Web Dashboard, в каких условиях и с какими конкурентами вы его сравнивали. Мы разберемся в причине и дополнительно улучшим скорость.

Q. Какой план обеспечивает самую высокую производительность?

Как правило, самый быстрый результат дает наш тариф верхнего уровня благодаря более мощным CPU, большему объему памяти и усиленной аппаратной конфигурации.
Если вам нужны еще более мощные серверы, мы также предлагаем кастомные решения, но наши стандартные планы рассчитаны на оптимальное соотношение цены и производительности.
Мы уверены, что обеспечиваем производительность мирового уровня в каждом ценовом сегменте. Если вы найдете более быстрого провайдера в том же ценовом диапазоне, сообщите нам, чтобы мы могли проверить это и улучшить сервис.

Q. У меня высокая задержка. Что я могу сделать?

Задержка сильно зависит от того, насколько близко вы находитесь к endpoint. Мы рекомендуем подключаться с сервера, расположенного рядом с предоставленным endpoint. Самые быстрые соединения обеспечивают наш сервер Bare-Metal и сервис VPS.

Q. Что быстрее: WebSockets, gRPC или Shreds?

По отзывам наших клиентов порядок скорости обычно такой:
Shreds > gRPC > WebSockets
Если у вас наблюдаются другие результаты, поделитесь ими с нами.

Q. Задержка оказалась не такой, как я ожидал.

Производительность различается в зависимости от используемого языка программирования. Обычно порядок такой:
Rust > Go > TypeScript (JavaScript) > Python
Подробное сравнение смотрите здесь:
Для максимальной производительности мы настоятельно рекомендуем Rust.