Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

如何使用 RPC 和数据提供者访问 Sui 数据?

摘要

Sui 暴露了一个 JSON-RPC 接口,用于读取对象、交易、检查点和事件,您通过全节点端点连接到它。实际问题是使用哪个端点:用于探索的公共全节点、用于生产流量的托管 RPC API,还是当您需要隔离和可预测容量时的专用节点。

本参考指南将介绍 Sui RPC 接口、如何配置端点、如何使用 curl 和 JavaScript 查询数据,以及如何在公共、托管和专用选项之间做出选择。它还涵盖了常见的故障模式以及随着应用增长保持 Sui 数据访问稳定的运维检查。

Sui 是一个高吞吐量网络,应用状态存在于对象中,而不是单一的全局账户账本。这种设计决定了您读取数据的方式:大多数查询以对象为中心,RPC 接口围绕对象、交易、检查点和事件构建。如果您正在将钱包、索引器或仪表板连接到 Sui,您需要一个能够在实际流量下可靠回答这些查询的端点。

本页面是 Sui RPC 和数据访问的实用参考。它解释了 RPC 接口暴露的内容、如何配置端点、如何发出真实请求,以及如何在公共全节点、托管 RPC API 和专用节点之间做出选择。

选择您的 Sui 数据访问路径

在编写集成代码之前,请确定哪种访问路径与您的工作负载匹配。三种常见路径的主要区别在于隔离性、容量以及您需要承担多少运维工作。

访问路径最适合您管理的内容主要权衡
公共全节点原型设计、一次性读取、学习 API无共享容量,无隔离,不适合稳定的生产负载
托管 RPC API生产应用、钱包、索引器、后端仅应用逻辑共享基础设施,除非您添加专用层级
专用节点高流量或延迟敏感的工作负载,严格隔离应用逻辑;提供商运行节点成本更高,需要更多容量规划

一个快速的经验法则:如果您仍在探索 API,公共全节点就足够了。一旦有了真实用户,就转向托管 RPC API,这样您就不会争抢共享容量。如果您的工作负载很大、突发性强或需要可预测的行为,请考虑专用节点,这样您的流量就不会受到其他租户的影响。

OnFinality 通过其 API 服务 和专用节点选项提供 Sui RPC,因此您可以从托管端点开始,并随着负载增长迁移到专用基础设施。您可以在 Sui RPC 页面 上查看网络详情。

Sui RPC 接口暴露的内容

Sui 全节点 JSON-RPC API 围绕网络的核心数据类型组织。您最常使用的方法分为以下几组:

  • 对象读取:按 ID 获取对象,包括其类型、所有者和版本。
  • 交易读取:按摘要获取交易并检查其效果和事件。
  • 检查点读取:检索检查点数据及其包含的交易。
  • 事件查询:按类型、发送者或模块查询事件,这是大多数索引器跟踪活动的方式。
  • 代币和余额读取:查找地址的代币对象和余额。
  • 执行:提交已签名交易以执行。

由于 Sui 状态基于对象,您通常会将地址解析为其拥有的对象,然后读取每个对象,而不是读取单个账户余额。请尽早围绕这种模式规划您的数据模型,因为它会影响您如何缓存和索引。

方法名称和参数会随网络发展而变化,因此请将官方 Sui 文档视为确切方法列表和请求格式的权威来源。本页面重点介绍如何连接和操作该接口。

配置 Sui 端点

Sui 端点是一个 HTTP JSON-RPC URL。您将客户端指向它并发送标准 JSON-RPC 请求。相同的 URL 适用于 curl、JavaScript SDK 和后端服务。

将端点存储在环境变量中,而不是硬编码,这样您就可以在开发和生产之间切换而无需更改代码:

# .env
export SUI_RPC_URL="https://your-onfinality-sui-endpoint"

然后从您的客户端引用它。在 JavaScript 中,Sui SDK 在创建客户端时接受全节点 URL:

import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';

// 在生产中使用您的托管端点;该辅助函数便于本地测试。
const client = new SuiClient({
  url: process.env.SUI_RPC_URL ?? getFullnodeUrl('mainnet'),
});

const object = await client.getObject({
  id: '0xYOUR_OBJECT_ID',
  options: { showType: true, showOwner: true },
});

console.log(object.data?.type, object.data?.owner);

要原始检查您的端点是否可达并返回数据,请直接发送 JSON-RPC 请求:

curl -s "$SUI_RPC_URL" \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sui_getLatestCheckpointSequenceNumber",
    "params": []
  }'

健康的响应会返回一个包含最新检查点序列号的 JSON 结果。如果您得到的是错误对象,请先检查方法名称和参数,然后检查端点本身。

读取 Sui 数据:对象、交易和事件

大多数 Sui 集成遵循相同的三步模式:解析您需要的内容,读取它,然后跟踪变化。

  1. 解析。给定地址或已知 ID,找到您关心的对象或交易。对于地址,查询拥有的对象。对于已知摘要,直接获取交易。
  2. 读取。获取您需要的字段的对象或交易。只请求您使用的选项,因为大型响应会消耗带宽和时间。
  3. 跟踪。订阅或轮询事件和检查点,以便您的应用状态保持最新。

事件查询是大多数索引器的支柱。您按事件类型、模块或发送者进行过滤,然后分页浏览结果。由于繁忙网络上的事件量可能很高,请设计查询以分页而不是一次性请求所有内容,并存储游标以便在重启后恢复。

如果您正在构建需要历史状态的后端,请确认您的提供商为您需要的范围提供归档访问。并非每个端点都保留完整历史,这种差距是项目后期常见的意外来源。

生产就绪检查清单

在将真实流量发送到 Sui 端点之前,请使用此检查清单。它的编写方式使您可以将其交给负责应用可靠性的人员。

检查项为什么重要
端点可通过环境配置允许您在不重新部署的情况下切换提供商或区域
定义了故障转移端点单个端点是单点故障
设置了请求超时和重试防止挂起的请求阻塞您的服务
事件查询使用游标和分页避免过大的响应和进度丢失
确认了归档需求如果不保留历史,历史读取会静默失败
监控覆盖错误率和延迟您需要在用户报告之前看到性能下降
理解了速率和突发预期防止流量高峰期间被限流

如果您无法回答其中几项,托管 RPC API 通常比运行自己的全节点更快。OnFinality 的 RPC 定价 页面列出了计划层级,支持的 RPC 网络 列表显示了 Sui 与其他链的并列位置。

常见故障模式及如何调试

Sui RPC 问题通常分为几个可识别的类别。在更改任何内容之前,将症状与可能的原因匹配。

症状可能原因首要修复
方法未找到方法已重命名或该端点不支持检查 Sui 文档中的当前方法列表
对象结果为空对象 ID 错误或对象已被消耗验证 ID 并检查交易效果
事件查询缓慢或超时查询过于宽泛或缺少分页添加过滤器,使用游标分页
间歇性 429 响应共享端点在突发负载下添加退避,或迁移到专用层级
检查点数据陈旧端点落后于网络比较端点之间的检查点序列号

一个有用的调试习惯是并排比较两个端点。从每个端点查询最新的检查点序列号并进行比较。如果其中一个持续落后,则该端点滞后,您应该将流量从它转移,直到它赶上。

有关端点选择和故障转移设计的更广泛介绍,请参阅 如何选择 RPC 提供商。

何时迁移到专用 Sui 节点

托管 RPC 可以很好地处理大多数生产工作负载。当以下一种或多种情况适用时,专用节点值得考虑:

  • 您的流量足够大,共享容量导致不可预测的延迟。
  • 出于合规、安全或数据驻留原因,您需要隔离。
  • 您运行大量事件索引或归档查询,在共享层级上成本高昂。
  • 您希望控制节点版本和配置,而无需自己操作硬件。

专用节点并不自动是正确答案。它增加了成本和规划,只有当您的工作负载足够稳定以证明其合理性时才有回报。如果您不确定,请从托管开始并测量。当延迟或限流成为反复出现的问题时,这就是您评估专用基础设施的信号。OnFinality 的 专用节点 产品是查看该选项的地方。

关键要点

  • Sui 数据访问以对象为中心,因此请围绕对象、交易、检查点和事件设计查询和缓存。
  • 公共全节点适合学习;生产应用应使用托管 RPC API,高流量或隔离的工作负载应考虑专用节点。
  • 将端点保留在配置中,定义故障转移,并在启动前设置超时和重试。
  • 事件查询需要过滤器和游标;归档需求必须提前确认。
  • 大多数 Sui RPC 问题可以通过比较检查点序列号并根据当前文档检查方法名称来诊断。

常见问题

我需要 Sui 全节点来读取数据吗?

不需要。您可以通过任何可访问的 JSON-RPC 端点读取 Sui 数据,包括托管 RPC API。只有当您需要对节点的完全控制或特定的隔离要求时,才需要运行自己的全节点。

Sui RPC 提供商和数据提供商有什么区别?

RPC 提供商为您提供一个实时端点,针对当前链状态回答 JSON-RPC 查询。数据提供商可能在此基础上添加索引、历史查询或聚合数据集。许多团队同时使用两者:RPC 用于实时读写,索引数据用于分析和历史。

为什么我的 Sui 事件查询会超时?

没有过滤器或分页的宽泛事件查询可能会返回非常大的结果集。按类型、模块或发送者添加过滤器,并使用游标分页浏览结果,以便每个请求保持较小。

如何检查 Sui 端点是否健康?

从端点查询最新的检查点序列号,并与第二个端点进行比较。持续较低的数字意味着端点滞后。

我可以使用 OnFinality 进行 Sui RPC 吗?

可以。OnFinality 通过其 API 服务和专用节点选项提供 Sui RPC。请参阅 Sui RPC 页面 了解网络详情,以及 RPC 定价 了解计划信息。

RPC 知识库

相关 RPC 内容

测试网 RPCZenChain

如何获取 ZenChain 测试网 ZTC 代币:水龙头指南与 RPC 配置

# 如何获取 ZenChain 测试网 ZTC 代币:水龙头指南与 RPC 配置 ZenChain 是一个与比特币对齐的 Layer 1 区块链,结合了比特币的安全性与以太坊兼容的可编程性。要在 ZenChain 测试网上构建和测试 dApp,你需要测试网 ZTC 代币作为 gas 费用。本指南涵盖...

RPC 提供商选择Efinity

无限Solana RPC节点:它意味着什么,何时需要?

无限Solana RPC节点移除了按请求的速率限制,让您的应用可以扩展而不会遇到请求上限。本文解释了无限访问的实际含义、如何评估提供商,以及何时专用节点是生产工作负载的正确选择。...

网络 RPCPolygon

Polygon 公共 RPC:何时使用以及何时该升级

Polygon 公共 RPC 是一个共享的、无需认证的 HTTPS 端点,允许你在不运行自己的节点的情况下读取链上数据并发送交易。它非常适合快速测试、钱包设置和低流量脚本,但共享容量意味着你不应将其用于生产流量或严格的延迟目标。本文介绍了官方公共端点、链设置、请求示例、速率限制症状,以及何时专用或托...

RPC 提供商选择

您能否为Web3团队推荐一种灵活且经济高效的RPC解决方案?

为从原型扩展到生产的Web3团队选择兼顾灵活性和成本的RPC提供商至关重要。本文概述了需要评估的关键因素——定价模型、功能集、网络覆盖和支持——并提供了一个决策框架,帮助您选择适合工作负载且不会过度支付的解决方案。...

测试网 RPCBitcoin

什么是比特币测试网,开发者如何使用它?

比特币测试网是一个公共区块链,它镜像了比特币主网,但使用没有实际价值的测试币。开发者可以在没有财务风险的情况下,用它来试验交易、钱包和智能合约。本文涵盖测试网设置、RPC端点、水龙头以及选择测试网RPC提供商的最佳实践。...

RPC 提供商选择Solana

在流行的 Solana RPC 提供商中,使用层级如何比较?

Solana RPC 使用层级通常分为三类:共享吞吐量且无 SLA 的公共端点、具有每月请求或计算单元配额的共享托管层级,以及具有预留容量和私有端点的专用节点。正确的层级取决于您的请求组合、是否需要 WebSocket 订阅或归档数据,以及您的应用在调用开始失败之前能吸收多少流量变化。 本比较详细说...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始