跳转到主要内容

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 产品有特殊的速率限制。

发送交易

端点免费开发者商业专业
Sender50/秒50/秒50/秒50/秒
sendTransaction1/秒5/秒50/秒100/秒
sendBundle5/秒5/秒
simulateBundle10/秒50/秒200/秒500/秒
如果您使用的是专业计划并需要增加您的 sendTransaction 速率限制,请联系我们的销售团队 专业计划用户还可以申请增加速率限制和自定义 Sender 配置以支持更高吞吐量的交易应用。

复杂的 RPC 调用

端点免费开发者商业专业
getProgramAccounts5/秒25/秒50/秒75/秒

历史数据

在对历史数据方法进行批量请求时,适用以下限制:
方法最大批量大小
getTransaction每个请求最多100个项目
getTransactionsForAddress不允许批量请求
getTransfersByAddress不允许批量请求
所有其他历史方法每个请求10个项目
超出批量限制将导致错误响应。对于 getTransactionsForAddressgetTransfersByAddress,每个地址必须在一个单独的请求中查询。

LaserStream

资源免费开发者商业专业
网络DevnetDevnet, MainnetDevnet, Mainnet
最大公钥数10M10M10M
活动连接数10100

Wallet API

Wallet API遵循与DAS和增强型API相同的速率限制。所有端点共享这些限制:
端点免费开发者商业专业
所有Wallet API端点2/秒10/秒50/秒100/秒

LaserStream WebSocket

资源免费开发者企业专业
并发连接51502501,000
每个连接的订阅数1,0001,0001,0001,000
WebSocket 类型标准标准,增强标准,增强标准,增强

WebSockets

资源免费开发者商业专业
并发连接数51502501,000
每个连接的订阅数1,0001,0001,0001,000
WebSocket 类型标准标准, 增强型标准, 增强型标准, 增强型

Webhooks

资源免费开发者企业专业版
最大 Webhooks 数量5505050
每个 Webhook 的地址数100k100k100k100k

ZK 压缩

服务免费开发者企业专业版
Photon APIs2/秒10/秒50/秒100/秒
getValidityProof1/秒5/秒10/秒20/秒

重试和错误处理

当应用程序收到 429 Too Many Requests503 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."
}