Solana SWQoS 端点文档
什么是 SWQoS 端点?
ERPC 提供的 SWQoS 端点是一种高性能 RPC 服务,允许拥有质押连接的用户通过专用通道发送交易。
该服务适用于共享和专用计划,能够实现更快速、更可靠的交易传输。
您可以通过在 Validators DAO Discord 官方服务器上注册您的 elSOL 持有量来获取端点。
- Validators DAO Discord:https://discord.gg/C7ZQSrCkYR
什么是 SWQoS?
**SWQoS(Stake weighted Quality of Service,质押加权服务质量)**是一种优先处理具有质押连接的验证者的通信控制机制。
Leader 将大约 80% 的总带宽分配给优先通道,20% 分配给非优先通道。
具有质押连接的流量可以利用优先通道,同时也会通过非优先通道发送。因此,与仅依赖非优先通道的流量相比,有效传输能力显著增大。
此控制在 Priority fee 处理之前应用,即在流量被接收并路由到 Leader 的阶段,这意味着交易是否进入优先通道直接影响下游处理速度。
与 Priority Fee 的关系
Priority fee 发挥着重要作用,但它是在交易通过 SWQoS 路由到达 Leader 之后才应用的。
如果交易无法进入 SWQoS 优先通道,Priority fee 的效果将受到限制,基本可达性也难以提升。
为了获得最佳运行效果,最有效的方式是将基于 SWQoS 的可达性与适当的 Priority fee 设置相结合。
成本结构的转变
在传统的交易提交服务中,用户在发送交易时需要附加 Tips(小费)。
使用 ERPC 的 SWQoS 端点,无需支付 Tips。取而代之的是,通过持有 elSOL 来获得优先带宽访问权限。
elSOL 是 Solana 上的一种流动性质押代币(LST),通过质押 SOL 发行。
随着质押奖励的累积,其相对于 SOL 的价值会增加,并非固定在 1:1 的比率。
例如,长期持有 1 elSOL 可能会逐渐变为"1 elSOL = 1.1 SOL"或"1 elSOL = 1.2 SOL"。
elSOL 可以通过解除质押流程转换回 SOL,结算时会反映累积的质押奖励。
通过 elSOL 质押的 SOL 被委托给连接到 ERPC 的验证者。
随着 elSOL 持有量的增加,ERPC 可用的总 SWQoS 带宽也会扩大。
通过持有 elSOL,用户直接为增强网络做出贡献,并获得专用传输通道的访问权限作为回报。
- elSOL 官方网站:https://elsol.app/en
带宽分配(TPS 结构)
对于共享 SWQoS 端点,可用 TPS 按 elSOL 持有量 ÷ 4.2 计算并向下取整。
例如,持有 10 elSOL 可获得 2 TPS。
实际可用上限取决于以下两者中较小的值:
- 所订阅计划允许的最大 TPS,或
- 基于 elSOL 持有量推算的 TPS。
使用 SWQoS 端点需要 Developer Plan 或更高级别的计划,Bundle Plan 同样适用。
- Validators DAO Discord:https://discord.gg/C7ZQSrCkYR
连接保活(Keep Alive)
使用 ERPC 的 Solana SWQoS 端点时,向
/ping 发送 GET 请求可以维持客户端与 ERPC SWQoS 端点之间的 HTTPS 连接。提交交易时,首次请求需要花费少量时间建立 HTTPS 和 TLS 会话。
通过预先发送
/ping 并保持连接活跃,您可以在发送实际交易时避免初始连接延迟,立即进入交易提交流程。即使交易并非连续发送,这种方法对于需要在特定时刻快速发送交易的场景也很有效,有助于稳定初始提交行为。
Ping 端点
保活操作通过向 SWQoS 端点的
/ping 发送 GET 请求来执行。
此请求不处理任何交易,仅用于维持客户端与 ERPC 之间的连接状态。端点格式(HTTPS)
text
https://<your-swqos-endpoint-domain>/pinghttps://<your-swqos-endpoint-domain>/ping将
<your-swqos-endpoint-domain> 替换为 ERPC 提供的 SWQoS 专用域名。使用示例
定期保活示例(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)async function keepWarm(endpoint: string) {
try {
await fetch(`${endpoint}/ping`, { method: 'GET' })
} catch {
// Ignore failures
}
}
setInterval(() => {
keepWarm('https://<your-swqos-endpoint-domain>')
}, 30000)通过定期发送
/ping,您可以保持在需要时立即开始交易提交的状态。注意事项
・
/ping 不消耗 TPS,也不影响基于 elSOL 的带宽计算
・它不能替代交易提交
・这是一个仅用于维持客户端到 ERPC 连接的补充请求SWQoS(基于质押的路由)和 Priority fee 的设计保持不变。
将保活作为一种在交易提交开始时减少延迟的机制使用。