摘要
Sui 测试网 RPC 为开发者提供了以 gRPC 为先的途径来查询检查点、对象和余额;模拟和执行交易;并使用 OnFinality 托管端点流式传输实时活动。现代工作流使用 LedgerService 获取检查点数据,使用 StateService 读取对象和余额,使用 TransactionExecutionService 进行 SimulateTransaction 和 ExecuteTransaction,并使用 SubscriptionService 进行 SubscribeCheckpoints、SubscribeTransactions 和 SubscribeEvents。遗留的全节点 JSON-RPC 仍然可用于迁移对比,但新的测试网集成应以 gRPC 为目标,并将 JSON-RPC 视为遗留接口。使用官方水龙头 https://faucet.sui.io 获取测试 SUI,并将测试网凭证与主网分开。在 SDK、钱包和 CI 中配置端点占位符(如 GRPC_ENDPOINT)和授权头。由于测试网端点可能会重置,水龙头限制也会变化,因此始终将测试网环境构建为可抛弃的,并避免硬编码对象 ID 或交易摘要。测试网不是永久性的:验证当前水龙头政策,预期重置,并在迁移到 Sui 主网之前验证相同的工作流。有关操作指导,请参阅 /rpc-assistant/sui-rpc-guide 和 /networks/sui-testnet。
关键要点
- 使用以 gRPC 为先的 Sui 测试网访问,结合 LedgerService、StateService、TransactionExecutionService 和 SubscriptionService。
- 将全节点 JSON-RPC 接口视为遗留接口;仅用于迁移对比。
- 从 https://faucet.sui.io 获取测试 SUI,并在 CI 运行前确认当前水龙头限制。
- 将测试网和主网的凭证、端点以及代币预期分开管理。
Sui 测试网 gRPC 优先访问与遗留 JSON-RPC
OnFinality 的 Sui 测试网访问以 gRPC 为先。当前集成路径使用 Sui protobuf 服务 LedgerService、StateService、TransactionExecutionService 和 SubscriptionService。它们涵盖检查点查询、对象和余额读取、交易模拟与执行,以及针对检查点、交易和事件的流式订阅。
遗留的全节点 JSON-RPC 仍存在于某些现有工具中,但应将其视为迁移接口。不要围绕 JSON-RPC 构建新的测试网工作流;相反,在提交测试网代码之前,将遗留方法映射到等效的 gRPC 工作流。
- 使用 LedgerService、StateService、TransactionExecutionService 和 SubscriptionService 进行新的 Sui 测试网集成。
- 将全节点 JSON-RPC 视为遗留且仅用于迁移,而不是主要实现路径。
- 在扩展测试网代码之前,将现有的 JSON-RPC 调用映射到 gRPC 方法。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| gRPC services (LedgerService, StateService, TransactionExecutionService, SubscriptionService) | 用于查询、执行、模拟和流式传输的现代工作流 | 新开发和实时数据需求的主要路径 |
| Legacy Full Node JSON-RPC | 现有客户端和迁移对比 | 与新代码隔离以避免双路径维护 |
测试网端点与凭证配置
OnFinality 为 Sui 测试网提供托管 gRPC 端点。您将收到一个端点 URL 和一个 API 令牌或等效凭证。请将它们存储在环境变量或密钥管理器中。不要在存储库中硬编码凭证。
以下 grpcurl 示例使用占位符。请将 GRPC_ENDPOINT 和 ONFINALITY_API_TOKEN 替换为分配给您的值。list 命令是 grpcurl 反射辅助工具;导入 Sui protobuf 定义后,调用 LedgerService、StateService、TransactionExecutionService 或 SubscriptionService 中的相关方法。
安全使用官方 Sui 水龙头
官方 Sui 测试网水龙头位于 https://faucet.sui.io。在将其集成到自动化测试之前,请始终验证当前水龙头政策、每地址限制和冷却时间。向您控制的钱包地址请求测试 SUI,切勿为不属于您的地址请求代币。
测试 SUI 没有价值,不能兑换为主网资产。如果您有未使用的测试代币,请将其退回到水龙头的退还地址,以保持测试网健康。将测试网和主网的水龙头使用分开。
- 仅使用 https://faucet.sui.io 获取官方测试 SUI。
- 在 CI 运行之前验证当前水龙头限制和冷却时间。
- 将测试 SUI 与主网 SUI 分开;不要将测试地址用于生产。
- 尽可能退还未使用的测试代币。
Move 部署、对象读取与交易工作流
Sui 以对象为中心,因此您的测试网工作流应围绕对象读取、交易模拟和执行展开。在构建交易之前,使用 StateService 查询对象和余额。使用 TransactionExecutionService 的 SimulateTransaction 进行交易预演,然后使用 ExecuteTransaction 进行最终提交。这种两步模式有助于在不推进链状态的情况下发现 Move 类型错误、对象版本冲突和 gas 估算问题。
执行后记录交易摘要,并查询生成的对象变化以验证状态转换。
- 在构建交易之前,使用 StateService 查询拥有的对象和余额。
- 从 TransactionExecutionService 调用 SimulateTransaction 以验证 gas、对象版本和 Move 逻辑。
- 使用 TransactionExecutionService 的 ExecuteTransaction 进行最终提交。
- 记录交易摘要并查询生成的对象变化。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| 读取对象/余额 | StateService | 在构建交易之前验证所有权和对象版本 |
| 模拟交易 | TransactionExecutionService -> SimulateTransaction | 在不改变链状态的情况下进行预演 |
| 执行交易 | TransactionExecutionService -> ExecuteTransaction | 提交真实测试网交易 |
| 查询检查点 | LedgerService | 确认包含和排序 |
检查点与实时订阅
检查点为索引和同步提供了稳定的链边界。通过 LedgerService 查询检查点序列号和检查点数据。对于流式更新,使用 SubscriptionService 的 SubscribeCheckpoints、SubscribeTransactions 或 SubscribeEvents。
设计客户端以处理重连和背压。测试网重置可能会中断流,订阅客户端应能够自动重新建立会话。
- 使用 SubscribeCheckpoints 获取检查点边界。
- 使用 SubscribeTransactions 进行交易级流式传输。
- 使用 SubscribeEvents 进行事件过滤和结构化更新。
- 在订阅客户端中处理重连和重置。
钱包、SDK 与 CI 配置
钱包和 SDK 应指向分配给您的托管 gRPC 端点。在 CI 中,通过环境变量注入端点和凭证,切勿提交机密。使用以仅测试账户为目标的阶段或测试作业来指向 Sui 测试网。将主网配置保存在单独的配置文件中。
以下环境示例使用 CI 的占位符。请将这些值替换为您的安全存储引用。
测试网限制、重置与运行检查
Sui 测试网不是永久性的,可能会重置。端点和数据可能会被清除或更改。不要将测试网对象、交易摘要或水龙头余额视为持久性的。在依赖之前验证当前水龙头政策。监控您的请求使用情况,妥善处理速率限制响应,并将测试网凭证与生产环境隔离。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| 水龙头限制 | https://faucet.sui.io 当前的每地址限制和冷却政策 | 防止因水龙头配额耗尽而导致 CI 停滞 |
| 端点状态 | 提供商仪表板或网络状态页面 | 检测测试网范围内的中断或重置 |
| 速率限制 | 您套餐的请求限制和错误代码 | 避免阻塞自动化测试运行 |
| 重置时间表 | 任何已宣布的测试网重置或升级窗口 | 防止对持久对象 ID 做出无效假设 |
迁移到 Sui 主网的路径
在您的 Sui 测试网工作流通过后,请规划单独的主网部署。使用 OnFinality 提供的主网 gRPC 端点和凭证;切勿重复使用测试网代币、地址或对象摘要。使用主网 gas 成本重新运行相同的模拟和执行检查。
请查看 /networks/sui-testnet 和 /networks/sui 上的 Sui 网络页面,了解当前端点详情和提供商指南。有关提供商评估标准,请参阅 /rpc-assistant/sui-rpc-providers。
Next steps: Sui gRPC 指南.
- 为主网单独配置凭证和端点。
- 针对主网状态重新验证 Move 包和交易流程。
- 使用相同的 gRPC 工作流,但采用主网特定的限制和监控。
- 不要将测试网的假设带入生产环境。
常见问题
Sui 测试网上 gRPC 与 JSON-RPC 有什么区别?
gRPC 是当前推荐的路径,使用 protobuf 服务,如 LedgerService、StateService、TransactionExecutionService 和 SubscriptionService。JSON-RPC 是遗留的全节点接口,可能仍存在于较旧的工具中;对于新开发,将其视为仅迁移使用。
如何获取测试 SUI 代币?
使用官方水龙头 https://faucet.sui.io。验证当前每地址限制和冷却时间,向您控制的地址请求,并退回未使用的代币以帮助其他开发者。
我应该使用哪些 gRPC 服务进行交易和订阅?
使用 TransactionExecutionService 进行 SimulateTransaction 和 ExecuteTransaction。使用 SubscriptionService 进行 SubscribeCheckpoints、SubscribeTransactions 和 SubscribeEvents。LedgerService 提供检查点查询,StateService 处理对象和余额读取。
Sui 测试网会重置吗?这会对我的开发产生什么影响?
会的,测试网不是永久性的,可能会重置。对象 ID、交易摘要和水龙头余额可能会更改或消失。构建可抛弃的测试环境,避免硬编码假设,并在依赖之前验证当前水龙头政策。
我可以对测试网和主网使用同一个 RPC 提供商吗?
可以,OnFinality 同时支持 Sui 测试网和 Sui 主网。为每个网络使用独立的端点和凭证,切勿将测试网代币或地址与主网混用。
在从测试网迁移到主网之前,我应该检查哪些事项?
针对主网状态重新验证 Move 包和交易流程,使用主网 gas 成本,配置独立凭证,并查看 /networks/sui 和 /rpc-assistant/sui-rpc-providers 上的端点详情。