Документация по Solana SWQoS Endpoint

Что такое SWQoS Endpoint?

SWQoS Endpoint, предоставляемый ERPC, - это высокопроизводительный RPC service, который позволяет пользователям со stake connections отправлять transactions через выделенные lanes. Он доступен и в shared, и в dedicated plan, обеспечивая более быструю и надежную доставку transactions.
Endpoint можно получить, зарегистрировав свои holdings elSOL в официальном Validators DAO Discord.

Что такое SWQoS?

SWQoS (Stake weighted Quality of Service) - это механизм управления коммуникацией, который отдает приоритет validators со stake connections. Leaders выделяют примерно 80% общей bandwidth для priority lane и 20% для non-priority lane.
Traffic со stake connections может использовать priority lane и одновременно отправляться через non-priority lane. В результате по сравнению с traffic, который зависит только от non-priority lane, эффективная пропускная способность доставки значительно выше. Этот механизм применяется до обработки Priority fee, на этапе приема traffic и routing в сторону leader, то есть возможность попасть в priority lane напрямую влияет на downstream processing speed.

Связь с Priority Fee

Priority fee играет важную роль, но он применяется после того, как transaction уже достигла leader через routing SWQoS. Если transaction не попадает в priority lane SWQoS, эффективность Priority fee становится ограниченной, и улучшить базовую reachability становится трудно. Для оптимальной работы наиболее эффективно сочетать reachability на базе SWQoS с корректными настройками Priority fee.

Изменение cost structure

В традиционных transaction submission services пользователи были обязаны прикладывать Tips при отправке transactions. С SWQoS Endpoint от ERPC Tips не требуются. Вместо этого доступ к priority bandwidth предоставляется через holding elSOL.
elSOL - это Liquid Staking Token (LST) в Solana, выпускаемый при стейкинге SOL. Его стоимость относительно SOL растет по мере накопления staking rewards и не фиксируется в пропорции 1:1. Например, со временем holding 1 elSOL может постепенно означать "1 elSOL = 1.1 SOL" или "1 elSOL = 1.2 SOL".
elSOL можно конвертировать обратно в SOL через unstaking process, при этом расчет будет учитывать накопленные staking rewards.
SOL, застейканный через elSOL, делегируется validators, подключенным к ERPC. По мере роста holdings elSOL увеличивается общий объем SWQoS bandwidth, доступный в ERPC. Holding elSOL позволяет пользователям напрямую участвовать в усилении сети и взамен получать доступ к выделенным transmission lanes.

Распределение bandwidth (структура TPS)

Для shared SWQoS Endpoints доступный TPS рассчитывается как holdings elSOL / 4.2, с округлением вниз. Например, holding 10 elSOL дает 2 TPS.
Фактический лимит определяется меньшим из двух значений:
  • максимальный TPS, разрешенный вашим subscribed plan, или
  • TPS, рассчитанный на основе holdings elSOL.
Для использования SWQoS endpoints требуется Developer Plan или выше, также поддерживаются Bundle Plans.

Connection Keep Warming (Keep Alive)

В Solana SWQoS endpoint от ERPC GET request на /ping позволяет поддерживать HTTPS connection между client и SWQoS endpoint ERPC.
При отправке transaction первый request тратит небольшое время на установку HTTPS и TLS session. Если заранее отправлять /ping и держать это connection активным, можно избежать стартовой latency соединения и сразу перейти к отправке actual transaction.
Даже если transactions не отправляются непрерывно, такой подход полезен для setup'ов, где transactions нужно отправлять быстро в конкретные моменты времени, помогая стабилизировать поведение первой отправки.

Ping Endpoint

Keep Warming выполняется отправкой GET request на /ping в SWQoS endpoint. Этот request не обрабатывает transactions и используется только для поддержания состояния connection между client и ERPC.

Формат endpoint (HTTPS)

text
https://<your-swqos-endpoint-domain>/ping
Замените <your-swqos-endpoint-domain> на домен SWQoS, предоставленный ERPC.

Пример использования

Пример периодического Keep Alive (JavaScript)

typescript
async function keepWarm(endpoint: string) {
  try {
    await fetch(`${endpoint}/ping`, { method: 'GET' })
  } catch {
    // Ignore failures
  }
}

setInterval(() => {
  keepWarm('https://<your-swqos-endpoint-domain>')
}, 30000)
Если отправлять /ping через регулярные интервалы, можно поддерживать состояние, в котором отправка transaction может начаться немедленно, как только это потребуется.

Примечания

/ping не расходует TPS и не влияет на расчеты bandwidth на основе elSOL ・Это не замена отправке transactions ・Это вспомогательный request, используемый только для поддержания connection client-to-ERPC
Дизайн SWQoS (routing на основе stake) и Priority fee при этом не меняются. Используйте Keep Warming как механизм, который снижает latency в момент начала отправки transaction.