摘要
Sui RPC 网络是一组全节点端点和 API,让应用程序能够读取余额、查询对象、模拟执行 Move 调用,并在 Sui 上提交交易。开发者在连接钱包、索引器、浏览器和依赖可靠网络访问的游戏时,会寻找 Sui RPC 端点。
本指南涵盖公共和提供商托管的 Sui 端点、常见的 JSON-RPC 方法,以及在生产环境选择 Sui RPC 提供商的标准。您还会找到最常见的 Sui RPC 故障模式的调试清单。
Sui RPC 决策清单
在将应用连接到 Sui RPC 网络之前,请检查以下清单:
- 确认您需要主网、测试网还是开发网。网络决定了端点、您可以读取的状态以及您可以提交的交易。
- 检查端点支持的 API 风格:JSON-RPC、GraphQL 或 gRPC。Sui 正在逐步弃用 JSON-RPC,因此新的集成应确认长期访问。
- 查看请求限制和公平使用政策。公共 Sui 全节点有速率限制,不适用于生产流量。
- 如果您需要订阅交易、检查点或 Move 事件,请询问 WebSocket 支持。
- 决定您是否需要超出最近检查点的历史数据,这会影响归档要求。
- 规划冗余。高流量事件(如 NFT 铸造)可能会压垮单个提供商。
- 在启动前测试您的应用将调用的确切 RPC 方法和负载格式,并在客户端配置中包含备用端点。
什么是 Sui RPC 网络?
Sui 是一个第 1 层区块链,具有以对象为中心的数据模型和并行交易执行。Sui RPC 网络是全节点公开的一组端点,使钱包、浏览器、索引器、游戏和后端服务能够与网络交互。通过 RPC 端点,应用程序可以读取余额、查询对象和交易、模拟执行 Move 调用,并提交交易块以供执行。
与 EVM 网络不同,Sui 不以相同的方式暴露单一的规范区块号。网络通过检查点推进,大多数客户端在跟踪状态时引用检查点序列号或纪元边界。当您构建索引器或试图理解最终性时,这种差异很重要。一旦包含交易的检查点被验证者集认证,该交易即被视为最终。
有两种常见的方式访问 Sui RPC 网络:
- 使用 Sui 维护的官方公共全节点。这些节点便于原型开发,但有速率限制,不适合生产应用。
- 使用托管 RPC 提供商,如 OnFinality。提供商托管的端点通常提供更高的吞吐量、监控、故障转移,以及为需要隔离容量的团队提供专用节点选项。
对于生产工作负载,您应将 RPC 访问视为基础设施。这意味着评估请求限制、正常运行时间特性、支持和冗余,而不仅仅是复制端点 URL 到配置文件中。
Sui RPC 端点基础
常见的公共 Sui 网络端点如下:
| 网络 | 端点 | 备注 |
|---|---|---|
| 主网 | https://fullnode.mainnet.sui.io:443 | 官方公共端点,有速率限制 |
| 测试网 | https://fullnode.testnet.sui.io:443 | 适用于开发和测试 |
| 开发网 | https://fullnode.devnet.sui.io:443 | 早期功能,状态可能重置 |
提供商端点不同。OnFinality 在 Sui 网络页面 上发布当前的 Sui RPC 详细信息。如果您使用托管服务,通常会收到一个跨多个全节点负载均衡的 URL,可以与标准 JSON-RPC 或 GraphQL 客户端一起使用。
配置网络时,在几乎所有情况下都应使用 HTTPS 和默认的 443 端口。除非提供商记录了特定的路由路径,否则不要向端点添加路径段。Sui 不使用 EVM 链 ID,因此钱包和应用通过端点本身识别网络。将网络添加到钱包时,使用提供商提供的网络名称、RPC URL 和 SUI 符号。
如何发出 Sui RPC 请求
Sui RPC 端点使用 JSON-RPC 2.0。基本请求包含方法名、可选参数和一个 id,您可以在批处理多个请求时用于匹配响应。
以下 curl 示例调用 suix_getLatestCheckpointSequenceNumber 获取当前检查点序列:
curl -X POST "https://YOUR_SUI_RPC_URL" -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"suix_getLatestCheckpointSequenceNumber","params":[],"id":1}'
要读取余额,请将所有者地址作为十六进制字符串传递:
curl -X POST "https://YOUR_SUI_RPC_URL" -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"suix_getBalance","params":["0xYOUR_ADDRESS"],"id":1}'
如果您使用 TypeScript,可以使用 fetch 发出相同的请求:
const rpcUrl = "https://YOUR_SUI_RPC_URL";
const response = await fetch(rpcUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "suix_getBalance",
params: ["0xYOUR_ADDRESS"]
})
});
const result = await response.json();
console.log(result.result);
Sui 使用 SuiJSON,一种用于 Move 参数的受限 JSON 格式。大整数(如 u64 和 u128)必须编码为字符串,数组值必须是同质的。如果您看到类型强制转换错误,请检查您的数字是否为字符串,以及地址格式是否正确。
常见的 Sui RPC 方法
Sui JSON-RPC API 使用 suix_ 和 sui_ 方法前缀。一些方法被广泛使用:
suix_getLatestCheckpointSequenceNumber— 获取当前检查点高度。suix_getBalance— 获取地址的 SUI 或代币余额。suix_getObject— 按对象 ID 获取对象数据。suix_dryRunTransactionBlock— 在执行前模拟交易块。suix_executeTransactionBlock— 提交已签名的交易块。suix_getTransactions— 按过滤器查询交易块。
这些方法对于构建基本的 Sui 客户端很有用。例如,在提交交易之前,您应始终调用 suix_dryRunTransactionBlock 来检查 Move 函数是否接受您的输入,以及交易效果是否符合预期。
由于 Sui 基金会已弃用主网全节点上的 JSON-RPC,请检查提供商是否也支持 GraphQL 或 gRPC。包括 OnFinality 在内的几家 RPC 提供商正在添加或已经暴露替代数据访问方法。您可以在 Sui 网络页面 上查看当前的端点详细信息。
如何选择 Sui RPC 提供商
Sui RPC 提供商的选择应基于您所服务的工作负载。下表列出了最重要的标准:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 主网/测试网访问 | 提供商是否同时提供两个网络? | 开发和测试需要隔离的测试网和主网端点。 |
| API 表面 | 是否支持 JSON-RPC、GraphQL、gRPC 或 WebSocket? | Sui 正在弃用 JSON-RPC,因此面向未来的访问很重要。 |
| 请求限制 | 记录的吞吐量或公平使用政策是什么? | 公共端点有速率限制;生产应用需要可预测的容量。 |
| 历史数据 | 是否提供检查点历史或归档访问? | 索引器和分析工具通常需要超出最近几个检查点的数据。 |
| 冗余 | 端点是否由多个节点和区域支持? | 单个节点可能成为网络事件期间的瓶颈。 |
| 支持 | 是否有入门指导和 24 小时支持? | 高流量发布受益于提前协调。 |
| 成本模型 | 定价是基于请求、节点还是两者? | 正确的模型取决于您是需要共享 API 访问还是专用节点。 |
在承诺之前,从不同区域运行几个简单请求并测量延迟。然后查看提供商的文档,了解速率限制头、响应代码以及 JSON-RPC 和 GraphQL 行为之间的任何差异。
对于共享访问,OnFinality 的 API 服务 在支持的网络上提供托管 RPC 端点。对于需要隔离容量或自定义配置的团队,专用节点 为您提供自己的 Sui 全节点。比较选项时,请参阅 RPC 定价 和完整的 支持的 RPC 网络 列表。
常见的 Sui RPC 故障模式和调试
即使使用良好的提供商,您也会遇到 RPC 错误。最常见的模式是:
429 Too Many Requests— 您超出了速率限制。使用指数退避、批处理请求,或转向付费或专用端点。503 Service Unavailable— 全节点或负载均衡器过载。检查提供商状态并添加故障转移到另一个提供商。Invalid SuiJSON— 数字作为 JSON 数字而不是字符串发送,或数组不是同质的。查看 SuiJSON 强制转换规则。Object not found— 对象 ID 或摘要不正确,或对象已被删除。验证对象在正确的网络上存在。- WebSocket 断开 — 订阅可能在长时间会话中丢失。使用重试/退避策略重新连接,并在重新连接后重新订阅。
- 交易执行错误 — 首先使用
suix_dryRunTransactionBlock在提交签名交易之前捕获 Move 级别的失败。
调试时,从使用 curl 等工具的单个请求开始,验证响应格式,然后转向完整的客户端流程。如果某个方法在一个提供商上有效而在另一个提供商上无效,请比较 API 版本和提供商文档中列出的支持方法。
对于最终性相关问题,在提交交易前后查询检查点序列号。如果交易没有立即可见,它可能仍在等待检查点认证。不要仅仅因为交易不在您收到的第一个响应中就假设它失败了。
关键要点
- Sui RPC 网络将应用程序连接到 Sui 全节点,用于读取状态和提交交易。
- 官方公共端点适合原型开发,但有速率限制,不建议用于生产。
- Sui 正在从 JSON-RPC 迁移到 GraphQL 和 gRPC,因此新项目应确认提供商的长期 API 支持。
- 根据网络覆盖、请求限制、历史数据、冗余和支持来评估提供商。
- 使用
dryRunTransactionBlock进行测试,尽可能批处理请求,并在启动前规划提供商故障转移。 - OnFinality 通过 API 服务 和 专用节点 提供托管的 Sui RPC 访问。查看 RPC 定价 和 支持的网络 以选择合适的产品。
常见问题解答
什么是 Sui RPC 网络?
Sui RPC 网络是全节点端点和 API 的集合,允许客户端读取 Sui 数据、提交交易并订阅网络事件。这是钱包和 dApp 与 Sui 交互的标准方式。
我可以在生产环境中使用公共 Sui RPC 端点吗?
公共全节点端点可以处理小规模测试,但 Sui 自己的文档警告说,它大约每 30 秒限制 100 个请求。生产应用应使用托管 RPC 提供商或运行专用全节点。
Sui RPC 是否支持 WebSocket?
许多 Sui RPC 提供商支持 WebSocket 连接用于订阅,但可用性因提供商和网络而异。查看提供商的文档以了解支持的订阅方法和重新连接指南。
JSON-RPC 是否会在 Sui 上消失?
Sui 基金会已宣布计划在 2026 年禁用主网全节点上的 JSON-RPC,并建议新的集成使用 GraphQL 或 gRPC。在评估提供商时,询问当前支持哪些 API 风格以及计划支持哪些。