Documentation Index
Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
什么是速率限制?
速率限制控制每秒可以进行的请求数量。当超过速率限制时,您将收到一个HTTP 429响应。关于当遇到429或其他临时故障时该怎么做的指导,请参见下文的重试和错误处理。
标准速率限制
您的计划有两个标准速率限制组:一个用于 RPC 请求,另一个用于 DAS API 请求。以下是每个 Helius 计划的基本速率限制:
| 计划 | RPC 速率限制 | DAS 和增强 API |
|---|
| 免费 | 10 请求/秒 | 2 请求/秒 |
| 开发者 | 50 请求/秒 | 10 请求/秒 |
| 商业 | 200 请求/秒 | 50 请求/秒 |
| 专业 | 500 请求/秒 | 100 请求/秒 |
| 企业 | 自定义 | 自定义 |
增加速率限制
专业计划的团队可以每月支付 100 美元购买额外的 100 RPS。
如果您需要在发布前进行自定义速率限制,请联系我们的销售团队。如果您使用的是开发者或商业层,请升级您的计划以增加速率限制。
特殊速率限制
由于计算要求,一些端点和专门的 Helius 产品有特殊的速率限制。
发送交易
| 端点 | 免费 | 开发者 | 商业 | 专业 |
|---|
Sender | 50/秒 | 50/秒 | 50/秒 | 50/秒 |
sendTransaction | 1/秒 | 5/秒 | 50/秒 | 100/秒 |
sendBundle | — | — | 5/秒 | 5/秒 |
simulateBundle | 10/秒 | 50/秒 | 200/秒 | 500/秒 |
如果您使用的是专业计划并需要增加您的 sendTransaction 速率限制,请联系我们的销售团队。
专业计划用户还可以申请增加速率限制和自定义 Sender 配置以支持更高吞吐量的交易应用。
复杂的 RPC 调用
| 端点 | 免费 | 开发者 | 商业 | 专业 |
|---|
getProgramAccounts | 5/秒 | 25/秒 | 50/秒 | 75/秒 |
历史数据
在对历史数据方法进行批量请求时,适用以下限制:
| 方法 | 最大批量大小 |
|---|
getTransaction | 每个请求最多100个项目 |
getTransactionsForAddress | 不允许批量请求 |
getTransfersByAddress | 不允许批量请求 |
| 所有其他历史方法 | 每个请求10个项目 |
超出批量限制将导致错误响应。对于 getTransactionsForAddress 和 getTransfersByAddress,每个地址必须在一个单独的请求中查询。
LaserStream
| 资源 | 免费 | 开发者 | 商业 | 专业 |
|---|
| 网络 | — | Devnet | Devnet, Mainnet | Devnet, Mainnet |
| 最大公钥数 | — | 10M | 10M | 10M |
| 活动连接数 | — | — | 10 | 100 |
Wallet API
Wallet API遵循与DAS和增强型API相同的速率限制。所有端点共享这些限制:
| 端点 | 免费 | 开发者 | 商业 | 专业 |
|---|
| 所有Wallet API端点 | 2/秒 | 10/秒 | 50/秒 | 100/秒 |
LaserStream WebSocket
| 资源 | 免费 | 开发者 | 企业 | 专业 |
|---|
| 并发连接 | 5 | 150 | 250 | 1,000 |
| 每个连接的订阅数 | 1,000 | 1,000 | 1,000 | 1,000 |
| WebSocket 类型 | 标准 | 标准,增强 | 标准,增强 | 标准,增强 |
WebSockets
| 资源 | 免费 | 开发者 | 商业 | 专业 |
|---|
| 并发连接数 | 5 | 150 | 250 | 1,000 |
| 每个连接的订阅数 | 1,000 | 1,000 | 1,000 | 1,000 |
| WebSocket 类型 | 标准 | 标准, 增强型 | 标准, 增强型 | 标准, 增强型 |
Webhooks
| 资源 | 免费 | 开发者 | 企业 | 专业版 |
|---|
| 最大 Webhooks 数量 | 5 | 50 | 50 | 50 |
| 每个 Webhook 的地址数 | 100k | 100k | 100k | 100k |
ZK 压缩
| 服务 | 免费 | 开发者 | 企业 | 专业版 |
|---|
| Photon APIs | 2/秒 | 10/秒 | 50/秒 | 100/秒 |
getValidityProof | 1/秒 | 5/秒 | 10/秒 | 20/秒 |
重试和错误处理
当应用程序收到 429 Too Many Requests、503 Service Unavailable 或临时 5xx 响应时,请稍候并重试——不要立即重试。立即重试会增加请求数量,导致速率限制恢复变慢而非更快。
推荐策略
- 在第一次重试前等待约1秒。
- 每次重试时加倍等待,最长不超过30秒。
- 每次等待添加**±25%** 的小范围随机变化,以防多个应用程序同时重试。
- 在5次尝试后放弃,将错误返回给调用代码。
哪些错误需要重试
| 状态 | 重试? | 原因 |
|---|
400, 401, 403, 404 | 否 | 客户端错误——重试不会改变结果。 |
408 | 是 | 请求超时。 |
409 | 否 | 冲突——在调用方解决。 |
422 | 否 | 验证错误。 |
429 | 是 | 超出速率限制——等待并使用回退重试。 |
500, 502 | 是 | 临时服务器错误。 |
503 | 是 | 服务不可用——等待并使用回退重试。 |
504 | 是 | 网关超时。 |
| 网络错误 | 是 | 连接重置、DNS故障或套接字超时。 |
const RETRYABLE = new Set([408, 429, 500, 502, 503, 504]);
export async function callWithRetry<T>(
request: () => Promise<Response>,
maxAttempts = 5,
): Promise<T> {
let delay = 1000;
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
const res = await request();
if (res.ok) return (await res.json()) as T;
if (!RETRYABLE.has(res.status) || attempt === maxAttempts) {
throw new Error(`${res.status} after ${attempt} attempt(s): ${await res.text()}`);
}
const jitterMs = delay * (0.75 + Math.random() * 0.5);
await new Promise((r) => setTimeout(r, jitterMs));
delay = Math.min(delay * 2, 30_000);
}
throw new Error("unreachable");
}
错误响应格式
所有 Helius API 在出错时返回结构化的 JSON 体。JSON-RPC 端点(Solana RPC、DAS、Sender、Priority Fee、ZK Compression)返回标准的 JSON-RPC 2.0 包:
{
"jsonrpc": "2.0",
"error": { "code": -32005, "message": "Too many requests" },
"id": "1"
}
REST 端点(Wallet API、Admin API)返回:
{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Too many requests. Retry after 2 seconds."
}